/*%FSM*/ /*%FSM*/ /* item0[] = {"init",0,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"}; item1[] = {"isServer",4,218,50.000000,-350.000000,150.000000,-300.000000,0.000000,"isServer"}; item2[] = {"wait",2,250,50.000000,-275.000000,150.000000,-225.000000,0.000000,"wait"}; item3[] = {"Allow_Conn",4,218,50.000000,-200.000000,150.000000,-150.000000,0.000000,"Allow" \n "Conn"}; item4[] = {"Loading",2,250,-75.000000,-200.000000,25.000000,-150.000000,0.000000,"Loading"}; item5[] = {"Client",4,218,-75.000000,-275.000000,25.000000,-225.000000,0.000000,"Client"}; item6[] = {"player_not_null",4,218,-175.000000,-50.000000,-75.000000,0.000000,0.000000,"player" \n "not null"}; item7[] = {"Prepare",2,250,-75.000000,0.000000,25.000000,50.000000,0.000000,"Prepare"}; item8[] = {"player___player",4,218,50.000000,50.000000,150.000000,100.000000,0.000000,"player =" \n "player"}; item9[] = {"Collect",2,250,-75.000000,100.000000,25.000000,150.000000,0.000000,"Collect"}; item10[] = {"Has_PlayerID",4,218,-75.000000,175.000000,25.000000,225.000000,1.000000,"Has PlayerID"}; item11[] = {"no_PlayerID",4,218,50.000000,150.000000,150.000000,200.000000,2.000000,"no PlayerID"}; item12[] = {"ERROR__No_Player",2,250,175.000000,150.000000,275.000000,200.000000,0.000000,"ERROR:" \n "No PlayerID"}; item13[] = {"Request",2,250,-75.000000,400.000000,25.000000,450.000000,0.000000,"Request"}; item14[] = {"Response",4,218,-175.000000,450.000000,-75.000000,500.000000,0.000000,"Response"}; item15[] = {"Parse_Login",2,250,-75.000000,500.000000,25.000000,550.000000,0.000000,"Parse Login"}; item16[] = {"Hive_Bad",4,218,50.000000,500.000000,150.000000,550.000000,10.000000,"Hive" \n "Bad"}; item17[] = {"ERROR__Wrong_HIVE",2,250,175.000000,500.000000,275.000000,550.000000,0.000000,"ERROR:" \n "Wrong HIVE" \n "Version"}; item18[] = {"Hive_Ok",4,218,-175.000000,550.000000,-75.000000,600.000000,0.000000,"Hive" \n "Ok"}; item19[] = {"Phase_One",2,250,-75.000000,600.000000,25.000000,650.000000,0.000000,"Phase One"}; item20[] = {"Response",4,218,-175.000000,650.000000,-75.000000,700.000000,0.000000,"Response"}; item21[] = {"Phase_Two",2,4346,-75.000000,700.000000,25.000000,750.000000,0.000000,"Phase Two"}; item22[] = {"Dead_Player",4,218,50.000000,700.000000,150.000000,750.000000,0.000000,"Dead" \n "Player"}; item23[] = {"ERROR__Player_Already",2,250,175.000000,700.000000,275.000000,750.000000,0.000000,"ERROR:" \n "Player Already" \n "Dead"}; item24[] = {"Alive",4,218,-175.000000,750.000000,-75.000000,800.000000,0.000000,"Alive"}; item25[] = {"Position",2,250,-75.000000,800.000000,25.000000,850.000000,0.000000,"Position"}; item26[] = {"Version_Ok",4,218,-175.000000,850.000000,-75.000000,900.000000,0.000000,"Version" \n "Ok"}; item27[] = {"Load_In",2,250,-75.000000,1000.000000,25.000000,1050.000000,0.000000,"Load In"}; item28[] = {"Bad_Version",4,218,50.000000,800.000000,150.000000,850.000000,0.000000,"Bad" \n "Version"}; item29[] = {"ERROR__Bad_Versi",2,250,175.000000,800.000000,275.000000,850.000000,0.000000,"ERROR:" \n "Bad Version"}; item30[] = {"Display_Ready",4,218,-175.000000,1050.000000,-75.000000,1100.000000,0.000000,"Display" \n "Ready"}; item31[] = {"Preload_Display",2,250,-75.000000,1100.000000,25.000000,1150.000000,0.000000,"Preload" \n "Display"}; item32[] = {"Preload_Done",4,218,-175.000000,1150.000000,-75.000000,1200.000000,0.000000,"Preload" \n "Done"}; item33[] = {"Initialize",2,250,-75.000000,1200.000000,25.000000,1250.000000,0.000000,"Initialize"}; item34[] = {"Finish",1,250,-75.000000,1300.000000,25.000000,1350.000000,0.000000,"Finish"}; item35[] = {"True",8,218,25.000000,1250.000000,125.000000,1300.000000,0.000000,"True"}; item36[] = {"Too_Long",4,218,300.000000,150.000000,400.000000,200.000000,0.000000,"Too" \n "Long"}; item37[] = {"Too_Long",4,218,300.000000,500.000000,400.000000,550.000000,0.000000,"Too" \n "Long"}; item38[] = {"Too_Long",4,218,300.000000,700.000000,400.000000,750.000000,0.000000,"Too" \n "Long"}; item39[] = {"Too_Long",4,218,300.000000,800.000000,400.000000,850.000000,0.000000,"Too" \n "Long"}; item40[] = {"Enable_Sim",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"Enable Sim"}; item41[] = {"Initialized",4,218,-175.000000,-150.000000,-75.000000,-100.000000,0.000000,"Initialized"}; item42[] = {"New_Character",4,218,-325.000000,400.000000,-225.000000,450.000000,5.000000,"New" \n "Character"}; item43[] = {"Gender_Selection",2,250,-575.000000,400.000000,-475.000000,450.000000,0.000000,"Gender Selection" \n "Dialog"}; item44[] = {"Selected",4,218,-575.000000,475.000000,-475.000000,525.000000,0.000000,"Selected"}; item45[] = {"Process",2,250,-575.000000,550.000000,-475.000000,600.000000,0.000000,"Process"}; item46[] = {"no_PlayerID",4,218,50.000000,-100.000000,150.000000,-50.000000,2.000000,"no PlayerID"}; item47[] = {"ERROR__No_Player_1",2,250,175.000000,-100.000000,275.000000,-50.000000,0.000000,"ERROR:" \n "No PlayerID"}; item48[] = {"Too_Long",4,218,300.000000,-100.000000,400.000000,-50.000000,0.000000,"Too" \n "Long"}; item49[] = {"Stream",2,250,-75.000000,900.000000,25.000000,950.000000,0.000000,"Stream"}; item50[] = {"Preloaded",4,218,-175.000000,950.000000,-75.000000,1000.000000,0.000000,"Preloaded"}; item51[] = {"Retry",4,218,25.000000,375.000000,125.000000,425.000000,0.000000,"Retry"}; item52[] = {"retry_",4,218,25.000000,425.000000,125.000000,475.000000,0.000000,"retry" \n ""}; item53[] = {"Retry",2,250,125.000000,400.000000,225.000000,450.000000,0.000000,"Retry"}; item54[] = {"auth_failed",4,218,250.000000,400.000000,350.000000,450.000000,0.000000,"auth failed"}; item55[] = {"get_ready_to_clo",2,250,400.000000,400.000000,500.000000,450.000000,0.000000,"get ready to close"}; item56[] = {"sleep_",4,218,550.000000,400.000000,650.000000,450.000000,0.000000,"sleep" \n ""}; item57[] = {"Disconnect",2,250,825.000000,400.000000,925.000000,450.000000,0.000000,"Disconnect"}; item58[] = {"No_time_date",4,218,25.000000,1150.000000,125.000000,1200.000000,0.000000,"No time/date"}; item59[] = {"ERROR__No_Date_or",2,250,175.000000,1150.000000,275.000000,1200.000000,0.000000,"ERROR:" \n "No Date or Time"}; item60[] = {"Too_Long",4,218,300.000000,1150.000000,400.000000,1200.000000,0.000000,"Too" \n "Long"}; item61[] = {"get_ready_to_clo_1",2,250,450.000000,800.000000,550.000000,850.000000,0.000000,"get ready to close"}; item62[] = {"sleep_",4,218,600.000000,800.000000,700.000000,850.000000,0.000000,"sleep" \n ""}; item63[] = {"Server_Loading",2,250,-75.000000,250.000000,25.000000,300.000000,0.000000,"Server Loading"}; item64[] = {"Too_Long",4,218,50.000000,250.000000,150.000000,300.000000,0.000000,"Too" \n "Long"}; item65[] = {"Server_Ready",4,218,-75.000000,325.000000,25.000000,375.000000,0.000000,"Server Ready"}; item66[] = {"New_Infected_Cha",4,218,-325.000000,475.000000,-225.000000,525.000000,5.000000,"New" \n "Infected" \n "Character"}; item67[] = {"Player_Zombie__S",2,250,-450.000000,475.000000,-350.000000,525.000000,0.000000,"Player Zombie" \n " Selection"}; item68[] = {"",7,210,-204.000000,521.000000,-196.000000,529.000000,0.000000,""}; item69[] = {"",7,210,-204.000000,496.000000,-196.000000,504.000000,0.000000,""}; item70[] = {"",7,210,-204.000000,421.000000,-196.000000,429.000000,0.000000,""}; item71[] = {"",7,210,-404.000000,571.000000,-396.000000,579.000000,0.000000,""}; item72[] = {"",7,210,871.000000,1171.000000,879.000000,1179.000000,0.000000,""}; item73[] = {"",7,210,871.000000,821.000000,879.000000,829.000000,0.000000,""}; item74[] = {"",7,210,871.000000,721.000000,879.000000,729.000000,0.000000,""}; item75[] = {"",7,210,871.000000,521.000000,879.000000,529.000000,0.000000,""}; item76[] = {"",7,210,871.000000,170.999985,879.000000,179.000015,0.000000,""}; item77[] = {"",7,210,871.000000,-79.000000,879.000000,-71.000000,0.000000,""}; item78[] = {"",7,210,871.000000,271.000000,879.000000,279.000000,0.000000,""}; link0[] = {0,1}; link1[] = {0,5}; link2[] = {1,2}; link3[] = {2,3}; link4[] = {3,4}; link5[] = {4,41}; link6[] = {5,4}; link7[] = {6,7}; link8[] = {7,8}; link9[] = {8,9}; link10[] = {9,10}; link11[] = {9,11}; link12[] = {10,63}; link13[] = {11,12}; link14[] = {12,36}; link15[] = {13,14}; link16[] = {13,52}; link17[] = {14,15}; link18[] = {15,16}; link19[] = {15,18}; link20[] = {15,68}; link21[] = {16,17}; link22[] = {17,37}; link23[] = {18,19}; link24[] = {19,20}; link25[] = {20,21}; link26[] = {21,22}; link27[] = {21,24}; link28[] = {22,23}; link29[] = {23,38}; link30[] = {24,25}; link31[] = {25,26}; link32[] = {25,28}; link33[] = {26,49}; link34[] = {27,30}; link35[] = {28,29}; link36[] = {29,39}; link37[] = {30,31}; link38[] = {31,32}; link39[] = {32,33}; link40[] = {33,35}; link41[] = {33,58}; link42[] = {35,34}; link43[] = {36,76}; link44[] = {37,75}; link45[] = {38,74}; link46[] = {39,61}; link47[] = {40,6}; link48[] = {40,46}; link49[] = {41,40}; link50[] = {42,43}; link51[] = {43,44}; link52[] = {44,45}; link53[] = {45,71}; link54[] = {46,47}; link55[] = {47,48}; link56[] = {48,77}; link57[] = {49,50}; link58[] = {50,27}; link59[] = {51,13}; link60[] = {52,53}; link61[] = {53,51}; link62[] = {53,54}; link63[] = {54,55}; link64[] = {55,56}; link65[] = {56,57}; link66[] = {58,59}; link67[] = {59,60}; link68[] = {60,72}; link69[] = {61,62}; link70[] = {62,73}; link71[] = {63,64}; link72[] = {63,65}; link73[] = {64,78}; link74[] = {65,13}; link75[] = {66,67}; link76[] = {67,71}; link77[] = {68,69}; link78[] = {69,66}; link79[] = {69,70}; link80[] = {70,42}; link81[] = {71,18}; link82[] = {72,73}; link83[] = {73,74}; link84[] = {74,75}; link85[] = {75,57}; link86[] = {76,78}; link87[] = {77,76}; link88[] = {78,57}; globals[] = {25.000000,1,0,0,0,640,480,1,143,6316128,1,-383.230377,382.212097,1033.530151,397.048065,736,612,1}; window[] = {0,-1,-1,-32000,-32000,994,351,1629,236,1,754}; *//*%FSM*/ class FSM { fsmName = "DayZ Player Monitor"; class States { /*%FSM*/ class init { name = "init"; init = /*%FSM*/"dayz_versionNo = getText(configFile >> ""CfgMods"" >> ""DayZ"" >> ""version"");" \n "_AuthAttempt = 0;" \n "" \n "0 fadeSound 0;" \n "//player setPosATL [-2148,6655,0];" \n "//DayZ Mod 1.8.1;" \n "" \n "progressLoadingScreen 0.1;" \n "0 cutText ["""",""BLACK""];" \n "" \n "_timeStart = diag_tickTime;" \n "_readytoAuth = false;" \n "_startCheck = 0;" \n "_debug = DZEdebug;" \n "" \n "if (_debug) then {" \n "diag_log (""DAYZ: CLIENT IS RUNNING DAYZ_CODE "" + str(dayz_versionNo));" \n "};" \n "" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Client { priority = 0.000000; to="Loading"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isServer"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class isServer { priority = 0.000000; to="wait"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"isServer"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class wait { name = "wait"; init = /*%FSM*/""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Allow_Conn { priority = 0.000000; to="Loading"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"allowConnection"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Loading { name = "Loading"; init = /*%FSM*/"endLoadingScreen;" \n "if (_debug) then {" \n "diag_log (""PLOGIN: Initating"");" \n "};" \n "" \n "dayz_loadScreenMsg = (localize ""str_player_13""); " \n "" \n "progressLoadingScreen 0.2;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Initialized { priority = 0.000000; to="Enable_Sim"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isnil ""bis_fnc_init"""/*%FSM*/; action=/*%FSM*/"dayz_forceSave = {" \n "_gearSave = false;" \n "" \n "if (!dialog) then {" \n " createGearDialog [player, ""RscDisplayGear""];" \n " _gearSave = true;" \n "};" \n "" \n "_dialog = findDisplay 106;" \n "_magazineArray = [];" \n "" \n "//Primary Mags" \n "for ""_i"" from 109 to 120 do " \n "{" \n " _control = _dialog displayCtrl _i;" \n " _item = gearSlotData _control;" \n " _val = gearSlotAmmoCount _control;" \n " _max = getNumber (configFile >> ""CfgMagazines"" >> _item >> ""count"");" \n " if (_item != """") then {" \n " if (_val != _max) then {" \n " _magazineArray set [count _magazineArray,[_item,_val]];" \n " } else {" \n " _magazineArray set [count _magazineArray,_item];" \n " };" \n " };" \n "};" \n "" \n "//Secondary Mags" \n "for ""_i"" from 122 to 129 do " \n "{" \n " _control = _dialog displayCtrl _i;" \n " _item = gearSlotData _control;" \n " _val = gearSlotAmmoCount _control;" \n " _max = getNumber (configFile >> ""CfgMagazines"" >> _item >> ""count"");" \n " if (_item != """") then {" \n " if (_val != _max) then {" \n " _magazineArray set [count _magazineArray,[_item,_val]];" \n " } else {" \n " _magazineArray set [count _magazineArray,_item];" \n " };" \n " };" \n "};" \n "" \n "if (_gearSave) then {" \n " closeDialog 0;" \n "};" \n "" \n " _medical = player call player_sumMedical;" \n " " \n " /*" \n " Get character state details" \n " */" \n " _currentWpn = currentMuzzle player;" \n " _currentAnim = animationState player;" \n " _config = configFile >> ""CfgMovesMaleSdr"" >> ""States"" >> _currentAnim;" \n " _onLadder = (getNumber (_config >> ""onLadder"")) == 1;" \n " _isTerminal = (getNumber (_config >> ""terminal"")) == 1;" \n " _isInVehicle = vehicle player != player;" \n " //_wpnDisabled = (getNumber (_config >> ""disableWeapons"")) == 1;" \n " _currentModel = typeOf player;" \n " _charPos = getPosATL player;" \n " _playerPos = [round(direction player),_charPos];" \n " " \n " if (_onLadder or _isInVehicle or _isTerminal) then {" \n " _currentAnim = """";" \n " //If position to be updated, make sure it is at ground level!" \n " if ((count _playerPos > 0) and !_isTerminal) then {" \n " _charPos set [2,0];" \n " _playerPos set[1,_charPos];" \n " };" \n " };" \n " if (_isInVehicle) then {" \n " _currentWpn = """";" \n " } else {" \n " if ( typeName(_currentWpn) == ""STRING"" ) then {" \n " _muzzles = getArray(configFile >> ""cfgWeapons"" >> _currentWpn >> ""muzzles"");" \n " if (count _muzzles > 1) then {" \n " _currentWpn = currentMuzzle player;" \n " }; " \n " } else {" \n " //diag_log (""DW_DEBUG: _currentWpn: "" + str(_currentWpn));" \n " _currentWpn = """";" \n " };" \n " };" \n " _temp = round(player getVariable [""temperature"",100]);" \n " _currentState = [_currentWpn,_currentAnim,_temp];" \n " " \n " dayz_Magazines = _magazineArray;" \n " PVDZE_plr_Save = [player,dayz_Magazines,false,true];" \n " publicVariableServer ""PVDZE_plr_Save"";" \n " " \n " if (isServer) then {" \n " PVDZE_plr_Save call server_playerSync;" \n " };" \n " " \n " dayz_lastSave = diag_tickTime;" \n " dayz_Magazines = [];" \n "};"/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Prepare { name = "Prepare"; init = /*%FSM*/"if (_debug) then {" \n "diag_log (""PLOGIN: Player Model Exists"");" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class player___player { priority = 0.000000; to="Collect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"player == player"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Collect { name = "Collect"; init = /*%FSM*/"if (_debug) then {" \n "diag_log (""PLOGIN: Player Ready"");" \n "};" \n "dayz_loadScreenMsg = (localize ""str_player_13""); " \n "" \n "progressLoadingScreen 0.3;" \n "" \n "_playerUID = getPlayerUID player;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class no_PlayerID { priority = 2.000000; to="ERROR__No_Player"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_playerUID == """""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Has_PlayerID { priority = 1.000000; to="Server_Loading"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(isNil ""_playerUID"")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class ERROR__No_Player { name = "ERROR__No_Player"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = diag_tickTime;" \n "1 cutText [localize ""str_player_14"", ""PLAIN"",15];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Request { name = "Request"; init = /*%FSM*/"if (_debug) then {" \n "diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n "};" \n "dayz_loadScreenMsg = (localize ""str_player_15"");" \n "" \n "progressLoadingScreen 0.7;" \n "" \n "_msg = [];" \n "" \n "PVDZE_plr_Login = [_playerUID,player];" \n "publicVariableServer ""PVDZE_plr_Login"";" \n "" \n "if (isServer) then {" \n " PVDZE_plr_Login call server_playerLogin;" \n "};" \n "" \n "dayzPlayerLogin = [];" \n "" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class retry_ { priority = 0.000000; to="Retry"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Response { priority = 0.000000; to="Parse_Login"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"count (dayzPlayerLogin) > 1"/*%FSM*/; action=/*%FSM*/"_msg = dayzPlayerLogin;"/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Parse_Login { name = "Parse_Login"; init = /*%FSM*/"dayz_authed = true;" \n "" \n "progressLoadingScreen 0.6;" \n "_charID = _msg select 0;" \n "_inventory = _msg select 1;" \n "_backpack = _msg select 2;" \n "_survival = _msg select 3;" \n "_isNew = _msg select 4;" \n "//_state = _msg select 5;" \n "_version = _msg select 5;" \n "_model = _msg select 6;" \n "" \n "_isHiveOk = false;" \n "_newPlayer = false;" \n "_isInfected = false;" \n "" \n "if (count _msg > 7) then {" \n " _isHiveOk = _msg select 7;" \n " _newPlayer = _msg select 8;" \n " _isInfected = _msg select 9;" \n " diag_log (""PLAYER RESULT: "" + str(_isHiveOk));" \n "};" \n "" \n "dayz_loadScreenMsg = (localize ""str_player_17""); " \n "progressLoadingScreen 0.8;" \n "if (_debug) then {" \n "diag_log (""PLOGIN: authenticated with : "" + str(_msg));" \n "};" \n "//Not Equal Failure" \n "" \n "if (isNil ""_model"") then {" \n " _model = ""Survivor2_DZ"";" \n " diag_log (""PLOGIN: Model was nil, loading as survivor"");" \n "};" \n "" \n "if (_model == """") then {" \n " _model = ""Survivor2_DZ"";" \n " diag_log (""PLOGIN: Model was empty, loading as survivor"");" \n "};" \n "" \n "if (_model == ""Survivor1_DZ"") then {" \n " _model = ""Survivor2_DZ"";" \n "};" \n "" \n "_isHack = false;" \n "if (_model == ""hacker"") then {" \n " _isHack = true;" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Hive_Bad { priority = 10.000000; to="ERROR__Wrong_HIVE"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!_isHiveOk"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class New_Infected_Cha { priority = 5.000000; to="Player_Zombie__S"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_isNew && _isInfected == 1"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class New_Character { priority = 5.000000; to="Gender_Selection"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_isNew && _isInfected == 0"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Hive_Ok { priority = 0.000000; to="Phase_One"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class ERROR__Wrong_HIVE { name = "ERROR__Wrong_HIVE"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "" \n "_myTime = diag_tickTime;" \n "1 cutText [(localize ""str_epoch_player_112""), ""PLAIN"",5];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Phase_One { name = "Phase_One"; init = /*%FSM*/"if ((!isNil ""DZE_defaultSkin"") && _isNew && (_isInfected == 0)) then {" \n " if (dayz_selectGender == ""Survivor2_DZ"") then {" \n " _model = getText (configFile >> ""CfgSurvival"" >> ""Skins"" >> (DZE_defaultSkin select 0) >> ""playerModel""); //MALE" \n " } else {" \n " _model = getText (configFile >> ""CfgSurvival"" >> ""Skins"" >> (DZE_defaultSkin select 1) >> ""playerModel""); //FEMALE" \n " };" \n "};" \n "" \n "dayz_playerName = name player;" \n "_model call player_switchModel;" \n "" \n "gear_done= true;" \n "player allowDamage false;" \n "_lastAte = _survival select 1;" \n "_lastDrank = _survival select 2;" \n "" \n "_usedFood = 0;" \n "_usedWater = 0;" \n "" \n "dayzGearSave = false;" \n "_inventory call player_gearSet;" \n "" \n "//player addMagazine ""7Rnd_45ACP_1911"";" \n "" \n "//Assess in backpack" \n "if (count _backpack > 0) then {" \n " //Populate" \n " _backpackType = _backpack select 0;" \n " _backpackWpn = _backpack select 1;" \n " _backpackMagTypes = [];" \n " _backpackMagQty = [];" \n " if (count _backpackWpn > 0) then {" \n " _backpackMagTypes = (_backpack select 2) select 0;" \n " _backpackMagQty = (_backpack select 2) select 1;" \n " };" \n " _countr = 0;" \n " _backpackWater = 0;" \n "" \n " //Add backpack" \n " if (_backpackType != """") then {" \n " _isOK = isClass(configFile >> ""CfgVehicles"" >>_backpackType);" \n " if (_isOK) then {" \n " player addBackpack _backpackType; " \n " dayz_myBackpack = unitBackpack player;" \n " " \n " //Fill backpack contents" \n " //Weapons" \n " _backpackWpnTypes = [];" \n " _backpackWpnQtys = [];" \n " if (count _backpackWpn > 0) then {" \n " _backpackWpnTypes = _backpackWpn select 0;" \n " _backpackWpnQtys = _backpackWpn select 1;" \n " };" \n " _countr = 0;" \n " {" \n " if(_x in (DZE_REPLACE_WEAPONS select 0)) then {" \n " _x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);" \n " };" \n " dayz_myBackpack addWeaponCargoGlobal [_x,(_backpackWpnQtys select _countr)];" \n " _countr = _countr + 1;" \n " } forEach _backpackWpnTypes;" \n " " \n " //Magazines" \n " _countr = 0;" \n " {" \n " if (_x == ""BoltSteel"") then { _x = ""WoodenArrow"" }; // Convert BoltSteel to WoodenArrow" \n " if (_x == ""ItemTent"") then { _x = ""ItemTentOld"" };" \n " dayz_myBackpack addMagazineCargoGlobal [_x,(_backpackMagQty select _countr)];" \n " _countr = _countr + 1;" \n " } forEach _backpackMagTypes;" \n " " \n " dayz_myBackpackMags = getMagazineCargo dayz_myBackpack;" \n " dayz_myBackpackWpns = getWeaponCargo dayz_myBackpack;" \n " } else {" \n " dayz_myBackpack = objNull;" \n " dayz_myBackpackMags = [];" \n " dayz_myBackpackWpns = [];" \n " };" \n " } else {" \n " dayz_myBackpack = objNull;" \n " dayz_myBackpackMags = [];" \n " dayz_myBackpackWpns = [];" \n " };" \n "} else {" \n " dayz_myBackpack = objNull;" \n " dayz_myBackpackMags = [];" \n " dayz_myBackpackWpns = [];" \n "};" \n "" \n "dayzPlayerLogin2 = [];" \n "//[""PVDZE_plr_Login2"",[_charID,player,_playerUID]] call callRpcProcedure;" \n "" \n "PVDZE_plr_Login2 = [_charID,player,_playerUID];" \n "publicVariableServer ""PVDZE_plr_Login2"";" \n "" \n "dayz_loadScreenMsg = ""Requesting Character data from server"";" \n "progressLoadingScreen 0.9;" \n "if (_debug) then {" \n "diag_log ""Attempting Phase two..."";" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Response { priority = 0.000000; to="Phase_Two"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"count (dayzPlayerLogin2) > 0"/*%FSM*/; action=/*%FSM*/"_msg = player getVariable[""worldspace"",[]];"/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Phase_Two { name = "Phase_Two"; init = /*%FSM*/"dayz_loadScreenMsg = ""Character Data received from server""; " \n "if (_debug) then {" \n "diag_log ""Finished..."";" \n "};" \n "_worldspace = dayzPlayerLogin2 select 0;" \n "_state = dayzPlayerLogin2 select 1;" \n "" \n "_setDir = _worldspace select 0;" \n "_setPos = _worldspace select 1;" \n "" \n "if (isNil ""freshSpawn"") then {" \n " freshSpawn = 0;" \n "};" \n "" \n "if(dayz_paraSpawn and (freshSpawn == 2)) then {" \n " player setDir _setDir;" \n " player setPosATL [(_setPos select 0),(_setPos select 1),2000];" \n " [player,2000] spawn BIS_fnc_halo;" \n "} else {" \n "" \n " // make protective box" \n " DZE_PROTOBOX = createVehicle [""DebugBoxPlayer_DZ"", _setPos, [], 0, ""CAN_COLLIDE""];" \n " DZE_PROTOBOX setDir _setDir;" \n " DZE_PROTOBOX setPosATL _setPos;" \n "" \n " player setDir _setDir;" \n " player setPosATL _setPos;" \n "};" \n "" \n "{" \n " if (player getVariable[""hit_""+_x,false]) then { " \n " [player,_x,_x] spawn fnc_usec_damageBleed; " \n " usecBleed = [player,_x,_x];" \n " publicVariable ""usecBleed""; // draw blood stream on character, on all gameclients" \n " };" \n "} forEach USEC_typeOfWounds;" \n "//Legs and Arm fractures" \n "_legs = player getVariable [""hit_legs"",0];" \n "_arms = player getVariable [""hit_hands"",0];" \n "" \n "if (_legs > 1) then {" \n " player setHit[""legs"",1];" \n " r_fracture_legs = true;" \n "};" \n "if (_arms > 1) then {" \n " player setHit[""hands"",1];" \n " r_fracture_arms = true;" \n "};" \n "" \n "//Record current weapon state" \n "dayz_myWeapons = weapons player; //Array of last checked weapons" \n "dayz_myItems = items player; //Array of last checked items" \n "dayz_myMagazines = magazines player;" \n "" \n "dayz_playerUID = _playerUID;" \n "" \n "if ((_isNew) OR (count _inventory == 0)) then {" \n " //player is new, add initial loadout only if player is not pzombie" \n " if(!(player isKindOf ""PZombie_VB"")) then {" \n " _config = (configFile >> ""CfgSurvival"" >> ""Inventory"" >> ""Default"");" \n " _mags = getArray (_config >> ""magazines"");" \n " _wpns = getArray (_config >> ""weapons""); " \n " _bcpk = getText (_config >> ""backpack"");" \n " _bcpkItems = getText (_config >> ""backpackWeapon"");" \n " if(!isNil ""DefaultMagazines"") then {" \n " _mags = DefaultMagazines;" \n " };" \n " if(!isNil ""DefaultWeapons"") then {" \n " _wpns = DefaultWeapons;" \n " };" \n " if(!isNil ""DefaultBackpack"") then {" \n " _bcpk = DefaultBackpack;" \n " };" \n " if(!isNil ""DefaultBackpackItems"") then {" \n " _bcpkItems = DefaultBackpackItems;" \n " };" \n " //Add inventory" \n " {" \n " _isOK = isClass(configFile >> ""CfgMagazines"" >> _x);" \n " if (_isOK) then {" \n " player addMagazine _x;" \n " };" \n " } forEach _mags;" \n " {" \n " _isOK = isClass(configFile >> ""CfgWeapons"" >> _x);" \n " if (_isOK) then {" \n " player addWeapon _x;" \n " };" \n " } forEach _wpns;" \n " " \n " if (_bcpk != """") then {" \n " player addBackpack _bcpk; " \n " dayz_myBackpack = unitBackpack player;" \n " };" \n " if ((typeName _bcpkItems) == ""ARRAY"") then {" \n " {" \n " if (isClass(configFile >> ""CfgWeapons"" >> _x)) then {" \n " dayz_myBackpack addWeaponCargoGlobal [_x,1];" \n " } else {" \n " dayz_myBackpack addMagazineCargoGlobal [_x, 1];" \n " };" \n " } forEach _bcpkItems;" \n " } else {" \n " if (_bcpkItems != """") then {" \n " dayz_myBackpack addMagazineCargoGlobal [_bcpkItems, 1];" \n " };" \n " };" \n " };" \n "};" \n "" \n "//Work out survival time" \n "_totalMins = _survival select 0;" \n "_days = floor (_totalMins / 1440);" \n "_totalMins = (_totalMins - (_days * 1440));" \n "_hours = floor (_totalMins / 60);" \n "_mins = (_totalMins - (_hours * 60));" \n "" \n "//player variables" \n "dayz_characterID = _charID;" \n "dayz_hasFire = objNull; //records players Fireplace object" \n "dayz_myCursorTarget = objNull;" \n "dayz_myPosition = getPosATL player; //Last recorded position" \n "dayz_lastMeal = (_lastAte * 60);" \n "dayz_lastDrink = (_lastDrank * 60);" \n "dayz_zombiesLocal = 0; //Used to record how many local zombies being tracked" \n "dayz_Survived = _days; //total alive dayz" \n "" \n "//load in medical details" \n "r_player_dead = player getVariable[""USEC_isDead"",false];" \n "r_player_unconscious = player getVariable[""NORRN_unconscious"", false];" \n "r_player_infected = player getVariable[""USEC_infected"",false];" \n "r_player_injured = player getVariable[""USEC_injured"",false];" \n "r_player_inpain = player getVariable[""USEC_inPain"",false];" \n "r_player_cardiac = player getVariable[""USEC_isCardiac"",false];" \n "r_player_lowblood = player getVariable[""USEC_lowBlood"",false];" \n "r_player_blood = player getVariable[""USEC_BloodQty"",r_player_bloodTotal];" \n "" \n "//Hunger/Thirst" \n "_messing = player getVariable[""messing"",[0,0]];" \n "dayz_hunger = _messing select 0;" \n "dayz_thirst = _messing select 1;" \n "" \n "//player setVariable [""humanity"",-3000, true];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Alive { priority = 0.000000; to="Position"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!r_player_dead"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Dead_Player { priority = 0.000000; to="ERROR__Player_Already"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"r_player_dead"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class ERROR__Player_Already { name = "ERROR__Player_Already"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Position { name = "Position"; init = /*%FSM*/"//Location" \n "_myLoc = getPosATL player;" \n "" \n "dayz_loadScreenMsg = ""Setup Completed, please wait..."";" \n "" \n "//GUI" \n "3 cutRsc [""playerStatusGUI"", ""PLAIN"",0];" \n "//5 cutRsc [""playerKillScore"", ""PLAIN"",2];" \n "" \n "//Update GUI" \n "call player_updateGui;" \n "_id = [] spawn {" \n " disableSerialization;" \n " _display = uiNamespace getVariable 'DAYZ_GUI_display';" \n " _control = _display displayCtrl 1204;" \n " _control ctrlShow false;" \n " if (!r_player_injured) then {" \n " _ctrlBleed = _display displayCtrl 1303;" \n " _ctrlBleed ctrlShow false;" \n " };" \n " if (!r_fracture_legs and !r_fracture_arms) then {" \n " _ctrlFracture = _display displayCtrl 1203;" \n " _ctrlFracture ctrlShow false;" \n " };" \n "};" \n "" \n "call ui_changeDisplay;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Bad_Version { priority = 0.000000; to="ERROR__Bad_Versi"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_version != dayz_versionNo"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Version_Ok { priority = 0.000000; to="Stream"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_version == dayz_versionNo"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Load_In { name = "Load_In"; init = /*%FSM*/"//Reveal action types" \n "" \n "{player reveal _x} forEach (nearestObjects [getPosATL player, dayz_reveal, 50]);" \n "" \n "dayz_clientPreload = true;" \n "3 fadeSound 1;" \n "1 cutText ["""", ""PLAIN""];" \n "0 fadeMusic 0.5;" \n "" \n "//Check mission objects" \n "{ " \n " if (typeOf _x == ""RoadFlare"") then { " \n " _id = [_x,0] spawn object_roadFlare " \n " } else {" \n " _id = [_x,1] spawn object_roadFlare " \n " };" \n " } forEach (allMissionObjects ""LitObject"");"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Display_Ready { priority = 0.000000; to="Preload_Display"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!(isNull (findDisplay 46))"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class ERROR__Bad_Versi { name = "ERROR__Bad_Versi"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = diag_tickTime;" \n "" \n "dayz_loadScreenMsg = ""You are running an incorrect version, please download update from dayzepoch.com."";" \n "" \n "1 cutText [format[localize ""str_player_18"",dayz_versionNo,_version], ""PLAIN""];" \n "" \n "progressLoadingScreen 0.5;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="get_ready_to_clo_1"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 5"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Preload_Display { name = "Preload_Display"; init = /*%FSM*/"dayz_lastCheckBit = 0;" \n "" \n "(findDisplay 46) displayAddEventHandler [""KeyDown"",""_this call dayz_spaceInterrupt""];" \n "player disableConversation true;" \n "" \n "eh_player_killed = player addeventhandler [""FiredNear"",{_this call player_weaponFiredNear;} ];" \n "//_eh_combat_projectilenear = player addEventHandler [""IncomingFire"",{_this call player_projectileNear;}];" \n "" \n "//Select Weapon" \n "// Desc: select default weapon & handle multiple muzzles" \n "_playerObjName = format[""PVDZE_player%1"",_playerUID];" \n "call compile format[""PVDZE_player%1 = player;"",_playerUID];" \n "////diag_log (format[""player%1 = player"",_playerUID]);" \n "publicVariableServer _playerObjName;" \n "" \n "//_state = player getVariable[""state"",[]];" \n "_currentWpn = """";" \n "_currentAnim = """";" \n "if (count _state > 0) then {" \n " //Reload players state" \n " _currentWpn = _state select 0;" \n " _currentAnim = _state select 1;" \n " //Reload players state" \n " if (count _state > 2) then {" \n " dayz_temperatur = _state select 2;" \n " }; " \n " if ((count _state > 3) and DZE_FriendlySaving) then {" \n " DZE_Friends = _state select 3;" \n " }; " \n "} else {" \n " _currentWpn = ""Makarov"";" \n " _currentAnim = ""aidlpercmstpsraswpstdnon_player_idlesteady02"";" \n "};" \n "" \n "if (player hasWeapon ""MeleeCrowbar"") then {" \n " player removeMagazine 'crowbar_swing'; " \n " player addMagazine 'crowbar_swing';" \n "};" \n "if (player hasWeapon ""MeleeSledge"") then {" \n " player removeMagazine 'sledge_swing'; " \n " player addMagazine 'sledge_swing';" \n "};" \n "if (player hasWeapon ""MeleeHatchet_DZE"") then {" \n " player removeMagazine 'Hatchet_Swing'; " \n " player addMagazine 'Hatchet_Swing';" \n "};" \n "if (player hasWeapon ""MeleeMachete"") then {" \n " player removeMagazine 'Machete_Swing'; " \n " player addMagazine 'Machete_Swing';" \n "};" \n "if (player hasWeapon ""MeleeFishingPole"") then {" \n " player removeMagazine 'Fishing_Swing'; " \n " player addMagazine 'Fishing_Swing';" \n "};" \n "" \n "reload player;" \n "" \n "if (_currentAnim != """" and !dayz_paraSpawn) then {" \n " [objNull, player, rSwitchMove,_currentAnim] call RE;" \n "};" \n "" \n "if (_currentWpn != """") then {" \n " player selectWeapon _currentWpn;" \n "} else {" \n " //Establish default weapon" \n " if (count weapons player > 0) then" \n " {" \n " private['_type', '_muzzles'];" \n "" \n " _type = ((weapons player) select 0);" \n " // check for multiple muzzles (eg: GL)" \n " _muzzles = getArray(configFile >> ""cfgWeapons"" >> _type >> ""muzzles"");" \n "" \n " if (count _muzzles > 1) then {" \n " player selectWeapon (_muzzles select 0);" \n " } else {" \n " player selectWeapon _type;" \n " };" \n " };" \n "};" \n "" \n "//Player control loop" \n "dayz_monitor1 = [] spawn {" \n " while {true} do {" \n " call player_zombieCheck;" \n " sleep 1;" \n " };" \n "};" \n "" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Preload_Done { priority = 0.000000; to="Initialize"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"dayz_preloadFinished"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Initialize { name = "Initialize"; init = /*%FSM*/"//Medical" \n "dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n "[player] call fnc_usec_damageHandle;" \n "if (r_player_unconscious) then {" \n " r_player_timeout = player getVariable[""unconsciousTime"",0];" \n " player playActionNow ""Die"";" \n "};" \n "player allowDamage true;" \n "player enableSimulation true;" \n "0 cutText ["""", ""BLACK IN"",3];" \n "" \n "//Add core tools" \n "player addWeapon ""Loot"";" \n "player addWeapon ""Flare"";" \n "if ((currentWeapon player == """")) then { player action [""SWITCHWEAPON"", player,player,1]; };" \n "//load in medical details" \n "r_player_dead = player getVariable[""USEC_isDead"",false];" \n "r_player_unconscious = player getVariable[""NORRN_unconscious"", false];" \n "r_player_infected = player getVariable[""USEC_infected"",false];" \n "r_player_injured = player getVariable[""USEC_injured"",false];" \n "r_player_inpain = player getVariable[""USEC_inPain"",false];" \n "r_player_cardiac = player getVariable[""USEC_isCardiac"",false];" \n "r_player_lowblood = player getVariable[""USEC_lowBlood"",false];" \n "r_player_blood = player getVariable[""USEC_BloodQty"",r_player_bloodTotal];" \n "" \n """colorCorrections"" ppEffectEnable true;" \n """colorCorrections"" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 1 min (4*r_player_blood/3/r_player_bloodTotal)], [1, 1, 1, 0.0]];" \n """colorCorrections"" ppEffectCommit 0;" \n "" \n "dayz_gui = [] spawn {" \n " private[""_distance""];" \n " dayz_musicH = [] spawn player_music;" \n " _wasInVehicle = false;" \n " _thisVehicle = objNull;" \n " while {true} do {" \n " _array = player call world_surfaceNoise;" \n " dayz_surfaceNoise = _array select 1;" \n " dayz_surfaceType = _array select 0;" \n "" \n " call player_checkStealth;" \n " dayz_statusArray = [] call player_updateGui;" \n "" \n " _vehicle = vehicle player;" \n " if (_vehicle != player) then {" \n " _wasInVehicle = true;" \n " _thisVehicle = _vehicle;" \n " } else {" \n " if (_wasInVehicle) then {" \n " _wasInVehicle = false;" \n " _thisVehicle call player_antiWall;" \n " };" \n " };" \n " sleep 0.2;" \n " };" \n "};" \n "" \n "dayzGearSave = true;" \n "" \n "dayz_slowCheck = [] spawn player_spawn_2;" \n "" \n "_world = toUpper(worldName); //toUpper(getText (configFile >> ""CfgWorlds"" >> (worldName) >> ""description""));" \n "_nearestCity = nearestLocations [getPos player, [""NameCityCapital"",""NameCity"",""NameVillage"",""NameLocal""],1000];" \n "Dayz_logonTown = ""Wilderness"";" \n "" \n "if (count _nearestCity > 0) then {Dayz_logonTown = text (_nearestCity select 0)};" \n "" \n "_first = [_world,Dayz_logonTown,localize (""str_player_06"") + "" "" + str(_days)] spawn BIS_fnc_infoText;" \n "" \n "Dayz_logonTime = daytime;" \n "Dayz_logonDate = dayz_Survived;" \n "" \n "dayz_animalCheck = [] spawn player_spawn_1;" \n "" \n "dayz_spawnCheck = [] spawn {" \n " while {true} do {" \n " [""both""] call player_spawnCheck;" \n " sleep 8;" \n " };" \n "};" \n "" \n "dayz_Totalzedscheck = [] spawn {" \n " while {true} do {" \n " dayz_maxCurrentZeds = {alive _x} count entities ""zZombie_Base"";" \n " sleep 60;" \n " };" \n "};" \n "" \n "dayz_backpackcheck = [] spawn {" \n " while {true} do {" \n " call player_dumpBackpack;" \n " sleep 1;" \n " };" \n "};" \n "" \n "// TODO: questionably" \n "{ _x call fnc_veh_ResetEH; } forEach vehicles;" \n "" \n "private[""_fadeFire""];" \n "{" \n " _fadeFire = _x getVariable['fadeFire', true];" \n " if (!_fadeFire) then {" \n " _nul = [_x,2,0,false,false] spawn BIS_Effects_Burn;" \n " };" \n "} forEach entities ""SpawnableWreck"";" \n "" \n "// remove box " \n "[] spawn {" \n " private [""_counter""];" \n " _counter = 0;" \n " while {true} do {" \n " if ((player getVariable[""combattimeout"", 0] >= time) or (_counter >= 60) or (player distance DZE_PROTOBOX > 2)) exitWith {" \n " deleteVehicle DZE_PROTOBOX;" \n " };" \n " sleep 1;" \n " _counter = _counter + 1;" \n " };" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class No_time_date { priority = 0.000000; to="ERROR__No_Date_or"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""PVDZE_plr_SetDate"""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class True { priority = 0.000000; to="Finish"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Finish { name = "Finish"; init = /*%FSM*/"dayzGearSave = true;" \n "dayz_myPosition = getPosATL player;" \n "" \n "//[""PVDZE_plr_LoginRecord"",[_playerUID,_charID,0]] call callRpcProcedure;" \n "" \n "PVDZE_plr_LoginRecord = [_playerUID,_charID,0];" \n "publicVariableServer ""PVDZE_plr_LoginRecord"";" \n "" \n "endLoadingScreen;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class Enable_Sim { name = "Enable_Sim"; init = /*%FSM*/"if (_debug) then {" \n "diag_log (""PLOGIN: Enable Sim"");" \n "};" \n "" \n "_myEpochAnim = getText(configFile >> ""CfgPatches"" >> ""dayz_anim"" >> ""dayzVersion"");" \n "_myEpoch = getText(configFile >> ""CfgPatches"" >> ""dayz_epoch"" >> ""dayzVersion"");" \n "_myEpochB = getText(configFile >> ""CfgPatches"" >> ""dayz_epoch_b"" >> ""dayzVersion"");" \n "_myEpochSfx = getText(configFile >> ""CfgPatches"" >> ""dayz_sfx"" >> ""dayzVersion"");" \n "_myEpochDayZ = getText(configFile >> ""CfgPatches"" >> ""dayz"" >> ""dayzVersion"");" \n "" \n "player enableSimulation true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class no_PlayerID { priority = 2.000000; to="ERROR__No_Player_1"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(_myEpochAnim != ""1.0.5"") || (_myEpoch != ""1.0.5"") || (_myEpochB != ""1.0.5"") || (_myEpochSfx != ""1.0.5"") || (_myEpochDayZ != ""1.0.5"")"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class player_not_null { priority = 0.000000; to="Prepare"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNull player"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Gender_Selection { name = "Gender_Selection"; init = /*%FSM*/"dayz_selectGender = ""Survivor2_DZ"";" \n "1 cutText ["""", ""BLACK"",0];" \n "endLoadingScreen;" \n "createDialog ""RscDisplayGenderSelect"";" \n "freshSpawn = 2;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Selected { priority = 0.000000; to="Process"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!dialog"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Process { name = "Process"; init = /*%FSM*/"_model = dayz_selectGender;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Hive_Ok { priority = 0.000000; to="Phase_One"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class ERROR__No_Player_1 { name = "ERROR__No_Player_1"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = diag_tickTime;" \n "1 cutText [(localize ""str_epoch_player_113""), ""PLAIN"",15];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Stream { name = "Stream"; init = /*%FSM*/"//stream in location" \n "//[false] call stream_locationCheck;" \n "" \n "_zombies = (getPosATL player) nearEntities [""zZombie_Base"",25];" \n "{deleteVehicle _x} forEach _zombies;" \n "" \n "endLoadingScreen;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Preloaded { priority = 0.000000; to="Load_In"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"preloadCamera _setPos"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Retry { name = "Retry"; init = /*%FSM*/"diag_log (""PLOGIN: Retrying Authentication... ("" + _playerUID + "")"");" \n "dayz_loadScreenMsg = (localize ""str_player_14"");" \n "" \n "_AuthAttempt = _AuthAttempt +1;" \n "" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class auth_failed { priority = 0.000000; to="get_ready_to_clo"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"_AuthAttempt > 5"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Retry { priority = 0.000000; to="Request"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 5"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class get_ready_to_clo { name = "get_ready_to_clo"; init = /*%FSM*/"diag_log (""PLOGIN: Authentication Failed ("" + _playerUID + "")"");" \n "dayz_loadScreenMsg = (localize ""str_player_32"");" \n "" \n "progressLoadingScreen 1;" \n "" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class sleep_ { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Disconnect { name = "Disconnect"; init = /*%FSM*/"endLoadingScreen;" \n "" \n "// disable player interaction and move him off site" \n "// player setPos [10,10,100000];" \n " player enableSimulation false;" \n "" \n "diag_log (""End Mission"");" \n "" \n "//if (!isServer) then {" \n " failMission ""LOSER"";" \n " endMission ""END1""" \n "//};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { }; }; /*%FSM*/ /*%FSM*/ class ERROR__No_Date_or { name = "ERROR__No_Date_or"; init = /*%FSM*/"endLoadingScreen;" \n "selectNoPlayer;" \n "_myTime = diag_tickTime;" \n "1 cutText [(localize ""str_epoch_player_114""), ""PLAIN"",5];"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class get_ready_to_clo_1 { name = "get_ready_to_clo_1"; init = /*%FSM*/"//diag_log (""PLOGIN:Wrong DayZ Version ("" + dayz_versionNo + "")"");" \n "diag_log format[localize ""str_player_18"",dayz_versionNo,_version];" \n "" \n "dayz_loadScreenMsg = ""You are running an incorrect version of DAYZ_CODE, please download this file from dayzepoch.com."";" \n "" \n "progressLoadingScreen 1;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class sleep_ { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 5"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Server_Loading { name = "Server_Loading"; init = /*%FSM*/"_myTime = diag_tickTime;" \n "dayz_loadScreenMsg = (""Waiting for server to start authentication"");" \n "if (_debug) then {" \n "diag_log ""PLOGIN: Waiting for server to start authentication"";" \n "};" \n "progressLoadingScreen 0.5;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Server_Ready { priority = 0.000000; to="Request"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isNil ""sm_done"""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class Too_Long { priority = 0.000000; to="Disconnect"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class Player_Zombie__S { name = "Player_Zombie__S"; init = /*%FSM*/"_zssupported = [""pz_policeman"",""pz_suit1"",""pz_suit2"",""pz_worker1"",""pz_worker2"",""pz_worker3"",""pz_doctor"",""pz_teacher"",""pz_hunter"",""pz_villager1"",""pz_villager2"",""pz_villager3"",""pz_priest""];" \n "_model = (_zssupported select floor(random(count _zssupported)));" \n "freshSpawn = 1;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class Hive_Ok { priority = 0.000000; to="Phase_One"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ }; initState="init"; finalStates[] = { "Finish", }; }; /*%FSM*/