OnPlayerCommandText

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
  • Wenn ich bei
    public OnPlayerCommandText(playerid, cmdtext[])
    if (strcmp("/ports", cmdtext, true, 10) == 0)// das habe,
    dann geht das alles ganz normal kein thema, nur dann hatte ich noch nen befehl mit
    if (strcmp("/hilfe", cmdtext, true, 10) == 0)
    {
    SendClientMessage.....
    .....
    doch dann kammen in der linie immer errors
    woran liegt das? fehler hab ihc jettz erstmal beseitigt, indem ich das rausgestrichen habe.
    Muss ich immer dann noch das mit public neu machen oder reicht das if...
    ???
    Eig reicht ja if nur iwie kamen dann errors


  • kannse ma pls den error posten ?

  • Ohne den gesamten Code bzw. den Error ist dies wirklich schwer zu sagen.
    Hier mal ein kleines Beispiel:


    //unter OnPlayerCommandText(..)
    // falls keine da ist,hier diese Klammer setzen : {
    if(strcmp(cmdtext,"/hilfe",true) == 0)
    {
    SendClientMessage(playerid,0xC2A2DAAA,".............");
    return 1;
    }


    Du brauchst das "OnPlayerCommandText" natürlich nur einmal da zu haben, doch die einzelnen Befehle müssen (durch Klammern getrennt) dort stehen.
    Falls du einen Command mit Parametern möchtest, benötigst du strtok oder dcmd ( sscanf ).

    Suche Scriptlehrer :rolleyes:

  • Und... if (strcmp("/ports", cmdtext, true, 10*) == 0)
    * gibt an, wie lang der cmdtext ist, bei /ports wäre er 6 Zeichen lang, wenn man dort eine falsche Zahl stehen hat, dann kommt nur "Server: Unknown command"
    Man kann die Zahl auch weglassen, dann kann man aber nicht mir Parametern arbeiten (was man bei diesem Befehl eh nicht brauch)

  • er du benutzt die schnellere und einfachere Variante: http://wiki.sa-mp.com/wiki/Fast_Commands


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //dcmd(BEFEHL,LÄNGE,CMDTEXT);
    dcmd(hilfe,5,cmdtext);
    [...]
    }


    // dcmd_BEFEHL(playerid,params[])
    dcmd_hilfe(playerid,params[])
    {
    #pragma unused params // da du params, also den Text, den der Spieler hinter den Befehl geschrieben hat, nicht benutzt
    [...]
    return 1;
    }

  • dcmd bzw. sscanf ist kürzer bei Commands mit Parametern,doch bei Commands ohne Variablen erweist es umständlicher ;) .Nebenbei: Versteht man strtok, ist dies genau so einfach :|

    Suche Scriptlehrer :rolleyes:

  • {
    if (strcmp("/copls", cmdtext, true) == 0)
    {
    gTeam[playerid] = TEAM_COPS;
    GameTextForPlayer(playerid,~b~Du bist nun LSPD Cop,10000,1);
    SendClientMessage(playerid,BLAU, "Willkommen im Dienst);
    SendClientMessage(playerid,BLAU, "Für Hilfe gebe /jobpd ein.);
    SetPlayerPos(playerid,256.7657,79.7133,1003.6406);

    return 1;
    }
    return 0;
    }


    die fehler
    C:\PROGRA~1\ROCKST~1\SAMP02~1.WIN\GAMEMO~1\DM.pwn(368) : error 055: start of function body without function header
    C:\PROGRA~1\ROCKST~1\SAMP02~1.WIN\GAMEMO~1\DM.pwn(369) : error 010: invalid function or declaration
    C:\PROGRA~1\ROCKST~1\SAMP02~1.WIN\GAMEMO~1\DM.pwn(377) : error 010: invalid function or declaration
    C:\PROGRA~1\ROCKST~1\SAMP02~1.WIN\GAMEMO~1\DM.pwn(379) : error 010: invalid function or declaration



    return 0;
    }

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    Einmal editiert, zuletzt von Weed ()

  • {
    if (strcmp("/copls", cmdtext, true) == 0)
    {
    gTeam[playerid] = TEAM_COPS;
    GameTextForPlayer(playerid,~b~"Du bist nun LSPD Cop",10000,1);
    SendClientMessage(playerid,BLAU, "Willkommen im Dienst");
    SendClientMessage(playerid,BLAU, "Für Hilfe gebe /jobpd ein.");
    SetPlayerPos(playerid,256.7657,79.7133,1003.6406);

    return 1;
    }



    hast was vergessen :D

  • dcmd bzw. sscanf ist kürzer bei Commands mit Parametern,doch bei Commands ohne Variablen erweist es umständlicher ;) .Nebenbei: Versteht man strtok, ist dies genau so einfach :|


    Es ging nicht um umständlicher sonderm um effektiver. dcmd ist umein Vielfaches effektiver als strcmp zu benutzen. Außerdem finde ich es sowohl mit oder ohne Variablen einfacher, da man nicht immer mit diesen strcmp rumhantieren muss. Für sscanf gilt das Gleiche: effektiver und einfacher zu nutzen und um später neue Paramter anzuhängen