Was bedeutet es eigentlich, wenn man continue verwendet?
beispielsweise if(SpielerInfo[playerid][pAdmin]) continue;
Was bedeutet es dann? Und muss man beim verwenden was beachten?
Was bedeutet es eigentlich, wenn man continue verwendet?
beispielsweise if(SpielerInfo[playerid][pAdmin]) continue;
Was bedeutet es dann? Und muss man beim verwenden was beachten?
Continue springt in einer Schleife direkt zum nächsten Schleifen Wert.
if (strcmp("/maehen", cmdtext, true, 10) == 0)
{
if(IsPlayerInVehicle(playerid, 572))
{
new rand = random(sizeof(CheckpointInfo));
SetPlayerCheckpoint(playerid, CheckpointInfo[rand][X], CheckpointInfo[rand][Y], CheckpointInfo[rand][Z], 3.0);
}
else
{
SendClientMessage(playerid, rot, "Du bist nicht in einem Rasenmaeher!");
}
return 1;
}
Kann mir jemand sagen was ich falsch gemachte?
Ich bekomme die Meldung "Du bist nicht in einem Rasenmaeher!" obwohl ich in einem bin.
if(IsPlayerInVehicle(playerid, 572))
Zu
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 572)
Wo liegt hier der Fehler? Ist irgendwie ein Klammerfehler..
if(!IsNumeric(inputtext) && if(strlen(inputtext) == 0)
.. und hier gibt er mir auch einen Error aus..
SetTimer("ServerGMX",inputtext*1000,false);
if(!IsNumeric(inputtext) && strlen(inputtext) == 0)
Allerdings wird das nie wahr werden. So reicht es:
if(strlen(inputtext) == 0)
Und:
SetTimer("ServerGMX",strval(inputtext)*1000,false);
So kann er aber auch ein Text eingeben und es würde zu Bugs kommen..
Dann musst du es so schreiben:
if(!IsNumeric(inputtext) || strlen(inputtext) == 0) return SendClientMessage...
Guten Nachmittag.
Da ich seit gestern mit den 3DLabels Krieg habe und das Problem nicht lösen kann, wende ich mich mal an euch.
Weiß jemand, warum die ganzen 3DTexte nicht erstellt werden?
if(step){
for(new i=0; i<cache_get_row_count(); i++){
if(MarkerData[i][Label] != Text3D:INVALID_3DTEXT_ID){
Delete3DTextLabel(Text3D:MarkerData[i][Label]);
MarkerData[i][Label] = Text3D:INVALID_3DTEXT_ID;
}
MarkerData[i][ID] = cache_get_field_content_int(i,"ID",db_H);
MarkerData[i][MX] = cache_get_field_content_float(i,"X",db_H);
MarkerData[i][MY] = cache_get_field_content_float(i,"Y",db_H);
MarkerData[i][MZ] = cache_get_field_content_float(i,"Z",db_H);
cache_get_field_content(i, "fwort", MarkerData[i][Wort],db_H,20);
cache_get_field_content(i, "solution", MarkerData[i][Loesung],db_H,20);
MarkerData[i][Gewinn] = cache_get_field_content_int(i,"cash",db_H);
MarkerData[i][status] = cache_get_field_content_int(i,"state",db_H);
new string[55];format(string,sizeof(string),"{0087FF}[Event]\n{FFFFFF}Gesucht:\n%s",MarkerData[i][Wort]);
MarkerData[i][Label] = Create3DTextLabel(string,0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
MarkerData[i][timestamp] = tsp;
printf("%d",i);
m_count++;
}
Es hängt auf jeden Fall mit dem Löschen zusammen, sonnst gäbe es das Problem nicht. Zudem überschreiben sich die ganzen IDs auch. ._.
E: Änderung im code
E: Keine Hilfe mehr benötigt, gerade einen Lösungsweg gefunden nach Stunden...
Meines Wissen nach musst du nur Text3D: beim erstellen nutzen. Also bei new Text3D:DEINEDEFINIERUNG
Meines Wissen nach musst du nur Text3D: beim erstellen nutzen. Also bei new Text3D:DEINEDEFINIERUNG
Das ist ein Enum, die Variablen existieren schon längst.
Es geht um die Überschreibung der Variablen.
Trotzdem danke ich dir für den Versuch mir zu helfen. ![]()
Mit freundlichem Gruß,
iEnerqie.
Ja aber dies hier ist doch wohl kein Enum:
if(step){
for(new i=0; i<cache_get_row_count(); i++){
if(MarkerData[i][Label] != Text3D:INVALID_3DTEXT_ID){
Delete3DTextLabel(Text3D:MarkerData[i][Label]);
MarkerData[i][Label] = Text3D:INVALID_3DTEXT_ID;
}
MarkerData[i][ID] = cache_get_field_content_int(i,"ID",db_H);
MarkerData[i][MX] = cache_get_field_content_float(i,"X",db_H);
MarkerData[i][MY] = cache_get_field_content_float(i,"Y",db_H);
MarkerData[i][MZ] = cache_get_field_content_float(i,"Z",db_H);
cache_get_field_content(i, "fwort", MarkerData[i][Wort],db_H,20);
cache_get_field_content(i, "solution", MarkerData[i][Loesung],db_H,20);
MarkerData[i][Gewinn] = cache_get_field_content_int(i,"cash",db_H);
MarkerData[i][status] = cache_get_field_content_int(i,"state",db_H);
new string[55];format(string,sizeof(string),"{0087FF}[Event]\n{FFFFFF}Gesucht:\n%s",MarkerData[i][Wort]);
MarkerData[i][Label] = Create3DTextLabel(string,0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
MarkerData[i][timestamp] = tsp;
printf("%d",i);
m_count++;
}
Schreibe es so:
if(step){
for(new i=0; i<cache_get_row_count(); i++){
if(MarkerData[i][Label] != INVALID_3DTEXT_ID){
Delete3DTextLabel(MarkerData[i][Label]);
MarkerData[i][Label] = INVALID_3DTEXT_ID;
}
MarkerData[i][ID] = cache_get_field_content_int(i,"ID",db_H);
MarkerData[i][MX] = cache_get_field_content_float(i,"X",db_H);
MarkerData[i][MY] = cache_get_field_content_float(i,"Y",db_H);
MarkerData[i][MZ] = cache_get_field_content_float(i,"Z",db_H);
cache_get_field_content(i, "fwort", MarkerData[i][Wort],db_H,20);
cache_get_field_content(i, "solution", MarkerData[i][Loesung],db_H,20);
MarkerData[i][Gewinn] = cache_get_field_content_int(i,"cash",db_H);
MarkerData[i][status] = cache_get_field_content_int(i,"state",db_H);
new string[55];format(string,sizeof(string),"{0087FF}[Event]\n{FFFFFF}Gesucht:\n%s",MarkerData[i][Wort]);
MarkerData[i][Label] = Create3DTextLabel(string,0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
MarkerData[i][timestamp] = tsp;
printf("%d",i);
m_count++;
}
Zudem überschreiben sich die ganzen IDs auch.
Weiß jemand, warum die ganzen 3DTexte nicht erstellt werden?
Bitte erst lesen bevor man antwortet.
Deine Antworten waren bis jetzt reiner Push deiner Aktivität.
Durch das vorherige Löschen erstellen sich die 3DLabels nicht.
Weiß jemand vielleicht weiter?
Kaliber: Jeffry: @BlackAce: :)?
Hey, ich bin gerade dabei ein Wahlsystem für Parteien zu machen.
Leider ist mir ein Fehler unterlaufen:
Im Dialog, wenn ich eine Partei wählen möchte, kann ich immer nur die Partei mit der ID 1 wählen. Und das ist egal, welches ich anklicke.
Jeffry:
Befehl:
COMMAND:wahl(playerid,params[])
{
#pragma unused params
if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
if(WahlenOffen == 0)return SendClientMessage(playerid, GRAU, "Es sind keine Wahlen offen.");
new string[612],count;
for(new p=1;p<MAX_PARTEI;p++)
{
if(PartInfo[p][ParteiCreatet] != 0 && PartInfo[p][ParteiAusgeschlossen] == 0)
{
format(string,sizeof(string),"Partei: %s | Gründer: %s\n%s",PartInfo[p][ParteiName],PartInfo[p][ParteiOwner],string);
ShowPlayerDialog(playerid,DIALOG_PARTEIWAEHLEN,DIALOG_STYLE_LIST,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Parteien",string,"Verlassen","");
count++;
}
}
if(count == 0)return SendClientMessage(playerid, GRAU, "Es existieren keine Parteien zum wählen.");
return 1;
}
Dialog:
case DIALOG_PARTEIWAEHLEN:
{
new string[128], query[128];
if(response == 0)
{
return 1;
}
else
{
for(new p=1;p<MAX_PARTEI;p++)
{
if(Spieler[playerid][pParteiGewaehlt] == 1)return SendClientMessage(playerid, GRAU, "Du hast bereits eine Partei gewählt.");
Spieler[playerid][pParteiGewaehlt] = 1;
PartInfo[p][ParteiStimmen]++;
format(string,sizeof(string),"Du hast für die Partei '%s' gewählt.",PartInfo[p][ParteiName]);
SendClientMessage(playerid,WEISS,string);
format(query,sizeof(query),"UPDATE "#SQL_TAG"_partei SET ParteiStimmen = %d WHERE ParteiName= '%s'",PartInfo[p][ParteiStimmen],PartInfo[p][ParteiName]);
mysql_function_query(MySqlConnection,query,false,"","");
return 1;
}
}
return 1;
}
Hey in der Zeile SendClientMessage kommen 2 Warnings...
C:\Users\Patrick\Desktop\IRP-City\gamemodes\T2R.pwn(43836) : warning 202: number of arguments does not match definition
C:\Users\Patrick\Desktop\IRP-City\gamemodes\T2R.pwn(43836) : warning 202: number of arguments does not match definition
if(strcmp(cmd,"/contracts",true)==0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pMember] == 8)
{
SendClientMessage(playerid, 0xCDB221FF, "Contracts");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pContractSumme] > 1)
SendClientMessage(playerid, COLOR_GOLD, "Name: %s Premie: %d$",i,PlayerInfo[i][pContractSumme]);
}
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist kein Hitman !");
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist nicht eingeloggt !");
}
}
SendClientMessage(playerid, COLOR_GOLD, "Name: %s Premie: %d$",i,PlayerInfo[i][pContractSumme]);
zu:
new str[145];
format(str, sizeof(str), "Name: %s Premie: %d$",SpielerName(i),PlayerInfo[i][pContractSumme]);
SendClientMessage(playerid, COLOR_GOLD, str);
@Voxa:
@iEnerqie:
Macht doch bitte einen Thread auf wenn ihr gescheite Hilfe haben wollt. Ihr seht doch selbst wie unübersichtlich das hier ist, wenn 3 Probleme ineinander gepostet werden. Danke.
Nachrichten sollte man formatieren können aber egal
if(strcmp(cmd,"/contracts",true)==0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pMember] == 8)
{
SendClientMessage(playerid, 0xCDB221FF, "Contracts");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new string[128];
if(PlayerInfo[i][pContractSumme] > 1)
format(string,sizeof(string),"Name: %s Premie: %d$",SpielerName(i),PlayerInfo[i][pContractSumme]);
SendClientMessage(playerid, COLOR_GOLD,string);
}
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist kein Hitman !");
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist nicht eingeloggt !");
}
}
Jeffry:
darauf habe ich nicht geachtet ![]()
@xCurry:
Wenn du es so machst wirst du einen Haufen an falschen bzw. leeren Nachrichten bekommen, da nur der format zum if zählt.
So:
if(strcmp(cmd,"/contracts",true)==0)
{
if(IsPlayerConnected(playerid))
{
new str[145];
if(PlayerInfo[playerid][pMember] == 8)
{
SendClientMessage(playerid, 0xCDB221FF, "Contracts");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pContractSumme] > 1)
{
format(str, sizeof(str), "Name: %s Premie: %d$",SpielerName(i),PlayerInfo[i][pContractSumme]);
SendClientMessage(playerid, COLOR_GOLD, str);
}
}
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist kein Hitman !");
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist nicht eingeloggt !");
}
}
Jeffry:
Danke das /contracts system Funktioniert.
Aber jetzt habe ich ein Fehler bei OnPlayerDeath wenn er eig. Das Geld übergeben sollte.
if(PlayerInfo[playerid][pContracted] == 1)
{
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
{
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
GivePlayerMoney(killerid, PlayerInfo[playerid][pContractSumme]);
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pContractSumme]);
SendFamilyMessage(8, COLOR_YELLOW, string);
PlayerInfo[playerid][pContracted] = 0;
PlayerInfo[playerid][pContractSumme] =0;
}
}
Keine Fehler.
Aber er sendet die Nachricht nicht <<Hitman %s hat den Auftrag an %s erfüllt und bekommt: %d>>
und er gibt kein Geld und Contracted wird nicht auf 0 Gesetzt.
if(PlayerInfo[playerid][pContracted] == 1 && killerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
{
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
GivePlayerMoney(killerid, PlayerInfo[playerid][pContractSumme]);
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pContractSumme]);
SendFamilyMessage(8, COLOR_YELLOW, string);
PlayerInfo[playerid][pContracted] = 0;
PlayerInfo[playerid][pContractSumme] =0;
}
}
Schreibe es so mal ganz als erstes unter OnPlayerDeath hin.