alle commands gehen nur an ID 0,..warum?

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 Fische.


    Ich habe ma eine frage, unzwar gehts um mein Warn system, wenn ich z.B. /warn und ID 8 eingebe
    bekommt der spieler der die ID 0 hat den Warn,...ich weis nicht mehr weiter..
    Also egal auf welche ID ich den Warn vergeben will, immer bekommt der Spieler den Warn der die id 0 hat



    CODE:



    ocmd:warn(playerid,params[])
    {
    new pID, reason[30], string[150], aName[MAX_PLAYER_NAME], oName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aName, sizeof(aName));
    if(SpielerInfo[playerid][pAdmin] < 2)return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen.");
    if(sscanf(params,"us",pID, reason))return SendClientMessage(playerid,COLOR_GREY,"FEHLER: /warn [playerid] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_GREY,"Spieler nicht gefunden.");
    GetPlayerName(pID,oName, sizeof(oName));
    SpielerInfo[pID][pWarns] ++;
    format(string, sizeof string,"AdmCmd: %s wurde von %s verwarnt. Grund: %s",oName, aName, reason);
    SendClientMessageToAll(COLOR_LIGHTRED,string);
    if(SpielerInfo[pID][pWarns] >= 3)
    {
    format(string, sizeof string,"AdmCmd: %s wurde vom Anti-System gebannt. Grund: 3/3 Verwarnungen",oName);
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    SpielerInfo[pID][pBan] = 1;
    SpielerInfo[pID][pKicks] ++;
    SavePlayer(pID);
    Kick(pID);
    return 1;
    }
    SavePlayer(pID);
    return 1;
    }

  • Schreibe vor der Zeile mit sscanf mal ein print
    printf("Params: %s", params);
    und gib uns das Resultat zurück, denn wahrscheinlich kann es auch an einer falschen Parameter übergabe liegen.


    Weiters fiel mir auf, dass du dem s-Specifier keine Länge angibst, weßhalb ich gern wissen würde, ob du noch den PAWN-Code sscanf nutzt oder bereits das Plugin?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Hilft das irgendwie weiter?


    [13:04:21] [join] Skill has joined the server (0:192.168.178.25)
    [13:04:34] Params:
    [13:04:36] Params: 0
    [13:04:37] Params: 0 t



    //EDIT: ja ich nutze sscanf...


    //HILFE WAS SOLL ICH MACHEN??? ICH KOMME JA NICHT WEITER....

    Einmal editiert, zuletzt von TimTom ()

  • Bezüglich sscanf: Du verstehst wohl nicht ganz ^^ Es gibt zwei Arten


    die PAWN-Code Version
    http://wiki.sa-mp.com/wiki/Sscanf_code
    und die Plugin Version
    http://forum.sa-mp.com/showthread.php?t=120356


    Aber wie es aussieht, macht sscanf alles in Ordnung, denn anscheinend wird auch tatsächlich die ID 0 eingegeben. Entweder du hast tatsächlich den Befehl wie folgt eingegeben:


    /warn 0 t


    oder in OnPlayerCommandText wird zuvor in einem anderen Include (welches vor ocmd inkludeirt ist) etwas anderes definiert. Tritt der Fehler nur bei dem Befehl auf, oder auch woanders.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Kannst du dein ocmd-Include hier rein posten?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Der sollte es sein.


    /*---------------------------------------


    /--------\ /--------\ /\
    | | | | / \
    | | | | / \ |-----
    | | |--------/ / \ |
    | | | |--------| \----\
    | | | | | |
    \--------/ | | | -----/


    OBJECTSTREAMER & MAPEDITOR
    VERSION 5.0.5
    OCMD MODULE


    ---------------------------------------*/
    #include <a_samp>
    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    new ocmdStr[32],i=1;
    for(;i<128;i++)
    {
    if(!cmdtext[i]||cmdtext[i]==' ')break;
    ocmdStr[i-1]=tolower(cmdtext[i]);
    }
    format(ocmdStr,128,"ocmd_%s",ocmdStr);
    if(!strlen(cmdtext[i+1])&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
    if(CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1;
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }
    #define OnPlayerCommandText ocmdOnPlayerCommandText

  • Mir gefehlt bei dem ocmd dieses


    cmdtext[i+1]


    nicht, daher mach von der Datei eine Sicherung und überschreibe anschließend den Inhalt damit:



    #include <a_samp>
    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    cmdtext[0]='_';
    new ocmdStr[128],ocmdParams[128],bool:ocmdAffe,ocmdFu;
    for(new i;i<128;i++)
    {
    if(cmdtext[i]=='\0')break;
    if((cmdtext[i]==' ')&&(!ocmdAffe))
    {
    ocmdAffe=true;
    continue;
    }
    if(!ocmdAffe)ocmdStr[i]=cmdtext[i];
    else
    {
    ocmdParams[ocmdFu]=cmdtext[i];
    ocmdFu++;
    }
    }
    format(ocmdStr,128,"ocmd%s",ocmdStr);
    if(!strlen(ocmdParams))format(ocmdParams,128," ");
    if(CallLocalFunction(ocmdStr,"ds",playerid,ocmdParams))return 1;
    cmdtext[0]='/';
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }
    #define OnPlayerCommandText ocmdOnPlayerCommandText

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!