Abfragen mit Timer Problem.

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 unzwar habe ich das Problem:

    dcmd_123(playerid,params[])
    {
    #pragma unused params
    new string[64],name[MAX_PLAYER_NAME];
    if(DM[playerid] == 1)
    {
    ResetPlayerWeapons(playerid);
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"%s ist Area beigetreten!",name);
    SendClientMessageToAll(rot,string);
    SetPlayerPos(playerid,-975.975708,1060.983032,1345.671875);
    SetPlayerInterior(playerid,10);
    Gamer[playerid] = 1;
    SendClientMessage(playerid,rot,"Mit /exit kannst du Area wieder verlassen !");
    xxxx[playerid] = SetTimerEx("xxx",1500,1,"i",playerid);
    }
    return 1;
    }

    In dem Befehl wird ein Timer gestartet der ein public auf dem Stand halten soll :
    public xxx()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(kills[playerid] == 3)
    {
    GivePlayerWeapon(playerid,4,1);
    SendClientMessage(playerid,rot,"Noch 4 KILLS bis zur nächsten Waffe !");
    }
    if(kills[playerid] == 7)
    {
    GivePlayerWeapon(playerid,22,1000);
    SendClientMessage(playerid,rot,"Noch 4 KILLS bis zur nächsten Waffe !");
    }


    Jetzt habe ich aber das Problem das die ganze Zeit die Waffe gegeben wird und die Nachricht gespamt wird.
    Wie kann ich das am besten umgehen ? .


    MfG Mumble.

  • Wenn du schon per SetTimerEx einen Parameter übergibst,dann nutz den doch auch ;).
    xxxx[playerid] = SetTimerEx("xxx",1500,1,"i",playerid);
    Du übergibst an die Funktion xxx einen Wert als Parameter, in diesem Fall playerid. Diesen kannst du dann auch in der Funktion xxx Nutzen:


    public xxx(uebergabeid) {
    // usw
    }
    uebergabeid wäre der Wert,der per SetTimerEx ( playerid ) an die Funktion übergeben wurde.



    Du könntest aber auch ( Methode 2 ) lediglich 1 Timer nutzen ( SetTimer ), diesen einmalig bei OnGameModeInit bzw Filterscript und dann wie du es jetzt hast eine Schleife nutzen. Dann bräuchtest du nicht jedes mal einen neuen Timer zu erstellen,wie du es jetzt hast.