Für einen Befehl möchte ich gerne mit sscanf als Parameter ein Integer-Wert oder ein String verwenden, das ist der Anfang, den ich schon versucht habe
if (sscanf(params, "d", int))
{
if (sscanf(params, "s", string))
{Zwar wird der Cmd ausgeführt, jedoch wird im Chat noch "Unknown command" angezeigt, was etwas stört. Angeblich wird der Cmd dann auch zweimal ausgeführt
sscanf: Bei cmd String und Integer verwenden
- 501.legion
- 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
-
-
Hey,
Was benutzt du?
Also welche Befehl Schreib art
Also sprich OCMD/DCMD/ZCMD -
Hm, ist doch relativ egal, oder macht das einen Unterschied bei dem Problem?
-
ocmd:test(playerid,params[])
{
new i,s[64];
if(sscanf(params,"i",i) || sscanf(params,"s",s))
{
//
}
return 1;
}Stichwort: Vergleichsoperatoren, in diesem Fall NOR (AND OR = UND ODER).
-
ocmd:test(playerid,params[])
{
new i,s[64];
if(sscanf(params,"i",i) || sscanf(params,"s",s))
{
//
}
return 1;
}Stichwort: Vergleichsoperatoren, in diesem Fall NOR (AND OR = UND ODER).
nur OR, ohne N in diesem Fall
-
nur OR, ohne N in diesem Fall
Wenn man schon korrigiert, dann richtig. Trotzdem hast du recht. Ein NOR hat vorne an noch ein Ausrufezeichen.
-
Naja, statt OR muss ich schon AND nehmen, aber da bin ich nicht weiter als vorher bis auf dass ich eine Zeile weniger habe
-
ocmd:test(playerid,params[])
{
new i,s[64];
if(sscanf(params,"i",i) && sscanf(params,"s",s)) return SendClientMessage(...
return 1;
} -
Wenn man schon korrigiert, dann richtig. Trotzdem hast du recht. Ein NOR hat vorne an noch ein Ausrufezeichen.
Was hab ich denn falsch korrigiert..?
-
ocmd:test(playerid,params[])
{
new i,s[64];
if(sscanf(params,"i",i) && sscanf(params,"s",s)) return SendClientMessage(...
return 1;
}
Wie gesagt, das hilft mir nicht recht bei meinem Problem sondern verringert höchstens die Zeilen-Anzahl ^^:ZitatNaja, statt OR muss ich schon AND nehmen, aber da bin ich nicht weiter als vorher bis auf dass ich eine Zeile weniger habe
-
Was hast du denn überhaupt vor?
-
mach doch einfach so:
new string[32];
if(!sscanf(params, "s", string))
{
new i = strval(string); //umwandlung in integer
if(i > 0) //whatevs..
{}
}was ist dein Befehl, welchen du ausführen möchtest?
Wenn du den Spieler zurückgeben willst, mach statt "d" oder "s" einfach "u"
nicht vergessen: wenn du das Plugin hast, solltest du den String mit einer länge angeben, also sscanf(params, "s[32]", string))
-
Zitat
Was hast du denn überhaupt vor?
ZitatZwar wird der Cmd ausgeführt, jedoch wird im Chat noch "Unknown command" angezeigt, was etwas stört. Angeblich wird der Cmd dann auch zweimal ausgeführt
Das ist mein Problem, Ziel ist es beispielsweise beim Spawnen von Waffen auch den Namen und die ID eingeben zu können, geht ja auch ohne Probleme, nur dass die Funktion bei beidem eben die Fehlermeldung ausgibt stört ^^. Der restliche Cmd besteht übrigens nur aus einer Schleife, die die Namen durchgeht und die richtige Modell-ID auswählt und die Erstellung der Waffe selbst. Am Ende natürlich noch ein return SendClientMessage...
Zitatmach doch einfach so:
Bei meinem Vorhaben etwas ungünstig Ich entschuldige mich hier nochmal, dass das Vorhaben am Anfang nicht so klar war
-
Machs mit einem Dialog (INPUT), dann kannst du das Beispiel GetPlayerIDnehmen, so hab ich es:
new gunid = -1;
if(strlen(inputtext) > 2) { gunid= GetGunID(inputtext); } //GetPlayerID mit Abfragen verändern --> GetGunID(inputtext); wenn die Eingabe länger als 2 ist, dann soll er die abfragen (da die gunids nicht höher sind als 100)
else { gunid = strval(inputtext); } -
Gute Idee das über die String-Größe zu lösen, aber so ein Dialog wäre etwas zu unkomfortabel
-
breadfish.de
Hat das Thema geschlossen.