Setrangname Funktioniert nicht Richtig

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 ;)


    Ich habe mal wieder ein Problem ,
    unzwar Funktioniert mein /Setrangname nicht der Befehl ansich Funktioniert .
    Allerdings wird der Rang Name nicht geändert .


    Wenn ich mir den Rang zuweise ändert dieser sich auch nicht .



    Der Code :


    if(strcmp(cmd,"/setrangname",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(PlayerInfo[playerid][pRank] != 6) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht befugt Ränge zu editieren!");
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_RED, "{33CCFF}FEHLER:{FFFFFF} /setrangname [RangID 1 - 6] [Rangname]");
    return 1;
    }
    new level = strval(tmp);
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_RED, "{33CCFF}FEHLER:{FFFFFF} /setrangname [RangID 1 - 6][Rangname]");
    return 1;
    }
    new query[256];
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    mysql_query(query);
    mysql_free_result();
    format(string,sizeof(string),"LeaderCmd: Der RangID:%i wurde zu Rang: %s[ID:%i] umbenannt.",level,result,level);
    SendClientMessage(playerid,COLOR_WHITE,string);
    return 1;
    }
    if(strcmp(cmd, "/giverank", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_RED, "{33CCFF}FEHLER:{FFFFFF} /giverank [playerid] [Nummer(1-6)]");
    return 1;
    }
    new para1;
    new level;
    para1 = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    level = strval(tmp);
    if (PlayerInfo[playerid][pMember] >= 1 && PlayerInfo[playerid][pRank] == 6)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[playerid][pMember] != PlayerInfo[para1][pMember] && playerid != para1)
    {
    SendClientMessage(playerid, COLOR_RED, " Der Spieler ist nicht in deiner Fraktion!");
    return 1;
    }
    if(playerid == para1)
    {
    SendClientMessage(para1, COLOR_RED, "Du kannst dir den Rang selbst nicht ändern!");
    return 1;
    }
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    PlayerInfo[para1][pRank] = level;
    format(string, sizeof(string), " Du hast von %s einen neuen Rang bekommen!", sendername);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), " Du hast %s Rang %d gegeben.", giveplayer,level);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du darfst diesen Befehl nicht benutzen(Nur Leader)!");
    }
    }
    return 1;
    }

  • Setze nach dem query im Befehl einfach mal einen Print und schaue im Log nach, was da steht, wenn du den Befehl eingibst.
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    printf(query);


    Dann poste was geprintet wird.

  • Du hast in deinem "/setrangname"-Befehl eine Zeile, womit du eine Query an die Datenbank verschickst, das ist diese hier:
    new query[256];
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    mysql_query(query);
    Nun fügst du einfach noch einen print dort rein, der dir diese Zeile mit den Werten ausgibt:
    new query[256];
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    print(query);
    mysql_query(query);
    So. Das kompilierst du, startest den Server neu, und führst diesen Befehl aus. Danach schaust du mal in deiner server.log.txt und schickst uns am besten diesen Inhalt.

  • format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    Hier steht fID, und bei deinem Print frakid? :whistling:


    Na ja, ist das denn richtig mit der Fraktions-ID 0? Bei welcher ID fängt deine Fraktion denn an, bzw. in welcher Fraktion befindest DU dich?

  • Okey. Wie ist es dazu gekommen, dass dort auf einmal frakid stand, und nicht fID?
    Wie lässt du deine Fraktion in das Array laden?

  • Bist du Leader dieser Fraktion? Wenn ja, dann schreibe es doch mal so:
    new frakid = PlayerInfo[playerid][pMember];
    if(frakid == 0) frakid = PlayerInfo[playerid][pLeader];
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `frakid`='%i'",level,result,frakid);
    printf(query);
    Gegebenenfalls eben `fID` im Query, je nach dem was richtig ist.