MySQL R7 OffUnmute

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
  • Hey,
    ich versuche grade das man einen Spieler der offline ist
    zuentmuten nur leider klappt es nicht
    ocmd:offunmute(playerid,params[])
    {
    new pID[35],query[256];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
    if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
    new count = cache_get_field_content_int(0,"count");
    if(count)
    {
    SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
    //mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
    }
    else
    {
    //SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
    mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
    }
    return 1;
    }
    Wäre top wenn ihr mir helfen könntet

  • Schonmal an einer SELECT anweisung gedacht?
    welchen sinn soll der haben?
    new count = cache_get_field_content_int(0,"count");
    wenn du vorher garnicht abfragst ob es den user gibt via SELECT

    All in all it's just another brick in the wall

  • ocmd:offunmute(playerid,params[])
    {
    new pID[35],query[256],string[124];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
    if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
    mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `"#SERVERTAG"_Account` WHERE `Name` = '%s'",pID);
    new count = cache_get_field_content_int(0,"count");
    if(count)
    {
    SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
    mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
    }
    else
    {
    format(string,sizeof(string),"Du hast den Spieler %s entmuted",pID);
    SendClientMessage(playerid,GRAU,string);
    mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
    }
    return 1;
    }
    So?

  • Der Code ist auch der reinste Rotz, abgesehen das ein spieler nie mehr als 24 Zeichen haben wird daher reicht da auch MAX_PLAYER_NAME bei pID.


    cache_get_field_content_int funktioniert ohne query davor auch nicht daher solltest du abprüfen ob der Spieler vllt direkt schon gemutet ist oder nicht
    und bei der funktion mysql_function_query wirst du eine funktion aufrufen und dort kannst du alles auslesen.

    ocmd:offunmute(playerid,params[])
    {
    new pID[35],query[256];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
    if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
    mysql_format(mycon,query, 256, "SELECT `Muted` FROM `"#SERVERTAG"_Account` WHERE `Name` = '%e' LIMIT 1",pID);
    mysql_function_query(mycon,query,true,"@MYSQL_QUERY_FINISH_MUTED_CHECK","is",playerid, pID);
    return 1;
    }


    In der Funktion kannst du gleich gewisse parameter übergeben wie die playerid von dem spieler der das eingegeben hat dann kannst du diesem gleich eine nachricht schicken und natürlich den eingegeben namen um das Update query auszuführen und nicht vergessen die string mit dem platzhalter %e zu escapen


    forward @MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]);
    @MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]){
    new bool:muted = !!cache_get_field_content_int(0,"Muted");
    if(!muted)return SendClientMessage(playerid,-1,"Der Spieler wurde nicht gefunden");
    new query[256];
    format(query,64,"Du hast %s entmuted",pName);
    SendClientMessage(playerid,-1,query);
    mysql_format(mycon,query, 256, "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%e' LIMIT 1",pName);
    mysql_tquery(mycon,query,"","");
    return 1;
    }


    //edit LIMIT 1 nicht vergessen

  • Gute Lösung, von IPrototypeI erwartet man natürlich nichts anderes.