Bankrob Vorgang abbrechen wenn man stirbt!

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
  • Also ich weiß nicht wie man denn Bankrob Vorgang abbricht wenn man stirbt, so sieht der Script aus:



    //====[ FORWARDS ]====//
    forward robbanktimer(playerid,i);


    //====[ COLORS ]======//
    #define rob_message 0x0000C1FF
    #define COLOR_GREY 0xAFAFAFAA
    #define COLOR_RED 0xE10000FF
    #define COLOR_LIGHTBLUE 0x33CCFFAA


    // hab das als ocmd befehl gemacht, da ich glaub leichter ist
    ocmd:robbank(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,15,2309.4956,-8.3965,26.7422)) // Die koordinaten. Denke 15 meter reichen xP
    {
    TogglePlayerControllable(playerid, false);
    SetTimer("robbanktimer", 60000, 0);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Du hast die Bank überfallen, die Polizei wurde Alarmiert!");
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Der überfall dauert 1 Minute!");
    SetPlayerWantedLevel(playerid,4);


    if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,4)) // Frak 1 LSPD | Frak 4 ist FBI
    {
    SendClientMessageToAll(rob_message,"HQ: An alle Einheiten, die Bank von LS wird überfallen!");
    }
    }
    else SendClientMessage(playerid,COLOR_GREY,"Zurzeit befindes du dich nicht in der Bank von LS!");
    return 1;
    }


    // Der Public wegm Timer =D
    public robbanktimer(playerid)
    {
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid,ROT,"* Du hast die Bank erfolgreich Überfallen!");
    GivePlayerMoney(playerid,16000);
    return 1;
    }

  • Zuallererst wird das so garnicht Funktionieren, da beim Timer kein Spieler eingetragen ist.
    Mach das mal so:
    //====[ FORWARDS ]====//
    forward robbanktimer(playerid,i);


    //====[ VARIABLEN ]======//
    new robtimer[MAX_PLAYERS];


    //====[ COLORS ]======//
    #define rob_message 0x0000C1FF
    #define COLOR_GREY 0xAFAFAFAA
    #define COLOR_RED 0xE10000FF
    #define COLOR_LIGHTBLUE 0x33CCFFAA


    // hab das als ocmd befehl gemacht, da ich glaub leichter ist
    ocmd:robbank(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,15,2309.4956,-8.3965,26.7422)) // Die koordinaten. Denke 15 meter reichen xP
    {
    TogglePlayerControllable(playerid, false);
    robtimer[playerid] = SetTimerEx("robbanktimer", 60000, 0, "d", playerid);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Du hast die Bank überfallen, die Polizei wurde Alarmiert!");
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Der überfall dauert 1 Minute!");
    SetPlayerWantedLevel(playerid,4);


    if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,4)) // Frak 1 LSPD | Frak 4 ist FBI
    {
    SendClientMessageToAll(rob_message,"HQ: An alle Einheiten, die Bank von LS wird überfallen!");
    }
    }
    else SendClientMessage(playerid,COLOR_GREY,"Zurzeit befindes du dich nicht in der Bank von LS!");
    return 1;
    }


    // Der Public wegm Timer =D
    public robbanktimer(playerid)
    {
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid,ROT,"* Du hast die Bank erfolgreich Überfallen!");
    GivePlayerMoney(playerid,16000);
    return 1;
    }
    Erklärungen:
    new robtimer[MAX_PLAYERS]; // Timevariable für die Spieler erstellen
    robtimer[playerid] = SetTimerEx("robbanktimer", 60000, 0, "d", playerid); // Timer für den Spieler einstellen.


    Und um den Bankraub dann abzubrechen, nimmst du das:
    KillTimer(robtimer[playerid]);

  • Hab ich gemacht, nun hab ich das Problem, dass wenn ich sterbe immer steht, Der Bankräuber ist gestorben blabla... auch wenn man nicht die bank ausgeraubt hat

  • public OnPlayerDeath(playerid, killerid, reason)
    {
    //...
    if(robtimer[playerid])
    {
    SendClientMessage(..., ..., "Der Bankräuber ist gestorben!");
    }
    //...
    KillTimer(robtimer[playerid]);
    robtimer[playerid] = 0;
    //...
    }
    Die Punkte mit dem ausfüllen, was eben richtig ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen