Moin,
ich will ein Wanted Befehl machen, jedoch überträgt er den Grund nicht in den String, warum nicht?
ocmd:w(playerid,params[])
{
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
new pID,fID,grund;
if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
SetPVarInt(pID,"Wanteds",fID);
new string[128];
format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
SendClientMessage(pID,BLAU,string);
return 1;
}
Es steht dort InGame nur:
"Du hast ANZAHLDERWANTEDS bekommen,Grund: "
Also das mit den Anzahl der Wanteds klappt, nur der Grund nicht.
Problem mit OCMD
- TheDome
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
bei den sscanf fehlt auch ein s
-
Du musst diese zeile if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); mit dieser austauschen if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
EDIT: Beavis war wohl schneller
-
ocmd:w(playerid,params[])
{
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
new pID,fID,grund; // Grund = String also grund[Größe]
if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); // hier fehlt als parameter der Grund, also (params,"uis[Größe]",pID,fID,grund))
SetPVarInt(pID,"Wanteds",fID);
new string[128];
format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
SendClientMessage(pID,BLAU,string);
return 1;
} -
Jetzt gibt er mir 0 Wanteds egal was ich eingebe?
Und der Server schmiert jetzt ständig ab? -
ocmd:w(playerid,params[])
{
//Du musst diese Zeile noch einbinden.
SetPlayerWantedLevel(playerid, fID); //Hier werden die Wanteds IG angezeigt :)
}MfG
E://Quelltext verändert
-
Jetzt gibt er mir 0 Wanteds egal was ich eingebe?
Und der Server schmiert jetzt ständig ab?Zeig mal deinen jetzigen Code
Ich denke mir mal du hast vergessen new Grund; zu überarbeiten. -
SetPlayerWantedLevel(playerid, fID)
Danke, aber das löst mein Problem ja nicht
Ich hab jetzt folgendes drinne:
ocmd:w(playerid,params[])
{
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
new pID,fID,grund; // Grund = String also grund[Größe]
if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); // hier fehlt als parameter der Grund, also (params,"uis[Größe]",pID,fID,grund))
SetPVarInt(pID,"Wanteds",fID);
new string[128];
format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
SendClientMessage(pID,BLAU,string);
SetPlayerWantedLevel(playerid, fID);
return 1;
}
Und es klappt einfach nicht bzw. der Server stürzt dann ab. -
Du musst auch meine Kommentare auch umsetzen damits klappt ..
new pID,fID,grund[32]; // Grund = String also grund[Größe]
if(sscanf(params,"uis[32]",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); -
ocmd:w(playerid,params[])
{
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
new pID,fID,grund[128];
if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
new aktuwlvl = GetPlayerWantedLevel(pID);
SetPlayerWantedLevel(pID,aktuwlvl+fID);
new string[128];
format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
SendClientMessage(pID,BLAU,string);
SetPlayerWantedLevel(playerid, fID);
return 1;
}So sollte nun auch alles funktionieren....
P.S Du solltest aber eine max. Grenze einbauen das man nicht mehr als 6 Wanteds bekommt Du kannst das ganze z.B auch auf 60 Wanteds hochstufen allerdings müsstest du dann auch die Wantedsanzeigen anpassen. -
ocmd:w(playerid,params[])
{
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
new pID,fID,grund[128];
if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
new aktuwlvl = GetPlayerWantedLevel(pID);
SetPlayerWantedLevel(pID,aktuwlvl+fID);
new string[128];
format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
SendClientMessage(pID,BLAU,string);
SetPlayerWantedLevel(playerid, fID);
return 1;
}So sollte nun auch alles funktionieren....
P.S Du solltest aber eine max. Grenze einbauen das man nicht mehr als 6 Wanteds bekommt Du kannst das ganze z.B auch auf 60 Wanteds hochstufen allerdings müsstest du dann auch die Wantedsanzeigen anpassen.
Das funktioniert schonmal dankeschön, aber eine Frage hätte ich da noch, es dürfen 2 Fraktionen Wanteds verteilen, wie mache ich das?
Wie es mit STRCMP geht weiß ich, bei OCMD ist mir alles neu
Es dürfen Fraktion 1 und Fraktion 6 Wanteds verteilen. -
TheDome dies ist doch relativ einfach...
if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
einfach ersetzen mit:
if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");müsste so funktionieren.
MfG
-
Geht leider nicht. Es wird nur gesagt "Du bist kein Polizist", egal in welcher Frak man ist
-
if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
Jetzt rate mal warum er das sagt ... -> SendClientMessage(playerid,ROT,"Du bist kein Polizist"); ändere einfach die Message
-
if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
Jetzt rate mal warum er das sagt ... -> SendClientMessage(playerid,ROT,"Du bist kein Polizist"); ändere einfach die Message
?
Es dürfen die Fraktion 1 & 6 Wanteds geben, es geht aber nicht.
Wenn man in Fraktion 1 oder 6 ist, kommt die Meldung Du bist kein Polizist, obwohl man einer ist -
Achso, habe es falsch verstanden, sorry.
Lass dir mal deine Fraktions ID ausgeben per Printf oder SendClientMessage, vielleicht bist du ja weder in der Fraktion 1 noch in der Fraktion 6.
Zeig mal deine isPlayerInFrakt Funktion. -
Daran wird es nicht liegen. Wenn es so ist:
if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
Klappt es nicht, aber es klappt wenn ich nur eine Fraktion angebe, also:
if(!isPlayerInFrakt(playerid,1)) return SendClientMessage(playerid,ROT,"Du bist kein Polizist"); -
macht aus dem ein && ein logik fehler bei der abfrage
-
Danke, klappt jetzt
-
breadfish.de
Hat das Thema geschlossen.