From cfbebe7ffd771b3f85f0288bff4b507d053ae4ec Mon Sep 17 00:00:00 2001 From: icomrade Date: Sat, 27 Feb 2016 22:30:15 -0500 Subject: [PATCH] Init more or less done --- SQF/dayz_code/NOTE.txt | 17 + SQF/dayz_code/init/object_BackpackAction.sqf | 8 +- SQF/dayz_code/init/object_pickupAction.sqf | 10 +- SQF/dayz_code/init/publicEH.sqf | 343 +++++++++++++++++- SQF/dayz_code/init/variables.sqf | 349 ++++++++++++++++++- SQF/dayz_code/init/veh_resetEH.sqf | 27 +- 6 files changed, 706 insertions(+), 48 deletions(-) diff --git a/SQF/dayz_code/NOTE.txt b/SQF/dayz_code/NOTE.txt index 316595a30..6319d1e5b 100644 --- a/SQF/dayz_code/NOTE.txt +++ b/SQF/dayz_code/NOTE.txt @@ -45,3 +45,20 @@ ARE NO MORE, USE BELOW!! ACTUALLY IT MAY BE EASIER TO JUST RENAME THE BELOW TO A fnc_veh_handleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleDam.sqf"; fnc_veh_handleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleKilled.sqf"; + +dayz_serverObjectMonitor = []; IS REPLACED WITH PVDZE_serverObjectMonitor = []; +PVDZ_obj_Publish IS PVDZE_obj_Publish +PVCDZ_obj_HideBody IS PVDZE_obj_HideBody +******REPLACE ALL PVCDZ_ AND PVDZ_ with PVCDZE/PVDZE_ + +PVDZ_drg_RaLW IS norrnRaLW +PVDZ_drg_RLact IS norrnRLact +NEW FNC PVDZE_hlt_Bleed -- THATS AN L change it to an I +PVCDZE_vehSH needs to be changed to PVCDZE_veh_SH +PVDZE_plr_HideBody BECOMES PVCDZE_plr_HideBody +PVDZE_obj_GutBody BECOMES PVCDZE_obj_GutBody +PVDZE_veh_SFuel BECOMES PVCDZE_veh_SetFuel +PVDZ_plr_Death BECOMES PVDZE_plr_Died +PVDZ_plr_Login1 BECOMES PVDZE_plr_Login +PVDZ_obj_Destroy BECOMES PVDZE_obj_Delete //WHO RENAMED THESE VARIABLES IN DAYZ VANILLA, THE COMPILE IT CALLS IS STILL NAMED server_deleteObj WHY CHANGE IT TO DESTROY!!!!??? +dayzSetDate BECOMES PVDZE_plr_SetDate \ No newline at end of file diff --git a/SQF/dayz_code/init/object_BackpackAction.sqf b/SQF/dayz_code/init/object_BackpackAction.sqf index 5be70db1b..d4adad440 100644 --- a/SQF/dayz_code/init/object_BackpackAction.sqf +++ b/SQF/dayz_code/init/object_BackpackAction.sqf @@ -2,16 +2,16 @@ private ["_holder","_type","_classname","_name","_actionSet"]; _holder = _this select 0; _type = _this select 1; _classname = _this select 2; +_name = getText (configFile >> _type >> _classname >> "displayName"); // Exit if player zombie if(player isKindOf "PZombie_VB") exitWith {}; -if (!isNull _holder) then { - _name = getText(configFile >> _type >> _classname >> "displayName"); +if ((!isNil "_holder") and {(!isNull _holder)}) then { _actionSet = _holder getVariable["actionSet", false]; - if (!_actionSet) then { - s_player_holderPickup = _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + if ((isNil "_actionSet") or {(!_actionSet)}) then { + s_player_holderPickup = _holder addAction [format [localize "str_init_take", _name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; player reveal _holder; _holder setVariable["actionSet", true]; }; diff --git a/SQF/dayz_code/init/object_pickupAction.sqf b/SQF/dayz_code/init/object_pickupAction.sqf index 7c23cc88c..99cc15a11 100644 --- a/SQF/dayz_code/init/object_pickupAction.sqf +++ b/SQF/dayz_code/init/object_pickupAction.sqf @@ -7,6 +7,7 @@ _name = getText (configFile >> _type >> _classname >> "displayName"); // Exit if player zombie if(player isKindOf "PZombie_VB") exitWith {}; +pickupInit = true; actionMonitor = { private ["_holder","_type","_classname","_name","_action","_distance","_run","_timeout","_null"]; @@ -25,19 +26,20 @@ actionMonitor = { _distance = player distance _holder; // Add action to player if ((_distance < 1.75) && (_action == -1)) then { - _action = player addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + _action = player addAction [format[(localize "str_init_take"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; player reveal _holder; _timeout = 0.3; }; // Remove action from player if ((_distance >= 1.75) && (_action != -1)) then { player removeAction _action; + pickupInit = true; _action = -1; _timeout = 2; }; // Stop the loop && fall back to old code if (_distance > 100) then { - _null = _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + null = _holder addAction [format[(localize "str_init_take"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; player reveal _holder; _run = false; _timeout = 0; @@ -46,6 +48,7 @@ actionMonitor = { if (_action != -1) then { player removeAction _action; _action = -1; + pickupInit = true; }; _timeout = 0; _run = false; @@ -57,6 +60,7 @@ actionMonitor = { if (_classname == "WoodenArrow") then { [_holder,_type,_classname,_name] spawn actionMonitor; } else { - _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true, "", "DZE_CanPickup"]; + s_player_holderPickup = _holder addAction [format[(localize "str_init_take"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; player reveal _holder; + pickupInit = true; }; \ No newline at end of file diff --git a/SQF/dayz_code/init/publicEH.sqf b/SQF/dayz_code/init/publicEH.sqf index c30179ba4..b17a50a64 100644 --- a/SQF/dayz_code/init/publicEH.sqf +++ b/SQF/dayz_code/init/publicEH.sqf @@ -3,31 +3,37 @@ "norrnRLact" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"}; "norrnRDead" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\deadState.sqf"}; "usecBleed" addPublicVariableEventHandler {_id = (_this select 1) spawn fnc_usec_damageBleed}; -"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage}; +//"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage}; "usecInject" addPublicVariableEventHandler {(_this select 1) call player_medInject}; -"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi}; -"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse}; -"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine}; -"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller}; +//"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi}; +//"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse}; +//"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine}; +//"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller}; "PVDZE_plr_Hit" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageHandler}; "PVDZE_plr_HitV" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageVehicle}; -"usecBreakLegs" addPublicVariableEventHandler {(_this select 1) call player_breaklegs}; +//"usecBreakLegs" addPublicVariableEventHandler {(_this select 1) call player_breaklegs}; //Both -"PVDZE_veh_SFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel}; +"PVCDZ_veh_SetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel}; "PVDZE_veh_SFix" addPublicVariableEventHandler {(_this select 1) call object_setFixServer}; "PVDZE_plr_HideBody" addPublicVariableEventHandler {hideBody (_this select 1)}; "PVDZE_obj_Hide" addPublicVariableEventHandler {hideObject (_this select 1)}; "PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) spawn local_lockUnlock}; -"PVDZE_plr_GutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject}; +"PVCDZE_plr_GutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject}; "PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ}; "PVDZE_plr_DelLocal" addPublicVariableEventHandler {(_this select 1) call object_delLocal}; "PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH}; -"PVDZE_plr_HumanityChange" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange}; +//"PVDZE_plr_HumanityChange" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange}; "PVDZE_serverObjectMonitor" addPublicVariableEventHandler {PVDZE_serverObjectMonitor = dayz_safety}; /* PVS/PVC - Skaronator */ -"PVCDZE_vehSH" addPublicVariableEventHandler {(_this select 1) call vehicle_handleDamage}; // set damage to vehicle part +"PVCDZE_veh_SH" addPublicVariableEventHandler {(_this select 1) call vehicle_handleDamage}; // set damage to vehicle part +"PVCDZE_veh_SF" addPublicVariableEventHandler {(_this select 1) call fnc_veh_handleDam}; // set damage to vehicle part +//reset OpenTarget timer +"PVCDZE_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; }; + +"PVCDZE_veh_engineSwitch" addPublicVariableEventHandler {(_this select 1) spawn dayz_engineSwitch}; + "PVDZE_Server_Simulation" addPublicVariableEventHandler { _agent = ((_this select 1) select 0); _control = ((_this select 1) select 1); @@ -35,6 +41,61 @@ _agent enableSimulation _control; }; +{ + private ["_building", "_fckingcode"]; + + _fckingcode = { + private [ "_building", "_part", "_dmgLvl", "_who", "_ammo", "_dist" ]; + + _building = _this select 0; + _part = _this select 1; + _dmgLvl = 1 min (_this select 2); + _who = _this select 3; + _ammo = _this select 4; + if (_part != 'glass' AND _dmgLvl > 0.01) then { + if (isServer) then { + diag_log ['Log building damage', _this]; + } + else { + if (isNull _who) then { + if (_ammo != "" and _ammo isKindOf "HelicopterExploSmall") then { + _who = player; + _dist = round (_who distance _building); + PVDZ_sec_atp = format [ "UID#%1 d4maged %2 %5 to %3pct with ammo %4 at dist4nce %6m.", + getPlayerUID _who, typeOf _building, round (100 * _dmgLvl), _ammo, _part, _dist ]; + publicVariableServer "PVDZ_sec_atp"; + }; + } + else { + if (_who == player) then { + _dist = round (_who distance _building); + PVDZ_sec_atp = format [ "UID#%1 d4maged %2 %5 to %3pct with ammo %4 at dist4nce %6m.", + getPlayerUID _who, typeOf _building, round (100 * _dmgLvl), _ammo, _part, _dist ]; + publicVariableServer "PVDZ_sec_atp"; + }; + }; + }; + }; + if ((!isNull _who) and {(_who distance _building < 150)}) then {_dmgLvl} else {0} + }; + _building = [_x select 0,_x select 1,0] nearestObject (_x select 2); + _building removeAllEventHandlers "handleDamage"; + _building addEventHandler ["handleDamage", _fckingcode]; +} forEach [ + [7069,7727,206458], [6009,7815,203486], [10638,8016,272598], [6553,5598,223435], [6914,11431,141876], + [4660,9596,145234], [4788,10257,143923], [11467,7479,276453], [4628,10489,137736], [4551,6395,212964], + [3815,8948,132069], [3804,8925,132182], [11957,9120,261904], [12031,9158,261252], [12057,9103,261945], + [12227,9518,256625], [12237,9493,262727], [12256,9508,262732], [12275,9479,262631], [3064,7975,172476], + [3055,7855,172835], [12742,9593,259691], [11254,12210,236245], [12780,10128,257815], [12805,10089,258268], + [12803,10119,258288], [11251,4274,353940], [13100,7177,297715], [7098,2738,966951], [6817,2702,966613], + [6379,2791,965644], [6414,2760,965688], [6371,2747,965657], [6386,2735,965658], [6410,2716,965659], + [6383,2691,965643], [6899,2561,969372], [6854,2556,969371], [6770,2525,968272], [6901,2484,969736], + [6783,2485,968116], [6507,2532,967694], [6835,2388,969223], [6578,2402,968509], [6661,2345,968949], + [6679,2302,969332], [2587,5069,188570], [6537,2302,968797], [10424,2562,362226], [10420,2368,363222], + [10443,2345,363318], [10481,2358,363308], [10365,2241,363748], [10518,2288,364628], [10457,2256,363454], + [10174,1810,366820], [3589,2175,328944] +]; + //Server only if (isServer) then { /* PVS/PVC - Skaronator */ @@ -57,10 +118,194 @@ if (isServer) then { "PVDZE_plr_LoginRecord" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_recordLogin}; //Checking "PVDZE_obj_Delete" addPublicVariableEventHandler {(_this select 1) spawn server_deleteObj}; + "PVDZ_obj_Save" addPublicVariableEventHandler {(_this select 1) call server_updateObject; diag_log ("PublicEH");}; // upgrade && maintain "PVDZE_obj_Swap" addPublicVariableEventHandler {(_this select 1) spawn server_swapObject}; // disable zombies server side "PVDZE_zed_Spawn" addPublicVariableEventHandler {(_this select 1) spawn server_handleZedSpawn}; + "PVDZ_dayzCarBomb" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\actions\detonate_bomb.sqf";}; + "PVDZ_playerMedicalSync" addPublicVariableEventHandler { (_this select 1) call server_medicalSync; ((_this select 1) select 0) setVariable["Medical",((_this select 1) select 1),false]; }; //diag_log format["%1 - %2",((_this select 1) select 0),((_this select 1) select 1)]; }; + "PVDZ_object_replace" addPublicVariableEventHandler { + _cursorTarget = _this select 1; + _vars = ((_this select 1)select 0) getVariable "MaintenanceVars"; + + if (!isnil "_vars" and _cursorTarget isKindOf "DZ_buildables") then { + deleteVehicle ((_this select 1)select 0); + _object = createVehicle [(_vars select 0), (_vars select 1), [], 0, if (_type in DayZ_nonCollide) then {"NONE"} else {"CAN_COLLIDE"}]; + _object setVariable["Maintenance",false,true]; + }; + }; + "PVDZ_sendUnconscious" addPublicVariableEventHandler { + _owner = ((_this select 1) select 0); + _duration = ((_this select 1) select 1); + + diag_log format["%1,%2",_owner,_duration]; + + PVDZ_receiveUnconscious = [_owner,_duration]; + (owner _owner) publicVariableClient "PVDZ_receiveUnconscious"; + }; + + "PVDZ_gridsActive" addPublicVariableEventHandler { + _gridref = ((_this select 1) select 0); + _gridloc = ((_this select 1) select 1); + + if (!(_gridref in dayz_gridsActive)) then { + dayz_gridsActive set [count dayz_gridsActive,_gridref]; + dayz_seedloot set [count dayz_seedloot,[_gridloc,_gridref]]; + }; + diag_log format ["%1, %2, %3", _gridref, dayz_gridsActive, dayz_seedloot]; + }; + + "PVDZ_gridsRemove" addPublicVariableEventHandler { + _gridref = ((_this select 1) select 0); + _gridloc = ((_this select 1) select 1); + + if (_gridref in dayz_gridsActive) then { + dayz_gridsActive = dayz_gridsActive - [_gridref]; + dayz_deseedloot set [count dayz_deseedloot,[_gridloc,_gridref]]; + }; + diag_log format ["%1, %2", _gridref, dayz_gridsActive]; + }; + + + "PVDZ_Server_Simulation" addPublicVariableEventHandler { + _agent = ((_this select 1) select 0); + _control = ((_this select 1) select 1); + + _agent enableSimulation _control; + }; + + "PVDZ_obj_Delete" addPublicVariableEventHandler { + _obj = ((_this select 1) select 0); + _player = ((_this select 1) select 1); + _type = typeOf _obj; + _dis = _player distance _obj; + + if (_type in Dayz_plants) then { + if (_dis < 3) then { + deleteVehicle _obj; + }; + }; + + if (_type == "Blood_Trail_DZ") then { + deleteVehicle _obj; + }; + + //Make sure object is a cardboardbox and make sure the player distance is under 15 meters from object + if (_type iskindOf "CardboardBox") then { + if (_dis < 15) then { + deleteVehicle _obj; + }; + }; + }; + + "PVDZ_objgather_Knockdown" addPublicVariableEventHandler { + _tree = ((_this select 1) select 0); + _player = ((_this select 1) select 1); + _dis = _player distance _tree; + + if (_dis < 30) then { + _tree setDamage 1; + deleteVehicle _tree; + }; + }; + + "PVDZ_serverStoreVar" addPublicVariableEventHandler { + _obj = ((_this select 1) select 0); + _name = ((_this select 1) select 1); + _value = ((_this select 1) select 2); + + + _obj setVariable [_name, _value]; + }; + + "PVDZ_receiveVar" addPublicVariableEventHandler { + _owner = ((_this select 1) select 0); + _object = ((_this select 1) select 1); + _name = ((_this select 1) select 2); + _value = ((_this select 1) select 3); + + switch (_name) do { + case "looted": { + diag_log format ["%4 - %1, %2, %3", _object, _name, _value, "receive looted"]; + }; + case "zombieSpawn": { + //diag_log format ["%4 - %1, %2, %3", _object, _name, _value, "receive zombieSpawn"]; + }; + }; + + _ownerID = owner _owner; + _return = _object getVariable [_name,_value]; + + //diag_log format ["%1", _return]; + + PVCDZ_SetVar = [_object,_name,_return]; + _ownerID publicVariableClient "PVCDZ_SetVar"; + }; + + "PVDZ_Server_changeOwner" addPublicVariableEventHandler { + _agent = ((_this select 1) select 0); + _reciever = ((_this select 1) select 1); + _ownerID = owner _agent; + _newownerID = 1; //1 = server + + if (typeName _reciever == "OBJECT") then { + _newownerID = owner _reciever; + }; + if (isnil ("Owner")) then { + _agent setVariable ["Owner",_ownerID]; + }; + + _agent setOwner _newownerID; + diag_log ("TRANSFER OWNERSHIP: " + (typeOf _agent) + " OF _unit: " + str(_agent) + " TO _client: " + str(_reciever) ); + }; + + "PVDZ_Server_LogIt" addPublicVariableEventHandler { + _unitSending = (_this select 0); + _info = (_this select 1); + + diag_log format["WARNING: %1",_info]; + }; + + "PVDZ_Server_processCode" addPublicVariableEventHandler {(_this select 1) call pvs_processSetAccessCode}; + + "PVDZ_Server_processSetAccessCode" addPublicVariableEventHandler { + private ["_unitSending","_object","_object","_code"]; + _unitSending = ((_this select 1) select 0); + _object = ((_this select 1) select 1); + _code = ((_this select 1) select 2); + + //diag_log format["%1, %2-%3",_unitSending,_object,_code]; + + _ownerID = owner _unitSending; + _ownerArray = _object getVariable ["ownerArray",["0"]]; + + if ((_ownerArray select 0) == (getPlayerUID _unitSending)) then { + if (_unitSending distance _object < 5) then { + _object setVariable ["dayz_padlockCombination",_code,false]; + + PVCDZ_Client_processAccessCode = [_code]; + _ownerID publicVariableClient "PVCDZ_Client_processAccessCode"; + + [_object,"accessCode",_code] call server_updateObject; + + _object setVariable ["dayz_padlockHistory", [], true]; + _object setVariable ["dayz_padlockLockStatus", true,true]; + + diag_log format["INFO: %1, %5 has changed the access code for %2 with %3 at time %4",(name _unitSending),(typeof _object),_code,time,(getPlayerUID _unitSending)]; + } else { + diag_log format["WARNING: %1, %5 is asking to change access code of %2 from a distance of %3 at time %4",(name _unitSending),(typeof _object),(_unit distance _object),time,(getPlayerUID _unitSending)]; + }; + } else { + diag_log format["WARNING: %1, %2 is trying to set a code for a gate he does not own.",(name _unitSending),(getPlayerUID _unitSending)]; + }; + }; + + "PVDZ_Server_buildLock" addPublicVariableEventHandler { + _object = ((_this select 1) select 0); + + [_object,"buildLock"] call server_updateObject; + }; // Dayz epoch custom "PVDZE_veh_Publish" addPublicVariableEventHandler {(_this select 1) spawn server_publishVeh}; @@ -75,16 +320,92 @@ if (isServer) then { //Client only if (!isDedicated) then { - "PVDZE_plr_SetDate" addPublicVariableEventHandler {setDate (_this select 1)}; + "PVDZE_plr_SetDate" addPublicVariableEventHandler { + _newdate = _this select 1; + _date = +(date); // [year, month, day, hour, minute]. + //diag_log ['Date & time received:', _newdate, 'Local date on this client:', _date]; + { + if (_x != _newdate select _forEachIndex) exitWith { + setDate _newdate; + //diag_log ['Date has been reset. Local date on this client:', date]; + }; + } forEach _date; + }; "PVDZE_plr_SetSaveTime" addPublicVariableEventHandler {DZE_SaveTime = (_this select 1)}; "PVDZE_obj_RoadFlare" addPublicVariableEventHandler {(_this select 1) spawn object_roadFlare}; "PVDZE_plr_Morph2" addPublicVariableEventHandler {(_this select 1) call player_serverModelChange}; "PVDZE_plr_Morph" addPublicVariableEventHandler {(_this select 1) call server_switchPlayer}; "PVDZE_obj_Fire" addPublicVariableEventHandler {nulexp=(_this select 1) spawn BIS_Effects_Burn}; "PVDZE_plr_FriendRQ" addPublicVariableEventHandler {(_this select 1) call player_tagFriendlyMsg}; + "PVDZ_drg_RaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"}; + "PVDZ_dayzFlies" addPublicVariableEventHandler {(_this select 1) call spawn_flies}; + //Medical + "PVCDZ_hlt_Morphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine}; + "PVCDZ_hlt_Bandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage}; + "PVCDZ_hlt_Epi" addPublicVariableEventHandler {(_this select 1) call player_medEpi}; + "PVCDZ_hlt_Transfuse" addPublicVariableEventHandler {(_this select 1) spawn player_medTransfuse; }; + "PVCDZ_hlt_Transfuse_completed" addPublicVariableEventHandler {player setVariable["TransfusionCompleted",true]; }; + "PVCDZ_hlt_PainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller}; + "PVCDZ_hlt_AntiB" addPublicVariableEventHandler {(_this select 1) call player_medAntiBiotics}; // "PVDZE_obj_Debris" addPublicVariableEventHandler {(_this select 1) call local_roadDebris}; "norrnRaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"}; "norrnRnoAnim" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\noAnim.sqf"}; + "PVCDZ_plr_Humanity" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange}; + "PVCDZ_plr_Legs" addPublicVariableEventHandler { + _entity = (_this select 1) select 0; + _entity setHit ["legs", 1]; + + if (isPlayer _entity) then { + _entity setVariable ["hit_legs", 2, true]; + }; + }; + + "PVCDZ_SetVar" addPublicVariableEventHandler { + _object = ((_this select 1) select 0); + _name = ((_this select 1) select 1); + _value = ((_this select 1) select 2); + + _object setVariable [_name,_value]; + }; + + "PVDZ_receiveUnconscious" addPublicVariableEventHandler { + _unit = ((_this select 1) select 0); + _duration = ((_this select 1) select 1); + + diag_log format["%1,%2",_unit,_duration]; + + [_unit,_duration] call fnc_usec_damageUnconscious; + _unit setVariable ["NORRN_unconscious", true, true]; + }; + + "PVCDZ_Client_processCode" addPublicVariableEventHandler { + // [_object,_result] + _object = ((_this select 1) select 0); + _result = ((_this select 1) select 1); + _codeGuess = ((_this select 1) select 2); + + + if (_result) then { + _object setVariable ["dayz_padlockLockStatus", false,true]; + _object setVariable ["isOpen", "1", true]; + _object setVariable ["dayz_padlockHistory", [], true]; + titleText [format["%1 unlocked", (typeof _object)],"PLAIN DOWN"]; + } + else + { + titleText ["Incorrect combination", "PLAIN DOWN"]; + _object setVariable ["dayz_padlockHistory", _codeGuess, true]; + }; + }; + + "PVCDZ_Client_processAccessCode" addPublicVariableEventHandler { + _codeGuess = ((_this select 1) select 0); + + titleText [format["You have set the combination to %1", _codeGuess],"PLAIN DOWN"]; + }; + + // flies and swarm sound sync + call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\client_flies.sqf"; }; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 613643bbd..134ca83f6 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -15,28 +15,65 @@ Sniper1_DZ = "Sniper1_DZ"; Camo1_DZ = "Camo1_DZ"; Soldier1_DZ = "Soldier1_DZ"; Rocket_DZ = "Rocket_DZ"; +dayz_Trash = 0; + +//Rolling Msg system +Message_1 = ""; +Message_2 = ""; +Message_3 = ""; +Message_1_time = 0; +Message_2_time = 0; +Message_3_time = 0; + +//OpenTarget timer +OpenTarget_Time = 0; AllPlayers = ["Survivor2_DZ","SurvivorWcombat_DZ","SurvivorWdesert_DZ","SurvivorWurban_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ","SurvivorW2_DZ","Bandit1_DZ","Bandit2_DZ","BanditW1_DZ","BanditW2_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ"]; +DayZ_Male = ["Survivor_DZ","Survivor1_DZ","Survivor2_DZ","Survivor3_DZ","Sniper1_DZ","Soldier1_DZ","Camo1_DZ","Bandit1_DZ","Bandit2_DZ","Soldier_Crew_PMC","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ"]; +DayZ_Female = ["SurvivorW2_DZ","BanditW1_DZ","BanditW2_DZ","SurvivorWcombat_DZ","SurvivorWurban_DZ","SurvivorWdesert_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ"]; + MeleeWeapons = ["MeleeFishingPole","MeleeCrowbar","MeleeBaseBallBatNails","MeleeBaseBallBatBarbed","MeleeBaseBallBat","Crossbow_DZ","MeleeSledge","MeleeMachete","MeleeHatchet_DZE"]; +MeleeMagazines = ["Hatchet_Swing","Crowbar_Swing","Machete_Swing","Bat_Swing","BatBarbed_Swing","BatNails_Swing","Fishing_Swing"]; +Dayz_fishingItems = ["MeleeFishingPole"]; +Dayz_plants = ["Dayz_Plant1","Dayz_Plant2","Dayz_Plant3"]; +Dayz_attachment_array = ["Attachment_ACG","Attachment_AIM"]; +DayZ_Backpacks = ["DZ_Patrol_Pack_EP1","DZ_Assault_Pack_EP1","DZ_Czech_Vest_Puch","DZ_ALICE_Pack_EP1","DZ_TK_Assault_Pack_EP1","DZ_British_ACU","DZ_CivilBackpack_EP1","DZ_Backpack_EP1","DZ_TerminalPack_EP1","DZ_CompactPack_EP1","DZ_GunBag_EP1","DZ_LargeGunBag_EP1"]; +Dayz_Gutting = ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnife1","ItemKnifeBlunt"]; +Dayz_Ignators = ["ItemMatchbox","Item5Matchbox","Item4Matchbox","Item3Matchbox","Item2Matchbox","Item1Matchbox","ItemMatchbox_DZE"]; +DayZ_fuelCans = ["ItemJerrycan","ItemFuelcan","ItemFuelBarrel"]; +DayZ_fuelCansEmpty = ["ItemJerrycanEmpty","ItemFuelcanEmpty","ItemFuelBarrelEmpty"]; +DayZ_traps = ["Trap_Cans", "TrapTripwireFlare", "TrapBearTrapSmoke", "TrapTripwireGrenade", "TrapTripwireSmoke", "TrapBearTrapFlare"]; +DayZ_ViralZeds = ["z_new_villager2","z_new_villager3","z_new_villager4","z_new_worker2","z_new_worker3","z_new_worker4"]; +DayZ_SafeObjects = ["Base_Fire_DZ","WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4","Land_Fire_DZ", "TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3", "StashMedium4", "Wire_cat1", "Sandbag1_DZ", "Fence_DZ", "Generator_DZ", "Hedgehog_DZ", "BearTrap_DZ", "DomeTentStorage", "DomeTentStorage0", "DomeTentStorage1", "DomeTentStorage2", "DomeTentStorage3", "DomeTentStorage4", "CamoNet_DZ", "Trap_Cans", "TrapTripwireFlare", "TrapBearTrapSmoke", "TrapTripwireGrenade", "TrapTripwireSmoke", "TrapBearTrapFlare"]; +DayZ_GearedObjects = ["Car", "Helicopter", "Motorcycle", "Ship", "Tank", "VaultStorage", "LockboxStorage", "TentStorage", "TentStorage_base", "StashSmall_base", "StashMedium_base" ]; +DayZ_RestingAnims = ["amovpsitmstpsnonwpstdnon_ground", "amovpsitmstpsnonwpstdnon_smoking", "amovpsitmstpsraswrfldnon_weaponcheck1", "amovpsitmstpsraswrfldnon"]; +dayz_playerAchievements = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + gear_done = false; //Cooking meatraw = [ - "FoodSteakRaw", - "FoodmeatRaw", - "FoodbeefRaw", - "FoodmuttonRaw", - "FoodchickenRaw", - "FoodrabbitRaw", - "FoodbaconRaw", + "FoodBeefRaw", + "FoodMuttonRaw", + "FoodChickenRaw", + "FoodRabbitRaw", + "FoodBaconRaw", + "FoodGoatRaw", + "FishRawTrout", + "FishRawSeaBass", + "FishRawTuna" "ItemTrout", "ItemSeaBass", "ItemTuna" ]; -exceptionsraw = ["ItemTuna"]; +exceptionsraw = ["ItemTuna","ItemSeaBass","ItemTrout","FishRawTuna","FishRawSeaBass","FishRawTrout"]; meatcooked = [ "FoodSteakCooked", "FoodmeatCooked", "FoodbeefCooked", + "FoodGoatCooked", + "FishCookedTrout", + "FishCookedSeaBass", + "FishCookedTuna" "FoodmuttonCooked", "FoodchickenCooked", "FoodrabbitCooked", @@ -51,6 +88,49 @@ no_output_food = ["FoodMRE", "FoodPistachio", "FoodNutmix","FoodBioMeat"]+meatco // Food with increased chance for infection. badfood = ["FoodBioMeat","FoodCanUnlabeled"]; +boil_tin_cans = +[ + "TrashTinCan", + "FoodCanGriffEmpty", + "FoodCanBadguyEmpty", + "FoodCanBoneboyEmpty", + "FoodCanCornEmpty", + "FoodCanCurgonEmpty", + "FoodCanDemonEmpty", + "FoodCanFraggleosEmpty", + "FoodCanHerpyEmpty", + "FoodCanDerpyEmpty", + "FoodCanOrlokEmpty", + "FoodCanPowellEmpty", + "FoodCanTylersEmpty", + "FoodCanUnlabeledEmpty", + "FoodCanRusUnlabeledEmpty", + "FoodCanRusStewEmpty", + "FoodCanRusPorkEmpty", + "FoodCanRusPeasEmpty", + "FoodCanRusMilkEmpty", + "FoodCanRusCornEmpty", + "ItemSodaEmpty", + "ItemSodaClaysEmpty", + "ItemSodaDrwasteEmpty", + "ItemSodaFrankaEmpty", + "ItemSodaGrapeDrinkEmpty", + "ItemSodaLemonadeEmpty", + "ItemSodaLirikEmpty", + "ItemSodaLvgEmpty", + "ItemSodaMtngreenEmpty", + "ItemSodaMzlyEmpty", + "ItemSodaPeppsyEmpty", + "ItemSodaR4z0rEmpty", + "ItemSodaRabbitEmpty", + "ItemSodaRocketFuelEmpty", + "ItemSodaSacriteEmpty", + //"ItemSodaSherbetEmpty", + "ItemSodaSmashtEmpty", + "FoodCanPotatoesEmpty", + "FoodCanBeefEmpty" +]; + food_with_output=[ "FoodCanBakedBeans", "FoodCanSardines", @@ -152,7 +232,8 @@ boil_tin_cans = [ "ItemSodaMzlyEmpty", "ItemSodaRabbitEmpty" ]; - +canPickup = false; +pickupInit = false; dayz_combination = ""; dayz_humanitytarget = ""; dayz_combatLog = ""; @@ -190,6 +271,12 @@ dayz_locationsActive = []; Dayz_GUI_R = 0.38; // 0.7 Dayz_GUI_G = 0.63; // -0.63 Dayz_GUI_B = 0.26; // -0.26 +//actions blockers +a_player_cooking = false; +a_player_boil = false; +a_player_jerryfilling = false; +a_player_repairing = false; + if (isNil "Dayz_Dark_UI") then { Dayz_Dark_UI = false; }; @@ -206,6 +293,7 @@ dayz_resetSelfActions = { s_player_packvault = -1; s_player_lockvault = -1; s_player_unlockvault = -1; + s_player_packtentinfected = -1; s_player_fillwater = -1; s_player_fillwater2 = -1; s_player_fillfuel = -1; @@ -236,6 +324,8 @@ dayz_resetSelfActions = { s_player_speeddog = -1; s_player_calldog = -1; s_player_feeddog = -1; + s_player_fillfuel20 = -1; + s_player_siphonfuel = -1; s_player_waterdog = -1; s_player_staydog = -1; s_player_trackdog = -1; @@ -246,6 +336,12 @@ dayz_resetSelfActions = { s_player_information = -1; s_player_fuelauto = -1; s_player_fuelauto2 = -1; + s_player_fishing = -1; + s_player_fishing_veh = -1; + s_player_gather = -1; + s_player_debugCheck = -1; + s_player_destorytent = -1; + s_player_attach_bomb = -1; s_player_fillgen = -1; s_player_upgrade_build = -1; s_player_maint_build = -1; @@ -253,6 +349,16 @@ dayz_resetSelfActions = { s_player_towing = -1; s_halo_action = -1; s_player_SurrenderedGear = -1; + s_player_upgradestroage = -1; + s_player_Drinkfromhands = -1; + s_player_lockhouse = -1; + s_player_unlockhouse = -1; + s_player_openGate = -1; + s_player_CloseGate = -1; + s_player_breakinhouse = -1; + s_player_setCode = -1; + s_player_BuildUnLock = -1; + s_player_BuildLock = -1; s_player_maintain_area = -1; s_player_maintain_area_preview = -1; s_player_heli_lift = -1; @@ -266,11 +372,19 @@ dayz_resetSelfActions = { }; call dayz_resetSelfActions; +dayz_resetUpgradeActions = { + s_player_disassembly = -1; + s_player_building = -1; + s_player_maintenance = -1; +}; +call dayz_resetUpgradeActions; //Engineering variables -s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull]; +s_player_lastTarget = objNull; s_player_repairActions = []; s_player_lockunlock = []; s_player_lockUnlockInside = []; +//for carry slot since determining mouse pos doesn't work right +mouseOverCarry = false; // Custom s_player_madsci = []; @@ -282,6 +396,7 @@ snapGizmos = []; snapGizmosNearby = []; //Initialize Medical Variables +force_dropBody = false; r_interrupt = false; r_doLoop = false; r_self = false; @@ -296,6 +411,7 @@ r_player_unconsciousInputDisabled = false; r_player_dead = false; r_player_unconscious = false; r_player_infected = false; +r_player_Sepsis = [false, 0]; r_player_injured = false; r_player_inpain = false; r_player_loaded = false; @@ -304,6 +420,17 @@ r_fracture_legs = false; r_fracture_arms = false; r_player_vehicle = player; r_player_blood = 12000; +//Blood Regen +r_player_bloodregen = 0; +//Blood Gain Per Sec +r_player_bloodgainpersec = 0; +//Blood Loss Per Sec +r_player_bloodlosspersec = 0; +//Blood Per Sec (gain - loss) +r_player_bloodpersec = 0; +//Food Stack +r_player_foodstack = 1; +//player skill r_player_lowblood = false; r_player_timeout = 0; r_player_bloodTotal = r_player_blood; @@ -316,6 +443,27 @@ r_action_targets = []; r_pitchWhine = false; r_isBandit = false; isInTraderCity = false; +dayz_DisplayGenderSelect = true; +//blood test vars +r_A_watered = false; +r_B_watered = false; +r_D_watered = false; +r_control_watered = false; +r_canClick_resultsCard = false; +r_resultsCard_Clicked = false; +r_water_clicked = false; +r_needleclicked = 0; +r_needleReset = false; +r_control_done = false; +r_antiA_done = false; +r_antiB_done = false; +r_antiD_done = false; +carryClick = false; +dayz_workingInprogress = false; + +//INT Nutrition Info +r_player_Nutrition = [0]; //[Calories] +r_player_nutritionMuilpty = 2; NORRN_dropAction = -1; DZE_PROTOBOX = objNull; @@ -448,19 +596,52 @@ PVDZE_plr_TradeMenu = []; // For all traders PVDZE_plr_DeathB = []; //DayZ settings +dayz_maxAnimals = 8; +dayz_maxPlants = 3; DAYZ_agentnumber = 0; dayz_animalDistance = 600; +dayz_plantDistance = 600; dayz_zSpawnDistance = 1000; dayz_maxMaxModels = 80; // max quantity of Man models (player || Z, dead || alive) around players. Below this limit we can spawn Z // max quantity of loot piles around players. Below this limit we can spawn some loot -dayz_spawnArea = 200; // radius around player where we can spawn loot & Z +dayz_spawnArea = 300; // radius around player where we can spawn loot & Z dayz_cantseeDist = 150; // distance from which we can spawn a Z in front of any player without ray-tracing && angle checks dayz_cantseefov = 70; // half player field-of-view. Visible Z won't be spawned in front of any near players -dayz_canDelete = 300; // Z, further than this distance from its "owner", will be deleted +dayz_canDelete = 350; // Z, further than this distance from its "owner", will be deleted +dayz_traps = []; +dayz_traps_active = []; +dayz_traps_trigger = []; +//Remove +if(isNil "dayz_ForcefullmoonNights") then { + dayz_ForcefullmoonNights = false; //force full moon nights. +}; +if(isNil "dayz_bleedingeffect") then { + dayz_bleedingeffect = 3; +};//dayz_bleedingeffect = 3; //1= blood on the ground, 2= partical effect, 3 = both. +if(isNil "dayz_temperature_override") then { + dayz_temperature_override = false; +}; + +//Settings Not under dayz_settings +if(isNil "dayz_attackRange") then { + dayz_attackRange = 3; + +}; +if(isNil "dayz_DamageMultiplier") then { + dayz_DamageMultiplier = 1; + +}; if(isNil "dayz_quickSwitch") then { dayz_quickSwitch = false; //Enable quick weapon switch, }; +//Will be moved to map +if(isNil "dayz_infectiouswaterholes") then { + dayz_infectiouswaterholes = true; //Enable infected waterholes +}; +if(isNil "dayz_POIs") then { + dayz_POIs = true; //Enable POI's +}; if(isNil "DZE_SelfTransfuse") then { DZE_SelfTransfuse = false; }; @@ -577,6 +758,70 @@ if(isNil "DZE_maintainRange") then { DZE_maintainRange = ((DZE_PlotPole select 0)+20); }; +if(isNil "dayz_presets") then { dayz_presets = "Vanilla"; }; + +switch (dayz_presets) do { + case "Custom": { //Custom + if(isNil "dayz_enableGhosting") then { dayz_enableGhosting = false; }; + if(isNil "dayz_ghostTimer") then { dayz_ghostTimer = 120; }; + if(isNil "dayz_spawnselection") then { dayz_spawnselection = 0; }; + if(isNil "dayz_spawncarepkgs_clutterCutter") then { dayz_spawncarepkgs_clutterCutter = 0; }; + if(isNil "dayz_spawnCrashSite_clutterCutter") then { dayz_spawnCrashSite_clutterCutter = 0; }; + if(isNil "dayz_spawnInfectedSite_clutterCutter") then { dayz_spawnInfectedSite_clutterCutter = 0; }; + if(isNil "dayz_bleedingeffect") then { dayz_bleedingeffect = 2; }; + if(isNil "dayz_ForcefullmoonNights") then { dayz_ForcefullmoonNights = false; }; + if(isNil "dayz_OpenTarget_TimerTicks") then { dayz_OpenTarget_TimerTicks = 60 * 10; }; + if(isNil "dayz_temperature_override") then { dayz_temperature_override = true; }; + if(isNil "dayz_nutritionValuesSystem") then { dayz_nutritionValuesSystem = false; }; + //Not implmented yet + if(isNil "dayz_classicBloodBagSystem") then { dayz_classicBloodBagSystem = false; }; + }; + case "Classic": { //Classic + dayz_enableGhosting = false; //Enable disable the ghosting system. + dayz_ghostTimer = 120; //Sets how long in seconds a player must be dissconnected before being able to login again. + dayz_spawnselection = 0; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits + dayz_spawncarepkgs_clutterCutter = 0; //0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnCrashSite_clutterCutter = 0; // heli crash options 0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass + dayz_bleedingeffect = 2; //1= blood on the ground, 2= partical effect, 3 = both. + dayz_ForcefullmoonNights = false; // Forces night time to be full moon. + dayz_OpenTarget_TimerTicks = 60 * 10; //how long can a player be freely attacked for after attacking someone unprovoked. + dayz_temperature_override = true; // Set to true to disable all temperature changes. + dayz_nutritionValuesSystem = false; //Enables nutrition system + //Not implmented yet + dayz_classicBloodBagSystem = true; //Enables one type of bloodbag + }; + case "Elite": { //Elite + dayz_enableGhosting = true; //Enable disable the ghosting system. + dayz_ghostTimer = 90; //Sets how long in seconds a player must be dissconnected before being able to login again. + dayz_spawnselection = 0; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits + dayz_spawncarepkgs_clutterCutter = 0; //0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnCrashSite_clutterCutter = 0; // heli crash options 0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass + dayz_bleedingeffect = 3; //1= blood on the ground, 2= partical effect, 3 = both. + dayz_ForcefullmoonNights = false; // Forces night time to be full moon. + dayz_OpenTarget_TimerTicks = 60 * 25; //how long can a player be freely attacked for after attacking someone unprovoked. + dayz_temperature_override = false; // Set to true to disable all temperature changes. + dayz_nutritionValuesSystem = true; //Enables nutrition system + //Not implmented yet + dayz_classicBloodBagSystem = false; //Enables one type of bloodbag + }; + default { //Vanilla + dayz_enableGhosting = true; //Enable disable the ghosting system. + dayz_ghostTimer = 60; //Sets how long in seconds a player must be disconnected before being able to login again. + dayz_spawnselection = 1; //Turn on spawn selection 0 = random only spawns, 1 = Spawn choice based on limits + dayz_spawncarepkgs_clutterCutter = 0; //0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnCrashSite_clutterCutter = 0; // heli crash options 0 = loot hidden in grass, 1 = loot lifted and 2 = no grass + dayz_spawnInfectedSite_clutterCutter = 0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass + dayz_bleedingeffect = 3; //1= blood on the ground, 2= partical effect, 3 = both. + dayz_ForcefullmoonNights = true; // Forces night time to be full moon. + dayz_OpenTarget_TimerTicks = 60 * 10; //how long can a player be freely attacked for after attacking someone unprovoked. + dayz_temperature_override = false; // Set to true to disable all temperature changes. + dayz_nutritionValuesSystem = true; //Enables nutrition system + //Not implmented yet + dayz_classicBloodBagSystem = false; //Enables one type of bloodbag + }; +}; DZE_REPLACE_WEAPONS = [["Crossbow","ItemMatchbox","ItemHatchet"],["Crossbow_DZ","ItemMatchbox_DZE","ItemHatchet_DZE"]]; if(isNil "dayz_zedSpawnVehCount") then { @@ -627,6 +872,19 @@ if(isServer) then { dayz_players = []; dead_bodyCleanup = []; needUpdate_objects = []; + Server_InfectedCamps = []; + //dayz_spawnCrashSite_clutterCutter=0; // helicrash spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass + //dayz_spawnInfectedSite_clutterCutter=0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass + //Objects to remove when killed. + DayZ_removableObjects = ["Wire_cat1", "Sandbag1_DZ", "Hedgehog_DZ", "CamoNet_DZ", "Trap_Cans", "TrapTripwireFlare", "TrapBearTrapSmoke", "TrapTripwireGrenade", "TrapTripwireSmoke", "TrapBearTrapFlare"]; + //[10416.695, 4198.4634],[7982.2563, 1419.8256],[10795.93, 1419.8263],[7966.083, 4088.7463],[9259.7266, 2746.1985],[5200.5234, 3915.3274],[6494.1665, 2572.7798],[5216.6968, 1246.407],[2564.7244, 3915.3296],[3858.3674, 2572.782],[2580.8977, 1246.4092],[13398.995, 4400.5874],[12242.025, 2948.3196],[13551.842, 1832.2257],[14870.512, 3009.5117],[-178.19415, 1062.4478],[1099.2754, 2388.8206],[-194.36755, 3731.3679],[10394.215, 8322.1719],[7959.7759, 5543.5342],[10773.449, 5543.5342], + dayz_grid =[[7943.6025, 8212.4551],[9237.2461, 6869.9063],[5178.043, 8039.0361],[6471.686, 6696.4883],[5194.2163, 5370.1152],[2542.2439, 8039.0381],[3835.887, 6696.4902],[2558.4172, 5370.1172],[13376.514, 8524.2969],[12219.544, 7072.0273],[13529.361, 5955.9336],[14848.032, 7133.2197],[-200.67474, 5186.1563],[1076.7949, 6512.5283],[-216.84814, 7855.0771],[10293.751, 12197.736],[7859.312, 9419.0996],[10672.988, 9419.0996],[7843.1387, 12088.021],[9136.7822, 10745.474],[5077.5791, 11914.601],[6371.2222, 10572.052],[5093.7524, 9245.6816],[2441.78, 11914.604],[3735.4231, 10572.055],[2457.9534, 9245.6816],[13276.053, 12399.861],[12119.08, 10947.596],[13428.897, 9831.501],[14747.566, 11008.786],[-301.13867, 9061.7207],[976.33112, 10388.096],[-317.31201, 11730.642],[10271.271, 16321.429],[7836.8315, 13542.813],[10650.506, 13542.813],[7820.6582, 16211.718],[9114.3018, 14869.175],[5055.0986, 16038.3],[6348.7417, 14695.758],[5071.272, 13369.392],[2419.2996, 16038.305],[3712.9426, 14695.76],[2435.4729, 13369.392],[13253.568, 16523.553],[12096.6, 15071.295],[13406.416, 13955.209],[14725.089, 15132.486],[-323.61914, 13185.43],[953.85059, 14511.8],[-339.79248, 15854.346]]; + dayz_gridsActive = []; + dayz_seedloot = []; + dayz_deseedloot = []; + dayz_ghostPlayers = []; + dayz_activePlayers = []; + dayz_died = []; DZE_DYN_AntiStuck = 0; DZE_DYN_AntiStuck2nd = 0; @@ -662,11 +920,47 @@ if(isServer) then { }; if(!isDedicated) then { - + //Establish Location Streaming + _funcGetLocation = + { + dayz_Locations = []; + for "_i" from 0 to ((count _this) - 1) do + { + private ["_location","_config","_locHdr","_position","_size","_type"]; + //Get Location Data from config + _config = (_this select _i); + _position = getArray (_config >> "position"); + _locHdr = configName _config; + _size = getNumber (_config >> "size"); + dayz_Locations set [count dayz_Locations, [_position,_locHdr,_size]]; + }; + }; + _cfgLocation = configFile >> "CfgTownGeneratorChernarus"; + _cfgLocation call _funcGetLocation; + + _funcGetGrid = + { + dayz_GridSystem = []; + for "_i" from 0 to ((count _this) - 1) do + { + private ["_location","_config","_locHdr","_position","_size","_type"]; + _config = (_this select _i); + _position = getArray (_config >> "position"); + _locHdr = configName _config; + _size = getNumber (_config >> "size"); + dayz_GridSystem set [count dayz_GridSystem, [_position,_locHdr,_size]]; + }; + }; + _cfggrid = configFile >> "CfgGrid"; + _cfggrid call _funcGetGrid; dayz_spawnPos = getPosATL player; dayz_buildingMonitor = []; //Buildings to check dayz_bodyMonitor = []; + dayz_flyMonitor = []; //used for monitor flies + dayz_zedMonitor = []; + dayz_buildingBubbleMonitor = []; + dayz_gridsActive = []; // weather control var zeroPreviousWeather = [0,0,[0,0],0]; @@ -691,7 +985,8 @@ if(!isDedicated) then { dayz_hunger = 0; dayz_thirst = 0; dayz_combat = 0; - dayz_preloadFinished = false; + dayz_nutrition = 0; + dayz_preloadFinished = true; dayz_statusArray = [1,1]; dayz_disAudial = 0; dayz_disVisual = 0; @@ -720,23 +1015,33 @@ if(!isDedicated) then { dayz_authed = false; dayz_panicCooldown = 0; dayz_areaAffect = 2.5; - dayz_heartBeat = false; + dayz_monitorPeriod = 0.6; // number of seconds between each player_zombieCheck calls + dayz_heartBeat = false; dayzClickTime = 0; //Current local dayz_spawnZombies = 0; dayz_swarmSpawnZombies = 0; //Max local + dayz_maxLocalZombies = 15; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z dayz_CurrentNearByZombies = 0; //Max NearBy if (isNil "dayz_maxNearByZombies") then { - dayz_maxNearByZombies = 60; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z + dayz_maxNearByZombies = 30; // max quantity of Z controlled by local gameclient, used by player_spawnCheck. Below this limit we can spawn Z //Current total }; dayz_currentGlobalZombies = 0; //Max global zeds. if (isNil "dayz_maxGlobalZeds") then { - dayz_maxGlobalZeds = 3000; + dayz_maxGlobalZeds = 1500; }; +//Animals + dayz_currentGlobalAnimals = 0; + dayz_maxGlobalAnimals = 80; +//Plnats + dayz_currentGlobalPlants = 0; + dayz_maxGlobalPlants = 500; +//Loot + r_player_divideinvehicle = 0; if (isNil "dayz_spawnDelay") then { dayz_spawnDelay = 120; }; @@ -759,12 +1064,17 @@ if(!isDedicated) then { dayz_scaleLight = 0; dayzDebug = false; dayzState = -1; + dayz_onBack = ""; + dayz_fishingInprogress = false; + dayz_siphonFuelInProgress = false; + dayz_salvageInProgress = false; + lastSpawned = diag_tickTime; + lastSepsis = 0; //uiNamespace setVariable ['DAYZ_GUI_display',displayNull]; //if (uiNamespace getVariable ['DZ_displayUI', 0] == 2) then { // dayzDebug = true; //}; - dayz_onBack = ""; - dayz_onBackActive = false; + dayz_dodge = false; DZE_ActionInProgress = false; // DayZ Epoch Client only variables @@ -835,4 +1145,5 @@ if(!isDedicated) then { DZE_SaveTime = 30; Dayz_constructionContext = []; + Dayz_freefall = [ time, 0, 0.1 ]; }; diff --git a/SQF/dayz_code/init/veh_resetEH.sqf b/SQF/dayz_code/init/veh_resetEH.sqf index b17ac1592..4be4ae7be 100644 --- a/SQF/dayz_code/init/veh_resetEH.sqf +++ b/SQF/dayz_code/init/veh_resetEH.sqf @@ -4,16 +4,21 @@ ASSIGN DAMAGE HANDLER TO A UNIT - unit call fnc_veh_ResetEH ************************************************************/ -_this removeAllEventHandlers "HandleDamage"; -_this removeAllEventHandlers "Killed"; -_this addeventhandler ["HandleDamage",{ _this call vehicle_handleDamage } ]; -_this addeventhandler ["Killed",{ _this call vehicle_handleKilled } ]; +if (_this isKindOf "AllVehicles") then { -if (isServer) then { - _this removeAllEventHandlers "GetOut"; - _this removeAllEventHandlers "GetIn"; - _this addEventHandler ["GetOut", {[(_this select 0),"all"] call server_updateObject;}]; - _this addEventHandler ["GetIn", {[(_this select 0),"all"] call server_updateObject; _this call server_checkIfTowed;}]; -}; + _this removeAllEventHandlers "HandleDamage"; + _this removeAllEventHandlers "Killed"; + _this addeventhandler ["HandleDamage",{ _this call fnc_veh_handleDam } ]; + _this addeventhandler ["Killed",{ _this call fnc_veh_handleKilled } ]; + _this addEventHandler ["GetOut", { _this call vehicle_getOut }]; -//diag_log(format["%1: all EH reset for %2", __FILE__, _this]); \ No newline at end of file + if (isServer) then { + _this removeAllEventHandlers "GetOut"; + _this removeAllEventHandlers "GetIn"; + _this addEventHandler ["GetOut", {[(_this select 0),"all",true] call server_updateObject;}]; + _this addEventHandler ["GetIn", {[(_this select 0),"all",true] call server_updateObject; _this call server_checkIfTowed;}]; + //_this addEventHandler ["Engine", { }]; + }; + + //diag_log(format["%1: all EH reset for %2", __FILE__, _this]); +}; \ No newline at end of file