bump version to 0.4

* Adds experimental test of new HUD from @raymix
* Hud elements are added and removed dynamically so that all active
icons are always right justified.
* Icons scale in size when critical levels are reached.
* added use of new A3 features to control angle and scale of hud icons.
* warning and critical levels are controlled via customVarsDefaults.

* Added larger group sizes up to 64 players and increased Krypto costs.
* reworked Finsh login in login fsm to wait for display 46 not to be
Null.
This commit is contained in:
vbawol 2016-08-08 14:45:39 -05:00
parent 9d8734acdc
commit 810fe5d65c
67 changed files with 246 additions and 88 deletions

1
Changelogs/0.4.0.0.txt Normal file
View File

@ -0,0 +1 @@
TBA

View File

@ -1,8 +1,8 @@
/*%FSM<COMPILE "D:\SteamLibrary\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, Epoch Login">*/
/*%FSM<COMPILE "F:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, Epoch Login">*/
/*%FSM<HEAD>*/
/*
item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"};
item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"};
item1[] = {"FINISH",1,4346,-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"};
@ -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,-534.004700,883.834412,1895.573975,986.017029,1287,884,1};
window[] = {2,-1,-1,-32000,-32000,1149,2931,3915,382,3,1305};
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};
*//*%FSM</HEAD>*/
class FSM
{
@ -236,35 +236,34 @@ class FSM
{
name = "FINISH";
itemno = 1;
init = /*%FSM<STATEINIT""">*/"[] spawn {" \n
" disableSerialization;" \n
" waitUntil{!isNull (findDisplay 46)};" \n
" _display = findDisplay 46;" \n
" {" \n
" _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n
" } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n
" call epoch_dynamicHUD_start; " \n
" player switchMove """";" \n
"};" \n
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
"3 fadeSound 1;" \n
"// reset anim state" \n
"player switchMove """";" \n
"" \n
"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Finish!"";" \n
"};" \n
"// setup Epoch Hud" \n
"call epoch_dynamicHUD_start;" \n
"[] spawn EPOCH_masterLoop;" \n
"" \n
"EPOCH_loginFSM = nil;" \n
"EPOCH_playerLoginInit = nil;" \n
"" \n
"//player enableSimulation true;" \n
"" \n
"// fade in sound and screen" \n
"3 fadeSound 1;" \n
"titleCut ["""", ""BLACK IN"", 1];" \n
"1338 cutText ["""",""PLAIN"",0]; " \n
"" \n
"progressLoadingScreen 1.0;" \n
"" \n
"endLoadingScreen;" \n
"EPOCH_loadingScreenDone = true;"/*%FSM</STATEINIT""">*/;
"EPOCH_loadingScreenDone = true;" \n
"" \n
"if (_debug) then {" \n
" diag_log ""EPOCH-LOGIN: Finish!"";" \n
"};" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
@ -911,7 +910,6 @@ class FSM
" }forEach EPOCH_playerHitPoints;" \n
"};" \n
"" \n
"[] spawn EPOCH_masterLoop;" \n
"true call EPOCH_fnc_Weather;" \n
"[5,100] spawn EPOCH_niteLight;" \n
"" \n
@ -965,7 +963,7 @@ class FSM
priority = 0.000000;
to="FINISH";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"preloadCamera _playerPos"/*%FSM</CONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"!(isNull (findDisplay 46)) && {preloadCamera _playerPos}"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"call compile _extraPayload;"/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/

View File

@ -81,39 +81,133 @@ _hungry = EPOCH_playerHunger <= 0;
_thirsty = EPOCH_playerThirst <= 0;
_warnbloodPressure = EPOCH_playerBloodP > 120;
_thirst ctrlShow (EPOCH_playerThirst <= 625);
if (ctrlShown _thirst) then {
[_thirst,_thirsty] call _fadeUI;
//_thirst ctrlShow (EPOCH_playerThirst <= 625);
/*
if (EPOCH_playerThirst <= 625) then {
_thirst = ["topRight",_hudIndex] call epoch_getHUDCtrl;
_hudIndex = _hudIndex + 1;
_thirst ctrlSetText "x\addons\a3_epoch_code\Data\UI\thirst_ca.paa";
[_thirst,_thirsty] call _scaleUI;
_color = [2500,0,EPOCH_playerThirst,1] call EPOCH_colorRange;
_thirst ctrlSetTextColor _color;
};
_hunger ctrlShow (EPOCH_playerHunger <= 1250);
if (ctrlShown _hunger) then {
[_hunger,_hungry] call _fadeUI;
if (EPOCH_playerHunger <= 1250) then {
_hunger = ["topRight",_hudIndex] call epoch_getHUDCtrl;
_hudIndex = _hudIndex + 1;
_hunger ctrlSetText "x\addons\a3_epoch_code\Data\UI\hunger_ca.paa";
[_hunger,_hungry] call _scaleUI;
_color = [5000,0,EPOCH_playerHunger,1] call EPOCH_colorRange;
_hunger ctrlSetTextColor _color;
};
*/
_playerOxygen = getOxygenRemaining player;
_oxygen ctrlShow (_playerOxygen < 1);
if (ctrlShown _oxygen) then {
[_oxygen,(_playerOxygen <= 0.55)] call _fadeUI;
//_oxygen ctrlShow (_playerOxygen < 1);
if (_playerOxygen < 1) then {
_hudIndex = missionNamespace getVariable [format["EPOCH_dynHUD_%1","topRight"],1];
_oxygen = ["topRight",_hudIndex] call epoch_getHUDCtrl;
missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], _hudIndex + 1];
_oxygen ctrlSetText "x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa";
[_oxygen,(_playerOxygen <= 0.55)] call _scaleUI;
_color = [0,1,_playerOxygen,1] call EPOCH_colorRange;
_oxygen ctrlSetTextColor _color;
};
_hazzard ctrlShow (EPOCH_playerToxicity > 35);
if (ctrlShown _hazzard) then {
[_hazzard,(EPOCH_playerToxicity >= 55)] call _fadeUI;
_color = [0,100,EPOCH_playerToxicity,1] call EPOCH_colorRange;
_hazzard ctrlSetTextColor _color;
};
// dynamic start (greater than)
{
_x params [["_selVarName",""],["_HUDclass","topRight"],["_ctrlText",""]];
_varIndex = EPOCH_customVars find _selVarName;
if (_varIndex != -1) then {
_currentVarVal = missionNamespace getVariable[format['EPOCH_player%1', _selVarName],EPOCH_defaultVars select _varIndex];
(EPOCH_customVarLimits select _varIndex) params [["_playerLimitMax",100],["_playerLimitMin",0],["_playerWarnLimit",25],["_playerCriticalLimit",75],["_playerWarnLow",0],["_playerCriticalLow",0]];
if (_playerLimitMax isEqualType "") then {
_playerLimitMax = missionNamespace getVariable [_playerLimitMax, 0];
};
if (_playerLimitMin isEqualType "") then {
_playerLimitMin = missionNamespace getVariable [_playerLimitMin, 0];
};
_warnLow = _currentVarVal < _playerWarnLow;
_warnHigh = _currentVarVal > _playerWarnLimit;
_criticalLow = _currentVarVal <= _playerCriticalLow;
_criticalHigh = _currentVarVal >= _playerCriticalLimit;
if (_warnHigh || _warnLow) then {
_hudIndex = missionNamespace getVariable [format["EPOCH_dynHUD_%1",_HUDclass],1];
_curCtrl = [_HUDclass,_hudIndex] call epoch_getHUDCtrl;
missionNamespace setVariable [format["EPOCH_dynHUD_%1",_HUDclass], _hudIndex + 1];
if (_ctrlText isEqualType []) then {
_ctrlText = if (_warnHigh) then {_ctrlText select 0} else {_ctrlText select 1};
};
_curCtrl ctrlSetText _ctrlText;
_critical = (_criticalHigh || _criticalLow);
[_curCtrl,_critical] call _scaleUI;
_color = [_playerLimitMin,_playerLimitMax,_currentVarVal,1] call EPOCH_colorRange;
_curCtrl ctrlSetTextColor _color;
};
};
} forEach
[
[
'Temp',
"topRight",
[
"x\addons\a3_epoch_code\Data\UI\hot_ca.paa",
"x\addons\a3_epoch_code\Data\UI\cold_ca.paa"
]
],
[
'Hunger',
"topRight",
"x\addons\a3_epoch_code\Data\UI\hunger_ca.paa"
],
[
'Thirst',
"topRight",
"x\addons\a3_epoch_code\Data\UI\thirst_ca.paa"
],
[ 'Toxicity',
"topRight",
"x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"
],
[
'Wet',
"topRight",
"x\addons\a3_epoch_code\Data\UI\wet_ca.paa"
],
[
'BloodP',
"topRight",
"x\addons\a3_epoch_code\Data\UI\bleeding_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"
]
];
// dynamic end
_legDamage = player getHitPointDamage "HitLegs";
_broken ctrlShow (_legDamage >= 0.5);
if (ctrlShown _broken) then {
[_broken,true] call _fadeUI;
// _broken ctrlShow (_legDamage >= 0.5);
if (_legDamage >= 0.5) then {
_hudIndex = missionNamespace getVariable [format["EPOCH_dynHUD_%1","topRight"],1];
_broken = ["topRight",_hudIndex] call epoch_getHUDCtrl;
missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], _hudIndex + 1];
_broken ctrlSetText "x\addons\a3_epoch_code\Data\UI\broken_ca.paa";
[_broken,true] call _scaleUI;
_color = [1,0,_legDamage,1] call EPOCH_colorRange;
_broken ctrlSetTextColor _color;
};
@ -136,9 +230,13 @@ if (_envCold || _envHot || _hungry || _thirsty) then {
};
_critical = (damage player >= 0.7 || _warnbloodPressure);
_emergency ctrlShow _critical;
if (ctrlShown _emergency) then {
[_emergency,(EPOCH_playerBloodP > 140)] call _fadeUI;
// _emergency ctrlShow _critical;
if (_critical) then {
_hudIndex = missionNamespace getVariable [format["EPOCH_dynHUD_%1","topRight"],1];
_emergency = ["topRight",_hudIndex] call epoch_getHUDCtrl;
missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], _hudIndex + 1];
_emergency ctrlSetText "x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa";
[_emergency,(EPOCH_playerBloodP > 140)] call _scaleUI;
_color = [180,100,EPOCH_playerBloodP,1] call EPOCH_colorRange;
_emergency ctrlSetTextColor _color;
};
@ -154,3 +252,12 @@ if (EPOCH_debugMode) then {
};
call EPOCH_TradeLoop;
// blank out unused hud elements
_hudIndex = missionNamespace getVariable [format["EPOCH_dynHUD_%1","topRight"],1];
for "_i" from _hudIndex to 9 do {
_c = ["topRight",_i] call epoch_getHUDCtrl;
_c ctrlSetText "";
};
missionNamespace setVariable [format["EPOCH_dynHUD_%1","topRight"], nil];

View File

@ -22,20 +22,33 @@ if (count EPOCH_playerSpawnArray != count EPOCH_spawnIndex) then{
{ EPOCH_playerSpawnArray pushBack 0 } forEach EPOCH_spawnIndex;
};
9990 cutRsc ["EpochGameUI","PLAIN",2,false];
_display = uiNamespace getVariable "EPOCH_EpochGameUI";
//9990 cutRsc ["EpochGameUI","PLAIN",2,false];
//_display = uiNamespace getVariable "EPOCH_EpochGameUI";
/*
EPOCH_fnc_makeCtrl = {
params [["_picture",""],["_HUDclass","topRight"]];
private _index = missionNamespace getvariable ["EPOCH_dynamicCtrlIndex",1];
private _ctrl = [_HUDclass,_index] call epoch_getHUDCtrl;
_ctrl ctrlSetText _picture;
missionNamespace setvariable ["EPOCH_dynamicCtrlIndex",_index + 1];
_ctrl
};
_thirst = _display displayCtrl 21201;
_hunger = _display displayCtrl 21202;
_broken = _display displayCtrl 21203;
_oxygen = _display displayCtrl 21204;
_hazzard = _display displayCtrl 21205;
_emergency = _display displayCtrl 21206;
_thirst = ["x\addons\a3_epoch_code\Data\UI\thirst_ca.paa"] call EPOCH_fnc_makeCtrl;
_hunger = ["x\addons\a3_epoch_code\Data\UI\hunger_ca.paa"] call EPOCH_fnc_makeCtrl;
_broken = ["x\addons\a3_epoch_code\Data\UI\broken_ca.paa"] call EPOCH_fnc_makeCtrl;
_oxygen = ["x\addons\a3_epoch_code\Data\UI\oxygen_ca.paa"] call EPOCH_fnc_makeCtrl;
_hazzard = ["x\addons\a3_epoch_code\Data\UI\hazzard_ca.paa"] call EPOCH_fnc_makeCtrl;
_emergency = ["x\addons\a3_epoch_code\Data\UI\bleeding_ca.paa"] call EPOCH_fnc_makeCtrl;
diag_log format ["init HUD: %1 %2 %3 %4 %5 %6", _thirst,_hunger,_broken,_oxygen,_hazzard,_emergency];
{
_x ctrlShow false;
}forEach[_thirst,_hunger,_broken,_oxygen,_hazzard,_emergency];
*/
// find radio
{
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) == "ItemRadio") exitWith{
@ -97,6 +110,26 @@ _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

@ -17,14 +17,13 @@
_cfg = "rmx_dynamicHUD" call EPOCH_returnConfig;
_configs = "true" configClasses _cfg;
diag_log format ["Epoch_dynamicHUD_start: %1", _configs];
setMousePosition [0.5,0.5];
disableSerialization;
_dsp = findDisplay 46;
rmx_var_dynamicHUD_groups = [];
rmx_var_dynamicHUD_groupCTRL = [];
{
_group = _dsp ctrlCreate ["rscControlsGroup", call Epoch_getIDC];
rmx_var_dynamicHUD_groups set [_forEachIndex, _group];
@ -38,6 +37,9 @@ rmx_var_dynamicHUD_groupCTRL = [];
_height = getNumber (_x >> "height");
_width = getNumber (_x >> "width");
(getArray (_x >> "angle")) params [["_deg",0],["_xCenter",0.5],["_yCenter",0.5],["_tilt",0]];
(getArray (_x >> "scale")) params [["_scale",1.0],["_reduction",0]];
_wCtrl = _width * GUI_GRID_W;
_hCtrl = _height * GUI_GRID_H;
_oX = _offsetX * _wCtrl;
@ -68,13 +70,21 @@ rmx_var_dynamicHUD_groupCTRL = [];
_groupPos set [0, (_groupPos select 0)+_oX];
_groupPos set [1, (_groupPos select 1)+_oY];
_group ctrlSetPosition _groupPos;
_group ctrlCommit 0;
_evenOdd = true;
rmx_var_dynamicHUD_groupCTRL set [_forEachIndex, [(configName _x)]];
_angle = [_deg,_xCenter,_yCenter];
for "_i" from 0 to (_arraySize - 1) do {
_c = _dsp ctrlCreate [_classname, call Epoch_getIDC, _group];
_c ctrlSetAngle _angle;
_angle set [0, (_angle select 0) - _tilt];
(rmx_var_dynamicHUD_groupCTRL select _forEachIndex) pushBack _c;
_cPos = switch _defaultPopulate do {
@ -117,6 +127,9 @@ rmx_var_dynamicHUD_groupCTRL = [];
default {[0,0,0,0]};
};
_c ctrlSetPosition _cPos;
_c ctrlSetScale _scale;
_c setVariable ["ctrl_scale", _scale];
_scale = _scale - _reduction;
_c ctrlCommit 0;
};
} forEach _configs;

View File

@ -55,7 +55,10 @@ EPOCH_arr_interactedObjs = [];
EPOCH_buildOption = 0;
EPOCH_nearestLocations = [];
EPOCH_lastFiredLocation = [];
rmx_var_drag_MouseDown = false;
rmx_var_dynamicHUD_groups = [];
rmx_var_dynamicHUD_groupCTRL = [];
["EPOCH_onEachFrame", "onEachFrame", EPOCH_onEachFrame] call BIS_fnc_addStackedEventHandler;

View File

@ -41,11 +41,13 @@ class rmx_dynamicHUD
classname = "RscPicture";
defaultPos = 2;
defaultPopulate = 1;
arraySize = 8;
arraySize = 10;
width = 4;
height = 4;
offSetX = 0;
offSetY = 0;
angle[] = {15, 0.5, 0.5, 1.5}; // [start degrees, x, y, tilt]
scale[] = {1, 0.05}; // [start scale, size reduction]
};
class botcenter
{
@ -55,6 +57,7 @@ class rmx_dynamicHUD
arraySize = 9;
width = 5;
height = 5;
//angle[] = {25, 0.5, 0.5};
};
};

View File

@ -13,7 +13,7 @@
*/
class CfgEpochClient
{
epochVersion = "0.3.9.0";
epochVersion = "0.4.0.0";
sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper
droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired
buildingNearbyMilitary = 0; //1 to allow building nearby Military buildings
@ -36,7 +36,7 @@ class CfgEpochClient
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"};//Random selection of these classes when player morphs after death. Currently available: Epoch_Cloak_F, Epoch_SapperB_F, Epoch_Sapper_F, I_UAV_01_F
niteLight[] = {1.88,22};//Set ambient lighting at night: {Brightness of light,Height of light}. Default (Low Ambient): {1.88,22} | Twilight: {7.2,88} | Distant: {12.8,142}
niteLight[] = {1, 1.88, 22};//Set ambient lighting at night: {1 = enabled/0 = disabled, Brightness of light,Height of light}. Default (Low Ambient): {1.88,22} | Twilight: {7.2,88} | Distant: {12.8,142}
ryanZombiesEnabled = true; // enabled by default, false to disable
antagonistSpawnIndex[] = {
{"Epoch_Cloak_F", 1}, // {"type", limit}
@ -49,29 +49,29 @@ class CfgEpochClient
{"EPOCH_RyanZombie_1",12}
};
customVarsDefaults[] = {
// EPOCH_player + varName, default value, {max,min}
{"Temp",98.6,{106.7,95}},
{"Hunger",5000,{5000,0}},
{"Thirst",2500,{2500,0}},
// EPOCH_player + varName, default value, {max,min,warn-high,critical-high,warn-low,critical-low}
{"Temp",98.6,{106.7,95,102,105,96,95}},
{"Hunger",5000,{5000,0,5001,5001,1250,0}},
{"Thirst",2500,{2500,0,2501,2501,625,0}},
{"AliveTime",0,{-2,0}},
{"Energy",0,{2500,0}},
{"Wet",0,{100,0}},
{"Soiled",0,{100,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}},
{"Toxicity",0,{100,0,35,55,-1,-1}},
{"Stamina",100,{"EPOCH_playerStaminaMax",0}},
{"Crypto",0,{250000,0}},
{"HitPoints",{0,0,0,0},{1,1,1,1}},
{"BloodP",100,{190,0}},
{"BloodP",100,{190,0,120,140,99,0}},
{"SpawnArray",{},{}},
{"Karma",0,{50000,-50000}},
{"Alcohol",0,{100,0}},
{"Radiation",0,{100,0}},
{"Alcohol",0,{100,0,35,55,-1,-1}},
{"Radiation",0,{100,0,35,55,-1,-1}},
{"Nuisance",0,{100,0}},
{"MissionArray",{},{}}
};
// controls max group limit and cost
group_upgrade_lvl[] = {4,"100",6,"300",8,"500",10,"1000",12,"1500",13,"1750",14,"2000",15,"3000",16,"5000"};
group_upgrade_lvl[] = {4,"1000",6,"1500",8,"2000",10,"2500",12,"3000",14,"3500",16,"4000",32,"8000",64,"16000"};
// Event handler code
displayAddEventHandler[] = {"keyDown","keyUp"};

View File

@ -1 +1 @@
build=570;
build=582;

View File

@ -1 +1 @@
build=570;
build=582;

View File

@ -145,7 +145,7 @@ class CfgServerFunctions
};
class CfgServerVersion
{
client = "0.3.9.0";
config = "0.3.9.0";
client = "0.4.0.0";
config = "0.4.0.0";
hive = "0.5.1.7";
};

Binary file not shown.

View File

@ -1 +1 @@
build=570;
build=582;

View File

@ -1 +1 @@
build=570;
build=582;

View File

@ -20,7 +20,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
epochVersion = "0.3.9.0";
epochVersion = "0.4.0.0";
requiredAddons[] = {};
#include "build.hpp"
};

View File

@ -1 +1 @@
570
582