Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define EXPLODE_TIME 300 // time to explode
- #define EXTINGUISH_TIME 10 // time to delete car
- #define EXTINGUISH_DISTANCE 20 // distance to delete fire
- #define COLOR_RED 0xFB0000FF // change color if you like
- new burning[MAX_VEHICLES];
- new loeschen[MAX_VEHICLES];
- new spritzen[MAX_PLAYERS];
- new freezeplayer[MAX_PLAYERS];
- new fdvehiclekiller[MAX_VEHICLES];
- forward VehicleFire(vehicleid);
- forward GlobalTimer();
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" FireDepartment Script by cRcKdwN");
- print("--------------------------------------\n");
- SetTimer("GlobalTimer", 1000, true); // timer, to check the damage
- AntiDeAMX();
- return 1;
- }
- AntiDeAMX()
- {
- new a[][] =
- {
- "Unarmed (Fist)",
- "Brass K"
- };
- #pragma unused a
- }
- // selfmade Stocks
- // set a car "not accessible"
- stock SetVehicleParamsForAll(vehicleid, objective, doorslocked)
- {
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- SetVehicleParamsForPlayer(vehicleid, i, objective, doorslocked);
- }
- }
- }
- // Distance calculation functions
- stock Float:getDistance(Float:ox1, Float:ox2, Float:oy1, Float:oy2, Float:oz1, Float:oz2)
- return floatsqroot(floatpower(floatabs(ox1 - ox2), 2) + floatpower(floatabs(oy1 - oy2), 2) + floatpower(floatabs(oz1 - oz2), 2));
- stock Float:GetCarDistance(playerid, vehicleid)
- {
- new Float:PPos[3], Float:VPos[3];
- GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
- GetVehiclePos(vehicleid, VPos[0], VPos[1], VPos[2]);
- return getDistance(PPos[0], VPos[0], PPos[1], VPos[1], PPos[2], VPos[2]);
- }
- stock Float:GetPlayerDistance(playerid1, playerid2)
- {
- new Float:P1Pos[3], Float: P2Pos[3];
- GetPlayerPos(playerid1, P1Pos[0], P1Pos[1], P1Pos[2]);
- GetPlayerPos(playerid2, P2Pos[0], P2Pos[1], P2Pos[2]);
- return getDistance(P1Pos[0], P2Pos[0], P1Pos[1], P2Pos[1], P1Pos[2], P2Pos[2]);
- }
- stock getNearestPlayer(playerid, Float:dist = 0.0) {
- new npID = -1;
- for (new i = 0; i < GetMaxPlayers(); i++) {
- if (i != playerid) {
- if (IsPlayerConnected(i)){
- new Float:tempDist = GetPlayerDistance(playerid,i);
- if (tempDist < dist || dist == 0) {
- dist = tempDist;
- npID = i;
- }
- }
- }
- }
- return npID;
- }
- // selfmade Publics
- // Timer-Public: So that the car did not explode and continue to burn:
- public VehicleFire(vehicleid)
- {
- if (burning[vehicleid] != 0 && burning[vehicleid] < EXPLODE_TIME){
- SetVehicleHealth(vehicleid, 249);
- }
- }
- // Timer: Checktimer when ever a vehicle burns
- public GlobalTimer()
- {
- for (new i;i <= MAX_PLAYERS;i++)
- {
- if (IsPlayerInAnyVehicle(i) && IsPlayerConnected(i))
- {
- new VID = GetPlayerVehicleID(i);
- if( VID != 504 && VID != 468)
- {
- if (burning[VID] == 0)
- {
- new Float:vhealth;
- GetVehicleHealth(VID,vhealth);
- if (vhealth < 300)
- {
- new msg[70];
- format(msg, sizeof(msg), "Fire Department: Burning car has been spotted!");
- SendClientMessageToAll(COLOR_RED, msg);
- /* FIREDEPARTMENT MELDUNG
- // Here you have player info [j] [pfd] through your Player-fire-check replaced.
- // If you want that the system will only work if a user is online, you must order the "You inhaled smoke" - section, only one
- // Query set that is sent == 1: See right here down the system:
- new send = 0;
- for (new j = 0; j < MAX_PLAYERS; j++)
- {
- if (IsPlayerConnected(j) && PlayerInfo[j][pfd] > 0 && j != i)
- {
- send = 1;
- GameTextForPlayer(j, "~r~FD: received emergency!", 2000, 6);
- SendClientMessage(j, COLOR_RED, msg);
- SetPlayerMarkerForPlayer(j, i, 0xFF0000FF);
- }
- }
- */
- SetVehicleParamsForAll(VID, 0, 1);
- burning[VID] = 1;
- TogglePlayerControllable(i, 0);
- freezeplayer[i] = 1;
- SendClientMessage(i, COLOR_RED, "You inhaled smoke, now you are unconscious.");
- SetPlayerHealth(i, 5.0); // delete this, if you want that the player dont loses a life
- ApplyAnimation(i, "ped", "CAR_dead_LHS", 4.0, 0, 1, 1, 1, 1);
- }
- }
- else
- {
- if (burning[VID] == EXPLODE_TIME){
- KillTimer(VehicleFire(VID));
- SetVehicleParamsForAll(VID, 0, 0);
- SetVehicleHealth(VID, 0);
- fdvehiclekiller[VID] = i;
- if (IsPlayerInVehicle(i, VID))
- {
- ClearAnimations(i);
- TogglePlayerControllable(i, true);
- freezeplayer[i] = 0;
- }
- }
- else
- {
- SetVehicleHealth(VID, 250);
- SetTimerEx("VehicleFire", 100, 0, "i", VID);
- burning[VID]++;
- for (new j = 0; j < GetMaxPlayers(); j++)
- {
- if (IsPlayerConnected(j) && spritzen[j] == 1)
- {
- if (loeschen[VID] == EXTINGUISH_TIME)
- {
- KillTimer(VehicleFire(VID));
- SetVehicleHealth(VID, 500);
- loeschen[VID] = 0;
- burning[VID] = 0;
- GameTextForPlayer(j, "~b~Fire Delete!", 5000, 6); //Fire is extinguished! Replace here if you want a different message!
- SetVehicleParamsForAll(VID, 0, 0);
- }
- else if (GetCarDistance(j, VID) < EXTINGUISH_DISTANCE){
- loeschen[VID]++;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- // StandartCallbacks
- public OnPlayerConnect(playerid)
- {
- spritzen[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- for (new i; i < sizeof(fdvehiclekiller); i++)
- {
- if (fdvehiclekiller[i] == playerid) fdvehiclekiller[i] = -1;
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- freezeplayer[playerid] = 0;
- spritzen[playerid] = 0;
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- burning[vehicleid] = 0;
- loeschen[vehicleid] = 0;
- fdvehiclekiller[vehicleid] = -1;
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- if (burning[vehicleid] != 0)
- {
- if (IsPlayerInVehicle(fdvehiclekiller[vehicleid], vehicleid))
- {
- ClearAnimations(fdvehiclekiller[vehicleid]);
- TogglePlayerControllable(fdvehiclekiller[vehicleid], true);
- new i = fdvehiclekiller[vehicleid];
- freezeplayer[i] = 0;
- SetPlayerHealth(fdvehiclekiller[vehicleid], 0);
- }
- fdvehiclekiller[vehicleid] = -1;
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- // To use this command, a query about whether playerid fireman, firemen only if the command should be accessible
- if (!strcmp(cmdtext, "/rescue", true))
- {
- new PID = getNearestPlayer(playerid);
- if (PID != -1 && GetPlayerDistance(playerid, PID) < 20 && freezeplayer[PID] > 0)
- {
- if (IsPlayerInAnyVehicle(playerid))
- {
- if (burning[GetPlayerVehicleID(PID)] > 0)
- {
- SendClientMessage(playerid, COLOR_RED, "The Car is Burning!!");
- return 1;
- }
- }
- ClearAnimations(PID);
- TogglePlayerControllable(PID, true);
- freezeplayer[PID] = 0;
- RemovePlayerFromVehicle(PID);
- }
- else
- SendClientMessage(playerid, COLOR_RED, "the next player is to far away!");
- return 1;
- }
- //__________________________________________________________________________
- return 0;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- // To use this query, a query about whether playerid firefighter, if only to delete firefighters
- if ((newkeys == 4 || newkeys == 12 || newkeys == 36 || newkeys == 132))
- {
- if (IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 407)
- {
- spritzen[playerid] = true;
- GameTextForPlayer(playerid,"Delete...",800,1);
- } else {
- if (GetPlayerWeapon(playerid) == 42)
- {
- spritzen[playerid] = true;
- GameTextForPlayer(playerid,"Delete...",800,1);
- }
- }
- }
- else if (oldkeys == 4 || oldkeys == 12 || oldkeys == 36 || oldkeys == 132){
- spritzen[playerid] = false;
- }
- //__________________________________________________________________________
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment