Bombe.

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 liebes Breadfish,
    Ich hab bisschen das Bomben Script von meinem Godfather verbessert/geändert. Aber wenn ich eine Bombe per /bombelegen plante liegt sie auf dem Boden und wenn sie explodiert / defused ist bleibt die Bombe einfach auf dem Boden liegen bis Server Restart könnt ihr mir dabei vlt helfen?



    So sieht´s aus sie liegt auf dem Boden statt sie so schwebt.


    Sie soll genau wie ein normales Pickup schweben.



    Wenn eine Bombe gelegt wird:
    switch(row)//rot,gelb,grün,blau
    {
    case 0://rot
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den ROTEN Draht genommen!");
    bombe = CreateDynamicObject(1252, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]-0.85, 0.0000, 0.0000, 0.0000);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 1;
    bombdraht2 = 0;
    bombdraht3 = 0;
    bombdraht4 = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    if(IsPlayerInFrac(i, 22))
    {


    /defuse
    if(strcmp(cmd, "/defuse", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]))
    {
    if(IsACop(playerid))
    {
    if(Bombactivated==1)
    {
    //Bombtimer(10,playerid);
    ShowMenuForPlayer(Menu:BOMBD,playerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht befugt!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht bei der Bombe!");
    }
    }


    Bombe legen.
    if(strcmp(cmd, "/bombe", true) == 0 || strcmp(cmd, "/bombelegen", true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 20 || PlayerInfo[playerid][pLeader] == 20)
    {
    if(BombStatus == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Du kannst nur alle 15 min eine Bombe legen.");
    }
    else if(GetPlayerInterior(playerid) > 0)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Das ist ein schlechter Ort für eine Bombe...");
    }
    else
    {
    ShowMenuForPlayer(Menu:BOMB,playerid);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Mitglied der AlQaida!");
    }
    return 1;
    }

  • Du musst ein Pickup erstellen, anstatt ein Object. Außerdem musst du das Pickup dann wieder destroyen, wenn diese explodiert oder defused wird :thumbup:

  • CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);

  • Beitrag von Kinimod ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Okay, also wenn ich das so mache bei /bombelegen


    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);



    Dann muss ich das so bei /defuse so machen damit das Pickup sich automatisch löscht nach dem /defuse
    DestroyPickup(pickup_bombe);


    oder?

  • Nein, wenn dann nur bombe.
    Hinweis: Du kannst aber nur maximal eine Bombe legen :thumbup:

  • Okay danke aber wenn ich /defuse mache, wird zwar das bomben Pickup gelöscht aber nach 10min c.a explodiert die Bombe..


    if(strcmp(cmd, "/defuse", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]))
    {
    if(IsACop(playerid))
    {
    if(Bombactivated==1)
    {
    //Bombtimer(10,playerid);
    ShowMenuForPlayer(Menu:BOMBD,playerid);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht befugt!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht bei der Bombe!");
    }
    }


    Function Bombtimer(time,playerid)
    {
    new string[8];
    format(string,sizeof(string),"%d",time);
    GameTextForPlayer(playerid,string,1000,4);
    if(time>0)
    {
    time--;
    bombtimer = SetTimerEx("Bombtimer",1000,0,"ii",time,playerid);
    }
    else
    {
    DestroyObject(bombe);
    SetTimer("Abkling", 120000 , 0);
    KillTimer(bombtimer);
    KillTimer(bombexplotimer);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessageToAll(COLOR_BM,string);
    GameTextForPlayer(i,"Bombe entschaerft!",1000,4);
    GangZoneStopFlashForPlayer(i,bombzone);
    GangZoneHideForPlayer(i,bombzone);
    GangZoneDestroy(bombzone);
    DestroyPickup(bombe);
    Bombactivated=0;
    }
    }
    }
    }

  • Function Bombtimer(time,playerid)
    {
    new string[8];
    format(string,sizeof(string),"%d",time);
    GameTextForPlayer(playerid,string,1000,4);
    if(time>0)
    {
    time--;
    bombtimer = SetTimerEx("Bombtimer",1000,0,"ii",time,playerid);
    }
    else
    {
    SetTimer("Abkling", 120000 , 0);
    KillTimer(bombtimer);
    KillTimer(bombexplotimer);
    SendClientMessageToAll(COLOR_BM,string);
    GangZoneDestroy(bombzone);
    DestroyPickup(bombe);
    Bombactivated=0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    GameTextForPlayer(i,"Bombe entschaerft!",1000,4);
    GangZoneStopFlashForPlayer(i,bombzone);
    GangZoneHideForPlayer(i,bombzone);
    }
    }
    }
    return 1;
    }


    Das wird aber nicht den Fehler beheben, sondern nur eine Reihe anderer Fehler.


    Poste bitte den Code der nach dem Anzeigen des Menüs bis zur Explosion kommt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • new Menu:CurrentMenu = GetPlayerMenu(playerid);
    if(CurrentMenu == BOMB)
    {
    switch(row)//rot,gelb,grün,blau
    {
    case 0://rot
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den ROTEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 1;
    bombdraht2 = 0;
    bombdraht3 = 0;
    bombdraht4 = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    if(IsPlayerInFrac(i, 22))
    {
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Es wurde eine Bombe gelegt!");
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Das Gebiet blinkt rot - grün.");
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Begeben sie sich sofort zur Basis!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    }
    case 1://gelb maul kadoffel
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den GELBEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 1;
    bombdraht3 = 0;
    bombdraht4 = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    case 2://grün
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den GRÜNEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 0;
    bombdraht3 = 1;
    bombdraht4 = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    case 3://blau
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den BLAUEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 0;
    bombdraht3 = 0;
    bombdraht4 = 1;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    }
    }

  • new Menu:CurrentMenu = GetPlayerMenu(playerid);
    if(CurrentMenu == BOMB)
    {
    switch(row)//rot,gelb,grün,blau
    {
    case 0://rot
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den ROTEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 1;
    bombdraht2 = 0;
    bombdraht3 = 0;
    bombdraht4 = 0;
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    if(IsPlayerInFrac(i, 22))
    {
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Es wurde eine Bombe gelegt!");
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Das Gebiet blinkt rot - grün.");
    SendClientMessage(i, COLOR_RED, "ZENTRALE: Begeben sie sich sofort zur Basis!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    }
    case 1://gelb maul kadoffel
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den GELBEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 1;
    bombdraht3 = 0;
    bombdraht4 = 0;
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    case 2://grün
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den GRÜNEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 0;
    bombdraht3 = 1;
    bombdraht4 = 0;
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    case 3://blau
    {
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bombe wurde gelegt! Du hast den BLAUEN Draht genommen!");
    bombe = CreatePickup(1252,1,PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1],-1);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    bombexplotimer = SetTimerEx("bombexplode",300000,0,"i",playerid);
    BombStatus = 1;
    Bombactivated=1;
    bombdrahtchoosen = 1;
    bombdraht1 = 0;
    bombdraht2 = 0;
    bombdraht3 = 0;
    bombdraht4 = 1;
    bombzone = GangZoneCreate(PlayerExplosionX[1]-random(60), PlayerExplosionY[1]-random(60), PlayerExplosionX[1]+random(60), PlayerExplosionY[1]+random(60));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"BOMBENALARM: Es wurde eine Bombe gelegt!");
    GangZoneShowForPlayer(i,bombzone,COLOR_RED);
    GangZoneFlashForPlayer(i,bombzone,COLOR_GREEN);
    }
    }
    }
    }
    }


    Teste es mal. Ich glaube nicht, dass es funktioniert, weil hier immer noch Code fehlt.
    Außerdem ist der Code wirklich chaotisch.



    Wenn es immer noch explodiert, kannst du ja vor dr Explosion das einfügen:
    if(Bombactivated == 0) return 1;