24h Timer zum Bank ausrauben

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
  • Ich brauche Hilfe bei einem Script und zwar möchte ich das man die Bank nur 1x am Tag ausrauben kann... ich bin ein Anfänger Scripter und weiß, dass das jetzt vllt nicht pro aussieht aber hab ja vor kurzem erst angefangen.


    also mein Problem ist, dass ich den Timer nicht richtig funktioniert... also Errors hab ich keine aber es funktioniert nicht so wie ich will. Wenn ich die Bank ausraube, läuft ein Timer der bewirkt, dass man erst ein wenig warten muss, bis man das Geld erhält. Dann will ich noch einen Timer, der verhindert das man die Bank mehrmals am Tag ausrauben kann. Ich hab was versucht aber ich weiß nicht warum das nicht funktioniert ich hoffe mir kann da jemand helfen.


    public ausraubenday()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(AusraubenAlreadyDone[i] == 1)
    {
    format(string,sizeof(string),"* Du kannst die Bank nur 1 x am Tag ausrauben");
    SendClientMessage(i,COLOR_KNALLROT,string);
    SetTimer("ausraubenday",AusraubenDayWait,0);
    AusraubenAlreadyDone[i] = 0;
    return 1;
    }
    }
    }
    return 1;
    }


    public ausrauben()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Ausrauben[i] == 1)
    {
    format(string,sizeof(string),"* erhalten: 30000$");
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, 30000);
    Ausrauben[i] = 0;
    return 1;
    }
    }
    }
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/ausrauben", cmdtext, true, 10) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsInBank(playerid))
    {
    if (Ausrauben[playerid] == 0)
    {
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Das Geld wird eingepackt, Bitte warten",2000,3);
    SetTimer("ausrauben",AusraubenWait,0);
    format( string, sizeof(string), "~r~Die Bank wurde ausgeraubt!", playerid );
    GameTextForAll( string, 5000, 3 );
    SetPlayerMarkerForPlayer(playerid, showplayerid, 0xFF0000FF);
    SetPlayerCheckpoint(playerid, -1904.0264,285.9258,41.0469,0);
    Ausrauben[playerid] = 1;
    AusraubenAlreadyDone[playerid] = 1;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY," Du bist nicht in der Bank!");
    return 1;
    }
    }
    }
    return 0;
    }


    Danke im Voraus für die Antwort

  • Hier die beiden Timer.




    #define AusraubenDayWait 30000
    #define AusraubenWait 10000
    ...
    ...


    public ausraubenday()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(AusraubenAlreadyDone[i] == 1)
    {
    format(string,sizeof(string),"* Du kannst die Bank nur 1 x am Tag ausrauben");
    SendClientMessage(i,COLOR_KNALLROT,string);
    SetTimer("ausraubenday",AusraubenDayWait,0);
    AusraubenAlreadyDone[i] = 0;
    return 1;
    }
    }
    }
    return 1;
    }


    public ausrauben()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Ausrauben[i] == 1)
    {
    format(string,sizeof(string),"* erhalten: 30000$");
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, 30000);
    Ausrauben[i] = 0;
    return 1;
    }
    }
    }
    return 1;
    }



    Das Problem ist einfach das der Ausraubenday Timer nur dann funktioniert, wenn der ausrauben timer grad läuft... das heißt wenn ich dann das Geld bekommen hab kann ich das immer wieder machen. Solange wie ich auf das Geld warte, wenn ich dann nochmal /ausrauben mach wirkt halt der ausraubenday timer und er sagt mir das ich das nur 1x am tag machen kann. Hoffe das war verständlich :)

  • ähm wie meinst du das den zweiten timer im ersten? Sry für die dumme Frage aber ich bin wirklich newb im Scripten :) hoffe nimmst es mir net übel

  • Wenn ich mich nicht irre ist das ein Timer:


    public ausraubenday()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(AusraubenAlreadyDone[i] == 1)
    {
    format(string,sizeof(string),"* Du kannst die Bank nur 1 x am Tag ausrauben");
    SendClientMessage(i,COLOR_KNALLROT,string);
    SetTimer("ausraubenday",AusraubenDayWait,0);
    AusraubenAlreadyDone[i] = 0;
    return 1;
    }
    }
    }
    return 1;
    }


    So... Also ich glaube mal das alles was da steht erst nach der Zeit des Timers ausgeführt wird


    also startet der Timer


    SetTimer("ausraubenday",AusraubenDayWait,0);


    erst nach der Zeit des anderen Timers ;)