diff --git a/Changelogs/0.3.7.0.txt b/Changelogs/0.3.7.0.txt index 0eb04744..5e4c9410 100644 --- a/Changelogs/0.3.7.0.txt +++ b/Changelogs/0.3.7.0.txt @@ -1,8 +1,12 @@ +**Client** +[Changed] Change all publicVariableServer calls to use remoteExec calls for better performance. [Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly. -WIP -[Added] Hotwire Kit -[Added] Key Makers Kit -[Added] Keys in colors: (Black,Red,Green,Blue,Yellow) -[Added] 55 Gallon Fuel Barrel (Full/Empty) -[Added] Metal Pipes -[Added] Documents (Trash,Vehicle Upgrades) +[WIP] Hotwire Kit +[WIP] Key Makers Kit +[WIP] Keys in colors: (Black,Red,Green,Blue,Yellow) +[WIP] 55 Gallon Fuel Barrel (Full/Empty) +[WIP] Metal Pipes +[WIP] Documents (Trash,Vehicle Upgrades) +**Server** +[Updated] New Battleye remoteExec.txt for added remoteExec calls. +[Info] Removed old .bikey and added new one for 0370. diff --git a/Server_Install_Pack/sc/battleye/remoteexec.txt b/Server_Install_Pack/sc/battleye/remoteexec.txt index 131be11c..3121fdca 100644 --- a/Server_Install_Pack/sc/battleye/remoteexec.txt +++ b/Server_Install_Pack/sc/battleye/remoteexec.txt @@ -1 +1 @@ -5 "" !="epoch_server_save_vehicles \[.+\]" +5 "" !="epoch_server_checkplayer [A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3} \(.+\) REMOTE" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(tradeRequest|equippeditem|packJack|localCleanup|createAirDrop|airDropCrate) \[.+\]" diff --git a/Sources/epoch_code/System/gender_selection.fsm b/Sources/epoch_code/System/gender_selection.fsm index a043f63c..bcdb8571 100644 --- a/Sources/epoch_code/System/gender_selection.fsm +++ b/Sources/epoch_code/System/gender_selection.fsm @@ -1,4 +1,4 @@ -/*%FSM*/ +/*%FSM*/ /*%FSM*/ /* item0[] = {"INIT",0,250,-250.000000,-150.000000,-150.000000,-100.000000,0.000000,"INIT"}; @@ -12,12 +12,12 @@ item7[] = {"Process",2,250,-400.000000,75.000000,-300.000000,125.000000,0.000000 item8[] = {"same_gender",4,218,-250.000000,75.000000,-150.000000,125.000000,10.000000,"same" \n "gender"}; item9[] = {"other_gender",4,218,-400.000000,150.000000,-300.000000,200.000000,0.000000,"other" \n "gender"}; item10[] = {"Send_To_Server",3,250,-125.000000,75.000000,-25.000000,125.000000,0.000000,"Send To Server"}; -item11[] = {"TODO__ADD_TIMEOUT",4,4314,-275.000000,250.000000,-175.000000,300.000000,0.000000,"TODO:" \n "ADD TIMEOUT" \n "AND LOBBY KICK"}; +item11[] = {"TODO__ADD_TIMEOUT",4,218,-275.000000,250.000000,-175.000000,300.000000,0.000000,"TODO:" \n "ADD TIMEOUT" \n "AND LOBBY KICK"}; item12[] = {"END",1,250,0.000000,450.000000,100.000000,500.000000,0.000000,"END"}; item13[] = {"Send_new_selection",2,250,-400.000000,250.000000,-300.000000,300.000000,0.000000,"Send new" \n "selection to" \n "server"}; item14[] = {"Select_Model",2,250,-400.000000,350.000000,-300.000000,400.000000,0.000000,"Select Model"}; item15[] = {"new_model____pla",4,218,-525.000000,400.000000,-425.000000,450.000000,0.000000,"new model" \n "==" \n "player"}; -item16[] = {"Setup_EH",2,250,-400.000000,450.000000,-300.000000,500.000000,0.000000,"Setup EH"}; +item16[] = {"Setup_EH",2,4346,-400.000000,450.000000,-300.000000,500.000000,0.000000,"Setup EH"}; item17[] = {"true",8,218,-125.000000,450.000000,-25.000000,500.000000,0.000000,"true"}; item18[] = {"____FAKE____",9,720,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"}; link0[] = {0,2}; @@ -41,8 +41,8 @@ link17[] = {15,16}; link18[] = {16,17}; link19[] = {17,12}; link20[] = {11,18}; -globals[] = {25.000000,1,0,0,0,640,480,1,250,6316128,1,-786.968628,194.189285,571.765747,-266.728790,1066,911,1}; -window[] = {2,-1,-1,-1,-1,753,25,1063,25,3,1084}; +globals[] = {25.000000,1,0,0,0,640,480,1,250,6316128,1,-825.287720,232.508224,685.682007,60.530540,687,630,1}; +window[] = {2,-1,-1,-1,-1,884,156,1194,156,3,705}; *//*%FSM*/ class FSM { @@ -157,7 +157,7 @@ class FSM { name = "Send_To_Server"; init = /*%FSM*/"[player, Epoch_personalToken] remoteExec [""EPOCH_server_respawnPlayer"",2];" \n - "";"/*%FSM*/; + """;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -246,13 +246,9 @@ class FSM class Setup_EH { name = "Setup_EH"; - init = /*%FSM*/"player addEventHandler [""Respawn"", {(_this select 0) call EPOCH_clientRespawn}];" \n - "player addEventHandler [""Put"", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}];" \n - "player addEventHandler [""Take"", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];" \n - "player addEventHandler [""InventoryClosed"", {if !(EPOCH_arr_interactedObjs isEqualTo[]) then {EPOCH_arr_interactedObjs remoteExec[""EPOCH_server_save_vehicles"", 2]; EPOCH_arr_interactedObjs = [];};}];" \n - "player addEventHandler [""InventoryOpened"", {_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3] || (_this select 1) getVariable[""EPOCH_Locked"", false])}];" \n - "player addEventHandler [""Fired"", {_this call EPOCH_fnc_playerFired}];" \n - "player addEventHandler [""Killed"", {_this call EPOCH_fnc_playerDeath}];"/*%FSM*/; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -284,7 +280,7 @@ class FSM initState="INIT"; finalStates[] = { - "END" + "END", }; }; -/*%FSM*/ +/*%FSM*/ \ No newline at end of file diff --git a/Sources/epoch_code/System/player_login.fsm b/Sources/epoch_code/System/player_login.fsm index ccf94652..e43e7690 100644 --- a/Sources/epoch_code/System/player_login.fsm +++ b/Sources/epoch_code/System/player_login.fsm @@ -1,4 +1,4 @@ -/*%FSM*/ +/*%FSM*/ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; @@ -190,1294 +190,1204 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-494.255402,984.732300,1761.360352,737.509033,585,832,1}; -window[] = {0,-1,-1,-1,-1,1079,713,2114,75,1,603}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-35.555386,526.032166,1670.387451,1066.632935,586,630,1}; +window[] = {2,-1,-1,-1,-1,994,182,1474,182,3,604}; *//*%FSM*/ class FSM { - fsmName = "Epoch Login"; - class States + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true { - /*%FSM*/ - class INIT - { - name = "INIT"; - itemno = 0; - init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n - "0 fadeSound 0;" \n - "player enableSimulation false;" \n - "" \n - "_debug = true;" \n - "_myTime = diag_tickTime;" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Init"";" \n - "};" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 62; - priority = 0.000000; - to="Process_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class FINISH - { - name = "FINISH"; - itemno = 1; - init = /*%FSM*/"[] spawn {" \n - " waitUntil{!isNull (findDisplay 46)};" \n - " (findDisplay 46) displayAddEventHandler [""KeyDown"",""_this call EPOCH_KeyDown""];" \n - " (findDisplay 46) displayAddEventHandler [""KeyUp"",""_this call EPOCH_KeyUp""];" \n - "};" \n - "" \n - "3 fadeSound 1;" \n - "" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Finish!"";" \n - "};" \n - "" \n - "" \n - "player enableSimulation true;" \n - "" \n - "titleCut ["""", ""BLACK IN"", 1];" \n - "1338 cutText ["""",""PLAIN"",0]; " \n - "" \n - "progressLoadingScreen 1.0;" \n - "" \n - "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - "player switchMove """";"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Version_Check - { - name = "Version_Check"; - itemno = 3; - init = /*%FSM*/"if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Version Check"";" \n - "};" \n - "" \n - "// SHOULD BE:" \n - "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n - "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n - "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n - "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n - "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n - "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n - "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n - "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n - "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n - "" \n - "" \n - "// IS:" \n - "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n - "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n - "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n - "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n - "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n - "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n - "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n - "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n - "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n - "" \n - "progressLoadingScreen 0.1;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wrong_Version - { - itemno = 7; - priority = 10.000000; - to="ERROR_Wrong_Version"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n - "_my_epoch_assets1 != _epoch_assets1 ||" \n - "_my_epoch_assets2 != _epoch_assets2 ||" \n - "_my_epoch_assets3 != _epoch_assets3 ||" \n - "_my_epoch_config != _epoch_config ||" \n - "_my_epoch_language != _epoch_language ||" \n - "_my_epoch_underground != _epoch_underground ||" \n - "_my_epoch_vehicles != _epoch_vehicles ||" \n - "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class true - { - itemno = 44; - priority = 0.000000; - to="Arma_Version_Che"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check_Player_UID - { - name = "Check_Player_UID"; - itemno = 5; - init = /*%FSM*/"if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n - "};" \n - "" \n - "_playerUID = getPlayerUID player;" \n - "" \n - "progressLoadingScreen 0.2;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class PlayerUID_Okay - { - itemno = 6; - priority = 10.000000; - to="Check_Server_1"; - precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; - condition=/*%FSM*/"_playerUID != """""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Empty_PlayerUID - { - itemno = 12; - priority = 0.000000; - to="ERROR_PlayerUID"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Wrong_Version - { - name = "ERROR_Wrong_Version"; - itemno = 9; - init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_EPOCHVERSION = true;" \n - " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Disconnect - { - name = "Disconnect"; - itemno = 10; - init = /*%FSM*/"endLoadingScreen;" \n - "1338 cutText [_msg,""PLAIN"",0]; " \n - "deleteVehicle player;" \n - "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n - "_myTime = diag_tickTime;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Check_if_Player - { - itemno = 28; - priority = 0.000000; - to="Reject_without_B"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_PlayerUID - { - name = "ERROR_PlayerUID"; - itemno = 13; - init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_UID = true;" \n - " publicVariableServer ""PLAYER_REJECT_UID"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Setup_Player_Var - { - name = "Setup_Player_Var"; - itemno = 17; - init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n - "{" \n - " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n - "} forEach _playerVariables;" \n - "" \n - """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n - "" \n - "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n - "" \n - "progressLoadingScreen 0.7;" \n - "" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n - "};" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 24; - priority = 0.000000; - to="Setup_EH_s_and_H"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Request_Hive - { - name = "Request_Hive"; - itemno = 18; - init = /*%FSM*/"_myTime = diag_tickTime;" \n - "" \n - "Epoch_my_Group = [];" \n - "" \n - "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n - "" \n - "" \n - """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n - "progressLoadingScreen 0.5;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Hive_Response - { - itemno = 78; - priority = 0.000000; - to="Process_2"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; - action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n - "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Timeout_No_Respo - { - itemno = 19; - priority = 0.000000; - to="ERROR_Server_not_3"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Server_not - { - name = "ERROR_Server_not"; - itemno = 20; - init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_NoResponse2 = true;" \n - " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Wrong_Server - { - name = "ERROR_Wrong_Server"; - itemno = 25; - init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_ServerVersion = true;" \n - " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Setup_Player_Obj - { - name = "Setup_Player_Obj"; - itemno = 27; - init = /*%FSM*/"_ply = player;" \n - "_group = group player;" \n - "selectPlayer _playerObject;" \n - "" \n - "deleteVehicle _ply;" \n - "deleteGroup _group;" \n - "" \n - """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n - "progressLoadingScreen 0.8;" \n - "" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n - "};" \n - "" \n - "_myTime = diag_tickTime;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Timeout_ - { - itemno = 69; - priority = 0.000000; - to="ERROR_Player_Setup"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class new_player_____p - { - itemno = 49; - priority = 0.000000; - to="Setup_Player_Var"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_playerObject == player"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Display_Message - { - name = "Display_Message"; - itemno = 33; - init = /*%FSM*/"[] spawn {" \n - " waitUntil{!isNull (findDisplay 46)};" \n - " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n - " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n - "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n - "_myTime = diag_tickTime;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Display_Message - { - itemno = 26; - priority = 0.000000; - to="Disconnect"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check_Server - { - name = "Check_Server"; - itemno = 35; - init = /*%FSM*/"_myTime = diag_tickTime;" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Check Server"";" \n - "};" \n - """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n - "progressLoadingScreen 0.4;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Server_not_worki - { - itemno = 36; - priority = 10.000000; - to="ERROR_Server_not_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n - ""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Server_Okay - { - itemno = 11; - priority = 0.000000; - to="Server_Version_C"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Server_not_1 - { - name = "ERROR_Server_not_1"; - itemno = 37; - init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_NotReady2 = true;" \n - " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check_Server_1 - { - name = "Check_Server_1"; - itemno = 39; - init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Timeout_No_Respo - { - itemno = 40; - priority = 0.000000; - to="ERROR_Server_not_2"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class freshServer - { - itemno = 66; - priority = 0.000000; - to="Update_Loadingscreen"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Server_Ready - { - itemno = 34; - priority = 0.000000; - to="Check_Server"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; - action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n - "EPOCH_SERVER = nil;"/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Server_not_2 - { - name = "ERROR_Server_not_2"; - itemno = 41; - init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_NotReady1 = true;" \n - " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Reject_without_B - { - name = "Reject_without_B"; - itemno = 43; - init = /*%FSM*/"[] spawn {" \n - " waitUntil{!isNull (findDisplay 46)};" \n - " waitUntil {" \n - " (findDisplay 46) closeDisplay 0;" \n - " isNull (findDisplay 46)" \n - " };" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - }; - }; - /*%FSM*/ - /*%FSM*/ - class Arma_Version_Che - { - name = "Arma_Version_Che"; - itemno = 45; - init = /*%FSM*/"progressLoadingScreen 0.15;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Outdated_Version - { - itemno = 46; - priority = 10.000000; - to="ERROR_Wrong_Version_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Player_Object_Re - { - itemno = 4; - priority = 0.000000; - to="Check_Player_UID"; - precondition = /*%FSM*/"!isNull player"/*%FSM*/; - condition=/*%FSM*/"player == player"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Wrong_Version_1 - { - name = "ERROR_Wrong_Version_1"; - itemno = 47; - init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_ARMAVERSION = true;" \n - " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Setup_EH_s_and_H - { - name = "Setup_EH_s_and_H"; - itemno = 50; - init = /*%FSM*/"player addEventHandler [""Respawn"", {(_this select 0) call EPOCH_clientRespawn}];" \n - "player addEventHandler [""Put"", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}];" \n - "player addEventHandler [""Take"", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}];" \n - "player addEventHandler [""InventoryClosed"", {if !(EPOCH_arr_interactedObjs isEqualTo[]) then {EPOCH_arr_interactedObjs remoteExec[""EPOCH_server_save_vehicles"", 2]; EPOCH_arr_interactedObjs = [];};}];" \n - "player addEventHandler [""InventoryOpened"", {_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3] || (_this select 1) getVariable[""EPOCH_Locked"", false])}];" \n - "player addEventHandler [""Fired"", {_this call EPOCH_fnc_playerFired}];" \n - "player addEventHandler [""Killed"", {_this call EPOCH_fnc_playerDeath}];" \n - "" \n - "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n - " {" \n - " player setHitIndex [_forEachIndex, _x];" \n - " }forEach EPOCH_playerHitPoints;" \n - "};" \n - "" \n - "[] spawn EPOCH_masterLoop;" \n - "true call EPOCH_fnc_Weather;" \n - "[5,100] spawn EPOCH_niteLight;" \n - "" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n - "};" \n - "" \n - """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n - "progressLoadingScreen 0.9;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Has_Current_Weap - { - itemno = 53; - priority = 10.000000; - to="Find_Active_Weap"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class no_weapons - { - itemno = 51; - priority = 0.000000; - to="Process"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Process - { - name = "Process"; - itemno = 52; - init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Preload_done - { - itemno = 29; - priority = 0.000000; - to="FINISH"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"preloadCamera (getposATL player)"/*%FSM*/; - action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Find_Active_Weap - { - name = "Find_Active_Weap"; - itemno = 54; - init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n - "progressLoadingScreen 0.95;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Current_Weapon_S - { - itemno = 56; - priority = 0.000000; - to="Do_nothing"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Current_Weapon_Not - { - itemno = 55; - priority = 0.000000; - to="Select_Weapon"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Select_Weapon - { - name = "Select_Weapon"; - itemno = 57; - init = /*%FSM*/"_currentWeapon spawn {" \n - " uiSleep 1; " \n - " player selectWeapon _this;" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 58; - priority = 0.000000; - to="Process"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Do_nothing - { - name = "Do_nothing"; - itemno = 59; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 58; - priority = 0.000000; - to="Process"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Check_New_Player - { - name = "Check_New_Player"; - itemno = 60; - init = /*%FSM*/"_myTime = diag_tickTime;" \n - "" \n - "// player reveal [_playerObject, 4];" \n - "" \n - "" \n - """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n - "progressLoadingScreen 0.6;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait_mag_count_m - { - itemno = 61; - priority = 0.000000; - to="Setup_Player_Obj"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_magCount == count (magazines _playerObject)"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Timeout_No_Respo - { - itemno = 15; - priority = 0.000000; - to="ERROR_Server_not"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Process_1 - { - name = "Process_1"; - itemno = 63; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wait_ArmA_Loading - { - itemno = 64; - priority = 0.000000; - to="Start_Loading_Sc"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Start_Loading_Sc - { - name = "Start_Loading_Sc"; - itemno = 65; - init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n - "if (_debug) then {" \n - " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n - "};" \n - """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 2; - priority = 0.000000; - to="Version_Check"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Update_Loadingscreen - { - name = "Update_Loadingscreen"; - itemno = 67; - init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n - "" \n - """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 68; - priority = 0.000000; - to="Check_Server_1"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Player_Setup - { - name = "ERROR_Player_Setup"; - itemno = 70; - init = /*%FSM*/"_msg = ""Problem setting up player"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_InvaildSetup = true;" \n - " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Server_Version_C - { - name = "Server_Version_C"; - itemno = 72; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Wrong_Server_Ver - { - itemno = 23; - priority = 10.000000; - to="ERROR_Wrong_Server"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Version_Okay - { - itemno = 73; - priority = 0.000000; - to="Request_Hive"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Server_not_3 - { - name = "ERROR_Server_not_3"; - itemno = 75; - init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_HiveNotResponse = true;" \n - " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Process_2 - { - name = "Process_2"; - itemno = 80; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class new_character - { - itemno = 77; - priority = 10.000000; - to="Open_Gender_Selection"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_newChar"/*%FSM*/; - action=/*%FSM*/"endLoadingScreen;" \n - "_myGenderTime = diag_tickTime;"/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class load_old_charact - { - itemno = 79; - priority = 0.000000; - to="Process_3"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Open_Gender_Selection - { - name = "Open_Gender_Selection"; - itemno = 81; - init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Gender_Selected - { - itemno = 83; - priority = 10.000000; - to="Send_character_s"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Timeout - { - itemno = 84; - priority = 0.000000; - to="Send_character_s"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; - action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n - "closeDialog 0;"/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Reopen_when_client - { - itemno = 82; - priority = 0.000000; - to="Open_Gender_Selection"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Send_character_s - { - name = "Send_character_s"; - itemno = 85; - init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n - """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n - "" \n - "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n - "EPOCH_PlayerIsMale = nil;"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class load_old_charact - { - itemno = 79; - priority = 0.000000; - to="Process_3"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/""/*%FSM*/; - action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class Process_3 - { - name = "Process_3"; - itemno = 86; - init = /*%FSM*/""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class Timeout_No_Respo - { - itemno = 22; - priority = 0.000000; - to="ERROR_Server_not_4"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Response - { - itemno = 16; - priority = 0.000000; - to="Check_New_Player"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; - action=/*%FSM*/"_array = EPOCH_C_SET;" \n - "EPOCH_C_SET = nil;" \n - "_playerObject = _array deleteAt 0;" \n - "_playerVariables = _array deleteAt 0;" \n - "_currentWeapon = _array deleteAt 0;" \n - "_magCount = _array deleteAt 0;" \n - "Epoch_my_GroupUID = _array deleteAt 0;" \n - "Epoch_canBeRevived = _array deleteAt 0;" \n - "Epoch_personalToken = _array deleteAt 0;" \n - "reverse _serverUptime;" \n - "_serverUptime pushBack (_array deleteAt 0);" \n - "reverse _serverUptime;" \n - "_serverUptime call EPOCH_client_publicEH;" \n - "_playerGroupOnline = _array deleteAt 0;" \n - "" \n - ""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ - /*%FSM*/ - class ERROR_Server_not_4 - { - name = "ERROR_Server_not_4"; - itemno = 87; - init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n - "_msg call Epoch_updateLoadingScreen;" \n - "diag_log _msg;" \n - "" \n - "_rejectPlayer = {" \n - " PLAYER_REJECT_HiveLoadChar = true;" \n - " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n - "};"/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - itemno = 32; - priority = 0.000000; - to="Display_Message"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; }; - initState="INIT"; - finalStates[] = + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] 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 + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version { - "FINISH", - "Reject_without_B", + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera (getposATL player)"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "// player reveal [_playerObject, 4];" \n + "" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_mag_count_m + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_magCount == count (magazines _playerObject)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; }; -/*%FSM*/ +/*%FSM*/ \ No newline at end of file diff --git a/Sources/epoch_code/compile/setup/EPOCH_clientRevive.sqf b/Sources/epoch_code/compile/setup/EPOCH_clientRevive.sqf index d9af566f..905ef133 100644 --- a/Sources/epoch_code/compile/setup/EPOCH_clientRevive.sqf +++ b/Sources/epoch_code/compile/setup/EPOCH_clientRevive.sqf @@ -31,7 +31,6 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then { // deleteGroup _group; Epoch_canBeRevived = false; - Epoch_personalToken = _this select 1; // call EPOCH_clientInit; @@ -41,13 +40,9 @@ if !(alive player && alive _playerObject && !isPlayer _playerObject) then { closeDialog 0; ("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - player addEventHandler ["Respawn", {(_this select 0) call EPOCH_clientRespawn}]; - player addEventHandler ["Put", {(_this select 1) call EPOCH_interact;_this call EPOCH_PutHandler}]; - player addEventHandler ["Take", {(_this select 1) call EPOCH_interact;_this call EPOCH_UnisexCheck}]; - player addEventHandler ["InventoryClosed", { if !(EPOCH_arr_interactedObjs isEqualTo[]) then{EPOCH_arr_interactedObjs remoteExec["EPOCH_server_save_vehicles", 2]; EPOCH_arr_interactedObjs = []; }; }]; - player addEventHandler ["InventoryOpened", {_this spawn EPOCH_initUI; (locked (_this select 1) in [2, 3] || (_this select 1) getVariable["EPOCH_Locked", false]) }]; - player addEventHandler ["Fired", {_this call EPOCH_fnc_playerFired}]; - player addEventHandler ["Killed", {_this call EPOCH_fnc_playerDeath}]; + { + player addEventHandler [_x,(["CfgEpochClient", _x, ""] call EPOCH_fnc_returnConfigEntryV2)]; + } forEach (["CfgEpochClient", "addEventHandler", []] call EPOCH_fnc_returnConfigEntryV2); } else { deleteVehicle _playerObject; }; diff --git a/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp b/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp index 2263dffe..cca6f3aa 100644 --- a/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp +++ b/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp @@ -119,7 +119,7 @@ class lock_safe class pack_lockbox { condition = "(dyna_cursorTargetType in ['LockBox_EPOCH','LockBoxProxy_EPOCH']) && (dyna_cursorTarget getVariable ['EPOCH_Locked',false])"; - action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec ['EPOCH_server_lockStorage',2];"; + action = "[dyna_cursorTarget,player,Epoch_personalToken] remoteExec ['EPOCH_server_packStorage',2];"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_pack.paa"; tooltip = "Pack Lockbox"; }; diff --git a/Sources/epoch_config/Configs/CfgEpochClient.hpp b/Sources/epoch_config/Configs/CfgEpochClient.hpp index 4c206fa8..fc7e54cb 100644 --- a/Sources/epoch_config/Configs/CfgEpochClient.hpp +++ b/Sources/epoch_config/Configs/CfgEpochClient.hpp @@ -81,6 +81,18 @@ class CfgEpochClient { "cabinetPos", "Cabinet_EPOCH", false } }; + displayAddEventHandler[] = {"keyDown","keyUp"}; + keyDown = "_this call EPOCH_KeyDown;"; + keyUp = "_this call EPOCH_KeyUp;"; + + addEventHandler[] = {"Respawn","Put","Take","InventoryClosed","InventoryOpened","Fired","Killed"}; + 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 = "_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;"; #include "CfgEpochClient\takistan.hpp" #include "CfgEpochClient\australia.hpp"