1.0.1.8 DEV TEST

This commit is contained in:
[VB]AWOL
2013-08-09 12:54:36 -05:00
parent 461168b6d2
commit 1c889add2b
15 changed files with 384 additions and 123 deletions

View File

@@ -1654,7 +1654,7 @@ class CfgMagazines {
neednearby[] = {"sawmil"}; neednearby[] = {"sawmil"};
requiretools[] = {"ItemToolbox"}; requiretools[] = {"ItemToolbox"};
output[] = {{"bulk_empty",1}}; output[] = {{"bulk_empty",1}};
input[] = {{"PartWoodLumber",4},{"PartGeneric",1}}; input[] = {{"PartWoodLumber",2},{"PartGeneric",1}};
}; };
class Crafting2 class Crafting2
@@ -2819,8 +2819,25 @@ class CfgMagazines {
picture = "\z\addons\dayz_communityassets\pictures\equip_can_unlabeled_clean_full_ca.paa"; picture = "\z\addons\dayz_communityassets\pictures\equip_can_unlabeled_clean_full_ca.paa";
}; };
// new DZE harvested food
class FoodPumpkin : FoodEdible {
scope = public;
count = 1;
bloodRegen = 100;
displayName = "Pumkin";
descriptionShort = "Pumkin";
model = "z\addons\dayz_communityassets\models\pistachio.p3d"; // TODO: model + icon
picture = "\z\addons\dayz_communityassets\pictures\equip_pistachios_CA.paa";
};
class FoodSunFlowerSeed : FoodEdible {
scope = public;
count = 1;
bloodRegen = 100;
displayName = "Bag of Sunflower Seeds";
descriptionShort = "Bag of Sunflower Seeds";
model = "z\addons\dayz_communityassets\models\pistachio.p3d"; // TODO: model + icon
picture = "\z\addons\dayz_communityassets\pictures\equip_pistachios_CA.paa";
};
class TrashTinCan: HandGrenade class TrashTinCan: HandGrenade
{ {
@@ -2997,6 +3014,18 @@ class CfgMagazines {
type = 256; type = 256;
}; };
class ItemKiloHemp : CA_Magazine {
scope = public;
count = 1;
displayName = "Kilo of Hemp";
descriptionShort = "Kilo of Hemp";
model = "z\addons\dayz_communityassets\models\toiletpaper.p3d"; // TODO: model + icon
picture = "\z\addons\dayz_communityassets\pictures\equip_toiletpaper_CA.paa";
type = 256;
};
class 8Rnd_B_Beneli_74Slug; class 8Rnd_B_Beneli_74Slug;
class 8Rnd_B_Beneli_Pellets; class 8Rnd_B_Beneli_Pellets;

View File

@@ -20,6 +20,23 @@ class CfgWeapons {
class GrenadeLauncher; // External class reference class GrenadeLauncher; // External class reference
class DMR; // External class reference class DMR; // External class reference
class ItemKnife: ItemCore
{
scope = 2;
displayName = "$STR_EQUIP_NAME_4";
model = "\dayz_equip\models\knife_gear.p3d";
picture = "\dayz_equip\textures\equip_knife_ca.paa";
descriptionShort = "$STR_EQUIP_DESC_4";
class ItemActions
{
class Use
{
text="Harvest Plant";
script="spawn player_harvestPlant;";
};
};
};
#include "CfgWeapons\Loot.hpp" #include "CfgWeapons\Loot.hpp"

View File

@@ -5,12 +5,11 @@ TradeInprogress = true;
_isVehicle = false; _isVehicle = false;
_vehicleSrc = _this select 0; _vehicleSrc = _this select 3;
if(_vehicleSrc != objNull) then { if(!(isNull _vehicleSrc)) then {
_isVehicle = ((_vehicleSrc isKindOf "AllVehicles") and !(_vehicleSrc isKindOf "Man")); _isVehicle = ((_vehicleSrc isKindOf "AllVehicles") and !(_vehicleSrc isKindOf "Man"));
// If fuel source is vehicle get actual capacity // If fuel source is vehicle get actual capacity
_configSrcVeh = configFile >> "cfgVehicles" >> TypeOf(_vehicleSrc); _configSrcVeh = configFile >> "cfgVehicles" >> TypeOf(_vehicleSrc);
_capacitySrc = getNumber(_configVeh >> "fuelCapacity"); _capacitySrc = getNumber(_configVeh >> "fuelCapacity");
@@ -21,7 +20,8 @@ if(_vehicleSrc != objNull) then {
_findNearestVehicles = nearestObjects [player, ["AllVehicles"], 30]; _findNearestVehicles = nearestObjects [player, ["AllVehicles"], 30];
_findNearestVehicle = []; _findNearestVehicle = [];
{ {
if (alive _x and _vehicleSrc != _x and !(_x isKindOf "Man")) then { //diag_log ("FILL = " + str(_x) + " = " + str(_vehicleSrc));
if (alive _x and !(_x == _vehicleSrc) and !(_x isKindOf "Man")) exitWith {
_findNearestVehicle set [(count _findNearestVehicle),_x]; _findNearestVehicle set [(count _findNearestVehicle),_x];
}; };
} foreach _findNearestVehicles; } foreach _findNearestVehicles;

View File

@@ -27,6 +27,7 @@ _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >>
_classnametmp = _classname; _classnametmp = _classname;
_require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); _require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require");
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");
_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
@@ -150,7 +151,7 @@ if (_hasrequireditem) then {
hintSilent str (_position); hintSilent str (_position);
// if ghost preview available use that instead // if ghost preview available use that instead
_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");
if (_ghost == "") then { if (_ghost == "") then {
_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
} else { } else {

View File

@@ -20,20 +20,7 @@ _findNearestTree = [];
if (alive _x) then { if (alive _x) then {
_objInfo = toArray(str(_x)); _objName = _x call DZE_getModelName;
_lenInfo = count _objInfo - 1;
_objName = [];
_i = 0;
// determine where the object name starts
{
if (58 == _objInfo select _i) exitWith {};
_i = _i + 1;
} forEach _objInfo;
_i = _i + 2; // skip the ": " part
for "_k" from _i to _lenInfo do {
_objName = _objName + [_objInfo select _k];
};
_objName = toLower(toString(_objName));
// Exit since we found a tree // Exit since we found a tree
if (_objName in _trees) exitWith { if (_objName in _trees) exitWith {

View File

@@ -0,0 +1,122 @@
/*
DayZ Harvest Plant
Usage: spawn player_harvestPlant;
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_isOk","_i","_objName","_objInfo","_lenInfo","_started","_finished","_animState","_isMedic","_proceed","_counter","_itemOut","_countOut","_tree","_distance2d","_distance3d","_trees","_findNearestTree"];
if(TradeInprogress) exitWith { cutText ["Harvest already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
// allowed trees list move this later
_trees = ["pumpkin.p3d","p_helianthus.p3d","p_fiberplant_ep1.p3d"];
_treesOutput = ["FoodPumpkin","FoodSunFlowerSeed","ItemKiloHemp"];
//_item = _this;
call gear_ui_init;
_countOut = 0;
_findNearestTree = [];
{
if("" == typeOf _x) then {
if (alive _x) then {
_objName = _x call DZE_getModelName;
// Exit since we found a tree
if (_objName in _trees) exitWith {
_findNearestTree set [(count _findNearestTree),_x];
_index = _trees find _objName;
_itemOut = _treesOutput select _index;
_countOut = 1;
};
};
};
} foreach nearestObjects [getPos player, [], 20];
//diag_log format["DEBUG TREES: %1", _findNearestTree];
if (count(_findNearestTree) >= 1) then {
_tree = _findNearestTree select 0;
// Start chop tree loop
_isOk = true;
_proceed = false;
while {_isOk} do {
player playActionNow "Medic";
[player,20,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
[player,"chopwood",0,false] call dayz_zombieSpeak;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
if(!_finished) exitWith {
_isOk = false;
_proceed = false;
};
if(_finished) exitWith {
_isOk = false;
_proceed = true;
};
};
if (_proceed) then {
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
// chop down tree
if("" == typeOf _tree) then {
_tree setDamage 1;
};
//diag_log format["DEBUG TREE DAMAGE: %1", _tree];
cutText [format["%1 of %2 has been successfully added to your inventory.", _countOut,_itemOut], "PLAIN DOWN"];
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["Canceled Harvesting.", "PLAIN DOWN"];
};
} else {
cutText [localize "str_player_23", "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -17,7 +17,7 @@ hintSilent parseText format ["
(player getVariable['humanKills', 0]), (player getVariable['humanKills', 0]),
(player getVariable['banditKills', 0]), (player getVariable['banditKills', 0]),
(player getVariable['humanity', 0]), (player getVariable['humanity', 0]),
(dayz_skilllevel) (dayz_Survived)
]; ];
/* /*

View File

@@ -39,7 +39,7 @@ if(_removed == _countIn) then {
_textRemoved = getText(configFile >> "CfgMagazines" >> _selected >> "displayName"); _textRemoved = getText(configFile >> "CfgMagazines" >> _selected >> "displayName");
// add failure rate based on skill level variable (days alive) // add failure rate based on skill level variable (days alive)
_chanceToFail = (((random 1) + (dayz_skilllevel/100)) > 0.5); _chanceToFail = (((random 1) + (dayz_Survived/100)) > 0.5);
if(!_chanceToFail) then { if(!_chanceToFail) then {

View File

@@ -3,6 +3,9 @@ private ["_vehicle","_started","_finished","_animState","_isMedic","_abort","_co
if(TradeInprogress) exitWith { cutText ["Already in progress." , "PLAIN DOWN"] }; if(TradeInprogress) exitWith { cutText ["Already in progress." , "PLAIN DOWN"] };
TradeInprogress = true; TradeInprogress = true;
player removeAction s_player_towing;
s_player_towing = 1;
// Tow Truck // Tow Truck
_towTruck = _this select 3; _towTruck = _this select 3;
_towTruckSize = (sizeOf typeOf _towTruck); _towTruckSize = (sizeOf typeOf _towTruck);
@@ -10,7 +13,7 @@ _towTruckSize = (sizeOf typeOf _towTruck);
_allowedSize = _towTruckSize-(_towTruckSize/3); _allowedSize = _towTruckSize-(_towTruckSize/3);
// Get all nearby vehicles within 10m // Get all nearby vehicles within 10m
_findNearestVehicles = nearestObjects [_towTruck, ["Car"], 10]; _findNearestVehicles = nearestObjects [_towTruck, ["Car","Motorcycle"], 10];
_findNearestVehicle = []; _findNearestVehicle = [];
{ {
if (alive _x and _towTruck != _x and (sizeOf typeOf _x) <= _allowedSize) then { if (alive _x and _towTruck != _x and (sizeOf typeOf _x) <= _allowedSize) then {
@@ -92,4 +95,5 @@ if(_IsNearVehicle >= 1) then {
} else { } else {
cutText ["No Vehicles Nearby.", "PLAIN DOWN"]; cutText ["No Vehicles Nearby.", "PLAIN DOWN"];
}; };
TradeInprogress = false; TradeInprogress = false;
s_player_towing = -1;

View File

@@ -3,6 +3,9 @@ private ["_vehicle","_started","_finished","_animState","_isMedic","_configVeh",
if(TradeInprogress) exitWith { cutText ["Already in progress." , "PLAIN DOWN"] }; if(TradeInprogress) exitWith { cutText ["Already in progress." , "PLAIN DOWN"] };
TradeInprogress = true; TradeInprogress = true;
player removeAction s_player_towing;
s_player_towing = 1;
// Tow Truck // Tow Truck
_towTruck = _this select 3; _towTruck = _this select 3;
@@ -11,61 +14,67 @@ _inTow = _towTruck getVariable ["DZEinTow", false];
if(_inTow) then { if(_inTow) then {
// select the nearest one // select vehicl in tow
_vehicle = _towTruck getVariable ["DZEvehicleInTow", false]; _vehicle = _towTruck getVariable ["DZEvehicleInTow", objNull];
// Static vehicle fuel information if(!(isNull _towTruck)) then {
_configVeh = configFile >> "cfgVehicles" >> TypeOf(_vehicle);
_nameText = getText(_configVeh >> "displayName");
// alert zombies // Static vehicle fuel information
[player,20,true,(getPosATL player)] spawn player_alertZombies; _configVeh = configFile >> "cfgVehicles" >> TypeOf(_vehicle);
_nameText = getText(_configVeh >> "displayName");
_finished = false; // alert zombies
[player,20,true,(getPosATL player)] spawn player_alertZombies;
// force animation _finished = false;
player playActionNow "Medic";
r_interrupt = false; // force animation
_animState = animationState player; player playActionNow "Medic";
r_doLoop = true;
_started = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if(!_finished) then {
r_interrupt = false; r_interrupt = false;
_animState = animationState player;
if (vehicle player == player) then { r_doLoop = true;
[objNull, player, rSwitchMove,""] call RE; _started = false;
player playActionNow "stop";
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
}; };
}; r_doLoop = false;
if (_finished) then { if(!_finished) then {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
};
if (_finished) then {
detach _vehicle; detach _vehicle;
_towTruck setVariable ["DZEinTow", false, true];
_towTruck setVariable ["DZEvehicleInTow", objNull, true];
cutText [format["%1 has been detached from Tow Truck.",_nameText], "PLAIN DOWN"];
};
} else {
_towTruck setVariable ["DZEinTow", false, true]; _towTruck setVariable ["DZEinTow", false, true];
_towTruck setVariable ["DZEvehicleInTow", objNull, true]; _towTruck setVariable ["DZEvehicleInTow", objNull, true];
cutText [format["%1 has been detached from Tow Truck.",_nameText], "PLAIN DOWN"];
}; };
} else { } else {
cutText ["No Vehicles In Tow.", "PLAIN DOWN"]; cutText ["No Vehicles In Tow.", "PLAIN DOWN"];
}; };
TradeInprogress = false; TradeInprogress = false;
s_player_towing = -1;

View File

@@ -90,6 +90,7 @@ if (!isDedicated) then {
player_fillWater = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\water_fill.sqf"; player_fillWater = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\water_fill.sqf";
player_makeFire = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_makefire.sqf"; player_makeFire = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_makefire.sqf";
player_chopWood = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_chopWood.sqf"; player_chopWood = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_chopWood.sqf";
player_harvestPlant = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_harvestPlant.sqf";
player_goFishing = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_goFishing.sqf"; player_goFishing = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_goFishing.sqf";
player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf"; player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf";
player_wearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_wearClothes.sqf"; player_wearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_wearClothes.sqf";
@@ -411,6 +412,24 @@ if (!isDedicated) then {
if (_vdir < 0) then {_vdir = 360 + _vdir}; if (_vdir < 0) then {_vdir = 360 + _vdir};
_vdir _vdir
}; };
DZE_getModelName = {
_objInfo = toArray(str(_this));
_lenInfo = count _objInfo - 1;
_objName = [];
_i = 0;
// determine where the object name starts
{
if (58 == _objInfo select _i) exitWith {};
_i = _i + 1;
} forEach _objInfo;
_i = _i + 2; // skip the ": " part
for "_k" from _i to _lenInfo do {
_objName = _objName + [_objInfo select _k];
};
_objName = toLower(toString(_objName));
_objName
};
dayz_originalPlayer = player; dayz_originalPlayer = player;
}; };

View File

@@ -161,6 +161,17 @@ while {true} do {
r_player_blood = _result; r_player_blood = _result;
}; };
}; };
if (_foodVal >= 0.9 and _thirstVal >= 0.9) then {
if (!r_player_infected and !r_player_inpain and !r_player_injured) then {
_result = r_player_blood + 10;
if (_result >= r_player_bloodTotal) then {
r_player_blood = r_player_bloodTotal;
} else {
r_player_blood = _result;
};
};
};
//Record low blood //Record low blood
_lowBlood = player getVariable ["USEC_lowBlood", false]; _lowBlood = player getVariable ["USEC_lowBlood", false];

View File

@@ -258,9 +258,7 @@ _playerObj setVariable["friendlies",_friendlies,true];
dayzPlayerLogin2 = [_worldspace,_state]; dayzPlayerLogin2 = [_worldspace,_state];
_clientID = owner _playerObj; _clientID = owner _playerObj;
if(!isNull _playerObj) then { _clientID publicVariableClient "dayzPlayerLogin2";
_clientID publicVariableClient "dayzPlayerLogin2";
};
//record time started //record time started
_playerObj setVariable ["lastTime",time]; _playerObj setVariable ["lastTime",time];

View File

@@ -7,36 +7,46 @@ item2[] = {"waiting",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,
item3[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"}; item3[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"};
item4[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"}; item4[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"};
item5[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"}; item5[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"};
item6[] = {"general_cleanup",2,4346,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup"}; item6[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup" \n "loop"};
item7[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""}; item7[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""};
item8[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""}; item8[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""};
item9[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; item9[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""};
item10[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""}; item10[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""};
item11[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; item11[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"};
item12[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; item12[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"};
item13[] = {"update_objects",2,250,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"}; item13[] = {"update_objects",2,4346,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"};
item14[] = {"need_update",4,218,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"}; item14[] = {"need_update",4,218,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"};
item15[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; item15[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""};
item16[] = {"cleanup_groups",4,218,-150.000000,-25.000000,-50.000000,25.000000,1.000000,"cleanup" \n "groups"};
item17[] = {"group_cleanup",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"group" \n "cleanup"};
item18[] = {"cleanup_vehicles",4,218,-25.000000,-25.000000,75.000000,25.000000,1.000000,"cleanup" \n "vehicles"};
item19[] = {"vehicle_cleanup",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"vehicle" \n "cleanup"};
link0[] = {0,11}; link0[] = {0,11};
link1[] = {1,2}; link1[] = {1,2};
link2[] = {2,3}; link2[] = {2,3};
link3[] = {2,9}; link3[] = {2,9};
link4[] = {2,14}; link4[] = {2,14};
link5[] = {3,4}; link5[] = {2,16};
link6[] = {4,5}; link6[] = {2,18};
link7[] = {5,6}; link7[] = {3,4};
link8[] = {6,7}; link8[] = {4,5};
link9[] = {7,8}; link9[] = {5,6};
link10[] = {8,1}; link10[] = {6,7};
link11[] = {9,10}; link11[] = {7,8};
link12[] = {9,15}; link12[] = {8,1};
link13[] = {10,5}; link13[] = {9,10};
link14[] = {11,12}; link14[] = {9,15};
link15[] = {12,1}; link15[] = {10,5};
link16[] = {13,5}; link16[] = {11,12};
link17[] = {14,13}; link17[] = {12,1};
globals[] = {25.000000,1,0,0,0,640,480,1,25,6316128,1,-419.782135,377.473389,303.547668,-419.297363,675,612,1}; link18[] = {13,5};
window[] = {0,-1,-1,-1,-1,900,1933,3211,142,1,693}; link19[] = {14,13};
link20[] = {16,17};
link21[] = {17,5};
link22[] = {18,19};
link23[] = {19,5};
globals[] = {25.000000,1,0,0,0,640,480,1,30,6316128,1,-419.782135,377.473389,510.243530,-212.601486,675,612,1};
window[] = {0,-1,-1,-1,-1,888,130,1408,130,1,693};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@@ -80,7 +90,27 @@ class FSM
to="update_objects"; to="update_objects";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"( (count needUpdate_objects) > 0 && (diag_tickTime -_lastNeedUpdate>40) )"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"( (count needUpdate_objects) > 0 && (diag_tickTime -_lastNeedUpdate>40) )"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"_lastNeedUpdate = time;"/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/"_lastNeedUpdate = diag_tickTime;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "cleanup_groups">*/
class cleanup_groups
{
priority = 1.000000;
to="group_cleanup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _lastCleanupGroups) > 10)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"_lastCleanupGroups = diag_tickTime;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
/*%FSM<LINK "cleanup_vehicles">*/
class cleanup_vehicles
{
priority = 1.000000;
to="vehicle_cleanup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _lastCleanupVehicles) > 5)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"_lastCleanupVehicles = diag_tickTime;"/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
/*%FSM<LINK "time_sync">*/ /*%FSM<LINK "time_sync">*/
@@ -90,7 +120,7 @@ class FSM
to="sync_the_time"; to="sync_the_time";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _lastUpdate) > 300)"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _lastUpdate) > 300)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"_lastUpdate = time;"/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/"_lastUpdate = diag_tickTime;"/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
/*%FSM<LINK "true">*/ /*%FSM<LINK "true">*/
@@ -111,7 +141,6 @@ class FSM
{ {
name = "sync_the_time"; name = "sync_the_time";
init = /*%FSM<STATEINIT""">*/"//Send request" \n init = /*%FSM<STATEINIT""">*/"//Send request" \n
"_lastUpdate = diag_tickTime;" \n
"_key = ""CHILD:307:"";" \n "_key = ""CHILD:307:"";" \n
"_result = _key call server_hiveReadWrite;" \n "_result = _key call server_hiveReadWrite;" \n
"_outcome = _result select 0;" \n "_outcome = _result select 0;" \n
@@ -156,32 +185,7 @@ class FSM
class general_cleanup class general_cleanup
{ {
name = "general_cleanup"; name = "general_cleanup";
init = /*%FSM<STATEINIT""">*/"if ((diag_tickTime - _lastCleanup) > 2) then {" \n init = /*%FSM<STATEINIT""">*/"//diag_log ""CLEANUP: Starting loop for next task"";"/*%FSM</STATEINIT""">*/;
" " \n
" _safety = dayz_serverObjectMonitor;" \n
"" \n
" //Clean groups" \n
" {" \n
" diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n
" if (count units _x==0) then {" \n
" deleteGroup _x;" \n
" diag_log (""CLEANUP: DELETING A GROUP"");" \n
" };" \n
" } forEach allGroups;" \n
"" \n
" //Check for hackers" \n
" {" \n
" if(vehicle _x != _x && !(vehicle _x in _safety) && (isPlayer _x) && (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
" dayz_serverObjectMonitor = _safety;" \n
"" \n
" _lastCleanup = diag_tickTime;" \n
"};"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
@@ -209,7 +213,8 @@ class FSM
"" \n "" \n
"_lastUpdate = diag_tickTime;" \n "_lastUpdate = diag_tickTime;" \n
"_lastNeedUpdate = diag_tickTime;" \n "_lastNeedUpdate = diag_tickTime;" \n
"_lastCleanup = diag_tickTime;" \n "_lastCleanupVehicles = diag_tickTime;" \n
"_lastCleanupGroups = diag_tickTime;" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
@@ -233,12 +238,71 @@ class FSM
name = "update_objects"; name = "update_objects";
init = /*%FSM<STATEINIT""">*/"//diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n init = /*%FSM<STATEINIT""">*/"//diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n
"{" \n "{" \n
"// _x setVariable [""needUpdate"",false,true];" \n
" needUpdate_objects = needUpdate_objects - [_x];" \n " needUpdate_objects = needUpdate_objects - [_x];" \n
" [_x,""all""] call server_updateObject;" \n " [_x,""all""] call server_updateObject;" \n
"" \n "" \n
"} forEach needUpdate_objects;" \n "} forEach needUpdate_objects;"/*%FSM</STATEINIT""">*/;
"_lastNeedUpdate = diag_tickTime;"/*%FSM</STATEINIT""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="general_cleanup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "group_cleanup">*/
class group_cleanup
{
name = "group_cleanup";
init = /*%FSM<STATEINIT""">*/"//Clean groups" \n
"{" \n
" // diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n
" if (count units _x==0) then {" \n
" deleteGroup _x;" \n
" diag_log (""CLEANUP: DELETING A GROUP"");" \n
" };" \n
"} forEach allGroups;" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="general_cleanup";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "vehicle_cleanup">*/
class vehicle_cleanup
{
name = "vehicle_cleanup";
init = /*%FSM<STATEINIT""">*/"_safety = dayz_serverObjectMonitor;" \n
"" \n
"//Check for hackers" \n
" {" \n
" if(vehicle _x != _x && !(vehicle _x in _safety) && (isPlayer _x) && (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
"dayz_serverObjectMonitor = _safety;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {

View File

@@ -66,7 +66,7 @@ if (isServer and isNil "sm_done") then {
diag_log "HIVE: trying to get objects"; diag_log "HIVE: trying to get objects";
_key = format["CHILD:302:%1:", dayZ_instance]; _key = format["CHILD:302:%1:", dayZ_instance];
_hiveResponse = _key call server_hiveReadWrite; _hiveResponse = _key call server_hiveReadWrite;
if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")}) || {(_hiveResponse select 1 > 2000)}) then { if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then {
diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse)); diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse));
_hiveResponse = ["",0]; _hiveResponse = ["",0];
} }