Problem beim ocmd.Kick Befehl in Mysql

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
  • Guten Abend,
    Ich hatte grade nix zutun und wollte mein Script mal auf Mysql umschreiben. Nur leider bekomme ich 4 Fehler bei diesem Befehl.
    ocmd:kick(playerid,params[])
    {
    new str[128],pID,query[128],name[MAX_PLAYER_NAME];
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName] <= 1);
    if(sscanf(params,"us",pID))return SendClientMessage(playerid,Grau,"Tippe /kick [ID] [Grund] ein"); Fehler Nummer 120
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,Givename,sizeof(Givename)); Fehler Nummer 121
    format(str,sizeof(str),"[Server]: %s hat denn Spieler %s vom server Gekickt! Grund: %s",name,Givename,query);
    SendClientMessageToAll(Rot,str); Fehler Nummer 123
    Kick(pID);
    return 1;
    }

    PHP
    C:\Users\Dome\Desktop\Neuer Ordner\pawno\Server-Planet.pwn(120) : error 035: argument type mismatch (argument 2)
    C:\Users\Dome\Desktop\Neuer Ordner\pawno\Server-Planet.pwn(121) : error 035: argument type mismatch (argument 2)
    C:\Users\Dome\Desktop\Neuer Ordner\pawno\Server-Planet.pwn(121) : error 039: constant symbol has no size
    C:\Users\Dome\Desktop\Neuer Ordner\pawno\Server-Planet.pwn(122) : warning 213: tag mismatch
    C:\Users\Dome\Desktop\Neuer Ordner\pawno\Server-Planet.pwn(123) : error 035: argument type mismatch (argument 1)


    Leider finde ich denn Fehler nicht selbständig. Könnt ihr mir sagen, wo genau der Fehler liegt?

  • Ich verstehe nicht warum du bei jeder Eingabe des Befehls die Daten aus der Datenbank holst, aber das sei mir egal.


    ocmd:kick(playerid,params[])
    {
    new str[128],pID,query[128],name[MAX_PLAYER_NAME];
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    if(SpielerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,Grau,"Error: Du bist nicht Level 1 oder höher.");
    if(sscanf(params,"us",pID))return SendClientMessage(playerid,Grau,"Tippe /kick [ID] [Grund] ein");
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,Givename,sizeof(Givename));
    format(str,sizeof(str),"[Server]: %s hat denn Spieler %s vom server Gekickt! Grund: %s",name,Givename,query);
    SendClientMessageToAll(Rot,str);
    Kick(pID);
    return 1;
    }


    Meinst du die Abfrage so? :rolleyes:


  • Die MySQL Abfrage kannste getrost löschen.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • An die zwei Poster über mir BOMBER: & FelixTh:
    Wenn Ihr keine konstruktiven Beiträge macht, dann lasst einfach die Finger vom "Antworten" Button. Es geht hier in erster Linie um die Syntax die falsch ist, daher die Errors, und nicht um die Semantik, d.h. ob man die Abfrage weg lassen kann oder nicht, dann das könnt Ihr nicht wissen, ob er das kann oder nicht. (Und wenn man "query" aus den Def's löscht, bekommt er einen Error "undefined Symbol", also bitte.)
    Und auch dass bei sscanf eine Definition des Grundes fehlt hat mit den Errors nichts zu tun.
    Also entweder ihr helft konstruktiv oder ihr lasst es ganz, aber sowas ist einfach nur sinnlos, da keineswegs geholfen wird. :thumbdown:


    Ende der Diskussion.


    ---


    An den Threadstarter:
    Hast du den Code so mal kompiliert? Es sollten keine Fehler mehr auftreten. Wenn doch, dann hast du die Farbcodes falsch definiert, die solltest du dann posten.

  • Konstruktiv also?



    ocmd:kick(playerid,params[])
    {
    new str[128],pID,pName[MAX_PLAYER_NAME],Reason[128],name[MAX_PLAYER_NAME]; //Reason Einsetzen für den Grund
    if(SpielerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid,FARBE,"Du bist kein Admin!");
    if(sscanf(params,"us[128]",pID,Reason))return SendClientMessage(playerid,Grau,"Tippe /kick [ID] [Grund] ein"); //Hier auch Reason für den Grund als Abfrage (sscanf)
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(pID, pName,sizeof(pName));
    format(str,sizeof(str),"[Server]: %s hat denn Spieler %s vom server Gekickt! Grund: %s",name,pName,Reason); //Name des Admins, Name des gekickten und der Grund wird ausgegeben.
    SendClientMessageToAll(Rot,str); // Sollte mit der ordendlichen String Formatierung auch behoben sein.
    Kick(pID);
    return 1;
    }


    So bitte, hier hast du "konstruktiv"


    PS: Die MySQL Abfrage ist unnötig, weil es ne Spielervariable ist, mfg. :whistling:


    //E: Denkfehler bearbeitet.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

    2 Mal editiert, zuletzt von BOMBER ()