Timer Bug

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
  • Hey,


    ich habe bei meinem Script das so gemacht das der Geldbetrag als Score angezeigt wird.


    Dazu ist ein Timer der jede Sekunde durchläuft und den Geldbetrag der Spieler checkt.. nur ist er leider ein bisschen Buggy:


    Der Score wird nur von dem ersten Spieler connected ist erstellt, bei allen anderen ist der Score 0...


    Hier mal alles was mit dem Score und dem Timer zu tun hat:


    forward Timer(); //Der Timer der den Geldbetrag der Spieler checkt
    SetTimer("SetScore", 1000, 1); // Hier wird der Timer gesetzt der jede Sekunde abgefragt wird.
    public SetScore(playerid)
    {
    SetPlayerScore(playerid, GetPlayerMoney(playerid));
    return 1;

    forward SetScore(playerid);
    SetTimer("SetScore", 1000, 1); // Hier wird der Timer gesetzt der jede Sekunde abgefragt wird.


    Ich hoffe mal ihr findet die Ursache =)

    mfg

  • Ja, MAX_PLAYERS ist dafür dass die Funktion für alles Spieler steht.

  • Du musst SetTimerEx verwenden :) SetTimer wird verwendet wenn die Funktion keine Parameter hat. Deine hat aber einen: "playerid".
    Also bei OnPlayerConnect: SetTimerEx("SetScore", 1000, 1,"d",playerid);
    edit: alternativ könntest du auch eine Funktion ohne Parameter verwenden und dort eine Schleife für alle Spieler laufen lassen...

  • forward UpdatePlayerScore();


    public OnGameModeInit()
    {
    //Blablabla
    SetTimer("UpdatePlayerScore", 1000, true);
    //Blablabla
    return 1;
    }


    public UpdatePlayerScore()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)
    {
    SetPlayerScore(i, GetPlayerMoney(i));
    }
    }
    return 1;
    }


    SetTimerEx zu benutzen wäre ziemlich schlecht, da du dann für jeden spieler einen timer erstellen müsstest.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • 1 Error :D


    C:\Users\Benedikt\Desktop\Eigener Server\Server\gamemodes\GM.pwn(4438) : error 001: expected token: ")", but found "{"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    public UpdatePlayerScore()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)
    { // der error betrifft diese Zeile
    SetPlayerScore(i, GetPlayerMoney(i));
    }
    }
    return 1;
    }


    /edit: Falsche zeile wars^^
    /edit2: Fehler behoben, hinter dem "i" war eine Klammer zu wenig^^


    Ich werde euch morgen mitteilen obs jetzt klappt, wenn wieder Spieler auf meinem Server zocken :D

    mfg