Hallo könnte mir jemand sagen wie ich das in ocmd umwandel ?
Habe es angefangen aber weis nicht wie ich abfrage ob er mats oder so eingibt
ocmd:put(playerid,params[])
{
new x_nr[256];
if(IsPlayerConnected(playerid))
{
if(PlayerToPoint(10.0,playerid,2133.82666016,-1787.04248047,12.52786732) || PlayerToPoint(10.0,playerid,2805.2058,-1418.9055,16.2500))
{
x_nr = strtok(cmdtext, idx);
if(sscanf(params,"s",x_nr))
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
return 1;
}
if(strcmp(x_nr,"Mats",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
format(string, sizeof(string), " Du hast %d Mats bei dir.", PlayerInfo[playerid][pMats]);
SendClientMessage(playerid, COLOR_GRAD3, string);
return 1;
}
new matss;
matss = strval(tmp);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
format(string, sizeof(string), " Du hast %d Materialien bei dir.", PlayerInfo[playerid][pMats]);
SendClientMessage(playerid, COLOR_GRAD3, string);
return 1;
}
if(matss > PlayerInfo[playerid][pMats])
{
SendClientMessage(playerid, COLOR_GRAD2, " So viele Materialien hast du nicht!");
return 1;
}
PlayerInfo[playerid][pMats] -= matss;
PlayerInfo[playerid][pBoxMats] += matss;
format(string, sizeof(string), " %d Materialien in die Savebox gelegt!", matss);
SendClientMessage(playerid, COLOR_GRAD4, string);
return 1;
}
else if(strcmp(x_nr,"Drogen",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
SendClientMessage(playerid, COLOR_GRAD3, string);
return 1;
}
new drugss;
drugss = strval(tmp);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
SendClientMessage(playerid, COLOR_GRAD3, string);
return 1;
}
if(drugss > PlayerInfo[playerid][pDrugs])
{
SendClientMessage(playerid, COLOR_GRAD2, " So viele Drogen hast du nicht!");
return 1;
}
PlayerInfo[playerid][pDrugs] -= drugss;
PlayerInfo[playerid][pBoxDrugs] += drugss;
format(string, sizeof(string), " %d Drogen in die Savebox gelegt!", drugss);
SendClientMessage(playerid, COLOR_GRAD4, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, " Du bist an keiner Savebox!");
return 1;
}
}
return 1;
}
-
-
ocmd:put(playerid,params[])
Daraus schließe ich mal, dass der Befehl bereits in der OCMD-Form geschrieben ist.
Was genau ist also das Problem?if(strcmp(x_nr,"Mats",true) == 0)
Ob der Spieler beispielsweise "Mats" als Parameter eingibt, wird hier auch abgefragt.
Grüße,
tonyalva -
ja aber wie geht das `?
-
Deine Frage ist ungenau, wie geht was?
-
wie kann ich abfragen ob er befehl + mats eingibt also z.b /put mats 5
-
Dazu könntest du, sofern diese Variante nicht funktioniert, einen weiteren Parameter, nämlich einen Integer in der Zeile, in der du "sscanf" benutzt ergänzen, und die daraus resultierenden Abfragen dann natürlich verändern.
Grüße,
tonyalva -
genauer bitte ...
Der Beitrag ist zu kurz. Der Beitrag muss mindestens 10 Zeichen lang sein und 3 Wörter enthalten. -
Du fügst einen weiteren Platzhalter, einen Integer, in die Zeile, in der du "sscanf" benutzt ein, anstatt:
tmp = strtok(cmdtext, idx);
matss = strval(tmp);zu benutzen.
Grüße,
tonyalva -
Ich bin neu in ocmd hab es heute angefangen könntest du mir das machen bitte ?
-
lies mal das dcmd tut im tut bereich von Goldkiller - ocmd tickt genauso, nur eben ohne das dcmd(sdf,3,cmdtext); unter onplayercomandtext
-
Okay danke werde das machen
-
Dafür gibt es mehrere Tutorials im passenden Bereich.
Die eine Zeile kann ich allerdings vorgeben, ja.if(sscanf(params,"s[12]d",parameter1,parameter2)) return // Code, der ausgeführt werden soll, wenn die Parameter nicht angegeben worden sind.
Den Rest musst du allerdings selbst hinbekommen.
Grüße,
tonyalva -
habs jetzt doch leider zeigt er mir das nicht an wenn ich nur /put eingebe
if(sscanf(params,"s",x_nr))
{
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
return 1;
} -
Das ist so ja auch Falsch, mach das lieber mal so:
if(sscanf(params,"s",x_nr))return SendClientMessage(playerid,WEISS,"blablabla");
Hinter dem sscanf muss ein return sein, da er das ja senden soll, wenn nichts eingegeben wird und der Befehl dann nicht ausgeführt werden soll, sondern eben die Nachricht gesendet.
-
@ Gabsch: Totaler Blödsinn!
Lies dir lieber erstmal durch, was return macht.
@AC/DC: Lies dir den vorletzten Post nicht durch, bzw. behalte nichts davon im Gedächnis, weil nicht eine Zeile davon stimmt.
Zu deinem Problem:
Versuch es mal so. Ich habe es nicht testen können, da ich sscanf nicht habe.
ocmd:put(playerid,params[])
{
if(IsPlayerConnected(playerid)) {
if(PlayerToPoint(10.0,playerid,2133.82666016,-1787.04248047,12.52786732) || PlayerToPoint(10.0,playerid,2805.2058,-1418.9055,16.2500)) {
new option[32],menge;
if(sscanf(params,"s",option)&&sscanf(params,"si",option,menge)) {
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
return 1;
}
if(!sscanf(params,"si",option,menge)) {
if(!strcmp(option,"Mats",true)) {
if(menge < 1) {
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
format(string, sizeof(string), " Du hast %d Mats bei dir.", PlayerInfo[playerid][pMats]);
return SendClientMessage(playerid, COLOR_GRAD3, string);
}
if(menge > PlayerInfo[playerid][pMats]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Materialien hast du nicht!");
PlayerInfo[playerid][pMats] -= menge;
PlayerInfo[playerid][pBoxMats] += menge;
format(string, sizeof(string), " %d Materialien in die Savebox gelegt!", menge);
return SendClientMessage(playerid, COLOR_GRAD4, string);
}
else if(!strcmp(option,"Drogen",true)) {
if(menge < 1) {
SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
return SendClientMessage(playerid, COLOR_GRAD3, string);
}
if(menge > PlayerInfo[playerid][pDrugs]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Drogen hast du nicht!");
PlayerInfo[playerid][pDrugs] -= menge;
PlayerInfo[playerid][pBoxDrugs] += menge;
format(string, sizeof(string), " %d Drogen in die Savebox gelegt!", menge);
return SendClientMessage(playerid, COLOR_GRAD4, string);
}
}
}
else return SendClientMessage(playerid, COLOR_RED, " Du bist an keiner Savebox!");
}
return 1;
} -
breadfish.de
Hat das Thema geschlossen.