Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "..\..\script_macros.hpp"
- /*
- File: fn_onPlayerKilled.sqf
- Author: Bryan "Tonic" Boardwine
- Description:
- When the player dies collect various information about that player
- and pull up the death dialog / camera functionality.
- */
- params [
- ["_unit",objNull,[objNull]],
- ["_killer",objNull,[objNull]]
- ];
- disableSerialization;
- if !((vehicle _unit) isEqualTo _unit) then {
- UnAssignVehicle _unit;
- _unit action ["getOut", vehicle _unit];
- _unit setPosATL [(getPosATL _unit select 0) + 3, (getPosATL _unit select 1) + 1, 0];
- };
- //Set some vars
- _unit setVariable ["Revive",true,true];
- _unit setVariable ["name",profileName,true]; //Set my name so they can say my name.
- _unit setVariable ["restrained",false,true];
- _unit setVariable ["Escorting",false,true];
- _unit setVariable ["transporting",false,true];
- _unit setVariable ["playerSurrender",false,true];
- _unit setVariable ["steam64id",(getPlayerUID player),true]; //Set the UID.
- //close the esc dialog
- if (dialog) then {
- closeDialog 0;
- };
- //Setup our camera view
- life_deathCamera = "CAMERA" camCreate (getPosATL _unit);
- showCinemaBorder true;
- life_deathCamera cameraEffect ["Internal","Back"];
- createDialog "DeathScreen";
- life_deathCamera camSetTarget _unit;
- life_deathCamera camSetRelPos [0,3.5,4.5];
- life_deathCamera camSetFOV .5;
- life_deathCamera camSetFocus [50,0];
- life_deathCamera camCommit 0;
- (findDisplay 7300) displaySetEventHandler ["KeyDown","if ((_this select 1) isEqualTo 1) then {true}"]; //Block the ESC menu
- //Create a thread for something?
- _unit spawn {
- private ["_maxTime","_RespawnBtn","_Timer"];
- disableSerialization;
- _RespawnBtn = ((findDisplay 7300) displayCtrl 7302);
- _Timer = ((findDisplay 7300) displayCtrl 7301);
- if (LIFE_SETTINGS(getNumber,"respawn_timer") < 5) then {
- _maxTime = time + 5;
- } else {
- _maxTime = time + LIFE_SETTINGS(getNumber,"respawn_timer");
- };
- _RespawnBtn ctrlEnable false;
- waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString];
- round(_maxTime - time) <= 0 || isNull _this};
- _RespawnBtn ctrlEnable true;
- _Timer ctrlSetText localize "STR_Medic_Respawn_2";
- };
- _unit spawn {
- private ["_requestBtn","_requestTime"];
- disableSerialization;
- _requestBtn = ((findDisplay 7300) displayCtrl 7303);
- _requestBtn ctrlEnable false;
- _requestTime = time + 5;
- waitUntil {round(_requestTime - time) <= 0 || isNull _this};
- _requestBtn ctrlEnable true;
- };
- [] spawn life_fnc_deathScreen;
- //Create a thread to follow with some what precision view of the corpse.
- [_unit] spawn {
- private ["_unit"];
- _unit = _this select 0;
- waitUntil {if (speed _unit isEqualTo 0) exitWith {true}; life_deathCamera camSetTarget _unit; life_deathCamera camSetRelPos [0,3.5,4.5]; life_deathCamera camCommit 0;};
- };
- //Make the killer wanted
- if (!isNull _killer && {!(_killer isEqualTo _unit)} && {!(side _killer isEqualTo west)} && {alive _killer}) then {
- if (vehicle _killer isKindOf "LandVehicle") then {
- if (life_HC_isActive) then {
- [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
- } else {
- [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
- };
- //Get rid of this if you don't want automatic vehicle license removal.
- if (!local _killer) then {
- [2] remoteExecCall ["life_fnc_removeLicenses",_killer];
- };
- } else {
- if (life_HC_isActive) then {
- [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
- } else {
- [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
- };
- if (!local _killer) then {
- [3] remoteExecCall ["life_fnc_removeLicenses",_killer];
- };
- };
- };
- life_save_gear = [player] call life_fnc_fetchDeadGear;
- if (LIFE_SETTINGS(getNumber,"drop_weapons_onDeath") isEqualTo 0) then {
- _unit removeWeapon (primaryWeapon _unit);
- _unit removeWeapon (handgunWeapon _unit);
- _unit removeWeapon (secondaryWeapon _unit);
- };
- //Killed by cop stuff...
- if (side _killer isEqualTo west && !(playerSide isEqualTo west)) then {
- life_copRecieve = _killer;
- //Did I rob the federal reserve?
- if (!life_use_atm && {CASH > 0}) then {
- [format [localize "STR_Cop_RobberDead",[CASH] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
- CASH = 0;
- };
- };
- if (!isNull _killer && {!(_killer isEqualTo _unit)}) then {
- life_removeWanted = true;
- };
- //[_unit] call life_fnc_dropItems;
- life_action_inUse = false;
- life_hunger = 100;
- life_thirst = 100;
- //life_carryWeight = 0;
- //CASH = 0;
- life_is_alive = false;
- [] call life_fnc_hudUpdate; //Get our HUD updated.
- [player,life_settings_enableSidechannel,playerSide] remoteExecCall ["TON_fnc_manageSC",RSERV];
- _victimNameSide = "";
- _victimName = _unit getVariable["realname",""];
- _killerSide = "";
- _killerName = "";
- if ( (!isNull _killer) && (_killer != player)) then
- {
- _killerName = _killer getVariable["realname",""];
- };
- _civmessage = if (_killerName == "") then {
- switch (playerSide) do {
- case west: {
- selectRandom [
- "Ein Polizist ist gestorben"
- ]
- };
- case independent: {
- selectRandom[
- "Ein Medic ist gestorben"
- ]
- };
- default {
- format [selectRandom [
- "%1 ist gestorben"
- ],_victimNameSide+_victimName]
- };
- }
- } else {
- switch (playerSide) do {
- case west: {
- format [selectRandom [
- "Ein Polizist wurde von %1 umgebracht!"
- ],_killerSide+_killerName]
- };
- case independent: {
- format [selectRandom [
- "Ein Medic wurde von %1 umgebracht!"
- ],_killerSide+_killerName]
- };
- default {
- switch (side _killer) do {
- case west: {
- format [selectRandom [
- "%1 wurde von einen Polizisten umgebracht"
- ], _victimNameSide+_victimName]
- };
- case independent: {
- format [selectRandom [
- "%1 wurde von einen Medic umgebracht"
- ], _victimNameSide+_victimName]
- };
- default {
- format [selectRandom [
- "%1 wurde von %2 umgebracht!"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- }
- }
- }
- }
- };
- _copmessage = if (_killerName == "") then {
- switch (playerSide) do {
- case west: {
- format [selectRandom [
- "%1 (cop) ist gestorben"
- ],_victimNameSide+_victimName]
- };
- case independent: {
- selectRandom[
- "Ein Medic ist gestorben"
- ]
- };
- default {
- format [selectRandom [
- "%1 ist gestorben"
- ],_victimNameSide+_victimName]
- };
- }
- } else {
- switch (playerSide) do {
- case west: {
- format [selectRandom [
- "%1 (cop) wurde von %2 umgebracht!"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- };
- case independent: {
- format [selectRandom [
- "Ein Medic wurde von %1 umgebracht!"
- ],_killerSide+_killerName]
- };
- default {
- switch (side _killer) do {
- case west: {
- format [selectRandom [
- "%1 wurde von %2 (cop) umgebracht"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- };
- case independent: {
- format [selectRandom [
- "%1 wurde von einen Medic umgebracht"
- ], _victimNameSide+_victimName]
- };
- default {
- format [selectRandom [
- "%1 wurde von %2 umgebracht!"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- }
- }
- }
- }
- };
- _medmessage = if (_killerName == "") then {
- switch (playerSide) do {
- case west: {
- selectRandom [
- "Ein Polizist ist gestorben"
- ]
- };
- case independent: {
- format [selectRandom [
- "%1 (medic) ist gestorben"
- ],_victimNameSide+_victimName]
- };
- default {
- format [selectRandom [
- "%1 ist gestorben"
- ],_victimNameSide+_victimName]
- };
- }
- } else {
- switch (playerSide) do {
- case west: {
- format [selectRandom [
- "Ein Polizist wurde von %1 umgebracht!"
- ],_killerSide+_killerName]
- };
- case independent: {
- format [selectRandom [
- "%1 (med) wurde von %2 umgebracht!"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- };
- default {
- switch (side _killer) do {
- case west: {
- format [selectRandom [
- "%1 wurde von einen Polizisten umgebracht"
- ], _victimNameSide+_victimName]
- };
- case independent : {
- format [selectRandom [
- "%1 wurde von %2 (med) umgebracht"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- };
- default {
- format [selectRandom [
- "%1 wurde von %2 umgebracht!"
- ],_victimNameSide+_victimName, _killerSide+_killerName]
- }
- }
- }
- }
- };
- [0,_civmessage] remoteExecCall ["life_fnc_broadcast",civilian];
- [0,_copmessage] remoteExecCall ["life_fnc_broadcast",west];
- [0,_medmessege] remoteExecCall ["life_fnc_broadcast",independent];
- [0] call SOCK_fnc_updatePartial;
- [3] call SOCK_fnc_updatePartial;
- if (playerSide isEqualTo civilian) then {
- [4] call SOCK_fnc_updatePartial;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement