Befehle mit Übergabewerten

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
  • Danke für das Tutorial, schaue öfters vorbei wenn ich etwas von dcmd vergesse.


    Hätte jetzt eine Frage. Dieser Command hier soll einen Supportchat darstellen. Das ganze geht auch, allerdings fehlt oft der größte Teil des Textes. Bedeutet es werden Nach meinem Namen nur etwa 25 Buchstaben vom Text Angezeigt. Wieso?



    dcmd_supchat(playerid,params[])
    {
    if(SupChat[playerid] != -1)
    {
    new sAnnounce[256];
    if(sscanf(params, "s",sAnnounce)) {
    return SendClientMessage(playerid,COLOR_RED,"Verwendung: /supchat [Text]");
    }
    new string[256];
    format(string,256,"[SUPCHAT]%s: %s",SpielerInfo[playerid][pName],sAnnounce);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(SupChat[i] == playerid && SupChat[playerid] == i)
    {
    SendClientMessage(playerid,COLOR_CBLUE,string);
    SendClientMessage(i,COLOR_CBLUE,string);
    }
    }


    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast keinen Supportchat gestartet.");
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Genau das wars. Danke, den Fehler hätte ich nicht gefunden.

  • Hallöchen,


    ich hab heute mal wieder bissl rum geschaut was man verbessern kann und wollte mal zcmd ausprobieren, weil das ja nicht mit OnPlayerCommandText geht hab ich es so gemacht:


    public OnPlayerCommandPerformed(playerid,cmdtext[],success) {
    if(!success)
    {
    CMD:changepass(playerid,params[]) {
    new passwort[32],string[128];
    if(sscanf(params, "s",passwort)) {
    return SendClientMessage(playerid,COLOR_RED,"FEHLER: /changepass [Neues Passwort]");
    }
    format(string,sizeof(string),"Passwort erfolgreich geändert. Das Passwort lautet nun: '%s'",passwort);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    SpielerInfo[playerid][pKey] = passwort;
    SaveAcc(playerid);
    return 1;
    }
    }
    return 1;
    }


    und erhalte dabei leider folgenden error den ich nirgends zu ordnen kann:


    C:\Users\HEiTZER\Desktop\GF-edit\gamemodes\DDG.pwn(16658) : error 029: invalid expression, assumed zero
    C:\Users\HEiTZER\Desktop\GF-edit\gamemodes\DDG.pwn(16658) : error 017: undefined symbol "cmd_changepass"
    C:\Users\HEiTZER\Desktop\GF-edit\gamemodes\DDG.pwn(16658) : error 029: invalid expression, assumed zero
    C:\Users\HEiTZER\Desktop\GF-edit\gamemodes\DDG.pwn(16658) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    Was hab ich Falsch gemacht bzw. woher kommt das cmd_changepass?

  • Durch ZCMD werden die befehle ein eigenständiges Public ausserhalb aller normalen Publics. Also musst du es nicht innerhalb OnPlayerCommanText oder so machen.
    OnPlayerCommandPerformed ist dafür da, um z.b zu Loggen wenn ein Spieler einen Befehl benutzt hat.
    public OnPlayerCommandPerformed(playerid,cmdtext[],success)
    {
    if(success)
    {
    printf("ID %d hat den Befehl %s erfolgreich ausgeführt.",playerid, cmdtext);
    }
    else if(!success)
    {
    printf("ID %d hat einen nicht Existierenden Befehl (%s) ausgeführt.",playerid, cmdtext);
    }
    return true;
    }


    Den befehl selbst kann du einfach irgendwo ins script (aber ausserhalb eines Publics) packen.
    CMD:changepass(playerid,params[])
    {
    new passwort[32],string[128];
    if(sscanf(params, "s",passwort)) return SendClientMessage(playerid,COLOR_RED,"FEHLER: /changepass [Neues Passwort]");
    format(string,sizeof(string),"Passwort erfolgreich geändert. Das Passwort lautet nun: '%s'",passwort);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    SpielerInfo[playerid][pKey] = passwort;
    SaveAcc(playerid);
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • hab ma ne frage..


    Wie kann mann z.b. mit sscanf ein command machen mit der [playerid] [licenses] [Grund]


    wie kann mann dass z.b. machen dass mann licenses festlegen kann auf etwas bestimmtes und der grund auch?


    dass mann z.b. 21 Auto STVO


    und dann soll was pasieren.


    lg M4rciii

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