[Fehler] im /me und /Schreien Befehl

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 liebe Community ich mal wieder ^^"


    Habe mir nach diesem Tutorial Chat Radius erstellen.
    meine /me und /s funktion gebastelt leider klapt es nicht so wie es soll
    wenn ich z.b. "/me geht ein Auto kaufen" eingebe dann kommt "Dieser Befehl existiert nicht!"
    wenn ich aber nur /me eingebe dann kommt
    "**Wupperaler93 /me
    SERVER: unknown command"


    was habe ich also falsch gemacht? hier meine Codes


    MfG: Wuppi


    if(strcmp("/s",cmdtext,true,10) == 0)
    {
    new sendername[32],schreistring[128]; //Sendername ist der name, der den Satz schreibt, um ihn herauszufinden benutzen wir GetPlayerName
    GetPlayerName(playerid,sendername,sizeof(sendername)); //Findet den Namen heraus ;)
    format(schreistring, sizeof(schreistring),"%s schreit: %s",sendername,cmdtext); //Wir benötigen den string, da wir mit Variablen Arbeiten, und wenn wir es normal schreiben würden, kämen Warnings raus und es würde nicht funktionieren. http://wiki.sa-mp.com/wiki/Format_DE Erfahrt ihr mehr.
    SendMeSchrei(schreistring,playerid); //Die Funktion wird unten erklärt ;)
    return 0;
    }
    if(strcmp("/me",cmdtext,true,10) == 0)
    {
    new sendername[32],mestring[128]; //Sendername ist der name, der den Satz schreibt, um ihn herauszufinden benutzen wir GetPlayerName
    GetPlayerName(playerid,sendername,sizeof(sendername)); //Findet den Namen heraus ;)
    format(mestring, sizeof(mestring),"**%s %s",sendername,cmdtext); //Wir benötigen den string, da wir mit Variablen Arbeiten, und wenn wir es normal schreiben würden, kämen Warnings raus und es würde nicht funktionieren. http://wiki.sa-mp.com/wiki/Format_DE Erfahrt ihr mehr.
    SendMeMe(mestring,playerid); //Die Funktion wird unten erklärt ;)
    return 0;
    }
    stock SendMeSchrei(schreistring[],playerid) //DIe Funktion wird aufgerufen, wenn wir etwas ohne Befehl schreiben.
    {
    for(new i = 0;i < MAX_PLAYERS; i++) //Er durchläuft alle Spieler
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 35) //Die Funktion wird unten erklärt ;) Die 25 heißt, wie viel Meter soll man das Lesen können.
    {
    SendClientMessage(i,Weiss,schreistring); //Klar eure Farbe ^^
    }
    }
    return 1;
    }
    stock SendMeMe(mestring[],playerid) //DIe Funktion wird aufgerufen, wenn wir etwas ohne Befehl schreiben.
    {
    for(new i = 0;i < MAX_PLAYERS; i++) //Er durchläuft alle Spieler
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 25) //Die Funktion wird unten erklärt ;) Die 25 heißt, wie viel Meter soll man das Lesen können.
    {
    SendClientMessage(i,Hellblau,mestring); //Klar eure Farbe ^^
    }
    }
    return 1;
    }

  • Für Befehle kannst du das nicht ganz so übernehmen. Warum? Du fragst ab, ob der Befehl "/me" ist (strcmp). Wenn du jetzt aber "/me Hallo" eingibst, ist das ja nicht mehr das Selbe wie "/me". Daher musst du dir Größe des zu prüfenden Strings angeben, und dann noch auf das Leerzeichen dazwischen prüfen.


    if(strcmp("/s",cmdtext,true,2) == 0)
    {
    if(!strlen(cmdtext[2])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /s [Text]");
    if(cmdtext[2] == ' ')
    {
    if(!strlen(cmdtext[3])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /s [Text]");
    new sendername[MAX_PLAYER_NAME],schreistring[145];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(schreistring, sizeof(schreistring),"%s schreit: %s",sendername,cmdtext[3]);
    SendMeSchrei(schreistring,playerid);
    return 1;
    }
    }


    if(strcmp("/me",cmdtext,true,3) == 0)
    {
    if(!strlen(cmdtext[3])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /me [Text]");
    if(cmdtext[3] == ' ')
    {
    if(!strlen(cmdtext[4])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /me [Text]");
    new sendername[MAX_PLAYER_NAME],mestring[145];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(mestring, sizeof(mestring),"**%s %s",sendername,cmdtext[4]);
    SendMeMe(mestring,playerid);
    return 1;
    }
    }


    Man könnte es natürlich auch mit einem Command Prozessor (dcmd, ocmd, ...) machen, das würde dann etwas schöner aussehen.