Beiträge von [EGC] selEcT

    ja, da fehlt das:


    PlayerInfo[para1][pRank] = 6;


    mach es so:



    f(strcmp(cmd, "/makeleader", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /makeleader [spielerid/teildesnamens] [Nummer(1-13)]");
    return 1;
    }
    new para1;
    new level;
    para1 = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    level = strval(tmp);
    if(level > 14 || level < 0) { SendClientMessage(playerid, COLOR_GREY, "Die Nummer darf nicht unter 0 und über 13 sein!"); return 1; }
    if (PlayerInfo[playerid][pAdmin] >= 1337)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[para1][pMember] > 0 || PlayerInfo[para1][pFMember] < 255)
    {
    SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist in einer Organisation / Familie!");
    return 1;
    }
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    PlayerInfo[para1][pLeader] = level;
    PlayerInfo[para1][pRank] = 6;
    format(string, sizeof(string), "Du wurdest von %s zum Leader gemacht.", sendername);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "Du hast %s zum Leader Level %d gemacht.", giveplayer,level);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    if(level == 0) { PlayerInfo[para1][pChar] = 299; }
    else if(level == 1) { PlayerInfo[para1][pChar] = 288; } //Police Force
    else if(level == 2) { PlayerInfo[para1][pChar] = 286; } //FBI/ATF
    else if(level == 3) { PlayerInfo[para1][pChar] = 287; } //National Guard
    else if(level == 4) { PlayerInfo[para1][pChar] = 228; } //Fire/Ambulance
    else if(level == 5) { PlayerInfo[para1][pChar] = 113; } //Russische Mafia
    else if(level == 6) { PlayerInfo[para1][pChar] = 120; } //Triaden
    else if(level == 7) { PlayerInfo[para1][pChar] = 147; } //Mayor
    else if(level == 8) { PlayerInfo[para1][pChar] = 294; } //Hitmans
    else if(level == 9) { PlayerInfo[para1][pChar] = 227; } //News Reporters
    else if(level == 10) { PlayerInfo[para1][pChar] = 61; } //Taxi Cab Company
    else if(level == 11) { PlayerInfo[para1][pChar] = 171; } //Driving/Flying School
    else if(level == 12) { PlayerInfo[para1][pChar] = 123; } //DaNang Boyz
    else if(level == 13) { PlayerInfo[para1][pChar] = 68; } //Orcus Clan
    else if(level == 14) { PlayerInfo[para1][pChar] = 275; } //Ordnungsamt
    gTeam[para1] = 14;
    PlayerInfo[para1][pTeam] = 14;
    SetPlayerSkin(para1, PlayerInfo[para1][pChar]);
    }
    }//not connected
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
    }
    }
    return 1;
    }

    Anmerkungen:


    1. Wie soll es beim Art 2 beim Laden wissen, welchen Spieler man meint? (playerid is ja net definiert)
    2. Wieso bei OnGameModeInit? Ist ja noch kein Spieler da?
    3. Wieso benutzt man beim Speichern WHERE id=%d? Das heisst ja eigentlich, das der erste Spieler der gespeichert wird, ID 0 hat, wenn dann aber beim nächsten mal einer kommt, der im Spiel dann auch ID 0 hat, wird der erste Spieler überschrieben o_O oder seh ich das falsch? und das speichern ist in demfall nur für einen Spieler? (if p == 0)
    4. Hats noch irgendwo ein anderes Tut, mit mehr Sachen bei LoadPlayer & SavePlayer?


    Also das Tut ist ein bisschen komisch finde ich, dennoch gute arbeit..


    MFG

    ja, aber ich möchte es gerne so lassen ;)


    jaa ich hab die abfrage gemacht, da es gleich direkt wieder abfragt, ob die 60 mins erreicht sind. Der Timer sollte ja stimmen, es kommt aber alle 10-15 minuten pro spieler ein payday?!


    edit: hmm, hab jetzt die erste abfrage rausgenommen und es funktioniert bis jetzt ^^

    Moin leute.


    Ich hab ein sehr sehr sehr komisches problem!


    Ich hab beim script einen Timer eingesetzt, der anfängt zu laufen, sobald sich der Spieler eingeloggt hat (also SetTimerEx("PayDayTimer", 60000, 1, "i", playerid);).



    Oben deklariert:


    forward PayDayTimer(playerid);


    Timer:


    public PayDayTimer(playerid)
    {
    if(PlayerInfo[playerid][pPayDayMins] < 60)
    {
    PlayerInfo[playerid][pPayDayMins]++;
    if(PlayerInfo[playerid][pPayDayMins] == 60)
    {
    PayDay(playerid);
    }
    }
    else if(PlayerInfo[playerid][pPayDayMins] >= 60)
    {
    PayDay(playerid);
    }
    }


    Das ist der einzige Ort, der PayDayMins verändert (ausser beim PayDay, dort wird er wieder auf 0 gesetzt).


    Was ist das Problem?


    Muss beim Disconnect des Spielers der Timer gekillt werden?


    Ich hoffe jemand kann mir helfen.


    MFG selEcT


    edit: keine idee?