Problem mit 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
  • Hey Leute hab einen Timer erstellt der Pickups createn soll, wenn man sich noch in der Nähe der Tür befindet!



    public AufbrechTimer()
    {
    for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3.0, 1424.2954, -991.0154, -0.7891))
    {
    aufgebrochen = 0;
    SendClientMessage(robber, COLOR_RED, "Du bist nichtmehr an der Tür in der Bank!");
    return 1;
    }
    else
    {
    aufgebrochen = 1;
    SendClientMessage(robber, COLOR_GREEN, "Die Tür ist offen! Weiter geht's!");
    robdoorenter = CreatePickup(1559, 23,1424.2954,-991.0154,-0.7891,0);
    robdoorexit = CreatePickup(1559, 23,2144.1782,1607.6887,993.6882,0);
    }
    }
    return 1;
    }


    Das hier klappt!
    {
    aufgebrochen = 0;
    SendClientMessage(robber, COLOR_RED, "Du bist nichtmehr an der Tür in der Bank!");
    return 1;
    }


    Nur wenn das nicht der Fall ist, werden zwar die Pickups Created, jedoch wird man mit der Message zugespamt und aufgebrochen wird nicht auf 1 gesetzt! Das heißt man kann den Befehl immer wieder eingeben, was ich eig nicht wollte nur was ist daran falsch??


    if(strcmp(cmd,"/aufbrechen",true) == 0)
    {
    if(aufgebrochen != 0) return SendClientMessage(playerid, COLOR_RED, "Die Tür ist/wird schon aufgebrochen!");
    {
    if(PlayerInfo[playerid][pJob] != 5) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Dieb!");
    {


    Muss doch eig so klappen!


    //Edit eingerückt

  • Schön das du es geschafft hast, aber man würde auch gerne als Mensch, welcher sich kostbare Sekunden seines Lebens für das durchsehen dieses Code's Zeit genommen hat, wissen, wo der Fehler war.

  • Okay hier für dich der neue Code ;D


    if(strcmp(cmd,"/aufbrechen",true) == 0)
    {
    if(aufgebrochen == 1) return SendClientMessage(playerid, COLOR_RED, "Die Tür ist/wird schon aufgebrochen!");
    {
    if(PlayerInfo[playerid][pJob] != 5) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Dieb!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,5.0, 1424.2954, -991.0154, -0.7891)) return SendClientMessage(playerid, COLOR_RED, "Du bist nicht an der Tür in der Bank!");
    {
    if(PlayerInfo[playerid][pBrecheisen] == 0) return SendClientMessage(playerid, COLOR_RED, "Du hast kein Brecheisen!");
    {
    robber = playerid;
    aufgebrochen = 1;
    SendClientMessage(robber, 0xFF9933FF, "Die Tür ist sehr hartnäckig, es kann ein wenig dauern bis du sie geöffnet bekommst!");
    new zeit = random(40000);
    SetTimer("AufbrechTimer", zeit, 0);
    ApplyAnimation(robber, "ROB_BANK", "CAT_Safe_Open", 4.1, 0, 1, 1, 1, 1, 1);
    }
    }
    }
    }
    return 1;
    }


    Habe das mit != 0 zu == 1 geändert und dann im timer


    public AufbrechTimer()
    {
    if(IsPlayerInRangeOfPoint(robber,5.0, 1424.2954, -991.0154, -0.7891))
    {
    aufgebrochen = 1;
    SendClientMessage(robber, COLOR_GREEN, "Die Tür ist offen! Weiter geht's!");
    robdoorenter = CreatePickup(1559, 23,1424.2954,-991.0154,-0.7891,0);
    robdoorexit = CreatePickup(1559, 23,2144.1782,1607.6887,993.6882,0);
    }
    else
    {
    aufgebrochen = 0;
    SendClientMessage(robber, COLOR_RED, "Du bist nichtmehr an der Tür in der Bank!");
    }
    return 1;
    }


    Den return rausgenommen, da er für den Spam gesorgt hat! Und sonst noch ein Paar kleine Änderungen ;)

  • Naja das mit dem Timer ist klar, da darf eigentlich kein return rein, was ich übersah.
    Das mit dem != 0 bzw. == 1 hatte ich ja geschrieben, hoffe trotzdem das du jetzt weiter gekommen bist, auch wenn ich vll. nur einen halben Fehler gesehen habe.