Ich komme damit voll net klar
Wie mach ich das ich wen ich /route [Zahl 1-5] eingebe das bei Zahl1 dann ein text erscheint z.B Du fährt route eins,und das genause bei 2,3,4,5
Ich kapiere diesen Code von oben nicht.
Ich komme damit voll net klar
Wie mach ich das ich wen ich /route [Zahl 1-5] eingebe das bei Zahl1 dann ein text erscheint z.B Du fährt route eins,und das genause bei 2,3,4,5
Ich kapiere diesen Code von oben nicht.
if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED," Fehler: /route [Zahl 1-5] ");
route = strval(params);
if(route == 1)
{
// make blabla
}
else if(route == 2)
{
// make something
}
danke aber errors:
undefined symbol "params"
undefined symbol "route"
undefined symbol "params"
undefined symbol "route"
undefined symbol "route"
Achso habs ja schon versucht aber nicht hinbekommen.
Mache dann nen eigenen Thread auf
Das geht,gibt ein Paramter 'p',der kann den darauffolgenden Char zum Trennsymbol machen.
if (sscanf(params,"p/ddd", Tag, Monat, Jahr))//Macht '/' zum Trennsymbol
cool danke. Kann man auch so machen, das man ohne / am anfang machen muss? normal sind die cmds ja /kill.
@Maercell,
es geht hier um sscanf :0
Ja, aber was bringt es sscanf zu nutzen, wenn man nur EIN Integer braucht. Außerdem gehts auch um DCMD
Ich zitier mich mal selber.
ZitatNatürlich funktioniert der Command auch so wunderbar,aber nur weil es funktioniert heisst nicht,dass es
so auch die beste Lösung ist.Sehr anläufig für viele Bugs.Was ist wenn wir einen String bestehend aus "gwefd23f%D" in einen Integer konvertieren wollen?Gut,dafür gibt es IsNumeric,aber wir werden später sehen,es geht besser.
Dazu kommt,dass man so auch euren Server crashen kann (Ja,das ist tatsächlich möglich mit dem Beispielcommand).
Bei dem Beispiel von dir wäre es möglich den Server zu crashen.
kann man auch einen dcmd mit 2 befehlen ansprechen?
Beispiel: "/ad" und "/advertise"
Auch möglich.Man beachte die Schreibweise ;).
dcmd_armour(playerid, params[]) {
return dcmd_armor(playerid,params);
}
aber man kann es nicht direkt definieren
man muss beide definieren ne?
dcmd(ad,2,cmdtext);
dcmd(advertise,9,cmdtext);
Ja man muss beide Funktionen deklarieren.
dcmd_armor(playerid, params[]);
dcmd_armour(playerid, params[]);
dcmd_armor(playerid, params[])
{
// Armor CMD
}
dcmd_armour(playerid, params[])
return dcmd_armor(playerid, params);
@OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(ad, 2, cmdtext);
dcmd(advertise, 9, cmdtext);
}
Ah Danke DMA
hatte das selbe prob..jez gehts^^
bin in dcmd noch recht neu
ich hab noch ein Problem bezüglich dcmd und dem PAWNO-Compiler
jeder kenn sicher den ooc chat oder? "/ooc" oder auch "/o"
hab ich so definiert:
dcmd(ooc,3,cmdtext);dcmd(o,1,cmdtext);
soweit so gut
dann halt die zugehörige function:
dcmd_o(playerid,params[]){return dcmd_ooc(playerid,params);}
dcmd_ooc(playerid,params[])
{
new sendername[MAX_PLAYER_NAME],string[256];
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " Du bist nicht eingeloggt !");
return 1;
}
if(PlayerInfo[playerid][pLevel] < 1)
{
SendClientMessage(playerid, COLOR_GRAD2, " Du bist nicht befugt !");
return 1;
}
if(PlayerInfo[playerid][pMuted] == 1)
{
SendClientMessage(playerid, TEAM_CYAN_COLOR, " Du kannst nicht reden, da du gemutet wurdest !");
return 1;
}
if ((noooc) && PlayerInfo[playerid][pAdmin] < 1)
{
SendClientMessage(playerid, COLOR_GRAD2, " Der OOC Channel wurde ausgeschaltet !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new result[64];
if(sscanf(params,"s",result))
{
return 1;
}
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/o)oc [ooc chat]");
return 1;
}
format(string, sizeof(string), "(( %s: %s ))", sendername, result);
OOCOff(COLOR_ADMINMSG,string);
printf("%s", string);
}
return 1;
}
doch der Compiler reagiert nicht wenn ich Compiliere.
er stürzt aber auch nicht ab.
ich muss ihn dann manuell mit dem Task Manager beenden, doch warum ist das so?
PS: Wenn ich
dcmd(o,1,cmdtext);
und
dcmd_o(playerid,params[]){return dcmd_ooc(playerid,params);}
rausnehme geht es
//edit: habe den command für /o kopiert und nun gehts
Ich habe dcmd_zahlen(playerid, params[])
{ return dcmd_pay(playerid,params); }
Es wird ohne Probleme compiliert.
*Jahrespäter*
Danke, hast mir extrem geholfen (hatte SuFu benutzt )
Wieder etwas gelernt !
Und diese "neue" technik werde ich jetzt 110%ig in jedem Script verwenden
aber teste dochmal mit gleichen ersten zeichen
/o und /ooc
dcmd_o()
dcmd_ooc()
oder teste mal mit einem befehl, 3 bezeichnungen jeweils 3(4) zeichen lang
dcmd_sms()
dcmd_txt()
dcmd_text()
kompiler kompiliert das bei mir nicht
Ich hab mittlerweile mein ganzes Selfmade-Script umgeschrieben, nur ich hab Probleme mit diesem Datentyp u.
new giveplayerid;
if(sscanf(params,"u",giveplayerid)) return SendClientBlaBla(...);
SetPlayerHealth(giveplayerid,100.0); // Beispiel
Das sollte doch so gehen oder? Ich hatte da immer Probleme. Zb hab ich mit /sethp mein Health auf 100 setzen wollen und zack, war ich tot. Aber ich hab alles auf d geändert, also eine Ganzzahl und es geht.
da du eine zahl ID möchtest muss es anstatt u = d heißen.
new giveplayerid;
if(sscanf(params,"d",giveplayerid)) return SendClientBlaBla(...);
SetPlayerHealth(giveplayerid,100.0); // Beispiel
so müsste es eig. gehen