Feuerwehr System

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 Community,


    Ich brauch wieder Hilfe bei meinem Feuerwehr System


    In dem Letzttem Thread habe ich Hilfe bekommen wegen dem Duty sobald einer im Feuerwehr Dienst ist das das Feuer ausbricht und wen er off Duty geht das kein Feuer mehr aussbrechen wird
    Hier der Thread
    Feuer Alarm Problem


    So jetzt habe ich bei dem Befehl fwduty das mit dem Feuer = 0; eingefügt aber Trotzdem brich immer noch Feuer aus hier ist der Code


    ocmd:fwduty(playerid,params[])
    {
    #pragma unused params
    if(!IsPlayerInFrakt(playerid,12))return 1;
    if(!IsPlayerInRangeOfPoint(playerid,5,feuerwehrdutypoint))return ErrorMsg(playerid,"Hier nicht.");
    if(fwduty[playerid]==0)
    {
    //hier rein gehen
    fwduty[playerid]=1;
    SetPlayerSkin(playerid,277);
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,42,10000000);
    SetPlayerColor(playerid,COLOR_BRIGHTRED);
    SetPVarInt(playerid,"feuerwehrduty",1);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst begonnen.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    return 1;
    }
    if(fwduty[playerid]==1)
    {
    //hier aus dem dienst gehen
    fwduty[playerid]=0;
    Feuer = 0;
    SetPlayerColor(playerid,COLOR_WHITE);
    ResetPlayerWeapons(playerid);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst beendet.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    SetPlayerSkin(playerid,SpielerInfo[playerid][Skin]);
    }
    return 1;
    }


    Ich hoffe mir kann einer Helfen :)


    //Push

    2 Mal editiert, zuletzt von JOK3R () aus folgendem Grund: push

  • Also damit alle nomma klar kommen
    new Feuer; // Eine Variable erstellen, um zu überprüfen ob ein Feuer erstellt wurde


    public OnGameModeInit() {
    Feuer = 0;
    SetTimer("CheckFeuer",900000,true); // Ist ein Timer der jede 15 Mins ausgeführt wird
    return 1;
    }


    forward CheckFeuer();
    public CheckFeuer() {
    if(Feuer == 1) return 1; // Falls ein Feuer vorhanden ist wird kein neues mehr erstellt
    if(!IsFWDuty()) return 1; // Falls kein Feuerwehrmann OnDuty ist wird es übersprungen
    CreateFire(random(3));
    return 1;
    }


    public CreateFire(FeuerID) {
    for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) PlayAudioStreamForPlayer(i,"",1920.2426,-1636.9709,19.0122,100,0);
    Feuer = 1; // Feuer wird/wurde erstellt Variable auf 1 setzten.
    switch(ID) {
    case 0: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach in der {00FF00}LS Mall{FFFFFF} aus!");
    AddFire(1109.7426,-1518.5206,15.7969, random(100), 0);
    AddFire(1109.4607,-1517.0424,15.7969, random(100), 0);
    AddFire(1110.8823,-1518.2303,15.7969, random(100), 0);
    AddFire(1111.1472,-1519.8075,15.7969, random(100), 0);
    AddFire(1108.0875,-1516.2218,15.7969, random(100), 0);
    AddFire(1107.0024,-1516.8269,15.7969, random(100), 0);
    AddFire(1108.9535,-1514.8013,15.7969, random(100), 0);
    mx = 1109.7426;my=-1518.5206;mz=15.7969;
    }
    case 1: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach am {00FF00}LS Hospital{FFFFFF} aus!");
    AddFire(2017.7671,-1437.9889,14.3000, random(100), 0);
    AddFire(2019.3118,-1436.9531,14.3859, random(100), 0);
    AddFire(2019.1769,-1438.8497,14.7842, random(100), 0);
    AddFire(2018.9347,-1440.3239,15.0654, random(100), 0);
    AddFire(2020.1074,-1440.3599,15.3154, random(100), 0);
    AddFire(2021.1141,-1439.6196,15.3568, random(100), 0);
    AddFire(2023.2761,-1441.0536,16.1249, random(100), 0);
    mx=2017.7671;my=-1437.9889;mz=14.3000;
    }
    case 2: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach am {00FF00}LSPD{FFFFFF} aus!");
    AddFire(1486.9941,-1667.0309,14.5532, random(100), 0);
    AddFire(1486.4098,-1664.8375,14.5532, random(100), 0);
    AddFire(1487.9250,-1664.5344,14.5532, random(100), 0);
    AddFire(1484.6763,-1666.7335,14.5532, random(100), 0);
    AddFire(1482.4634,-1667.3370,14.5532, random(100), 0);
    AddFire(1482.3033,-1665.4377,14.5532, random(100), 0);
    AddFire(1483.2228,-1663.8508,14.5532, random(100), 0);
    mx=1486.9941;my=-1667.0309;mz=14.5532;
    }
    }
    Icon=1;
    SetMapIconsForAll();
    return 1;
    }

  • Nur nochmal zur Erklärung
    Also Bei meinem Feuerwehr System soll das Feuer nur ausbrechen Sobald man Feuerwehr Duty geht das auch Klappt.
    Wen man aus dem Dienst geht bricht trotzdem Weiterhin das Feuer aus Hier sind nochmal die Codes


    Spoiler anzeigen
    ocmd:fwduty(playerid,params[]){
    #pragma unused params
    if(!IsPlayerInFrakt(playerid,12))return 1;
    if(!IsPlayerInRangeOfPoint(playerid,5,feuerwehrdutypoint))return ErrorMsg(playerid,"Hier nicht.");
    if(fwduty[playerid]==0)
    {
    //hier rein gehen
    fwduty[playerid]=1;
    SetPlayerSkin(playerid,277);
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,42,10000000);
    SetPlayerColor(playerid,COLOR_BRIGHTRED);
    SetPVarInt(playerid,"feuerwehrduty",1);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst begonnen.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    return 1;
    }
    if(fwduty[playerid]==1)
    {
    //hier aus dem dienst gehen
    fwduty[playerid]=0;
    Feuer = 0;
    SetPlayerColor(playerid,COLOR_WHITE);
    ResetPlayerWeapons(playerid);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst beendet.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    SetPlayerSkin(playerid,SpielerInfo[playerid][Skin]);
    }
    return 1;
    }


    und das hier


    Spoiler anzeigen
    new Feuer; // Eine Variable erstellen, um zu überprüfen ob ein Feuer erstellt wurde

    Spoiler anzeigen
    public OnGameModeInit() {
    Feuer = 0;
    SetTimer("CheckFeuer",900000,true); // Ist ein Timer der jede 15 Mins ausgeführt wird
    return 1;
    }

    Spoiler anzeigen
    forward CheckFeuer();
    public CheckFeuer() {
    if(Feuer == 1) return 1; // Falls ein Feuer vorhanden ist wird kein neues mehr erstellt
    if(!IsFWDuty()) return 1; // Falls kein Feuerwehrmann OnDuty ist wird es übersprungen
    CreateFire(random(3));
    return 1;
    }

    Spoiler anzeigen
    public CreateFire(FeuerID) {
    for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) PlayAudioStreamForPlayer(i,"",1920.2426,-1636.9709,19.0122,100,0);
    Feuer = 1; // Feuer wird/wurde erstellt Variable auf 1 setzten.
    switch(ID) {
    case 0: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach in der {00FF00}LS Mall{FFFFFF} aus!");
    AddFire(1109.7426,-1518.5206,15.7969, random(100), 0);
    AddFire(1109.4607,-1517.0424,15.7969, random(100), 0);
    AddFire(1110.8823,-1518.2303,15.7969, random(100), 0);
    AddFire(1111.1472,-1519.8075,15.7969, random(100), 0);
    AddFire(1108.0875,-1516.2218,15.7969, random(100), 0);
    AddFire(1107.0024,-1516.8269,15.7969, random(100), 0);
    AddFire(1108.9535,-1514.8013,15.7969, random(100), 0);
    mx = 1109.7426;my=-1518.5206;mz=15.7969;
    }
    case 1: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach am {00FF00}LS Hospital{FFFFFF} aus!");
    AddFire(2017.7671,-1437.9889,14.3000, random(100), 0);
    AddFire(2019.3118,-1436.9531,14.3859, random(100), 0);
    AddFire(2019.1769,-1438.8497,14.7842, random(100), 0);
    AddFire(2018.9347,-1440.3239,15.0654, random(100), 0);
    AddFire(2020.1074,-1440.3599,15.3154, random(100), 0);
    AddFire(2021.1141,-1439.6196,15.3568, random(100), 0);
    AddFire(2023.2761,-1441.0536,16.1249, random(100), 0);
    mx=2017.7671;my=-1437.9889;mz=14.3000;
    }
    case 2: {
    FlamesLeft = 7;
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach am {00FF00}LSPD{FFFFFF} aus!");
    AddFire(1486.9941,-1667.0309,14.5532, random(100), 0);
    AddFire(1486.4098,-1664.8375,14.5532, random(100), 0);
    AddFire(1487.9250,-1664.5344,14.5532, random(100), 0);
    AddFire(1484.6763,-1666.7335,14.5532, random(100), 0);
    AddFire(1482.4634,-1667.3370,14.5532, random(100), 0);
    AddFire(1482.3033,-1665.4377,14.5532, random(100), 0);
    AddFire(1483.2228,-1663.8508,14.5532, random(100), 0);
    mx=1486.9941;my=-1667.0309;mz=14.5532;
    }
    }
    Icon=1;
    SetMapIconsForAll();
    return 1;
    }


    Das ist alles wo das Feuer benutzt wird.

  • Auf Anfrage in PN:


    Also ich sehe an dem Code nichts falsches, das sieht gut aus.
    Kannst du bitte erklären, welche Dinge du genau machst?


    Du gehst OnDuty, dann wird nach X Minuten ein Feuer gelegt, du löschst es und gehst dann OffDuty?
    Und dann kommt nach X Minuten wieder ein Feuer?
    Mit dieser Meldung im Chat (bzw. eine der anderen beiden)?
    SendClientMessageToAll(0xFFFFFFFF, "[Feueralarm] Ein {FF0000}Feuer{FFFFFF} brach in der {00FF00}LS Mall{FFFFFF} aus!");

  • Hey Jeffry,


    Ich war gestern mit ihm im TeamSpeak, und er hat mir das Prob genauer erklärt.
    Und zwar, wenn man " fwduty " geht kann Feuer ausbrechen, so und er will es so haben das wenn man nicht fwduty ist das kein Feuer Ausbricht. Aber mometan hat er das prob das wenn er aber fwduty off ist das immer noch feuer ausbricht und das will JOnny nicht. Er will es so haben das Feuer nur ausbricht wenn man fwduty ist. Bei ihm ist aber irgend wo ein Fehler das wenn er wieder fwduty off geht das das Feuer trozdem noch ausbricht obwohl es nicht so sein sollte.


    Nochmals leichter:
    - 1. Er geht fwduty "ON"
    - 2. Es bricht Feuer aus "Aber nur wenn man auch fwduty "ON" ist "
    - 3. Er löscht das Feuer
    - 4. Geht wieder fwduty "OFF"
    - 5. Und nun das prob, eig sollte kein Feuer mehr ausbrechen, weil er ja fwduty "OFF" ist aber es bricht trozdem noch feuer aus!


    Hoffe du verstehst was ich damit meine :)


    MfG soreX

  • Ok, dann soll er es so ausprobieren.
    forward CheckFeuer();
    public CheckFeuer() {
    printf("CheckFeuer aufgerufen. Feuer: %d | IsFWDuty: %d", Feuer, IsFWDuty());
    if(Feuer == 1) return 1; // Falls ein Feuer vorhanden ist wird kein neues mehr erstellt
    if(!IsFWDuty()) return 1; // Falls kein Feuerwehrmann OnDuty ist wird es übersprungen
    printf("Erstelle Feuer.");
    CreateFire(random(3));
    return 1;
    }


    stock IsFWDuty() {
    print("IsFWDuty aufgerufen.");
    for(new i = 0;i < MAX_PLAYERS;i++) {
    if(!IsPlayerConnected(i)) continue;
    printf("Spieler %d: fwduty: %d", i, fwduty[i]);
    if(fwduty[i]==1) return 1;
    }
    printf("Niemand.");
    return 0;
    }


    ocmd:fwduty(playerid,params[]){
    #pragma unused params
    if(!IsPlayerInFrakt(playerid,12))return 1;
    if(!IsPlayerInRangeOfPoint(playerid,5,feuerwehrdutypoint))return ErrorMsg(playerid,"Hier nicht.");
    if(fwduty[playerid]==0)
    {
    //hier rein gehen
    fwduty[playerid]=1;
    printf("DUTYCHANGEON: Spieler %d -> %d", playerid, fwduty[playerid]);
    SetPlayerSkin(playerid,277);
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,42,10000000);
    SetPlayerColor(playerid,COLOR_BRIGHTRED);
    SetPVarInt(playerid,"feuerwehrduty",1);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst begonnen.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    return 1;
    }
    if(fwduty[playerid]==1)
    {
    //hier aus dem dienst gehen
    fwduty[playerid]=0;
    printf("DUTYCHANGEOFF: Spieler %d -> %d", playerid, fwduty[playerid]);
    Feuer = 0;
    SetPlayerColor(playerid,COLOR_WHITE);
    ResetPlayerWeapons(playerid);
    format(string,sizeof(string),"HQ: %s hat den Feuerwehr-Dienst beendet.",SpielerName(playerid));
    feuerwehrMessage(COLOR_BLUE,string);
    SetPlayerSkin(playerid,SpielerInfo[playerid][Skin]);
    }
    return 1;
    }


    Genau nochmal die 5 Schritte machen, die du erklärt hast, und dann den Server Log posten, wenn das Feuer wieder fälschlicherweise ausbricht.

  • Jeffry
    So sorry für die Späte Antwort.


    Hier ist was in der Server_Log steht ^^


    [01:12:25] DUTYCHANGEON: Spieler 1 -> 1
    [01:26:18] IsFWDuty aufgerufen.
    [01:26:18] Spieler 0: fwduty: 1
    [01:26:18] CheckFeuer aufgerufen. Feuer: 0 | IsFWDuty: 1
    [01:26:18] IsFWDuty aufgerufen.
    [01:26:18] Spieler 0: fwduty: 1
    [01:26:18] Erstelle Feuer.
    [01:27:10] DUTYCHANGEOFF: Spieler 1 -> 0