Bank Rob System

  • Bank Rob System

    Hallo,

    ich bräuchte etwas Hilfe bei meinem Bank Rob System.
    Die Grundstrucktur ist gemacht, wenn playerid /brob eingibt,
    dann startet ein Timer. Wenn er den Timer überstanden hat bekommt
    er das Geld.
    Nun möchte ich aber, falls er die Bank verlässt, dass der Bank Rob fehlgeschlagen sein soll.

    Code:
    [pwn]ocmd:brob(playerid,params[])
    {
    SetTimer("BankRob",300000,false);
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Bleibe 5 Minuten in der Bank um das Geld zu erbeuten. Doch passe auf, die Polizei ist bereits verständigt.");
    SetPlayerWantedLevel(playerid,4);
    SpielerSpeichern(playerid);
    return 1;
    }

    forward BankRob(playerid);

    public BankRob(playerid)
    {
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Du hast erfolgreich die Bank ausgeraubt und bist nun um 50.000$ reicher.");
    GivePlayerMoney(playerid,50000);
    SpielerSpeichern(playerid);
    return 1;
    }
    [/pwn]

    Enter/Exit System:
    [pwn] if(pickupid==bankenter)
    {
    SetPlayerPos(playerid,2307.4478,-16.0218,26.7496);
    }
    if(pickupid==bankexit)
    {
    SetPlayerPos(playerid,596.5535,-1245.7843,18.1913);
    }[/pwn]

    Neu im Bereich Pawn? Du kommst nicht klar? Du bist verwirrt und möchtest endlich scripten können?
    Klick mich für mehr Informationen.
  • ganz oben:

    [pwn]new BankRobTimer[MAX_PLAYERS];[/pwn]

    dann deinen code so machen:

    [pwn]ocmd:brob(playerid,params[])
    {
    BankRobTimer[playerid] = SetTimerEx("BankRob",300000,false, "d", playerid);
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Bleibe 5 Minuten in der Bank um das Geld zu erbeuten. Doch passe auf, die Polizei ist bereits verständigt.");
    SetPlayerWantedLevel(playerid,4);
    SpielerSpeichern(playerid);
    return 1;
    }

    forward BankRob(playerid);
    public BankRob(playerid)
    {
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Du hast erfolgreich die Bank ausgeraubt und bist nun um 50.000$ reicher.");
    GivePlayerMoney(playerid,50000);
    SpielerSpeichern(playerid);
    return 1;
    }[/pwn]

    dann unter OnGameModeInit:

    [pwn]SetTimer("PositionsCheck", 1000, true);[/pwn]

    und dann

    [pwn]forward PositionsCheck();
    public PositionsCheck()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerInterior(i) != BANK-INTERIORID HIER EINFÜGEN)
    {
    KillTimer(BankRobTimer);
    // belibiger Text halt noch
    }
    }
    return 1;
    }[/pwn]
  • Das frisst dann aber wegen
    [pwn]SetTimer("PositionsCheck", 1000, true);[/pwn]
    Ressourcen oder?

    Und würde das hier so auch gehen?
    [pwn]public PositionsCheck(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,20,2315.952880,-1.618174,26.742187))
    {
    KillTimer(BankRobTimer);
    SendClientMessage(playerid,ROT,"[Bank Raub Information]{FFFFFF} Der Bank Raub ist fehlgeschlagen, da du die Bank verlassen hast.");
    }
    }
    return 1;
    }[/pwn]

    Weil die Interior ID der Bank ist 0.

    Neu im Bereich Pawn? Du kommst nicht klar? Du bist verwirrt und möchtest endlich scripten können?
    Klick mich für mehr Informationen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [21]Code ()

  • woher nimmst du das playerid? Du kannst nicht SetTimer machen und dann playerid einfach verwenden.
    Naja, soviele Ressourcen frisst es nicht, OnPlayerUpdate frisst 100x mehr Ressourcen.

    & hatte nen Fehler, da müsstest du noch sowas ganz oben einbauen:

    [pwn]new isAtBankRob[MAX_PLAYERS];[/pwn]

    dan ndeinen befehl so machen:

    [pwn]ocmd:brob(playerid,params[])
    {
    BankRobTimer[playerid] = SetTimerEx("BankRob",300000,false, "d", playerid);
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Bleibe 5 Minuten in der Bank um das Geld zu erbeuten. Doch passe auf, die Polizei ist bereits verständigt.");
    SetPlayerWantedLevel(playerid,4);
    isAtBankRob[playerid] = 1;
    SpielerSpeichern(playerid);
    return 1;
    }

    forward BankRob(playerid);
    public BankRob(playerid)
    {
    SendClientMessage(playerid,Grün,"[Bank Raub Information]{FFFFFF} Du hast erfolgreich die Bank ausgeraubt und bist nun um 50.000$ reicher.");
    GivePlayerMoney(playerid,50000);
    SpielerSpeichern(playerid);
    isAtBankRob[playerid] = 0;
    return 1;
    }



    public PositionsCheck()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isAtBankRob == 1)
    {
    if(!IsPlayerInRangeOfPoint(i,20,2315.952880,-1.618174,26.742187))
    {
    KillTimer(BankRobTimer[i]);
    SendClientMessage(i,ROT,"[Bank Raub Information]{FFFFFF} Der Bank Raub ist fehlgeschlagen, da du die Bank verlassen hast.");
    isAtBankRob[i] = 0;
    }
    }
    }
    return 1;
    }
    [/pwn]

    Das ganze heißt:
    Wenn er den Command /brob nutzt, wird ein Timer für den gestartet, der den Bankrob gestartet hat.
    a.) Wenn er dort bleibt die 30 Minuten oder Sekunden kp wie du das hast, dann bekommt er das Geld und die Variable, isPlayerAtBankRob, wird auf 0 gesetzt.
    b.) Wenn er aus dem "Point" rausgeht, wird die Variable, isPlayerAtBankRob, auf 0 gesetzt und sein Timer wird "gekillt".

    Teste es mal, wenn was falsch ist, melden.

    Lg