Server schmiert bei Bombe ab

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
  • Hi,
    ich habe versucht einen Bomben Befehl zu erstellen, mit einem Timer der mehrere Explosionen verursacht.
    Doch der Server schmiert nach der ersten Explosion ab. Was habe ich falsch gemacht?
    public detonation()
    {
    new bombennachricht[256];
    format(bombennachricht, sizeof(bombennachricht), "Die Bombe ist detoniert, der Bombenleger war %s", bombenleger);
    SendClientMessageToAll(COLOR_RED, bombennachricht);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 100350);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 100350);
    CreateExplosion(b1,b2,b3, 7, 103050);
    SetTimerEx("bombe1", 2000, 0);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    DisablePlayerCheckpoint(i);
    }
    DestroyPickup(bombe);
    return 0;
    }

    public bombe1()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    SetTimerEx("bombe2", 3000, 0);
    }


    public bombe2()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    SetTimerEx("bombe3", 4000, 0);
    }


    public bombe3()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    }

  • Wie hast du b1 usw. definiert? Außerdem,
    format(bombennachricht, sizeof(bombennachricht), "Die Bombe ist detoniert, der Bombenleger war %s", bombenleger);
    speicherst du den Namen des Bombenlegers? Ansonsten würde ich evtl das SetTimerEx durch SetTimer ersetzen ^^

  • /E: Habs jetzt hinbekommen, jedoch laggt es nach der Bombe total.. Laufen irgendwelche Timer weiter oder so?
    public detonation()
    {
    new bombennachricht[256];
    format(bombennachricht, sizeof(bombennachricht), "Die Bombe ist detoniert, der Bombenleger war %s", bombenleger);
    SendClientMessageToAll(COLOR_RED, bombennachricht);
    SetTimer("bombe1", 100, 0);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    DisablePlayerCheckpoint(i);
    }
    DestroyPickup(bombe);
    return 0;
    }


    public bombe1()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    SetTimer("bombe2", 1000, 0);
    }


    public bombe2()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    SetTimer("bombe3", 2500, 0);
    }


    public bombe3()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+800,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+2000,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3+476, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3+344,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1+534,b2+1000,b3, 7, 13050);
    SetTimer("bombe4", 3500, 0);
    }


    public bombe4()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+500,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3, 7, 13050);
    SetTimer("bombe5", 4000, 0);
    }


    public bombe5()
    {
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+800,b2,b3,7, 10350);
    CreateExplosion(b1-5,b2,b3,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+2000,b2,b3,7, 10350);
    CreateExplosion(b1,b2,b3+476, 7, 13050);
    CreateExplosion(b1+500,b2,b3,7, 100350);
    CreateExplosion(b1-5,b2,b3+344,7, 100050);
    CreateExplosion(b1,b2,b3, 7, 103050);
    CreateExplosion(b1+200,b2,b3,7, 10350);
    CreateExplosion(b1+534,b2+1000,b3, 7, 13050);
    }


    if(strcmp(cmdtext, "/bombe", true) == 0)
    {
    if(gTeam[playerid] == 12)
    {
    if (bomb == 0)
    {
    GetPlayerName(playerid, bombenleger, sizeof(bombenleger));
    GetPlayerPos(playerid, b1, b2, b3);
    bombe = CreatePickup(1252 ,1, b1+2,b2,b3);
    deto = SetTimer("detonation", 30000, 0);
    countdowns = SetTimer("count_down", 295000, 0);
    countdown = 1;
    bomb = 1;
    SetPlayerColor(playerid, COLOR_RED);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPlayerCheckpoint(i, b1,b2,b3,600);
    }
    SetTimer("bombabkling", 7200000, 0);
    SendClientMessage(playerid, COLOR_GREEN, "Du hast eine Bombe gelegt die in 5 Minuten explodiert!");
    SendCopMessage(COLOR_RED, "==================[Alarmstufe : ROT]=====================");
    SendCopMessage(COLOR_RED, "Eine Bombe wurde gelegt. In 5 Minuten wird sie explodieren!");
    SendCopMessage(COLOR_RED, "Mit /defuse kannst du diese Bombe entschärfen!");
    SendCopMessage(COLOR_RED, "Ein Rang 5 Mitglied ist verflichtet Infos zum Standort zu geben!");
    SendCopMessage(COLOR_RED, "==================[Alarmstufe : ROT]=====================");
    SendCopMessage(COLOR_GREY, "Der Bombenleger ist jetzt ROT markiert, so können sie die Bombe finden!");
    SendClientMessageToAll(COLOR_RED, "STAAT: Es wurde eine Bombe gelegt, die Polizei wird weitere Infos geben!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Bombenlegen ist nur alle 2 Stunden möglich !");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast keine Bombe und weißt nicht wie sowas geht !");
    }
    return 1;
    }

    Einmal editiert, zuletzt von JayTheSheep ()

  • Zitat

    Doch der Server schmiert nach der ersten Explosion ab. Was habe ich falsch gemacht?


    Da musste ich lachen... xD Kauf das FührerRechner-Gehäuse. Baujahr 1940 und sehr stabil... ;D


    Nun aber zum Thema...
    SetTimerEx("Name",Zeit,Wiederholung,"Vaiablentypen, die übergeben werden sollen (i->Integer, f->Float,s->String etc),jeweilige Vaiablen);


    Brauchst dann aber auch:
    forward Name(Übergebene Variablen, jeweils mit , getrennt und bei speziellen Variablen Definition (float,[] etc));


    und
    public Name(Übergebene Variablen, jeweils mit , getrennt und bei speziellen Variablen Definition (float,[] etc)

  • Auch wenn es nicht besonders schön geschrieben wurde, ganz sicher das du nicht Server Lags mit Clienten Lags verwechselst? Ich meine, wenn dein GTA ruckelt, bedeutet es nur, dass deine Explosionen zuviel sind...

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!