1.7.5.M1D7

This commit is contained in:
A Clark
2013-01-07 12:45:28 -06:00
parent ef2920120c
commit 944cd01129
33 changed files with 7972 additions and 469 deletions

7442
dayz_code/CfgWorlds.hpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@ for "_i" from 1 to _meleeNum do {
};
player removeWeapon _item;
if (_item == "MeleeHatchet") then {_item = "ItemHatchet";};
_bag = createVehicle [format["WeaponHolder_%1",_item],getPosATL player,[], 0, "CAN_COLLIDE"];
_bag setdir (getDir player);
player reveal _bag;

View File

@@ -0,0 +1,48 @@
//http://community.bistudio.com/wiki/ArmA2:_Moves
player playMove "amovpsitmstpsraswrfldnon_smoking"; // - Sitting smoking
waitUntil { animationState player != "amovpsitmstpsraswrfldnon_smoking"};
sleep 5;
player playMove "amovpsitmstpsraswrfldnon_weaponcheck1"; // - Sitting checking weapon
waitUntil { animationState player != "amovpsitmstpsraswrfldnon_weaponcheck1"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_layDown";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_layDown"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_lookAround";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_lookAround"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_scratch";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_scratch"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_sleep";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_sleep"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_sleep0";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_sleep0"};
sleep 5;
player playMove "AidlPpneMstpSnonWnonDnon_SleepC_standUp";
waitUntil { animationState player != "AidlPpneMstpSnonWnonDnon_SleepC_standUp"};

View File

@@ -208,6 +208,7 @@ class CfgLoot {
"HandChemGreen",
"HandChemBlue",
"HandChemRed",
"DZ_Czech_Vest_Puch","object", // 12-0
"ItemHeatPack"
},
{
@@ -246,6 +247,7 @@ class CfgLoot {
0.02,
0.02,
0.02,
0.02,
0.04
}
};
@@ -275,6 +277,7 @@ class CfgLoot {
"10x_303",
"ItemWaterbottleUnfilled",
"BoltSteel",
"DZ_ALICE_Pack_EP1","object",
"ItemHeatPack",
"TrapBear"
},
@@ -285,6 +288,7 @@ class CfgLoot {
0.5,
0.2,
1,
0.1,
0.2,
0.01
}

View File

@@ -520,18 +520,8 @@ class Citizen1; // External class reference
weaponSlots = "1 + 4 + 12* 256 + 2* 4096 + 2 + 8* 16 + 12*131072";
canHideBodies = 1;
};
class Bag_Base_EP1;
class CZ_VestPouch_EP1: Bag_Base_EP1
{
displayname = "Czech Vest Pouch";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapsize = 2;
model = "\ca\weapons_e\AmmoBoxes\backpack_acr_small.p3d";
picture = "\ca\weapons_e\data\icons\backpack_ACR_small_CA.paa";
scope = 2;
transportmaxmagazines = 12;
transportmaxweapons = 0;
};
class Bag_Base_EP1;
class Bag_Base_BAF;
class DZ_Patrol_Pack_EP1: Bag_Base_EP1
{
scope = 2;
@@ -543,6 +533,7 @@ class Citizen1; // External class reference
transportMaxWeapons = 1;
transportMaxMagazines = 8;
};
class DZ_Assault_Pack_EP1: Bag_Base_EP1
{
scope = 2;
@@ -554,17 +545,19 @@ class Citizen1; // External class reference
transportMaxWeapons = 2;
transportMaxMagazines = 12;
};
class DZ_CivilBackpack_EP1: Bag_Base_EP1
class DZ_Czech_Vest_Puch: Bag_Base_EP1
{
scope = 2;
displayName = "Czech Backpack";
picture = "\ca\weapons_e\data\icons\backpack_ACR_CA.paa";
displayName = "Czech Vest Pouch";
picture = "\ca\weapons_e\data\icons\backpack_ACR_small_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapsize = 2;
model = "\ca\weapons_e\AmmoBoxes\backpack_acr.p3d";
transportMaxWeapons = 3;
transportMaxMagazines = 16;
model = "\ca\weapons_e\AmmoBoxes\backpack_acr_small.p3d";
transportMaxWeapons = 2;
transportMaxMagazines = 12;
};
class DZ_ALICE_Pack_EP1: Bag_Base_EP1
{
scope = 2;
@@ -573,9 +566,46 @@ class Citizen1; // External class reference
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapsize = 2;
model = "\ca\weapons_e\AmmoBoxes\backpack_tk_alice.p3d";
transportMaxWeapons = 4;
transportMaxMagazines = 20;
transportMaxWeapons = 2;
transportMaxMagazines = 16;
};
class DZ_TK_Assault_Pack_EP1 : Bag_Base_BAF
{
scope = 2;
displayName = "Survival ACU";
mapSize = 2;
picture = "\ca\weapons_e\data\icons\backpack_CIVIL_ASSAULT_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
model = "\ca\weapons_e\AmmoBoxes\backpack_civil_assault.p3d";
transportMaxWeapons = 2;
transportMaxMagazines = 16;
};
class DZ_British_ACU : Bag_Base_BAF
{
scope = 2;
displayName = "British Assault Pack";
mapSize = 2;
model = "\ca\weapons_baf\Backpack_Small_BAF";\
picture = "\ca\weapons_baf\data\UI\backpack_BAF_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
transportMaxWeapons = 3;
transportMaxMagazines = 18;
};
class DZ_CivilBackpack_EP1: Bag_Base_EP1
{
scope = 2;
displayName = "Czech Backpack";
picture = "\ca\weapons_e\data\icons\backpack_ACR_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapsize = 2;
model = "\ca\weapons_e\AmmoBoxes\backpack_acr.p3d";
transportMaxWeapons = 6;
transportMaxMagazines = 24;
};
class DZ_Backpack_EP1: Bag_Base_EP1
{
scope = 2;

View File

@@ -15,9 +15,11 @@ if (_canLoot) then {
_config = configFile >> "CfgBuildingLoot" >> _type;
//Get zombie class
_zombieChance = getNumber (_config >> "zombieChance");
_rnd = random 1;
_rnd = random 0.5;
_chance = round(random 20);
if (_rnd < _zombieChance) then {
//if (_rnd < _zombieChance) then {
if ((_chance % 2) == 0) then {
_noPlayerNear = (count ((getPosATL _obj) nearEntities ["CAManBase",30])) == 0;
@@ -31,14 +33,14 @@ if (_rnd < _zombieChance) then {
//diag_log ("Class: " + _type + " / Zombies: " + str(_unitTypes) + " / Walking: " + str(_num));
for "_i" from 1 to _num do
{
[_originalPos,_unitTypes] call zombie_generate;
[_position,_unitTypes] call zombie_generate;
};
};
};
/*
//Add Internal Zombies
_clean = count ((getPosATL _obj) nearEntities ["zZombie_Base",(sizeOf _type)]) == 0;
_clean = {alive _x} count ((getPosATL _obj) nearEntities ["zZombie_Base",(sizeOf _type)]) == 0;
if (_clean) then {
_positions = getArray (_config >> "lootPos");
_zombieChance = getNumber (_config >> "zombieChance");
@@ -47,11 +49,10 @@ if (_rnd < _zombieChance) then {
_rnd = random 1;
if (_rnd < _zombieChance) then {
_iPos = _obj modelToWorld _x;
//_iPos = [_iPos,0,20,20,0,0,0] call BIS_fnc_findSafePos;
//_iPos = position (_obj);
_nearBy = count nearestObjects [_iPos , ["zZombie_Base"],1] > 0;
_nearBy = {alive _x} count nearestObjects [_iPos , ["zZombie_Base"],3] > 0;
_nearByPlayer = ({isPlayer _x} count (_iPos nearEntities ["CAManBase",30])) > 0;
//diag_log ("BUILDING: " + _type + " / " + str(_nearBy) + " / " + str(_nearByPlayer));
diag_log ("BUILDING: " + _type + " / " + str(_nearBy) + " / " + str(_nearByPlayer));
if (!_nearByPlayer and !_nearBy) then {
[_iPos,_unitTypes] call zombie_generate;
@@ -60,5 +61,4 @@ if (_rnd < _zombieChance) then {
} forEach _positions;
};
dayz_buildingMonitor set [count dayz_buildingMonitor,_obj];
*/
};

View File

@@ -1,22 +1,28 @@
private["_findarray","_stringarray","_findcount","_stringcount","_found","_y","_i","_x"];
_findarray = toArray (_this select 0);
_stringarray = toArray (_this select 1);
_findcount = count _findarray;
_stringcount = count _stringarray;
_found = false;
//Kilzone_Kid's megafast inString function
//caseinsensitive
//params [needle,haystack]
private["_needle","_haystack","_found","_haystackArr","_haystackLen","_needleLen","_hayArr"];
scopeName "main";
if (_findcount <= _stringcount) then {
for "_y" from 0 to (_stringcount - _findcount) do {
_i = 0;
{
scopeName "loop1";
if (_x == (_stringarray select (_y + _i))) then {
_i = _i + 1;
} else {breakOut "loop1";};
} forEach _findarray;
if (_i == _findcount) then {_found = true; breakTo "main";};
_needle = _this select 0;
_haystack = _this select 1;
_haystackArr = toArray _haystack;
_haystackLen = count _haystackArr;
_needleLen = count (toArray _needle);
_found = false;
if (_needleLen <= _haystackLen) then {
_hayArr = [];
for "_i" from 0 to (_needleLen - 1) do {
_hayArr set [count _hayArr, _haystackArr select _i];
};
for "_i" from _needleLen to _haystackLen do {
if (toString _hayArr != _needle) then {
_hayArr set [_needleLen, _haystackArr select _i];
_hayArr set [0, "x"];
_hayArr = _hayArr - ["x"];
} else {
_found = true;
breakTo "main";
};
};
};
_found
_found;

View File

@@ -215,6 +215,16 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4))
player removeAction s_player_lockvault;
s_player_lockvault = -1;
};
//Sleep
if(cursorTarget isKindOf "TentStorage" and _canDo and _ownerID == dayz_characterID) then {
if ((s_player_sleep < 0) and (player distance cursorTarget < 3)) then {
s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_sleep;
s_player_sleep = -1;
};
//Repairing Vehicles
if ((dayz_myCursorTarget != cursorTarget) and !_isMan and _hasToolbox and (damage cursorTarget < 1)) then {
@@ -576,6 +586,8 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 4))
s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
player removeAction s_player_butcher;

View File

@@ -6,6 +6,9 @@ _worldspace = _this select 2;
_class = _this select 3;
_id = 0;
_allowed = [_object, (name player)] call check_publishobject;
if (!_allowed) exitWith { };
diag_log ("PUBLISH: Attempt " + str(_object));
_dir = _worldspace select 0;
_location = _worldspace select 1;

View File

@@ -4,7 +4,7 @@ _unit = _this select 0;
_distance = _this select 1;
_doRun = _this select 2;
_pos = _this select 3;
_listTalk = _pos nearEntities ["zZombie_Base",_distance];
_listTalk = _pos nearEntities ["zZombie_Base",_distance * 3];
//hint str(_listTalk);
@@ -19,17 +19,4 @@ _listTalk = _pos nearEntities ["zZombie_Base",_distance];
} else {
_zombie setVariable ["myDest",_pos,true];
};
} forEach _listTalk;
_listTalk = _pos nearEntities [["DZ_Fin, DZ_Pastor"], _distance * 3];
{
_dog = _x;
//Ensure dog is tamed AND is not players own dog
if (_doRun && (_dog getVariable ["characterID", 0]) != 0) then {
_targets = _dog getVariable ["targets",[]];
if (!(_unit in _targets)) then {
_targets set [count _targets,_unit];
_dog setVariable ["targets",_targets,true];
};
}
} forEach _listTalk;

View File

@@ -1,5 +1,6 @@
private["_type","_isAir","_inVehicle","_dateNow","_maxZombies","_maxWildZombies","_age","_nearbyBuildings","_radius","_locationstypes","_nearestCity","_position","_nearbytype"];
_type = _this select 0;
_Keepspawning = _this select 1;
_isAir = vehicle player iskindof "Air";
_inVehicle = (vehicle player != player);
_dateNow = (DateToNumber date);
@@ -7,77 +8,57 @@ _maxZombies = dayz_maxLocalZombies;
_maxWildZombies = 3;
_age = -1;
_nearbyBuildings = [];
_radius = 200;
_maxZombies = 20;
diag_log ("Type: " +str(_type));
//diag_log("SPAWN CHECKING: Starting");
_radius = 300;
_locationstypes = ["NameCityCapital","NameCity","NameVillage","NameLocal"];
_radius = 200;
_locationstypes = ["NameCityCapital","NameCity","NameVillage"];
_nearestCity = nearestLocations [getPos player, _locationstypes, _radius];
_townname = text (_nearestCity select 0);
_position = getPosATL player;
if ((count _nearestCity) > 0) then {
_position = position (_nearestCity select 0);
};
_nearbytype = type (_nearestCity select 0);
switch (_nearbytype) do {
case "NameLocal": {
_radius = 200;
_maxZombies = 30;
};
case "NameVillage": {
_radius = 250;
_maxZombies = 40;
_maxZombies = 30;
};
case "NameCity": {
_radius = 300;
_maxZombies = 45;
_maxZombies = 40;
};
case "NameCityCapital": {
_radius = 400;
_maxZombies = 50;
};
default {
_radius = 200;
_maxZombies = 20;
};
};
/*
if ((count _nearestCity) > 0) then {
_markerstr = createMarker["markername_" +str (_townname), _position];
_markerstr setMarkerText _townname;
_markerstr setMarkerColor "ColorGreen";
_markerstr setMarkerShape "ELLIPSE";
_markerstr setMarkerBrush "Grid";
_markerstr setMarkerSize [_radius, _radius];
};
deleteMarker "Player_Marker_Radius";
_markerstr = createMarker["Player_Marker_Radius", getPosATL player];
_markerstr setMarkerColor "ColorRed";
_markerstr setMarkerShape "ELLIPSE";
_markerstr setMarkerBrush "Border";
_markerstr setMarkerSize [_radius, _radius];
*/
_spawnZombies = count (_position nearEntities ["zZombie_Base",_radius]) < _maxZombies;
switch (_type) do {
case "Zeds": {
_spawnZombies = count (getPosATL player nearEntities ["zZombie_Base",_radius]) < _maxZombies;
if (_spawnZombies) then {
_nearbyBuildings = _position nearObjects ["building",_radius];
//_nearbyBuildings = nearestObjects [getPosATL player, dayz_ZombieBuildings, _radius]; //Cant be used Not all zones are covered yet (wrecks, Buildings outside towns)
//_nearbyBuildings = nearestObjects [_position, ["building"], _radius];
_nearbyBuildings = nearestObjects [_position, dayz_LootBuildings, _radius];
_nearbyCount = count _nearbyBuildings;
if (_nearbyCount > 0) then {
[_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _maxZombies, _nearbyBuildings] call player_spawnzedCheck;
};
};
};
case "Wild": {
//[_position, _maxZombies] call wild_spawnZombies;
};
case "Loot": {
_nearbyBuildings = _position nearObjects ["building",_radius];
//_nearbyBuildings = nearestObjects [_position, dayz_LootBuildings, _radius]; //Cant be used Not all zones are covered yet (wrecks, Buildings outside towns)
//_nearbyBuildings = nearestObjects [_position, ["building"], _radius];
_nearbyBuildings = nearestObjects [_position, dayz_ZombieBuildings, _radius];
_nearbyCount = count _nearbyBuildings;
if (_nearbyCount > 0) then {
[_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _nearbyBuildings] call player_spawnlootCheck;
};
};
};

View File

@@ -10,7 +10,6 @@ _maxZombies = _this select 7;
_nearby = _this select 8;
diag_log ("Zed Started");
_maxWildZombies = 3;
// 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 {
@@ -22,13 +21,12 @@ dayz_inVehicle = _inVehicle;
if (_inVehicle) then {
_maxZombies = _maxZombies / 2;
_maxWildZombies = 0;
};
_spawnZombies = count (_position nearEntities ["zZombie_Base",_radius]) < _maxZombies;
// _spawnZombies = count (_position nearEntities ["zZombie_Base",_radius]) < _maxZombies;
// _tooManyZs = count (_position nearEntities ["zZombie_Base",_radius]) > _maxZombies;
// _tooManyWildZs = count (_position nearEntities ["zZombie_Base",_radius]) > _maxWildZombies;
{
if (dayz_spawnZombies > _maxZombies) exitwith {};
// if (dayz_spawnZombies > _maxZombies) exitwith {};
_zombied = (_x getVariable ["zombieSpawn",-0.1]);
_dateNow = (DateToNumber date);
_age = (_dateNow - _zombied) * 525948;
@@ -40,22 +38,4 @@ if (_inVehicle) then {
[_x] call building_spawnZombies;
//};
};
} forEach _nearby;
/*
if ((count _nearby) < 1) then {
diag_log ("1");
_spawnWildZs = count (_position nearEntities ["zZombie_Base",_radius]);
if (_spawnWildZs < _maxWildZombies) then {
diag_log ("2");
if (!_tooManyWildZs) then {
diag_log ("3");
_zombiesNum = count (_position nearEntities ["zZombie_Base",(((sizeOf _type) * 2) + 10)]);
//diag_log ("ZombiesNum: " +str(_zombiesNum));
if (_zombiesNum == 0) then {
diag_log ("4");
[_position] call wild_spawnZombies;
};
};
};
};
*/
} forEach _nearby;

View File

@@ -20,7 +20,7 @@ if (r_player_unconscious && _vehicle == player && _type == "zombie") then {
};
_dir = [_unit,player] call BIS_Fnc_dirTo;
_unit setDir _dir;
[objNull, _unit, rPlayMove,_move] call RE;
_unit playMove _move;
//Wait
sleep 0.3;
@@ -29,11 +29,11 @@ if (_vehicle != player) then {
_hpList = _vehicle call vehicle_getHitpoints;
_hp = _hpList call BIS_fnc_selectRandom;
_wound = getText(configFile >> "cfgVehicles" >> (typeOf _vehicle) >> "HitPoints" >> _hp >> "name");
_damage = random 0.03;
_damage = random 0.08;
_chance = round(random 12);
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;
[_unit,"hit",2,true] call dayz_zombieSpeak;
_strH = "hit_" + (_wound);
_dam = _vehicle getVariable [_strH,0];
_total = (_dam + _damage);
@@ -63,7 +63,7 @@ if (_vehicle != player) then {
[player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler;
//dayzHit = [player,_wound, _damage, _unit,"zombie"];
//publicVariable "dayzHit";
[_unit,"hit",0,false] call dayz_zombieSpeak;
[_unit,"hit",2,true] call dayz_zombieSpeak;
} else {
_result = [_vehicle, _wound,_total, _unit,"zombie"] call fnc_usec_damageVehicle;
dayzHitV = [_vehicle,_wound,_total, _unit,"zombie"];
@@ -107,7 +107,7 @@ if (_vehicle != player) then {
[player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler;
//dayzHit = [player,_wound, _damage, _unit,"zombie"];
//publicVariable "dayzHit";
[_unit,"hit",0,false] call dayz_zombieSpeak;
[_unit,"hit",2,true] call dayz_zombieSpeak;
} else {
/*
_isZombieInside = [_unit,_building] call fnc_isInsideBuilding;
@@ -117,7 +117,7 @@ if (_vehicle != player) then {
[player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler;
//dayzHit = [player,_wound, _damage, _unit,"zombie"];
//publicVariable "dayzHit";
[_unit,"hit",0,false] call dayz_zombieSpeak;
[_unit,"hit",2,true] call dayz_zombieSpeak;
};
*/
};

View File

@@ -1,6 +1,6 @@
private["_listTalk","_isZombie","_group","_eyeDir","_attacked","_continue","_type","_chance","_last","_audial","_distance","_refObj","_list","_scaleMvmt","_scalePose","_scaleLight","_anim","_activators","_nearFire","_nearFlare","_scaleAlert","_inAngle","_scaler","_initial","_tPos","_zPos","_cantSee"];
_refObj = vehicle player;
_listTalk = (position _refObj) nearEntities [["zZombie_Base","DZ_Pastor"],80];
_listTalk = (position _refObj) nearEntities [["zZombie_Base"],80];
_pHeight = (getPosATL _refObj) select 2;
_attacked = false;
_multiplier = 1;

View File

@@ -1,7 +1,5 @@
private["_unit","_selection","_killer"];
Diag_log ("handlekilled");
_unit = _this select 0;
_killer = _this select 1;

View File

@@ -4,7 +4,7 @@ _target = objNull;
_lead = leader _group;
_targetMen = [];
_targetDis = [];
_range = 300;
_range = 500;
_assigned = _group getVariable ["targets",[]];
{
@@ -17,19 +17,19 @@ _targets = _lead nearTargets _range;
private["_obj","_dis"];
_obj = _x select 4;
_dis = _obj distance _lead;
if (_obj isKindOf "Man") then {
if (!(_obj isKindOf "zZombie_Base") and !(_obj in _targetMen)) then {
// if (_obj isKindOf "Man") then {
if (((_obj isKindOf "Man") or (_obj isKindOf "AllVehicles")) and !(_obj isKindOf "zZombie_Base") and !(_obj in _targetMen)) then {
//process man targets
_targetMen set [count _targetMen,_obj];
_targetDis set [count _targetDis,_dis];
};
} else {
if ((_obj isKindOf "AllVehicles") and (count crew _obj > 0) and !(_obj in _targetMen)) then {
//process vehicle targets
_targetMen set [count _targetMen,_obj];
_targetDis set [count _targetDis,_dis];
};
};
// } else {
// if ((_obj isKindOf "AllVehicles") and (count crew _obj > 0) and !(_obj in _targetMen)) then {
// //process vehicle targets
// _targetMen set [count _targetMen,_obj];
// _targetDis set [count _targetDis,_dis];
// };
// };
} forEach _targets;
//Search for fires

View File

@@ -26,7 +26,7 @@ if (count _targets == 0) then {
if (isNil "_targets") exitWith {};
//Search for objects
if (count _targets == 0) then {
_objects = nearestObjects [_agent,["ThrownObjects","GrenadeHandTimedWest","SmokeShell"],_range/2];
_objects = nearestObjects [_agent,["ThrownObjects","GrenadeHandTimedWest","SmokeShell"],_range];
{
private["_dis"];
if (!(_x in _targets)) then {

View File

@@ -33,7 +33,7 @@ class CfgMods
hidePicture = 0;
hideName = 0;
action = "http://www.dayzmod.com";
version = "1.7.5.D1222";
version = "1.7.5.M1D7";
hiveVersion = 0.96; //0.93
};
};
@@ -51,6 +51,15 @@ class CfgAddons
};
};
};
class CfgInGameUI
{
class PeripheralVision
{
cueColor[] = {0,0,0,0};
};
};
class RscPictureGUI
{
access = 0;
@@ -82,10 +91,11 @@ class RscStructuredTextGUI: RscStructuredText
valign = "middle";
};
};
//#include "CfgWorlds.hpp"
#include "cfgMoves.hpp"
#include "rscTitles.hpp"
#include "cfgVehicles.hpp"
//#include "CfgWeapons.hpp"
#include "cfgLoot.hpp"
class CfgSurvival {
@@ -123,7 +133,7 @@ class CfgSurvival {
class CfgBuildingLoot {
class Default {
zombieChance = 0;
zombieChance = 0.2;
minRoaming = 0;
maxRoaming = 2;
zombieClass[] = {"zZombie_Base","z_hunter","z_teacher","z_suit1","z_suit2","z_worker1","z_worker2","z_worker3","z_villager1","z_villager2","z_villager3"};
@@ -162,9 +172,11 @@ class CfgBuildingLoot {
{ "","generic" },
{ "LeeEnfield","weapon" },
{ "revolver_EP1","weapon" },
{ "CZ_VestPouch_EP1","object" },
{ "DZ_CivilBackpack_EP1","object" },
{ "DZ_ALICE_Pack_EP1","object" },
{"DZ_Patrol_Pack_EP1","object"}, //8
{"DZ_Assault_Pack_EP1","object"}, // 12
{"DZ_Czech_Vest_Puch","object"}, // 12-0
{ "Winchester1866","weapon" },
{ "WeaponHolder_ItemTent","object" },
{ "","military" },
@@ -191,9 +203,9 @@ class CfgBuildingLoot {
2,
0.06,
0.04,
0.04, //{"CZ_VestPouch_EP1","object"},
0.03,
0.02,
0.04, //8
0.01, //12
0.03, //12-0
0.01,
0.01,
0.03,
@@ -305,9 +317,11 @@ class CfgBuildingLoot {
{ "","generic" },
{ "LeeEnfield","weapon" },
{ "revolver_EP1","weapon" },
{ "CZ_VestPouch_EP1","object" },
{ "DZ_CivilBackpack_EP1","object" },
{ "DZ_ALICE_Pack_EP1","object" },
{"DZ_Patrol_Pack_EP1","object"}, //8
{"DZ_Assault_Pack_EP1","object"}, // 12
{"DZ_Czech_Vest_Puch","object"}, // 12-0
{ "Winchester1866","weapon" },
{ "WeaponHolder_ItemTent","object" },
{ "","food" },
@@ -329,9 +343,9 @@ class CfgBuildingLoot {
0.05,
0.01,
0.01,
0.04, //{"CZ_VestPouch_EP1","object"},
0.03,
0.02,
0.04, //8
0.01, //12
0.03, // 12-0
0.01,
0.01,
0.3,
@@ -343,7 +357,7 @@ class CfgBuildingLoot {
};
};
class HeliCrash: Default {
zombieChance = 0;
zombieChance = 0.4;
maxRoaming = 2;
zombieClass[] = {"z_soldier_pilot"};
lootChance = 0.5;
@@ -407,7 +421,7 @@ class CfgBuildingLoot {
};
};
class HeliCrash_No50s: Default {
zombieChance = 0;
zombieChance = 0.4;
maxRoaming = 2;
zombieClass[] = {"z_soldier_pilot"};
lootChance = 0.5;
@@ -516,9 +530,13 @@ class HeliCrash_No50s: Default {
{ "ItemKnife","military" },
{ "ItemGPS","weapon" },
{ "ItemMap","military" },
{ "DZ_Assault_Pack_EP1","object" },
{ "DZ_Patrol_Pack_EP1","object" },
{ "DZ_Backpack_EP1","object" },
{"DZ_ALICE_Pack_EP1","object"}, // 16
{"DZ_TK_Assault_Pack_EP1","object"}, // 16
{"DZ_British_ACU","object"}, // 18
{"DZ_CivilBackpack_EP1","object"}, // 24
{"DZ_Backpack_EP1","object"}, // 24
//Normal
{ "","medical" },
{ "","generic" },
@@ -555,9 +573,12 @@ class HeliCrash_No50s: Default {
0.10,
0.01,
0.05,
0.06,
0.04,
0.02,
//Bags
0.08, //16
0.08, //16
0.06, //18
0.01, //24
0.01, //DZ_Backpack_EP1 24
0.10,
1.00,
2.50,
@@ -614,9 +635,11 @@ class HeliCrash_No50s: Default {
{ "ItemMap","military" },
{ "Binocular_Vector","military" },
{ "DZ_Assault_Pack_EP1","object" },
{ "DZ_Patrol_Pack_EP1","object" },
{ "DZ_Backpack_EP1","object" },
{"DZ_ALICE_Pack_EP1","object"}, // 16
{"DZ_TK_Assault_Pack_EP1","object"}, // 16
{"DZ_British_ACU","object"}, // 18
{"DZ_CivilBackpack_EP1","object"}, // 24
{"DZ_Backpack_EP1","object"}, // 24
{ "","medical" },
{ "","generic" },
@@ -666,9 +689,12 @@ class HeliCrash_No50s: Default {
0.01, //ItemGPS
0.03,
0.01,
0.02,
0.03,
0.02,
//Bags
0.08, //16
0.08, //16
0.06, //18
0.01, //24
0.01, //DZ_Backpack_EP1 24
0.30,
1.00,
5.00, //military
@@ -804,7 +830,7 @@ class HeliCrash_No50s: Default {
lootPos[] = {{0.486084,4.95459,-4.96861},{1.08032,-0.406738,-4.96801},{-0.0354004,-10.8208,-4.96686},{-5.07788,-16.4624,-4.96759},{-6.30298,2.92969,-4.96838},{-6.26685,26.7349,-4.9772},{1.64697,23.4038,-4.97097},{7.14575,3.92529,-4.96972},{4.63599,-12.1621,-4.96971}};
};
class Land_A_MunicipalOffice: Residential {
zombieChance = 0;
zombieChance = 0.4;
minRoaming = 3;
maxRoaming = 9;
zombieClass[] = {"z_soldier","z_soldier_heavy","z_policeman"};
@@ -876,7 +902,7 @@ class HeliCrash_No50s: Default {
lootPos[] = {{-1.77002,-1.45166,1.95942}};
}; // Qty: 183
class Land_KBud: Residential {
zombieChance = 0;
zombieChance = 0.3;
maxRoaming = 0;
lootPos[] = {{-0.0170898,0.0114746,-0.66367}};
}; // Qty: 90
@@ -937,7 +963,7 @@ class HeliCrash_No50s: Default {
lootPos[] = {};
}; // Qty: 83
class Land_Misc_deerstand: Military {
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0.5;
maxRoaming = 3;
lootPos[] = {{-0.923828,-0.808594,1.08539},{0.419922,-0.237305,1.08539}};
@@ -966,8 +992,8 @@ class HeliCrash_No50s: Default {
class UH1Wreck_DZ: Military {
zombieClass[] = {"z_soldier_pilot","z_soldier_heavy"};
zombieChance = 0;
lootChance = 0;
zombieChance = 0.3;
lootChance = 0.6;
minRoaming = 4;
maxRoaming = 8;
lootPos[] = {};
@@ -975,8 +1001,8 @@ class HeliCrash_No50s: Default {
class UH60Wreck_DZ: Military {
zombieClass[] = {"z_soldier_pilot","z_soldier_heavy"};
zombieChance = 0;
lootChance = 0;
zombieChance = 0.3;
lootChance = 0.6;
minRoaming = 4;
maxRoaming = 8;
lootPos[] = {};
@@ -990,18 +1016,18 @@ class HeliCrash_No50s: Default {
}; // Qty: 1
class Land_Ind_Shed_02_main: Default {
zombieChance = 0;
zombieChance = 0.3;
maxRoaming = 3;
}; // Qty: 283
class HouseRoaming: Residential {
lootChance = 0;
zombieChance = 0;
lootChance = 0.5;
zombieChance = 0.2;
maxRoaming = 2;
};
class FarmRoaming: Farm {
lootChance = 0;
zombieChance = 0;
lootChance = 0.3;
zombieChance = 0.4;
maxRoaming = 2;
};
class Land_Shed_W03: HouseRoaming {}; // Qty: 206
@@ -1201,7 +1227,7 @@ class HeliCrash_No50s: Default {
class HMMWVWreck: Military
{
zombieClass[] = {"z_soldier_pilot","z_soldier_heavy"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1210,7 +1236,7 @@ class HeliCrash_No50s: Default {
class UralWreck: Military
{
zombieClass[] = {"z_soldier_pilot","z_soldier_heavy"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1219,7 +1245,7 @@ class HeliCrash_No50s: Default {
class SKODAWreck: Residential
{
zombieClass[] = {"zZombie_Base","z_hunter"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1228,7 +1254,7 @@ class HeliCrash_No50s: Default {
class UAZWreck: Residential
{
zombieClass[] = {"zZombie_Base","z_hunter"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1237,7 +1263,7 @@ class HeliCrash_No50s: Default {
class datsun01Wreck: Residential
{
zombieClass[] = {"zZombie_Base","z_hunter"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1246,7 +1272,7 @@ class HeliCrash_No50s: Default {
class hiluxWreck: Industrial
{
zombieClass[] = {"zZombie_Base","z_hunter"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1255,7 +1281,7 @@ class HeliCrash_No50s: Default {
class datsun02Wreck: Military
{
zombieClass[] = {"zZombie_Base","z_hunter"};
zombieChance = 0;
zombieChance = 0.3;
lootChance = 0;
minRoaming = 1;
maxRoaming = 2;
@@ -1264,7 +1290,7 @@ class HeliCrash_No50s: Default {
class Land_Ind_Shed_01_EP1: Default
{
zombieChance = 0;
zombieChance = 0.3;
maxRoaming = 3;
};
class DynamicDebris: Default
@@ -1272,7 +1298,7 @@ class HeliCrash_No50s: Default {
lootChance = 0.4;
minRoaming = 0;
maxRoaming = 2;
zombieChance = 0;
zombieChance = 0.3;
zombieClass[] = {"zZombie_Base","zZombie_Base","z_teacher","z_suit1","z_suit2"};
itemType[] = {
{ "ItemWatch","generic" },

View File

@@ -63,6 +63,10 @@ if (!isDedicated) then {
//Wild
//wild_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\wild_spawnZombies.sqf";
//Maps
//fnc_MapEventHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_MapEventHandler.sqf";
//
dog_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dog_findTargetAgent.sqf";
@@ -87,6 +91,8 @@ if (!isDedicated) then {
player_dropWeapon = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_dropWeapon.sqf";
player_setTrap = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_setTrap.sqf";
object_pickup = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_pickup.sqf";
player_flipvehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_flipvehicle.sqf";
player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
//ui
player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_selectSlot.sqf";
@@ -185,10 +191,10 @@ if (!isDedicated) then {
_tPos = eyePos _target; //(getPosASL _target);
_zPos = eyePos _agent; //(getPosASL _agent);
if ((count _tPos > 0) and (count _zPos > 0)) then {
_cantSee = terrainIntersectASL [(eyePos _target), (eyePos _agent)];
_cantSee = terrainIntersectASL [_tPos, _zPos];
//diag_log ("terrainIntersectASL: " + str(_cantSee));
if (!_cantSee) then {
_cantSee = lineIntersects [(eyePos _target), (eyePos _agent)];
_cantSee = lineIntersects [_tPos, _zPos];
//diag_log ("lineIntersects: " + str(_cantSee));
};
};
@@ -230,10 +236,12 @@ if (!isDedicated) then {
_btnRespawn ctrlEnable false;
};
abort_enable = 0 spawn {};
dayz_disableAbort = {
private["_display","_btnAbort","_combattimeout"];
private["_display","_btnAbort","_combattimeout","_zAround"];
_combattimeout = player getVariable["combattimeout",0];
if(_combattimeout < time) exitWith {};
_zAround = (count (player nearEntities ["zZombie_Base",50]) > 0);
if (_zAround || _combattimeout > time) then {
disableSerialization;
waitUntil {
_display = findDisplay 49;
@@ -241,6 +249,35 @@ if (!isDedicated) then {
};
_btnAbort = _display displayCtrl 104;
_btnAbort ctrlEnable false;
if (_zAround && _combattimeout <= time) then {
if (!scriptDone abort_enable) then {
terminate abort_enable;
sleep 0.5;
};
abort_enable = [] spawn {
private["_timeOut","_timeMax","_display","_btnAbort"];
_timeOut = 0;
_timeMax = 30;
disableSerialization;
while {_timeOut <= _timeMax} do {
scopeName "loop";
_display = findDisplay 49;
if (!isNull _display) then {
if (_timeOut == _timeMax) then {
_btnAbort = _display displayCtrl 104;
_btnAbort ctrlEnable true;
};
cutText [format ["You can Abort in %1",(_timeMax - _timeOut)], "PLAIN DOWN"];
} else {
breakOut "loop";
};
_timeOut = _timeOut + 1;
sleep 1;
};
cutText ["", "PLAIN DOWN"];
};
};
};
};
dayz_spaceInterrupt = {

View File

@@ -1,26 +1,5 @@
//Medical Event Handlers
"norrnRaLW" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\load_wounded.sqf"};
"norrnRLact" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"};
"norrnRDead" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\deadState.sqf"};
"usecBleed" addPublicVariableEventHandler {_id = (_this select 1) spawn fnc_usec_damageBleed};
"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage};
"usecInject" addPublicVariableEventHandler {(_this select 1) call player_medInject};
"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi};
"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse};
"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine};
"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller};
"dayzHit" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageHandler};
"dayzHitV" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageVehicle};
"dayzHideBody" addPublicVariableEventHandler {hideBody (_this select 1)};
"dayzGutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject};
"dayzSetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_sefFuel};
"dayzSetFix" addPublicVariableEventHandler {(_this select 1) call object_setFixServer};
"dayzDelLocal" addPublicVariableEventHandler {(_this select 1) call object_delLocal};
"dayzVehicleInit" addPublicVariableEventHandler {(_this select 1) call fnc_vehicleEventHandler};
"dayzHumanity" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange};
"dayz_serverObjectMonitor" addPublicVariableEventHandler {dayz_serverObjectMonitor = dayz_safety};
"dayzSetFuel" addPublicVariableEventHandler {(_this select 1) call local_sefFuel};
//Server only
if (isServer) then {
"dayzDeath" addPublicVariableEventHandler {(_this select 1) call server_playerDied};
"dayzDiscoAdd" addPublicVariableEventHandler {dayz_disco set [count dayz_disco,(_this select 1)];};
@@ -34,21 +13,34 @@ if (isServer) then {
"dayzTraderMenu" addPublicVariableEventHandler {(_this select 1) call server_traders}; // for all traders
"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};
"dayzPlayerMorph" addPublicVariableEventHandler {(_this select 1) call server_playerMorph};
"dayzLoginRecord" addPublicVariableEventHandler {(_this select 1) call dayz_recordLogin};
// "dayzCharSave" addPublicVariableEventHandler {(_this select 1) call server_playerSync};
"dayzCharDisco" addPublicVariableEventHandler {(_this select 1) call server_characterSync};
"dayzSetFix" addPublicVariableEventHandler {(_this select 1) call object_setFixServer};
"dayzGutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject};
"usecMorphine" addPublicVariableEventHandler {
(_this select 1) select 0 setVariable["hit_legs",0];
(_this select 1) select 0 setVariable["hit_hands",0];
};
};
//Client only
if (!isDedicated) then {
"norrnRaLW" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\load_wounded.sqf"};
"norrnRLact" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"};
"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine};
"usecBleed" addPublicVariableEventHandler {_id = (_this select 1) spawn fnc_usec_damageBleed};
"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage};
"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi};
"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse};
"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller};
"dayzHideBody" addPublicVariableEventHandler {hideBody (_this select 1)};
"dayzHumanity" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange};
"dayzHitV" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageVehicle};
"dayzSetDate" addPublicVariableEventHandler {setDate (_this select 1)};
"dayzFlies" addPublicVariableEventHandler {(_this select 1) call spawn_flies};
"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};
"dayzFire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn};
};

View File

@@ -11,6 +11,10 @@ Camo1_DZ = "Camo1_DZ";
Soldier1_DZ = "Soldier1_DZ";
Rocket_DZ = "Rocket_DZ";
AllPlayers = ["Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ"];
AllPlayersVehicles = ["Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","AllVehicles"];
PZombie_VB = "PZombie_VB";
pz_policeman = "pz_policeman";
@@ -89,6 +93,7 @@ dayz_resetSelfActions = {
s_player_deleteBuild = -1;
s_player_forceSave = -1;
s_player_flipveh = -1;
s_player_sleep = -1;
s_player_movedog = -1;
s_player_speeddog = -1;
s_player_calldog = -1;

View File

@@ -17,4 +17,6 @@ _eh2 = _unit addeventhandler ["Killed",{ _this call vehicle_handleKilled } ];
if (isServer) then {
_eh3 = _unit addEventHandler ["GetOut", {[(_this select 0),"all"] call server_updateObject;}];
_eh4 = _unit addEventHandler ["GetIn", {[(_this select 0),"all"] call server_updateObject;}];
_eh5 = _unit addEventHandler ["Killed",{ _this call vehicle_handleKilled } ];
_eh6 = _unit addeventhandler ["HandleDamage",{ _this call vehicle_handleDamage } ];
};

View File

@@ -43,6 +43,6 @@ if (_finished) then {
_id = dayzHumanity spawn player_humanityChange;
} else {
r_interrupt = false;
[objNull, player, rSwitchMove,""] call RE;
player switchMove "";
player playActionNow "stop";
};

View File

@@ -87,7 +87,7 @@ class RscDisplayMain : RscStandardDisplay
class DAYZ_Version : CA_Version
{
idc = -1;
text = "DayZ 1.7.5.D1222";
text = "DayZ 1.7.5.M1D7";
y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)";
};
class CA_TitleMainMenu;

View File

@@ -639,6 +639,12 @@
<German>Turn Over %1</German>
<Russian>Turn Over %1</Russian>
</Key>
<Key ID="str_actions_self_sleep">
<Original>Sleep</Original>
<English>Sleep</English>
<German>Sleep</German>
<Russian>Sleep</Russian>
</Key>
<Key ID="STR_CHAR_2">
<Original>Bandit</Original>
<English>Bandit</English>

View File

@@ -1085,12 +1085,9 @@ class FSM
"dayz_slowCheck = [] spawn player_spawn_2;" \n
"" \n
"_world = toUpper(worldName); //toUpper(getText (configFile >> ""CfgWorlds"" >> (worldName) >> ""description""));" \n
"_nearestCity = nearestLocations [getPos player, [""NameCityCapital"",""NameCity"",""NameVillage"",""NameLocal""],500];" \n
"_nearestCity = (nearestLocations [getPos player, [""NameCityCapital"",""NameCity"",""NameVillage"",""NameLocal""],1000] select 0);" \n
"_town = ""Wilderness"";" \n
"" \n
"diag_log (""NearestCity"" + str(_nearestCity));" \n
"" \n
"if (count _nearestCity > 0) then {_town = text (_nearestCity select 0)};" \n
"if (!isNull _nearestCity) then {_town = text _nearestCity};" \n
"" \n
"_strTime = call curTimeStr;" \n
"_strDate = date;" \n

View File

@@ -2,7 +2,7 @@
/*%FSM<HEAD>*/
/*
item0[] = {"init",0,250,-300.000000,-250.000000,-200.000000,-200.000000,0.000000,"init"};
item1[] = {"End",1,250,175.000000,-250.000000,275.000000,-200.000000,0.000000,"End"};
item1[] = {"End",1,250,50.000000,-250.000000,150.000000,-200.000000,0.000000,"End"};
item2[] = {"Not_Alive",4,218,0.000000,300.000000,100.000000,350.000000,5.000000,"Not" \n "Alive"};
item3[] = {"Nobody_Near",4,218,0.000000,375.000000,100.000000,425.000000,4.000000,"Nobody" \n "Near"};
item4[] = {"loiter",4,218,-300.000000,0.000000,-200.000000,50.000000,0.000000,"loiter"};
@@ -14,8 +14,8 @@ item9[] = {"true",8,218,-300.000000,-175.000000,-200.000000,-125.000000,0.000000
item10[] = {"Begin",2,250,-300.000000,-100.000000,-200.000000,-50.000000,0.000000,"Begin"};
item11[] = {"",7,210,-254.000046,-29.000004,-245.999954,-20.999996,0.000000,""};
item12[] = {"",7,210,-204.000046,146.000000,-195.999954,154.000000,0.000000,""};
item13[] = {"Has_Target",4,4314,-150.000000,225.000000,-50.000000,275.000000,1.000000,"Has" \n "Target"};
item14[] = {"Chase",2,250,-150.000000,300.000000,-50.000000,350.000000,0.000000,"Chase"};
item13[] = {"Has_Target",4,218,-150.000000,225.000000,-50.000000,275.000000,1.000000,"Has" \n "Target"};
item14[] = {"Chase",2,4346,-150.000000,300.000000,-50.000000,350.000000,0.000000,"Chase"};
item15[] = {"",7,210,-29.000006,146.000000,-20.999996,154.000000,0.000000,""};
item16[] = {"",7,210,-29.000006,196.000000,-20.999996,204.000000,0.000000,""};
item17[] = {"",7,210,-104.000000,196.000000,-95.999992,204.000000,0.000000,""};
@@ -24,10 +24,10 @@ item19[] = {"Time_Check",4,218,-275.000000,300.000000,-175.000000,350.000000,0.0
item20[] = {"No_Target",4,218,-275.000000,375.000000,-175.000000,425.000000,3.000000,"No" \n "Target"};
item21[] = {"",7,210,-479.000000,396.000000,-471.000000,404.000000,0.000000,""};
item22[] = {"",7,210,-479.000000,146.000000,-471.000000,154.000000,0.000000,""};
item23[] = {"",7,210,221.000000,321.000000,229.000000,329.000000,0.000000,""};
item24[] = {"",7,210,221.000000,396.000000,229.000000,404.000000,0.000000,""};
item25[] = {"Cleanup_",2,250,175.000000,200.000000,275.000000,250.000000,0.000000,"Cleanup?"};
item26[] = {"nobody_around",4,218,175.000000,-25.000000,275.000000,25.000000,0.000000,"nobody" \n "around"};
item23[] = {"",7,210,133.499985,321.000000,141.500000,329.000000,0.000000,""};
item24[] = {"",7,210,133.500000,396.000000,141.500000,404.000000,0.000000,""};
item25[] = {"Cleanup_",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"Cleanup?"};
item26[] = {"nobody_around",4,218,50.000000,-50.000000,150.000000,0.000000,0.000000,"nobody" \n "around"};
item27[] = {"",7,210,-104.000023,396.000000,-95.999992,404.000000,0.000000,""};
item28[] = {"cant_see",4,218,-275.000000,450.000000,-175.000000,500.000000,2.000000,"cant" \n "see"};
item29[] = {"Finish_Move",2,250,-275.000000,525.000000,-175.000000,575.000000,0.000000,"Finish" \n "Move"};
@@ -35,34 +35,24 @@ item30[] = {"finished",4,218,-425.000000,525.000000,-325.000000,575.000000,1.000
item31[] = {"",7,210,-479.000000,546.000000,-471.000000,554.000000,0.000000,""};
item32[] = {"",7,210,-29.000002,546.000000,-20.999998,554.000000,0.000000,""};
item33[] = {"",7,210,-304.000000,146.000000,-296.000000,154.000000,0.000000,""};
item34[] = {"someone_here",4,218,300.000000,200.000000,400.000000,250.000000,0.000000,"someone" \n "here"};
item35[] = {"wait",2,250,300.000000,125.000000,400.000000,175.000000,0.000000,"wait"};
item36[] = {"time_up",4,218,300.000000,-25.000000,400.000000,25.000000,0.000000,"time" \n "up"};
item37[] = {"",7,210,346.000000,95.999992,354.000000,104.000000,0.000000,""};
item38[] = {"",7,210,221.000000,96.000008,229.000000,103.999977,0.000000,""};
item39[] = {"Time_Check",4,218,425.000000,125.000000,525.000000,175.000000,0.000000,"Time" \n "Check"};
item40[] = {"",7,210,346.000000,-79.000000,354.000000,-71.000000,0.000000,""};
item41[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""};
item42[] = {"too_long",4,218,-425.000000,600.000000,-325.000000,650.000000,0.000000,"too long"};
item43[] = {"",7,210,-229.000000,621.000000,-221.000000,629.000000,0.000000,""};
item44[] = {"",7,210,-479.000000,621.000000,-471.000000,629.000000,0.000000,""};
item45[] = {"Reset_Targeting",2,250,-525.000000,325.000000,-425.000000,375.000000,0.000000,"Reset" \n "Targeting"};
item46[] = {"No_target",4,218,-525.000000,250.000000,-425.000000,300.000000,0.000000,"No target"};
item47[] = {"deleted",4,218,425.000000,-25.000000,525.000000,25.000000,0.000000,"deleted"};
item48[] = {"",7,210,471.000000,-79.000000,479.000000,-71.000000,0.000000,""};
item49[] = {"",7,210,471.000000,95.999977,479.000000,104.000023,0.000000,""};
item50[] = {"",7,210,-104.000000,471.000000,-95.999992,479.000000,0.000000,""};
item51[] = {"player_check",4,218,-425.000000,0.000000,-325.000000,50.000000,0.000000,"player" \n "check"};
item52[] = {"is_Dedicated",4,218,50.000000,-250.000000,150.000000,-200.000000,5.000000,"is" \n "Dedicated"};
item34[] = {"someone_here",4,218,-75.000000,-50.000000,25.000000,0.000000,0.000000,"someone" \n "here"};
item35[] = {"too_long",4,218,-425.000000,600.000000,-325.000000,650.000000,0.000000,"too long"};
item36[] = {"",7,210,-229.000000,621.000000,-221.000000,629.000000,0.000000,""};
item37[] = {"",7,210,-479.000000,621.000000,-471.000000,629.000000,0.000000,""};
item38[] = {"Reset_Targeting",2,250,-525.000000,325.000000,-425.000000,375.000000,0.000000,"Reset" \n "Targeting"};
item39[] = {"No_target",4,218,-525.000000,250.000000,-425.000000,300.000000,0.000000,"No target"};
item40[] = {"",7,210,-104.000000,471.000000,-95.999992,479.000000,0.000000,""};
item41[] = {"player_check",4,218,-425.000000,0.000000,-325.000000,50.000000,0.000000,"player" \n "check"};
item42[] = {"is_Dedicated",4,218,-125.000000,-250.000000,-25.000000,-200.000000,5.000000,"is" \n "Dedicated"};
link0[] = {0,9};
link1[] = {0,52};
link1[] = {0,42};
link2[] = {2,23};
link3[] = {3,24};
link4[] = {4,5};
link5[] = {5,6};
link6[] = {5,12};
link7[] = {5,18};
link8[] = {5,51};
link8[] = {5,41};
link9[] = {6,5};
link10[] = {7,2};
link11[] = {7,8};
@@ -82,48 +72,35 @@ link24[] = {17,13};
link25[] = {18,5};
link26[] = {19,14};
link27[] = {20,21};
link28[] = {21,45};
link28[] = {21,38};
link29[] = {22,33};
link30[] = {23,25};
link31[] = {24,23};
link32[] = {25,34};
link33[] = {25,38};
link34[] = {26,41};
link32[] = {25,26};
link33[] = {25,34};
link34[] = {26,1};
link35[] = {27,20};
link36[] = {27,50};
link36[] = {27,40};
link37[] = {28,29};
link38[] = {29,30};
link39[] = {29,32};
link40[] = {29,43};
link40[] = {29,36};
link41[] = {30,31};
link42[] = {31,21};
link43[] = {32,8};
link44[] = {33,5};
link45[] = {34,35};
link45[] = {34,5};
link46[] = {35,37};
link47[] = {35,39};
link48[] = {36,40};
link49[] = {37,36};
link50[] = {37,38};
link51[] = {37,49};
link52[] = {38,26};
link53[] = {39,35};
link54[] = {40,41};
link55[] = {41,1};
link56[] = {42,44};
link57[] = {43,42};
link58[] = {44,31};
link59[] = {45,17};
link60[] = {45,46};
link61[] = {46,22};
link62[] = {47,48};
link63[] = {48,40};
link64[] = {49,47};
link65[] = {50,28};
link66[] = {51,5};
link67[] = {52,1};
globals[] = {25.000000,1,0,0,0,640,480,1,99,6316128,1,-558.318542,127.785744,597.327209,-38.360462,626,580,1};
window[] = {0,-1,-1,-1,-1,755,44,1252,44,1,643};
link47[] = {36,35};
link48[] = {37,31};
link49[] = {38,17};
link50[] = {38,39};
link51[] = {39,22};
link52[] = {40,28};
link53[] = {41,5};
link54[] = {42,1};
globals[] = {25.000000,1,0,0,0,640,480,1,101,6316128,1,-671.713867,363.212036,624.148865,-248.208023,713,601,1};
window[] = {2,-1,-1,-32000,-32000,777,66,1274,66,3,730};
*//*%FSM</HEAD>*/
class FSM
{
@@ -249,9 +226,6 @@ class FSM
"if (!_hasMoved) then {" \n
" _agent setVariable[""doLoiter"",true,true];" \n
"};" \n
"if (!moveToCompleted _agent) then {" \n
" _agent moveTo (position _agent);" \n
"};" \n
"" \n
"//Enable combat timer." \n
"_target setVariable[""startcombattimer"", 1, true];" \n
@@ -358,6 +332,7 @@ class FSM
{
name = "Chase";
init = /*%FSM<STATEINIT""">*/"_timeN = time;" \n
"_vehicle = (getPosATL vehicle player);" \n
"" \n
"if (speed _agent < 0.1) then {_countr = _countr + 1} else {_countr = 0};" \n
"_target = _agent call zombie_findTargetAgent;" \n
@@ -365,14 +340,24 @@ class FSM
"_targetPos = getPosATL _target;" \n
"" \n
"//Move to target" \n
"_agent moveTo _targetPos;" \n
"_agent forceSpeed 7;" \n
"if (vehicle player == player) then {" \n
" _agent moveTo _targetPos;" \n
" _agent forceSpeed 6;" \n
"} else {" \n
" _agent moveTo _vehicle;" \n
" _agent forceSpeed 6;" \n
"};" \n
"" \n
"//Check if LOS" \n
"if (_losCheck == 2) then {" \n
" _losCheck = 0;" \n
"" \n
"if (_agent distance player <= 100) then {" \n
" _cantSee = [_agent,_target] call dayz_losCheck;" \n
"};" \n
"" \n
"//Check if LOS" \n
"//if (_losCheck == 2) then {" \n
"// _losCheck = 0;" \n
"//_cantSee = [_agent,_target] call dayz_losCheck;" \n
"//};" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
@@ -434,13 +419,23 @@ class FSM
class Cleanup_
{
name = "Cleanup_";
init = /*%FSM<STATEINIT""">*/"_waitStart = time;" \n
init = /*%FSM<STATEINIT""">*/"_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],400];" \n
"_isSomeone = ({isPlayer _x} count _list) > 0;" \n
"" \n
"_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],400];" \n
"_isSomeone = ({isPlayer _x} count _list) > 0;"/*%FSM</STATEINIT""">*/;
"_waitStart = time;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "someone_here">*/
class someone_here
{
priority = 0.000000;
to="Loiter";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"_isSomeone"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "nobody_around">*/
class nobody_around
{
@@ -451,16 +446,6 @@ class FSM
action=/*%FSM<ACTION""">*/"dayz_spawnZombies = dayz_spawnZombies - 1;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "someone_here">*/
class someone_here
{
priority = 0.000000;
to="wait";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"_isSomeone"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
@@ -508,60 +493,6 @@ class FSM
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "wait">*/
class wait
{
name = "wait";
init = /*%FSM<STATEINIT""">*/"_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n
"_isSomeone = ({isPlayer _x} count _list) > 0;" \n
"" \n
"_timeN = time;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "time_up">*/
class time_up
{
priority = 0.000000;
to="End";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(time - _waitStart) > 300"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "nobody_around">*/
class nobody_around
{
priority = 0.000000;
to="End";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"dayz_spawnZombies = dayz_spawnZombies - 1;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "deleted">*/
class deleted
{
priority = 0.000000;
to="End";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"isNull _agent;"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "Time_Check">*/
class Time_Check
{
priority = 0.000000;
to="wait";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"(time - _timeN) > 30"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Reset_Targeting">*/
class Reset_Targeting
{
@@ -595,9 +526,6 @@ class FSM
"if (!_hasMoved) then {" \n
" _agent setVariable[""doLoiter"",true,true];" \n
"};" \n
"if (!moveToCompleted _agent) then {" \n
" _agent moveTo (position _agent);" \n
"};" \n
"" \n
"//Enable combat timer." \n
"_target setVariable[""startcombattimer"", 1, true];" \n

View File

@@ -8,7 +8,7 @@ _class = _this select 3;
if (!(_object isKindOf "Building")) exitWith {
deleteVehicle _object;
};
_allowed = [_object] call check_publishobject;
_allowed = [_object, "Server"] call check_publishobject;
if (!_allowed) exitWith { };
@@ -24,6 +24,10 @@ _key call server_hiveWrite;
_object setVariable ["ObjectUID", _uid,true];
if (_object isKindOf "TentStorage") then {
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
};
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
//diag_log ("PUBLISH: Created " + (_class) + " with ID " + _uid);

View File

@@ -52,17 +52,6 @@ while {true} do {
diag_log(format["CRASHSPAWNER: Spawning '%1' with loot table '%2' NOW! (%3) at: %4", _crashName, _lootTable, time, str(_position)]);
_crash = createVehicle [_crashModel,_position, [], 0, "CAN_COLLIDE"];
deleteMarker "Secure Helicopter Wreck";
///Add crash site markers
_crashmarker = createMarker["Secure Helicopter Wreck",_position];
_crashmarker setMarkerColor "ColorRed";
_crashmarker setMarkerType "Flag";
//_crashmarker setMarkerShape "ELLIPSE";
//_crashmarker setMarkerBrush "Grid";
_crashmarker setMarkerText "Secure Helicopter";
_crashmarker setMarkerSize [1, 1];
// Randomize the direction the wreck is facing
_crash setDir round(random 360);

View File

@@ -89,6 +89,47 @@ _object_damage = {
_key call server_hiveWrite;
_object setVariable ["needUpdate",false,true];
};
_object_killed = {
private["_hitpoints","_array","_hit","_selection","_key","_damage"];
_hitpoints = _object call vehicle_getHitpoints;
_damage = damage _object;
_array = [];
{
_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]]};
_hit = 1;
_object setHit ["_selection", _hit]
} forEach _hitpoints;
_damage = 1;
if (_objectID == "0") then {
_key = format["CHILD:306:%1:%2:%3:",_uid,_array,_damage];
} else {
_key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
};
diag_log ("HIVE: WRITE: "+ str(_key));
_key call server_hiveWrite;
_object setVariable ["needUpdate",false,true];
};
_object_repair = {
private["_hitpoints","_array","_hit","_selection","_key","_damage"];
_hitpoints = _object call vehicle_getHitpoints;
_damage = damage _object;
_array = [];
{
_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));
_key call server_hiveWrite;
_object setVariable ["needUpdate",false,true];
};
// TODO ----------------------
_object setVariable ["lastUpdate",time,true];
@@ -105,15 +146,18 @@ switch (_type) do {
call _object_inventory;
};
case "damage": {
if ( (time - _lastUpdate) > 5 && !_needUpdate ) then {
diag_log ("Damaged Called");
if ( (time - _lastUpdate) > 5) then {
call _object_damage;
} else {
if ( !_needUpdate ) then {
diag_log format["DEBUG: Added to NeedUpdate=%1",_object];
needUpdate_objects set [count needUpdate_objects, _object];
};
};
case "killed": {
call _object_killed;
};
case "repair": {
call _object_damage;
call _object_repair;
};
};

View File

@@ -30,25 +30,36 @@ server_spawnCrashSite = compile preprocessFileLineNumbers "\z\addons\dayz_se
vehicle_handleInteract = {
private["_object"];
_object = _this select 0;
needUpdate_objects = needUpdate_objects - [_object];
[_object, "all"] call server_updateObject;
};
vehicle_handleServerKilled = {
private["_unit","_killer"];
_unit = _this select 0;
_killer = _this select 1;
[_unit, "killed"] call server_updateObject;
_unit removeAllMPEventHandlers "MPKilled";
_unit removeAllEventHandlers "Killed";
_unit removeAllEventHandlers "HandleDamage";
_unit removeAllEventHandlers "GetIn";
_unit removeAllEventHandlers "GetOut";
};
check_publishobject = {
private["_allowed","_allowedObjects","_object"];
_object = _this select 0;
_playername = _this select 1;
_allowedObjects = ["TentStorage", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Wire_cat1"];
_noncombatitems = ["ThrownObjects", "RoadFlare", "ChemLight"];
_allowed = false;
_allowed = false;
diag_log format ["DEBUG: Checking if Object: %1 is allowed", _object];
diag_log format ["DEBUG: Checking if Object: %1 is allowed published by %2", _object, _playername];
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];
diag_log format ["DEBUG: Object: %1 published by %2 is Safe",_object, _playername];
_allowed = true;
};

View File

@@ -1,11 +1,11 @@
/*%FSM<COMPILE "scriptedFSM.cfg, DayZ Server Cleanup">*/
/*%FSM<COMPILE "F:\DayZ\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Server Cleanup">*/
/*%FSM<HEAD>*/
/*
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[] = {"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"};
item4[] = {"cleanup_dead",2,4346,-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"};
@@ -19,7 +19,7 @@ item14[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.00000
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"};
item18[] = {"check_for_hacker",2,250,150.000000,-175.000000,250.000000,-125.000000,0.000000,"check for" \n "hackers"};
link0[] = {0,13};
link1[] = {1,2};
link2[] = {2,3};
@@ -43,8 +43,8 @@ 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};
globals[] = {25.000000,1,0,0,0,640,480,1,33,6316128,1,-389.695160,324.496887,564.215637,-260.262604,803,927,1};
window[] = {2,-1,-1,-1,-1,995,88,1202,88,3,820};
*//*%FSM</HEAD>*/
class FSM
{
@@ -144,77 +144,48 @@ class FSM
" diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n
" diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n
"" \n
" //Cleanup zed's & players" \n
"" \n
" _delQtyZ = 0; " \n
" _numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n
" _delQtyP = 0;" \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
" _pos = getPosATL _x;" \n
" _sfx = nearestObject [_pos,""Sound_Flies""];" \n
" if (!(isNull _sfx)) then {" \n
" deleteVehicle _sfx;" \n
" };" \n
" deleteVehicle _x;" \n
" _delQtyP = _delQtyP + 1;" \n
" };" \n
" };" \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
" };" \n
" deleteVehicle _body;" \n
" _delQtyP = _delQtyP + 1;" \n
" //Check Flies" \n
" _dwUSOFC=0;" \n
" {" \n
" if (local _x) then {" \n
" deleteVehicle _x;" \n
" _dwUSOFC=_dwUSOFC+1;" \n
" };" \n
" _deadBodies set [_i,""DEL""];" \n
" diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n
" } forEach allMissionObjects ""Sound_Flies"";" \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
" //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
" _deadBodies = _deadBodies - [""DEL""];" \n
" //clean fireplaces" \n
" _dwUFPC=0;" \n
" {" \n
" if (local _x) then {" \n
" deleteVehicle _x;" \n
" _dwUFPC=_dwUFPC+1;" \n
" };" \n
" diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n
" } forEach allMissionObjects ""Land_Fire_DZ"";" \n
"" \n
" diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n
"" \n
"};" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
@@ -246,7 +217,7 @@ class FSM
" 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 = count (_x nearEntities [AllPlayers, 100]);" \n
" if ( (!_keep) && (_nearby==0) ) then {" \n
" deleteVehicle _x;" \n
" _delQty = _delQty + 1;" \n

View File

@@ -53,6 +53,11 @@ diag_log "HIVE: Starting";
_ownerID = _x select 3;
_worldspace = _x select 4;
_intentory= _x select 5;
_hitPoints= _x select 6;
_fuel = _x select 7;
_damage = _x select 8;
_dir = 0;
_pos = [0,0,0];
_wsDone = false;
@@ -71,11 +76,6 @@ diag_log "HIVE: Starting";
diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
};
_intentory= _x select 5;
_hitPoints= _x select 6;
_fuel = _x select 7;
_damage = _x select 8;
if (_damage < 1) then {
diag_log format["OBJ: %1 - %2", _idKey,_type];
@@ -88,7 +88,11 @@ diag_log "HIVE: Starting";
clearWeaponCargoGlobal _object;
clearMagazineCargoGlobal _object;
_object setpos _pos;
if (_object isKindOf "TentStorage") then {
_pos set [2,0];
_object setpos _pos;
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
};
_object setdir _dir;
_object setDamage _damage;
@@ -157,11 +161,7 @@ diag_log "HIVE: Starting";
} forEach _hitpoints;
_object setvelocity [0,0,1];
_object setFuel _fuel;
if (getDammage _object == 1) then {
_position = ([(getPosATL _object),0,100,10,0,500,0] call BIS_fnc_findSafePos);
_object setPosATL _position;
};
if(_ownerID != "0") then {
_object setvehiclelock "locked";
};