Merge pull request #661 from EpochModTeam/experimental

0.4 b655
This commit is contained in:
vbawol 2016-11-14 10:50:43 -06:00 committed by GitHub
commit ed29f4486d
111 changed files with 350 additions and 54245 deletions

View File

@ -15,4 +15,4 @@ http://www.bistudio.com/community/licenses/arma-public-license-share-alike
Credits:
=====
https://github.com/EpochModTeam/Epoch/blob/master/CREDITS.md
https://github.com/EpochModTeam/Epoch/blob/release/CREDITS.md

View File

@ -1,5 +1,7 @@
// Anti Hack
antihack_Enabled = true; // built-in Anti-Hack
antihack_maxTravelDistance = 30; // anti-teleport max travel distance
antihack_TPcenterDistance = 30; // anti-teleport distance from start
antihack_cfgPatchesCheck = true; // cfgPatches (AddOn Check)
antihack_PVSPrefix = "EPAH_"; // used to help whitelist pveh variables in BE without BEC and watchdog, leave blank to use no prefix.
antihack_cfgPatchesMode[] = {2}; // 0 == BAN - 1 = LOG, 2 = KICK

View File

@ -15,4 +15,4 @@ http://www.bistudio.com/community/licenses/arma-public-license-share-alike
Credits:
=====
https://github.com/EpochModTeam/Epoch/blob/master/CREDITS.md
https://github.com/EpochModTeam/Epoch/blob/release/CREDITS.md

View File

@ -1 +1 @@
5 "" !="(V|H)_(F|)[0-9]{1,3}_EPOCH" !="Item(Map|GPS|Compass|Watch)" !="EpochRadio[0-9]" !="B_UavTerminal" !="(U|G|bipod|acc|muzzle|optic)_[0-9A-Z_]{1,100}" !="(NVG|Defib|Heal|Repair|Elcan(_reflex|))_EPOCH" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul|Rod|Sword)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_(camo_|)F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F" !"CUP_((h|s)gun|(s|a)rifle|(l|s)mg)_"
5 "" !="(V|H)_(F|)[0-9]{1,3}_EPOCH" !="(clown|pkin|wolf)_mask_epoch" !="Item(Map|GPS|Compass|Watch)" !="EpochRadio[0-9]" !="B_UavTerminal" !="(U|G|bipod|acc|muzzle|optic)_[0-9A-Z_]{1,100}" !="(NVG|Defib|Heal|Repair|Elcan(_reflex|))_EPOCH" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul|Rod|Sword)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_(camo_|)F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F" !"CUP_((h|s)gun|(s|a)rifle|(l|s)mg)_"

View File

@ -47,7 +47,7 @@
7 displaySetEventHandler
7 ctrlSetEventHandler !="_ctrlButtonOK ctrlseteventhandler [\"buttonclick\"," !="ctrlSetEventHandler ['LBDblClick', '_this call" !="_buttonRespawn ctrlseteventhandler [\"buttonclick\",\"with uinamespace do {['buttonRespawn'," !="_ctrl ctrlSetEventHandler [\"mouseEnter\"" !="_ctrlBtn ctrlSetEventHandler [\"MouseButtonDblClick\", _verAct];" !="_button_gen ctrlSetEventHandler [\"ButtonClick\",_btn_code + \"(uiNamespace getVariable [\""
7 addMPEventHandler
7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\", \"sapperHndl setFSMVariable" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart""
7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !="player addeventhandler [\"PostReset\",{BIS_EnginePPReset = true;} ];" !="player addEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="\"CBA_fnc_addEventHandler\"" !="\\fnc_addEventHandler" !="\"addEventHandler" !="_eventFunc = _eventFunc + \"(_this select 0) addEventHandler ['Respawn', \" + str _eventFunc + \"];\";" !="_unit addEventHandler [\"hitpart\"," !="CBA_fnc_addEventHandler" !="_ship addEventHandler [\"AttributesChanged3DEN\"" !="addEventHandler [\"HandleDamage\",bis_fnc_reviveOnPlayerHandleDamage];" !="_unit addEventHandler [\"FiredNear\"" !="_smokeEH = _plyr addEventHandler [\"FiredNear\", \"airDropHandle setFSMVariable" !="_onContactEH = _currentTarget addEventHandler[\"EpeContactStart""
7 displayAddEventHandler !="(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !="displayAddEventHandler [_x,([\"CfgEpochClient\", _x, \"\"] call EPOCH_fnc_returnConfigEntryV2)];" !="_display displayaddeventhandler\n[\n\"mousemoving\"," !="_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'" !="_display displayaddeventhandler [_x,_fnc_animate];" !="Development\") then\n{\n_display displayaddeventhandler [\n\"keydown\"" !="CBA_fnc_addDisplayHandler" !="_display displayAddEventHandler [\"MouseMoving" !="private _handler = _display displayAddEventHandler [_key, _code];"
7 ctrlAddEventHandler !="_ctrlMap = _display displayctrl 101;\n_ctrlMap ctrladdeventhandler" !="_display displayctrl 21995;\n_assetsButton ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2406; \n_control ctrladdeventhandler [\"buttonclick\"," !="_display displayctrl 2400;\n_control ctrladdeventhandler [\"buttonclick\"," !="_ctrlTags ctrladdeventhandler [\"lbselchanged\"," !="_ButtonGeneral ctrladdeventhandler [\"buttonclick\"," !="_ctrlExecuteLocal ctrladdeventhandler [\"buttonclick\"," !="_bg ctrlAddEventHandler [\"MouseEnter\"," !="_container ctrlAddEventHandler [\"LBDblClick\",\"_this call EPOCH_itemInteractClick\"];" !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];" !="_prevButton ctrlAddEventHandler [\"MouseButtonUp\", {_this call cba_diagnostic_fnc_debug" !="BIS_RscRespawnControlsMap_ctrlHeaderRespawnButton ctrlAddEventhandler [\"ButtonDown\"" !="_control = _display displayctrl 105;\n_control ctrladdeventhandler [\"MouseButtonUp\""
7 removeAllEventHandlers !"ctrlRemoveAllEventHandlers" !"displayRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_unit removeAllEventHandlers \"Hit\";\n_unit removeAllEventHandlers \"FiredNear\";" !="{_ship removeAllEventHandlers _x;} forEach [\"AttributesChanged3DEN\"" !="_zombie removeAllEventHandlers \"Hit\";" !="_zombie removeAllEventHandlers \"FiredNear\";"
@ -59,7 +59,7 @@
7 remoteControl !="fn_moduleRemoteControl.sqf" !="\"BIS_fnc_moduleRemoteControl\""
7 drawIcon3D !="EPOCH_drawIcon3dStability" !="EPOCH_drawIcon3d" !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !="drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !="if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\"" !="drawIcon3D\n[\n(_x getVariable [\"bis_fnc_reviveGet3dIcons_textures" !="drawIcon3D[\"x\addons\a3_epoch_code\Data\UI\snap_ca.paa\""
7 drawLine3D !="{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari"
7 ctrlCreate !="_parent ctrlcreate [\"RscMessageBox\",2351];" !="_c = _dsp ctrlCreate [\"rmx_drag_RscActivePicture\", call epoch_getIDC];" !="_c = _dsp ctrlCreate [\"rmx_t1\", call epoch_getIDC];" !="ctrlCreate [\"RscProgress\",_idc + 1];" !="ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" !="ctrlCreate [_x,call _getIDC];" !="_mainGrp = _display ctrlCreate [\"Epoch_main_config_group\",_value];" !="ctrlCreate [\"RscControlsGroupNoScrollbars\",call epoch_getIDC];" !="ctrlCreate [\"rmx_rscPicture\",(66600 + _e)];" !="ctrlCreate [\"RscStructuredText\",call epoch_getIDC];" !="_bar = _display ctrlCreate [\"RscCustomProgress\"" !="_group = _dsp ctrlCreate [\"rscControlsGroup\", call Epoch_getIDC]" !="_control = _display ctrlCreate [\"RscControlsGroupNoScrollbars\", 5678910];"
7 ctrlCreate !="_parent ctrlcreate [\"RscMessageBox\",2351];" !="_c = _dsp ctrlCreate [\"rmx_drag_RscActivePicture\", call epoch_getIDC];" !="_c = _dsp ctrlCreate [\"rmx_t1\", call epoch_getIDC];" !="ctrlCreate [\"RscProgress\",_idc + 1];" !="ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\"" !="ctrlCreate [_x,call _getIDC];" !="_mainGrp = _display ctrlCreate [\"Epoch_main_config_group\",_value];" !="ctrlCreate [\"RscControlsGroupNoScrollbars\",call epoch_getIDC];" !="ctrlCreate [\"rmx_rscPicture\",(66600 + _e)];" !="ctrlCreate [\"RscStructuredText\",call epoch_getIDC];" !="_bar = _display ctrlCreate [\"RscCustomProgress\"" !="_group = _dsp ctrlCreate [\"rmx_rscControlsGroup\", call Epoch_getIDC]" !="_control = _display ctrlCreate [\"RscControlsGroupNoScrollbars\", 5678910];"
7 ctrlClassName
7 ctrlModel
7 ctrlModelDirection

View File

@ -2,7 +2,7 @@
/*%FSM<HEAD>*/
/*
item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"};
item1[] = {"FINISH",1,4346,-149.463196,1518.792480,-49.463196,1568.792480,0.000000,"FINISH"};
item1[] = {"FINISH",1,250,-149.463196,1518.792480,-49.463196,1568.792480,0.000000,"FINISH"};
item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"};
item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"};
item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"};
@ -25,7 +25,7 @@ item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000
item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""};
item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"};
item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"};
item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"};
item24[] = {"Player_In_Game",8,4314,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"Player" \n "In Game"};
item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"};
item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."};
item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"};
@ -183,8 +183,8 @@ link93[] = {82,76};
link94[] = {83,16};
link95[] = {83,22};
link96[] = {84,31};
globals[] = {0.000000,0,0,0,0,640,480,1,247,6316128,1,-566.678223,916.507324,1906.129761,921.949097,1287,854,1};
window[] = {2,-1,-1,-1,-1,923,-1524,-540,156,3,1305};
globals[] = {0.000000,0,0,0,0,640,480,1,247,6316128,1,-320.898621,993.773193,1636.447266,764.085449,1287,854,1};
window[] = {2,-1,-1,-1,-1,871,104,1088,104,3,1305};
*//*%FSM</HEAD>*/
class FSM
{
@ -236,17 +236,7 @@ class FSM
{
name = "FINISH";
itemno = 1;
init = /*%FSM<STATEINIT""">*/"// setup display EH's" \n
"{" \n
" (findDisplay 46) displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
"} forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n
"" \n
"// reset anim state" \n
"player switchMove """";" \n
"" \n
"// setup Epoch Hud" \n
"call epoch_dynamicHUD_start;" \n
"[] spawn EPOCH_masterLoop;" \n
init = /*%FSM<STATEINIT""">*/"[] spawn EPOCH_masterLoop;" \n
"" \n
"EPOCH_loginFSM = nil;" \n
"EPOCH_playerLoginInit = nil;" \n
@ -484,14 +474,14 @@ class FSM
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
/*%FSM<LINK "Player_In_Game">*/
class Player_In_Game
{
itemno = 24;
priority = 0.000000;
to="Setup_EH_s_and_H";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"getClientStateNumber > 8"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
@ -963,7 +953,7 @@ class FSM
priority = 0.000000;
to="FINISH";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(isNull (findDisplay 46)) && {preloadCamera _playerPos}"/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"preloadCamera _playerPos"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"call compile _extraPayload;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
@ -1433,4 +1423,4 @@ class FSM
"Reject_without_B",
};
};
/*%FSM</COMPILE>*/
/*%FSM</COMPILE>*/

View File

@ -27,7 +27,7 @@
private ["_mName","_mrkr"];
//[[[end]]]
params [["_trgt", str(diag_tickTime)],["_mPos", position player],["_mShape","ICON"],["_mType","mil_dot"],["_mColor","ColorBlack"],["_mSize",[0.7,0.7]],["_mBrush",""],["_mDir",0],["_mText",""],["_mAlpha",1],["_mName",""]];
diag_log format["Epoch: ADMIN: Creating marker at %1 called %2 (Params:%3).", _mPos, _trgt, _paramres];
diag_log format["Epoch: DEBUG: Creating marker at %1 called %2 (Params:%3).", _mPos, _trgt, _this];
if(_mName == "")then{_mName = str(_trgt) + str(diag_tickTime);};
_mrkr = createMarkerLocal [_mName, _mPos];

View File

@ -50,8 +50,8 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
_color = [100,0,_stability,1] call EPOCH_colorRange;
};
case 1: {
_text = if (EPOCH_buildMode > 0) then[{_text}, { format ["Press (%1)",EPOCH_keysBuildMode1 call BIS_fnc_keyCode] }];
case 1: {
// _text = if (EPOCH_buildMode > 0) then[{_text}, { format ["Hold (%1)",EPOCH_keysBuildMode1 call BIS_fnc_keyCode] }];
_stability = if (EPOCH_buildMode > 0) then[{_currentTarget getVariable["stability", 100]}, {100 - round(damage _currentTarget * 100)}];
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
_color = [100,0,_stability,1] call EPOCH_colorRange;
@ -78,7 +78,7 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
};
case 4: {
// Base Objects With Storage
_text = if (EPOCH_buildMode > 0) then[{_text}, { format ["Press (%1) or (%2)",EPOCH_keysBuildMode1 call BIS_fnc_keyCode, ((actionKeys "Gear" select 0) call BIS_fnc_keyCode),_text] }];
_text = if (EPOCH_buildMode > 0) then[{_text}, { format ["Hold (%1) or (%2)",EPOCH_keysAction call BIS_fnc_keyCode, ((actionKeys "Gear" select 0) call BIS_fnc_keyCode),_text] }];
_stability = if (EPOCH_buildMode > 0) then[{_currentTarget getVariable["stability", 100]}, {100 - round(damage _currentTarget * 100)}];
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
_color = [100,0,_stability,1] call EPOCH_colorRange;

View File

@ -18,7 +18,7 @@ private ["_bomb","_config","_currentLimit","_disableAI","_driver","_grp","_index
params ["_unitClass",["_trgt",player],["_doVariable",false]];
_bomb = objNull;
diag_log format["DEBUG: Antagonist %1 Spawning on %2. Do variable: %3.", _unitClass, _trgt, _doVariable];
// diag_log format["DEBUG: Antagonist %1 Spawning on %2. Do variable: %3.", _unitClass, _trgt, _doVariable];
if(random 100 < 6)then{
[] execFSM "\x\addons\a3_epoch_code\System\Event_Air_Drop.fsm";

View File

@ -50,10 +50,7 @@ if !(isNull _object) then{
{
_recipeItem = _x;
_recipeQty = 1;
if (_x isEqualType[]) then{
_recipeItem = _x select 0;
_recipeQty = _x select 1;
};
_x params [["_recipeItem",_recipeItem],["_recipeQty",_recipeQty]];
_recipeCount = _recipeCount + _recipeQty;
_currentCount = { _x == _recipeItem } count _mags;
if (_currentCount < _recipeQty) exitWith{
@ -66,11 +63,7 @@ if !(isNull _object) then{
{
_recipeItem = _x;
_recipeQty = 1;
if (_x isEqualType[]) then{
_x params ["_recipeItem","_recipeQty"];
_recipeItem = _x select 0;
_recipeQty = _x select 1;
};
_x params [["_recipeItem",_recipeItem],["_recipeQty",_recipeQty]];
if ([_recipeItem, "CfgWeapons"] call EPOCH_fnc_isAny) then{
_items = items player;
_currentCount = { _x == _recipeItem } count _items;

View File

@ -23,11 +23,13 @@
BOOL
*/
//[[[cog import generate_private_arrays ]]]
private ["_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_isAllowed","_jammer","_jammerpergroup","_limitNearby","_maxbuildingheigh","_membercount","_minjammerdistance","_myPosATL","_nearestJammer","_obj","_objType","_objectCount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storagecountLeader","_storagecountPerMember"];
private ["_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountLimit","_buildingCountPerMember","_buildingJammerRange","_bypassJammer","_c","_cfgBaseBuilding","_config","_isAllowed","_jammer","_jammerPerGroup","_limitNearby","_maxBuildingHeight","_membercount","_minjammerdistance","_myPosATL","_nearestJammer","_obj","_objType","_objectCount","_ownedJammerExists","_range","_restricted","_restrictedArray","_restrictedLocations","_restrictedLocationsArray","_restrictedLocationsRange","_simulClass","_staticClass","_storageCountLeader","_storageCountPerMember","_scl","_gcl","_storageCountLimit","_useGroupCountLimits","_ghostClass"];
//[[[end]]]
_buildingAllowed = true;
_ownedJammerExists = false;
_scl = false;
_gcl = true;
_nearestJammer = objNull;
// reject building if in vehicle
@ -38,21 +40,23 @@ _config = 'CfgEpochClient' call EPOCH_returnConfig;
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
_buildingCountLimit = getNumber(_config >> "buildingCountLimit");
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
if (_buildingCountLimit == 0) then { _buildingCountLimit = 200; };
_storageCountLimit = getNumber(_config >> "storageCountLimit");
_buildingCountLeader = getNumber(_config >> "buildingCountLeader");
_buildingCountPerMember = getNumber(_config >> "buildingCountPerMember");
_storagecountLeader = getNumber(_config >> "storagecountLeader");
_storagecountPerMember = getNumber(_config >> "storagecountPerMember");
_minjammerdistance = getNumber(_config >> "minJammerDistance");
_maxbuildingheigh = getNumber(_config >> "maxBuildingHeigh");
_jammerpergroup = getNumber(_config >> "JammerPerGroup");
if (_buildingCountLeader == 0) then { _buildingCountLeader = _buildingCountLimit};
if (_storagecountLeader == 0) then { _storagecountLeader = 100};
if (_minjammerdistance == 0) then { _minjammerdistance = _buildingJammerRange*3};
if (_maxbuildingheigh == 0) then { _maxbuildingheigh = 100};
if (_jammerpergroup == 0) then { _jammerpergroup = 2};
_storageCountLeader = getNumber(_config >> "storageCountLeader");
_storageCountPerMember = getNumber(_config >> "storageCountPerMember");
_minJammerDistance = getNumber(_config >> "minJammerDistance");
_maxBuildingHeight = getNumber(_config >> "maxBuildingHeight");
_jammerPerGroup = getNumber(_config >> "jammerPerGroup");
if(getNumber(_config >> "useGroupCountLimits") == 0)then{_gcl=false};
if(getNumber(_config >> "splitCountLimits") == 1)then{_scl=true};
if(_buildingJammerRange == 0)then{_buildingJammerRange = 75};
if(_buildingCountLimit == 0)then{_buildingCountLimit = 200};
if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit};
if(_storageCountLeader == 0)then{_storageCountLeader = 100};
if(_minJammerDistance == 0)then{_minJammerDistance = _buildingJammerRange*3};
if(_maxBuildingHeight == 0)then{_maxBuildingHeight = 100};
if(_jammerPerGroup == 0)then{_jammerPerGroup = 2};
// input
params ["_objType"];
@ -64,6 +68,7 @@ if (_objType isEqualType objNull) then {
_staticClass = getText(_cfgBaseBuilding >> _objType >> "staticClass");
_simulClass = getText(_cfgBaseBuilding >> _objType >> "simulClass");
_ghostClass = getText(_cfgBaseBuilding >> _objType >> "GhostPreview");
_bypassJammer = getNumber(_cfgBaseBuilding >> _staticClass >> "bypassJammer");
// Jammer
@ -77,49 +82,67 @@ if !(_jammer isEqualTo []) then {
};
} foreach _jammer;
} else {
{
if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{
_nearestJammer = _x;
};
} foreach _jammer;
if !(isNull _nearestJammer) then {
if ((getposatl player) select 2 < _maxbuildingheigh) then {
if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
_ownedJammerExists = true;
} else {
if ((getPosATL player) select 2 < _maxBuildingHeight) then {
if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
_ownedJammerExists = true;
} else {
_buildingAllowed = false;
["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
};
if(_gcl)then{
_membercount = 0;
if(count Epoch_my_Group > 0)then{_membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4)}
};
if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"])then[{
if(_scl)then{
if(_gcl)then{
_storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount);
if((_storageCountLeader + _storageCountPerMember) > _storageCountLimit)then{_storageCountLimit = _storageCountLeader}
};
if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F",_ghostClass],_buildingJammerRange]) >= _storageCountLimit)then{
_buildingAllowed = false;
[format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message
}
}else{
if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)};
if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= _buildingCountLimit)then{
_buildingAllowed = false;
[format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
}
}
},{
//a try to prevent bugusing (TODO: not working for storage objects atm)
if((count nearestObjects[_nearestJammer,[_ghostClass],_buildingJammerRange]) >= 2)exitWith{ //setting this too low may not be player-friendly. Recommend: >= 2
_buildingAllowed = false;
["Building Disallowed: Frequency Unstable, Wait A Moment",5] call Epoch_message
};
if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)};
if(_scl)then{
if((count nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{
_buildingAllowed = false;
[format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message
}
}else{
if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{
_buildingAllowed = false;
[format["Building Disallowed: Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
}
}
}]
}else{
_buildingAllowed = false;
["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
["Building Disallowed: Max building height reached",5] call Epoch_message;
};
_objectCount = count nearestObjects[_nearestJammer, ["Constructions_static_F"], _buildingJammerRange];
_membercount = 0;
if (count Epoch_my_Group > 0) then {
_membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4);
};
if (_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"]) then {
_buildingCountLimit = _storagecountLeader + _storagecountPerMember*_membercount;
_objectCount = count nearestObjects[_nearestJammer, ["Buildable_Storage","Constructions_lockedstatic_F"], _buildingJammerRange];
}
else {
_buildingCountLimit = _buildingCountLeader + _buildingCountPerMember*_membercount;
_objectCount = count nearestObjects[_nearestJammer, ["Constructions_static_F","Constructions_foundation_F"], _buildingJammerRange];
};
if (_objectCount >= _buildingCountLimit) then {
_buildingAllowed = false;
[format["Building Disallowed: Frequency Overloaded: Limit %1", _buildingCountLimit], 5] call Epoch_message;
};
}
else {
_buildingAllowed = false;
["Building Disallowed: Max building heigh reached", 5] call Epoch_message;
};
};
};
}
else {
}else{
if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
// TODO: rework not ideal to use allmissionobjects
_alljammer = allmissionobjects 'PlotPole_EPOCH';
@ -129,9 +152,9 @@ else {
_c = _c+1;
};
} foreach _alljammer;
if (_c >= _jammerpergroup) then {
if (_c >= _jammerPerGroup) then {
_buildingAllowed = false;
[format["Building Disallowed: Max %1 Jammer per Group!", _jammerpergroup], 5] call Epoch_message;
[format["Building Disallowed: Max %1 Jammer per Group!", _jammerPerGroup], 5] call Epoch_message;
};
};
};
@ -154,7 +177,7 @@ if (!_ownedJammerExists) then{
if !(_buildingAllowed)exitWith{ false };
// require jammer check if not found as owner of jammer
if (getNumber(_config >> "buildingRequireJammer") == 0 && _bypassJammer == 0) then{
if (getNumber(_config >> "buildingRequireJammer") == 1 && _bypassJammer == 0) then{
if !(_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
_buildingAllowed = _ownedJammerExists;
if !(_buildingAllowed) then {

View File

@ -26,7 +26,7 @@
BOOL
*/
//[[[cog import generate_private_arrays ]]]
private ["_currentPos","_disableBuildMode","_handled"];
private ["_currentPos","_handled"];
//[[[end]]]
params ["_display","_dikCode","_shift","_ctrl","_alt"];
@ -36,10 +36,6 @@ if !(alive player) exitWith{ false };
EPOCH_doRotate = false;
if (_dikCode in [0x02,0x03,0x04,0x58,0x57,0x44,0x43,0x42,0x41,0x40,0x3F,0x3E,0x3D,0x3C,0x3B,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x0E]) then {
_handled = true;
};
// increase vol
if (_ctrl && _dikCode == EPOCH_keysVolumeUp) then {
EPOCH_soundLevel = (EPOCH_soundLevel + 0.1) min 1;
@ -99,45 +95,16 @@ if (_dikCode == EPOCH_keysAction) then {
// Player only code
if (vehicle player == player) then {
_disableBuildMode = {
EPOCH_buildMode = 0;
if (_dikCode == EPOCH_keysBuildMode1 && EPOCH_buildMode > 0) then {
EPOCH_buildMode = 0;
EPOCH_snapDirection = 0;
["Build Mode Disabled", 5] call Epoch_message;
["Build Mode: Disabled", 5] call Epoch_message;
EPOCH_Target = objNull;
EPOCH_Z_OFFSET = 0;
EPOCH_X_OFFSET = 0;
EPOCH_Y_OFFSET = 5;
};
if (_dikCode == EPOCH_keysBuildMode1) then {
if (EPOCH_buildMode == 1) then {
call _disableBuildMode;
} else {
if (EPOCH_playerEnergy > 0) then {
EPOCH_stabilityTarget = objNull;
EPOCH_buildMode = 1;
["Build Mode Enabled: Snap alignment", 5] call Epoch_message;
EPOCH_buildDirection = 0;
} else {
["Need Energy", 5] call Epoch_message;
};
};
_handled = true;
};
if (_dikCode == EPOCH_keysBuildMode2) then {
if (EPOCH_buildMode == 2) then {
call _disableBuildMode;
} else {
if (EPOCH_playerEnergy > 0) then {
EPOCH_stabilityTarget = objNull;
EPOCH_buildMode = 2;
["Build Mode Enabled: Free", 5] call Epoch_message;
EPOCH_buildDirection = 0;
}
else {
["Need Energy", 5] call Epoch_message;
};
};
_handled = true;
_handled = true;
};
// H - holster unholster
@ -156,18 +123,6 @@ if (vehicle player == player) then {
};
if (EPOCH_buildMode > 0) then {
if (_dikCode == EPOCH_keysBuildDir) then {
EPOCH_snapDirection = EPOCH_snapDirection + 1;
if (EPOCH_snapDirection > 3) then {
EPOCH_snapDirection = 0;
["SNAP DIRECTION MODE: 0", 5] call Epoch_message;
}
else {
[format["SNAP DIRECTION MODE: %1", EPOCH_snapDirection], 5] call Epoch_message;
};
_handled = true;
};
if (!_ctrl) then {
switch (_dikCode) do {
case EPOCH_keysBuildMovUp: { EPOCH_Z_OFFSET = (EPOCH_Z_OFFSET + 0.1) min 6; _handled = true };

View File

@ -36,9 +36,9 @@ _keyMap =
["Volume + (ctrl)","EPOCH_keysVolumeUp",0x0D],
["Volume - (ctrl)","EPOCH_keysVolumeDown",0x0C],
["Build: Mode 1", "EPOCH_keysBuildMode1", 2],
["Build: Mode 2", "EPOCH_keysBuildMode2", 3],
["Build: Direction", "EPOCH_keysBuildDir", 4],
//["Build: Static", "EPOCH_keysBuildStatic", 5],
// ["Build: Mode 2", "EPOCH_keysBuildMode2", 3],
// ["Build: Direction", "EPOCH_keysBuildDir", 4],
// ["Build: Static", "EPOCH_keysBuildStatic", 5],
["Build: Move UP", "EPOCH_keysBuildMovUp", 0xC9],
["Build: Move DOWN", "EPOCH_keysBuildMovDn", 0xD1],
["Build: Move FORWARD", "EPOCH_keysBuildMovFwd", 0xC7],

View File

@ -91,9 +91,8 @@ EPOCH_currentTargetMode = _currentTargetMode;
_forceUpdate = "forceUpdate" in _criticalAttributes;
_forceFatigue = "forceFatigue" in _criticalAttributes;
_forceBloodRise = "forceBloodRise" in _criticalAttributes;
[_curCtrl,0.55] call epoch_2DCtrlHeartbeat;
};
[_curCtrl,_critical] call _scaleUI;
// todo make this reversable or even limited to a color range.
_color = [_playerLimitMin,_playerLimitMax,_currentVarVal,1] call EPOCH_colorRange;
_curCtrl ctrlSetTextColor _color;

View File

@ -10,7 +10,7 @@ if (EPOCH_mod_Ryanzombies_Enabled) then {
if (random EPOCH_sapperRndChance < _spawnChance) then {
"Epoch_Sapper_F" call EPOCH_unitSpawnIncrease;
};
diag_log format["DEBUG: _spawnChance %1",_spawnChance];
// diag_log format["DEBUG: _spawnChance %1",_spawnChance];
_spawnUnits = [];
{

View File

@ -1,3 +1,13 @@
// make sure we wait for Display #46
waitUntil {!(isNull (findDisplay 46))};
// setup display EH's
{
(findDisplay 46) displayAddEventHandler [_x,(["CfgEpochClient", _x, ""] call EPOCH_fnc_returnConfigEntryV2)];
} forEach (["CfgEpochClient", "displayAddEventHandler", []] call EPOCH_fnc_returnConfigEntryV2);
// reset anim state
player switchMove "";
// setup Epoch Hud
call epoch_dynamicHUD_start;
_prevEquippedItem = [];
_damagePlayer = damage player;
@ -113,26 +123,6 @@ _fadeUI = {
};
_bool
};
_scaleUI = {
params ["_ctrl","_bool"];
private _oemScale = _ctrl getVariable ["ctrl_scale", 1];
private _curScale = ctrlScale _ctrl;
if (_bool) then {
if (_curScale isEqualTo _oemScale) then {
_ctrl ctrlSetScale (_oemScale - 0.1);
_ctrl ctrlCommit 0.5;
} else {
_ctrl ctrlSetScale _oemScale;
_ctrl ctrlCommit 0.5;
};
} else {
if !(_curScale isEqualTo _oemScale) then {
_ctrl ctrlSetScale _oemScale;
_ctrl ctrlCommit 0.5;
};
};
_bool
};
_cursorTarget = objNull;

View File

@ -0,0 +1,62 @@
/*
Author: Raimonds Virtoss - EpochMod.com
Contributors:
Description:
Gives (imploding) heartbeat animation to your 2D GUI element along it's center.
_control (mandatory): control to animate;
_scale (optional): scale of the beat 0.1 - 0.9
Safe values: 0.1 - 0.7
Best values: 0.55, 0.7
_times (optional): Repeat animation N times
_delay (optional): Delay between animation repeats
_beats (optional): amount of heart beats per animation cycle
Best value: 2 (default)
_speed (optional): speed of animation, higher speed = longer animation
Best value: 0.04 (default)
Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/animations/Epoch_2DCtrlHeartbeat.sqf
Usage:
[_control] call epoch_2DCtrlHeartbeat; //default (best values) 2x fast heartbeats
[_control, 0.55] call epoch_2DCtrlHeartbeat; // 2x deep heartbeats (also really nice, has a growing/breathing effect after 2 beats)
[_control, 0.7, 5, 2] call epoch_2DCtrlHeartbeat; // 2x fast normal beats repeated 5 times every 2 seconds
[_control, 0.7, 1, 1, 3, 0.01] call epoch_2DCtrlHeartbeat; // 3x super fast beats played once
*/
_this spawn {
disableSerialization;
private ["_ctrl","_scale","_times","_delay","_beats","_speed","_t","_b"];
_ctrl = param [0, controlNull,[controlNull]];
_scale = param [1,0.7,[0]];
_times = param [2,1,[0]];
_delay = param [3,1.2,[0]];
_beats = param [4,2,[0]];
_speed = param [5,0.04,[0]];
if (_ctrl isEqualTo controlNull) exitWith {false};
_speed = 0.1;
for "_t" from 0 to (_times - 1) do {
[_ctrl,_scale + _scale/2,_speed] call BIS_fnc_ctrlSetScale;
uiSleep _speed;
for "_b" from 0 to (_beats - 1) do {
[_ctrl,_scale,_speed] call BIS_fnc_ctrlSetScale;
uiSleep _speed;
[_ctrl,_scale + _scale/2,_speed] call BIS_fnc_ctrlSetScale;
uiSleep _speed;
};
[_ctrl,1,_delay] call BIS_fnc_ctrlSetScale;
uiSleep _delay;
};
true
};
true

View File

@ -0,0 +1,61 @@
/*
Author: Raimonds Virtoss - EpochMod.com
Contributors:
Description:
Gives shake animation to your 2D GUI element along it's center.
_control (mandatory): control to animate;
_speed (optional): speed of animation, higher values equals to faster animation. Should be less than degrees to avoid glitches!
_shakes (optional): amount of shakes, more shakes = longer animation.
_degrees (optional): rotation degrees 0 to 360.
Shake animation sequence:
0 > -degrees
-degrees > +degrees
+degrees > 0
Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/animations/Epoch_2DCtrlShake.sqf
Usage:
[_control] call epoch_2DCtrlShake; //default 3 fast shakes
[_control, 10, 12] call epoch_2DCtrlShake; //12 very fast shakes
[_control, 2, 5, 90] call epoch_2DCtrlShake; // 5 very slow 90 degree shakes
*/
_this spawn {
disableSerialization;
private ["_ctrl","_speed","_shakes","_degrees","_s","_d"];
_ctrl = param [0, controlNull,[controlNull]];
_speed = param [1,5,[0]];
_shakes = param [2,3,[0]];
_degrees = param [3,10,[0]];
if (_ctrl isEqualTo controlNull) exitWith {false};
for "_s" from 0 to (_shakes - 1) do {
for "_d" from 0 to _degrees step _speed do {
_ctrl ctrlSetAngle [_d * -1,0.5,0.5];
uiSleep 0.01;
};
for "_d" from (_degrees * -1) to _degrees step _speed do {
_ctrl ctrlSetAngle [_d,0.5,0.5];
uiSleep 0.01;
};
for "_d" from 0 to _degrees step _speed do {
_ctrl ctrlSetAngle [_degrees - _d,0.5,0.5];
uiSleep 0.01;
};
_ctrl ctrlSetAngle [0,0.5,0.5]; // just in case given params are not balanced
};
true
};
true

View File

@ -19,7 +19,7 @@ private ["_angle","_arraySize","_c","_cPos","_center","_cfg","_classname","_conf
_cfg = "rmx_dynamicHUD" call EPOCH_returnConfig;
_configs = "true" configClasses _cfg;
diag_log format ["Epoch_dynamicHUD_start: %1", _configs];
// diag_log format ["Epoch_dynamicHUD_start: %1", _configs];
setMousePosition [0.5,0.5];
@ -27,7 +27,7 @@ disableSerialization;
_dsp = findDisplay 46;
{
_group = _dsp ctrlCreate ["rscControlsGroup", call Epoch_getIDC];
_group = _dsp ctrlCreate ["rmx_rscControlsGroup", call Epoch_getIDC];
rmx_var_dynamicHUD_groups set [_forEachIndex, _group];
_defaultPopulate = getNumber (_x >> "defaultPopulate");

View File

@ -8,7 +8,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/Epoch_dynamicText.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/messaging/Epoch_message.sqf
Usage:
"TEST" call Epoch_message

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/Epoch_dynamicText.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old1.sqf
Usage:
"TEST" call Epoch_message_old1

View File

@ -8,7 +8,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/gui/scripts/Epoch_dynamicText.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/messaging/Epoch_message_old2.sqf
Usage:
"TEST" call Epoch_message_old2

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessCreate.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessAdjust.sqf
Params: [Handle, speed integer, Effect array]

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/post_process/Epoch_dynamicMenuPopulate.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessCreate.sqf
Params: [Name of PP, Priority]

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessDestroy.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessDestroy.sqf

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessDestroy.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/post_process/Epoch_setDrunk.sqf
Usage:
0.5 call epoch_setDrunk;

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/post_process/EPOCH_postprocessDestroy.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/post_process/Epoch_setRadiation.sqf
Usage:
0.5 call epoch_setRadiation;

View File

@ -10,7 +10,7 @@
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/scripts/worldToScreen/Epoch_gui3DCooldownEH.sqf
https://github.com/EpochModTeam/Epoch/blob/release/Sources/epoch_code/gui/scripts/worldToScreen/Epoch_gui3DModelPos.sqf
Example:
[_object, _time, _image, _text, _objectSpace, _distance, _externalBool] call epoch_gui3dModelPos;

View File

@ -18,7 +18,7 @@ private ["_antagonistSpawnDefaults","_customVarsInit","_say3dsounds","_say3dsoun
// detect if Ryan's Zombies and Deamons mod is present
if (["CfgEpochClient", "ryanZombiesEnabled", false] call EPOCH_fnc_returnConfigEntryV2) then {
EPOCH_mod_Ryanzombies_Enabled = (parseNumber (getText (configFile >> "CfgPatches" >> "Ryanzombies" >> "version")) >= 4.2);
EPOCH_mod_Ryanzombies_Enabled = (parseNumber (getText (configFile >> "CfgPatches" >> "Ryanzombies" >> "version")) >= 4.5);
if (EPOCH_mod_Ryanzombies_Enabled) then {
diag_log "Epoch: Ryanzombies detected";
};

View File

@ -48,3 +48,54 @@ class player_group_requests
icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_requests_ca.paa";
tooltip = "Group Requests";
};
class base_mode_enable
{
condition = "EPOCH_buildMode in [0,2] && EPOCH_playerEnergy > 0";
action = "EPOCH_stabilityTarget = objNull;EPOCH_buildMode = 1;['Build Mode: Enabled Snap alignment', 5] call Epoch_message;EPOCH_buildDirection = 0;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_maintain.paa";
tooltip = "Build Mode: Snap alignment";
};
class base_mode_enable_free
{
condition = "EPOCH_buildMode == 1 && EPOCH_playerEnergy > 0";
action = "EPOCH_stabilityTarget = objNull;EPOCH_buildMode = 2;['Build Mode: Enabled Free alignment', 5] call Epoch_message;EPOCH_buildDirection = 0;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_maintain.paa";
tooltip = "Build Mode: Free alignment";
};
class base_mode_disable
{
condition = "EPOCH_buildMode > 0";
action = "EPOCH_buildMode = 0;EPOCH_snapDirection = 0;['Build Mode: Disabled', 5] call Epoch_message;EPOCH_Target = objNull;EPOCH_Z_OFFSET = 0;EPOCH_X_OFFSET = 0;EPOCH_Y_OFFSET = 5;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_remove.paa";
tooltip = "Build Mode: Disable";
};
class base_mode_snap_direction_0
{
condition = "EPOCH_buildMode == 1 && EPOCH_snapDirection != 0";
action = "EPOCH_snapDirection = 0;[format['SNAP DIRECTION MODE: %1', EPOCH_snapDirection], 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa";
tooltip = "Build Mode: Snap Direction 0°";
};
class base_mode_snap_direction_1
{
condition = "EPOCH_buildMode == 1 && EPOCH_snapDirection != 1";
action = "EPOCH_snapDirection = 1;[format['SNAP DIRECTION MODE: %1', EPOCH_snapDirection], 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa";
tooltip = "Build Mode: Snap Direction 90°";
};
class base_mode_snap_direction_2
{
condition = "EPOCH_buildMode == 1 && EPOCH_snapDirection != 2";
action = "EPOCH_snapDirection = 2;[format['SNAP DIRECTION MODE: %1', EPOCH_snapDirection], 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa";
tooltip = "Build Mode: Snap Direction 180°";
};
class base_mode_snap_direction_3
{
condition = "EPOCH_buildMode == 1 && EPOCH_snapDirection != 3";
action = "EPOCH_snapDirection = 3;[format['SNAP DIRECTION MODE: %1', EPOCH_snapDirection], 5] call Epoch_message;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_move.paa";
tooltip = "Build Mode: Snap Direction 270°";
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -192,6 +192,12 @@ class CfgClientFunctions
class getColorScheme {};
class dragControl {};
};
class animations
{
file = "epoch_code\gui\scripts\animations";
class 2DCtrlShake {};
class 2DCtrlHeartbeat {};
};
class config
{
file = "epoch_code\gui\scripts\config";

View File

@ -1,260 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": ["Raimonds Virtoss","Andrew Gregory"],
"@description": "Custom Epoch Client Only functions",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgClientFunctions": {
"version": 1,
"A3E": {
"tag": "EPOCH",
"file": "epoch_code\\compile",
"generic": {
"file": "epoch_code\\compile",
"localCleanup": {},
"unitSpawnIncrease": {},
"unitSpawnDecrease": {},
"QuickTakeAll": {},
"QuickTakeLoad": {},
"effectCrypto": {},
"handleServerMessage": {},
"updateLoadingScreen": {},
"EnterBuilding": {},
"lootTrash": {},
"debugMonitor": {},
"interact": {},
"chopWood": {},
"fish": {},
"mineRocks": {},
"UnisexCheck": {},
"PutHandler": {},
"niteLight": {},
"LootIT": {},
"supportCopter": {},
"consumeItem": {},
"unitSpawn": {},
"onEachFrame": {},
"callSapperMigration": {},
"zombieSpawn": {},
"makeMarker": {},
"removeMarker": {}
},
"building": {
"maintainIT": {},
"lockCheck": {},
"countdown": {},
"fnc_SelectTargetBuild": {},
"isBuildAllowed": {},
"simulSwap": {},
"staticMove": {},
"upgradeBUILD": {},
"removeBUILD": {},
"changeWallState": {},
"checkBuild": {}
},
"traders": {
"startInteract": {},
"startInteractNPC": {},
"npcTraderAdd": {},
"npcTraderAdd2": {},
"npcTraderAdd3": {},
"startNPCTraderMenu": {},
"NPCTraderMenuFilter": {},
"startNpcTrade": {},
"tradeFilter": {},
"takeCrypto": {},
"startBankTransfer": {}
},
"interface_event_handlers": {
"KeyDown": {},
"KeyUp": {},
"onChar": {}
},
"event_handlers": {
"getInMan": {},
"getOutMan": {}
},
"setup": {
"masterLoop": {},
"clientInit": {},
"clientRespawn": {},
"clientRevive": {},
"client_rejectPlayer": {},
"clientKeyMap": {}
},
"p2p_trading": {
"startTRADEREQ": {},
"startTrade": {},
"tradeRequest": {},
"TradeLoop": {},
"makep2pTrade": {}
},
"functions": {
"worldObjectType": {},
"returnConfig": {},
"colorRange": {},
"convertTemp": {},
"fnc_playerDeath": {},
"fnc_playerFired": {},
"fnc_isInsideBuilding": {},
"fnc_Weather": {},
"fnc_findSafePos": {},
"fnc_addItemOverflow": {},
"pushCustomVar": {},
"itemData": {},
"itemPicture": {},
"itemDisplayName": {},
"SortArrayByDistance": {},
"fnc_findRandomPosBehind": {},
"fnc_stringLeft": {},
"fnc_findSapperStalkLocation": {},
"fnc_dirToFuzzy": {},
"fnc_cursorTarget": {},
"fnc_triggerAntagonist": {},
"fnc_playerDeathDetonate": {},
"fnc_playerDeathMorph": {},
"fnc_playerSetVariable": {},
"fnc_playerAttachToAntagonist": {},
"fnc_dynamicFSM": {},
"fnc_vectorDivide": {},
"giveAttributes": {},
"fnc_spawnEffects": {},
"fnc_arrayStringToBool": {}
},
"environment": {
"client_earthQuake": {},
"client_loadAnimalBrain": {},
"client_bitePlayer": {}
},
"vehicles": {
"client_repairVehicle": {},
"client_lockVehicle": {},
"client_fillVehicle": {},
"client_gearVehicle": {}
},
"missions": {
"mission_accept": {},
"mission_cage_sapper": {},
"mission_returnObj": {}
},
"inventory": {
"selectInventoryItem": {},
"itemInteractClick": {},
"itemInteractDblClick": {},
"uniformArmorCalc": {},
"gearArmorCalc": {},
"factorArmor": {},
"maxArmorInit": {},
"initUI": {},
"refeshUI": {}
},
"messaging": {
"file": "epoch_code\\gui\\scripts\\messaging",
"message": {},
"message_old1": {},
"message_old2": {}
},
"looting": {
"spawnLoot": {}
},
"gui": {
"file": "epoch_code\\gui\\scripts",
"onPause": {},
"showStats": {},
"3DctrlPitchYaw": {},
"3DctrlSpin": {},
"3DctrlYaw": {},
"InterruptConfig": {},
"InterruptConfigActions": {},
"getIDC": {},
"guiObjHP": {},
"secureStorageHandler": {},
"genderSelection": {},
"getColorScheme": {},
"dragControl": {}
},
"config": {
"file": "epoch_code\\gui\\scripts\\config",
"config_keymap": {}
},
"dynamenu": {
"file": "epoch_code\\gui\\scripts\\dynamenu",
"dynamicMenu": {},
"dynamicMenuPopulate": {},
"dynamicMenuCleanup": {}
},
"dynamicHUD": {
"file": "epoch_code\\gui\\scripts\\dynamicHUD",
"dynamicHUD_adjust": {},
"dynamicHUD_loadSave": {},
"dynamicHUD_start": {},
"getHUDCtrl": {}
},
"gui_craft": {
"file": "epoch_code\\gui\\scripts\\craftingv2",
"crafting_animate": {},
"crafting_ctrl_collector": {},
"crafting_dev_toggle": {},
"crafting_getConfig": {},
"crafting_checkGear": {},
"crafting_checkNearby": {},
"crafting_checkResources": {},
"crafting_craft": {},
"crafting_progress": {},
"crafting_load": {},
"crafting_unload": {},
"crafting_LB_click": {},
"crafting_LB_defaults": {},
"crafting_LB_doubleClick": {},
"crafting_colorScheme": {}
},
"group": {
"file": "epoch_code\\gui\\scripts\\group",
"Group_invitePlayer": {},
"Group_BtnMod": {},
"Group_BtnInvite": {},
"Group_onLoad": {},
"Group_List": {},
"Group_Combo": {},
"Group_BtnLeave": {},
"Group_BtnKick": {},
"cGroup_groupText": {},
"cGroup_onLoad": {},
"cGroup_BtnCreate": {},
"iGroup_acceptInvite": {},
"iGroup_onLoad": {},
"iGroup_refresh": {},
"Group_update": {}
},
"gui_inventory": {
"file": "epoch_code\\gui\\scripts\\inventory",
"Inventory_Group": {},
"Inventory_iGroup": {}
},
"gui_missions": {
"file": "epoch_code\\gui\\scripts\\missions",
"mission_refresh": {},
"mission_description": {}
},
"gui_postProcessing": {
"file": "epoch_code\\gui\\scripts\\post_process",
"postprocessCreate": {},
"postprocessAdjust": {},
"postprocessDestroy": {},
"setDrunk": {},
"setRadiation": {}
},
"worldToScreen": {
"file": "epoch_code\\gui\\scripts\\worldToScreen",
"gui3DCooldown": {},
"gui3DCooldownEH": {},
"gui3DWorldPos": {},
"gui3DWorldPosEH": {},
"gui3DModelPos": {},
"gui3DModelPosEH": {}
}
}
}
}

View File

@ -29,7 +29,7 @@ classname:
Obtaining Controls:
use epoch_getHUDCtrl function to obtain controls for manipulation
_name = Config name of your group
_index = each group hosts multiple elements, each element has it's index, starting from 0
_index = each group hosts multiple elements, each element has it's index, starting from 1! Don't use 0 as it returns configName
[_ConfigName, _index] call epoch_getHUDCtrl;
["myHUDname", 3] call epoch_getHUDCtrl;
*/

View File

@ -1,39 +0,0 @@
{
"_header": {
"@author": "Raimonds Virtoss - https://EpochMod.com",
"@contributors": [],
"@description": "Epoch dynamic player HUD config",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"rmx_dynamicHUD": {
"topRight": {
"classname": "RscPicture",
"defaultPos": 2,
"defaultPopulate": 1,
"arraySize": 10,
"width": 4,
"height": 4,
"offSetX": 0,
"offSetY": 1.3,
"angle": [
-5,
0.5,
0.5,
0.5
],
"scale": [
1,
0.05
]
},
"botcenter": {
"classname": "RscPicture",
"defaultPos": 7,
"defaultPopulate": 4,
"arraySize": 9,
"width": 5,
"height": 5
}
}
}

View File

@ -17,31 +17,34 @@ class CfgEpochClient
epochVersion = "0.4.0.0";
sapperRngChance = 100;
droneRngChance = 100;
buildingNearbyMilitary = 0;
buildingNearbyMilitary = 0;
buildingNearbyMilitaryRange = 300;
buildingNearbyMilitaryClasses[] = {"Cargo_Tower_base_F","Cargo_HQ_base_F","Cargo_Patrol_base_F","Cargo_House_base_F"};
restrictedLocations[] = {"NameCityCapital"};
restrictedLocationsRange = 300;
buildingRequireJammer = 0;
buildingCountLimit = 200;
buildingJammerRange = 75;
JammerPerGroup = 1;
buildingRequireJammer = 1; //1 = require jammer to build
buildingJammerRange = 75;
jammerPerGroup = 1;
minJammerDistance = 650;
maxBuildingHeigh = 33;
buildingCountLeader = 125;
buildingCountPerMember = 5;
storagecountLeader = 10;
storagecountPerMember = 5;
maxdoors = 8;
maxBuildingHeight = 33;
buildingCountLimit = 200; //overall building limit in range of jammer (overridden if "useGroupCountLimits=1")
storageCountLimit = 100; //overall storage limit in range of jammer (triggers only if "splitCountLimits=1" & "useGroupCountLimits=0")
splitCountLimits = 0; //1 = distinguish buildingCountLimit from storageCountLimit (ex.: buildingCountLimit=100, storageCountLimit=100 >> you can build 100 baseparts AND additional 100 storage objects like safes, lockboxes...)
useGroupCountLimits = 1; //1 = enable leader and member counts (doesn´t affect "splitCountLimits")
buildingCountLeader = 125; //ignore if "useGroupCountLimits=0"
buildingCountPerMember = 5; //ignore if "useGroupCountLimits=0"
storageCountLeader = 10; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0"
storageCountPerMember = 5; //ignore if "splitCountLimits=0" & "useGroupCountLimits=0"
maxdoors = 8;
maxgates = 5;
disableRemoteSensors = True;
disableRemoteSensors = true;
EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
deathMorphClass[] = {"Epoch_Sapper_F","Epoch_SapperB_F","I_UAV_01_F","Epoch_Cloak_F"};
niteLight[] = {1,1.88,22};
ryanZombiesEnabled = True;
ryanZombiesEnabled = true;
antagonistSpawnIndex[] = {{"Epoch_Cloak_F",1},{"GreatWhite_F",2},{"Epoch_Sapper_F",2},{"Epoch_SapperB_F",1},{"I_UAV_01_F",2},{"PHANTOM",1},{"B_Heli_Transport_01_F",1},{"EPOCH_RyanZombie_1",12}};
customVarsDefaults[] = {{"Temp",98.6,{106.7,95,102,105,96,95}},{"Hunger",1500,{5000,0,5001,5001,1250,0}},{"Thirst",750,{2500,0,2501,2501,625,0}},{"AliveTime",0,{-2,0}},{"Energy",0,{2500,0}},{"Wet",0,{100,0,35,55,-1,-1}},{"Soiled",0,{100,0,35,55,-1,-1}},{"Immunity",0,{100,0}},{"Toxicity",0,{100,0,35,55,-1,-1}},{"Stamina",100,{"EPOCH_playerStaminaMax",0}},{"Crypto",0,{250000,0}},{"HitPoints",{0,0,0,0},{1,0,0.5,1,-1,-1}},{"BloodP",100,{190,0,120,140,70,50}},{"SpawnArray",{},{}},{"Karma",0,{50000,-50000}},{"Alcohol",0,{100,0,35,55,-1,-1}},{"Radiation",0,{100,0,35,55,-1,-1}},{"Nuisance",0,{100,0}},{"MissionArray",{},{}}};
hudConfigs[] = {{{"BloodP","","",{"getPlayerDamage",">=",0.7}},"topRight","x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa",{"forceUpdate"}},{{"Oxygen","getPlayerOxygenRemaining","",{},{1,0,2,2,1,0.55}},"topRight","x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"},{"Hunger","topRight","x\addons\a3_epoch_code\Data\UI\hunger_ca.paa",{"forceBloodRise"}},{"Thirst","topRight","x\addons\a3_epoch_code\Data\UI\thirst_ca.paa",{"forceBloodRise"}},{"Temp","topRight",{"x\addons\a3_epoch_code\Data\UI\hot_ca.paa","x\addons\a3_epoch_code\Data\UI\cold_ca.paa"},{"forceFatigue"}},{"Toxicity","topRight","x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"},{"Wet","topRight","x\addons\a3_epoch_code\Data\UI\wet_ca.paa"},{"Alcohol","topRight","x\addons\a3_epoch_code\Data\UI\drunk_ca.paa"},{"Soiled","topRight","x\addons\a3_epoch_code\Data\UI\soiled_ca.paa"},{"Radiation","topRight","x\addons\a3_epoch_code\Data\UI\rads_ca.paa"},{{"HitPoints","getPlayerHitPointDamage","HitLegs"},"topRight","x\addons\a3_epoch_code\Data\UI\broken_ca.paa"}};
hudConfigs[] = {{{"BloodP","","",{"getPlayerDamage",">=",0.7}},"topRight","x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa",{"forceUpdate"}},{{"Oxygen","getPlayerOxygenRemaining","",{},{1,0,2,2,1,0.55}},"topRight","x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"},{"Hunger","topRight","x\addons\a3_epoch_code\Data\UI\hunger_ca.paa",{"forceBloodRise"}},{"Thirst","topRight","x\addons\a3_epoch_code\Data\UI\thirst_ca.paa",{"forceBloodRise"}},{"Temp","topRight",{"x\addons\a3_epoch_code\Data\UI\hot_ca.paa","x\addons\a3_epoch_code\Data\UI\cold_ca.paa"},{"forceFatigue"}},{"Toxicity","topRight","x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"},{"Alcohol","topRight","x\addons\a3_epoch_code\Data\UI\drunk_ca.paa"},{"Soiled","topRight","x\addons\a3_epoch_code\Data\UI\soiled_ca.paa"},{"Radiation","topRight","x\addons\a3_epoch_code\Data\UI\rads_ca.paa"},{{"HitPoints","getPlayerHitPointDamage","HitLegs"},"topRight","x\addons\a3_epoch_code\Data\UI\broken_ca.paa"}};
group_upgrade_lvl[] = {4,"1000",6,"1500",8,"2000",10,"2500",12,"3000",14,"3500",16,"4000",32,"8000",64,"16000"};
displayAddEventHandler[] = {"keyDown","keyUp"};
keyDown = "(_this call EPOCH_KeyDown)";

View File

@ -1,601 +0,0 @@
{
"CfgEpochClient": {
"epochVersion": "0.4.0.0",
"sapperRngChance": 100,
"droneRngChance": 100,
"buildingNearbyMilitary": 0,
"buildingNearbyMilitaryRange": 300,
"buildingNearbyMilitaryClasses": [
"Cargo_Tower_base_F",
"Cargo_HQ_base_F",
"Cargo_Patrol_base_F",
"Cargo_House_base_F"
],
"restrictedLocations": [
"NameCityCapital"
],
"restrictedLocationsRange": 300,
"buildingRequireJammer": 0,
"buildingCountLimit": 200,
"buildingJammerRange": 75,
"JammerPerGroup": 1,
"minJammerDistance": 650,
"maxBuildingHeigh": 33,
"buildingCountLeader": 125,
"buildingCountPerMember": 5,
"storagecountLeader": 10,
"storagecountPerMember": 5,
"maxdoors": 8,
"maxgates": 5,
"disableRemoteSensors": true,
"EPOCH_news": [
"Word is that Sappers have a new boss.",
"Dogs will often lure them monsters away.",
"My dog was blown up. I miss him.."
],
"deathMorphClass": [
"Epoch_Sapper_F",
"Epoch_SapperB_F",
"I_UAV_01_F",
"Epoch_Cloak_F"
],
"niteLight": [
1,
1.88,
22
],
"ryanZombiesEnabled": true,
"antagonistSpawnIndex": [
[
"Epoch_Cloak_F",
1
],
[
"GreatWhite_F",
2
],
[
"Epoch_Sapper_F",
2
],
[
"Epoch_SapperB_F",
1
],
[
"I_UAV_01_F",
2
],
[
"PHANTOM",
1
],
[
"B_Heli_Transport_01_F",
1
],
[
"EPOCH_RyanZombie_1",
12
]
],
"customVarsDefaults": [
[
"Temp",
98.6,
[
106.7,
95,
102,
105,
96,
95
]
],
[
"Hunger",
1500,
[
5000,
0,
5001,
5001,
1250,
0
]
],
[
"Thirst",
750,
[
2500,
0,
2501,
2501,
625,
0
]
],
[
"AliveTime",
0,
[
-2,
0
]
],
[
"Energy",
0,
[
2500,
0
]
],
[
"Wet",
0,
[
100,
0,
35,
55,
-1,
-1
]
],
[
"Soiled",
0,
[
100,
0,
35,
55,
-1,
-1
]
],
[
"Immunity",
0,
[
100,
0
]
],
[
"Toxicity",
0,
[
100,
0,
35,
55,
-1,
-1
]
],
[
"Stamina",
100,
[
"EPOCH_playerStaminaMax",
0
]
],
[
"Crypto",
0,
[
250000,
0
]
],
[
"HitPoints",
[
0,
0,
0,
0
],
[
1,
0,
0.5,
1,
-1,
-1
]
],
[
"BloodP",
100,
[
190,
0,
120,
140,
70,
50
]
],
[
"SpawnArray",
[],
[]
],
[
"Karma",
0,
[
50000,
-50000
]
],
[
"Alcohol",
0,
[
100,
0,
35,
55,
-1,
-1
]
],
[
"Radiation",
0,
[
100,
0,
35,
55,
-1,
-1
]
],
[
"Nuisance",
0,
[
100,
0
]
],
[
"MissionArray",
[],
[]
]
],
"hudConfigs": [
[
[
"BloodP",
"",
"",
[
"getPlayerDamage",
">=",
0.7
]
],
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\bleeding_ca.paa",
[
"forceUpdate"
]
],
[
[
"Oxygen",
"getPlayerOxygenRemaining",
"",
[],
[
1,
0,
2,
2,
1,
0.55
]
],
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\oxygen_ca.paa"
],
[
"Hunger",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\hunger_ca.paa",
[
"forceBloodRise"
]
],
[
"Thirst",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\thirst_ca.paa",
[
"forceBloodRise"
]
],
[
"Temp",
"topRight",
[
"x\\addons\\a3_epoch_code\\Data\\UI\\hot_ca.paa",
"x\\addons\\a3_epoch_code\\Data\\UI\\cold_ca.paa"
],
[
"forceFatigue"
]
],
[
"Toxicity",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\hazzard_ca.paa"
],
[
"Wet",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\wet_ca.paa"
],
[
"Alcohol",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\drunk_ca.paa"
],
[
"Soiled",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\soiled_ca.paa"
],
[
"Radiation",
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\rads_ca.paa"
],
[
[
"HitPoints",
"getPlayerHitPointDamage",
"HitLegs"
],
"topRight",
"x\\addons\\a3_epoch_code\\Data\\UI\\broken_ca.paa"
]
],
"group_upgrade_lvl": [
4,
"1000",
6,
"1500",
8,
"2000",
10,
"2500",
12,
"3000",
14,
"3500",
16,
"4000",
32,
"8000",
64,
"16000"
],
"displayAddEventHandler": [
"keyDown",
"keyUp"
],
"keyDown": "(_this call EPOCH_KeyDown)",
"keyUp": "(_this call EPOCH_KeyUp)",
"addEventHandler": [
"Respawn",
"Put",
"Take",
"InventoryClosed",
"InventoryOpened",
"Fired",
"Killed",
"HandleRating",
"GetInMan",
"GetOutMan"
],
"Respawn": "(_this select 0) call EPOCH_clientRespawn",
"Put": "(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler",
"Take": "(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck",
"Fired": "_this call EPOCH_fnc_playerFired;",
"InventoryClosed": "if !(EPOCH_arr_interactedObjs isEqualTo[]) then {[EPOCH_arr_interactedObjs] remoteExec['EPOCH_server_save_vehicles', 2]; EPOCH_arr_interactedObjs = [];};",
"InventoryOpened": "setMousePosition[0.5, 0.5]; call EPOCH_showStats;_this spawn EPOCH_initUI;_container = _this select 1;_lockedNear = false;if (_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated') then {{if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);};if (locked _container in [2, 3] || _container getVariable['EPOCH_Locked', false] || _lockedNear) then {[] spawn {disableSerialization;waitUntil {!isNull findDisplay 602};_display = findDisplay 602;_ctrl_cargo = _display displayCtrl 6401;_ctrl_ground = _display displayCtrl 6321;_ctrl_cargo ctrlEnable false;ctrlSetFocus _ctrl_ground;ctrlActivate _ctrl_ground;};};",
"Killed": "_this call EPOCH_fnc_playerDeath;",
"HandleRating": "EPOCH_playerKarma = EPOCH_playerKarma + (_this select 1);0",
"HandleDamage": "",
"HandleHeal": "",
"Dammaged": "",
"Hit": "",
"HitPart": "",
"GetInMan": "_this call EPOCH_getInMan",
"GetOutMan": "_this call EPOCH_getOutMan;",
"nonJammerAI": [
"B_Heli_Transport_01_F",
"PHANTOM",
"EPOCH_Sapper_F",
"Epoch_SapperB_F",
"I_UAV_01_F",
"EPOCH_RyanZombie_1"
],
"nonTraderAI": [
"B_Heli_Transport_01_F",
"PHANTOM",
"EPOCH_Sapper_F",
"Epoch_SapperB_F",
"I_UAV_01_F",
"Epoch_Cloak_F",
"GreatWhite_F",
"EPOCH_RyanZombie_1"
],
"nonTraderAIRange": 50,
"fishLoots": [
"ItemTuna",
"ItemSeaBass",
"ItemSeaBass",
"ItemSeaBass",
"ItemTrout",
"ItemTrout",
"ItemTrout",
"ItemTrout",
"ItemTrout",
"ItemTrout"
],
"animalAiTables": [
"Sheep_random_EPOCH",
"Sheep_random_EPOCH",
"Goat_random_EPOCH",
"Goat_random_EPOCH",
"Goat_random_EPOCH",
[
"Cock_random_EPOCH",
"Hen_random_EPOCH"
],
[
"Cock_random_EPOCH",
"Hen_random_EPOCH"
],
"Rabbit_EPOCH",
"Rabbit_EPOCH",
"Rabbit_EPOCH",
"Snake_random_EPOCH",
"Snake2_random_EPOCH",
[
"Fin_random_EPOCH",
"Alsatian_Random_EPOCH"
]
],
"playerDeathScreen": "TapOut",
"playerKilledScreen": "TapOut2",
"playerDisableRevenge": 0,
"playerRevengeMinAliveTime": 900,
"bankTransferTime": [
0.0006,
1.2,
0.06
],
"#include0": "\"CfgEpochClient\\Altis.hpp\"",
"#include1": "\"CfgEpochClient\\australia.hpp\"",
"#include2": "\"CfgEpochClient\\Bornholm.hpp\"",
"#include3": "\"CfgEpochClient\\Chernarus_Summer.hpp\"",
"#include4": "\"CfgEpochClient\\Chernarus.hpp\"",
"#include5": "\"CfgEpochClient\\Esseker.hpp\"",
"#include6": "\"CfgEpochClient\\ProvingGrounds_PMC.hpp\"",
"#include7": "\"CfgEpochClient\\Sara_dbe1.hpp\"",
"#include8": "\"CfgEpochClient\\Sara.hpp\"",
"#include9": "\"CfgEpochClient\\SaraLite.hpp\"",
"#include10": "\"CfgEpochClient\\Stratis.hpp\"",
"#include11": "\"CfgEpochClient\\takistan.hpp\"",
"#include12": "\"CfgEpochClient\\utes.hpp\"",
"#include13": "\"CfgEpochClient\\vr.hpp\"",
"#include14": "\"CfgEpochClient\\Zargabad.hpp\"",
"#include15": "\"CfgEpochClient\\Tanoa.hpp\"",
"#include16": "\"CfgEpochClient\\WorldInteractions.hpp\""
},
"CfgEpochSapper": {
"detonateDistMax": 8,
"groanTrig": 16,
"sRange": 300,
"smellDist": 24,
"reflexSpeed": 0.25,
"nestChance": 2,
"hideLevel": 72,
"chargeLevel": 62
},
"CfgEpochUAV": {
"UAVMinDist": 48,
"UAVMaxDist": 180,
"UAVHeight": 100
},
"CfgEpochUAVSupport": {
"unitTypes": [
"I_Soldier_EPOCH",
"I_Soldier2_EPOCH",
"I_Soldier3_EPOCH"
],
"maxUnitNum": 2,
"minAISkill": 0.2,
"maxAimingAccuracy": 0.7,
"maxAimingShake": 0.9,
"maxAimingSpeed": 0.6,
"maxEndurance": 0.4,
"maxSpotDistance": 0.4,
"maxSpotTime": 0.3,
"maxCourage": 0.3,
"maxReloadSpeed": 0.5,
"maxCommanding": 0.4,
"maxGeneral": 0.4
},
"CfgEpochAirDrop": {
"AirDropFreq": 1200,
"AirDropChance": 6
},
"CfgEpochCloak": {
"cRange": 300,
"cAggression": 75,
"attackFrequency": 120,
"attackDistance": 38,
"targetChangeFrequency": 42,
"teleportChance": 66,
"hoverFrequency": 1280
},
"CfgEpochRyanZombie": {
"zeds": [
"EPOCH_RyanZombie_1",
"EPOCH_RyanZombie_2",
"EPOCH_RyanZombie_3",
"EPOCH_RyanZombie_4",
"EPOCH_RyanZombie_5"
],
"attackDist": 1.6,
"range": 45,
"disposeRange": 800,
"smell": [
38,
0.42
],
"sight": [
28,
0.72
],
"hearing": [
108,
0.68
],
"memory": [
480,
0.8
],
"reflexSpeed": 0.25,
"moans": [
"ryanzombiesmoan1",
"ryanzombiesmoan2",
"ryanzombiesmoan3",
"ryanzombiesmoan4"
],
"screams": [
"ryanzombiesscream1",
"ryanzombiesscream2",
"ryanzombiesscream3",
"ryanzombiesscream4",
"ryanzombiesscream5",
"ryanzombiesscream6",
"ryanzombiesscream7",
"ryanzombiesscream8",
"ryanzombiesscream9"
]
}
}

View File

@ -1,44 +0,0 @@
{
"_header": {
"@author": "Raimonds Virtoss - https://EpochMod.com",
"@contributors": [],
"@description": "Config for Epoch Configuration system",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgEpochConfiguration": {
"remap": {
"name": "Controls",
"color": [
1,
1,
1,
1
],
"icon": "\\x\\addons\\a3_epoch_code\\Data\\owner.paa",
"controlGroup": "EpochConfigKeyMap"
},
"HUD": {
"name": "Customize HUD (WIP)",
"color": [
1,
1,
1,
1
],
"icon": "\\x\\addons\\a3_epoch_code\\Data\\owner.paa",
"controlGroup": "Epoch_main_config_dynamicHUD"
},
"html": {
"name": "Changelog",
"color": [
1,
1,
1,
1
],
"icon": "\\x\\addons\\a3_epoch_code\\Data\\owner.paa",
"controlGroup": "Epoch_main_config_changelog"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": [],
"@description": "Master loop is a simple config based event scheduler that handles all time based player related tasks.",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgMasterLoop": {
"Init": {
"file": "epoch_code\\compile\\setup\\masterLoop\\init.sqf"
},
"Events": {
"condition": "alive player",
"file": "epoch_code\\compile\\setup\\masterLoop",
"Event1": {
"delay": 1
},
"Event2": {
"delay": 10
},
"Event3": {
"delay": 15
},
"Event4": {
"delay": 30
},
"Event5": {
"delay": 60
},
"Event6": {
"delay": 300
},
"Event7": {
"delay": 600
}
}
}
}

View File

@ -1,603 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": [],
"@description": "Epoch object interaction configs.",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgObjectInteractions": {
"Default": {
"interactMode": 0,
"distance": 0,
"toxicChance": 0,
"bleedChance": 0,
"bloodpChance": 0,
"fatigueChance": 0,
"bleedAmount": 0,
"bloodpAmount": 0,
"soundEffect": [],
"soundEffectGlobal": 0,
"animationEffect": [],
"animationEffectGlobal": 0,
"canSee": "false",
"ppEffect": [],
"aliveState": 0,
"interactAttributes": []
},
"Land_MPS_EPOCH": {
"_inherit": "Default"
},
"container_epoch": {
"_inherit": "Default"
},
"PlotPole_EPOCH": {
"interactMode": 1,
"_inherit": "Default"
},
"Tipi_EPOCH": {
"interactMode": 4,
"_inherit": "Default"
},
"Tipi_SIM_EPOCH": {
"interactMode": 1,
"_inherit": "Default"
},
"StorageShelf_EPOCH": {
"interactMode": 4,
"_inherit": "Default"
},
"WorkBench_EPOCH": {
"interactMode": 4,
"_inherit": "Default"
},
"Foundation_EPOCH": {
"interactMode": 1,
"_inherit": "Default"
},
"WoodFoundation_EPOCH": {
"interactMode": 1,
"_inherit": "Default"
},
"Sheep_random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Goat_random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Cock_random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Hen_random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Rabbit_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Fin_random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Karma",
-100
],
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Alsatian_Random_EPOCH": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Karma",
-100
],
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Epoch_Sapper_F": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Toxicity",
20,
1
],
[
"Soiled",
20,
1
]
],
"_inherit": "Default"
},
"Epoch_SapperB_F": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Toxicity",
20,
1
],
[
"Soiled",
20,
1
]
],
"_inherit": "Default"
},
"I_UAV_01_F": {
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Energy",
20,
1
]
],
"_inherit": "Default"
},
"Epoch_Female_F": {
"interactMode": 2,
"_inherit": "Default"
},
"Epoch_Male_F": {
"interactMode": 2,
"_inherit": "Default"
},
"C_man_1": {
"interactMode": 2,
"_inherit": "Default"
},
"SapperHead_SIM_EPOCH": {
"interactMode": 0,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"SapperCorpse_SIM_EPOCH": {
"interactMode": 0,
"interactAttributes": [
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Snake_random_EPOCH": {
"interactMode": 3,
"distance": 3,
"toxicChance": 0.2,
"bloodpChance": 1,
"fatigueChance": 0.5,
"bleedAmount": 30,
"bloodpAmount": 3,
"soundEffect": [
"snake_bite0"
],
"canSee": "!(lineIntersects[eyePos _unit, aimPos _target, _unit, _target])",
"ppEffect": [],
"aliveState": 0,
"interactAttributes": [
[
"Toxicity",
20,
1
],
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"Snake2_random_EPOCH": {
"interactMode": 3,
"distance": 3,
"toxicChance": 0.1,
"bloodpChance": 1,
"fatigueChance": 0.5,
"bleedAmount": 30,
"bloodpAmount": 3,
"soundEffect": [
"snake_bite0"
],
"canSee": "!(lineIntersects[eyePos _unit, aimPos _target, _unit, _target])",
"ppEffect": [],
"aliveState": 0,
"interactAttributes": [
[
"Toxicity",
10,
1
],
[
"Soiled",
1
]
],
"_inherit": "Default"
},
"GreatWhite_F": {
"interactMode": 3,
"distance": 6,
"toxicChance": 0,
"bleedChance": 1,
"bloodpChance": 1,
"fatigueChance": 1,
"bleedAmount": 100,
"bloodpAmount": 3,
"canSee": "true",
"ppEffect": [],
"aliveState": 1,
"interactAttributes": [],
"_inherit": "Default"
},
"SmokeShellCustom": {
"distance": 6,
"toxicChance": 1,
"bleedChance": 0,
"bloodpChance": 1,
"fatigueChance": 1,
"bleedAmount": 0,
"bloodpAmount": 3,
"canSee": "true",
"ppEffect": [],
"_inherit": "Default"
},
"Epoch_Cloak_F": {
"distance": 30,
"toxicChance": 0,
"bloodpChance": 0.9,
"fatigueChance": 0.5,
"bleedAmount": 66,
"bloodpAmount": 3,
"soundEffect": [
"cultist_nearby"
],
"canSee": "!(lineIntersects[eyePos _unit, aimPos _target, _unit, _target])",
"ppEffect": [
[
[
"filmGrain",
2005,
[
0.1,
-1,
0.05,
0.05,
2,
false
],
1
],
[
"chromAberration",
2006,
[
0.01,
0.01,
true
],
5
],
[
"colorCorrections",
2007,
[
1,
1,
0,
[
1.5,
-1,
-1.5,
0.5
],
[
5,
3.5,
-5,
-0.5
],
[
-3,
5,
-5,
-0.5
]
],
5
],
[
"radialBlur",
2008,
[
0.02,
0.02,
0.15,
0.15
],
5
]
],
2,
[
[],
[
[
0,
0,
true
],
5
],
[
[
1,
1,
-0.01,
[
0.0,
0.0,
0.0,
0.0
],
[
1.5,
1,
1.2,
0.6
],
[
0.199,
0.587,
0.114,
0.2
]
],
5
],
[
[
0,
0,
0,
0
],
5
]
],
5,
[]
],
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Toxicity",
20,
1
],
[
"Soiled",
20,
1
]
],
"_inherit": "Default"
},
"EPOCH_RyanZombie_1": {
"distance": 3,
"toxicChance": 0.1,
"bloodpChance": 0.9,
"fatigueChance": 0.4,
"bleedAmount": 30,
"bloodpAmount": 3,
"soundEffect": [
[
"ryanzombies\\sounds\\attack1.ogg",
400
],
[
"ryanzombies\\sounds\\attack2.ogg",
400
],
[
"ryanzombies\\sounds\\attack3.ogg",
400
],
[
"ryanzombies\\sounds\\attack4.ogg",
400
],
[
"ryanzombies\\sounds\\attack5.ogg",
400
]
],
"soundEffectGlobal": 1,
"animationEffect": [
"AwopPercMstpSgthWnonDnon_throw"
],
"animationEffectGlobal": 1,
"canSee": "!(lineIntersects[eyePos _unit, aimPos _target, _unit, _target])",
"ppEffect": [],
"interactMode": 3,
"aliveState": 1,
"interactAttributes": [
[
"Toxicity",
5,
1
],
[
"Soiled",
10,
1
]
],
"_inherit": "Default"
},
"EPOCH_RyanZombie_2": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_C": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_C": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_C": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_C": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_C": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_Sp": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_Sp": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_Sp": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_Sp": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_Sp": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_B": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_B": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_B": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_B": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_B": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_W": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_W": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_W": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_W": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_W": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_M": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_M": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_M": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_M": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_M": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_1_S": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_2_S": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_3_S": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_4_S": {
"_inherit": "EPOCH_RyanZombie_1"
},
"EPOCH_RyanZombie_5_S": {
"_inherit": "EPOCH_RyanZombie_1"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,226 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": ["Andrew Gregory"],
"@description": "RemoteExec whitelist for Epoch Survival gamemode. This also blacklists default A3 remoteExec commands.",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgRemoteExec": {
"Functions": {
"mode": 1,
"jip": 0,
"EPOCH_server_save_vehicles": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_saveBuilding": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_upgradeBUILD": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_removeBUILD": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_paintBUILD": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_maintBUILD": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_loadPlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_checkPlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_deadPlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_destroyTrash": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_knockDownTree": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_mineRocks": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_lootAnimal": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_handle_say3D": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_handle_switchMove": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_client_bitePlayer": {
"allowedTargets": 1,
"jip": 0
},
"EPOCH_server_upgradeGroup": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_updatePlayerGroup": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_createGroup": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_deleteGroup": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_invitePlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_lootContainer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_revivePlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_storeCrypto": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_tradeRequest": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_makeTrade": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_makeNPCTrade": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_takeCrypto": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_repairVehicle": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_fillVehicle": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_lockVehicle": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_equippedItem": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_lockStorage": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_packStorage": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_packJack": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_localCleanup": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_teleportPlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_fillContainer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_handle_sapperObjs": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_Server_createAirDrop": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_airDropCrate": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_Server_createObject": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_fnc_savePlayer": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_unpackBackpack": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_triggerAntagonist": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_deadPlayerDetonate": {
"allowedTargets": 2,
"jip": 0
},
"epoch_server_playersetvariable": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_spawn_vehicle": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_Server_missionComms": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_serverLootObject": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_makeMarker": {
"allowedTargets": 2,
"jip": 0
},
"EPOCH_server_removeMarker": {
"allowedTargets": 2,
"jip": 0
}
},
"Commands": {
"mode": 0
}
}
}

View File

@ -1,59 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": [],
"@description": "Custom Epoch config for say3d broadcasting to nearby players.",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgSay3Dhandler": {
"snake_bite0": {
"distance": 100
},
"cultist_nearby": {
"distance": 100
},
"dog_bark": {
"distance": 750
},
"dog_cry": {
"distance": 600
},
"hed_cluck0": {
"distance": 600
},
"hed_cluck1": {
"distance": 600
},
"hed_cluck2": {
"distance": 600
},
"cultist_talk": {
"distance": 30
},
"cultist_laugh": {
"distance": 30
},
"cloak_death": {
"distance": 30
},
"drone_alert0": {
"distance": 400
},
"sapper_alert0": {
"distance": 400
},
"sapper_groan0": {
"distance": 400
},
"sapper_groan1": {
"distance": 400
},
"sapper_groan2": {
"distance": 400
},
"sapper_explode": {
"distance": 1000
}
}
}

View File

@ -1,288 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": [],
"@description": "Custom Epoch config for base building Snap check offsets",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgSnapChecks": {
"Hesco3_EPOCH": {
"nails": [
[
[
1.6,
0,
-0.6
],
[
1.6,
0,
-0.75
]
],
[
[
-1.6,
0,
-0.6
],
[
-1.6,
0,
-0.75
]
],
[
[
0,
0,
-0.0307557
],
[
1.8625,
0,
-0.0307557
]
],
[
[
0,
0,
-0.0307557
],
[
-1.8625,
0,
-0.0307557
]
]
]
},
"WoodLargeWall_EPOCH": {
"nails": [
[
[
2.46932,
0,
0.120775
],
[
2.46932,
0,
-0.190775
]
],
[
[
-2.46932,
0,
0.120775
],
[
-2.46932,
0,
-0.190775
]
],
[
[
0,
0,
1.5
],
[
2.76932,
0,
1.5
]
],
[
[
0,
0,
1.5
],
[
-2.76932,
0,
1.5
]
]
]
},
"WoodWall1_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodWall2_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodWall3_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodWall4_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodLargeWallCor_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodLargeWallDoorway_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodLargeWallDoor_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodLargeWallDoorL_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"CinderWallGarage_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"CinderWall_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"CinderWallHalf_EPOCH": {
"_inherit": "WoodLargeWall_EPOCH"
},
"WoodFloor_Epoch": {
"nails": [
[
[
0,
0,
0.15
],
[
2.8555,
0,
0.15
]
],
[
[
0,
0,
0.15
],
[
0,
2.8555,
0.15
]
],
[
[
0,
0,
0.15
],
[
-2.8555,
0,
0.15
]
],
[
[
0,
0,
0.15
],
[
0,
-2.8555,
0.15
]
],
[
[
2.5555,
0,
0.15
],
[
2.5555,
0,
-0.15
]
],
[
[
-2.5555,
0,
0.15
],
[
-2.5555,
0,
-0.15
]
],
[
[
0,
-2.5555,
0.15
],
[
0,
-2.5555,
-0.15
]
],
[
[
0,
2.5555,
0.15
],
[
0,
2.5555,
-0.15
]
]
]
},
"MetalFloor_EPOCH": {
"_inherit": "WoodFloor_Epoch"
},
"WoodStairs_EPOCH": {
"nails": [
[
[
0.1,
0,
0.05
],
[
0.1,
0,
-0.2
]
],
[
[
-0.1,
0,
0.05
],
[
-0.1,
0,
-0.2
]
]
]
},
"WoodStairs2_EPOCH": {
"_inherit": "WoodStairs_EPOCH"
},
"WoodTower_EPOCH": {
"_inherit": "WoodStairs_EPOCH"
},
"WoodRamp_EPOCH": {
"_inherit": "WoodStairs_EPOCH"
}
}
}

View File

@ -1,23 +0,0 @@
{
"_header": {
"@author": "Aaron Clark - https://EpochMod.com",
"@contributors": [],
"@description": "Custom Epoch config for animation broadcasting to nearby players.",
"@licence": "Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike",
"@github": "https://github.com/EpochModTeam/Epoch/tree/release/Sources/{filename}"
},
"CfgSwitchMovehandler": {
"AovrPercMrunSrasWrflDf": {
"distance": 1000
},
"epoch_unarmed_jump": {
"distance": 1000
},
"AwopPercMstpSgthWnonDnon_throw": {
"distance": 1000
},
"AmovPercMstpSnonWnonDnon_SaluteOut": {
"distance": 1000
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
build=639;
build=655;

View File

@ -1 +1 @@
build=639;
build=655;

View File

@ -39,6 +39,6 @@ if(_return isEqualTo[]) then {
}forEach getArray(configFile >> _configName >> _keyName >> _arrayName);
_return = [_lootTableArray,_weightedArray];
missionNamespace setVariable[format["EPOCH_LT_%1_%2_%3",_configName,_keyName,_arrayName],_return];
diag_log format["EPOCH_LT_%1_%2_%3 = %4",_configName,_keyName,_arrayName,_return];
// diag_log format["EPOCH_LT_%1_%2_%3 = %4",_configName,_keyName,_arrayName,_return];
};
_return

View File

@ -12,7 +12,9 @@
Github:
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_trading/EPOCH_server_makeTrade.sqf
*/
private ["_current_crypto","_player","_object","_getCrypto"];
//[[[cog import generate_private_arrays ]]]
private ["_getCrypto"];
//[[[end]]]
params ["_player",["_token","",[""]],"_object"];
if !([_player,_token] call EPOCH_server_getPToken) exitWith {};
@ -21,10 +23,10 @@ if (_player distance _object > 10) exitWith {};
_getCrypto = _object getVariable["Crypto", 0];
if (_getCrypto > 0) then {
// remove crypto from object
_object setVariable["Crypto", nil, true];
// send data back to player
[_player,_getCrypto] call EPOCH_server_effectCrypto;
// debug and logging.
diag_log format["Epoch: ADMIN: %1 picked up %2 Crypto from object %3 with puid %4 at %5", getPlayerUID _player, _current_crypto, [_object, typeOf _object],_object getVariable['PUID', ''],getposATL _object];
diag_log format["Epoch: ADMIN: %1 picked up %2 Crypto from object %3 with puid %4 at %5", getPlayerUID _player, _getCrypto, [_object, typeOf _object],_object getVariable['PUID', ''],getposATL _object];
};

View File

@ -507,7 +507,8 @@ for "_i" from 1 to 3 do {
};
_skn_spawnPointCenter = getMarkerPos "respawn_west";
_centerDistance = 30;
_centerDistance = [_serverSettingsConfig, "antihack_TPcenterDistance", 30] call EPOCH_fnc_returnConfigEntry;
_maxTravelDistance = [_serverSettingsConfig, "antihack_maxTravelDistance", 30] call EPOCH_fnc_returnConfigEntry;
// Only set these if prefix is not used since we can filter for it
if (_skn_PVSPrefix == "") then {
@ -869,8 +870,8 @@ _skn_code_antihack = compileFinal ("
_curPos = getPosATL vehicle player;
_distance = _lastPos distance _curPos;
if ((_curTime-_lastTime)>1 || _distance>10) then {
if (((_distance/(_curTime-_lastTime)) > 16) && _notNearbySpawn && (player == vehicle player)) then {
if ((_curTime-_lastTime) > 1 || _distance > "+str _maxTravelDistance+") then {
if (((_distance/(_curTime-_lastTime)) > "+str _maxTravelDistance+") && _notNearbySpawn && (player == vehicle player)) then {
if (isNil '"+_skn_antiTeleportPVC+"') then {
[format['[TEST] TP from %1 to %2, %3 meters, now at %4', _lastPos, _curPos, round _distance, getPosATL player],1] call "+_sknBanANDSleep+";
vehicle player setPosATL _lastPos;
@ -1038,7 +1039,13 @@ call compile ("'"+_skn_doAdminRequest+"' addPublicVariableEventHandler {
};
};
[format['Delete: %1 at [%2]',typeOf _content, getPos _content],0] call "+_skn_server_adminLog+";
deleteVehicle _content;
_content spawn {
if !(isNull _this) then {
_this hideObjectGlobal true;
sleep 1;
if !(isNull _this) then {deleteVehicle _this};
};
};
};
if (_case == 106) then {
_admin hideObjectGlobal _content;

Binary file not shown.

View File

@ -1 +1 @@
build=639;
build=655;

View File

@ -1 +1 @@
build=639;
build=655;

Some files were not shown because too many files have changed in this diff Show More