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
  • Guten Tag,


    ich habe ein Problem mit meinem Payday, Ich habe zum Tast denn Payday auf 1 Minute gesetzt, wenn diese 1 Minute nun abläuft passiert einfach nichts.



    SetTimer("MinTimer",1000*60,true);



    public MinTimer(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))continue;
    if(GetPVarInt(playerid,"loggedin")==0)continue;
    //Wenn Spieler online ist!
    SetPVarInt(i,"ZahlTagZeit",GetPVarInt(i,"ZahltTagZeit")+1);
    if(GetPVarInt(i,"ZahltTagZeit")==1)
    {
    SetPVarInt(i,"ZahltTagZeit",0);
    SendClientMessage(playerid,ORANGE,"Du hast Payday");
    SendClientMessage(playerid,ORANGE,"Du erhälst 300$");
    SendClientMessage(playerid,ORANGE,"Du hast ein Respektpunkt erhalten!");
    SetPVarInt(i,"RespektPunkte",GetPVarInt(i,"RespektPunkte")+1);
    continue;
    }
    }
    return 1;
    }




    stock LoadAccount(playerid)
    {
    new SpielerDatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(SpielerDatei,sizeof(SpielerDatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(SpielerDatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(SpielerDatei,"Geld"));
    SetPVarInt(playerid,"AdminLevel",dini_Int(SpielerDatei,"AdminLevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(SpielerDatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(SpielerDatei,"Baned"));
    SetPVarInt(playerid,"RespektPunkte",dini_Int(SpielerDatei,"RespektPunkte")); // Enum: Info[playerid][RespektPunkte]
    SetPVarInt(playerid,"ZahlTagZeit",dini_Int(SpielerDatei,"ZahlTagZeit")); // Enum: Info[playerid][PayDayZeit]
    SetPVarInt(playerid,"Rang",dini_Int(SpielerDatei,"Rang"));
    SetPVarInt(playerid,"Fraktionsleader",dini_Int(SpielerDatei,"Fraktionsleader"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    new SpielerDatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));


    format(SpielerDatei,sizeof(SpielerDatei),"/Accounts/%s.txt",name);
    dini_IntSet(SpielerDatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(SpielerDatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(SpielerDatei,"AdminLevel",GetPVarInt(playerid,"AdminLevel"));
    dini_IntSet(SpielerDatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(SpielerDatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(SpielerDatei,"RespektPunkte",GetPVarInt(playerid,"RespektPunkte")); // Enum: Info[playerid][RespektPunkte]
    dini_IntSet(SpielerDatei,"ZahlTagZeit",GetPVarInt(playerid,"ZahlTagZeit")); // Enum: Info[playerid][PayDayZeit]
    dini_IntSet(SpielerDatei,"Rang",GetPVarInt(playerid,"Rang"));
    dini_IntSet(SpielerDatei,"Fraktionsleader",GetPVarInt(playerid,"Fraktionsleader"));
    return 1;
    }




    Habe ich vielleicht etwas falsch geschrieben?

  • Das liegt daran, dass MinTimer den Parameter playerid hat, die Funktion rufst du allerdings ohne Parameter auf. (SetTimer)


    Du musst SetTimerEx() benutzen.


    SetTimerEx("MinTimer", 1000*60, true, "i", playerid);


    Gruß,
    Neo. :)


  • Wenn ich das so mache bekomme ich denn Error : error 017: undefined symbol "playerid"



    Ich weiss das ich das playerid da hingesetzt habe ohne es irgentwo zu benutzten aber wo muss ich ich es dann jetzt benutzen, wenn ich player id entferne bekomme ich keinen error aber es funktioniert trotzdem nicht mit dem payday?

  • Der Fehler ist hier:


    if(IsPlayerConnected(i))continue;
    Ist der Spieler auf dem Server wird die Schleife fortgesetzt. Der Code untendrunter wird nicht ausgeführt und die schleife macht ihren nächsten durchgang.
    Umgehen kannst du indum du diese zeile mit dieser ersetzt:
    if(!IsPlayerConnected(i))return 1;