[Erledigt] OnPlayeCommandText bei Zcmd

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
  • Hallo zusammen!


    Ich habe eine Frage. Und zwar, wenn man ohne Zcmd arbeitet, kann man ja im Script einfach z.B.
    format(string, sizeof(string), /goto %d", targetid);
    OnPlayerCommandText(playerid, string);
    Damit kann man ja das Command Goto unter OnPlayerCommandText aufrufen. Aber bei Zcmd ist das ja deaktiviert...
    Wie kann ich bei Zcmd Commands aufrufen?
    Ich habe es schon z.B. mit cmd_goto(playerid, params); und ähnlichen probiert aber es hat nichts funktioniert..


    Ich hoffe mir kann jemand helfen.
    Mit freundlichen Grüßen Marius

    Einmal editiert, zuletzt von Marius.B ()

  • sscanf würde ich auch empfehlen zu nutzen


    CMD:goto(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] == 0) return 0; // wenn er kein admin is würde da Server: Unkown Command stehen..weiter unten kannst du die Fehler meldung ändern
    new ID;
    if(sscanf(params,"d",ID)) return SendClientMessage(playerid,FARBE,"Nutze: /goto (id)");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,FARBE,"Spieler ist nicht online");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(ID,x,y,z);
    SetPlayerPos(playerid,x,y+3,z);
    return 1;
    }


    So um das Server: Unkown Command zu ändern brauchste das hier:


    public OnPlayerCommandPerformed(playerid,cmdtext[],success) {
    if(success == 0)
    {
    SendClientMessage(playerid,FARBE,"Befehl nicht gefunden. Nutze /befehle um zu sehen welche Befehle du nutzen kannst");
    return 1;
    }
    return 1;
    }

  • Nein ^^
    Das hab ich beides schon. Ich weiß auch wie man beides nutz also sscanf und Zcmd, aber ich wollt mal fragen obs ne möglichkeit gibt z.B. mit zcmd bei OnDialogResponse OnPlayerCommandText(playerid, "/goto"); zu machen?



    PS: Die ganzen befehle hab ich auch schon^^ will nur wissen ob des so geht.

  • Nein es geht nicht nur um /goto.
    Ich will einfach wissen ob man sowas auch mit zcmd nutzen kann. Weil sonst müsste man alle befehle ja z.B. unter OnPlayerDialogResponse nochmal neu schreiben...

  • Nein^^
    Also nochmal neu :D
    Ich will nur wissen, ob es einen weg gibt, einen Befehl auszuführen denn man erstellt hat. Also damit man ihn nicht wieder neu und komplett schreiben muss.
    Ohne ZCMD kann man ja einfach OnPlayerCommandText(playerid, "/Command"); machen. Aber durch zcmd wurde ja OnPlayerCommandText deakiviert. Und was ich jetzt eben wissen will ob man iwi mit zcmd so was ähnliches machen kann (geht nicht nur um den befehl /goto^^)


    Beispiel: Ich klick mit Tab auf ein Spieler. (Wie man das macht mit der Tab liste weis ich alles^^) und jetzt kommt ein Dialog. Dort kann ich z.B. GoTO und Gethere auswählen. Und wenn ich jetzt auf GoTo drücke, das ich den BEfehl ausführe den ich davor mit CMD:goto(playerid, params[]) erstllt habe. Gibts da en Weg == ?

  • Ok. Kann geclosed werden.
    Ich habs selber durch probieren rausgefunden.


    Für alle dies Interessiert:
    Man kann einfach
    return cmd_Command(playerid, "Parameter");
    Statt Command muss man halt den Namen des Commands nehmen. (Also CMD:NAMEN). Und bei "Parameter", kann man noch etwas hinzufügen. Beispiel:
    Bei OnDialogResponse hat man einen Dialog erstellt der sich öffnet wenn man auf der Tab liste jemand anklickt. Wenn man jetzt nichtmehr den ganzen Befehl schreiben will, kann man es so machen:
    if(dialogid == DIALOG_GOTO)
    {
    if(response == 0) { return 1; }
    else if(response == 1)
    {
    return cmd_goto(playerid, targetid); // In dem Fall heist mein command CMD:goto(playerid, params[]) und mit targetid habe ich die eingegebene PlayerID ausgelesen.
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen