From 5521090b9e177547c87dad97281a1c6dfe77d28f Mon Sep 17 00:00:00 2001 From: A Clark Date: Fri, 7 Dec 2012 20:29:23 -0600 Subject: [PATCH] 1.7.5.D1202 --- dayz_code/actions/player_addToolbelt.sqf | 6 +- dayz_code/actions/player_countmagazines.sqf | 4 +- dayz_code/actions/player_eat.sqf | 2 +- dayz_code/actions/player_flipvehicle.sqf | 22 ++ dayz_code/actions/player_useMeds.sqf | 4 +- dayz_code/actions/player_wearClothes.sqf | 2 +- dayz_code/actions/tent_pack.sqf | 1 - dayz_code/actions/water_fill.sqf | 2 +- dayz_code/cfgLoot.hpp | 10 +- dayz_code/cfgVehicles.hpp | 8 +- dayz_code/compile/building_spawnLoot.sqf | 13 +- dayz_code/compile/building_spawnZombies.sqf | 11 +- dayz_code/compile/fn_damageHandler.sqf | 14 +- dayz_code/compile/fn_inString.sqf | 59 +-- dayz_code/compile/fn_selfActions.sqf | 74 +++- dayz_code/compile/fn_temperatur.sqf | 18 +- dayz_code/compile/player_alertZombies.sqf | 4 +- dayz_code/compile/player_animalCheck.sqf | 2 +- dayz_code/compile/player_checkStealth.sqf | 2 +- dayz_code/compile/player_fired.sqf | 6 +- dayz_code/compile/player_gearSync.sqf | 4 +- dayz_code/compile/player_spawnCheck.sqf | 150 +++++--- dayz_code/compile/player_updateGui.sqf | 149 +++++--- dayz_code/compile/player_weaponFiredNear.sqf | 9 +- dayz_code/compile/player_zombieAttack.sqf | 79 ++-- dayz_code/compile/player_zombieCheck.sqf | 5 +- dayz_code/compile/spawn_loot.sqf | 6 +- dayz_code/compile/zombie_findTarget.sqf | 4 +- dayz_code/compile/zombie_generate.sqf | 5 +- dayz_code/config.cpp | 74 ++-- dayz_code/gui/gender_menu_man.paa | Bin 63024 -> 47516 bytes dayz_code/gui/gender_menu_woman.paa | Bin 57502 -> 61012 bytes dayz_code/gui/status_bleeding_ca.paa | Bin 5625 -> 5625 bytes dayz_code/gui/status_blood_inside_-1_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_1_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_2_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_3_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_4_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_5_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_blood_inside_6_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_food_inside_0_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_food_inside_1_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_food_inside_2_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_food_inside_3_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_food_inside_4_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_temp_0_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_temp_1_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_temp_2_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_temp_3_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_temp_4_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_thirst_inside_0_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_thirst_inside_1_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_thirst_inside_2_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_thirst_inside_3_ca.paa | Bin 0 -> 5625 bytes dayz_code/gui/status_thirst_inside_4_ca.paa | Bin 0 -> 5625 bytes dayz_code/init/compiles.sqf | 36 +- dayz_code/init/publicEH.sqf | 20 +- dayz_code/init/variables.sqf | 6 +- dayz_code/rscTitles.hpp | 14 +- dayz_code/stringtable.xml | 50 +-- dayz_code/system/player_monitor.fsm | 112 +++--- dayz_code/system/zombie_agent.fsm | 6 +- dayz_server/compile/disco_damageHandler.sqf | 140 ++++++++ dayz_server/compile/disco_playerDeath.sqf | 54 +++ dayz_server/compile/disco_playerMorph.sqf | 218 +++++++++++ .../compile/server_onPlayerDisconnect.sqf | 11 +- dayz_server/compile/server_playerLogin.sqf | 18 +- dayz_server/compile/server_playerSetup.sqf | 2 +- dayz_server/compile/server_playerSync.sqf | 2 +- dayz_server/compile/server_publishObject.sqf | 4 +- dayz_server/compile/server_updateObject.sqf | 1 + dayz_server/init/server_functions.sqf | 51 ++- dayz_server/system/server_cleanup.fsm | 339 +++++++++--------- dayz_server/system/server_monitor.sqf | 1 - 74 files changed, 1258 insertions(+), 576 deletions(-) create mode 100644 dayz_code/actions/player_flipvehicle.sqf create mode 100644 dayz_code/gui/status_blood_inside_-1_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_1_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_2_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_3_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_4_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_5_ca.paa create mode 100644 dayz_code/gui/status_blood_inside_6_ca.paa create mode 100644 dayz_code/gui/status_food_inside_0_ca.paa create mode 100644 dayz_code/gui/status_food_inside_1_ca.paa create mode 100644 dayz_code/gui/status_food_inside_2_ca.paa create mode 100644 dayz_code/gui/status_food_inside_3_ca.paa create mode 100644 dayz_code/gui/status_food_inside_4_ca.paa create mode 100644 dayz_code/gui/status_temp_0_ca.paa create mode 100644 dayz_code/gui/status_temp_1_ca.paa create mode 100644 dayz_code/gui/status_temp_2_ca.paa create mode 100644 dayz_code/gui/status_temp_3_ca.paa create mode 100644 dayz_code/gui/status_temp_4_ca.paa create mode 100644 dayz_code/gui/status_thirst_inside_0_ca.paa create mode 100644 dayz_code/gui/status_thirst_inside_1_ca.paa create mode 100644 dayz_code/gui/status_thirst_inside_2_ca.paa create mode 100644 dayz_code/gui/status_thirst_inside_3_ca.paa create mode 100644 dayz_code/gui/status_thirst_inside_4_ca.paa create mode 100644 dayz_server/compile/disco_damageHandler.sqf create mode 100644 dayz_server/compile/disco_playerDeath.sqf create mode 100644 dayz_server/compile/disco_playerMorph.sqf diff --git a/dayz_code/actions/player_addToolbelt.sqf b/dayz_code/actions/player_addToolbelt.sqf index c5db9a4bd..6105ec1d5 100644 --- a/dayz_code/actions/player_addToolbelt.sqf +++ b/dayz_code/actions/player_addToolbelt.sqf @@ -1,6 +1,6 @@ private["_item","_config","_onLadder","_create","_isOk","_config2","_consume"]; _item = _this; -_config = configFile >> "CfgWeapons" >> _item; +_config = configFile >> "cfgWeapons" >> _item; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]}; @@ -13,11 +13,11 @@ call gear_ui_init; //Add new item _create = getArray (_config >> "ItemActions" >> "Toolbelt" >> "output") select 0; -_config2 = configFile >> "CfgWeapons" >> _create; +_config2 = configFile >> "cfgWeapons" >> _create; //Remove magazines if needed if (_item in ["MeleeHatchet","MeleeCrowbar"]) then { - _magType = ([] + getArray (configFile >> "CfgWeapons" >> _item >> "magazines")) select 0; + _magType = ([] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines")) select 0; _meleeNum = ({_x == _magType} count magazines player); for "_i" from 1 to _meleeNum do { player removeMagazine _magType; diff --git a/dayz_code/actions/player_countmagazines.sqf b/dayz_code/actions/player_countmagazines.sqf index d3a7ddbc0..9163639da 100644 --- a/dayz_code/actions/player_countmagazines.sqf +++ b/dayz_code/actions/player_countmagazines.sqf @@ -9,7 +9,7 @@ disableUserInput true; _dialog = findDisplay 106; _created = false; if ( isNull _dialog ) then { - startLoadingScreen [""]; + //startLoadingScreen [""]; createGearDialog [player, "RscDisplayGear"]; _dialog = findDisplay 106; _created = true; @@ -48,7 +48,7 @@ for "_i" from 122 to 129 do }; if ( _created ) then { closeDialog 0; - endLoadingScreen; + //endLoadingScreen; }; disableUserInput false; dayz_Magazines=_magazineArray; diff --git a/dayz_code/actions/player_eat.sqf b/dayz_code/actions/player_eat.sqf index b02af46a0..b2da30690 100644 --- a/dayz_code/actions/player_eat.sqf +++ b/dayz_code/actions/player_eat.sqf @@ -1,4 +1,4 @@ -private["_hasFood","_item","_text","_key"]; +private["_onLadder","_item","_hasfoodmag","_config","_text","_regen","_update","_id","_display","_control","_bloodVal","_ctrlBlood"]; disableserialization; call gear_ui_init; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; diff --git a/dayz_code/actions/player_flipvehicle.sqf b/dayz_code/actions/player_flipvehicle.sqf new file mode 100644 index 000000000..d158263eb --- /dev/null +++ b/dayz_code/actions/player_flipvehicle.sqf @@ -0,0 +1,22 @@ +private["_object","_position"]; +_object = _this select 3; + +_position = [position _object,0,0,0,0,0,0,position player] call BIS_fnc_findSafePos; + +//Standup +//player playMove "amovpercmstpsraswrfldnon_amovpknlmstpslowwrfldnon"; +//sleep 1; +//waitUntil { animationState player != "amovpercmstpsraswrfldnon_amovpknlmstpslowwrfldnon"}; + +//Kneel Down +player playMove "amovpknlmstpslowwrfldnon_amovpercmstpsraswrfldnon"; +waitUntil { animationState player != "amovpknlmstpslowwrfldnon_amovpercmstpsraswrfldnon"}; +sleep 2; +_object setpos _position; +_id = [player,20,true,(getPosATL player)] spawn player_alertZombies; +sleep 3; + + +//Other possibilities +//[_object,0, 0] call bis_fnc_setpitchbank; +//_object setpos [getpos _object select 0, getpos _object select 1, 0]; \ No newline at end of file diff --git a/dayz_code/actions/player_useMeds.sqf b/dayz_code/actions/player_useMeds.sqf index 65664fe7a..094643d01 100644 --- a/dayz_code/actions/player_useMeds.sqf +++ b/dayz_code/actions/player_useMeds.sqf @@ -1,4 +1,4 @@ -private["_item"]; +private["_item","_onLadder","_hasmeditem","_config","_text","_id"]; _item = _this; call gear_ui_init; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; @@ -26,7 +26,7 @@ switch (_item) do { }; case "ItemHeatPack": { player removeMagazine "ItemHeatPack"; - dayz_temperatur = (dayz_temperatur + 5) max dayz_temperaturmax; + dayz_temperatur = (dayz_temperatur + 5) min dayz_temperaturmax; cutText [localize "str_player_27", "PLAIN DOWN"]; }; }; \ No newline at end of file diff --git a/dayz_code/actions/player_wearClothes.sqf b/dayz_code/actions/player_wearClothes.sqf index df562ed57..1c5af84b3 100644 --- a/dayz_code/actions/player_wearClothes.sqf +++ b/dayz_code/actions/player_wearClothes.sqf @@ -2,7 +2,7 @@ _item spawn player_wearClothes; TODO: female */ -private["_item","_isFemale","_itemNew","_item","_onLadder","_model","_hasclothesitem","_config","_text"]; +private["_item","_onLadder","_hasclothesitem","_config","_text","_isFemale","_myModel","_humanity","_isBandit","_isHero","_itemNew","_model"]; _item = _this; call gear_ui_init; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; diff --git a/dayz_code/actions/tent_pack.sqf b/dayz_code/actions/tent_pack.sqf index 365c2dde1..cb7ee89ed 100644 --- a/dayz_code/actions/tent_pack.sqf +++ b/dayz_code/actions/tent_pack.sqf @@ -1,4 +1,3 @@ private["_obj","_bag","_pos"]; -hintSilent format["DEBUG: %1",_this]; _obj = _this select 3; _obj spawn player_packTent; diff --git a/dayz_code/actions/water_fill.sqf b/dayz_code/actions/water_fill.sqf index 86057479d..577f8b143 100644 --- a/dayz_code/actions/water_fill.sqf +++ b/dayz_code/actions/water_fill.sqf @@ -1,4 +1,4 @@ -private["_hasFood","_item","_text","_qty"]; +private["_playerPos","_canFill","_isPond","_isWell","_pondPos","_objectsWell","_onLadder","_hasbottleitem","_config","_item","_text","_objectsPond","_qty","_id"]; call gear_ui_init; diff --git a/dayz_code/cfgLoot.hpp b/dayz_code/cfgLoot.hpp index 4fa45a8de..ea98584b1 100644 --- a/dayz_code/cfgLoot.hpp +++ b/dayz_code/cfgLoot.hpp @@ -141,13 +141,15 @@ class CfgLoot { "ItemPainkiller", "ItemMorphine", "ItemEpinephrine", + "ItemAntibiotic", "ItemHeatPack" }, { - 1, + 0.8, 0.5, 0.5, 0.2, + 0.3, 0.1 } }; @@ -161,12 +163,12 @@ class CfgLoot { "ItemAntibiotic" }, { - 0.43, + 0.33, 0.17, 0.13, 0.09, 0.17, - 0.02 + 0.12 } }; military[] = { @@ -176,6 +178,7 @@ class CfgLoot { "ItemSodaCoke", "ItemSodaPepsi", "ItemBandage", + "ItemAntibiotic", "ItemPainkiller", "ItemMorphine", "30Rnd_556x45_Stanag", @@ -214,6 +217,7 @@ class CfgLoot { 0.01, 0.04, 0.04, + 0.04, 0.01, 0.04, 0.04, diff --git a/dayz_code/cfgVehicles.hpp b/dayz_code/cfgVehicles.hpp index 7fed93695..fdbafc485 100644 --- a/dayz_code/cfgVehicles.hpp +++ b/dayz_code/cfgVehicles.hpp @@ -320,7 +320,13 @@ class CfgVehicles { driverCanSee = 2+16+32; }; //AH6X_EP1 - class AH6X_EP1{ scope = 0; }; + class AH6X_EP1 + { + scope = 0; + commanderCanSee = 2+16+32; + gunnerCanSee = 2+16+32; + driverCanSee = 2+16+32; + }; class AH6X_DZ: AH6X_EP1 { displayName = "AH6X_DZ"; diff --git a/dayz_code/compile/building_spawnLoot.sqf b/dayz_code/compile/building_spawnLoot.sqf index 250c5881d..bf1bcc79d 100644 --- a/dayz_code/compile/building_spawnLoot.sqf +++ b/dayz_code/compile/building_spawnLoot.sqf @@ -1,21 +1,15 @@ -private["_serial","_positions","_lootGroup","_iArray","_iItem","_iClass","_iPos","_item","_mags","_qty","_max","_tQty","_canType","_obj","_type","_nearBy","_allItems","_items","_itemType","_itemChance","_lootChance","_weights","_index"]; +private["_obj","_type","_config","_positions","_lootChance","_itemType","_itemChance","_iPos2","_rnd","_nearBy","_weights","_index","_iArray","_item"]; _obj = _this select 0; -_fastRun = _this select 1; - _type = typeOf _obj; _config = configFile >> "CfgBuildingLoot" >> _type; - _positions = [] + getArray (_config >> "lootPos"); //diag_log ("LOOTSPAWN: READ:" + str(_type)); _lootChance = getNumber (_config >> "lootChance"); _itemType = [] + getArray (_config >> "itemType"); //diag_log ("LOOTSPAWN: READ:" + str(_itemType)); _itemChance = [] + getArray (_config >> "itemChance"); - //diag_log ("LOOTSPAWN: Type " + str(count _itemType) + " / Chance " + str(count _itemChance)); - //diag_log ("I want to spawn loot..."); - { private["_iPos2"]; _iPos2 = _obj modelToWorld _x; @@ -38,13 +32,10 @@ _itemChance = [] + getArray (_config >> "itemChance"); _iArray set [3,0]; _iArray call spawn_loot; _iArray = []; - diag_log ("LOOTSPAWN"); + //diag_log ("LOOTSPAWN"); }; _item setVariable ["created",(DateToNumber date),true]; }; - if (!_fastRun) then { - sleep 0.1; - }; }; }; } forEach _positions; \ No newline at end of file diff --git a/dayz_code/compile/building_spawnZombies.sqf b/dayz_code/compile/building_spawnZombies.sqf index df9b9786d..eaa93a495 100644 --- a/dayz_code/compile/building_spawnZombies.sqf +++ b/dayz_code/compile/building_spawnZombies.sqf @@ -1,27 +1,21 @@ -private["_serial","_positions","_min","_lootGroup","_iArray","_iItem","_iClass","_iPos","_item","_mags","_qty","_max","_tQty","_canType","_obj","_type","_nearBy","_clean","_unitTypes","_max","_isNoone","_config","_num","_originalPos","_zombieChance","_rnd","_fastRun"]; +private["_obj","_type","_config","_canLoot","_originalPos","_unitTypes","_min","_max","_num","_clean","_positions","_zombieChance","_rnd","_iPos","_nearBy","_nearByPlayer"]; _obj = _this select 0; _type = typeOf _obj; _config = configFile >> "CfgBuildingLoot" >> _type; _canLoot = isClass (_config); -_fastRun = _this select 1; _originalPos = getPosATL _obj; if (_canLoot) then { //Get zombie class _unitTypes = getArray (_config >> "zombieClass"); _min = getNumber (_config >> "maxRoaming"); _max = getNumber (_config >> "minRoaming"); - //Walking Zombies _num = round(random _max) max _min; // + round(_max / 3); //diag_log ("Class: " + _type + " / Zombies: " + str(_unitTypes) + " / Walking: " + str(_num)); for "_i" from 1 to _num do { [_originalPos,true,_unitTypes] call zombie_generate; - if (!_fastRun) then { - sleep 0.1; }; - }; - //Add Internal Zombies _clean = {alive _x} count ((getPosATL _obj) nearEntities ["zZombie_Base",(sizeOf _type)]) == 0; if (_clean) then { @@ -39,9 +33,6 @@ if (_canLoot) then { [_iPos,false,_unitTypes] call zombie_generate; }; }; - if (!_fastRun) then { - sleep 0.1; - }; } forEach _positions; }; dayz_buildingMonitor set [count dayz_buildingMonitor,_obj]; diff --git a/dayz_code/compile/fn_damageHandler.sqf b/dayz_code/compile/fn_damageHandler.sqf index 904c94f39..4116bfd83 100644 --- a/dayz_code/compile/fn_damageHandler.sqf +++ b/dayz_code/compile/fn_damageHandler.sqf @@ -4,7 +4,7 @@ scriptName "Functions\misc\fn_damageHandler.sqf"; - Function - [unit, selectionName, damage, source, projectile] call fnc_usec_damageHandler; ************************************************************/ -private["_unit","_humanityHit","_myKills","_isBandit","_hit","_damage","_isPlayer","_unconscious","_wound","_isHit","_isInjured","_type","_hitPain","_inPain","_isDead","_isCardiac","_killerID","_evType","_recordable","_inVehicle","_isHeadHit","_isMinor","_scale","_canHitFree"]; +private["_unit","_hit","_damage","_unconscious","_source","_ammo","_type","_isMinor","_isHeadHit","_inVehicle","_evType","_recordable","_isPlayer","_humanityHit","_myKills","_sourceZombie","_display","_control","_canHitFree","_isBandit","_id","_scale","_wound","_isHit","_rndPain","_rndInfection","_hitPain","_hitInfection","_isInjured","_lowBlood","_isCardiac"]; _unit = _this select 0; _hit = _this select 1; _damage = _this select 2; @@ -47,9 +47,6 @@ if (_unit == player) then { if (_hit == "") then { if ((_source != player) and _isPlayer) then { //Enable aggressor Actions - if (_source isKindOf "CAManBase") then { - _source setVariable["startcombattimer",1]; - }; _canHitFree = player getVariable ["freeTarget",false]; _isBandit = (typeOf player) == "Bandit1_DZ"; if (!_canHitFree and !_isBandit) then { @@ -108,11 +105,12 @@ if (_hit in USEC_MinorWounds) then { }; }; -/* + if (_unit == player) then { - player sideChat str(_damage); +//incombat + _unit setVariable["startcombattimer", 1, false]; }; -*/ + if (_damage > 0.1) then { if (_unit == player) then { //shake the cam, frighten them! @@ -131,7 +129,7 @@ if (_damage > 0.4) then { //0.25 _isHit = _unit getVariable[_wound,false]; if (_unit == player) then { _rndPain = (random 10); - _rndInfection = (random 1000); + _rndInfection = (random 500); _hitPain = (_rndPain < _damage); if ((_isHeadHit) or (_damage > 1.2 and _hitPain)) then { _hitPain = true; diff --git a/dayz_code/compile/fn_inString.sqf b/dayz_code/compile/fn_inString.sqf index 8ef39737d..8bd3281e0 100644 --- a/dayz_code/compile/fn_inString.sqf +++ b/dayz_code/compile/fn_inString.sqf @@ -1,59 +1,22 @@ -/* - File: inString.sqf - Author: Mika Hannola +private["_findarray","_stringarray","_findcount","_stringcount","_found","_y","_i","_x"]; - Description: - Find a string within a string. - - Parameter(s): - _this select 0: BOOL - when true, displays all units, otherwise just player positions - _this select 0: string to be found - _this select 1: string to search from - _this select 2 (Optional): search is case sensitive (default: false) - - Returns: - Boolean (true when string is found). - - How to use: - BIS_fnc_inString = compile preprocessFile "inString.sqf"; //Compile the function - _found = ["string","String",true] call BIS_fnc_inString; //Find a string within a string -*/ - -private ["_casesensitive","_find","_string","_findarray","_stringarray","_findcount","_stringcount","_found","_match","_y","_i","_x"]; - -_find = _this select 0; -_string = _this select 1; - -//modification : default _casesensitive is false -_casesensitive = false; -if(count(_this) > 2) then {_casesensitive = _this select 2;}; - -_findarray = toArray _find; -_stringarray = toArray _string; +_findarray = toArray (_this select 0); +_stringarray = toArray (_this select 1); _findcount = count _findarray; _stringcount = count _stringarray; _found = false; - scopeName "main"; -if (_findcount <= _stringcount and !_found) then -{ - for "_y" from 0 to (_stringcount - _findcount) do - { - _match = []; - for "_i" from 0 to (_findcount - 1) do - { - _match set [count _match,_stringarray select (_y + _i)]; - }; - _found = true; + +if (_findcount <= _stringcount) then { + for "_y" from 0 to (_stringcount - _findcount) do { _i = 0; { - if (_x != _match select _i) then - { - _found = false; - }; + scopeName "loop1"; + if (_x == (_stringarray select (_y + _i))) then { _i = _i + 1; + } else {breakOut "loop1";}; } forEach _findarray; - if (_found) then {breakTo "main";}; + if (_i == _findcount) then {_found = true; breakTo "main";}; }; }; -_found; \ No newline at end of file +_found \ No newline at end of file diff --git a/dayz_code/compile/fn_selfActions.sqf b/dayz_code/compile/fn_selfActions.sqf index 3792bc322..ed7c79543 100644 --- a/dayz_code/compile/fn_selfActions.sqf +++ b/dayz_code/compile/fn_selfActions.sqf @@ -4,7 +4,7 @@ scriptName "Functions\misc\fn_selfActions.sqf"; - Function - [] call fnc_usec_selfActions; ************************************************************/ -private["_menClose","_hasBandage","_hasEpi","_hasMorphine","_hasBlood","_vehicle","_inVehicle","_color","_part","_traderType"]; +private["_vehicle","_inVehicle","_bag","_classbag","_isWater","_hasAntiB","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_hasTent","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_canmove","_Unlock","_lock","_allFixed","_hitpoints","_damage","_part","_cmpt","_color","_string","_handle","_trader_id","_category","_buy","_sell","_buy2","_sell2","_buy3","_sell3","_buy1","_sell1","_buy4","_sell4","_buy5","_sell5","_zparts1","_zparts2","_zparts3","_zparts4","_zparts5","_zparts6","_zparts7","_metals1","_metals2","_metals4","_metals3"]; _vehicle = vehicle player; _inVehicle = (_vehicle != player); @@ -45,6 +45,7 @@ if (_canPickLight and !dayz_hasLight) then { if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4)) then { //Has some kind of target _isHarvested = cursorTarget getVariable["meatHarvested",false]; _isVehicle = cursorTarget isKindOf "AllVehicles"; + _isVehicletype = typeOf cursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"]; _isMan = cursorTarget isKindOf "Man"; _traderType = typeOf cursorTarget; _ownerID = cursorTarget getVariable ["characterID","0"]; @@ -54,6 +55,7 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4)) _isTent = cursorTarget isKindOf "TentStorage"; _isFuel = false; _isAlive = alive cursorTarget; + _canmove = canmove cursorTarget; _text = getText (configFile >> "CfgVehicles" >> typeOf cursorTarget >> "displayName"); if (_hasFuelE) then { _isFuel = (cursorTarget isKindOf "Land_Ind_TankSmall") or (cursorTarget isKindOf "Land_fuel_tank_big") or (cursorTarget isKindOf "Land_fuel_tank_stairs") or (cursorTarget isKindOf "Land_fuel_tank_stairs_ep1") or (cursorTarget isKindOf "Land_wagon_tanker") or (cursorTarget isKindOf "Land_fuelstation") or (cursorTarget isKindOf "Land_fuelstation_army"); @@ -101,6 +103,15 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4)) s_player_forceSave = -1; }; */ + //flip vehicle + if ((_isVehicletype) and !_canmove and _isAlive and (player distance cursorTarget >= 2)) then { + if (s_player_flipveh < 0) then { + s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",cursorTarget, 1, true, true, "", ""]; + }; + } else { + player removeAction s_player_flipveh; + s_player_flipveh = -1; + }; //Allow player to fill jerrycan if(_hasFuelE and _isFuel and _canDo) then { @@ -144,14 +155,6 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4)) s_player_fireout = -1; }; - //place tent - //if(_hasTent and _canDo) then { - // s_player_placetent = player addAction [localize "Place Tent", "\z\addons\dayz_code\actions\tent_pitch.sqf",cursorTarget, 0, false, true, "", ""]; - //} else { - // player removeAction s_player_placetent; - // s_player_placetent = -1; - //}; - //Packing my tent if(cursorTarget isKindOf "TentStorage" and _canDo and _ownerID == dayz_characterID) then { if ((s_player_packtent < 0) and (player distance cursorTarget < 3)) then { @@ -411,11 +414,60 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4)) if (s_player_parts_crtl < 0) then { // [_trader_id, _category, ]; - _buy = player addAction ["Buy Vehicle", "\z\addons\dayz_code\actions\buy_db.sqf",[41], 99, true, false, "",""]; - _sell = player addAction ["Sell Vehicle", "\z\addons\dayz_code\actions\sell_db.sqf",[41], 98, true, false, "",""]; + _buy = player addAction ["Buy Car", "\z\addons\dayz_code\actions\buy_db.sqf",[41], 99, true, false, "",""]; + _sell = player addAction ["Sell Car", "\z\addons\dayz_code\actions\sell_db.sqf",[41], 98, true, false, "",""]; + + _buy1 = player addAction ["Buy Truck", "\z\addons\dayz_code\actions\buy_db.sqf",[42], 99, true, false, "",""]; + _sell1 = player addAction ["Sell Truck", "\z\addons\dayz_code\actions\sell_db.sqf",[42], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Offroad", "\z\addons\dayz_code\actions\buy_db.sqf",[43], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Offroad", "\z\addons\dayz_code\actions\sell_db.sqf",[43], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Helicopter", "\z\addons\dayz_code\actions\buy_db.sqf",[44], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Helicopter", "\z\addons\dayz_code\actions\sell_db.sqf",[44], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Helicopter", "\z\addons\dayz_code\actions\buy_db.sqf",[44], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Helicopter", "\z\addons\dayz_code\actions\sell_db.sqf",[44], 98, true, false, "",""]; s_player_parts set [count s_player_parts,_buy]; s_player_parts set [count s_player_parts,_sell]; + s_player_parts set [count s_player_parts,_buy1]; + s_player_parts set [count s_player_parts,_sell1]; + s_player_parts set [count s_player_parts,_buy2]; + s_player_parts set [count s_player_parts,_sell2]; + + s_player_parts_crtl = 1; + }; + + }; + + //auto_trader_2 + if (_isMan and _traderType == auto_trader_2) then { + + if (s_player_parts_crtl < 0) then { + + // [_trader_id, _category, ]; + _buy = player addAction ["Buy Car", "\z\addons\dayz_code\actions\buy_db.sqf",[41], 99, true, false, "",""]; + _sell = player addAction ["Sell Car", "\z\addons\dayz_code\actions\sell_db.sqf",[41], 98, true, false, "",""]; + + _buy1 = player addAction ["Buy Truck", "\z\addons\dayz_code\actions\buy_db.sqf",[42], 99, true, false, "",""]; + _sell1 = player addAction ["Sell Truck", "\z\addons\dayz_code\actions\sell_db.sqf",[42], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Offroad", "\z\addons\dayz_code\actions\buy_db.sqf",[43], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Offroad", "\z\addons\dayz_code\actions\sell_db.sqf",[43], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Helicopter", "\z\addons\dayz_code\actions\buy_db.sqf",[44], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Helicopter", "\z\addons\dayz_code\actions\sell_db.sqf",[44], 98, true, false, "",""]; + + _buy2 = player addAction ["Buy Helicopter", "\z\addons\dayz_code\actions\buy_db.sqf",[45], 99, true, false, "",""]; + _sell2 = player addAction ["Sell Helicopter", "\z\addons\dayz_code\actions\sell_db.sqf",[45], 98, true, false, "",""]; + + s_player_parts set [count s_player_parts,_buy]; + s_player_parts set [count s_player_parts,_sell]; + s_player_parts set [count s_player_parts,_buy1]; + s_player_parts set [count s_player_parts,_sell1]; + s_player_parts set [count s_player_parts,_buy2]; + s_player_parts set [count s_player_parts,_sell2]; s_player_parts_crtl = 1; }; diff --git a/dayz_code/compile/fn_temperatur.sqf b/dayz_code/compile/fn_temperatur.sqf index 1cd23e8f8..2021eaae9 100644 --- a/dayz_code/compile/fn_temperatur.sqf +++ b/dayz_code/compile/fn_temperatur.sqf @@ -19,7 +19,7 @@ Missing: */ - private ["_looptime","_sun_factor","_building_factor","_vehicle_factor","_fire_factor","_water_factor","_rain_factor","_night_factor","_wind_factor","_difference","_hasfireffect","_isinbuilding","_isinvehicle","_raining","_sunrise","_building"]; + private["_looptime","_vehicle_factor","_moving_factor","_fire_factor","_rain_factor","_night_factor","_wind_factor","_building_factor","_sun_factor","_water_factor","_difference","_hasfireffect","_isinbuilding","_isinvehicle","_raining","_sunrise","_vel","_speed","_fireplaces","_building","_daytime","_height_mod","_temp"]; _looptime = _this; @@ -56,7 +56,7 @@ Missing: private["_vel","_speed"]; _vel = velocity player; _speed = round((_vel distance [0,0,0]) * 3.5); - _difference = (_moving_factor * (_speed / 20)) min 1; + _difference = (_moving_factor * (_speed / 20)) min 7; }; //fire @@ -124,21 +124,31 @@ Missing: //rain if(_raining && !_isinvehicle && !_isinbuilding) then { - _difference = _difference + _rain_factor; + _difference = _difference + (rain * _rain_factor); }; //night private ["_daytime"]; - if((daytime < _sunrise || daytime < (24 - _sunrise)) && !_isinvehicle && !_isinbuilding) then { + if((daytime < _sunrise || daytime > (24 - _sunrise)) && !_isinvehicle) then { _daytime = if(daytime < 12) then {daytime + 24} else {daytime}; + if(_isinbuilding) then { + _difference = _difference + ((((_night_factor * -1) / (_sunrise^2)) * ((_daytime - 24)^2) + _night_factor)) / 2; + } else { _difference = _difference + (((_night_factor * -1) / (_sunrise^2)) * ((_daytime - 24)^2) + _night_factor); }; + }; //wind if(((wind select 0) > 4 || (wind select 1) > 4) && !_isinvehicle && !_isinbuilding ) then { _difference = _difference + _wind_factor; }; + //height + if (!_isinvehicle && overcast >= 0.6) then { + _height_mod = ((getPosASL player select 2) / 100) / 2; + _difference = _difference - _height_mod; + }; + //Calculate Change Value Basic Factor Looptime Correction Adjust Value to current used temperatur scala _difference = _difference * SleepTemperatur / (60 / _looptime) * ((dayz_temperaturmax - dayz_temperaturmin) / 100); diff --git a/dayz_code/compile/player_alertZombies.sqf b/dayz_code/compile/player_alertZombies.sqf index 6727c4ea4..cb472c192 100644 --- a/dayz_code/compile/player_alertZombies.sqf +++ b/dayz_code/compile/player_alertZombies.sqf @@ -1,6 +1,6 @@ -private["_unit","_distance","_i","_listTalk","_zombie","_targets","_pos"]; +private["_unit","_distance","_doRun","_pos","_listTalk","_zombie","_targets"]; //Alert Zed's to noise of shot -_pos = _this select 0; +_unit = _this select 0; _distance = _this select 1; _doRun = _this select 2; _pos = _this select 3; diff --git a/dayz_code/compile/player_animalCheck.sqf b/dayz_code/compile/player_animalCheck.sqf index 1dc147617..71a9892c7 100644 --- a/dayz_code/compile/player_animalCheck.sqf +++ b/dayz_code/compile/player_animalCheck.sqf @@ -1,5 +1,5 @@ -private["_list","_Pos","_randrefpoint","_PosList","_PosSelect","_Pos","_list","_animalssupported","_type","_root","_favouritezones","_GroupMarker","_agent","_id","_tame"]; +private["_list","_animalssupported","_type","_root","_favouritezones","_randrefpoint","_PosList","_PosSelect","_Pos","_GroupMarker","_agent","_id","_pos","_tame"]; _list = getposATL player nearEntities [["CAAnimalBase"],dayz_animalDistance]; if (count _list < dayz_maxAnimals) then { diff --git a/dayz_code/compile/player_checkStealth.sqf b/dayz_code/compile/player_checkStealth.sqf index 97e3b843c..14cf74225 100644 --- a/dayz_code/compile/player_checkStealth.sqf +++ b/dayz_code/compile/player_checkStealth.sqf @@ -1,4 +1,4 @@ -private["_vel","_speed","_scalePose","_scaleMvmt","_scaleLight","_scaleAlert","_anim","_anim4","_initial","_isDay","_nearFlare","_nearFire","_nearLight","_scaler","_pos"]; +private["_vel","_speed","_pos","_scalePose","_scaleMvmt","_scaleLight","_scaleAlert","_anim","_anim4","_initial","_scaleSound","_nearFlare","_scaler","_nearLight","_nearFire","_building","_isPlayerInside","_audial"]; _vel = velocity (vehicle player); _speed = (_vel distance [0,0,0]); _pos = getPosATL player; diff --git a/dayz_code/compile/player_fired.sqf b/dayz_code/compile/player_fired.sqf index 60d84c846..1d46da94e 100644 --- a/dayz_code/compile/player_fired.sqf +++ b/dayz_code/compile/player_fired.sqf @@ -1,4 +1,4 @@ -private["_unit","_ammo","_audible","_distance","_listTalk","_weapon"]; +private["_unit","_weapon","_ammo","_projectile","_audible","_caliber","_distance","_i","_listTalk","_group","_targets","_id"]; //[unit, weapon, muzzle, mode, ammo, magazine, projectile] _unit = _this select 0; _weapon = _this select 1; @@ -12,10 +12,9 @@ _distance = round(_audible * 10 * _caliber); dayz_disAudial = _distance; dayz_firedCooldown = time; -// Put everyone in range of the bullet into combat -//_id = _this spawn player_projectileNear; // Color in the combat icon dayz_combat = 1; + if (_ammo isKindOf "Melee") exitWith { _unit playActionNow "GestureSwing"; }; @@ -41,7 +40,6 @@ if (_ammo isKindOf "SmokeShell") then { } forEach _listTalk; } else { _id = [_unit,_distance,true,(getPosATL player)] spawn player_alertZombies; - //Check if need to place arrow if (_ammo isKindOf "Bolt") then { _id = _this spawn player_crossbowBolt; diff --git a/dayz_code/compile/player_gearSync.sqf b/dayz_code/compile/player_gearSync.sqf index e7e27daf0..a0f8e8d60 100644 --- a/dayz_code/compile/player_gearSync.sqf +++ b/dayz_code/compile/player_gearSync.sqf @@ -1,12 +1,10 @@ -private ["_objects"]; +private["_objects","_dialog","_magazineArray","_control","_i","_item","_val","_max"]; _objects = nearestObjects [getPosATL player, ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage","VaultStorage"], 10]; { dayzUpdateVehicle = [_x,"all"]; publicVariableServer "dayzUpdateVehicle"; } foreach _objects; -private["_dialog","_magazineArray","_control","_item","_val","_max"]; - disableSerialization; _dialog = _this select 0; _magazineArray = []; diff --git a/dayz_code/compile/player_spawnCheck.sqf b/dayz_code/compile/player_spawnCheck.sqf index f2ec23059..9107fdee5 100644 --- a/dayz_code/compile/player_spawnCheck.sqf +++ b/dayz_code/compile/player_spawnCheck.sqf @@ -1,76 +1,114 @@ _isAir = vehicle player iskindof "Air"; _inVehicle = (vehicle player != player); -_fastRun = _this select 0; _dateNow = (DateToNumber date); +_maxZombies = dayz_maxLocalZombies; + _age = -1; -if (!_inVehicle) then { +// If they just got out of a vehicle, boost their per-player zombie limit by 5 in hopes of allowing insta-spawn zombies + +if (dayz_inVehicle and !_inVehicle) then { + dayz_spawnWait = -300; + //_maxZombies = _maxZombies + 2; +}; +dayz_inVehicle = _inVehicle; + +//if (((time - dayz_spawnWait) < dayz_spawnDelay) or ((time - dayz_lootWait) < dayz_lootDelay)) exitWith {diag_log("Skipping Check since neither loot or zombies are ready");}; +//if (((time - dayz_spawnWait) < dayz_spawnDelay) and ((time - dayz_lootWait) < dayz_lootDelay)) exitWith {}; + +//diag_log("SPAWN CHECKING: Starting"); + _locationstypes = ["NameCityCapital","NameCity","NameVillage","NameLocal"]; + _nearestCity = nearestLocations [getPos player, _locationstypes, 600]; + + //_nearestCity = [_locationstypes,[position player,600],false] call bis_fnc_locations; + //diag_log ("0: " +str(_nearestCity)); + //_position = position (_nearestCity select 0); + _radius = 160; + _position = getPosATL player; - //waitUntil{_position nearObjectsReady 200}; - _nearby = _position nearObjects ["building",200]; //nearestObjects [player, ["building"], 200]; - _tooManyZs = {alive _x} count (_position nearEntities ["zZombie_Base",400]) > dayz_maxLocalZombies; - { - _type = typeOf _x; - _config = configFile >> "CfgBuildingLoot" >> _type; - _canLoot = isClass (_config); - if (_canLoot) then { - _dis = _x distance player; - if ((_dis < 120) and (_dis > 30)) then { + + _nearbytype = type (_nearestCity select 0); + _nearby = _position nearObjects ["Building",_radius]; + +switch (_nearbytype) do { + default { + _maxZombies = 20; + }; + case "NameLocal": { + _maxZombies = 40; + }; + case "NameVillage": { + _maxZombies = 60; + }; + case "NameCity": { + _maxZombies = 80; + }; + case "NameCityCapital": { + _maxZombies = 100; + }; +}; + +if (_inVehicle) then { + _maxZombies = _maxZombies / 2; +}; + + _tooManyZs = count (_position nearEntities ["zZombie_Base",60]) > _maxZombies; + //diag_log("Too Many Zeds: " +str(_tooManyZs)); + //diag_log(format["SPAWN CHECK: Building count is %1", count _nearby]); + { + //diag_log("SPAWN CHECK: Start of Loop"); + _type = typeOf _x; + _config = configFile >> "CfgBuildingLoot" >> _type; + _canZombie = isClass (_config); + _canLoot = ((count (getArray (_config >> "lootPos"))) > 0); + _dis = _x distance player; + + + if ((!_inVehicle) and (_canLoot)) then { + //diag_log("SPAWN LOOT: " + _type + " Building is lootable"); + //dayz_serverSpawnLoot = [_dis, _x]; + //publicVariableServer "dayz_serverSpawnLoot"; + _keepAwayDist = ((sizeOf _type)+5); + _isNoone = {isPlayer _x} count (_x nearEntities ["CAManBase",_keepAwayDist]) == 0; + //diag_log(format["SPAWN LOOT: isNoone: %1 | keepAwayDist %2 | %3", str(_isNoone), _keepAwayDist, _type]); + if (_isNoone) then { _looted = (_x getVariable ["looted",-0.1]); _cleared = (_x getVariable ["cleared",true]); - /* - if(isServer) then { - _dateNow = (DateToNumber date); - _age = (_dateNow - _looted) * 525948; - } else { - _dateNow = serverTime; - _age = (_dateNow * 60) - _looted; - }; - */ _dateNow = (DateToNumber date); _age = (_dateNow - _looted) * 525948; //diag_log ("SPAWN LOOT: " + _type + " Building is " + str(_age) + " old" ); - if ((_age > 10) and (!_cleared) and !_inVehicle) then { - _nearByObj = nearestObjects [(getPosATL _x), ["WeaponHolder","WeaponHolderBase"],((sizeOf _type)+5)]; - {deleteVehicle _x} forEach _nearByObj; - _x setVariable ["cleared",true,true]; - _x setVariable ["looted",_dateNow,true]; - }; - if ((_age > 10) and (_cleared) and !_inVehicle) then { + if (_age > 8) then { + //diag_log("SPAWN LOOT: Spawning loot"); //Register _x setVariable ["looted",_dateNow,true]; //cleanup - _handle = [_x,_fastRun] spawn building_spawnLoot; - waitUntil{scriptDone _handle}; + //_nearByObj = (getPosATL _x) nearObjects ["ReammoBox",((sizeOf _type)+5)]; + //{deleteVehicle _x} forEach _nearByObj; + dayz_lootWait = time; + [_x] call building_spawnLoot; }; }; - if ((time - dayz_spawnWait) > dayz_spawnDelay) then { - if (dayz_spawnZombies < dayz_maxLocalZombies) then { - if (!_tooManyZs) then { - private["_zombied"]; - _zombied = (_x getVariable ["zombieSpawn",-0.1]); - _dateNow = (DateToNumber date); - _age = (_dateNow - _zombied) * 525948; - if (_age > 5) then { - _bPos = getPosATL _x; - _zombiesNum = {alive _x} count (_bPos nearEntities ["zZombie_Base",(((sizeOf _type) * 2) + 10)]); - if (_zombiesNum == 0) then { - //Randomize Zombies - _x setVariable ["zombieSpawn",_dateNow,true]; - _handle = [_x,_fastRun] spawn building_spawnZombies; - waitUntil{scriptDone _handle}; - //} else { - //_x setVariable ["zombieSpawn",_dateNow,true]; - }; + }; + if (_canZombie) then { + if (dayz_spawnZombies < _maxZombies) then { + if (!_tooManyZs) then { + private["_zombied"]; + _zombied = (_x getVariable ["zombieSpawn",-0.1]); + _dateNow = (DateToNumber date); + _age = (_dateNow - _zombied) * 525948; + //diag_log(format["Date: %1 | ZombieSpawn: %2 | age: %3 | building: %4 (%5)", _dateNow, _zombied, _age, str(_x), _dis]); + if (_age > 1) then { + _bPos = getPosATL _x; + _zombiesNum = count (_bPos nearEntities ["zZombie_Base",(((sizeOf _type) * 2) + 10)]); + if (_zombiesNum == 0) then { + //Randomize Zombies + _x setVariable ["zombieSpawn",_dateNow,true]; + [_x] call building_spawnZombies; }; }; - } else { - dayz_spawnWait = time; - dayz_spawnZombies = 0; }; + //} else { + //dayz_spawnWait = time; + //dayz_spawnZombies = 0; }; }; - if (!_fastRun) then { - sleep 0.1; - }; - } forEach _nearby; -}; \ No newline at end of file + } forEach _nearby; \ No newline at end of file diff --git a/dayz_code/compile/player_updateGui.sqf b/dayz_code/compile/player_updateGui.sqf index b222f52de..24b9fa399 100644 --- a/dayz_code/compile/player_updateGui.sqf +++ b/dayz_code/compile/player_updateGui.sqf @@ -1,9 +1,9 @@ -private["_display","_ctrlBlood","_bloodVal","_ctrlFood","_ctrlThirst","_foodVal","_ctrlTemp","_tempVal","_array"]; +private["_foodVal","_thirstVal","_tempVal","_combatVal","_array","_display","_ctrlBlood","_ctrlBleed","_bloodVal","_ctrlFood","_ctrlThirst","_ctrlTemp","_ctrlEar","_ctrlEye","_ctrlHumanity","_ctrlCombat","_ctrlFracture","_bloodLvl","_thirstLvl","_foodLvl","_blood","_thirst","_food","_temp","_tempImg","_tempLvl","_ca","_visualtext","_visual","_audibletext","_audible","_humanity","_guiHumanity","_humanityText"]; disableSerialization; _foodVal = 1 - (dayz_hunger / SleepFood); _thirstVal = 1 - (dayz_thirst / SleepWater); -_tempVal = (dayz_temperatur / dayz_temperaturnormal); //TeeChange +_tempVal = 1 - ((dayz_temperatur - dayz_temperaturmin)/(dayz_temperaturmax - dayz_temperaturmin)); // Normalise to [0,1] _combatVal = 1 - dayz_combat; // May change later to be a range of red/green to loosely indicate 'time left in combat' if (uiNamespace getVariable ['DZ_displayUI', 0] == 1) exitWith { @@ -21,7 +21,7 @@ _ctrlThirst = _display displayCtrl 1302; _ctrlTemp = _display displayCtrl 1306; //TeeChange _ctrlEar = _display displayCtrl 1304; _ctrlEye = _display displayCtrl 1305; -_ctrlHumanity = _display displayCtrl 1207; +//_ctrlHumanity = _display displayCtrl 1207; _ctrlCombat = _display displayCtrl 1307; _ctrlFracture = _display displayCtrl 1203; @@ -29,9 +29,108 @@ _ctrlFracture = _display displayCtrl 1203; _ctrlBlood ctrlSetTextColor [(Dayz_GUI_R + (0.3 * (1-_bloodVal))),(Dayz_GUI_G * _bloodVal),(Dayz_GUI_B * _bloodVal), 0.5]; _ctrlFood ctrlSetTextColor [(Dayz_GUI_R + (0.3 * (1-_foodVal))),(Dayz_GUI_G * _foodVal),(Dayz_GUI_B * _foodVal), 0.5]; _ctrlThirst ctrlSetTextColor [(Dayz_GUI_R + (0.3 * (1-_thirstVal))),(Dayz_GUI_G * _thirstVal),(Dayz_GUI_B * _thirstVal), 0.5]; -_ctrlTemp ctrlSetTextColor [(Dayz_GUI_R + (0.3 * _tempVal)),(Dayz_GUI_G * _tempVal),(Dayz_GUI_B + (0.25 * (1/_tempVal))), 0.5]; //TeeChange Coulor should change into red if value is higher as normale temp and into blue if coulor is lower as normal temp +_ctrlTemp ctrlSetTextColor [(Dayz_GUI_R + (0.3 * (1-_tempVal))), (Dayz_GUI_G * _tempVal), _tempVal, 0.5]; // Color ranges from iceblue (cold) to red (hot) _ctrlCombat ctrlSetTextColor [(Dayz_GUI_R + (0.3 * (1-_combatVal))),(Dayz_GUI_G * _combatVal),(Dayz_GUI_B * _combatVal), 0.5]; +/* + Blood: round((r_player_blood / 2) / 1000) = _bloodLvl (6 = full, 1 = empty) + Thirst: round(_thirstVal / 0.25) = _thirstLvl (4 = full, 0 = empty) + Hunger: round(_foodVal / 0.25) = _foodLvl (4 = full, 0 = empty) + Temp: round(dayz_temperatur) = tempLvl (>= 36 = full <= 28 = empty) +*/ + +_blood = ""; +_thirst = ""; +_food = ""; +_temp = ""; +_tempImg = 0; +_bloodLvl = round((r_player_blood / 2) / 1000); +_thirstLvl = round(_thirstVal / 0.25); +_foodLvl = round(_foodVal / 0.25); +_tempLvl = round(dayz_temperatur); + +/* +diag_log format["DEBUG: bloodlvl: %1 r_player_blood: %2 bloodval: %3",_bloodLvl, r_player_blood, _bloodVal]; +diag_log format["DEBUG: thirstlvl: %1 dayz_thirst: %2 thirstval: %3",_thirstLvl, dayz_thirst, _thirstVal]; +diag_log format["DEBUG: foodlvl: %1 dayz_hunger: %2 foodval: %3",_foodLvl, dayz_hunger, _foodVal]; +diag_log format["DEBUG: templvl: %1 dayz_temperatur: %2 tempval: %3",_tempLvl, dayz_temperatur, _tempVal]; +*/ + +if (_bloodLvl == 0) then { + _blood = "\z\addons\dayz_code\gui\status_blood_inside_1_ca.paa"; + } else { + _blood = "\z\addons\dayz_code\gui\status_blood_inside_" + str(_bloodLvl) + "_ca.paa"; + }; + +_thirst = "\z\addons\dayz_code\gui\status_thirst_inside_" + str(_thirstLvl) + "_ca.paa"; +_food = "\z\addons\dayz_code\gui\status_food_inside_" + str(_foodLvl) + "_ca.paa"; + +if ( _tempLvl >= 36 ) then { _tempImg = 4 }; +if ( _tempLvl > 33 and _tempLvl < 36 ) then { _tempImg = 3 }; +if ( _tempLvl >= 30 and _tempLvl <= 33 ) then { _tempImg = 2 }; +if ( _tempLvl > 28 and _tempLvl < 30 ) then { _tempImg = 1 }; +if ( _tempLvl <= 28 ) then { _tempImg = 0 }; + +_temp = "\z\addons\dayz_code\gui\status_temp_" + str(_tempImg) + "_ca.paa"; + +_ctrlBlood ctrlSetText _blood; +_ctrlThirst ctrlSetText _thirst; +_ctrlFood ctrlSetText _food; +_ctrlTemp ctrlSetText _temp; + +/* + Visual: +*/ +_visualtext = ""; +_visual = round((dayz_disVisual / 100) * 4) min 5; +if (_visual > 0) then {_visualtext = "\z\addons\dayz_code\gui\val_" + str(_visual) + "_ca.paa"}; +_ctrlEye ctrlSetText _visualtext; + +/* + Audible: +*/ +_audibletext = ""; +_audible = round((dayz_disAudial / 50) * 4) min 5; +if (_audible > 0) then {_audibletext = "\z\addons\dayz_code\gui\val_" + str(_audible) + "_ca.paa"}; +_ctrlEar ctrlSetText _audibletext; + +/* + Fracture: +*/ +if (!canStand player) then { + if (!(ctrlShown _ctrlFracture)) then { + r_fracture_legs = true; + _ctrlFracture ctrlShow true; + }; +}; + +/* + Flashing: +*/ +if (_combatVal == 0) then { + _ctrlCombat call player_guiControlFlash; +}; + +if (_bloodVal < 0.2) then { + _ctrlBlood call player_guiControlFlash; +}; + +if (_thirstVal < 0.2) then { + _ctrlThirst call player_guiControlFlash; +}; + +if (_foodVal < 0.2) then { + _ctrlFood call player_guiControlFlash; +}; + +if (_tempVal > 0.8) then { //TeeChange + _ctrlTemp call player_guiControlFlash; +}; + +if (r_player_injured) then { + _ctrlBleed call player_guiControlFlash; +}; + /* _humanity = player getVariable["humanity",0]; _guiHumanity = 0; @@ -50,47 +149,5 @@ if(_humanity != dayz_lastHumanity) then { }; */ -_visualtext = ""; -_visual = round((dayz_disVisual / 100) * 4) min 5; -if (_visual > 0) then {_visualtext = "\z\addons\dayz_code\gui\val_" + str(_visual) + "_ca.paa"}; - -_audibletext = ""; -_audible = round((dayz_disAudial / 50) * 4) min 5; -if (_audible > 0) then {_audibletext = "\z\addons\dayz_code\gui\val_" + str(_audible) + "_ca.paa"}; - -_ctrlEye ctrlSetText _visualtext; -_ctrlEar ctrlSetText _audibletext; - -if (_combatVal == 0) then { - _ctrlCombat call player_guiControlFlash; -}; - -if (_bloodVal < 0.2) then { - _ctrlBlood call player_guiControlFlash; -}; - -if (_thirstVal < 0.2) then { - _ctrlThirst call player_guiControlFlash; -}; - -if (_foodVal < 0.2) then { - _ctrlFood call player_guiControlFlash; -}; - -if (_tempVal < 0.833) then { //TeeChange - _ctrlTemp call player_guiControlFlash; -}; - -if (r_player_injured) then { - _ctrlBleed call player_guiControlFlash; -}; - -if (!canStand player) then { - if (!(ctrlShown _ctrlFracture)) then { - r_fracture_legs = true; - _ctrlFracture ctrlShow true; - }; -}; - _array = [_foodVal,_thirstVal]; _array \ No newline at end of file diff --git a/dayz_code/compile/player_weaponFiredNear.sqf b/dayz_code/compile/player_weaponFiredNear.sqf index 36498f205..ab90a2820 100644 --- a/dayz_code/compile/player_weaponFiredNear.sqf +++ b/dayz_code/compile/player_weaponFiredNear.sqf @@ -1,5 +1,5 @@ //[unit, weapon, muzzle, mode, ammo, magazine, projectile] -private["_unit","_magazine","_used","_quantity","_magsNet","_magsWhole","_key","_result","_evType","_recordable","_inVehicle","_isPlayer","_isRocket","_dmgDistance","_isBallistic","_handled"]; +private["_unit","_firer","_distance","_weapon","_ammo","_killerID","_handled","_arc","_isBallistic","_dmgDistance","_isRocket","_isPlayer","_inVehicle","_evType","_recordable","_turretDir","_weaponDir","_pos1","_pos2","_facing","_firingArc","_isInFront","_isInRear","_id"]; //Init //[unit, firer, distance, weapon, muzzle, mode, ammo] _unit = _this select 0; @@ -20,12 +20,13 @@ private["_unit","_magazine","_used","_quantity","_magsNet","_magsWhole","_key"," _recordable = false; // Both the firer and those nearby (<=8m) go into "combat" to prevent ALT-F4 - _firer setVariable["startcombattimer", 1, true]; - + //diag_log ("DEBUG: AMMO TYPE: " +str(_ammo)); + _firer setVariable["startcombattimer", 1, false]; if (_distance <= 8) then { - _unit setVariable["startcombattimer", 1, true]; + _unit setVariable["startcombattimer", 1, false]; }; + if (_inVehicle) exitWith{}; if (_firer == player) exitWith{}; diff --git a/dayz_code/compile/player_zombieAttack.sqf b/dayz_code/compile/player_zombieAttack.sqf index 039beabed..52d278bc7 100644 --- a/dayz_code/compile/player_zombieAttack.sqf +++ b/dayz_code/compile/player_zombieAttack.sqf @@ -1,18 +1,20 @@ -private["_unit","_targets","_move","_damage","_wound","_sound","_local","_dir","_hpList","_hp","_strH","_dam","_total","_result","_vehicle","_tPos","_zPos","_cantSee","_inAngle"]; +private["_unit","_vehicle","_targets","_move","_rnd","_wound","_dir","_hpList","_hp","_damage","_chance","_strH","_dam","_total","_result","_tPos","_zPos","_inAngle","_cantSee","_isZombieInside","_building","_isPlayerInside"]; _unit = _this; _vehicle = (vehicle player); _targets = _unit getVariable ["targets",[]]; -if (!(_vehicle in _targets) and ((random 1) < 0.9)) exitWith {}; +//if (!(_vehicle in _targets)) exitWith {}; //Do the attack _move = "ZombieStandingAttack1"; _rnd = 0; _wound = ""; -if (r_player_unconscious) then { +if (r_player_unconscious && _vehicle == player) then { + _unit doMove (getPos player); _rnd = round(random 4) + 1; _move = "ZombieFeed" + str(_rnd); } else { + _unit doMove (getPos player); _rnd = round(random 9) + 1; _move = "ZombieStandingAttack" + str(_rnd); }; @@ -27,46 +29,41 @@ if (_vehicle != player) then { _hpList = _vehicle call vehicle_getHitpoints; _hp = _hpList call BIS_fnc_selectRandom; _wound = getText(configFile >> "cfgVehicles" >> (typeOf _vehicle) >> "HitPoints" >> _hp >> "name"); - _total = 0; + _damage = random 0.03; + _chance = round(random 12); - if(["Glass",_hp,false] call fnc_inString) then { - _damage = 0.03; - _strH = "hit_" + (_wound); - _dam = _vehicle getVariable [_strH,0]; - _total = (_dam + _damage); - }; - if(["Wheel",_hp,false] call fnc_inString) then { - _damage = 0.02; - _strH = "hit_" + (_wound); - _dam = _vehicle getVariable [_strH,0]; - _total = (_dam + _damage); - }; - if(["Body",_hp,false] call fnc_inString) then { - _damage = 0.01; - _strH = "hit_" + (_wound); - _dam = _vehicle getVariable [_strH,0]; - _total = (_dam + _damage); - }; - if(["Engine",_hp,false] call fnc_inString) then { - _damage = 0.01; - _strH = "hit_" + (_wound); - _dam = _vehicle getVariable [_strH,0]; - _total = (_dam + _damage); - }; - if(["Fuel",_hp,false] call fnc_inString) then { + if ((_wound == "Glass1") or (_wound == "Glass2") or (_wound == "Glass3") or (_wound == "Glass4") or (_wound == "Glass5") or (_wound == "Glass6")) then { [_unit,"hit",0,false] call dayz_zombieSpeak; - _damage = 0.01; _strH = "hit_" + (_wound); _dam = _vehicle getVariable [_strH,0]; _total = (_dam + _damage); + + //diag_log ("Hitpoints " +str(_wound) +str(_total)); + + //_result = [_vehicle, _wound,_total, _unit,"zombie"] call fnc_usec_damageVehicle; + //dayzHitV = [_vehicle,_wound,_total, _unit,"zombie"]; + //publicVariable "dayzHitV"; + if (_total >= 1) then { + if ((_chance % 4) == 0) then { + if ((_vehicle isKindOf "ATV_Base_EP1") or (_vehicle isKindOf "Motorcycle")) then { player action ["eject", _vehicle] }; + }; + if (r_player_blood < (r_player_bloodTotal * 0.8)) then { + _wound = DAYZ_woundHit call BIS_fnc_selectRandomWeighted; + } else { + _wound = DAYZ_woundHit_ok call BIS_fnc_selectRandomWeighted; + }; + _damage = 0.1 + random (1.2); + //diag_log ("START DAM: Player Hit on " + _wound + " for " + str(_damage)); + [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; + //dayzHit = [player,_wound, _damage, _unit,"zombie"]; + //publicVariable "dayzHit"; + [_unit,"hit",0,false] call dayz_zombieSpeak; + } else { + _result = [_vehicle, _wound,_total, _unit,"zombie"] call fnc_usec_damageVehicle; + dayzHitV = [_vehicle,_wound,_total, _unit,"zombie"]; + publicVariable "dayzHitV"; + }; }; - if(_total > 0) then { - [_unit,"hit",0,false] call dayz_zombieSpeak; - _result = [_vehicle, _wound,_total, _unit,"zombie"] call fnc_usec_damageVehicle; - dayzHitV = [_vehicle,_wound,_total, _unit,"zombie"]; - publicVariable "dayzHitV"; - }; - } else { //Did he hit? if ((_unit distance player) <= 3) then { @@ -87,8 +84,8 @@ if (_vehicle != player) then { _damage = 0.1 + random (1.2); //diag_log ("START DAM: Player Hit on " + _wound + " for " + str(_damage)); [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; - dayzHit = [player,_wound, _damage, _unit,"zombie"]; - publicVariable "dayzHit"; + //dayzHit = [player,_wound, _damage, _unit,"zombie"]; + //publicVariable "dayzHit"; [_unit,"hit",0,false] call dayz_zombieSpeak; } else { /* @@ -97,8 +94,8 @@ if (_vehicle != player) then { _damage = 0.1 + random (1.2); //diag_log ("START DAM: Player Hit on " + _wound + " for " + str(_damage)); [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; - dayzHit = [player,_wound, _damage, _unit,"zombie"]; - publicVariable "dayzHit"; + //dayzHit = [player,_wound, _damage, _unit,"zombie"]; + //publicVariable "dayzHit"; [_unit,"hit",0,false] call dayz_zombieSpeak; }; */ diff --git a/dayz_code/compile/player_zombieCheck.sqf b/dayz_code/compile/player_zombieCheck.sqf index dbc84c9d4..1dadcd35b 100644 --- a/dayz_code/compile/player_zombieCheck.sqf +++ b/dayz_code/compile/player_zombieCheck.sqf @@ -1,6 +1,7 @@ -private["_listTalk","_isZombie","_group","_eyeDir","_attacked","_chance","_last","_audial","_distance","_refObj","_list","_scaleMvmt","_scalePose","_scaleLight","_anim","_activators","_nearFire","_nearFlare","_scaleAlert","_inAngle","_scaler","_initial","_tPos","_zPos","_cantSee"]; +private["_refObj","_listTalk","_pHeight","_attacked","_list","_dist","_group","_chance","_last","_entHeight","_delta","_isZInside","_building","_isPlayerInside","_targets","_cantSee","_tPos","_zPos","_eyeDir","_inAngle","_lowBlood"]; _refObj = vehicle player; -_listTalk = (position _refObj) nearEntities ["zZombie_Base",200]; +//_listTalk = (position _refObj) nearEntities ["zZombie_Base",200]; +_listTalk = (position _refObj) nearEntities ["zZombie_Base",100]; _pHeight = (getPosATL _refObj) select 2; _attacked = false; diff --git a/dayz_code/compile/spawn_loot.sqf b/dayz_code/compile/spawn_loot.sqf index f909e7fc2..7a42f0082 100644 --- a/dayz_code/compile/spawn_loot.sqf +++ b/dayz_code/compile/spawn_loot.sqf @@ -1,4 +1,4 @@ -private["_itemType","_iPos","_indexLootSpawn","_iArray","_iItem","_iClass","_item","_qty","_max","_tQty","_arrayLootSpawn","_canType"]; +private["_itemType","_weights","_iItem","_iClass","_iPos","_radius","_item","_arrayLootSpawn","_qty","_max","_tQty","_indexLootSpawn","_canType","_mags","_ipos"]; // [_itemType,_weights] _iItem = _this select 0; _iClass = _this select 1; @@ -12,7 +12,7 @@ switch (_iClass) do { _itemType = _arrayLootSpawn select 0; _weights = _arrayLootSpawn call fnc_buildWeightedArray; _qty = 0; - _max = ceil(random 4) + 1; + _max = ceil(random 2) + 1; //diag_log ("LOOTSPAWN: QTY: " + str(_max) + " ARRAY: " + str(_arrayLootSpawn)); while {_qty < _max} do { private["_tQty","_indexLootSpawn","_canType"]; @@ -36,7 +36,7 @@ switch (_iClass) do { _item addWeaponCargoGlobal [_iItem,1]; _mags = [] + getArray (configFile >> "cfgWeapons" >> _iItem >> "magazines"); if (count _mags > 0) then { - _item addMagazineCargoGlobal [(_mags select 0),(round(random 3))]; + _item addMagazineCargoGlobal [(_mags select 0),(round(random 1))]; }; }; case "magazine": { diff --git a/dayz_code/compile/zombie_findTarget.sqf b/dayz_code/compile/zombie_findTarget.sqf index d39bf7d38..207a718dc 100644 --- a/dayz_code/compile/zombie_findTarget.sqf +++ b/dayz_code/compile/zombie_findTarget.sqf @@ -1,10 +1,10 @@ -private["_group","_target","_targetMen","_targetDis","_c","_man","_manDis","_targets","_lead","_leadheight","_nearEnts","_rnd","_assigned"]; +private["_group","_target","_lead","_targetMen","_targetDis","_range","_assigned","_targets","_obj","_dis","_fires","_rnd","_man","_manDis","_c"]; _group = _this; _target = objNull; _lead = leader _group; _targetMen = []; _targetDis = []; -_range = 500; +_range = 300; _assigned = _group getVariable ["targets",[]]; { diff --git a/dayz_code/compile/zombie_generate.sqf b/dayz_code/compile/zombie_generate.sqf index ee82106f2..e7965145c 100644 --- a/dayz_code/compile/zombie_generate.sqf +++ b/dayz_code/compile/zombie_generate.sqf @@ -1,4 +1,4 @@ -private["_position","_doLoiter","_unitTypes","_isNoone","_loot","_array","_agent","_type","_radius","_method","_nearByPlayer","_attempt","_myDest","_newDest","_lootType"]; +private["_position","_doLoiter","_unitTypes","_isNoone","_loot","_array","_agent","_type","_radius","_method","_nearByPlayer","_attempt","_isAlive","_myDest","_newDest","_rnd","_lootType","_id"]; _position = _this select 0; _doLoiter = _this select 1; _unitTypes = _this select 2; @@ -57,7 +57,8 @@ if (!_doLoiter) then { if (_nearByPlayer) then { _attempt = 0; while {_nearByPlayer} do { - _position = [_position,0,20,10,0,20,0] call BIS_fnc_findSafePos; + //_position = [_position,0,20,10,0,20,0] call BIS_fnc_findSafePos; Orignal + _position = [_position,0,20,20,0,20,0] call BIS_fnc_findSafePos; _agent setPos _position; _nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30])) > 0; _attempt = _attempt + 1; diff --git a/dayz_code/config.cpp b/dayz_code/config.cpp index d456d10c2..99f559fc6 100644 --- a/dayz_code/config.cpp +++ b/dayz_code/config.cpp @@ -33,7 +33,7 @@ class CfgMods hidePicture = 0; hideName = 0; action = "http://www.dayzmod.com"; - version = "1.7.4.4"; + version = "1.7.5.D1207"; hiveVersion = 0.96; //0.93 }; }; @@ -100,23 +100,23 @@ class CfgSurvival { }; class Meat { class Default { - yield = 2; + yield = 1; }; class Cow: Default { - yield = 8; + yield = 6; }; class Cow01: Cow{}; class Cow02: Cow{}; class Cow03: Cow{}; class Cow04: Cow{}; class Goat: Default { - yield = 3; + yield = 4; }; class Sheep: Default { - yield = 5; + yield = 3; }; class WildBoar: Default { - yield = 4; + yield = 2; }; }; }; @@ -356,6 +356,7 @@ class CfgBuildingLoot { { "Mk_48_DZ","weapon" }, { "M249_DZ","weapon" }, //{"BAF_L85A2_RIS_CWS","weapon"}, + {"BAF_L85A2_RIS_Holo","weapon"}, { "DMR","weapon" }, { "","military" }, { "","medical" }, @@ -365,6 +366,11 @@ class CfgBuildingLoot { { "AmmoBoxSmall_762","object" }, { "Skin_Camo1_DZ","magazine" }, { "Skin_Sniper1_DZ","magazine" }, + {"G36C","weapon"}, + {"G36C_camo","weapon"}, + //{"G36_C_SD_camo","weapon"}, + {"G36A_camo","weapon"}, + {"G36K_camo","weapon"}, { "Skin_Rocket_DZ","magazine" }, { "Skin_Soldier1_DZ","magazine" } }; @@ -377,16 +383,21 @@ class CfgBuildingLoot { 0.01, //{"BAF_AS50_scoped","weapon"}, 0.03, //{"Mk_48_DZ","weapon"}, 0.05, //{"M249_DZ","weapon"}, - //0.01, //{"BAF_L85A2_RIS_CWS","weapon"}, - 0.10, //{"DMR","weapon"}, + 0.01, //{"BAF_L85A2_RIS_CWS","weapon"}, BAF_L85A2_RIS_Holo + 0.06, //{"DMR","weapon"}, 1, //{"","military"}, 0.5, //{"","medical"}, 0.1, //{"MedBox0","object"}, - 0.01, //{"NVGoggles","weapon"} - 0.1, - 0.1, - 0.08, - 0.05, + 0.02, //{"NVGoggles","weapon"} + 0.1, //AmmoBoxSmall_556 + 0.1, //AmmoBoxSmall_762 + 0.08, //Skin_Camo1_DZ + 0.05, //Skin_Sniper1_DZ + 0.03, //G36C" + 0.02, //G36C_camo + //0.01, //G36_C_SD_camo + 0.02, //G36A_camo + 0.02, //G36K_camo 0.01, 0.05 }; @@ -405,8 +416,8 @@ class CfgBuildingLoot { }; itemChance[] = { 0.2, - 0.5, - 0.5 + 1, + 0.2 }; }; class Military: Default { @@ -450,7 +461,9 @@ class CfgBuildingLoot { { "","military" }, //{"Body","object"}, { "ItemEtool","weapon" }, - {"ItemSandbag","magazine"} + {"ItemSandbag","magazine"}, + {"Sa58P_EP1","weapon"}, + {"Sa58V_EP1","weapon"} }; itemChance[] = { 0.05, @@ -486,7 +499,9 @@ class CfgBuildingLoot { 2.50, //0.20, 0.05, - 0.02 + 0.02, + 0.03, + 0.03 }; }; class MilitarySpecial: Default { @@ -501,7 +516,7 @@ class CfgBuildingLoot { { "M16A2GL","weapon" }, { "M249_DZ","weapon" }, { "M9SD","weapon" }, - { "M136","weapon" }, + //{"M136","weapon"}, { "AK_74","weapon" }, { "M4A1_Aim","weapon" }, { "AKS_74_kobra","weapon" }, @@ -526,21 +541,28 @@ class CfgBuildingLoot { //Ammo { "AmmoBoxSmall_556","object" }, { "AmmoBoxSmall_762","object" }, - { "NVGoggles","weapon" }, + + //{"NVGoggles","weapon"}, { "Binocular","weapon" }, { "ItemFlashlightRed","military" }, { "ItemKnife","military" }, { "ItemGPS","weapon" }, { "ItemMap","military" }, { "Binocular_Vector","military" }, + { "DZ_Assault_Pack_EP1","object" }, { "DZ_Patrol_Pack_EP1","object" }, { "DZ_Backpack_EP1","object" }, + { "","medical" }, { "","generic" }, { "","military" }, //{"Body","object"}, {"PipeBomb","magazine"}, + {"Sa58V_RCO_EP1","weapon"}, + {"Sa58V_CCO_EP1","weapon"}, + {"G36_C_SD_camo","weapon"}, + {"M40A3","weapon"}, { "Skin_Soldier1_DZ","magazine" } }; itemChance[] = { @@ -548,7 +570,7 @@ class CfgBuildingLoot { 0.05, 0.01, 0.02, - 0.01, + //0.01, //m136 0.10, 0.02, 0.10, @@ -572,11 +594,11 @@ class CfgBuildingLoot { 0.08, 0.04, 0.02, - 0.01, + //0.01, //NVGoggles 0.10, 0.05, 0.15, - 0.01, + 0.01, //ItemGPS 0.03, 0.01, 0.02, @@ -584,9 +606,13 @@ class CfgBuildingLoot { 0.02, 0.30, 1.00, - 5.00, + 5.00, //military //0.20, - 0.01, + 0.01, //PipeBomb + 0.01, //Sa58V_RCO_EP1 + 0.01, //Sa58V_CCO_EP1 + 0.01, //{"G36_C_SD_camo","weapon"}, + 0.02, // M40A3 0.05 }; }; diff --git a/dayz_code/gui/gender_menu_man.paa b/dayz_code/gui/gender_menu_man.paa index fb4125d781c24c85f9e56fda8e52992ddfef7dd9..feb8b6d13abf8debc64167c4b26b09dbfeb2e7f4 100644 GIT binary patch literal 47516 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 Ti6LyoHYnJ~=Er+sQ-A*l>36jj literal 63024 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

NOv9u;si|0eWi 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 Ou9*Si^PLXtUjG5d%k+Z) diff --git a/dayz_code/gui/gender_menu_woman.paa b/dayz_code/gui/gender_menu_woman.paa index c86d3e767e5f9fa29fe44d93809d0523ced75e0b..a69156feb405f3616dcda72ac3dc275d3193a929 100644 GIT binary patch literal 61012 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 T3s2>-NB@5FmhJJ-&wu_e-l$e4 literal 57502 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

Aet(8QtPDimE2 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 diff --git a/dayz_code/gui/status_bleeding_ca.paa b/dayz_code/gui/status_bleeding_ca.paa index 743bad4f2291be8a9bc85458b22e76964bdc63ba..ba786c7e622a67c43136409224716885f37b33df 100644 GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@cj960Wd$p(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n=Q^TTLdJACupimHh?*SMemd1t)KcQ}0;_hw9)iD3mgnw_g zdSQGV#t)q?wC1eJ-6JsmQ1gE*TKq1(2##Mxn17=0ZA+ZJZL$fB|ESc{Z`&jm4j6y= z!wELmJm;vv_?sVs^!pmX_;VhB_;U}z_yZk2j9~vZsleRRFm+q9G*bLtuA40oJ=uW~ zCjar$)A!FNJNUu)KQGn=J->7WF8}S^y1Qx(EWI%KUuXQT`ZAlq`O{uV-Z_|i<`_(V zp#6_-f9;fQiPqb)Z^PWzb}oB$9(M|yfAaMqjoz%J-7xu&SKhv`ivGzA<6rqDy`VSe z5Ip@q|2xBFT4okp|GjSqVlHLo!1?I*4|e{R&)br%w`EGh{QGe;g93y4R6ZF0{hy$- zcf5Hn!T5vSKcu?PB@2{4QsMDe@gr-qDMK=x|NfuAoJ*BMH-1SCk5ToI5Ev}!T>+RK z89*Zp5HMJrHR>J$@u3Kohc_EUwLr}T*&DQqKk-dNzK5N2vgs)Ya=f(8N>PL`Z*XlK*OSJXpMRnG-vZ( kH%rssmJT<@_vQxK8ygVDvH(j|V0g-80zHfC%OvSg67I3=B*PKm_9tHUAS4 zzd-*Z$_pI+M^6vv{6QN&1mhRls)WTahW`o45AyT@^}h<-f8Yc>0iBO8{eyJC;};Sf zDEfi!>kW{dlA&ViRH% literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_1_ca.paa b/dayz_code/gui/status_blood_inside_1_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..1a500724be40a4aa76b45f032a8ce6c1b01be08f GIT binary patch literal 5625 zcmeHLF$w}P5FFuzE3eT0o{}IWjbfpQ&#|+!^LPH`-0@r%?361`n1LmkW)n6u8`$Mg zYd&u3DK{AL;^(|09}MI*ZwvXtg8Wd*KH2_aaqWQH3b?O!>kW{dlA&ViRH% literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_2_ca.paa b/dayz_code/gui/status_blood_inside_2_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..23455728d7af2e972be2d8a32f5e58c12cffe498 GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@cHv+E-*jB(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n=Q^TTL(Sdwbhj5g4BdEZ?L87vz{&rW#RPH#O#bcPvmmBCjIR;=|KsI;UAXy_x|i1awHQ1n0P_PpeHwi| zo$rhkK2vZ1=Ql;-cij6wp9_gE^y0k24J1CT-8<6FS71X@`Li6v0RoWOr7O1CYCyPP zKKH!|a}Lb6rCPDgjaID2zKTe`jZ{p&WDuB-TfZ208jt` literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_3_ca.paa b/dayz_code/gui/status_blood_inside_3_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..7990bdd427f4cc1de18ad5c37a347cc2e6e1078b GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@bl+S2{1px(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n=Q^TTL!@_L1@D*M?d;jOhdXRU( z?Z^Lr7??nQgz?ory!_Dq|1(@Z@b5O>+p=?}z~rkz;pNG63&z(0^PTu$eBPbga;4iW zp27JSw%Oj8`1dA^KhWVR6Z>=i|3Cd8=Ro`qZAIhc|877DpW|O%egJER>fiZ`VcHX@ z05}{UEd+ZJW}Znw|KA(yYj42#1MPo>|9Ov8-IDZS?tztxRO4?2`%nR99?z6^+1s0P zZ^QTl?SF|QW=Yb(EDm#z@X7!4|DVVQ$0^8dB!|aaRR3xO|NnToUl(rvK>L@F{aOs3 z6I6g%8WtW#Ur*;dBZbe@+yD7Zk@y|={?F$^;tRbvuW$p2PsqMec}NJr!kg6aP+(AC zU;vFUKmfVMjOriW;Wq(XEekoq(g(94FpqANrCT+Wu=Kinue~#rV!_31d)_;R-KvYw2|Nl8K-Gw%a?}9tJQCtduur_ Y+!_{Oi3$u)>q4Mw`QBWCDT5db02|ap!2kdN literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_4_ca.paa b/dayz_code/gui/status_blood_inside_4_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..baa8122706a63f10d48dbdb07462613dbac97245 GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@cZ{~WiUU&(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n=Q^TTL#%Bkc*Q5^PgYE3*fZe(swL6IvkBV0qB;-ZHU2=l}oHPdERY6!ibSvA*`kVDZ1g|GY=4Zb|wu_mCQ& z1l4Z^hqwaFe4Z)ovbQ(o4x02Yal|Z18ki+v?h`)wfBydy`5$0>g8oA*5B|SJ^{+Zftr@z6**JALT0IUzdMLx)FMqf|oJ0pe9)Z730O_BH=_x{i4LgEX(IInO6 zi9gup)afZ~y-}FyEGH#Wpuuu^Rg-BKbB_G5L}~U_NrOi|&3xd;!o< zAf)9AQVR1XA#JplPru04`v32IkaNJvOzOghzgPZ$t%vam+3#@p&-*`SY4B)}&Hw-L z_(Vi)jjo@Afde!w3In*T(RutW>$zFJG)!K9dCT7$^LgRcumDR`V0b2-0LIX{oP#iB G5Mu!=*kls` literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_5_ca.paa b/dayz_code/gui/status_blood_inside_5_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..014c8f8feb8a182ae1b396b05bcbadf1218d1b1e GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@aNATO)x*g(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n=Q^TTLVukj#<)sx4geF_Yw3jw3S7ydZXF@A&CX30pwTZV*L4s-r=F}>e>50 zKh}f119l&^{f};*(4mdBH>Ur+3A2yh{zbP>Cidt2|9|@F=6{od{=YZY*WMT`{#W>) z_ej+(Ngw7O^!TEfzZD$f@cNTyO1tdsO}RMh5A^tYh>kkPv{SNA&PeU{GLS0F5v}04`;t@~Gj%2yXTW!JB31d}@c6@J3*s z*p_GwiyzT({{+$owJIn^j>*~Px98_*L3cUE1_v9I#YVI#5*vl~c)mCn-z1jcw zFpN)WcqFd-asU6%`yk_pYG#z~u>W(p{?B!odP?oLx&Q0^pJVyTF!L~q_1|C{5Y^P% z|9=k5x20OK&5c&9#=eS3zKv8&zGM)Xk6i4M>R$oSP#~n`4blqpCaK1tt2gWdy760% z4a_`MCr~o&CA#&Je(_xYe@H3^M|=32{lKokM|qfe==P!W9S;9_|Hmv19u2bj|34m| zh^Vd6)pIa#fQChR%0bS|g~v9d6o@Yicec)Bv;5~~`O+|Fs4buW_r`o)xHT-m5)~Mp QcYv8ty-~;vrVL^m0ADkoRsaA1 literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_blood_inside_6_ca.paa b/dayz_code/gui/status_blood_inside_6_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..5a856397887740212603b04a186273449ade9eda GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@aNATLoh$W(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuLG&npG(1Mr10n>dl^=NPx8>g6mh=Q> zo?HWvzd`mkj1RMMxbnGv-OK-XVm-)v;POWG$;R3n^Z(w0@rRrLWxsCAmEM-F4D;Xr z3811JQNEg-wEuJc|3`b6{BZOCKL*c<%!&o@`UF<0!u*TQ|I6gJNTqvB2D`@Z(zlpFbcT z#AoRKBbBeVs{QXR`#;BF<_)&=AaKVl>AhRtUzqzy^&cViMzf)X12jC9iw9SFPR*lE{~s^+>%z?+==dgNzZQe%1YmstufL4Gp3Zkh3ZJRB|MQz7@jLGQ zpU;KF7kY7C;RX_)kbR@_kPv{SH&VkxfkAfg8Z9k4U3=LcklZD{{-M6C~=Kinue~#tD(;G&y{u^uqqMCa9|IdN>wp1&&xzUQ%*jEwB!1NC{|0RRKeB@%6 zRR0Qqh5{iy6_8d~uqmUp?zu=zR#IEGB|k39hi4P7n;T+D$tLL+&-MTRJ0Ij6aI}ZN z*$?are3Xar33=1u@Spd8%+lb&B%A;L!N36;7Ug-2+G%$=0Ss!SK^mRM pX8F&}@}*(UP+LC#?~VDqaBEnAB`PpHUG8klJ?NKv5~d7d8vrZP%nkqm literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_food_inside_0_ca.paa b/dayz_code/gui/status_food_inside_0_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..b81d6939e7d109df55701d17104518996c4253ef GIT binary patch literal 5625 zcmeI0X;4#F6o79MLKYGevOE$(XcA&rOv3(D5D1_^WOb>ER1J$rDzVVoxb=sM3aw&U zs#cJWATD(o1u^~6PDO2L#SWq~S~RXzv`(ut+DfN&IyR|2m-zap%yjaj(>L=b`R1H= zmb;w0FrQ~;rp`{!oRjK<5VBgW+&_6pmuy3S!!gj{I=HX!p8 zr(~)PcwCf&k1kHq0Sk>THjB3cha>aMXGoO=ESu=E&rlhFBayjDyM~Uxhdu+jw>iwG zT~ht!-A3@Q^;sWhZHdYR4ne)T`j9mffrW;pA8G^w2Y|huFV$ZlyRiz<>=h7?g1)k@HoLzQm?0MOFBR}E0du4W zPsk3o$Ff|@;v&5&ch`ne>HN+!C z%juKp3=1&BU9WQ2GUv%Di5}1Rs*K4yz=d+l(Na-lH;q{f^nlJX` znQ?ui@oN@1yGF;q{{*tU#xc6SBua+URQoQ5gMDf|-sWUMaqD*Z3S9s6!ryNu6phXY z4w`=2Gk>{nJFzU_12e=gQl&WvO;;|kP<$-OGk;AqX{{x#xP457?mOe7(R$+Te5w8> z3;OI0r(|0o{s^fs43(V=1$O1%;h8^2JH#fZAH?HbBUIGU9!i=)KSA_)>{{`)7+`&h z!{RqmfyaL~VN5sfin$GPYCPWNXu&DT+x`KS5Kn?!|Eu;JfdiP!?@IElXIgHbtaa6I zEg%mUhp+f#|JUun`f-D&;}_nE1`f?5m)4Gqu79$0^Pul*CSQ~V1Hz{b~rc=-2g1(6$&V)D7dw~u4WLY+8 z#pCJKz+Gv^tMo9CQ{(YAr%0{{?Q-h@h)0pEK389(!{dSf%5lE4yKNoFr$~UgnYo1~BrJYAi>pxW4W9M}|03StZo@&4bWUKO}QH~W2%C+Y0n!9UG7 z2^^SNTF}>?gZCHIc)ZOlf-G^mjwldcG#YNW>$%@aH*>N)REUX}X5;%T3yUT5=UZ|D18^QS^8gxog_FCOSdD%0eyK62c~$4=i+7o))_&}Zx2 z+6GzAe;5**E)U;H29{1R?@ql@hRgC; z{ZaL~lKL;$TU7mEUx1YJJ07**ZM+Dz#F7P!$si9$)vb=(vQ%KIy|FS^9?0W|G~;as zZJdL3C?*^qtHtQZnS{>RN#IYQ?<=oZSb_Uvtp2F_lIV`!D#O`4upfl-e<=_=W&^V) zgnV|YGI1ZUE-Bc8ZrmydrrH}TCu>$UC0ea3!CoB7e>Nm|iv1_aR=t%%CgNo#GXI_h zUA~n8`eXG+)mM`hiD|qaiosqo%D?}Hq6cqV6EuoL6=_#k?LuH}+D$sq&_~L;ySV0bcBR?GvV}{m|n`cX?136Wn z$^4oUxh3xa literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_food_inside_1_ca.paa b/dayz_code/gui/status_food_inside_1_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..f8d7a4547788c082e01406f52329ee8cea7e86a3 GIT binary patch literal 5625 zcmeI0drVVz6vuyUc~$zN7RsYwkq&&&T0kq{gEA&qp@73F^EDpjQKbk*E9$a|FvK{; zqGD!6P;n03qOf@v-Ij^VNYH?DC;~+k0jHU98%8!CvAY*JKf3$ZNS0<<_DgQ)hjZ>Z z=lgr!dmXKDanVa+;+94`AcR_5TYW}2HCjutm24EpMJL2k%pfm{Q(|M2)a37Nj&&2iy_rA+PZ@HBuu)Mi^~WLikPn{h$9{e>h7CgGH4c2K~hhBn&@%=DnV7E6a$`DG5?-pD4)Q4IduOA0F0gBO!iCC8Stl?j z!q846=<|SG!yl~lSaHG)*xq{S`Mh0B1&CqHg?fCLMddrGd$&>uY;V2vd}7C&*$c}A>!BW|*j-p`TGa)N1k0sv>%iQ-$Y; z#5G}>xz;=Yc2|Cb+;WzS^$QiMwD{o+JpNIfFZ)A9`M5vn_1K#|oznF#UIz-Hekbpe z)~33i4ZtjFztV2U^O?ybasrIUv3|bu)s~!s3CZBk<~90S8prhW#j4EHsx-X6@@8Zz zJ(kxxg1^1>(({E)sIP9gnTOZ^boX@|#aHLmKz(fP*;STvWAoYDDW|$S$FLCWGOp%j z=lo?czzku@Doewdzh{UlyF{hK`scb0hDv>3?*o5&J@)36V!h8-{+sdstoBQMG~Z`e zG_H@!NJb0+p8p}PdNWZ|gzXAHw(jEK+&1v{mYtnvt6!lW)}2&kvcRqt2d-8OWK09L zw_bX_9Eo_dsmY@p>Pd}wvW8i$4+7@7Q+l*`JtvC#su*qs46tjIGuty~UHJ?+-;4OJ zUX<_%c!5EcmSkLuU@{G6Y7)rk&~J1 z0^k+W+k3av=Wu|_0Zlqal*g5B=EnRyO$X(VBzP7xxz8>-!`>`>??r{RZQV~$ zPyfp$rmra=8&%7#=Tkl!S-hicy=!JAkpBm}wXQLev+AR}F@d&I~VdjEFw`+UXQTGWtP@{e#In zD)*1fT8nv(xDFB$H4S><7KW)z~Kh8 zc?AE}O>=1bx#((_CotWg&ZixXz0Fy{4&eW(Bq{&fbL_W(>Hc({ z{w(;itW1Ybr_k#Up4ABRFw^~AkPG!$)E(_Kt6L7^-HR>R-r8BayBpGawh(D4#x?k* gEx32vH(m8(FRc#bj!O3Ddh~Q(RG&}^x4p{tC%MFK-2eap literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_food_inside_2_ca.paa b/dayz_code/gui/status_food_inside_2_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..234368aff7f23350b05be784644a5175bb3d94b6 GIT binary patch literal 5625 zcmeI0c~BEq9LHY>5{`s~L%B;rAb>-Vs{v(zq^KcE0E5F=Ej2WNs? zVudPVwTDsxTc+C1;4!t@PAN)tib0SHDpPGm1i@0ayWsB`b~;n@NApLgZ)PX?%~E6T*MNBe`;QiEXB7Z@aa61|55sZ&4ENF~eW`~Y?4Cgq zwT&+Q2yh_J{WHObA>F{Hu9qG!mRp%6W$l(hKAf4Q4*QEz+kshuDt0T`B7hzJwr`u+ zlwJiK?XEo0tSO$JD&gS>TpySD6R- z2$PGIH|nZ2zziF*`1{P#uTRx~@mwFGlxRwZG9dQ;a+k5@P2lMfoM6l{fj%2VH{;%<{S1AB_edKyyke6I7$_GoO+w*vdR zh#%AU)YT|}7a(P=cii*)e_nwk^Q0sj_rrYt9xuPWA$_2y=VNNV9W8jjqFomU`JBl} z=)6(2nE~u8t>+ldXJfd)rLj^c1^dAb36b}w>pOr|%O~sCHaDr0by-}nAD8^5n(nR& z1U7ZO^mum@&rMS>9C80^ujd5MyJ~^&hw#`_lj`r430&4xuEzRDJIC6Zge=T`VcO8k zhm#89}UxO0g|7%C$iYMuZ1y+XowWErMo4$=Q@`6%9B(DN}h zI~7UN^alGIc3197HvsBUg<)dAvZXV_g`A_NZv5J5;Y%`V4Z`{W@{EeT__amgL+Q)#V~p<4SQfBZ zVOdj8ML|5FMXmbCh&|pGicyvHdUabg*j+=FMY7HwybUon9$oJ$bLCr~sJ{gM*&fb} zIg2t2fyL zUQgloR>$;E&dEV(zifZ@OnS!d9b-G1i4hjq>HdsmQQ^f&ZT8^lMd^lZu= zxa1o0KgHuwp8~0mj1vRWeu?~gwemdw0I)w&G!D95+yG41(^+f1vD0_GEnWsG7A-gP zcW!Zb(euabG_y*RMYBO4*AcpKd*9OlV0t_{TmN+WD$$yWcVE`mxdY8rYRq)KC9Gan18AAxN(w$-I|jfmAszZJr=o_6YgIJ I*+jIz0MtH&7ytkO literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_food_inside_3_ca.paa b/dayz_code/gui/status_food_inside_3_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..4c47fbfe6f94be31dbfce9a903046fa5f48b1899 GIT binary patch literal 5625 zcmeI0eNYoe6u>v(8xlYe4531R2x1FZwLwKqKpRL!gCG{ARtzZu0-_NLT10THR$BRR zw3MhQ#bO<;L?kWxhgPj$gCE$ABZP|h0d`tDPz+T;u6M%Q9M{g&OlL@^)1A9Xe)Hb$ zdvD*~-n+FR!ox!s&JJG`YK{=E?lwuZnQye3e$|dCgjpV(> z5uxp)5!&g3P%C*G*Ca@S5IMq7qYT1->i2(sx%sd|vNGXEpW^v)qxe_p$1s1EJS`U~ zr)z0 zQHFv2ab~yAbA?SxV7|rLX*+r;r^}@Y6El{TKqFbDXTi9qLFXbI>c2$EvmRT;*%XjW+1|F3x;WUzuFtFc}B8yyYN(iv(P2$?Q zge_&jljXHDb(*DE|Lp>iQm$17gM7DV`dN|M{tmFI7N;fc}Mtds7p8lX3j@k}|dcd3%A} z)baOBOK~e}&Q1n@9;OY%gd_$<0Q=22#?>7 u$#>$BAtk|ZGiu1KDt>xjeip~xrK zf1N@9&`puDINR|2H@>Cz_DAgT(BIVYM|DLM33Cc@{<<#ZRt&`3HGzM#<{anJ*KFa(^?dZvxqrP#5Sgi6?r*^!YJy{Lzb^9VMPrQtl1rf9NX$IJ$^>p7U`1v$~30 zEKgsk|E2!wHYzy182U#>^{yg%i*f!Jzf0(s5#3lm()niEbK1~fOk7>n3I6^mpN#qV zr}70IME8Z_eq3KL{TXQMv*zvw&TxG7wR*V5J!Q&g$F4| zt!sg~RN1G!avGR9p0PaHR^#6Gh0hZhk8g3{&R0Q--+--zN-bB|cp2Dr(yfh|Ngdc9 zW9>2ZSE2*+H0-$nFuq;L^?k95BsK6dq@O*#!VH%If!iz-tUHt+f}A;?v7CC&k;A%k zyc)*iS83n-e4-sLi#<*V-#K%n^&-d%uei343T($^gt7LR`aP9yZpl`TxJ+$F*B*1O zb#cI+4i%bBMV1M`k5DNuf#r&sIi9h6XyD=|`fJv|A=AE-yue;V-|({G;E{oL@xVPX z$c?qf)F%YyJA01QQ6P25IM~2#_Bbt9cCQ?tZcIS3=#XE|JA<65&*XAW z-u%v$oH?LhZFBWX`P|Jf-JfuZ5h=rjxc_sXZ8cd@7O^lM(;ky;e`vTtTu;JpBiow} zJ*U(On3?+4$eKD9< SoX>;k(hd=;3~w5P*8TwAQIf_0 literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_food_inside_4_ca.paa b/dayz_code/gui/status_food_inside_4_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..d42ca64403bd864d49ec24725160eb395de7826a GIT binary patch literal 5625 zcmeI0e@t6d6vuBT493=$s05WYWt&?@1awiSi+{9@k z+G&>A&19KDU6aLsm_WgVH`$C7mpT2zfjZ|#F_WOqX<}>$l)ARpdtZBAU+=PF4M}U_ z&3WN{xaZybzW1DW-t9}rTCJwyNv&R!h7j`ke4BYTXi6z#(kN>+TS_QP$U%8qNlBTS zoOhAqU^YT;-Hp((9E2vxkyukBH9};BNTU>7Ap>4 zbl||4aDSL2BpOEk6o_EmO;q#Hz|6qdpC4Dx9hZu~9(Xu1d1g=L*@`(W_ zJO2$;ey3Q!+^Gz$at0^h{*>Jl((|N509OxvviuD9!V|!3{3U&Z3eTWIc)oAZUzb|? zu^~49*ZW*Sw<_oaeUi0A{6I9Gk9^1Nnr?IO1(L?@R{bRSWC`GUR)1|>YUMw!jMdNT zDX$!qdOj)=^jO;cEh z1?%6#=YQ0njen}?->#2+{#iXbwE4jO#6Z7wFDaH}$$(jZT(SBNHNp}6;RuMn`wI?W$T<7&pCwsPgNbB zt;b%WKiToW^Ob-DUo;E*e^$?8bNMgWd%+P9_Q%QApKIIL;1TU_R$Mc+81xW7$4OV#GB+ z1pO;F5jM_HRP%iKaY@en6iqD{*9WPO~e>FdLko*pU@t!%2$Lxl#bl}n{j59_8 z=YUNEcu*CZRsknEAM0=KZ9l%h{pbZ4@A1=y*Pb#wR|AYHJO9ieCa`P%RTVLTBLn_h z&g%6a9U*TTxW3>l*Yta!+>$uk>=7q-3rk?`oN5*i2+x#9q zZE0E3bqu(8iYt|wI|_kWf0ox@o_a^qb9@c>7vj5CZ90{O%Oifu#+W)`-7-6DJMAq(h@(9b-u&{9fAIhW*(UmRoI9d)0VikIe;q zlDz|{XP5XStnP0#+_b+L|K|JO{QfE5HS=F%<$sUT-yB9W@oG9P>pdP5tz4M@zcs#9+pG9XN0!rAW{UXN+g??^8(39{&$7y%zD?ZT71AxGwtQcg;jz>iahT+4ynj1>wRd zTX+E7GCvd;JD&!S|95SqS7SYclHLtt;=E`Oy((|7Vb7>zGGFE&go(P^*Ue)A;)bC( zw(I5&Ue@xy(ra!*^FaPlZf(2t)yh-%51=pJ%O}Zmld!t~U*rExew)(P0Q&7i z6QAT~i7=h)v+OfF<$r|bd6%BD6aPwS)rpH<>#6q(?XNlh7;Q29_7lXflKg}CJhwI* zk!h?}`Q5zCmZ!nNjl84Jye|1){hdyIEK4h`Ri;gsxC$(GE<#l@^Ar#J2usQ8+hg$0 z{Iyq#tz;IbPibZJ28<;QK8b%N`lD#x?u~tu``x&B#nQ7Y+oi{Mj%)BMF7b93V%zShH@0~g4%xqBn ze&3l&f4z?b09lqDNgVLiGOW0w|l$Tz2(4*51aJvBDZXv)&dMs^t z!3#h&{29z3UbFK`VH=2Dyx7H|erpnkdBo^Lx?&rt5A!vzwRp41uAX7BcO+foHSQ;I zTkJq5##=^gJ%e;2Hu9$%&cvVD|IG8BdH*rrW%6Ho<$tH4zi|+$4OQ%WQOl1;d+QB5Pi#Cd>(+-rU{&KQhGGErhd~{<4Q4o>mNnTE zJb?TbB5juM^o}AnlV2{qjCg|E=|p>l}MO=8X#V4Mc}>mS`ugs zm&U9eE4BXIG0&xFYjX+e_o!txW#7x~vh3Eb8u}+tk#@IbJkglS|^s7ou3 zC8kX~`xU5mrg}H`(rrI3MmTia&C}QX#p1)F@)1ra&qGz1rxW#=Era`@)bv=GdWHN1 zs{2a4)}4sW=9?Q_I59j7rzjc5&n7!F%7|BAaUMH@uT#&j0`b literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_temp_2_ca.paa b/dayz_code/gui/status_temp_2_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..ea638ae2e2171e99404937a34669439a410b8706 GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@a4-F1u#Ft(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+0cZjgfGmWuK{T!SoD80mR6HlKz|3a`^P5y)e3%=C zE1%OitVzY^5Zu4)#+q|3c+R~tT>Xn4pT>%e0t`R|^RJdM=bQsT1mmNtA8!0n|BuH1 zX!;+y`Cl>UMqBQUWAO4{D_ltDpwOKWQ~o#a_Bj3j&v{UB4{mQPyCn7Jc>SN_F#b?4 z@7vMZH!RP$1~4dg;Z`Ht=%Qu#7n|3B~l|6Lwt{$TSz zx_d-!{$2n7T|Oc_z_}O^U!?k9>s|fd)9Yn#3>E(ye=|#x-j;hC=3d2z|L6aIklzgB z|9^;@K4v}#$^2)B$xD3y|Jhw#2d>|n!2{G^gx8no;XTy&(ynaDw~@lfm?2_7{ind7 zz`y_+VSoTwG!Wto83X-bmShf7&uF}j_x8lOH(`82`YDyyGB!(61|pb!qQ;G~H-HGn zr__8x`Ul*8C$qF4=LboNPb{k|6x9i z&qU>B3)?5Nq|a`7e_`emDn`|JY^lAm{4dqggYfQa`G3mtUK49S!+!n`O!A0okWhLe zBp(i}W|50Q-5)>spKVKo7n2na{{KFJRICV-SZoS_h5{ii7m!n6-qZ(1ql@PR78qYq z1(?k@%EGNBwl0Urb2WbZ#x=SIXoRvJE806VBi1^i%Kwf&SF9GHiyWD*xOqX&d#2(E&1^_ ggt2}N8*6V&w}l4_3$R25h9_quTh0N$w`hGk0CLfd3jhEB literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_temp_3_ca.paa b/dayz_code/gui/status_temp_3_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..6fd41babc64336a8dcc58b7c9fae62b9b0480f05 GIT binary patch literal 5625 zcmZSm@9ypx;_M#g$il$D@Z-l1RWLuo(HF%34+J2-yQ7aAh|dVbAbzl$o4*5)-2lYx z0t^g&A`A>uMHv|G05NI6fx&@+L4ZMoVZmk<&q*pE3y}?=6`zvU|7Si( z2qe!o#M(#ynK%WR1q0yqJ1kej{6i|A`^}cWH~IfuhUo`|2?z`pzC_x#T-r1}?KJ=25w5ApxM&xe^0@%`ZOe2RTe{}bV-2A)#|GRudctCqqF!z({f30`*e^0NMy#dpYZr@8ne@S(Z zv@2WkZKUuqW{4P2|0ysiFfgz%a5Gepeun-0ADHA3#T=>W3tfFUu$o0K26cb@GobL~YQ$y%pi@>^a+#A8$h#>({)o_QrHuc(AYlOH^QZ PayGHOIqCNnZEOz!juMHv|G05NI6fx&@+0cZjgfGmWuK{T!Sx(uF^R6HlKz|7|d^P5y)e3%=C zD_{FVSl^#N=Rw{BhqvM-{y*32{~U+$hr9p(FJ%;903x`5FV%lw2O>Bh8UVwUKkEO{ z_#aLGqxm0RzKxcD!>asmM{D1(Jl~dUa2gcbkox}rZctMW(Y|7SQUAdnEDMnr{kYBd z#`!<eC{_}{@&#Oa~T#MpfCY}!NQkF+m;J#YM}!BoR|RuFss7h`SO53)df6K={pj`$HooyU zvn1(lxwm2NRebn={{IL0%`pD|haeXt(#Oo_AesO0_P@mU|DWB}b>RBF89YG!#bMJw zly+rHzKs+<#taby>OTbr1qKGt2m=JbqKOcn`vS1o`<4feJdj$JFWY!;PyBn6Sp9^| zCn$f(f$s?r!R^cB|G)r5a6Z%kn(;@N{Yq%fn%H+``QP2{fr1xY!0BwA52~i;!}v^8 zZnm&}GE4gGmiHHCKA~b%eaDvC8_WMvt=JUaeJ%e_S>9`6?Pu7}|A9#!QOprc&jiwI zIIx;UE(Udf{N#VOEfHQ!Ry_Fs`v6k0B1~ejDF7M@gtS~hE`fRTNDPMk-cI6=Q@l}NWb9D zAMgLT*j>QD2R?nA&ut zHZLn*V?NPkiGkH4_`8siU)1HlfnT9`C>{!{m+V6NGhw5?a>orF%>PXII{A;cc`GaQ zmln=n`yloM zEs(ebt;@KeZaI=K1wOJD7y9$s3i74KG6p8QwsURd-w8g&_?ldoa6{c&NtaE(u;X~n zH@GVDanbw%7ZdiKL^Z{`)cH2r!^#S$zMo$-e<$x3Wpux=;b7c5m@8TStICXj3%EaVS1^9&T`TeJL5$X9WFN;~PVxVaw6u1%K>f9@SW$UnJzEE;7a zA7M9Y@jE(fK{hW1Cd7ItYPB`Gbr)(|4juNx!EZKSiT;weRkD@Y{n#IG3l++;0+Y!)U6~@xE_p{JAIY2LXOy?$c-%L%CAPtdHeqbL5R}`Y=HR^S zquUk(HtCVRqV{bddDw^KjeN{v8HZQBL-8~7??5f}W#{}}D zj^^_lQ`EU*kA)TtMcleJ>FaTXvpOu*&$D_hwBcg$cJfz&`6qKON;F+vnQ3<>dXKQw znz^4{SHBW2rWRo*DOvqOUlm$YyV~;8GheSNL9pq{t^ukyq2|nG<-p;%cY9LYZEUD5 zEAHn48~wL~oxc{fvWNKDz*H}}S&5m>>?>7dvl?fjy@9Bk)+PLu-e2hyLz%)lDvPHd O{=V(B)b@~A-r7H712@b7 literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_thirst_inside_1_ca.paa b/dayz_code/gui/status_thirst_inside_1_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..eac3ea3c5be5b64b587fd0e0fe861e8a490533bf GIT binary patch literal 5625 zcmeI0|7%-S6u@s^UedJP)*#!mk;bMjO*^*Q>Cp@kH6?v*BP|Mw^cP2)jtuL9{Y8Ip zztnar0kKKYi8Xc1zhG!;R~?$t<@)ld$UinOp9jqMn6EA8k@_t13-O{JZ;qN*s5+A@lDCtcS@KS-+wRtMU>bkotGz5!&DC_@|=N z+w))eequ+Qq-Fd@KStozY+O9=bc(kq$M#*aQHoeHjt}5Zb{3sFai?)+ zVI||w6PHGp<+bL6Bk#PqWKPQSeWahC=G-CUMPB2))z18d4g4MFH#g`jqR=Tc?72PGIqU>ijxO7axxQ$%lVS{>%AVBiZZt?A+_t*`!5W z>-DbWuXTNNVgg$}iZ6AW&pmBp{U$$sD?BFUh14eYFJ&8|9l|v`>tDH-ekFU=%0qA?zAqdH@&{~6 z>zdO3Aa2-;@tB)eCbvBy?2Y$I`!F!mIa1!1jgZOgv~5#hC$hm|Ekyd&=BMhr;K)qq z#Y^%rsMuz)h@+eBxV~Bb!RMM{*y)kIivC?p3*aB=tNB#RhW=|JX7_KfNY*yr2E-PV zXq5bc!G^CjEnFe4)}N~1kw0}bmWcmO_KZAg#QqjoEb}UN=N~zEF?DOx+LZRWaNM$$ z#qa;Q@|K;yUTYnXtd#v}%O()EU$D%jlK9YCOPxs_M?~!J8tf)Aju9sb_ N--iDDhSW;l{sZmmpM3xT literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_thirst_inside_2_ca.paa b/dayz_code/gui/status_thirst_inside_2_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..1df04dc08c4c06e7736c871dedefe26ce08d6440 GIT binary patch literal 5625 zcmeHLUrbYH6#uwwu|*K#KOn4Y2^Aqm(R^64ERHrVg-*~1&Bl`fY9TY$@-lru;#N#d ziLtc%V`9n{j6C_EjHD*MsF=tqXqK6WTQBToD}c3+4fn; z_4njFU4+ot^$7jE0ih{!rgvD71tDT#{-6%wntp!7A0{7K9CE1+KQKXl2`&g%2k!!g z8mv@|OH{2Wr-=1e3HAnW=z=#^Dqp^yxHzW^X^f12F(%}_vifhNcc_h!4>jqRaPPoP zz`VU|#~Z6j{GqlAh#zmGqbxOFKBfHa=h^Rp@a-)7Bv{1sk>%kR_5hP-8($S7!Px_9 zh&LC9+Im|?SiHEnbOB$ClMF!rJ-h`8R0HHH+^Zke`A;#N@aJLnlh#uD%Z*jo+)*xD9Wv?yMlY-HkdqFp zLdHMSxOB+WG-}G8=jFxOj!1mW9fNv{vyK1IYkJUL5oghVNtDErXkRejc)2*Mt@_vm*ysCkx$!#BpEK_srTD|v2=QeapOFR!CjI)X;h+EanET~1xA>v>^7+f_ z_QfBc>&Y7aC4bEwtspB4<9~*BU~0eR<4+gYJ)@SzRbapT-f(mHiYp9wx%*woU*YQ( zhl8wq5T7?L`F6^%Ix77ZGq*B%BrX}&$mHMMmkfC_{4aVclKqO!S0(=+<;e^{{+04! zL`L$u0b1;_1z#*?1}E0gU)dTWY$r9lqMuw$U&&s&@=83{USV#>;18oNVRM)85^zo_ zi6@k~F`2)E+H0#}_OZ>gsX5h_tFYg{Ue=}!f6M$e_aQQbeqr(OxUax8vNbFiGv&W9y61xQ)xTvH4_b9-1e7Vo{e zpFiR{hAuXN_>mxUxCRtbE*n7i)%uzvXJ9*z(RRwS9n-|2e6V^jK=+f zW;?UD8f$`g?LQq_>ivzE`Y*boPpEpL?6t>D{x2o*I$$OLH7Daf$>v~Bo01b!)KGnd zVg7zC($c?0HRL6}+kChV+|;6d5mUE^z2vTz<~r)kj@=;t?Anj-9rLQen*~glHv5 zM4Hr>=v(^XMpS49r4(8UW!*vVNrb75=4N-E&Y3;Ob-!dZ-G~lcc7HqPKF{+%&$;J5 z_s+uk`R45#@^_du2qBNhv)0c==1r6_X_WKL8!ePo1g*&=|$C^j2>x=oR@%{nc9)Y!NrqXT-4aQPuY1j_mU%!G5&gpPktc^?YdU zhP|VfFXIs3oiTLI9~}9E#&$QzY`oZdtl#02z+b5KqmI`Od900wL#=;Bp|=NrchGQVM1Ns%jogRj``|Cs`Xe*FuVzwz_WBz6c^K($c-JkAKNDog z$8@j%IRkm}{XDrJ{DnIIbM4(jGpYX!zS8vKd`j5pkN^BY7&s)jARp76|JWlA-^&Zf z!bZRDle;pVlq^jD8M-1T>)XGbk5zA|Wf$A;)1I_!l5X(f^ZfgH1A_j<(IT6Tl&rvY zKI~W-z#1=ZmJKDW|E&+}X9x5je2Vq40X%|UyGVT%HuX-Z_nTn*PerNZbpx!jvJ?J* zG%A_%m!X&Ap3`&_({$b$UWNH6twxk==uRwq>1H6a;m=4SZJejD>==>6EwjQ z&Mr9$f7=E9e>?xDuKrn>voIUGn(?SUSpL_Pd)u&Qh?<*Hnfb_zeGl_|K`Rr}-i{B+ zABFc*^}q8bDN}=3rsy4pQYm0teB$X80=dnVXbt3;vJ+&zPHw}$%fFU>3Zx$yCmP61 z%B64bw$;GuG;yuelF|vR9Ixc4LBnpou$K<^r!8(!eW$Cy-3+W8ujKlkUzgqf2JC9X zUj09>_RV}d44d%w14VK!`Tzg` literal 0 HcmV?d00001 diff --git a/dayz_code/gui/status_thirst_inside_4_ca.paa b/dayz_code/gui/status_thirst_inside_4_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..b18ece851914d92c14519591a97525377e22c320 GIT binary patch literal 5625 zcmeHLT}V_x6dr4>O)^(gG?ryu`hfzG9=Z_~t3_*OQBagG{j5GjrCy=h9!j>Beh{KX zLwcxKvIn0cBe+FDEB2!hrDc@1fu*HIlr2lHx8^#{%y#bHidv;zU84(^d%rs~=gfD` zxo6HyA}J`y-?Xw|bG{BCgfU*ladG}Sh6%kGF34YNV>p4{3~#jA*5}dp!}LC3Kin;&VOI`&}D)>j4tQD_XZ{J#Vvr-%A|6iWM2w6y^`W1N)zCT zW}nJ7&Sy5vpY*X*7S1neeycK*1Xwe-NBSjcm(hYV0cTV?&oxmIfa8sSDk`j4JxRW5>S|EpCtozbbmK4FJ)B9b`J)o6KhybXD%g9x{lBnCZX;jA z`8?MAi?-7Bg2c~yF=ejYJ(m1)RygsqIO1Q|`%oNyDq@JoSo=S%pRSiy+zI-|JN{?7 z9uABp|C8jx`K}sM-0+|N{+`(H5cvWgTDL+T0sllh9+D2amFH)w;)Z|LyTOXt(oUnw z_ax(QQ1?%N%YX4JCOM$ydrSM3b-u>m;;?}VZ|T+d8&oQ<*(VkZot3&J=O&bUT>B-#6+e~zEwu}e!g zUpvHJp+eQ4z2S1z^9Cgg=95?z-T5pDaK5=9zwGg#h-HRCKe%P^j6YMejnQ4NDfb;y znxQ?CJtMW7$u`%#HO=a85Gk!p?jv|A`Mf<^`j6MkqbhS|<&c1f1kKUXzihWmj|~Qx zxDl1v_hq8ASfjU1u=ETM;6Cy7NcC^I#*a0kwoIAbLWz%tAn0!&Y8AEE8%VKh@wA;s z=>Hh*A1S^J>?km_GiO~v&EB_Cxlt-z3Rqt+E%#k9@hvTg)b@vO(BE`J_^5pKFv#5| zbfnVi{WJdneg8DRw(ZBT+fzpZULu=89?19|&UGqoVk=e6mUV~@o?oWopU3Nwo*j!C z?@0EuLW!DP^miMVch)GXHjj=4@f?plaMArw~)4P Dl{ZAv literal 0 HcmV?d00001 diff --git a/dayz_code/init/compiles.sqf b/dayz_code/init/compiles.sqf index 71335dbcf..e866d9ea6 100644 --- a/dayz_code/init/compiles.sqf +++ b/dayz_code/init/compiles.sqf @@ -48,7 +48,6 @@ if (!isDedicated) then { player_throwObject = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_throwObject.sqf"; player_alertZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_alertZombies.sqf"; player_fireMonitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\fire_monitor.sqf"; - //player_combatLogged = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_combatLogged.sqf"; player_tameDog = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_tameDog.sqf"; //Objects @@ -98,18 +97,39 @@ if (!isDedicated) then { // TODO: need move it in player_monitor.fsm // allow player disconnect from server, if loading hang, kicked by BE etc. [] spawn { - private["_timeOut"]; + private["_timeOut","_display","_control1","_control2"]; + disableSerialization; _timeOut = 0; - while { _timeOut < 60 } do { + dayz_loadScreenMsg = ""; + diag_log "DEBUG: loadscreen guard started."; + _display = uiNameSpace getVariable "BIS_loadingScreen"; + _control1 = _display displayctrl 8400; + _control2 = _display displayctrl 102; + // 40 sec timeout + while { _timeOut < 400 && !dayz_clientPreload } do { + if ( isNull _display ) then { + waitUntil { !dialog; }; + startLoadingScreen ["","RscDisplayLoadCustom"]; + _display = uiNameSpace getVariable "BIS_loadingScreen"; + _control1 = _display displayctrl 8400; + _control2 = _display displayctrl 102; + }; + if ( dayz_loadScreenMsg != "" ) then { + _control1 ctrlSetText dayz_loadScreenMsg; + dayz_loadScreenMsg = ""; + }; + _control2 ctrlSetText format["%1",round(_timeOut*0.1)]; _timeOut = _timeOut + 1; - sleep 1; + sleep 0.1; }; - if ( !dayz_preloadFinished ) then { endLoadingScreen; + if ( !dayz_clientPreload ) then { + + diag_log "DEBUG: loadscreen guard ended with timeout."; disableUserInput false; - cutText ["Something went wrong! disconnect and try again!", "BLACK OUT",1]; + 1 cutText ["Something went wrong! disconnect and try again!", "PLAIN"]; player enableSimulation false; - }; + } else { diag_log "DEBUG: loadscreen guard ended."; }; }; dayz_losChance = { private["_agent","_maxDis","_dis","_val","_maxExp","_myExp"]; @@ -203,6 +223,7 @@ if (!isDedicated) then { _btnRespawn ctrlEnable false; }; + /* dayz_disableAbort = { private["_display","_btnAbort","_combattimeout"]; _combattimeout = player getVariable["combattimeout",0]; @@ -215,6 +236,7 @@ if (!isDedicated) then { _btnAbort = _display displayCtrl 104; _btnAbort ctrlEnable false; }; + */ dayz_spaceInterrupt = { private ["_dikCode", "_handled"]; diff --git a/dayz_code/init/publicEH.sqf b/dayz_code/init/publicEH.sqf index 535c1eec0..d7330e1c4 100644 --- a/dayz_code/init/publicEH.sqf +++ b/dayz_code/init/publicEH.sqf @@ -22,22 +22,21 @@ //Server only if (isServer) then { - "dayzDeath" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerDied}; + "dayzDeath" addPublicVariableEventHandler {(_this select 1) call server_playerDied}; "dayzDiscoAdd" addPublicVariableEventHandler {dayz_disco set [count dayz_disco,(_this select 1)];}; "dayzDiscoRem" addPublicVariableEventHandler {dayz_disco = dayz_disco - [(_this select 1)];}; "dayzPlayerSave" addPublicVariableEventHandler {(_this select 1) call server_playerSync;}; "dayzPublishObj" addPublicVariableEventHandler {(_this select 1) call server_publishObj}; + "dayzUpdateVehicle" addPublicVariableEventHandler {(_this select 1) call server_updateObject}; + "dayzDeleteObj" addPublicVariableEventHandler {(_this select 1) call local_deleteObj}; "dayzPublishVeh" addPublicVariableEventHandler {(_this select 1) call server_publishVeh}; // for vehicle traders - // "dayzPublishBank" addPublicVariableEventHandler {(_this select 1) call server_publishBank}; "dayzTraderMenu" addPublicVariableEventHandler {(_this select 1) call server_traders}; // for all traders - "dayzUpdateVehicle" addPublicVariableEventHandler {_id = (_this select 1) spawn server_updateObject}; - "dayzDeleteObj" addPublicVariableEventHandler {_id = (_this select 1) spawn local_deleteObj}; "dayzLogin" addPublicVariableEventHandler {(_this select 1) call server_playerLogin}; "dayzLogin2" addPublicVariableEventHandler {(_this select 1) call server_playerSetup}; - "dayzPlayerMorph" addPublicVariableEventHandler {(_this select 1) call server_playerMorph}; - "dayzUpdate" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_processUpdate}; - "dayzLoginRecord" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_recordLogin}; - "dayzCharSave" addPublicVariableEventHandler {(_this select 1) call server_playerSync}; +// "dayzPlayerMorph" addPublicVariableEventHandler {(_this select 1) call server_playerMorph}; +// "dayzUpdate" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_processUpdate}; + "dayzLoginRecord" addPublicVariableEventHandler {(_this select 1) call dayz_recordLogin}; +// "dayzCharSave" addPublicVariableEventHandler {(_this select 1) call server_playerSync}; "dayzCharDisco" addPublicVariableEventHandler {(_this select 1) call server_characterSync}; }; @@ -48,8 +47,7 @@ if (!isDedicated) then { "dayzRoadFlare" addPublicVariableEventHandler {(_this select 1) spawn object_roadFlare}; "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"}; - "changeCharacter" addPublicVariableEventHandler {(_this select 1) call player_serverModelChange}; - "dayzSwitch" addPublicVariableEventHandler {(_this select 1) call server_switchPlayer}; +// "changeCharacter" addPublicVariableEventHandler {(_this select 1) call player_serverModelChange}; +// "dayzSwitch" addPublicVariableEventHandler {(_this select 1) call server_switchPlayer}; "dayzFire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn}; - //"dayz_combatLog" addPublicVariableEventHandler {nul=(_this select 1) spawn player_combatLogged}; }; \ No newline at end of file diff --git a/dayz_code/init/variables.sqf b/dayz_code/init/variables.sqf index 1291c21fc..52504c4c6 100644 --- a/dayz_code/init/variables.sqf +++ b/dayz_code/init/variables.sqf @@ -71,6 +71,7 @@ dayz_resetSelfActions = { s_build_Wire_cat1 = -1; s_player_deleteBuild = -1; s_player_forceSave = -1; + s_player_flipveh = -1; }; call dayz_resetSelfActions; @@ -191,14 +192,13 @@ if(isnil "dayz_maxLocalZombies") then { dayz_spawnPos = getPosATL player; -if(isDedicated) then { - dayz_disco = []; -}; if(isServer) then { + dayz_disco = []; dayz_players = []; dead_bodyCleanup = []; needUpdate_objects = []; + botPlayers = []; }; if(!isDedicated) then { diff --git a/dayz_code/rscTitles.hpp b/dayz_code/rscTitles.hpp index 8a45b0599..4e3fe2586 100644 --- a/dayz_code/rscTitles.hpp +++ b/dayz_code/rscTitles.hpp @@ -87,7 +87,7 @@ class RscDisplayMain : RscStandardDisplay class DAYZ_Version : CA_Version { idc = -1; - text = "DayZ 1.7.4.4"; + text = "DayZ 1.7.5.D1207"; y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)"; }; class CA_TitleMainMenu; @@ -1136,7 +1136,7 @@ class RscTitles class RscPicture_1301: RscPictureGUI { idc = 1301; - text = "\z\addons\dayz_code\gui\status_food_inside_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_food_inside_ca.paa"; x = 0.955313 * safezoneW + safezoneX; y = 0.93 * safezoneH + safezoneY; w = 0.06; @@ -1145,7 +1145,7 @@ class RscTitles class RscPicture_1300: RscPictureGUI { idc = 1300; - text = "\z\addons\dayz_code\gui\status_blood_inside_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_blood_inside_ca.paa"; x = 0.955313 * safezoneW + safezoneX; y = 0.86 * safezoneH + safezoneY; w = 0.06; @@ -1154,7 +1154,7 @@ class RscTitles class RscPicture_1302: RscPictureGUI { idc = 1302; - text = "\z\addons\dayz_code\gui\status_thirst_inside_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_thirst_inside_ca.paa"; x = 0.955313 * safezoneW + safezoneX; y = 0.79 * safezoneH + safezoneY; w = 0.06; @@ -1163,7 +1163,7 @@ class RscTitles class RscPicture_1306: RscPictureGUI { idc = 1306; - text = "\z\addons\dayz_code\gui\status_temp_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_temp_ca.paa"; x = 0.955313 * safezoneW + safezoneX; y = 0.72 * safezoneH + safezoneY; w = 0.06; @@ -1209,7 +1209,7 @@ class RscTitles { idc = 1701; - text = "\z\addons\dayz_code\gui\status_food_inside_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_food_inside_ca.paa"; x = 0.945313 * safezoneW + safezoneX; y = 0.95 * safezoneH + safezoneY; w = 0.04; @@ -1218,7 +1218,7 @@ class RscTitles class RscPicture_1702: RscPictureGUI { idc = 1702; - text = "\z\addons\dayz_code\gui\status_thirst_inside_ca.paa"; + //text = "\z\addons\dayz_code\gui\status_thirst_inside_ca.paa"; x = 0.945313 * safezoneW + safezoneX; y = 0.816666 * safezoneH + safezoneY; w = 0.04; diff --git a/dayz_code/stringtable.xml b/dayz_code/stringtable.xml index 36bb65f91..25fc0be51 100644 --- a/dayz_code/stringtable.xml +++ b/dayz_code/stringtable.xml @@ -16,7 +16,7 @@ On 12 March 2013, a prion disease\nand spreads among the worlds population\ntriggering a global pandemic On 12 March 2013, a prion disease\nand spreads among the worlds population\ntriggering a global pandemic - Am 12. Mä 2013 breitet sich\neine Prionenkrankheit unter der Weltbevölkerung aus\nund löst eine globale Pandemie aus + Am 12. März 2013 breitet sich\neine Prionenkrankheit unter der Weltbevölkerung aus\nund löst eine globale Pandemie aus 12 марта 2013 г., прионное заболевание\nраспространяется среди населения всего земного шара,\nвызывая общую пандемию @@ -164,7 +164,7 @@ You have constructed a %1 You have constructed a %1 - You have constructed a %1 + Du hast eine(n) %1 gebaut Вы построили %1. @@ -254,7 +254,7 @@ You need to sit in the driver seat before you can repair this vehicle You need to sit in the driver seat before you can repair this vehicle - You need to sit in the driver seat before you can repair this vehicle + Sie müssen im Fahrersitz sitzen um dieses Fahrzeug reparieren zu können. Для ремонта требуется занять место водителя хотя бы раз. @@ -266,19 +266,19 @@ Waiting for character to create Waiting for character to create - Warte auf den Spieler um zu erstellen + Warte darauf, einen neuen Charakter um zu erstellen Пожалуйста, выйдите в окно выбора игрока чтобы продолжить игру Retrying to Authenticate Retrying to Authenticate - Versuche erneut zu Authendifizieren + Versuche erneut zu Authentifizieren Попытка аутентификации Requesting Authentication Requesting Authentication - Empfange Authendifisierung + Empfange Authentifizierung Запрос аутентификации @@ -296,7 +296,7 @@ You are running an incorrect version of DAYZ_CODE, please download this file from dayzmod.com/downloads (You are running version %1 and the server is running version %2) You are running an incorrect version of DAYZ_CODE, please download this file from dayzmod.com/downloads (You are running version %1 and the server is running version %2) - Du hast eine falsche version von DAYZ_CODE, bitte lade dir die neuste version runter www.dayzmod.com/downloads + Du hast eine falsche Version von DAYZ_CODE, bitte lade dir die neuste Version von www.dayzmod.com/downloads runter Вы используете неверную версию DAYZ_CODE, пожалуйста, скачайте данный файл с dayzmod.com/downloads (Ваша версия %1, версия на сервере %2) @@ -320,13 +320,13 @@ You must be in a forest and close to a tree to harvest wood. You must be in a forest and close to a tree to harvest wood. - Sie müssen in einem Wald sein und nah an einem Baum zum Holz ernten. + Sie müssen in einem Wald und nah an einem Baum sein, um Holz zu hacken. Вы должны находится в лесу и подойти к дереву, чтобы нарубить дров. You do not have enough room in your inventory to do that. You do not have enough room in your inventory to do that. - Sie haben noch genug Platz in Ihrem Inventar, das zu tun. + Sie haben nicht genug Platz in Ihrem Inventar um das zu tun. У вас недостаточно места в инвентаре. @@ -344,25 +344,25 @@ You have applied a heatpack to your body successfully. You have applied a heatpack to your body successfully. - You have applied a heatpack to your body successfully. + Sie haben das Heatpack erfolgreich appliziert Вы успешно применили на вашем теле согревающий комплект. You cannot reload that combination, you need %1 %2 magazines. You cannot reload that combination, you need %1 %2 magazines. - You cannot reload that combination, you need %1 %2 magazines. + Sie können diese Munition nicht kombinieren, sie brauchen %1 %2 Magazine. Вы не можете перезарядить эту комбинацию. Вам необходимо иметь магазины %1 %2. You have successfully reloaded %1 %2 magazines. You have successfully reloaded %1 %2 magazines. - You have successfully reloaded %1 %2 magazines. + Sie haben erfolgreich %1 %2 Magazine hergestellt. Магазины %1 %2 перезаряжены. %1 must be on your person to move it to/from your toolbelt. %1 must be on your person to move it to/from your toolbelt. - %1 must be on your person to move it to/from your toolbelt. + %1 muss in ihrem Inventar sein um es aus/in ihren Werkzeuggürtel zu packen. Для перемещения с/на пояс, предмет %1 должен быть у вас. @@ -374,25 +374,25 @@ %1 is already being looted by someone else. %1 is already being looted by someone else. - %1 is already being looted by someone else. + %1 wurde von einer anderen Person gelooted. %1 уже кто-то обыскивает. That tent is already being packed. That tent is already being packed. - That tent is already being packed. + Dieses Zelt wurde bereits eingepackt. Эту палатку уже упаковывают. His name was %1, it appears he died from %2 His name was %1, it appears he died from %2 - %1 wurde von %2 getötet + Sein Name war %1, er ist durch %2 gestorben Его звали %1, похоже что он умер от %2 a gunshot to the head a gunshot to the head - ein schuss auf den Kopf + einen Schuss in den Kopf попадания пули в голову @@ -404,7 +404,7 @@ blood loss blood loss - blutverlust + hohen Blutverlust потери крови @@ -428,7 +428,7 @@ an unknown cause an unknown cause - ein unbekannter Grund + einen unbekannten Grund неизвестной причины @@ -442,7 +442,7 @@ Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. - Bitte wählen Sie das Geschlecht, die Sie als zu spielen. Ihr Geschlecht wird zu dieser einzigartigen Charakter gebunden und kann nicht geändert werden, bis Sie sterben. + Bitte wählen Sie das Geschlecht aus, mit dem sie Spielen wollen. Ihr Geschlecht wird an diesen einzigartigen Charakter gebunden und kann nicht geändert werden, bis sie sterben. Пожалуйста, выберите пол вашего персонажа. Учтите, вы не сможете изменить его в течении игры, до тех пор, пока не погибнете. @@ -516,7 +516,7 @@ Check Pulse Check Pulse - Puls fühlen + Puls überprüfen Проверить пульс @@ -630,9 +630,15 @@ Save %1 Save %1 - % Save + % speichern Сохранить %1 + + Turn Over %1 + Turn Over %1 + Turn Over %1 + Turn Over %1 + Bandit Bandit diff --git a/dayz_code/system/player_monitor.fsm b/dayz_code/system/player_monitor.fsm index b297144e4..26a389ad3 100644 --- a/dayz_code/system/player_monitor.fsm +++ b/dayz_code/system/player_monitor.fsm @@ -1,4 +1,4 @@ -/*%FSM*/ +/*%FSM*/ /*%FSM*/ /* item0[] = {"init",0,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"}; @@ -34,9 +34,9 @@ item29[] = {"Load_In",2,250,-75.000000,850.000000,25.000000,900.000000,0.000000, item30[] = {"Bad_Version",4,218,50.000000,650.000000,150.000000,700.000000,0.000000,"Bad" \n "Version"}; item31[] = {"ERROR__Bad_Versi",2,250,175.000000,650.000000,275.000000,700.000000,0.000000,"ERROR:" \n "Bad Version"}; item32[] = {"Display_Ready",4,218,-175.000000,900.000000,-75.000000,950.000000,0.000000,"Display" \n "Ready"}; -item33[] = {"Preload_Display",2,4346,-75.000000,950.000000,25.000000,1000.000000,0.000000,"Preload" \n "Display"}; +item33[] = {"Preload_Display",2,250,-75.000000,950.000000,25.000000,1000.000000,0.000000,"Preload" \n "Display"}; item34[] = {"Preload_Done",4,218,-175.000000,1000.000000,-75.000000,1050.000000,0.000000,"Preload" \n "Done"}; -item35[] = {"Initialize",2,250,-75.000000,1050.000000,25.000000,1100.000000,0.000000,"Initialize"}; +item35[] = {"Initialize",2,4346,-75.000000,1050.000000,25.000000,1100.000000,0.000000,"Initialize"}; item36[] = {"Finish",1,250,-75.000000,1150.000000,25.000000,1200.000000,0.000000,"Finish"}; item37[] = {"True",8,218,25.000000,1100.000000,125.000000,1150.000000,0.000000,"True"}; item38[] = {"Too_Long",4,218,300.000000,150.000000,400.000000,200.000000,0.000000,"Too" \n "Long"}; @@ -114,8 +114,8 @@ link56[] = {49,50}; link57[] = {50,49}; link58[] = {51,52}; link59[] = {52,29}; -globals[] = {25.000000,1,0,0,0,640,480,1,81,6316128,1,-440.765930,455.171539,1392.221191,828.390381,955,601,1}; -window[] = {2,-1,-1,-1,-1,934,154,1125,154,3,972}; +globals[] = {25.000000,1,0,0,0,640,480,1,81,6316128,1,-536.745972,551.148315,1344.204346,288.206512,955,927,1}; +window[] = {2,-1,-1,-32000,-32000,802,22,993,22,3,972}; *//*%FSM*/ class FSM { @@ -131,8 +131,9 @@ class FSM "" \n "0 fadeSound 0;" \n "//player setPosATL [-2148,6655,0];" \n - "" \n + "progressLoadingScreen 0.1;" \n "_timeStart = time;" \n + "player enableSimulation false;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -188,7 +189,9 @@ class FSM init = /*%FSM*/"endLoadingScreen;" \n "diag_log (""PLOGIN: Initating"");" \n "" \n - "0 cutText [localize ""str_player_13"", ""BLACK FADED"",60];"/*%FSM*/; + "dayz_loadScreenMsg = (localize ""str_player_13""); " \n + "progressLoadingScreen 0.2;" \n + ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -200,7 +203,6 @@ class FSM precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isnil ""bis_fnc_init"""/*%FSM*/; action=/*%FSM*/"dayz_forceSave = {" \n - " //dayzCharSave = [player,dayz_Magazines,true];" \n "" \n " createGearDialog [player, ""RscDisplayGear""];" \n "_dialog = findDisplay 106;" \n @@ -281,12 +283,8 @@ class FSM " dayzCharDisco = [dayz_characterID,_playerPos,[weapons player,_magazineArray],[typeOf (unitbackpack player),getWeaponCargo (unitbackpack player),getMagazineCargo (unitbackpack player)],_medical,_currentState,_currentModel];" \n " //diag_log str(dayzCharDisco); " \n "" \n - " //publicVariableServer ""dayzCharSave"";" \n " publicVariableServer ""dayzCharDisco"";" \n - " if (isServer) then {" \n - " //dayzCharSave call server_playerSync;" \n - " dayzCharDisco call server_characterSync;" \n - " };" \n + " // remove isServer from player space" \n " dayz_lastSave = time;" \n " dayz_Magazines = [];" \n "};"/*%FSM*/; @@ -322,7 +320,8 @@ class FSM name = "Collect"; init = /*%FSM*/"diag_log (""PLOGIN: Player Ready"");" \n "" \n - "0 cutText [""Getting Player ID"", ""BLACK FADED"",60];" \n + "dayz_loadScreenMsg = (localize ""str_player_13""); " \n + "progressLoadingScreen 0.3;" \n "" \n "_playerUID = getPlayerUID player;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -392,7 +391,7 @@ class FSM init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = time;" \n - "0 cutText [localize ""str_player_14"", ""BLACK FADED"",15];"/*%FSM*/; + "1 cutText [localize ""str_player_14"", ""PLAIN"",15];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -413,19 +412,38 @@ class FSM class Request { name = "Request"; - init = /*%FSM*/"startLoadingScreen ["""",""DayZ_loadingScreen""];" \n + init = /*%FSM*/"//startLoadingScreen ["""",""DayZ_loadingScreen""];" \n "" \n "diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n - "0 cutText [localize ""str_player_15"", ""BLACK FADED"",60];" \n + "dayz_loadScreenMsg = (localize ""str_player_15"");" \n + "progressLoadingScreen 0.5;" \n "" \n "_msg = [];" \n "" \n "dayzLogin = [_playerUID,player];" \n "dayzPlayerLogin = [];" \n "publicVariableServer ""dayzLogin"";" \n - "if (isServer) then {" \n - " dayzLogin call server_playerLogin;" \n - "};"/*%FSM*/; + "penaltyTimeout = true;" \n + "" \n + "[] spawn {" \n + " private[""_doLoop""];" \n + " _doLoop = 0;" \n + " sleep 1;" \n + "" \n + " while { penaltyTimeout && _doLoop < 60 } do {" \n + "// diag_log ""DEBUG: penalty timeout running.""; " \n + " _doLoop=_doLoop + 1;" \n + "// TODO: localize this msg " \n + " dayz_loadScreenMsg = format[""Combatmode timeout: %1"",_doLoop]; " \n + " progressLoadingScreen (_doLoop/60);" \n + " sleep 1;" \n + " };" \n + " dayz_loadScreenMsg = "" ""; " \n + "};" \n + "" \n + "" \n + "// remove isServer from player space" \n + ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -446,7 +464,8 @@ class FSM class Parse_Login { name = "Parse_Login"; - init = /*%FSM*/"_charID = _msg select 0;" \n + init = /*%FSM*/"progressLoadingScreen 0.6;" \n + "_charID = _msg select 0;" \n "_inventory = _msg select 1;" \n "_backpack = _msg select 2;" \n "_survival = _msg select 3;" \n @@ -464,7 +483,8 @@ class FSM " diag_log (""PLAYER RESULT: "" + str(_isHiveOk));" \n "};" \n "" \n - "0 cutText [localize ""str_player_17"", ""BLACK FADED"",60];" \n + "dayz_loadScreenMsg = (localize ""str_player_17""); " \n + "progressLoadingScreen 0.7;" \n "diag_log (""PLOGIN: authenticated with : "" + str(_msg));" \n "" \n "//Not Equal Failure" \n @@ -531,7 +551,7 @@ class FSM "selectNoPlayer;" \n "" \n "_myTime = time;" \n - "0 cutText [""This server is running an incorrect version of the server side application. You cannot play on this server. If you are the server admin please contact DayZ staff."", ""BLACK FADED"",5];"/*%FSM*/; + "1 cutText [""This server is running an incorrect version of the server side application. You cannot play on this server. If you are the server admin please contact DayZ staff."", ""PLAIN"",5];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -633,12 +653,11 @@ class FSM "" \n "dayzPlayerLogin2 = [];" \n "dayzLogin2 = [_charID,player,_playerUID];" \n - "publicVariable ""dayzLogin2"";" \n - "if (isServer) then {" \n - " dayzLogin2 spawn server_playerSetup;" \n - "};" \n + "publicVariableServer ""dayzLogin2"";" \n + "// remove isServer from player space" \n "" \n - "0 cutText [""Requesting Character data from server"", ""BLACK FADED"",60];" \n + "dayz_loadScreenMsg = ""Requesting Character data from server"";" \n + "progressLoadingScreen 0.8;" \n "diag_log ""Attempting Phase two..."";"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -660,7 +679,7 @@ class FSM class Phase_Two { name = "Phase_Two"; - init = /*%FSM*/"0 cutText [""Character Data received from server"", ""BLACK FADED"",60];" \n + init = /*%FSM*/"dayz_loadScreenMsg = ""Character Data received from server""; " \n "diag_log ""Finished..."";" \n "" \n "_worldspace = dayzPlayerLogin2 select 0;" \n @@ -808,12 +827,12 @@ class FSM class Position { name = "Position"; - init = /*%FSM*/"endLoadingScreen;" \n - "startLoadingScreen ["""",""DayZ_loadingScreen""];" \n + init = /*%FSM*/"" \n "//Location" \n "_myLoc = getPosATL player;" \n "" \n - "0 cutText [""Setup Completed, please wait..."", ""BLACK FADED"",60];" \n + "dayz_loadScreenMsg = ""Setup Completed, please wait..."";" \n + "progressLoadingScreen 0.9;" \n "" \n "//GUI" \n "3 cutRsc [""playerStatusGUI"", ""PLAIN"",0];" \n @@ -873,7 +892,7 @@ class FSM "" \n "dayz_clientPreload = true;" \n "3 fadeSound 1;" \n - "0 cutText ["""", ""BLACK IN"", 3];" \n + "1 cutText ["""", ""PLAIN""];" \n "0 fadeMusic 0.5;" \n "" \n "//Check mission objects" \n @@ -902,7 +921,7 @@ class FSM init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = time;" \n - "cutText [format[localize ""str_player_18"",dayz_versionNo,_version], ""BLACK""];"/*%FSM*/; + "1 cutText [format[localize ""str_player_18"",dayz_versionNo,_version], ""PLAIN""];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -1012,7 +1031,9 @@ class FSM class Initialize { name = "Initialize"; - init = /*%FSM*/"//Medical" \n + init = /*%FSM*/"#define ods(arg1) ""armaperflib"" callextension arg1" \n + "" \n + "//Medical" \n "dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n "[player] call fnc_usec_damageHandle;" \n "if (r_player_unconscious) then {" \n @@ -1020,6 +1041,8 @@ class FSM " player playActionNow ""Die"";" \n "};" \n "player allowDamage true;" \n + "player enableSimulation true;" \n + "0 cutText ["""", ""BLACK IN"",3];" \n "" \n "//Add core tools" \n "player addWeapon ""Loot"";" \n @@ -1046,6 +1069,7 @@ class FSM " _array = player call world_surfaceNoise;" \n " dayz_surfaceNoise = _array select 1;" \n " dayz_surfaceType = _array select 0;" \n + "" \n " call player_checkStealth;" \n " dayz_statusArray = [] call player_updateGui;" \n " if (!isNull cursorTarget and !dayz_heartBeat) then {" \n @@ -1082,12 +1106,16 @@ class FSM " _charID = _this select 1;" \n " _runOnce = false;" \n " while {true} do {" \n - " _handle = [false] spawn player_spawnCheck;" \n - " waitUntil{scriptDone _handle};" \n + "" \n + " ods(""dayz_lootCheck"");" \n + "" \n + " call player_spawnCheck; " \n + "" \n " call stream_locationCheck;" \n - " sleep 2;" \n + " sleep 10;" \n " };" \n "};" \n + "// TODO: questionably" \n "{ _x call fnc_vehicleEventHandler; } forEach vehicles;" \n "{ nul = [_x,2,0,false,false] spawn BIS_Effects_Burn; } forEach allMissionObjects ""UH1Wreck_DZ"";" \n ""/*%FSM*/; @@ -1127,7 +1155,7 @@ class FSM { name = "Enable_Sim"; init = /*%FSM*/"_myAnim = getNumber(configFile >> ""CfgPatches"" >> ""dayz_anim"" >> ""isUpdated"");" \n - "player enableSimulation true;"/*%FSM*/; + ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -1159,8 +1187,8 @@ class FSM { name = "Gender_Selection"; init = /*%FSM*/"dayz_selectGender = ""Survivor2_DZ"";" \n + "1 cutText ["""", ""BLACK"",0];" \n "endLoadingScreen;" \n - "0 cutText ["""", ""BLACK FADED"",60];" \n "createDialog ""RscDisplayGenderSelect"";"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -1206,7 +1234,7 @@ class FSM init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = time;" \n - "0 cutText [""You have an outdated version of 'dayz_anim' please download the correct version"", ""BLACK FADED"",15];"/*%FSM*/; + "1 cutText [""You have an outdated version of 'dayz_anim' please download the correct version"", ""PLAIN"",15];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -1233,7 +1261,7 @@ class FSM "_zombies = (getPosATL player) nearEntities [""zZombie_Base"",30];" \n "{deleteVehicle _x} forEach _zombies;" \n "" \n - "endLoadingScreen;"/*%FSM*/; + "//endLoadingScreen;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/dayz_code/system/zombie_agent.fsm b/dayz_code/system/zombie_agent.fsm index 6968679fa..be99b2744 100644 --- a/dayz_code/system/zombie_agent.fsm +++ b/dayz_code/system/zombie_agent.fsm @@ -134,8 +134,8 @@ link71[] = {54,32}; link72[] = {55,7}; link73[] = {56,3}; link74[] = {57,1}; -globals[] = {25.000000,1,0,0,0,640,480,1,97,6316128,1,-848.842712,436.361816,737.753784,-47.213638,984,601,1}; -window[] = {2,-1,-1,-1,-1,802,22,1230,22,3,1001}; +globals[] = {25.000000,1,0,0,0,640,480,1,97,6316128,1,-662.298340,610.054138,759.015137,-18.102575,984,601,1}; +window[] = {2,-1,-1,-1,-1,846,66,1274,66,3,1001}; *//*%FSM*/ class FSM { @@ -467,7 +467,7 @@ class FSM "" \n "//Move to target" \n "_agent moveTo _targetPos;" \n - "_agent forceSpeed 5;" \n + "_agent forceSpeed 6;" \n "" \n "//Check if LOS" \n "if (_losCheck == 2) then {" \n diff --git a/dayz_server/compile/disco_damageHandler.sqf b/dayz_server/compile/disco_damageHandler.sqf new file mode 100644 index 000000000..423cb3ba4 --- /dev/null +++ b/dayz_server/compile/disco_damageHandler.sqf @@ -0,0 +1,140 @@ +/*********************************************************** +most of the code is taken from fn_damageHandler.sqf +PROCESS DAMAGE TO A BOT +- Function +- [unit, selectionName, damage, source, projectile] call disco_damageHandler; +************************************************************/ +private["_unit","_hit","_damage","_unconscious","_source","_ammo","_type","_isMinor","_isHeadHit","_inVehicle","_isPlayer", + "_humanityHit","_myKills","_characterID","_player_blood","_method"]; +_unit = _this select 0; +_hit = _this select 1; +_damage = _this select 2; +_unconscious = _unit getVariable ["NORRN_unconscious", false]; +_source = _this select 3; +_ammo = _this select 4; +_type = [_damage,_ammo] call fnc_usec_damageType; +_isMinor = (_hit in USEC_MinorWounds); +_isHeadHit = (_hit == "head_hit"); +_inVehicle = (vehicle _unit != _unit); +_isPlayer = (isPlayer _source); +_humanityHit = 0; +_myKills = 0; +_characterID = _unit getVariable["CharacterID","0"]; +_player_blood = _unit getVariable["USEC_BloodQty",12000]; +_method = ""; + +private["_strH","_dam","_total","_totalDmg"]; +_strH = "hit_" + (_hit); +_dam = _unit getVariable [_strH,0]; +if ( _dam > 1 ) then { _dam = 1 }; +// total damage for part +_total = _dam + _damage; +_unit setVariable [_strH,_total,true]; + +if (_characterID == "0") exitWith +{ + diag_log "DEBUG: disco_damageHandler: CharacterID is 0"; +}; + +// calculate damage for all parts +_totalDmg = 0; +{ + _strH = "hit_" + _x; + _dam = _unit getVariable[_strH,0]; + _totalDmg = _totalDmg + _dam; +} forEach USEC_woundHit; + +private["_scale"]; +//PVP Damage +_scale = 200; +if (_total > 0.4) then { +// maybe need to tune _scale value, 850 as in original + _scale = _scale + 850; + if (_isHeadHit) then { + _scale = _scale + 500; + }; +// seems need different scale for type 1,2 + switch (_type) do { + case 1: {_scale = _scale + 200}; + case 2: {_scale = _scale + 200}; + }; + //Cause blood loss + _player_blood = _player_blood - (_total * _scale); +}; + +//Record Damage to Minor parts (legs, arms) +if ( (_hit == "legs") && (_total == 1) ) then { _unit setVariable ["hit_legs",1,true]; }; +if ( (_hit == "hands") && (_total == 1) ) then { _unit setVariable ["hit_hands",1,true]; }; + +private["_wound","_isHit","_rndPain","_isInjured","_rndInfection","_rndPain","_hitPain","_inPain","_hitInfection"]; +// common damage first +if (_totalDmg > 4) then { + if ( _type == 0 ) then { + // TODO: add appropriate _method and message when study + _method = "unknown"; + }; + if ( _type == 1 ) then { + //TODO: add message when study + _method = "explosion"; + }; + if ( _type == 2 ) then { + //serious ballistic damage + _method = "shotheavy"; + }; +}; +if ((_total > 1) and _isHeadHit) then { +// head hit + _method = "shothead"; +}; +if ( _player_blood < 50 ) then { +// blood loss + _method = "bleed"; +}; +if ( _method !="" ) then { +// process death + [_unit,_source,_method] spawn disco_playerDeath; +} else { +// still alive? + if (_total > 0.4) then { //0.25 + /* BLEEDING */ + _wound = _hit call fnc_usec_damageGetWound; + _isHit = _unit getVariable[_wound,false]; +// diag_log format["DEBUG: wound:%1 [%2]",_wound,_isHit]; + _rndPain = (random 10); + _rndInfection = (random 1000); + _hitPain = (_rndPain < _total); + if (_isHeadHit or _hitPain) then { + _hitPain = true; + }; + _hitInfection = (_rndInfection < 1); + if (_isHit) then { + //Make hit worse + _player_blood = _player_blood - 50; + }; + if (_hitInfection) then { + //Set Infection if not already + _unit setVariable["USEC_infected",true,true]; + + }; + if (_hitPain) then { + //Set Pain if not already + _unit setVariable["USEC_inPain",true,true]; + }; + }; + private["_isInjured"]; + if(!_isHit) then { + //Create Wound +// diag_log format["DEBUG: spawn bleed %1",_wound]; + _unit setVariable[_wound,true,true]; + [_unit,_wound,_hit] spawn fnc_usec_damageBleed; + usecBleed = [_unit,_wound,_hit]; + publicVariable "usecBleed"; + //Set Injured if not already + _isInjured = _unit getVariable["USEC_injured",false]; + if (!_isInjured) then { + _unit setVariable["USEC_injured",true,true]; + }; + }; + + _unit setVariable["USEC_BloodQty",_player_blood,true]; +}; \ No newline at end of file diff --git a/dayz_server/compile/disco_playerDeath.sqf b/dayz_server/compile/disco_playerDeath.sqf new file mode 100644 index 000000000..2d5143d99 --- /dev/null +++ b/dayz_server/compile/disco_playerDeath.sqf @@ -0,0 +1,54 @@ +/* +[_object,_source,_method] spawn disco_playerDeath; +*/ +private["_object","_source","_method","_key","_playerID","_characterID","_playerName","_isDead"]; +_object = _this select 0; +_source = _this select 1; +_method = _this select 2; +_playerID = _object getVariable["playerID","0"]; //playerUID +_characterID = _object getVariable["characterID","0"]; //characterID +_playerName = _object getVariable["bodyName","unknown"]; +_isDead = _object getVariable["USEC_isDead",false]; +_humanity = 0; +_wait = 0; + +_object removeAllEventHandlers "HandleDamage"; + +if (!_isDead) then { + _id = [_characterID,0,_object,_playerID,_playerName,_source,_method] spawn server_playerDied; + _object setDamage 1; + _object setVariable["USEC_isDead",true,true]; + dayzFlies = _object; + publicVariable "dayzFlies"; + _id = [_object,50,true,getPosATL _object] spawn player_alertZombies; + + private["_canHitFree","_isBandit","_myKills","_humanity","_killsH","_wait","_killsB"]; + if (!isNull _source) then { + if (_source != _object) then { + _canHitFree = _object getVariable ["freeTarget",false]; + _isBandit = (typeOf _object) == "Bandit1_DZ"; + _myKills = ((_object getVariable ["humanKills",0]) / 30) * 1000; + if (!_canHitFree and !_isBandit) then { + //Process Morality Hit + _humanity = -(2000 - _myKills); + _killsH = _source getVariable ["humanKills",0]; + _source setVariable ["humanKills",(_killsH + 1),true]; + _wait = 300; + } else { + //Process Morality Hit + //_humanity = _myKills * 100; + _killsB = _source getVariable ["banditKills",0]; + _source setVariable ["banditKills",(_killsB + 1),true]; + _wait = 0; + }; + if (_humanity < 0) then { + _wait = 0; + }; + if (!_canHitFree and !_isBandit) then { + dayzHumanity = [_source,_humanity,_wait]; + publicVariable "dayzHumanity"; + }; + }; + }; + _object setVariable ["deathType",_method,true]; +}; \ No newline at end of file diff --git a/dayz_server/compile/disco_playerMorph.sqf b/dayz_server/compile/disco_playerMorph.sqf new file mode 100644 index 000000000..700e60fb6 --- /dev/null +++ b/dayz_server/compile/disco_playerMorph.sqf @@ -0,0 +1,218 @@ +/* +[_object,_playerID,_characterID,_penalty] spawn disco_playerMorph; +*/ +private["_object","_playerID","_characterID","_playerName","_model","_position","_dir","_currentAnim","_penalty"]; +_object = _this select 0; +// TODO: check +_playerID = _this select 1; //playerUID +_characterID = _this select 2; //characterID + +_penalty = _this select 3; +_playerName = _object getVariable["bodyName","unknown"]; //name _object; +_model = typeOf _object; +_position = getPosATL _object; +_dir = getDir _object; +_currentAnim = animationState _object; + +_object removeAllEventHandlers "FiredNear"; +_object removeAllEventHandlers "HandleDamage"; +_object removeAllEventHandlers "Killed"; +_object removeAllEventHandlers "Fired"; + +private["_updates","_humanity","_legs","_arms","_medical","_worldspace","_zombieKills","_headShots","_humanKills","_banditKills","_temp"]; +// TODO: check +_updates = _object getVariable["updatePlayer",[false,false,false,false,false]]; +_updates set [0,true]; +_object setVariable["updatePlayer",_updates,true]; + +_humanity = _object getVariable["humanity",0]; +_temp = round(_object getVariable ["temperature",100]); +_worldspace = [round(_dir),_position]; +_zombieKills = _object getVariable ["zombieKills",0]; +_headShots = _object getVariable ["headShots",0]; +_humanKills = _object getVariable ["humanKills",0]; +_banditKills = _object getVariable ["banditKills",0]; +_medical = _object call player_sumMedical; +_messing = _object getVariable ["messing",[0,0]]; + +//BackUp Weapons and Mags +private ["_weapons","_magazines","_primweapon","_secweapon"]; +_weapons = weapons _object; +_magazines = magazines _object; +_primweapon = primaryWeapon _object; +_secweapon = secondaryWeapon _object; + +//Checks +if(!(_primweapon in _weapons) && _primweapon != "") then { + _weapons = _weapons + [_primweapon]; +}; + +if(!(_secweapon in _weapons) && _secweapon != "") then { + _weapons = _weapons + [_secweapon]; +}; + +if(count _magazines == 0) then { + _magazines = magazines _object; +}; + +//BackUp Backpack +private ["_newBackpackType","_backpackWpn","_backpackMag"]; + _newBackpackType = typeOf (unitBackpack _object); + if(_newBackpackType != "") then { + _backpackWpn = getWeaponCargo unitBackpack _object; + _backpackMag = getMagazineCargo unitBackpack _object; + }; + +//Get Muzzle +private ["_currentWpn","_muzzles"]; + _currentWpn = ""; + _muzzles = getArray(configFile >> "cfgWeapons" >> _currentWpn >> "muzzles"); + if (count _muzzles > 1) then { + _currentWpn = currentMuzzle _object; + }; + +private ["_primary"]; +_doLoop = 0; +while {_doLoop < 5} do { + _key = format["CHILD:101:%1:%2:%3:",_playerID,dayZ_instance,_playerName]; + _primary = [_key,false,dayZ_hivePipeAuth] call server_hiveReadWrite; + if (count _primary > 0) then { + if ((_primary select 0) != "ERROR") then { + _doLoop = 9; + }; + }; + _doLoop = _doLoop + 1; +}; +private ["_group","_newUnit"]; +// get ammo from DB +_magazines = (_primary select 4) select 1; + +//Create New Character + _group = createGroup civilian; + _newUnit = _group createUnit [_model,[0,0,0],[],0,"NONE"]; + sleep 0.1; + +//Clear New Character + {_newUnit removeMagazine _x;} forEach (magazines _newUnit); + removeAllWeapons _newUnit; + +//Equip New Charactar +{ _newUnit addMagazine _x } forEach _magazines; +{ _newUnit addWeapon _x } forEach _weapons; +if(_primweapon != (primaryWeapon _newUnit)) then { _newUnit addWeapon _primweapon }; +if(_secweapon != (secondaryWeapon _newUnit) && _secweapon != "") then { _newUnit addWeapon _secweapon }; + +//Add and Fill BackPack +private["_newBackpack","_countr","_backpackmagTypes","_backpackmagQtys"]; +if (!isNil "_newBackpackType") then { + if (_newBackpackType != "") then { + _newUnit addBackpack _newBackpackType; + _newBackpack = unitBackpack _newUnit; + //Fill backpack contents + //Weapons + _backpackWpnTypes = []; + _backpackWpnQtys = []; + if (count _backpackWpn > 0) then { + _backpackWpnTypes = _backpackWpn select 0; + _backpackWpnQtys = _backpackWpn select 1; + }; + _countr = 0; + { + _newBackpack addWeaponCargoGlobal [_x,(_backpackWpnQtys select _countr)]; + _countr = _countr + 1; + } forEach _backpackWpnTypes; + //magazines + _backpackmagTypes = []; + _backpackmagQtys = []; + if (count _backpackmag > 0) then { + _backpackmagTypes = _backpackMag select 0; + _backpackmagQtys = _backpackMag select 1; + }; + _countr = 0; + { + _newBackpack addmagazineCargoGlobal [_x,(_backpackmagQtys select _countr)]; + _countr = _countr + 1; + } forEach _backpackmagTypes; + }; +}; +//set medical values +private["_fractures"]; +if (count _medical > 0) then { + _newUnit setVariable["USEC_isDead",(_medical select 0),true]; + _newUnit setVariable["NORRN_unconscious", (_medical select 1), true]; + _newUnit setVariable["USEC_infected",(_medical select 2),true]; + _newUnit setVariable["USEC_injured",(_medical select 3),true]; + _newUnit setVariable["USEC_inPain",(_medical select 4),true]; + _newUnit setVariable["USEC_isCardiac",(_medical select 5),true]; + _newUnit setVariable["USEC_lowBlood",(_medical select 6),true]; + _newUnit setVariable["USEC_BloodQty",(_medical select 7),true]; + _newUnit setVariable["unconsciousTime",(_medical select 10),true]; + //Add Wounds + { + _newUnit setVariable[_x,true,true]; + [_newUnit,_x,0] spawn fnc_usec_damageBleed; + usecBleed = [_newUnit,_x,0]; + publicVariable "usecBleed"; + } forEach (_medical select 8); + //Add fractures + _fractures = (_medical select 9); + _newUnit setVariable ["hit_legs",(_fractures select 0),true]; + _newUnit setVariable ["hit_hands",(_fractures select 1),true]; +} else { + //Reset Fractures + _newUnit setVariable ["hit_legs",0,true]; + _newUnit setVariable ["hit_hands",0,true]; + _newUnit setVariable ["USEC_injured",false,true]; + _newUnit setVariable ["USEC_inPain",false,true]; +}; +//General Stats +_newUnit setVariable["characterID",_characterID,true]; +_newUnit setVariable["worldspace",_worldspace,true]; +_newUnit setVariable["bodyName",_playerName,true]; +//_newUnit setVariable["playerID",_playerID,true]; +_newUnit setVariable["temperature",_temp,true]; +_newUnit setVariable["messing",_messing,true]; + +//Move to position +_newUnit allowDamage true; +deleteVehicle _object; +deleteGroup (group _object); +_newUnit setDir _dir; +_newUnit setPosATL _position; +_newUnit playActionNow "Die"; +_newUnit disableConversation true; +_newUnit setCaptive false; +// _newUnit disableAi "ANIM"; + +// ? +//_newUnit addWeapon "Loot"; +//_newUnit addWeapon "Flare"; +botPlayers = botPlayers + [_playerID]; +private["_mydamage_eh1"]; +_mydamage_eh1 = _newUnit addeventhandler ["HandleDamage",{ _this call disco_damageHandler;0 }]; + +diag_log format["DEBUG: Player %1 [%2] added to botPlayers: %3",_playerName,_playerID,botPlayers]; + +private["_doLoop","_isDead"]; +_isDead = _newUnit getVariable["USEC_isDead",false]; +_doLoop = 0; +while { _doLoop < _penalty && !_isDead } do { + _isDead = _newUnit getVariable["USEC_isDead",false]; + _doLoop = _doLoop + 1; + sleep 1; +}; +_newUnit removeAllEventHandlers "handleDamage"; + +if (!_isDead) then { + private["_playerBackp"]; + _medical = _newUnit call player_sumMedical; + _newBackpack = unitBackpack _newUnit; + _playerBackp = [typeOf _newBackpack,getWeaponCargo _newBackpack,getMagazineCargo _newBackpack]; +// _group = group _newUnit; + deleteVehicle _newUnit; + deleteGroup _group; +//Send to HIVE backpack and medical only + [_characterID,_worldspace,[],_playerBackp,_medical,[],""] call server_characterSync; +}; +botPlayers = botPlayers - [_playerID]; +diag_log format["DEBUG: Player %1 [%2] removed from botPlayers: %3",_playerName,_playerID,botPlayers]; \ No newline at end of file diff --git a/dayz_server/compile/server_onPlayerDisconnect.sqf b/dayz_server/compile/server_onPlayerDisconnect.sqf index aa600b108..885db807f 100644 --- a/dayz_server/compile/server_onPlayerDisconnect.sqf +++ b/dayz_server/compile/server_onPlayerDisconnect.sqf @@ -15,14 +15,9 @@ if (vehicle _object != _object) then { _object action ["eject", vehicle _object]; }; -if (59 in _playerIDtoarray) exitWith { diag_log ("Exited"); }; +if (59 in _playerIDtoarray) exitWith { }; if ((_timeout - time) > 0) then { - //_playerName call player_combatLogged; - private["_playerName","_center","_group"]; - _playerName = name player; - _timeout = _object getVariable["combattimeout",0]; - diag_log format["COMBAT LOGGED: %1 (%2)", _playerName,_timeout]; }; @@ -35,6 +30,10 @@ if (!isNull _object) then { (nearestObjects [getPosATL _object, ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage"], 10]); if (alive _object) then { [_object,[],true] call server_playerSync; + if ((_timeout - time) > 0) then { + // spawn bot, if player in combat mode + [_object,_playerID,_characterID,30] spawn disco_playerMorph; + }; _id = [_playerID,_characterID,2] spawn dayz_recordLogin; _myGroup = group _object; deleteVehicle _object; diff --git a/dayz_server/compile/server_playerLogin.sqf b/dayz_server/compile/server_playerLogin.sqf index 05e12cef7..2a6a77143 100644 --- a/dayz_server/compile/server_playerLogin.sqf +++ b/dayz_server/compile/server_playerLogin.sqf @@ -1,4 +1,4 @@ -private["_int","_newModel","_doLoop","_wait","_hiveVer","_isHiveOk","_playerID","_playerObj","_randomSpot","_publishTo","_primary","_secondary","_key","_result","_charID","_playerObj","_playerName","_finished","_spawnPos","_spawnDir","_items","_counter","_magazines","_weapons","_group","_backpack","_worldspace","_direction","_newUnit","_score","_position","_isNew","_inventory","_backpack","_medical","_survival","_stats","_state"]; +private["_botActive","_int","_newModel","_doLoop","_wait","_hiveVer","_isHiveOk","_playerID","_playerObj","_randomSpot","_publishTo","_primary","_secondary","_key","_result","_charID","_playerObj","_playerName","_finished","_spawnPos","_spawnDir","_items","_counter","_magazines","_weapons","_group","_backpack","_worldspace","_direction","_newUnit","_score","_position","_isNew","_inventory","_backpack","_medical","_survival","_stats","_state"]; //Set Variables diag_log ("STARTING LOGIN: " + str(_this)); @@ -27,6 +27,7 @@ _state = []; _direction = 0; _model = ""; _newUnit = objNull; +_botActive = false; if (_playerID == "") then { _playerID = getPlayerUID _playerObj; @@ -35,8 +36,14 @@ if (_playerID == "") then { if ((_playerID == "") or (isNil "_playerID")) exitWith { diag_log ("LOGIN FAILED: Player [" + _playerName + "] has no login ID"); }; +// spawn a waituntil if bot still on server, then run server_playerLogin later again +_botActive = _playerID in botPlayers; +if (_botActive) then { _this spawn server_waitForBotFinished;}; +if (_botActive) exitWith{}; +penaltyTimeout = false; +(owner _playerObj) publicVariableClient "penaltyTimeout"; -endLoadingScreen; +//??? endLoadingScreen; diag_log ("LOGIN ATTEMPT: " + str(_playerID) + " " + _playerName); //Do Connection Attempt @@ -103,7 +110,7 @@ if (!_isNew) then { //Wait for HIVE to be free _key = format["CHILD:203:%1:%2:%3:",_charID,[_wpns,_mags],[_bcpk,[],[]]]; - _key spawn server_hiveWrite; + _key call server_hiveWrite; }; diag_log ("LOGIN LOADED: " + str(_playerObj) + " Type: " + (typeOf _playerObj)); @@ -117,8 +124,5 @@ if (_hiveVer >= dayz_hiveVersionNo) then { //Server publishes variable to clients and WAITS //_playerObj setVariable ["publish",[_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer],true]; -_clientID = owner _playerObj; dayzPlayerLogin = [_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer]; -_clientID publicVariableClient "dayzPlayerLogin"; - -//_playerObj enableSimulation false; \ No newline at end of file +(owner _playerObj) publicVariableClient "dayzPlayerLogin"; diff --git a/dayz_server/compile/server_playerSetup.sqf b/dayz_server/compile/server_playerSetup.sqf index b0a79d28d..3ceb8c99c 100644 --- a/dayz_server/compile/server_playerSetup.sqf +++ b/dayz_server/compile/server_playerSetup.sqf @@ -1,4 +1,4 @@ -private ["_characterID","_doLoop","_playerID","_playerObj","_randomSpot","_primary","_key","_worldspace","_score","_position","_pos","_isIsland","_medical","_stats","_state","_dummy","_debug","_distance","_hit","_fractures","_w","_findSpot","_humanity","_clientID","_lastinstance"]; +private["_characterID","_playerObj","_playerID","_dummy","_worldspace","_state","_doLoop","_key","_primary","_medical","_stats","_humanity","_lastinstance","_randomSpot","_position","_debug","_distance","_hit","_fractures","_score","_findSpot","_mkr","_counter","_isNear","_isZero","_pos","_isIsland","_w","_clientID"]; //Wait for HIVE to be free //diag_log ("SETUP: attempted with " + str(_this)); diff --git a/dayz_server/compile/server_playerSync.sqf b/dayz_server/compile/server_playerSync.sqf index 5bc26fc05..2dcf1c61f 100644 --- a/dayz_server/compile/server_playerSync.sqf +++ b/dayz_server/compile/server_playerSync.sqf @@ -1,4 +1,4 @@ -private ["_characterID","_temp","_currentWpn","_magazines","_force","_isNewPos","_humanity","_isNewGear","_currentModel","_modelChk","_playerPos","_playerGear","_playerBackp","_backpack","_killsB","_killsH","_medical","_isNewMed","_character","_timeSince","_charPos","_isInVehicle","_distanceFoot","_lastPos","_kills","_headShots","_timeGross","_timeLeft","_onLadder","_isTerminal","_currentAnim","_muzzles","_array","_key","_lastTime","_config","_currentState","_pos"]; +private["_character","_magazines","_force","_characterID","_charPos","_isInVehicle","_timeSince","_humanity","_debug","_distance","_isNewMed","_isNewPos","_isNewGear","_playerPos","_playerGear","_playerBackp","_medical","_distanceFoot","_lastPos","_backpack","_kills","_killsB","_killsH","_headShots","_lastTime","_timeGross","_timeLeft","_currentWpn","_currentAnim","_config","_onLadder","_isTerminal","_wpnDisabled","_currentModel","_modelChk","_muzzles","_temp","_currentState","_array","_key","_pos"]; //[player,array] //diag_log ("UPDATE: " + str(_this) ); diff --git a/dayz_server/compile/server_publishObject.sqf b/dayz_server/compile/server_publishObject.sqf index 03428a22a..f67aa89df 100644 --- a/dayz_server/compile/server_publishObject.sqf +++ b/dayz_server/compile/server_publishObject.sqf @@ -5,10 +5,12 @@ _object = _this select 1; _worldspace = _this select 2; _class = _this select 3; - if (!(_object isKindOf "Building")) exitWith { deleteVehicle _object; }; +_allowed = [_object] call check_publishobject; +if (!_allowed) exitWith { }; + //diag_log ("PUBLISH: Attempt " + str(_object)); diff --git a/dayz_server/compile/server_updateObject.sqf b/dayz_server/compile/server_updateObject.sqf index bb5bc1bfd..309e62637 100644 --- a/dayz_server/compile/server_updateObject.sqf +++ b/dayz_server/compile/server_updateObject.sqf @@ -82,6 +82,7 @@ _object_damage = { _hit = [_object,_x] call object_getHit; _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name"); if (_hit > 0) then {_array set [count _array,[_selection,_hit]]}; + _object setHit ["_selection", _hit] } forEach _hitpoints; _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage]; diag_log ("HIVE: WRITE: "+ str(_key)); diff --git a/dayz_server/init/server_functions.sqf b/dayz_server/init/server_functions.sqf index 10cd92148..bbbec0840 100644 --- a/dayz_server/init/server_functions.sqf +++ b/dayz_server/init/server_functions.sqf @@ -1,5 +1,11 @@ waituntil {!isnil "bis_fnc_init"}; +BIS_MPF_remoteExecutionServer = { + if ((_this select 1) select 2 == "JIPrequest") then { + [nil,(_this select 1) select 0,"loc",rJIPEXEC,[any,any,"per","execVM","ca\Modules\Functions\init.sqf"]] call RE; + }; +}; + BIS_Effects_Burn = {}; object_spawnDamVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_spawnDamVehicle.sqf"; server_playerLogin = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerLogin.sqf"; @@ -15,8 +21,17 @@ local_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_code\comp local_createObj = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_createObj.sqf"; //Creates the object in DB server_playerSync = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSync.sqf"; zombie_findOwner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_findOwner.sqf"; +//server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf"; +disco_playerMorph = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\disco_playerMorph.sqf"; +disco_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\disco_damageHandler.sqf"; +disco_playerDeath = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\disco_playerDeath.sqf"; -server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf"; +server_waitForBotFinished = { + private ["_playerId"]; + _playerID = _this select 0; + waituntil{sleep 1; !(_playerID in botPlayers)}; + _this call server_playerLogin; +}; vehicle_handleInteract = { private["_object"]; @@ -24,8 +39,26 @@ vehicle_handleInteract = { [_object, "all"] call server_updateObject; }; -player_combatLogged = { +check_publishobject = { + private["_allowed","_allowedObjects","_object"]; + _object = _this select 0; + _allowedObjects = ["TentStorage", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Wire_cat1"]; + _noncombatitems = ["ThrownObjects", "RoadFlare", "ChemLight"]; + _allowed = false; + + diag_log format ["DEBUG: Checking if Object: %1 is allowed", _object]; + + if ((typeOf _object) in _allowedObjects) then { + diag_log format ["DEBUG: Object: %1 Safe",_object]; + _allowed = true; + }; + if ((typeOf _object) in _noncombatitems) then { + diag_log format ["DEBUG: NONCombat: %1 Safe",_object]; + _allowed = true; + }; + + _allowed; }; //event Handlers @@ -37,7 +70,21 @@ eh_localCleanup = { private["_type","_unit"]; _unit = _this select 0; _type = typeOf _unit; + _myGroupUnit = group _unit; + _unit removeAllMPEventHandlers "mpkilled"; + _unit removeAllMPEventHandlers "mphit"; + _unit removeAllMPEventHandlers "mprespawn"; + _unit removeAllEventHandlers "FiredNear"; + _unit removeAllEventHandlers "HandleDamage"; + _unit removeAllEventHandlers "Killed"; + _unit removeAllEventHandlers "Fired"; + _unit removeAllEventHandlers "GetOut"; + _unit removeAllEventHandlers "GetIn"; + _unit removeAllEventHandlers "Local"; + clearVehicleInit _unit; deleteVehicle _unit; + deleteGroup _myGroupUnit; + _unit = nil; diag_log ("CLEANUP: DELETED A " + str(_type) ); }; }]; diff --git a/dayz_server/system/server_cleanup.fsm b/dayz_server/system/server_cleanup.fsm index f98660790..170ced38a 100644 --- a/dayz_server/system/server_cleanup.fsm +++ b/dayz_server/system/server_cleanup.fsm @@ -4,30 +4,29 @@ item0[] = {"init",0,250,-75.000000,-400.000000,25.000000,-350.000000,0.000000,"init"}; item1[] = {"true",8,218,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"true"}; item2[] = {"waiting",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"waiting"}; -item3[] = {"too_many_dead",4,218,-150.000000,-25.000000,-50.000000,25.000000,2.000000,"too many" \n "dead"}; -item4[] = {"cleanup_dead",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"cleanup" \n "dead"}; -item5[] = {"too_many_objects",4,218,-25.000000,-25.000000,75.000000,25.000000,0.000000,"too many" \n "objects"}; -item6[] = {"cleanup_objects",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"cleanup" \n "objects"}; -item7[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"}; -item8[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"}; +item3[] = {"time_dead",4,218,-300.000000,-25.000000,-200.000000,25.000000,4.000000,"time" \n "dead"}; +item4[] = {"cleanup_dead",2,250,-300.000000,50.000000,-200.000000,100.000000,0.000000,"cleanup" \n "dead"}; +item5[] = {"time_items",4,218,0.000000,-25.000000,100.000000,25.000000,2.000000,"time" \n "items"}; +item6[] = {"cleanup_items",2,250,0.000000,50.000000,100.000000,100.000000,0.000000,"cleanup" \n "items"}; +item7[] = {"time_sync",4,218,-150.000000,-25.000000,-50.000000,25.000000,3.000000,"time" \n "sync"}; +item8[] = {"sync_the_time",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"sync" \n "the time"}; item9[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"}; item10[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup"}; -item11[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""}; -item12[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""}; -item13[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; -item14[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""}; -item15[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; -item16[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; -item17[] = {"update_objects",2,4346,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"}; -item18[] = {"need_update",4,218,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"}; -item19[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; -link0[] = {0,15}; +item11[] = {"",7,210,-341.500000,220.999985,-333.500000,229.000015,0.000000,""}; +item12[] = {"",7,210,-341.500000,-154.000000,-333.500000,-146.000000,0.000000,""}; +item13[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; +item14[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; +item15[] = {"update_objects",2,250,150.000000,50.000000,250.000000,100.000000,0.000000,"update objects"}; +item16[] = {"time_obj_update",4,218,150.000000,-25.000000,250.000000,25.000000,1.000000,"time" \n "obj update"}; +item17[] = {"anti_hack",4,218,150.000000,-100.000000,250.000000,-50.000000,0.000000,"anti hack"}; +item18[] = {"check_for_hacker",2,4346,150.000000,-175.000000,250.000000,-125.000000,0.000000,"check for" \n "hackers"}; +link0[] = {0,13}; link1[] = {1,2}; link2[] = {2,3}; link3[] = {2,5}; link4[] = {2,7}; -link5[] = {2,13}; -link6[] = {2,18}; +link5[] = {2,16}; +link6[] = {2,17}; link7[] = {3,4}; link8[] = {4,9}; link9[] = {5,6}; @@ -39,14 +38,13 @@ link14[] = {10,11}; link15[] = {11,12}; link16[] = {12,1}; link17[] = {13,14}; -link18[] = {13,19}; -link19[] = {14,9}; -link20[] = {15,16}; -link21[] = {16,1}; -link22[] = {17,9}; -link23[] = {18,17}; -globals[] = {25.000000,1,0,0,0,640,480,1,24,6316128,1,-396.580658,354.272186,463.204498,-386.553192,911,1031,1}; -window[] = {2,-1,-1,-1,-1,1020,322,1651,78,3,929}; +link18[] = {14,1}; +link19[] = {15,9}; +link20[] = {16,15}; +link21[] = {17,18}; +link22[] = {18,1}; +globals[] = {25.000000,1,0,0,0,640,480,1,33,6316128,1,-380.893097,315.695129,343.738464,-460.417511,803,927,1}; +window[] = {2,-1,-1,-1,-1,1039,132,1246,132,3,820}; *//*%FSM*/ class FSM { @@ -78,60 +76,58 @@ class FSM class waiting { name = "waiting"; - init = /*%FSM*/"//diag_log ""CLEANUP: Waiting for next task"";" \n - "_numDead = {local _x} count allDead;" \n - ""/*%FSM*/; + init = /*%FSM*/""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class too_many_dead + /*%FSM*/ + class time_dead { - priority = 2.000000; + priority = 4.000000; to="cleanup_dead"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(_numDead > 300)"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _lastDeadCheck) > 600"/*%FSM*/; + action=/*%FSM*/"_lastDeadCheck = time;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class time_sync { - priority = 1.000000; + priority = 3.000000; to="sync_the_time"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"((time - _lastUpdate) > 300)"/*%FSM*/; - action=/*%FSM*/"_lastUpdate = time;"/*%FSM*/; + condition=/*%FSM*/"(time - _lastTimeSync) > 300"/*%FSM*/; + action=/*%FSM*/"_lastTimeSync = time;"/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class need_update + /*%FSM*/ + class time_items + { + priority = 2.000000; + to="cleanup_items"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _lastItemCheck) > 60"/*%FSM*/; + action=/*%FSM*/"_lastItemCheck = time;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class time_obj_update { priority = 1.000000; to="update_objects"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"( (count needUpdate_objects) > 0 && (time-_lastNeedUpdate>10) )"/*%FSM*/; - action=/*%FSM*/"_lastNeedUpdate = time;"/*%FSM*/; + condition=/*%FSM*/"(time-_lastObjectUpdateCheck) > 10"/*%FSM*/; + action=/*%FSM*/"_lastObjectUpdateCheck = time;"/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class true + /*%FSM*/ + class anti_hack { priority = 0.000000; - to="general_cleanup"; + to="check_for_hacker"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class too_many_objects - { - priority = 0.000000; - to="cleanup_objects"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"((time - _timeNem) > 60)"/*%FSM*/; - action=/*%FSM*/"_timeNem = time;"/*%FSM*/; + condition=/*%FSM*/"(time-_timeHackCheck) > 1"/*%FSM*/; + action=/*%FSM*/"_timeHackCheck = time;"/*%FSM*/; }; /*%FSM*/ }; @@ -141,80 +137,85 @@ class FSM class cleanup_dead { name = "cleanup_dead"; - init = /*%FSM*/"diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n + init = /*%FSM*/"_numDead = {local _x} count allDead;" \n "" \n - "diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n + "if (_numDead > 300) then { " \n "" \n - "_delQtyZ = 0;" \n - "_numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n - "{" \n - " if (local _x) then {" \n - " if (_x isKindOf ""zZombie_Base"") then {" \n - " deleteVehicle _x;" \n - " _delQtyZ = _delQtyZ + 1;" \n - " } else {" \n - " _exists = _x in _deadBodies;" \n - " if(!_exists) then {" \n - " _deadBodies set [count _deadBodies,_x];" \n + " diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n + " diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n + "" \n + " _delQtyZ = 0; " \n + " _numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n + " {" \n + " if (local _x) then {" \n + " if (_x isKindOf ""zZombie_Base"") then {" \n + " deleteVehicle _x;" \n + " _delQtyZ = _delQtyZ + 1;" \n + " } else {" \n + " _exists = _x in _deadBodies;" \n + " if(!_exists) then {" \n + " _deadBodies set [count _deadBodies,_x];" \n + " };" \n " };" \n " };" \n - " };" \n - "} forEach allDead;" \n + " } forEach allDead;" \n "" \n - "//Cleanup players" \n - "_body = objNull;" \n - "_delQtyP = 0;" \n - "_delDo = _numDead - _numZombie;" \n - "_delDo = ((_delDo min (count _deadBodies)) -1);" \n - "if (_delDo<1) then {_delDo=1};" \n - "for ""_i"" from 0 to _delDo do {" \n - " _body = _deadBodies select _i;" \n - " if(!isNil ""_body"") then {" \n - " _pos = getPosATL _body;" \n - " _sfx = nearestObject [_pos,""Sound_Flies""];" \n - " if (!(isNull _sfx)) then {" \n - " deleteVehicle _sfx;" \n + " //Cleanup players" \n + " _body = objNull;" \n + " _delQtyP = 0;" \n + " _delDo = _numDead - _numZombie;" \n + " _delDo = ((_delDo min (count _deadBodies)) -1);" \n + " if (_delDo<1) then {_delDo=1};" \n + " for ""_i"" from 0 to _delDo do {" \n + " _body = _deadBodies select _i;" \n + " if(!isNil ""_body"") then {" \n + " _pos = getPosATL _body;" \n + " _sfx = nearestObject [_pos,""Sound_Flies""];" \n + " if (!(isNull _sfx)) then {" \n + " deleteVehicle _sfx;" \n + " };" \n + " deleteVehicle _body;" \n + " _delQtyP = _delQtyP + 1;" \n " };" \n - " deleteVehicle _body;" \n - " _delQtyP = _delQtyP + 1;" \n - " };" \n - " _deadBodies set [_i,""DEL""];" \n + " _deadBodies set [_i,""DEL""];" \n "" \n - "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n - "//Check Flies" \n - "_isOK=-1;" \n - "_dwUSOFC=0;" \n - "{" \n - " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n - " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n - " if (_isOk>-1) then {" \n - " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n - " };" \n - " if ((_isOk>-1) AND (_isOK<1)) then {" \n - " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n - "_dwUSOFC=_dwUSOFC+1;" \n - " deleteVehicle _x;" \n - " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n - " };" \n - "} forEach allMissionObjects ""Sound_Flies"";" \n + " //Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n + " //Check Flies" \n + " _isOK=-1;" \n + " _dwUSOFC=0;" \n + " {" \n + " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n + " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n + " if (_isOk>-1) then {" \n + " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n + " };" \n + " if ((_isOk>-1) AND (_isOK<1)) then {" \n + " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n + " _dwUSOFC=_dwUSOFC+1;" \n + " deleteVehicle _x;" \n + " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n + " };" \n + " } forEach allMissionObjects ""Sound_Flies"";" \n "" \n "" \n - "//Let's move this into the body removal sequence so uncontrolled fireplaces are removed only if corpses are cleaned" \n - "//clean fireplaces" \n - "_dwUFPC=0;" \n - "{" \n - " if (local _x) then {" \n - " //diag_log (""CLEANUP: DELETING A UNCONTROLLED FIREPLACE"");" \n - " deleteVehicle _x;" \n - "_dwUFPC=_dwUFPC+1;" \n - " diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n + " //Let's move this into the body removal sequence so uncontrolled fireplaces are removed only if corpses are cleaned" \n + " //clean fireplaces" \n + " _dwUFPC=0;" \n + " {" \n + " if (local _x) then {" \n + " //diag_log (""CLEANUP: DELETING A UNCONTROLLED FIREPLACE"");" \n + " deleteVehicle _x;" \n + " _dwUFPC=_dwUFPC+1;" \n + " diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n + " };" \n + " } forEach allMissionObjects ""Land_Fire_DZ"";" \n + "" \n " };" \n - "} forEach allMissionObjects ""Land_Fire_DZ"";" \n + " _deadBodies = _deadBodies - [""DEL""];" \n + "" \n + " diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n "" \n "};" \n - "_deadBodies = _deadBodies - [""DEL""];" \n - "" \n - "diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -232,25 +233,27 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class cleanup_objects + /*%FSM*/ + class cleanup_items { - name = "cleanup_objects"; + name = "cleanup_items"; init = /*%FSM*/"_missionObjs = allMissionObjects ""WeaponHolder"";" \n "_qty = count _missionObjs;" \n - "" \n "//diag_log (""CLEANUP: PERFORMING ITEM CLEANUP: TOTAL "" + str(_qty) + "" LOOT BAGS"");" \n "_delQty = 0;" \n + "_qtyLoc = 0;" \n "{" \n " if (local _x) then {" \n + " _qtyLoc = _qtyLoc + 1; // debugging" \n " _keep = _x getVariable [""permaLoot"",false];" \n - " _nearby = {isPlayer _x} count (_x nearEntities [[""CAManBase""], 100]);" \n + " _nearby = {isPlayer _x} count (_x nearEntities [[""CAManBase""], 100]);" \n " if ( (!_keep) && (_nearby==0) ) then {" \n " deleteVehicle _x;" \n " _delQty = _delQty + 1;" \n " };" \n " };" \n "} forEach _missionObjs;" \n + "" \n "if (_delQty > 0) then {" \n " diag_log (""CLEANUP: DELETED "" + str(_delQty) + "" LOOT BAGS"");" \n "};" \n @@ -287,8 +290,8 @@ class FSM " setDate _date;" \n " dayzSetDate = _date;" \n " publicVariable ""dayzSetDate"";" \n - " diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n - "};" \n + " diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n + " };" \n "};" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -330,36 +333,8 @@ class FSM " } forEach allMissionObjects ""ReammoBox"";" \n "*/" \n "" \n - "//Check for hackers" \n - " {" \n - " if(vehicle _x != _x && !(vehicle _x in _safety) && (typeOf vehicle _x) != ""ParachuteWest"") then {" \n - " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n - " (vehicle _x) setDamage 1;" \n - " _x setDamage 1;" \n - " };" \n - " } forEach allUnits;" \n - "" \n - "/*" \n - "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n - "//Check Flies" \n - "_isOK=-1;" \n - "_dwUSOFC=0;" \n - "{" \n - " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n - " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n - " if (_isOk>-1) then {" \n - " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n - " };" \n - " if ((_isOk>-1) AND (isOK<1)) then {" \n - " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n - "_dwUSOFC=_dwUSOFC+1;" \n - " deleteVehicle _x;" \n - " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n - " };" \n - "} forEach allMissionObjects ""Sound_Flies"";" \n - "*/" \n - "" \n - "dayz_serverObjectMonitor = _safety;"/*%FSM*/; + "dayz_serverObjectMonitor = _safety;" \n + ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -384,10 +359,12 @@ class FSM "" \n "_safety = dayz_serverObjectMonitor;" \n "" \n - "_lastUpdate = time;" \n - "_timeNem = time;" \n + "_lastTimeSync = time;" \n + "_lastDeadCheck = time;" \n + "_lastItemCheck = time;" \n + "_lastObjectUpdateCheck = time;" \n + "_timeHackCheck = time;" \n "_deadBodies = [];" \n - "_lastNeedUpdate = time;" \n "_maxBodies = 15;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -410,13 +387,16 @@ class FSM class update_objects { name = "update_objects"; - init = /*%FSM*/"diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n - "{" \n - "// _x setVariable [""needUpdate"",false,true];" \n - " needUpdate_objects = needUpdate_objects - [_x];" \n - " [_x,""all""] spawn server_updateObject;" \n + init = /*%FSM*/"if ((count needUpdate_objects) > 0) then {" \n "" \n - "} forEach needUpdate_objects;" \n + " diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n + "" \n + " {" \n + " //_x setVariable [""needUpdate"",false,true];" \n + " needUpdate_objects = needUpdate_objects - [_x];" \n + " [_x,""all""] call server_updateObject; //should be call!!!" \n + " } forEach needUpdate_objects;" \n + "};" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -434,6 +414,37 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class check_for_hacker + { + name = "check_for_hacker"; + init = /*%FSM*/"//Check for hackers" \n + " {" \n + " if(vehicle _x != _x) then {" \n + " if (!(vehicle _x in _safety) && ((typeOf vehicle _x) != ""ParachuteWest"")) then {" \n + " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n + " (vehicle _x) setDamage 1;" \n + " _x setDamage 1;" \n + " };" \n + " };" \n + " } forEach allUnits;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="waiting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ }; initState="init"; finalStates[] = diff --git a/dayz_server/system/server_monitor.sqf b/dayz_server/system/server_monitor.sqf index 81dd07c98..5c6c8248a 100644 --- a/dayz_server/system/server_monitor.sqf +++ b/dayz_server/system/server_monitor.sqf @@ -144,7 +144,6 @@ diag_log "HIVE: Starting"; _countr = _countr + 1; } forEach _objWpnTypes; }; - }; if (_object isKindOf "AllVehicles") then { {