Scorebelohung funktioniert ne

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
  • Ich habe da mal versucht das wenn man zb 10 Score hat dann eine Naricht bekommt und anschließend geld bekommt ich bekomme keine errors aber ig funkts leider ne



    //--------------------------Scorebelohunung--------------------------------------
    forward CheckScore();
    public CheckScore()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerScore(i) == 10)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 10 gestiegen, dafür bekommst du 1000$");
    GivePlayerMoney(i,1000);
    return 1;
    }
    else if(GetPlayerScore(i) == 20)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 20 gestiegen, dafür bekommst du 2000$");
    GivePlayerMoney(i,2000);
    return 1;
    }
    else if(GetPlayerScore(i) == 30)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 3000$");
    GivePlayerMoney(i,3000);
    return 1;
    }
    else if(GetPlayerScore(i) == 40)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 4000$");
    GivePlayerMoney(i,4000);
    return 1;
    }
    else if(GetPlayerScore(i) == 50)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 5000$");
    GivePlayerMoney(i,5000);
    return 1;
    }
    else if(GetPlayerScore(i) == 60)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 6000$");
    GivePlayerMoney(i,6000);
    return 1;
    }
    else if(GetPlayerScore(i) == 60)
    {
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 7000$");
    GivePlayerMoney(i,7000);
    return 1;
    }
    }
    return 1;
    }

  • Hier:
    Grund für die Variabeln: Der Timer Wiederhohlt sich das heißt er würde mit der nachricht zugespammt werden und er würde alle 2 sek geld erhalten :D

    Spoiler anzeigen
     
    //ganz Oben ins Script
    new ScoreM1[MAX_PLAYERS];
    new ScoreM2[MAX_PLAYERS];
    new ScoreM3[MAX_PLAYERS];
    new ScoreM4[MAX_PLAYERS];
    new ScoreM5[MAX_PLAYERS];
    new ScoreM6[MAX_PLAYERS];
    new ScoreM7[MAX_PLAYERS];
    //onplayerconnect UND OnPlayerDISconnect!
    ScoreM1[playerid] = 0;
    ScoreM2[playerid] = 0;
    ScoreM3[playerid] = 0;
    ScoreM4[playerid] = 0;
    ScoreM5[playerid] = 0;
    ScoreM6[playerid] = 0;
    ScoreM7[playerid] = 0;
    //Ongamemodeinit
    SetTimer("CheckScore",2000,1);
    //public
    forward CheckScore();
    public CheckScore()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerScore(i) == 10)
    {
    if(ScoreM1[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 10 gestiegen, dafür bekommst du 1000$");
    ScoreM1[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,1000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 20)
    {
    if(ScoreM2[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 20 gestiegen, dafür bekommst du 2000$");
    ScoreM2[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,2000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 30)
    {
    if(ScoreM3[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 30 gestiegen, dafür bekommst du 3000$");
    ScoreM3[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,3000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 40)
    {
    if(ScoreM4[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 40 gestiegen, dafür bekommst du 4000$");
    ScoreM4[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,4000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 50)
    {
    if(ScoreM5[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 50 gestiegen, dafür bekommst du 5000$");
    ScoreM5[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,5000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 60)
    {
    if(ScoreM6[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 60 gestiegen, dafür bekommst du 6000$");
    ScoreM6[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,6000);}
    return 1;
    }
    else if(GetPlayerScore(i) == 70)
    {
    if(ScoreM7[i] == 0){
    SendClientMessage(i, COLOR_YELLOW, "Dein Score ist nun auf 70 gestiegen, dafür bekommst du 7000$");
    ScoreM7[i] = 1;//hat die nachricht erhalten
    GivePlayerMoney(i,7000);}
    return 1;
    }
    }
    return 1;
    }

  • Da stellt sich die Frage, warum immer ein Timer benutzen wenns auch einfacher geht. Benutze anstatt SetPlayerScore einfach etwas Eigenes, wie das hier
    stock SetUserScrore(playerid, amount)
    {
    SetPlayerScore(playerid, (GetPlayerScore(playerid)+1));
    if(GetPlayerScore(playerid) == 10)
    {
    // was soll passieren?
    }
    else if(GetPlayerScore(playerid) == 20)
    {
    // was soll passieren?
    }
    // ...
    }
    Einfach SetUserScore anstatt SetPlayerScore verwenden und du kannst auf 5 Integer (bools würden hier genauso reichen) und einen Timer verzichten