Problem mit PayDay

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 ein Problem mit dem PayDay, und zwar sendet er die Nachricht "Lohn: 1500$" ziemlich oft.


    public PayDay(playerid)
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    GameTextForPlayer(i,"~y~PayDay",2000,1);
    SendClientMessage(i,COLOR_YELLOW,"_____PayDay_____");
    SendClientMessage(i,COLOR_WHITE,"Zahltag: 2000$");
    if(Spielerinfo[playerid][Fraktion] >= 1 && Spielerinfo[playerid][H4] == 0){SendClientMessage(playerid,COLOR_WHITE,"Lohn: 1500$"); GivePlayerMoney(playerid,1500);}
    if(Spielerinfo[playerid][H4] == 1){SendClientMessage(playerid,COLOR_WHITE,"Arbeitslosengeld: 1000$"); GivePlayerMoney(playerid,1000);}
    if(Spielerinfo[playerid][Hotel] == 1){SendClientMessage(playerid,COLOR_WHITE,"Hotel: -100$"); GivePlayerMoney(playerid,-100);}
    Spielerinfo[i][EP]++;
    SCMF(i,COLOR_WHITE,"Erfahrungspunkte: +1 (%s/5)",Spielerinfo[i][EP]);
    if(Spielerinfo[playerid][EP] >= 5){SendClientMessage(playerid,COLOR_WHITE,"Du hast bereits 5 Erfahrungspunkte, tippe /levelup!");}
    GivePlayerMoney(i,2000);
    }
    }


    LG

  • public PayDay(playerid)
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {

    Wozu hast du denn die playerid als Parameter?
    Du hast da viel vertauscht,mal benutzt du playerid, danach wieder i.
    Entfern den playerid Parameter aus der Funktion und ersetzte es überall mit i.

  • Okay, jetzt bekomme ich ein Error:

    Code
    D:\Downloads2\samp03bsvr_R2_win32 (2)\gamemodes\Selfmade.pwn(1344) : warning 219: local variable "i" shadows a variable at a preceding level



    Zeile 1344 ist die mit for(new i = 0; i < MAX_PLAYERS; i++)

  • Du hast aber nicht,
    public PayDay(i) { ... }
    gemacht oder?
    Denn du sollst es ohne jeglichen Parameter haben,also
    public PayDay() { ... }


    Falls es doch schon so hast,dann hast du wohl irgendwo i als Globale Variable definitiert oder irgendwo als Parameter.Würde ausreichen wenn du dann anstatt den Variablennamen i irgendetwas anderes für den Laufindex benutzt,bsp p.
    for(new p = 0; p < MAX_PLAYERS; p++)

  • Okay, der Warning von oben ist weg, aber was ich jetzt verstehe ist folgendes:
    Ich hab' mir einen Befehl gemacht, um den PayDay zu testen, da ich sonst eine Stunde warten müsste, jedoch habe ich da wieder ein Warning.


    D:\Downloads2\samp03bsvr_R2_win32 (2)\gamemodes\Selfmade.pwn(1631) : warning 202: number of arguments does not match definition



    if(strcmp(cmd,"/payday",true) == 0)
    {
    PayDay(); // 1631
    return 1;
    }


    //edit: Schon gelöst, danke :D