Bankrob System bei Onplayerdeath

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 Breadfish


    Ich wollte es so scripten dass wenn man die Bank ausraubt und dabei stirbt dass der Bankraub abgebrochen wird. Irgendwie geht es nicht.


    Was mache ich falsch? :hm:



    if(strcmp(cmd, "/bankraub", true) == 0 || strcmp(cmd, "/bankrob", true) == 0)
    {
    if(PlayerInfo[playerid][pTot] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Tote können keine Befehle nutzen!");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid,2.0,2942.8362,-1769.3473,1178.4684))
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht in der Bank!");
    return 1;
    }
    if(IsACop(playerid) || PlayerInfo[playerid][pMember] == 22 || PlayerInfo[playerid][pLeader] == 22 ||PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pLeader] == 7)return SendClientMessage(playerid, COLOR_RED, "Du bist in einer Staatlichen Fraktion!");
    new Cops = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)
    {
    Cops += 3;
    }
    }
    }
    if(Cops < 4)// Anzahl von Polizisten die online sein müssen
    {
    SendClientMessage(playerid, rot, "Es sind nicht genug Polizisten online!");
    return 1;
    }
    if(rob == 1)
    {
    SendClientMessage(playerid,0xAA3333AA,"Die Bank wurde gerade erst überfallen!");
    return 1;
    }
    rob = 1;
    SetTimer("Rob_Reset",7200000,0); // Nach 120 Minuten erst wieder ausrauben
    SetTimerEx("Rob_UnFreeze",600000,0,"i",playerid); // Nach 10 Minuten Bank überfallen
    SetPlayerAttachedObject(playerid, 1, 1550, 1, 0.018999, -0.270000, -0.027000, 1.099999, 89.999992, 158.299942, 1.000000, 1.000000, 1.000000); // Skin 4


    OnPlayerCommandText(playerid,"/s Das ist ein Überfall alle auf dem Boden sofort!!!!");
    OnPlayerCommandText(playerid,"/s Hände weg von dem Knopf oder du verlierst dein Kopf!!!");
    SendClientMessage(playerid,rot,"Verlasse die Bank nicht bevor das Geld eingepackt worden ist!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_ORANGE,"HQ: Achtung Alle Einheiten! Eine Meldung vom Bank Security System!");
    SendClientMessage(i,COLOR_ORANGE,"HQ: Verbrechen: Banküberfall, Gesuchter: Unbekannt");
    SendClientMessage(i,COLOR_ORANGE,"HQ: Begeben sie sich sofort zur Los Santos Bank!");
    }
    }
    }
    return 1;
    }



    Function Rob_UnFreeze(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,35.0,2942.8362,-1769.3473,1178.4684))
    {
    new randmoney = 350000+ random(30000);
    GivePlayerMoney(playerid,randmoney);
    new string[128];
    format(string,sizeof(string),"{FFFFFF}Du hast {009933}%d$ {FFFFFF}ausgeraubt!",randmoney);
    SendClientMessage(playerid,COLOR_WHITE,string);
    if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
    SetTimerEx("Rob_Cop",30000+random(10000),0,"i",playerid); // Nach 1 minute
    }
    else
    {
    SendClientMessageToAll(ORANGE,"News: Der Bankraub wurde soeben von dem Räuber abgebrochen.");
    SendClientMessage(playerid,rot," Du hast die Bank Verlassen. Der Bankraub wurde abgebrochen");
    if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
    return 1;
    }
    return 1;
    }



    if(PlayerInfo[playerid][Rob_UnFreeze] == true) //<----- Das Habe ich bei OnplayerDeath geschrieben aber genau das hier klappt nicht.
    {
    SendClientMessageToAll(orange,"News: Die Polizei könnte den Bankräuber töten.");
    SendClientMessage(playerid,rot,"Du bist am Bankraub gestorben.");
    SetTimer(Playerinfo[playerid][Rob_Reset]);
    rob = 0;
    Playerinfo[playerid][Rob_UnFreeze] = false;
    }

  • Du setzt Playerinfo[playerid][Rob_UnFreeze] nicht auf true somit ist die abfrage niemals wahr. Zumal mich es überhaupt wundert das es kompiliert da der Name das Callbacks gleich ist mit der der Variable

  • Du fragst ja ab ob Playerinfo[playerid][Rob_UnFreeze] true ist jedoch setzt du vorher beim Raub oder sonst wo die variable nicht auf true somit kann das nicht Funktioneren da Variablen den Wert 0 bzw false (bool) erhalten sofern man keinen anderen Wert zuweist.

  • Also Das Ganze Bankraub System.


    Wie schreibe ich es jetzt bei onplayerdeath? Also dass wenn der Räuber stirbt egal wo. Wenn der Bankräuber stirbt soll der Bankraub abgebrochen werden da er tot ist



    new rob;



    if(strcmp(cmd, "/bankraub", true) == 0 || strcmp(cmd, "/bankrob", true) == 0)
    {
    if(PlayerInfo[playerid][pTot] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Tote können keine Befehle nutzen!");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid,2.0,2942.8362,-1769.3473,1178.4684))
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht in der Bank!");
    return 1;
    }
    if(IsACop(playerid) || PlayerInfo[playerid][pMember] == 22 || PlayerInfo[playerid][pLeader] == 22 ||PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pLeader] == 7)return SendClientMessage(playerid, COLOR_RED, "Du bist in einer Staatlichen Fraktion!");
    new Cops = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)
    {
    Cops += 3;
    }
    }
    }
    if(Cops < 0)// Anzahl von Polizisten die online sein müssen
    {
    SendClientMessage(playerid, rot, "Es sind nicht genug Polizisten online!");
    return 1;
    }
    if(rob == 1)
    {
    SendClientMessage(playerid,0xAA3333AA,"Die Bank wurde gerade erst überfallen!");
    return 1;
    }
    rob = 1;
    SetTimer("Rob_Reset",7200000,0); // Nach 120 Minuten erst wieder ausrauben
    SetTimerEx("Rob_UnFreeze",20000,0,"i",playerid);
    SetPlayerAttachedObject(playerid, 1, 1550, 1, 0.018999, -0.270000, -0.027000, 1.099999, 89.999992, 158.299942, 1.000000, 1.000000, 1.000000);


    OnPlayerCommandText(playerid,"/s Das ist ein Überfall alle auf dem Boden sofort!!!!");
    OnPlayerCommandText(playerid,"/s Hände weg von dem Knopf oder du verlierst dein Kopf!!!");
    SendClientMessage(playerid,rot,"Verlasse die Bank nicht bevor das Geld eingepackt worden ist!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_ORANGE,"HQ: Achtung Alle Einheiten! Eine Meldung vom Bank Security System!");
    SendClientMessage(i,COLOR_ORANGE,"HQ: Verbrechen: Banküberfall, Gesuchter: Unbekannt");
    SendClientMessage(i,COLOR_ORANGE,"HQ: Begeben sie sich sofort zur Los Santos Bank!");
    }
    }
    }
    return 1;
    }




    Function Rob_UnFreeze(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,20,2942.8362,-1769.3473,1178.4684))
    {
    new randmoney = 350000+ random(30000);
    GivePlayerMoney(playerid,randmoney);
    new string[128];
    format(string,sizeof(string),"{FFFFFF}Du hast {009933}%d$ {FFFFFF}ausgeraubt!",randmoney);
    SendClientMessage(playerid,COLOR_WHITE,string);
    if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
    SetTimerEx("Rob_Cop",30000+random(10000),0,"i",playerid);
    }
    else
    {
    SendClientMessageToAll(ORANGE,"News: Der Bankraub wurde soeben von dem Räuber abgebrochen.");
    SendClientMessage(playerid,rot," Du hast die Bank Verlassen. Der Bankraub wurde abgebrochen");
    if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
    return 1;
    }


    return 1;
    }




    Function Rob_Reset()
    {
    rob = 0;
    return 1;
    }