/Spielerinfo

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
  • Hi, und zwar ich wollte einen Befehl machen der /Spielerinfo heißt dort wollte ich abfragen ob der Spieler gebannt ist oder nicht nun jetzt ist die Frage wie ich das mache.


    Info´s:
    Ich lade alles aus MySql r5 aus
    ich schreibe ihn mit ocmd:spielerinfo


  • ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    new pID, reason[128],string[128];
    new query[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/Ban [ID] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_RED,"Diese Spieler ist nicht online");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Bot Bannen !");
    format(string,sizeof(string),"[BANNED]: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0x9B0000FF,string);
    format(string,sizeof(string),"~r~Du wurdest gebannt !~n~Grund: %s",reason);
    GameTextForPlayer(pID, string, 30000, 4);
    TogglePlayerControllable(pID,0);
    format(query,sizeof(query),"UPDATE accounts SET Baned=1 WHERE Name='%s'",pID);
    mysql_query(query);

    }
    return 1;
    }

  • Den Befehl musst du so schreiben, sonst geht es nicht:
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    new pID, reason[128],string[128], query[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/Ban [ID] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_RED,"Diese Spieler ist nicht online");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Bot Bannen !");
    format(string,sizeof(string),"[BANNED]: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0x9B0000FF,string);
    format(string,sizeof(string),"~r~Du wurdest gebannt !~n~Grund: %s",reason);
    GameTextForPlayer(pID, string, 30000, 4);
    TogglePlayerControllable(pID,0);
    GetPlayerName(pID, string, MAX_PLAYER_NAME); //Hinzugefügt
    format(query,sizeof(query),"UPDATE accounts SET Baned=1 WHERE Name='%s'",string);
    mysql_query(query);
    }
    return 1;
    }


    Dann kann die Abfrage so ein:
    ocmd:spielerinfo(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    if(!strlen(params))return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
    mysql_real_escape_string(params, params);
    format(query,sizeof(query),"SELECT Baned FROM accounts WHERE Name='%s' AND Baned = '1'",params);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Spieler ist gebannt.");
    }
    else
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Spieler ist nicht gebannt.");
    }
    mysql_free_result();
    }
    return 1;
    }


    EDIT:
    @xXBastianXx
    Bitte aktualisiere den spielerinfo Befehl, falls du ihn schon abgeschrieben hast, ich hatte im Query die Banned Abfrage vergessen.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Als kleiner Tipp, den Query kann man noch etwas schöner gestalten.

    Code
    format(query, sizeof(query), "SELECT Baned FROM accounts WHERE Name = '%s' AND Baned = 1' LIMIT 1", params);
    mysql_query(query);
    mysql_store_result();
    if (!mysql_num_rows()) SendClientMessage(playerid, 0xFFFFFFFF, "Spieler ist nicht gebannt.");
    else SendClientMessage(playerid, 0xFFFFFFFF, "Spieler ist gebannt.");
    mysql_free_result();


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Ja, dann so:
    ocmd:spielerinfo(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    if(!strlen(params))return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
    new str[145], query[128];
    mysql_real_escape_string(params, params);
    format(query,sizeof(query),"SELECT Baned FROM accounts WHERE Name='%s' AND Baned = '1'",params);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    format(str, sizeof(str), "Spieler %s ist gebannt.", params);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else
    {
    format(str, sizeof(str), "Spieler %s ist nicht gebannt.", params);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    mysql_free_result();
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Die geschweifte Klammer von Zeile 4 (und zugehörige schließende Klammer) sind zu viel, da dass if etwas returned braucht die Klausel keine Klammern.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • dann kommt eine Error meldung das der Befelh nicht existiert

    Welche der beiden Meldungen kommt? Oder kommen beide Meldungen?
    Versuche es mal so:
    ocmd:spielerinfo(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    if(!strlen(params)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
    new str[145], query[128];
    mysql_real_escape_string(params, str);
    format(query,sizeof(query),"SELECT Baned FROM accounts WHERE Name='%s' AND Baned = '1'",str);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    format(str, sizeof(str), "Spieler %s ist gebannt.", str);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else
    {
    format(str, sizeof(str), "Spieler %s ist nicht gebannt.", str);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    mysql_free_result();
    }
    return 1;
    }


    Die geschweifte Klammer von Zeile 4 (und zugehörige schließende Klammer) sind zu viel, da dass if etwas returned braucht die Klausel keine Klammern.

    Viele schreiben das aus Gewohnheit so, man braucht es nicht, aber es schadet auch nicht. ;)
    Ich habe es einfach so übernommen, wie er es in seinem anderen Befehl hat, damit er sich nicht umgewöhnen muss.

  • aber es schadet auch nicht.

    Der Compiler meckert dabei nicht rum? Das ist ja interessant, PAWN erscheint mir jedes mal kurioser :D
    @TE: Hast du vllt das "SCM" statt "SendClientMessage" aus Jeffrys Zeile 3 mitkopiert und den nötigen define dafür nicht?


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Der Compiler meckert dabei nicht rum? Das ist ja interessant, PAWN erscheint mir jedes mal kurioser

    Nö, das stört ihn nicht. Man kann auch 5 Klammern auf machen, wenn man sie entsprechend wieder zu macht, das stört ihn gar nicht. Ob das dann noch lesbar ist ist natürlich eine andere Sache. Aber vor allem bei sscanf sehe ich es oft, dass die Leute das so schreiben, weil sie das Prinzip dann einfacher verstehen.


    Zwecks dem SCM: Das sollte er eigentlich definiert haben, in seinem anderen Befehl hat er es ja auch drin und dort klappt es. Habe es ja nur von dort kopiert.

  • Gut, ich habe es jetzt, aber wenn man den Befehl eingibt kommt Der Spieler ist nicht gebannt ohne das Benutze /Spielerinfo.
    noch eine Frage kann man Auslesen ob der Spieler einen Account hat oder nicht wenn ja soll die nachricht kommen wenn nein soll kommen
    "Der Name ist bei uns nicht Registriert!"

  • Das musst du dann so machen:
    ocmd:spielerinfo(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    {
    if(!strlen(params)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
    new str[145], query[128];
    mysql_real_escape_string(params, str);
    format(query,sizeof(query),"SELECT Baned FROM accounts WHERE Name='%s' LIMIT 1",str);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() == 0)
    {
    format(str, sizeof(str), "Spieler %s ist bei uns nicht registriert.", str);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else if(mysql_fetch_int() == 1)
    {
    format(str, sizeof(str), "Spieler %s ist gebannt.", str);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else
    {
    format(str, sizeof(str), "Spieler %s ist nicht gebannt.", str);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    mysql_free_result();
    }
    return 1;
    }


    Zwecks der Nachricht: Die sollte nur kommen, wenn du keinen Namen eingibst.

  • ocmd:spielerinfo(playerid,params[])
    {
    new str[145], query[128], name[MAX_PLAYER_NAME];
    if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
    if(!sscanf(params, "s", name)) return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/spielerinfo [Name]");
    mysql_real_escape_string(name, name),
    format(query, sizeof query, "SELECT `Baned` FROM `accounts` WHERE `Name`='%s' LIMIT 1",name),
    mysql_query(query),
    mysql_store_result();
    if(mysql_num_rows() == 0){
    format(str, sizeof str, "Spieler %s ist bei uns nicht registriert.", name);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else if(mysql_fetch_int() == 1){
    format(str, sizeof(str), "Spieler %s ist gebannt.", name);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else{
    format(str, sizeof(str), "Spieler %s ist nicht gebannt.", name);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    mysql_free_result();
    return 1;
    }
    Probiere es mal so.