/escape klappt nicht

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 Breadfisher!
    Ich sitze gerade an einem Befehl (/escape), er geht auch soweit, jedoch klappt das nicht wenn ich will dass man den Befehl nur alle 10 Minuten ausführen kann.
    Eventuell kann mir ja jemand von euch helfen.
    Hier mal alles was mit dem Befehl zu tun hat:
    Ganz am Anfang vom Script:
    new CanEscape[MAX_PLAYERS];
    forward Escape(playerid);
    forward CheckEscape(playerid);
    Der Public Escape:
    public Escape(playerid)
    {
    new Zufall;
    Zufall = random(10);
    switch(Zufall)
    {
    case 0,1,2,3,5,6,7,8,9:
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du hast es nicht geschafft aus dem Gefängnis auszubrechen!");
    SendClientMessage(playerid,COLOR_GRAD1,"Die Polizisten haben es gemerkt!");
    SendClientMessage(playerid,COLOR_GRAD1,"Du musst nun 10 Minuten bis zum nächsten Fluchtversuch warten!");
    return 1;
    }
    case 10:
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du hast es geschafft! Du bist frei!");
    SendClientMessage(playerid,COLOR_GRAD1,"Hau ab bevor die Cops es merken!");
    SendClientMessage(playerid,COLOR_GRAD1,"Du musst nun 10 Minuten bis zum nächsten Fluchtversuch warten!");
    PlayerInfo[playerid][pJailTime] = 1;
    return 1;
    }
    }
    return 1;
    }


    Und jetzt kommt das, was irgendwie "buggt"
    der Public "CheckEscape":
    public CheckEscape(playerid)
    {
    CanEscape[playerid] = 0;
    return 1;
    }


    Unter OnGameModeInit:
    CanEscape[playerid] = 1;


    Und hier noch der eigenltliche Befehl:
    if(strcmp(cmd, "/escape", true) == 0)
    {
    if(PlayerInfo[playerid][pJailed] == 1)
    {
    if(CanEscape[playerid] == 1)
    {
    //SetTimer("Escape",20000,0);
    SetTimerEx("Escape", 20000, 0, "d", playerid);
    SetTimerEx("CheckEscape",600000,0,"d", playerid);
    SendClientMessage(playerid,COLOR_PURPLE,"Fluchtversuch gestartet!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du hast in den letzten 10 Minuten schon einen Fluchtversuch gestartet! Du musst noch warten!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du kannst nicht flüchten da du nicht im Knast bist!");
    return 1;
    }
    }


    Ich hoffe mal, jemand kann mir erklären warum ich Ingame so oft wie ich will "/escape" machen kann, und das auch immer klappt? ;/

  • 20000 Millisekunden = 20 Sekunden, der Timer wielange es braucht bis man erfragt ob es gescheitert ist oder nicht ;). Ausserdem hat das an sich nichts mit dem Problem zu tun =P.
    Aber jetzt mal ne doofe Frage: es kann nicht sein dass der Timer "CheckEscape" erst nach 10 Minuten ausgeführt wird und nicht eine Dauer von 10 Minuten hat?

  • beim befehl:
    if(CanEscape[playerid] == 1)
    {
    //SetTimer("Escape",20000,0);
    SetTimerEx("Escape", 20000, 0, "d", playerid);
    SetTimerEx("CheckEscape",600000,0,"d", playerid);
    CanEscape[playerid] = 0; //<<<<<< Einfügen^^
    SendClientMessage(playerid,COLOR_PURPLE,"Fluchtversuch gestartet!");
    return 1;
    }



    so wie du chon sagtest CheckEscape wird erst nach 10mins ausgeführt ;) jedoch zur sicherheit würde ich die Variable und die zeit speichern denn sonst kann man den befehl ausnutzen in dem man e reloggt ;)
    kann ich dir jetzt aber nicht machen da ich nicht weiß welche speicherart du hast ;)
    MfG Paddy

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • kein ding ;) aber wie gesagt seichere die aubrechzeit und den aktuellen status noch ansonsten kann es mit reloggen ausgenutzt werden^^


    MfG Paddy

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...