Advertisement
Guest User

onplayerkilled.sqf

a guest
Oct 16th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.54 KB | None | 0 0
  1. #include "..\..\script_macros.hpp"
  2. /*
  3. File: fn_onPlayerKilled.sqf
  4. Author: Bryan "Tonic" Boardwine
  5.  
  6. Description:
  7. When the player dies collect various information about that player
  8. and pull up the death dialog / camera functionality.
  9. */
  10. params [
  11. ["_unit",objNull,[objNull]],
  12. ["_killer",objNull,[objNull]]
  13. ];
  14. disableSerialization;
  15.  
  16. if !((vehicle _unit) isEqualTo _unit) then {
  17. UnAssignVehicle _unit;
  18. _unit action ["getOut", vehicle _unit];
  19. _unit setPosATL [(getPosATL _unit select 0) + 3, (getPosATL _unit select 1) + 1, 0];
  20. };
  21.  
  22. //Set some vars
  23. _unit setVariable ["Revive",true,true];
  24. _unit setVariable ["name",profileName,true]; //Set my name so they can say my name.
  25. _unit setVariable ["restrained",false,true];
  26. _unit setVariable ["Escorting",false,true];
  27. _unit setVariable ["transporting",false,true];
  28. _unit setVariable ["playerSurrender",false,true];
  29. _unit setVariable ["steam64id",(getPlayerUID player),true]; //Set the UID.
  30.  
  31. //close the esc dialog
  32. if (dialog) then {
  33. closeDialog 0;
  34. };
  35.  
  36. //Setup our camera view
  37. life_deathCamera = "CAMERA" camCreate (getPosATL _unit);
  38. showCinemaBorder true;
  39. life_deathCamera cameraEffect ["Internal","Back"];
  40. createDialog "DeathScreen";
  41. life_deathCamera camSetTarget _unit;
  42. life_deathCamera camSetRelPos [0,3.5,4.5];
  43. life_deathCamera camSetFOV .5;
  44. life_deathCamera camSetFocus [50,0];
  45. life_deathCamera camCommit 0;
  46.  
  47. (findDisplay 7300) displaySetEventHandler ["KeyDown","if ((_this select 1) isEqualTo 1) then {true}"]; //Block the ESC menu
  48.  
  49. //Create a thread for something?
  50. _unit spawn {
  51. private ["_maxTime","_RespawnBtn","_Timer"];
  52. disableSerialization;
  53. _RespawnBtn = ((findDisplay 7300) displayCtrl 7302);
  54. _Timer = ((findDisplay 7300) displayCtrl 7301);
  55. if (LIFE_SETTINGS(getNumber,"respawn_timer") < 5) then {
  56. _maxTime = time + 5;
  57. } else {
  58. _maxTime = time + LIFE_SETTINGS(getNumber,"respawn_timer");
  59. };
  60. _RespawnBtn ctrlEnable false;
  61. waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString];
  62. round(_maxTime - time) <= 0 || isNull _this};
  63. _RespawnBtn ctrlEnable true;
  64. _Timer ctrlSetText localize "STR_Medic_Respawn_2";
  65. };
  66.  
  67. _unit spawn {
  68. private ["_requestBtn","_requestTime"];
  69. disableSerialization;
  70. _requestBtn = ((findDisplay 7300) displayCtrl 7303);
  71. _requestBtn ctrlEnable false;
  72. _requestTime = time + 5;
  73. waitUntil {round(_requestTime - time) <= 0 || isNull _this};
  74. _requestBtn ctrlEnable true;
  75. };
  76.  
  77. [] spawn life_fnc_deathScreen;
  78.  
  79. //Create a thread to follow with some what precision view of the corpse.
  80. [_unit] spawn {
  81. private ["_unit"];
  82. _unit = _this select 0;
  83. waitUntil {if (speed _unit isEqualTo 0) exitWith {true}; life_deathCamera camSetTarget _unit; life_deathCamera camSetRelPos [0,3.5,4.5]; life_deathCamera camCommit 0;};
  84. };
  85.  
  86. //Make the killer wanted
  87. if (!isNull _killer && {!(_killer isEqualTo _unit)} && {!(side _killer isEqualTo west)} && {alive _killer}) then {
  88. if (vehicle _killer isKindOf "LandVehicle") then {
  89. if (life_HC_isActive) then {
  90. [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
  91. } else {
  92. [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
  93. };
  94.  
  95. //Get rid of this if you don't want automatic vehicle license removal.
  96. if (!local _killer) then {
  97. [2] remoteExecCall ["life_fnc_removeLicenses",_killer];
  98. };
  99. } else {
  100. if (life_HC_isActive) then {
  101. [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
  102. } else {
  103. [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
  104. };
  105.  
  106. if (!local _killer) then {
  107. [3] remoteExecCall ["life_fnc_removeLicenses",_killer];
  108. };
  109. };
  110. };
  111.  
  112. life_save_gear = [player] call life_fnc_fetchDeadGear;
  113.  
  114. if (LIFE_SETTINGS(getNumber,"drop_weapons_onDeath") isEqualTo 0) then {
  115. _unit removeWeapon (primaryWeapon _unit);
  116. _unit removeWeapon (handgunWeapon _unit);
  117. _unit removeWeapon (secondaryWeapon _unit);
  118. };
  119.  
  120. //Killed by cop stuff...
  121. if (side _killer isEqualTo west && !(playerSide isEqualTo west)) then {
  122. life_copRecieve = _killer;
  123. //Did I rob the federal reserve?
  124. if (!life_use_atm && {CASH > 0}) then {
  125. [format [localize "STR_Cop_RobberDead",[CASH] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
  126. CASH = 0;
  127. };
  128. };
  129.  
  130. if (!isNull _killer && {!(_killer isEqualTo _unit)}) then {
  131. life_removeWanted = true;
  132. };
  133.  
  134. //[_unit] call life_fnc_dropItems;
  135.  
  136. life_action_inUse = false;
  137. life_hunger = 100;
  138. life_thirst = 100;
  139. //life_carryWeight = 0;
  140. //CASH = 0;
  141. life_is_alive = false;
  142.  
  143. [] call life_fnc_hudUpdate; //Get our HUD updated.
  144. [player,life_settings_enableSidechannel,playerSide] remoteExecCall ["TON_fnc_manageSC",RSERV];
  145. _victimNameSide = "";
  146. _victimName = _unit getVariable["realname",""];
  147. _killerSide = "";
  148. _killerName = "";
  149.  
  150. if ( (!isNull _killer) && (_killer != player)) then
  151. {
  152. _killerName = _killer getVariable["realname",""];
  153. };
  154.  
  155.  
  156. _civmessage = if (_killerName == "") then {
  157. switch (playerSide) do {
  158. case west: {
  159. selectRandom [
  160. "Ein Polizist ist gestorben"
  161. ]
  162. };
  163. case independent: {
  164. selectRandom[
  165. "Ein Medic ist gestorben"
  166. ]
  167. };
  168. default {
  169. format [selectRandom [
  170. "%1 ist gestorben"
  171. ],_victimNameSide+_victimName]
  172. };
  173. }
  174. } else {
  175. switch (playerSide) do {
  176. case west: {
  177. format [selectRandom [
  178. "Ein Polizist wurde von %1 umgebracht!"
  179. ],_killerSide+_killerName]
  180.  
  181. };
  182.  
  183.  
  184. case independent: {
  185. format [selectRandom [
  186. "Ein Medic wurde von %1 umgebracht!"
  187. ],_killerSide+_killerName]
  188.  
  189. };
  190. default {
  191. switch (side _killer) do {
  192. case west: {
  193. format [selectRandom [
  194. "%1 wurde von einen Polizisten umgebracht"
  195. ], _victimNameSide+_victimName]
  196. };
  197.  
  198. case independent: {
  199. format [selectRandom [
  200. "%1 wurde von einen Medic umgebracht"
  201. ], _victimNameSide+_victimName]
  202. };
  203. default {
  204. format [selectRandom [
  205. "%1 wurde von %2 umgebracht!"
  206. ],_victimNameSide+_victimName, _killerSide+_killerName]
  207. }
  208. }
  209. }
  210. }
  211. };
  212.  
  213. _copmessage = if (_killerName == "") then {
  214. switch (playerSide) do {
  215. case west: {
  216. format [selectRandom [
  217. "%1 (cop) ist gestorben"
  218. ],_victimNameSide+_victimName]
  219. };
  220.  
  221. case independent: {
  222. selectRandom[
  223. "Ein Medic ist gestorben"
  224. ]
  225. };
  226.  
  227. default {
  228. format [selectRandom [
  229. "%1 ist gestorben"
  230. ],_victimNameSide+_victimName]
  231. };
  232. }
  233. } else {
  234. switch (playerSide) do {
  235. case west: {
  236. format [selectRandom [
  237. "%1 (cop) wurde von %2 umgebracht!"
  238. ],_victimNameSide+_victimName, _killerSide+_killerName]
  239.  
  240. };
  241.  
  242. case independent: {
  243. format [selectRandom [
  244. "Ein Medic wurde von %1 umgebracht!"
  245. ],_killerSide+_killerName]
  246.  
  247. };
  248.  
  249. default {
  250. switch (side _killer) do {
  251. case west: {
  252. format [selectRandom [
  253. "%1 wurde von %2 (cop) umgebracht"
  254. ],_victimNameSide+_victimName, _killerSide+_killerName]
  255. };
  256.  
  257. case independent: {
  258. format [selectRandom [
  259. "%1 wurde von einen Medic umgebracht"
  260. ], _victimNameSide+_victimName]
  261. };
  262.  
  263. default {
  264. format [selectRandom [
  265. "%1 wurde von %2 umgebracht!"
  266. ],_victimNameSide+_victimName, _killerSide+_killerName]
  267. }
  268. }
  269. }
  270. }
  271. };
  272.  
  273. _medmessage = if (_killerName == "") then {
  274. switch (playerSide) do {
  275. case west: {
  276. selectRandom [
  277. "Ein Polizist ist gestorben"
  278. ]
  279. };
  280. case independent: {
  281. format [selectRandom [
  282. "%1 (medic) ist gestorben"
  283. ],_victimNameSide+_victimName]
  284. };
  285.  
  286. default {
  287. format [selectRandom [
  288. "%1 ist gestorben"
  289. ],_victimNameSide+_victimName]
  290. };
  291. }
  292. } else {
  293. switch (playerSide) do {
  294. case west: {
  295. format [selectRandom [
  296. "Ein Polizist wurde von %1 umgebracht!"
  297. ],_killerSide+_killerName]
  298.  
  299. };
  300.  
  301. case independent: {
  302. format [selectRandom [
  303. "%1 (med) wurde von %2 umgebracht!"
  304. ],_victimNameSide+_victimName, _killerSide+_killerName]
  305.  
  306. };
  307.  
  308. default {
  309. switch (side _killer) do {
  310. case west: {
  311. format [selectRandom [
  312. "%1 wurde von einen Polizisten umgebracht"
  313. ], _victimNameSide+_victimName]
  314. };
  315. case independent : {
  316. format [selectRandom [
  317. "%1 wurde von %2 (med) umgebracht"
  318. ],_victimNameSide+_victimName, _killerSide+_killerName]
  319. };
  320.  
  321. default {
  322. format [selectRandom [
  323. "%1 wurde von %2 umgebracht!"
  324. ],_victimNameSide+_victimName, _killerSide+_killerName]
  325. }
  326. }
  327. }
  328. }
  329. };
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336. [0,_civmessage] remoteExecCall ["life_fnc_broadcast",civilian];
  337. [0,_copmessage] remoteExecCall ["life_fnc_broadcast",west];
  338. [0,_medmessege] remoteExecCall ["life_fnc_broadcast",independent];
  339.  
  340. [0] call SOCK_fnc_updatePartial;
  341. [3] call SOCK_fnc_updatePartial;
  342. if (playerSide isEqualTo civilian) then {
  343. [4] call SOCK_fnc_updatePartial;
  344. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement