Feuerwehrscript

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
  • da unser Feuerwehr script total langweilig ist wollte ich mal fragen ob es möglich ist


    Zitat

    ZITAT AUS MEINEM COMMUFORUM


    Einerseitz der Kleinbrannt der sich schnell Ausbreiten kann und auch auf Fahrzeuge überspringt. Dieser Brannt muss von Usern gemeldet werden.


    Und andererseitz der Hausbrannt. Der von Alarm meldern gemeldet wird und sich durch Wind rasend Schnell ausbreitet. Leider kann es dabei auch zu Fehl alarmen kommen ;)

    wenn ja könnte mir wer sagen wie ich das umsetze am besten?also das es auch ein zufallsprinzip gibt wie im SP bei den feuerwehr missionen nur das auch häuser dabei sind?

  • Ich hatte da mal was angefangen, nur ist irgendwo ein Array index out of bound.
    Müsstest du finden und fixen:
    #include <a_samp>
    forward GlobalTimer();
    new Float:hydranten[][4] = {
    /* X Y Z Durchfluss */
    { 2716.53, 862.06, 10.89, 140.0}
    };
    new Float:Feuer1_unten[][3] = {
    { 2695.6721,821.8301,10.9545 },
    { 2692.6096,821.8650,10.9545 },
    { 2689.1851,821.7084,10.9545 },
    { 2686.6284,823.8589,10.9545 },
    { 2687.2573,827.3737,10.9545 },
    { 2685.4519,835.7369,11.0283 },
    { 2682.0549,835.9455,8.8181 },
    { 2684.2095,835.6848,8.8181 },
    { 2633.3572,801.0260,5.3158 },
    { 2632.5486,798.3673,5.3158 },
    { 2637.2576,791.2891,5.3433 },
    { 2649.5320,806.3348,5.3158 }
    }, Float:Feuer1_oben[][3] = {
    { 2688.2632,821.3648,13.7127 },
    { 2692.8750,821.8119,13.7127 },
    { 2695.9998,821.7861,13.7127 },
    { 2698.5425,821.9093,13.7127 },
    { 2701.2441,820.6647,13.7127 },
    { 2701.3801,818.3001,13.7127 },
    { 2701.3647,815.0685,13.7127 }
    }, bool:geloescht_brand_1_unten[sizeof Feuer1_unten], bool:geloescht_brand_1_oben[sizeof Feuer1_oben], TankInCar[32],
    FWWid[8], bool:Fahrzeugloescht[8], feuergeloescht_1_unten[sizeof Feuer1_unten],
    feuergeloescht_1_oben[sizeof Feuer1_oben];
    stock Float:GetDistance2(Float:x1, Float:x2, Float:y1, Float:y2, Float:z1, Float:z2)
    {
    return floatsqroot(floatpower(floatabs(x1 - x2), 2) + floatpower(floatabs(y1 - y2), 2) + floatpower(floatabs(z1 - z2), 2));
    }
    main()
    {
    print("\n----------------------------------");
    print(" Feuerwehr");
    print("----------------------------------\n");
    }


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Feuerwehr");
    SetTimer("GlobalTimer", 1000, 1);
    AddPlayerClass(278,1774.7996,2072.0164,10.8203,139.9539,0,0,0,0,0,0); // fd_spawn
    FWWid[0] = CreateVehicle(407,1751.3673,2077.7161,11.0571,180.5025,3,3, -1); // tlf_1
    TankInCar[FWWid[0]] = 1200;
    FWWid[1] = CreateVehicle(407,1757.7097,2077.8093,11.0548,181.5029,3,3, -1); // tlf_2
    TankInCar[FWWid[1]] = 1200;
    FWWid[2] = CreateVehicle(416,1763.5522,2075.7500,10.9703,180.9251,3,3, -1); // rtw
    FWWid[3] = CreateVehicle(544,1770.7786,2076.9077,10.9697,181.1622,3,3, -1); // dl_1
    FWWid[4] = CreateVehicle(596,1739.3901,2073.9590,10.5402,236.1482,3,3, -1); // kw_1
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public GlobalTimer()
    {
    new Float:each[3], x[64];
    for(new i = 0; i < sizeof Feuer1_unten; i++)
    {
    if(geloescht_brand_1_unten[i] == false)
    {
    CreateExplosion(Feuer1_unten[i][0], Feuer1_unten[i][1], Feuer1_unten[i][2], 2, 2.0);
    }
    }
    for(new i = 0; i < sizeof Feuer1_oben; i++)
    {
    if(geloescht_brand_1_oben[i] == false)
    {
    CreateExplosion(Feuer1_oben[i][0], Feuer1_oben[i][1], Feuer1_oben[i][2], 2, 2.0);
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInAnyVehicle(i) && GetVehicleModel(GetPlayerVehicleID(i)) == 407)
    {
    i = GetPlayerVehicleID(i);
    if(Fahrzeugloescht[i] == true)
    {
    format(x , sizeof x , "%d 2tank2", TankInCar[i]);
    SendClientMessageToAll(0xFF0000AA, x);
    if(TankInCar[i] > 80)
    {
    TankInCar[i] -= random(80);
    format(x , sizeof x , "%d tank", TankInCar[i]);
    SendClientMessageToAll(0xFF0000AA, x);
    GetVehiclePos(i, each[0], each[1], each[2]);
    for(new j = 0; j < sizeof Feuer1_oben; i++)
    {
    if(GetDistance2(each[0], Feuer1_oben[j][0], each[1], Feuer1_oben[j][1], each[0], Feuer1_oben[j][2]) < 50.0 &&
    geloescht_brand_1_oben[j] == false)
    {
    feuergeloescht_1_oben[j]++;
    if(feuergeloescht_1_oben[j] == 4)
    {
    format(x , sizeof x , "%d %d true", feuergeloescht_1_oben[j], j);
    SendClientMessageToAll(0xFF0000AA, x);
    geloescht_brand_1_oben[j] = true;
    }
    }
    }
    for(new j = 0; j < sizeof Feuer1_unten; j++)
    {
    if(GetDistance2(each[0], Feuer1_unten[j][0], each[1], Feuer1_unten[j][1], each[0], Feuer1_unten[j][2]) < 50.0 &&
    geloescht_brand_1_unten[j] == false)
    {
    feuergeloescht_1_unten[j]++;
    if(feuergeloescht_1_unten[j] == 4)
    {
    geloescht_brand_1_unten[j] = true;
    format(x , sizeof x , "%d %d true", feuergeloescht_1_unten[j], j);
    SendClientMessageToAll(0xFF0000AA, x);
    }
    }
    }
    }
    else
    {
    SendClientMessageToAll(0xFF0000AA, "Kein Wasser im Fahrzeug!");
    }
    }
    }
    }
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    GivePlayerWeapon(playerid, 42, 4000);
    SetPlayerMapIcon(playerid, 12, hydranten[0][0], hydranten[0][1], hydranten[0][2], 22, 0);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/auftanken"))
    {
    }
    return 0;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new VID = 0;
    if(IsPlayerInAnyVehicle(playerid))
    {
    VID = GetPlayerVehicleID(playerid);
    if(VID == FWWid[0] || VID == FWWid[1])
    {
    if(newkeys == KEY_FIRE)
    {
    Fahrzeugloescht[VID] = true;
    }
    else if(oldkeys == KEY_FIRE && newkeys != oldkeys)
    {
    Fahrzeugloescht[VID] = false;
    }
    }
    }
    return 1;
    }

  • Drück imfahrzeug mal "Key_fire" (evt. mehrfach) und schreib mal was in den chat resp. versuch einen servercmd auszuführen.
    Dann wirst du sehen was ich meine.
    Irgendwo in der GlobalTimer() hängt sich das Script auf.