Hilfe kleinerscript fehler mit einem timer

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 fersuche zu scripten das jeden spieler alle 2 minuten 7 Lebenspunkte abgezogen werden


    Bloß werden öffters 7 abgezogen solange bis man stirbt wenn der timer eintrit


    hab aber auch noch nicht viel mit timern gearbeitet des wegen frage ich euch um hilfe


    forward Health(playerid);


    SetTimer("Health",120000,1);


    public Health(playerid)
    {
    new playerhealth = SetPlayerHealth(playerid,-7);
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPlayerHealth(i,playerhealth);
    }
    return 1;
    }


    wo ist mein fehler ? ;(

  • Ich würds ja so machen :

    public Health(playerid)
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPlayerHealth(i,-7);
    }
    return 1;
    }
    Sag bescheid obs klappt

  • forward Health();


    SetTimer("Health",120000,1);


    public Health()
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerHealth(i,-7);
    }
    }
    return 1;
    }

  • denn mach am besten nen timer für jeden spieler...


    also oben


    new htimer[MAX_PLAYERS];


    forward Health(playerid);


    denn bei OnPlayerConnect:


    htimer[playerid] = SetTimerEx("Health",120000,1, "d", playerid);


    denn bei OnPlayerDisconnect:


    KillTimer(htimer[playerid]);


    und denn der callback irgendwo ausserhalb einer funktion:


    public Health(playerid)
    {
    SetPlayerHealth(playerid,-7);
    return 1;
    }

  • klapt immer noch net iwie ;( mann wird direkt ge killt


    wer sich überzeugen möchte 88.208.156.90:7777 meine server ip


    aba eig müsste meine methode auch am anfang klappen geht bei allem anderen was ich mit timern gemacht habe :(

  • new Float:life;
    GetPlayerHealth(i, life);
    life = life - 7;
    SetPlayerHealth(i, life);


    Ob das funktioniert weiss ich nicht...

  • juuuuungs liest ihr nie fertig?


    da steht das der öfters leben verliert ^^
    das heist im Timer ist n fehler und zwar hast dus so


    SetTimer("Health",120000,1);


    aba es sollte so sein


    SetTimer("Health",120000,0);

    etz solte es gehn ^^

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • LiNuX:

    Zitat von xFace

    mann wird direkt ge killt


    Das bedeutet in meinen Augen, der Timer soll sich wiederholen, aber es gibt einen klaren Fehler in der Funktion!


    @Ersteller:
    Ich habe den Fehler denke ich mal gefunden:
    public Health()
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerHealth(i,GetPlayerHealth(i)-7);
    }
    }
    return 1;
    }
    Ich denke, so muss es sein ;)
    MfG
    Maxx

  • Nein jetzt wird nur einmal Leben abgezogen weil der Timer nur einmal ausgeführt wird...


    public Health()
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    SetPlayerHealth(i,-7); // Hier werden die Health ja schon unter Null gebracht das heißt der stirbt einfach :D
    }
    }
    return 1;
    }



    so dürfte es klappen:


    public health()
    {
    new Float:newhealth;
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerHealth(i,newhealth);
    newhealth -= 7;
    SetPlayerHealth(i,newhealth);
    }
    }
    return 1;
    }

  • Haxler:
    Ist da nicht meine Methode besser und etwas kürzer?


    MfG
    Maxx

  • ALLE METHODEN SIND SUPER ^^


    aber es sollte nur funktionieren man wird bei jeder sofort ge tötet :(


    ich weiss nicht wo ran es liegt hab es bestimmt schon über 20 umwege fersucht aber ich komm aufs verrecken nicht drauf was immer schief leuft

  • Achjoa, stimmt :P:P
    Nadenn hier:
    public Health()
    {
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    new Float:GetHealth;
    GetPlayerHealth(i, GetHealth);
    SetPlayerHealth(i,GetHealth-7);
    }
    }
    return 1;
    }


    So MUSS es aber jetzt gehen :D:D
    Haxler:


    Das müsste ansich ja auch gehen ;)
    Danke nochmal für dienen Hinweis.
    MfG
    Maxx