| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- // Drone system repurposed by Jay Cortez
- #define DRONE_RESPAWN_TIME 30000
- new
- droneVeh, Float:dronePlayerPos[3], droneControl = -1, dronecontrolVW = 0;
- forward OnDroneRespawnDeploy();
- public OnDroneRespawnDeploy()
- {
- droneControl = -1;
- return 1;
- }
- CMD:deploydrone(playerid, params[])
- {
- if(PlayerInfo[playerid][pGroup] != GROUP_S9)
- return 1;
- if(droneControl == -2)
- return SendClientMessage(playerid, COLOR_GREY, "The drone takes time to repair, you must wait.");
- if(IsValidVehicle(droneVeh))
- return SendClientMessage(playerid, COLOR_GREY, "The drone has already been deployed.");
-
- new Float:vPos[4];
- GetXYInFrontOfPlayer(playerid, vPos[0], vPos[1], vPos[2], vPos[3], 0.5);
- droneVeh = CreateVehicle(501, vPos[0], vPos[1], vPos[2], 0.00, -1, -1, 1000);
-
- new droneString[128];
- format(droneString, sizeof(droneString), "* %s unpacks a drone and sets it down.", PlayerICName(playerid));
- ProxDetector(30.0, playerid, droneString, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
- return 1;
- }
- CMD:controldrone(playerid, params[])
- {
- if(PlayerInfo[playerid][pGroup] != GROUP_S9)
- return 1;
-
- if(droneControl == -2)
- return SendClientMessage(playerid, COLOR_GREY, "The drone is currently being repaired");
-
- if(droneControl != playerid && droneControl != -1)
- return SendClientMessage(playerid, COLOR_GREY, "The drone is currently being operated.");
-
- if(!IsValidVehicle(droneVeh))
- return SendClientMessage(playerid, COLOR_GREY, "The drone isn't yet deployed.");
-
- new droneString[128];
- if(droneControl == -1)
- {
- GetPlayerPos(playerid, dronePlayerPos[0], dronePlayerPos[1], dronePlayerPos[2]);
- dronecontrolVW = GetPlayerVirtualWorld(playerid);
- SetPlayerVirtualWorld(playerid, 0);
- PutPlayerInVehicle(playerid, droneVeh, 0);
- droneControl = playerid;
- format(droneString, sizeof(droneString), "* %s fiddles with the drone's remote control.", PlayerICName(playerid));
- ProxDetector(30.0, playerid, droneString, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
-
- format(droneString, sizeof(droneString), "HQ: %s has taken control of the tactical drone.", PlayerOOCName(playerid));
- SendGroupMessage(GROUP_S9, COLOR_S9, droneString);
- }
- else
- {
- RemovePlayerFromVehicle(playerid);
- SetPlayerVirtualWorld(playerid, dronecontrolVW);
- SetPlayerPos(playerid, dronePlayerPos[0], dronePlayerPos[1], dronePlayerPos[2]);
- format(droneString, sizeof(droneString), "* %s puts away the drone's remote control.", PlayerICName(playerid));
- ProxDetector(30.0, playerid, droneString, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
- droneControl = -1;
- }
- return 1;
- }
- stock OnDroneUpdate(playerid)
- {
- if(droneControl == playerid)
- {
- for(new id = 0; id < MAX_PLAYERS; id++)
- {
- if(id == playerid) continue;
- new
- Float:px, Float:py, Float:pz;
- GetPlayerPos(id, px, py, pz);
- if(IsPlayerInRangeOfPoint(playerid, 2.6, px, py, pz))
- {
- SendClientMessage(droneControl, COLOR_S9, "[S9 Drone] The drone has been destroyed.");
- DestroyDrone(playerid);
- droneControl = -2;
- SetTimer("OnDroneRespawnDeploy", DRONE_RESPAWN_TIME, 0);
- }
- }
- }
- return 1;
- }
- stock DestroyDrone(playerid)
- {
- if(IsPlayerConnected(playerid))
- {
- RemovePlayerFromVehicle(playerid);
- SetPlayerPos(playerid, dronePlayerPos[0], dronePlayerPos[1], dronePlayerPos[2]);
- SetPlayerVirtualWorld(playerid, dronecontrolVW);
- }
- DestroyVehicle(droneVeh);
- droneVeh = INVALID_VEHICLE_ID;
- return 1;
- }
- stock OnDroneRespawn(vehicleid)
- {
- if(droneVeh == vehicleid)
- DestroyDrone(droneControl);
- return 1;
- }
- stock OnDroneSignalCheck(playerid)
- {
- if(droneControl == playerid)
- {
- if(IsValidVehicle(droneVeh))
- {
- new Float:droneHealth;
- GetVehicleHealth(droneVeh, droneHealth);
- if(droneHealth < 450.0)
- {
- SendClientMessage(playerid, COLOR_S9, "[S9 Drone] The signal was cut due to damage.");
- SetVehicleHealth(droneVeh, 1000.0);
- DestroyDrone(playerid);
- droneControl = -2;
- SetTimer("OnDroneRespawnDeploy", DRONE_RESPAWN_TIME, 0);
- }
- }
- }
- return 1;
- }
- stock OnDroneLogout(playerid)
- {
- if(droneControl == playerid)
- {
- droneControl = -1;
- return 1;
- }
- return 0;
- }
- stock droneAttacked(issuerid, playerid)
- {
- if(droneControl != issuerid)
- {
- DestroyDrone(droneControl);
- droneControl = -2;
- SetTimer("OnDroneRespawnDeploy", DRONE_RESPAWN_TIME, 0);
- SendClientMessage(playerid, COLOR_S9, "[S9 Drone] The drone has been destroyed.");
- }
- return 1;
- }
- stock OnDroneDeath(vehicleid)
- {
- if(droneControl > -1 && droneVeh == vehicleid)
- {
- DestroyDrone(droneControl);
- droneControl = -2;
- SetTimer("OnDroneRespawnDeploy", DRONE_RESPAWN_TIME, 0);
- SendClientMessage(droneControl, COLOR_S9, "[S9 Drone] The drone has been destroyed.");
- }
- return 1;
- }
|