Wanted geht nicht ?!

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
  • Also ich hab hier:
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(killerid, name, sizeof(name));
    Delete3DTextLabel(label[playerid]);
    TextDrawHideForPlayer(playerid,Textdraw0);
    TextDrawHideForPlayer(playerid,Textdraw1);
    SetPlayerWantedLevel(playerid, 0);

    if(Wanted[killerid] >= 0)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 1);
    GivePlayerMoney(killerid, 1000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    Wanted[killerid] = 1;
    return 1;
    }
    if(Wanted[killerid] >= 1)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 2);
    GivePlayerMoney(killerid, 2000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 3);
    Wanted[killerid] = 2;
    return 1;
    }
    if(Wanted[killerid] >= 2)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 3);
    GivePlayerMoney(killerid, 3000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 6);
    Wanted[killerid] = 3;
    return 1;
    }
    if(Wanted[killerid] >= 3)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 4);
    GivePlayerMoney(killerid, 4000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 9);
    Wanted[killerid] = 4;
    return 1;
    }
    if(Wanted[killerid] >= 4)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 5);
    GivePlayerMoney(killerid, 5000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 12);
    Wanted[killerid] = 5;
    return 1;
    }
    if(Wanted[killerid] >= 5)
    {
    new string[256];
    SetPlayerWantedLevel(killerid, 6);
    GivePlayerMoney(killerid, 6000);
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 15);
    Wanted[killerid] = 6;
    return 1;
    }
    return 1;
    }
    Aber ingame bekomm ich nur Wanted Level 1 und bekomm nur 1000 $ Normaler Weise sollte sich das erhöhen.

  • Ist ja auch logisch,dass du niemals ein Wanted über Level1 bekommst.
    Denn die ganze Struktur bei dir ist sehr unvorteilhaft.


    Du fragst zuerst ab ober das Wanted über / gleich 0 ist.Falls ja,beendest du am ende die Funktion.
    Dann fragst du ab ob das Wanted über / gleich 1 ist.Das wird aber nie abgefragt. Denn wenn der Wanted
    Level lediglich 0 oder größer ist,beendest du mit return 1; bereits. Dadurch ist es völlig egal
    was danach folgt.
    Ist das Level zum Beispiel 5. Dann wird es bereits den Block aufrufen für Level 0.( Es ist zwar nicht möglich da
    du überall return 1; hast, es würde aber dann auch den Block für Level 1 - 4 aufrufen [ Wenn du dort kein return 1; hättest ] )
    Du hättest es wenn dann überhaupt rückwärts aufbauen müssen.


    Zuerst fragen ob Level6,dann 5,4,3 usw.


    Ich hab dir das aber mal neu strukturiert.
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new
    name[MAX_PLAYER_NAME];
    GetPlayerName(killerid, name, sizeof(name));
    Delete3DTextLabel(label[playerid]);
    TextDrawHideForPlayer(playerid,Textdraw0);
    TextDrawHideForPlayer(playerid,Textdraw1);
    SetPlayerWantedLevel(playerid, 0);


    if(killerid != INVALID_PLAYER_ID) {
    {


    new
    level,
    string[128];
    Wanted[killerid]++;
    if(Wanted[killerid] > 6) {
    level = 6;
    }
    else {
    level = Wanted[killerid];
    }
    GivePlayerMoney(killerid, ( level * 1000 ) );
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    SetPlayerWantedLevel(killerid, level);
    // return 1; sicher,dass du danach nicht noch etwas machen willst?
    }
    return 1;
    }


    //Edit: Blubb geändert.Benutzt es lieber so.

    Einmal editiert, zuletzt von Goldkiller ()