Jump to content
  • 0

[script] Instant Respawn


Gr8

Question

Hello there,

 

I am working on a little thing that will allow players to respawn after death without going back to the loading screen. Just like A3 Epoch.

 

But i need your help.

 

Steps :

 

  1. Death
  2. Black Out
  3. New Character TP to debug
  4. Count Down to Respawn
  5. Respawn or execute spawn selector

 

Features :

  • No new character data field
  • Reset Life stats
  • Bring Blood back to 1200 after respawn
  • No respawn by logging back from the lobby

 

That's all i can think of as of now. I am no coder. But I know what it should be a function that we need to code in player_death.sqf

Shoot me ideas and i will test em. Should be pretty simple, might have to change some stuff in server compiles

Link to comment
Share on other sites

Recommended Posts

  • 0

I actually like, that it creates a new character data entry. Because, if i see a character, that did never die or something that makes me suspicious. Good for catching hackers, since InfiSTAR kinda got bad in it. (sorry, to say it like that but it's true. InfiSTAR never catched a single hacker for me).

 

But yeah i see there this problem:

New Character TP to debug

 

You see, in the debug Zone characters wont synchronize. You'd have to wait like quite some time for the character to safe or force a safe but then again this could cause a lot of duping, maybe.. Also, while some clients have a high end computer, other's dont. And even tho the debug zone is practically nothing, there are still gras cutters etc and moving a character to quick may also cause laggs or even out of memory errors (i actually doubt, that memory errors could happen with this).

 

 

Regardless of that i really like the Idea and you will need the player death, player login and player setup to complete this, as you want to change / delete some hive calls.

Link to comment
Share on other sites

  • 0

TPing to debug is the main point to make sure they dont sync with the server, and if they log out there, they will be forced to choose a spawn via ESSv2

I get what you mean, but to remove gear, update blood etc, you will need the player to not be in debug zone, because it could happen, he spawns in and his legs are still broke because you healed him while he was in debug but the server did not recognize that. You understand my point? It don't mean any harm..

Link to comment
Share on other sites

  • 0

I get what you mean, but to remove gear, update blood etc, you will need the player to not be in debug zone, because it could happen, he spawns in and his legs are still broke because you healed him while he was in debug but the server did not recognize that. You understand my point? It don't mean any harm..

 

Ya, I know, Syncing is not an issue, because once you will select a spawn, and go outside the debug, it should save your current state.

Link to comment
Share on other sites

  • 0

I suppose really it's just a case of undefining variables, clearing event handlers etc... and re-running the player_monitor.fsm.

 

I didn't think about that. 

 

How does this look ?

dayz_originalPlayer removeAllEventHandlers "FiredNear";
dayz_originalPlayer removeAllEventHandlers "HandleDamage";
dayz_originalPlayer removeAllEventHandlers "Killed";
dayz_originalPlayer removeAllEventHandlers "Fired";
dayz_originalPlayer removeAllEventHandlers "GetOut";
dayz_originalPlayer removeAllEventHandlers "GetIn";
dayz_originalPlayer removeAllEventHandlers "Local";
dayz_originalPlayer removeAllEventHandlers "Respawn";

or am i missing something?

 

So running player moniter will just go through the loading screen and do the authentication process again?, why would that be necessary ?

We can just TP the player to the debug and execute the Spawn selector. what would be a better way ?

Link to comment
Share on other sites

  • 0

I didn't think about that. 

 

How does this look ?

dayz_originalPlayer removeAllEventHandlers "FiredNear";
dayz_originalPlayer removeAllEventHandlers "HandleDamage";
dayz_originalPlayer removeAllEventHandlers "Killed";
dayz_originalPlayer removeAllEventHandlers "Fired";
dayz_originalPlayer removeAllEventHandlers "GetOut";
dayz_originalPlayer removeAllEventHandlers "GetIn";
dayz_originalPlayer removeAllEventHandlers "Local";
dayz_originalPlayer removeAllEventHandlers "Respawn";

or am i missing something?

 

So running player moniter will just go through the loading screen and do the authentication process again?, why would that be necessary ?

We can just TP the player to the debug and execute the Spawn selector. what would be a better way ?

 

Depends how you want to do it really. You can stick to the original system whereby you die and you get a new characterID, or do as you say, clear everything up and let them spawn select again which would use their existing characterID. Personally I'd want to give them a new characterID so I can see all the deaths in the database etc... but it's whatever floats your boat I guess.

Link to comment
Share on other sites

  • 0

Eh, I hate death character tables.

 

anyways, This is what i got. and i feel like i am missing something

 

private ["_display","_body","_playerID","_array","_source","_method","_canHitFree","_isBandit","_punishment","_humanityHit","_myKills","_humanity","_kills","_killsV","_myGroup"];
disableUserInput true;
disableSerialization;
if (deathHandled) exitWith {};
deathHandled = true;


_body = player;
_playerID = getPlayerUID player;
_debug = getMarkerPos "respawn_west";


if ((alive player) && {isNil {dayz_playerName}}) then {
dayz_playerName = name player;
};


if (alive _body) then {
_body setDamage 1;
};


//Prevent client freezes
_display = findDisplay 49;
if(!isNull _display) then {_display closeDisplay 0;};
if (dialog) then {closeDialog 0;};
if (visibleMap) then {openMap false;};


_infected = 0;
if (r_player_infected && DZE_PlayerZed) then {
_infected = 1;
};


_body removeAllEventHandlers "FiredNear";
_body removeAllEventHandlers "HandleDamage";
_body removeAllEventHandlers "Killed";
_body removeAllEventHandlers "Fired";
_body removeAllEventHandlers "GetOut";
_body removeAllEventHandlers "GetIn";
_body removeAllEventHandlers "Local";
clearVehicleInit _body;


sleep 0.05;


PVDZE_plr_Died = [dayz_characterID,0,_body,_playerID,_infected, dayz_playerName];
publicVariableServer "PVDZE_plr_Died";


_id = [player,100,true,getPosATL player] call player_alertZombies;


sleep 0.5;


dayz_originalPlayer removeAllEventHandlers "FiredNear";
dayz_originalPlayer removeAllEventHandlers "HandleDamage";
dayz_originalPlayer removeAllEventHandlers "Killed";
dayz_originalPlayer removeAllEventHandlers "Fired";
dayz_originalPlayer removeAllEventHandlers "GetOut";
dayz_originalPlayer removeAllEventHandlers "GetIn";
dayz_originalPlayer removeAllEventHandlers "Local";
dayz_originalPlayer removeAllEventHandlers "Respawn";
dayz_originalPlayer setDamage 0;
dayz_originalPlayer allowDamage false;
dayz_originalPlayer enableSimulation true;
addSwitchableUnit dayz_originalPlayer;
setPlayable dayz_originalPlayer;
selectPlayer dayz_originalPlayer;
dayz_originalPlayer setDamage 0;
dayz_originalPlayer allowDamage false;
dayz_originalPlayer setPos _debug;

player setVariable ["NORRN_unconscious", false, true];
player setVariable ["unconsciousTime", 0, true];
player setVariable ["USEC_isCardiac",false,true];
player setVariable ["medForceUpdate",true,true];
player setVariable ["startcombattimer", 0];
r_player_unconscious = false;
r_player_cardiac = false;


_array = _this;
if (count _array > 0) then {
_source = _array select 0;
_method = _array select 1;
if (!isNull _source) then {
if (_source != player) then {
// Killed
ctc_HumanityChange = [_body,_source];
publicVariableServer "ctc_HumanityChange"; //Send needed values to server.
ctc_HumanityChange = []; //Clean up global variable.
} else {
// Suicide
};
};
_body setVariable ["deathType",_method,true];
};


disableUserInput false;


// Wait 10 Seconds
for "_x" from 1 to 10 do {
if (_x >= 2) then {cutText [format ["RE-SPAWNING in %1s", 11-_x], "PLAIN DOWN"];};
uiSleep 1;
};


// Execute Spawn Script
execVM "GG\spawn\start.sqf";
Link to comment
Share on other sites

  • 0

Update : Everything working fine now.

But there is one problem, After respawning, in the DB you still are Dead. So when you log in, you have to respawn again.

Any ideas on that one?

What is this related to:

PVDZE_plr_Died = [dayz_characterID,0,_body,_playerID,_infected, dayz_playerName];

publicVariableServer "PVDZE_plr_Died";

Is this for death messages or is it calling a function to set alive to 0 in the database?

Link to comment
Share on other sites

  • 0

What is this related to:

PVDZE_plr_Died = [dayz_characterID,0,_body,_playerID,_infected, dayz_playerName];

publicVariableServer "PVDZE_plr_Died";

Is this for death messages or is it calling a function to set alive to 0 in the database?

 

That sets the db alive to 0

Link to comment
Share on other sites

  • 0

In the ESS Spawn Selector (i don't know which one you are using?) i found this:

 

	waitUntil {!isNil "PVDZE_plr_LoginRecord"};
	_isPZombie = player isKindOf "PZombie_VB";
	_go = dayzPlayerLogin2 select 2;
} else {
	waitUntil {!isNil "PVDZ_plr_LoginRecord"};
	_isPZombie = false;
	_go = if (count PVCDZ_plr_Login2 > 3) then {PVCDZ_plr_Login2 select 3} else {PVCDZ_plr_Login2 select 2};
};

Might be, why you don't spawn, because it want's you to log in. So you'll have to force a login..

Also: If you take the option out, to kill the player via Database and he then logs of after he died, his character will most likely still be alive and he'll just spawn in as his character. I think setting the player dead in the database is actually necessary.

Maybe, instead of deleting that row, try synchronizing the player instead, i.e. get all his variables, remove the gear etc.. and then kill the character in the database, make a new entry and call server_characterSync?

Link to comment
Share on other sites

  • 0

If i get that right it would only Log the Player in. But player is already logged in, unless you log him out, what you want to prevent. That's basically the part after Character Creation i think.

I was just thinking, a workaround could be to force a Database Entry using server_onPlayerDisconnect. I am especially looking at this:

 

_id = [_playerUID,_characterID,2] spawn dayz_recordLogin;

Which seems to be just want you need ? Maybe.. I dunno, i don't understand everything yet..

Link to comment
Share on other sites

  • 0

The only Database Kind of Action in the Player_monitor.fsm is this:

 

if (_debug) then {
diag_log ("PLOGIN: Requesting Authentication... (" + _playerUID + ")");
};
dayz_loadScreenMsg = ("Awaiting server response...");

progressLoadingScreen 0.8;

_msg = [];

PVDZE_plr_Login = [_playerUID,player];
publicVariableServer "PVDZE_plr_Login";

if (isServer) then {
	PVDZE_plr_Login call server_playerLogin;
};

dayzPlayerLogin = [];

_myTime = diag_tickTime;

Seems to be logging the player in, by calling the Entry from the character table, to get the Values, state, etc...

 

The FSM in Text form:

 

/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Player Monitor">*/
/*%FSM<HEAD>*/
/*
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,250,-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,4346,-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[] = {"version_check",4,218,50.000000,-100.000000,150.000000,-50.000000,2.000000,"version check"};
item47[] = {"ERROR__version_c",2,250,175.000000,-100.000000,275.000000,-50.000000,0.000000,"ERROR:" \n "version check"};
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_",2,250,175.000000,1150.000000,275.000000,1200.000000,0.000000,"ERROR:" \n "No Date || 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,-525.536743,341.638855,1439.535156,840.723267,866,598,1};
window[] = {2,-1,-1,-1,-1,784,26,1404,26,3,884};
*//*%FSM</HEAD>*/
class FSM
{
  fsmName = "DayZ Player Monitor";
  class States
  {
    /*%FSM<STATE "init">*/
    class init
    {
      name = "init";
      init = /*%FSM<STATEINIT""">*/"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.5;" \n
       "dayz_loadScreenMsg = (""Initializing Client..."");" \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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Client">*/
        class Client
        {
          priority = 0.000000;
          to="Loading";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!isServer"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "isServer">*/
        class isServer
        {
          priority = 0.000000;
          to="wait";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"isServer"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "wait">*/
    class wait
    {
      name = "wait";
      init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Allow_Conn">*/
        class Allow_Conn
        {
          priority = 0.000000;
          to="Loading";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"allowConnection"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Loading">*/
    class Loading
    {
      name = "Loading";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "if (_debug) then {" \n
       "diag_log (""PLOGIN: Initating"");" \n
       "};" \n
       "" \n
       "dayz_loadScreenMsg = (""Loading Client Functions..."");" \n
       "" \n
       "progressLoadingScreen 0.6;" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Initialized">*/
        class Initialized
        {
          priority = 0.000000;
          to="Enable_Sim";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!isnil ""bis_fnc_init"""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/"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 || _isInVehicle || _isTerminal) then {" \n
           "		_currentAnim = """";" \n
           "		//If position to be updated, make sure it is at ground level!" \n
           "		if ((count _playerPos > 0) && !_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</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Prepare">*/
    class Prepare
    {
      name = "Prepare";
      init = /*%FSM<STATEINIT""">*/"if (_debug) then {" \n
       "diag_log (""PLOGIN: Player Model Exists"");" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "player___player">*/
        class player___player
        {
          priority = 0.000000;
          to="Collect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"player == player"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Collect">*/
    class Collect
    {
      name = "Collect";
      init = /*%FSM<STATEINIT""">*/"if (_debug) then {" \n
       "diag_log (""PLOGIN: Player Ready"");" \n
       "};" \n
       "dayz_loadScreenMsg = (""Getting your Player ID..."");" \n
       "" \n
       "progressLoadingScreen 0.7;" \n
       "" \n
       "_playerUID = getPlayerUID player;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "no_PlayerID">*/
        class no_PlayerID
        {
          priority = 2.000000;
          to="ERROR__No_Player";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_playerUID == """""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Has_PlayerID">*/
        class Has_PlayerID
        {
          priority = 1.000000;
          to="Server_Loading";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!(isNil ""_playerUID"")"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__No_Player">*/
    class ERROR__No_Player
    {
      name = "ERROR__No_Player";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "selectNoPlayer;" \n
       "_myTime = diag_tickTime;" \n
       "1 cutText [localize ""str_player_14"", ""PLAIN"",15];"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Request">*/
    class Request
    {
      name = "Request";
      init = /*%FSM<STATEINIT""">*/"if (_debug) then {" \n
       "diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n
       "};" \n
       "dayz_loadScreenMsg = (""Awaiting server response..."");" \n
       "" \n
       "progressLoadingScreen 0.8;" \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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "retry_">*/
        class retry_
        {
          priority = 0.000000;
          to="Retry";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Response">*/
        class Response
        {
          priority = 0.000000;
          to="Parse_Login";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"count (dayzPlayerLogin) > 1"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/"_msg = 		dayzPlayerLogin;"/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Parse_Login">*/
    class Parse_Login
    {
      name = "Parse_Login";
      init = /*%FSM<STATEINIT""">*/"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 = (""Logging you in..."");" \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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Hive_Bad">*/
        class Hive_Bad
        {
          priority = 10.000000;
          to="ERROR__Wrong_HIVE";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!_isHiveOk"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "New_Infected_Cha">*/
        class New_Infected_Cha
        {
          priority = 5.000000;
          to="Player_Zombie__S";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_isNew && _isInfected == 1"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "New_Character">*/
        class New_Character
        {
          priority = 5.000000;
          to="Gender_Selection";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_isNew && _isInfected == 0"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Hive_Ok">*/
        class Hive_Ok
        {
          priority = 0.000000;
          to="Phase_One";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__Wrong_HIVE">*/
    class ERROR__Wrong_HIVE
    {
      name = "ERROR__Wrong_HIVE";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "selectNoPlayer;" \n
       "" \n
       "_myTime = diag_tickTime;" \n
       "1 cutText [(localize ""str_epoch_player_112""), ""PLAIN"",5];"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Phase_One">*/
    class Phase_One
    {
      name = "Phase_One";
      init = /*%FSM<STATEINIT""">*/"if ((!isNil ""DZE_defaultSkin"") && _isNew && (_isInfected == 0)) then {" \n
       "	if (dayz_selectGender == ""Survivor2_DZ"") then {" \n
       "		_rand = floor(random (count (DZE_defaultSkin select 0)));" \n
       "		_model = getText (configFile >> ""CfgSurvival"" >> ""Skins"" >> ((DZE_defaultSkin select 0) select _rand) >> ""playerModel""); //MALE" \n
       "	} else {" \n
       "		_rand = floor(random (count (DZE_defaultSkin select 1)));" \n
       "		_model = getText (configFile >> ""CfgSurvival"" >> ""Skins"" >> ((DZE_defaultSkin select 1) select _rand) >> ""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
       "			} count _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
       "			} count _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 =  ""Setting up your Gear..."";" \n
       "progressLoadingScreen 0.9;" \n
       "if (_debug) then {" \n
       "diag_log ""Attempting Phase two..."";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Response">*/
        class Response
        {
          priority = 0.000000;
          to="Phase_Two";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"count (dayzPlayerLogin2) > 0"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/"_msg = 		player getVariable[""worldspace"",[]];"/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Phase_Two">*/
    class Phase_Two
    {
      name = "Phase_Two";
      init = /*%FSM<STATEINIT""">*/"dayz_loadScreenMsg =  ""Setting up character status...""; " \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 && (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
       "} count USEC_typeOfWounds;" \n
       "//Legs && 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) || (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
       "		} count _mags;" \n
       "		{" \n
       "			_isOK = 	isClass(configFile >> ""CfgWeapons"" >> _x);" \n
       "			if (_isOK) then {" \n
       "				player addWeapon _x;" \n
       "			};" \n
       "		} count _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
       "			} count _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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Alive">*/
        class Alive
        {
          priority = 0.000000;
          to="Position";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!r_player_dead"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Dead_Player">*/
        class Dead_Player
        {
          priority = 0.000000;
          to="ERROR__Player_Already";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"r_player_dead"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__Player_Already">*/
    class ERROR__Player_Already
    {
      name = "ERROR__Player_Already";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "selectNoPlayer;" \n
       "_myTime = diag_tickTime;" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Position">*/
    class Position
    {
      name = "Position";
      init = /*%FSM<STATEINIT""">*/"//Location" \n
       "_myLoc = getPosATL player;" \n
       "" \n
       "dayz_loadScreenMsg = ""All done, streaming position and clearing Screen..."";" \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 && !r_fracture_arms) then {" \n
       "		_ctrlFracture = 	_display displayCtrl 1203;" \n
       "		_ctrlFracture ctrlShow false;" \n
       "	};" \n
       "};" \n
       "" \n
       "call ui_changeDisplay;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Bad_Version">*/
        class Bad_Version
        {
          priority = 0.000000;
          to="ERROR__Bad_Versi";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_version != dayz_versionNo"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Version_Ok">*/
        class Version_Ok
        {
          priority = 0.000000;
          to="Stream";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_version == dayz_versionNo"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Load_In">*/
    class Load_In
    {
      name = "Load_In";
      init = /*%FSM<STATEINIT""">*/"//Reveal action types" \n
       "" \n
       "{player reveal _x} count (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
       " } count (allMissionObjects ""LitObject"");"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Display_Ready">*/
        class Display_Ready
        {
          priority = 0.000000;
          to="Preload_Display";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!(isNull (findDisplay 46))"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__Bad_Versi">*/
    class ERROR__Bad_Versi
    {
      name = "ERROR__Bad_Versi";
      init = /*%FSM<STATEINIT""">*/"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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="get_ready_to_clo_1";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 5"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Preload_Display">*/
    class Preload_Display
    {
      name = "Preload_Display";
      init = /*%FSM<STATEINIT""">*/"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) && 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 != """" && !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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Preload_Done">*/
        class Preload_Done
        {
          priority = 0.000000;
          to="Initialize";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"dayz_preloadFinished"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Initialize">*/
    class Initialize
    {
      name = "Initialize";
      init = /*%FSM<STATEINIT""">*/"//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
       "dayz_playerName =	name player;" \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
       "selfTransfusionTime = time; //time to keep for last  self transfusion." \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 [([player] call FNC_GetPos), [""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; } count 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
       "} count 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) || (_counter >= 60) || (player distance DZE_PROTOBOX > 2)) exitWith {" \n
       "			deleteVehicle DZE_PROTOBOX;" \n
       "		};" \n
       "		sleep 1;" \n
       "		_counter = _counter + 1;" \n
       "	};" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "No_time_date">*/
        class No_time_date
        {
          priority = 0.000000;
          to="ERROR__No_Date_";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!isNil ""PVDZE_plr_SetDate"""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "True">*/
        class True
        {
          priority = 0.000000;
          to="Finish";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Finish">*/
    class Finish
    {
      name = "Finish";
      init = /*%FSM<STATEINIT""">*/"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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Enable_Sim">*/
    class Enable_Sim
    {
      name = "Enable_Sim";
      init = /*%FSM<STATEINIT""">*/"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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "version_check">*/
        class version_check
        {
          priority = 2.000000;
          to="ERROR__version_c";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(_myEpochAnim != ""1.0.5"") || (_myEpoch != ""1.0.4.2"") || (_myEpochB != ""1.0.5"") || (_myEpochSfx != ""1.0.5"") || (_myEpochDayZ != ""1.0.5"")"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "player_not_null">*/
        class player_not_null
        {
          priority = 0.000000;
          to="Prepare";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!isNull player"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Gender_Selection">*/
    class Gender_Selection
    {
      name = "Gender_Selection";
      init = /*%FSM<STATEINIT""">*/"dayz_selectGender = ""Survivor2_DZ"";" \n
       "1 cutText ["""", ""BLACK"",0];" \n
       "endLoadingScreen;" \n
       "createDialog ""RscDisplayGenderSelect"";" \n
       "freshSpawn = 2;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Selected">*/
        class Selected
        {
          priority = 0.000000;
          to="Process";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!dialog"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Process">*/
    class Process
    {
      name = "Process";
      init = /*%FSM<STATEINIT""">*/"_model = dayz_selectGender;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Hive_Ok">*/
        class Hive_Ok
        {
          priority = 0.000000;
          to="Phase_One";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__version_c">*/
    class ERROR__version_c
    {
      name = "ERROR__version_c";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "selectNoPlayer;" \n
       "_myTime = diag_tickTime;" \n
       "1 cutText [(localize ""str_epoch_player_113""), ""PLAIN"",15];" \n
       "diag_log format [""VERSION CHECK: Anim:%1 Epoch:%2 EpochB:%3 Sfx:%4 DayZ:%5"",_myEpochAnim,_myEpoch,_myEpochB,_myEpochSfx,_myEpochDayZ];" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Stream">*/
    class Stream
    {
      name = "Stream";
      init = /*%FSM<STATEINIT""">*/"//stream in location" \n
       "//[false] call stream_locationCheck;" \n
       "" \n
       "_zombies = (getPosATL player) nearEntities [""zZombie_Base"",25];" \n
       "{deleteVehicle _x} count _zombies;" \n
       "" \n
       "endLoadingScreen;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Preloaded">*/
        class Preloaded
        {
          priority = 0.000000;
          to="Load_In";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"preloadCamera _setPos"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Retry">*/
    class Retry
    {
      name = "Retry";
      init = /*%FSM<STATEINIT""">*/"diag_log (""PLOGIN: Retrying Authentication... ("" + _playerUID + "")"");" \n
       "dayz_loadScreenMsg = (localize ""str_player_14"");" \n
       "" \n
       "_AuthAttempt = _AuthAttempt +1;" \n
       "" \n
       "_myTime = diag_tickTime;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "auth_failed">*/
        class auth_failed
        {
          priority = 0.000000;
          to="get_ready_to_clo";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_AuthAttempt > 5"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Retry">*/
        class Retry
        {
          priority = 0.000000;
          to="Request";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 5"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "get_ready_to_clo">*/
    class get_ready_to_clo
    {
      name = "get_ready_to_clo";
      init = /*%FSM<STATEINIT""">*/"diag_log (""PLOGIN: Authentication Failed ("" + _playerUID + "")"");" \n
       "dayz_loadScreenMsg = (localize ""str_player_32"");" \n
       "" \n
       "progressLoadingScreen 1;" \n
       "" \n
       "_myTime = diag_tickTime;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "sleep_">*/
        class sleep_
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 2"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Disconnect">*/
    class Disconnect
    {
      name = "Disconnect";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "" \n
       "// disable player interaction && 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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "ERROR__No_Date_">*/
    class ERROR__No_Date_
    {
      name = "ERROR__No_Date_";
      init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
       "selectNoPlayer;" \n
       "_myTime = diag_tickTime;" \n
       "1 cutText [(localize ""str_epoch_player_114""), ""PLAIN"",5];"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 10"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "get_ready_to_clo_1">*/
    class get_ready_to_clo_1
    {
      name = "get_ready_to_clo_1";
      init = /*%FSM<STATEINIT""">*/"//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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "sleep_">*/
        class sleep_
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 5"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Server_Loading">*/
    class Server_Loading
    {
      name = "Server_Loading";
      init = /*%FSM<STATEINIT""">*/"_myTime = diag_tickTime;" \n
       "dayz_loadScreenMsg = (""Trying to send Player ID to Server..."");" \n
       "if (_debug) then {" \n
       "diag_log ""PLOGIN: Waiting for server to start authentication"";" \n
       "};" \n
       "progressLoadingScreen 0.8;"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Server_Ready">*/
        class Server_Ready
        {
          priority = 0.000000;
          to="Request";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!isNil ""sm_done"""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "Too_Long">*/
        class Too_Long
        {
          priority = 0.000000;
          to="Disconnect";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _myTime) > 120"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "Player_Zombie__S">*/
    class Player_Zombie__S
    {
      name = "Player_Zombie__S";
      init = /*%FSM<STATEINIT""">*/"_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</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "Hive_Ok">*/
        class Hive_Ok
        {
          priority = 0.000000;
          to="Phase_One";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
  };
  initState="init";
  finalStates[] =
  {
    "Finish",
  };
};
/*%FSM</COMPILE>*/

Link to comment
Share on other sites

  • 0

I have been busy lately, but i am getting back on this.

 

I have checked in with ebay, who is helping me work this out. I will need to reset some global variables, and edit the ESS spawn script along the way.

Link to comment
Share on other sites

  • 0
On 05.05.2015 at 7:53 AM, Gr8 said:

I have been busy lately, but i am getting back on this.

 

I have checked in with ebay, who is helping me work this out. I will need to reset some global variables, and edit the ESS spawn script along the way.

So is it working?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...