Problem mit Rank System

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,
    i habe versucht ein rank system einzubauen, das je nachdem wie viele kills ein player hat einen bestimmten rank vergibt und man diesen jederzeit mit dem befehl /ranki nachschauen kann.
    Also wenn ich jetzt 20 kills habe, dann wird mir angezeigt, dass ich nun einen neuen rank erreicht haben, soweit sogut.
    Jedoch ändert sich der rank, wenn ich diesen mit dem befehl /ranki überprüfen möchte nicht.
    Es steht immer nur rank: Newbie und ranknumer: 0 da .
    Ich weis wirklich nicht mehr weiter, für mich sieht alles richtig aus. :D
    Ich hoffe, dass mir einer von euch helfen kann.



    new pRank[MAX_PLAYERS];


    //bei OnPlayerDeath


    new string[256];


    if(kills[killerid] == 20)
    {
    GetPlayerName(killerid, string, sizeof(string) );
    format(string, sizeof(string), "%s has been promoted to Baby Killer and now has %d kills!!", string, kills[killerid] );
    SendClientMessageToAll(0x993300AA, string);
    pRank[playerid] = 1;
    }
    else if(kills[killerid] == 100)
    {
    GetPlayerName(killerid, string, sizeof(string) );
    format(string, sizeof(string), "%s has been promoted to Shooter and now has %d kills!!", string, kills[killerid]);
    SendClientMessageToAll(0x993300AA, string);
    pRank[playerid] = 2;
    }


    //bei OnPlayerCommandText


    if (strcmp("/ranki", cmdtext, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    { SendClientMessage(playerid, 0xFFFF00AA, "///////////////////////////////////////////////////");
    new rankid = pRank[playerid];
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    new rank[20];
    if(pRank[playerid] == 0) { rank = "Newbie"; }
    else if(pRank[playerid] == 1) { rank = "Baby Killer"; }
    else if(pRank[playerid] == 2) { rank = "Shooter"; }


    new s[50];
    format(s,sizeof(s), "Your Rank: %s | Rank number: %d",rank,rankid);
    SendClientMessage(playerid, 0xFFFF00AA,s);
    SendClientMessage(playerid, 0xFFFF00AA, "///////////////////////////////////////////////////");


    }
    return 1;
    }




  • Hallo


    Also so wie ich das sehe, liegt das Problem daran, dass Du die Kills bei OnPlayerDeath nicht mitzählst. Es müsste dann wie folgt etwa aussehen:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    kills[killerid] ++;
    new string[256];
    if(kills[killerid] == 20)
    {
    GetPlayerName(killerid, string, sizeof(string) );
    format(string, sizeof(string), "%s has been promoted to Baby Killer and now has %d kills!!", string, kills[killerid] );
    SendClientMessageToAll(0x993300AA, string);
    pRank[playerid] = 1;
    return 1;
    }
    if(kills[killerid] == 100)
    {
    GetPlayerName(killerid, string, sizeof(string) );
    format(string, sizeof(string), "%s has been promoted to Shooter and now has %d kills!!", string, kills[killerid]);
    SendClientMessageToAll(0x993300AA, string);
    pRank[playerid] = 2;
    return 1;
    }
    return 1;
    }


    MfG dUDA

  • hi, danke für deine Antwort.


    also die kills zähle ich natürlich schon mit, ich habe auch ein register system und alles wird auch gespeichert.

    tode[playerid]++;
    if(killerid!=INVALID_PLAYER_ID) {
    kills[killerid]++; }


    Das Problem ist jetzt nicht die stelle wo die SendClientMessage einem sagt, dass man höher gestuft wurde, sondern da wo man per befehl /ranki seinen rank nachschauen möchte. Da ändert sich nämlich nichts, es bleibt, egal wie viele kills man hat immer auf Newbie.


    Ich hoffe jemand ist in der lage den fehler zu finden.


    Gruß...