From b5cb2787f4707d1291e39ee0319575c4137bf36d Mon Sep 17 00:00:00 2001 From: vbawol Date: Sat, 30 Jan 2016 09:12:44 -0600 Subject: [PATCH 1/7] test fix for login --- .../@epochhive/addons/a3_epoch_server.pbo | Bin 389066 -> 389074 bytes .../mpmissions/epoch.Altis.pbo | Bin 27886 -> 89608 bytes .../mpmissions/epoch.Australia.pbo | Bin 27938 -> 89660 bytes .../mpmissions/epoch.Bootcamp_ACR.pbo | Bin 28050 -> 89772 bytes .../mpmissions/epoch.Bornholm.pbo | Bin 27903 -> 89625 bytes .../mpmissions/epoch.Chernarus.pbo | Bin 28004 -> 89726 bytes .../mpmissions/epoch.Chernarus_Summer.pbo | Bin 28060 -> 89782 bytes .../mpmissions/epoch.Desert_E.pbo | Bin 28018 -> 89740 bytes .../mpmissions/epoch.Esseker.pbo | Bin 27892 -> 89614 bytes .../mpmissions/epoch.Mountains_ACR.pbo | Bin 28207 -> 89929 bytes .../mpmissions/epoch.Porto.pbo | Bin 28010 -> 89732 bytes .../mpmissions/epoch.ProvingGrounds_PMC.pbo | Bin 28098 -> 89820 bytes Server_Install_Pack/mpmissions/epoch.Sara.pbo | Bin 28169 -> 89891 bytes .../mpmissions/epoch.SaraLite.pbo | Bin 28184 -> 89906 bytes .../mpmissions/epoch.Sara_dbe1.pbo | Bin 28192 -> 89914 bytes .../mpmissions/epoch.Shapur_BAF.pbo | Bin 28034 -> 89756 bytes .../mpmissions/epoch.Stratis.pbo | Bin 27926 -> 89648 bytes .../mpmissions/epoch.Takistan.pbo | Bin 27949 -> 89671 bytes Server_Install_Pack/mpmissions/epoch.VR.pbo | Bin 29051 -> 89584 bytes .../mpmissions/epoch.Woodland_ACR.pbo | Bin 28146 -> 89868 bytes .../mpmissions/epoch.Zargabad.pbo | Bin 28087 -> 89809 bytes Server_Install_Pack/mpmissions/epoch.utes.pbo | Bin 27986 -> 89708 bytes Sources/epoch_code/System/player_login.fsm | 10 +- .../epoch_player/EPOCH_server_loadPlayer.sqf | 5 +- .../epoch.Altis/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Altis/description.ext | 1 + .../epoch.Altis/init/client_init.sqf | 76 + .../epoch.Altis/init/fn_postinit.sqf | 18 + .../epoch.Australia/System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Australia/description.ext | 1 + .../epoch.Australia/init/client_init.sqf | 76 + .../epoch.Australia/init/fn_postinit.sqf | 18 + .../System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Bootcamp_ACR/description.ext | 1 + .../epoch.Bootcamp_ACR/init/client_init.sqf | 76 + .../epoch.Bootcamp_ACR/init/fn_postinit.sqf | 18 + .../epoch.Bornholm/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Bornholm/description.ext | 1 + .../epoch.Bornholm/init/client_init.sqf | 76 + .../epoch.Bornholm/init/fn_postinit.sqf | 18 + .../epoch.Chernarus/System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Chernarus/description.ext | 1 + .../epoch.Chernarus/init/client_init.sqf | 76 + .../epoch.Chernarus/init/fn_postinit.sqf | 18 + .../System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Chernarus_Summer/description.ext | 1 + .../init/client_init.sqf | 76 + .../init/fn_postinit.sqf | 18 + .../epoch.Desert_E/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Desert_E/description.ext | 1 + .../epoch.Desert_E/init/client_init.sqf | 76 + .../epoch.Desert_E/init/fn_postinit.sqf | 18 + .../epoch.Esseker/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Esseker/description.ext | 3 +- .../epoch.Esseker/init/client_init.sqf | 76 + .../epoch.Esseker/init/fn_postinit.sqf | 18 + .../System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Mountains_ACR/description.ext | 1 + .../epoch.Mountains_ACR/init/client_init.sqf | 76 + .../epoch.Mountains_ACR/init/fn_postinit.sqf | 18 + .../epoch.Porto/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Porto/description.ext | 1 + .../epoch.Porto/init/client_init.sqf | 76 + .../epoch.Porto/init/fn_postinit.sqf | 18 + .../System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.ProvingGrounds_PMC/description.ext | 1 + .../init/client_init.sqf | 76 + .../init/fn_postinit.sqf | 18 + .../epoch.Sara/System/player_login.fsm | 1398 +++++++++++++++++ Sources/mpmissions/epoch.Sara/description.ext | 1 + .../epoch.Sara/init/client_init.sqf | 76 + .../epoch.Sara/init/fn_postinit.sqf | 18 + .../epoch.SaraLite/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.SaraLite/description.ext | 1 + .../epoch.SaraLite/init/client_init.sqf | 76 + .../epoch.SaraLite/init/fn_postinit.sqf | 18 + .../epoch.Sara_dbe1/System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Sara_dbe1/description.ext | 1 + .../epoch.Sara_dbe1/init/client_init.sqf | 76 + .../epoch.Sara_dbe1/init/fn_postinit.sqf | 18 + .../epoch.Shapur_BAF/System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Shapur_BAF/description.ext | 1 + .../epoch.Shapur_BAF/init/client_init.sqf | 76 + .../epoch.Shapur_BAF/init/fn_postinit.sqf | 18 + .../epoch.Stratis/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Stratis/description.ext | 1 + .../epoch.Stratis/init/client_init.sqf | 76 + .../epoch.Stratis/init/fn_postinit.sqf | 18 + .../epoch.Takistan/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Takistan/description.ext | 1 + .../epoch.Takistan/init/client_init.sqf | 76 + .../epoch.Takistan/init/fn_postinit.sqf | 18 + .../epoch.VR/System/player_login.fsm | 1398 +++++++++++++++++ Sources/mpmissions/epoch.VR/description.ext | 41 +- .../mpmissions/epoch.VR/init/client_init.sqf | 76 + .../mpmissions/epoch.VR/init/fn_postinit.sqf | 18 + .../System/player_login.fsm | 1398 +++++++++++++++++ .../epoch.Woodland_ACR/description.ext | 1 + .../epoch.Woodland_ACR/init/client_init.sqf | 76 + .../epoch.Woodland_ACR/init/fn_postinit.sqf | 18 + .../epoch.Zargabad/System/player_login.fsm | 1398 +++++++++++++++++ .../mpmissions/epoch.Zargabad/description.ext | 1 + .../epoch.Zargabad/init/client_init.sqf | 76 + .../epoch.Zargabad/init/fn_postinit.sqf | 18 + .../epoch.utes/System/player_login.fsm | 1398 +++++++++++++++++ Sources/mpmissions/epoch.utes/description.ext | 1 + .../epoch.utes/init/client_init.sqf | 76 + .../epoch.utes/init/fn_postinit.sqf | 18 + 108 files changed, 31362 insertions(+), 48 deletions(-) create mode 100644 Sources/mpmissions/epoch.Altis/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Altis/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Altis/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Australia/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Australia/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Australia/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Bootcamp_ACR/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Bootcamp_ACR/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Bornholm/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Bornholm/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Bornholm/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Chernarus/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Chernarus/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Chernarus/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Chernarus_Summer/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Chernarus_Summer/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Desert_E/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Desert_E/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Desert_E/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Esseker/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Esseker/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Esseker/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Mountains_ACR/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Mountains_ACR/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Porto/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Porto/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Porto/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.ProvingGrounds_PMC/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.ProvingGrounds_PMC/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Sara/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Sara/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Sara/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.SaraLite/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.SaraLite/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.SaraLite/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Sara_dbe1/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Sara_dbe1/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Shapur_BAF/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Shapur_BAF/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Stratis/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Stratis/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Stratis/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Takistan/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Takistan/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Takistan/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.VR/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.VR/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.VR/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Woodland_ACR/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Woodland_ACR/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.Zargabad/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.Zargabad/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.Zargabad/init/fn_postinit.sqf create mode 100644 Sources/mpmissions/epoch.utes/System/player_login.fsm create mode 100644 Sources/mpmissions/epoch.utes/init/client_init.sqf create mode 100644 Sources/mpmissions/epoch.utes/init/fn_postinit.sqf diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo index f83c2abfc464359f470ae85a565ff7c90967d15e..587319a858532324aa6fe327bd892fd47960b527 100644 GIT binary patch delta 133 zcmX?gU;NU2@eS`e+2T&G3EQAO`68Ff^zI`}LYuX@c5yLFoLSTSLS*|35k^j)>F*U7 zWv81fGKy~ZQ)GO=2;yt9>nM~Im8Ql{e%mP1?yk(Z-CddKOfS2Mp^34Hp;^1sMkXL; j24a@&QX5(4*ohP*W%n$~kyH2UZ0&#PZsQs0@caq@aSbuv delta 129 zcmV-{0Dk|{-xtc?7qIUM2F*X7R;VkJ(F!D&4aEW$vo8v^3ImgEs)Ohhx9AiB2@ID| zI|2ol3L^m`0$n?o@gM;*w;>?`;sKZP-2oYgPa^@hPa^`%jR!M1I5;shH-{pz0*4~8 j1BW891h*ow1)M$l-L2j!m<3R3$~H^L+LSs diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index d8d329cc4df455324f7df947e6e72f2229f80323..64632717a0bf1805cda5d3dbf281ea3dd5ed1c71 100644 GIT binary patch literal 89608 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 delta 69 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 delta 69 zcmdn9hjq~{#tGJZs=N$f@M&dLm@4nY*-~r|N>_zt#BY4g&9YgH)sS;@uw+KOD1+(5 Xb?>uyY7-v*PCoVWmW3bF?Ms{hLnRt@ diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index f5b18e13b2b887e6c2bea92beff7d03552ff1d5a..daf44dd04af8c4cb30dd0d7cb2e095a737977fd4 100644 GIT binary patch literal 89772 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 delta 69 zcmZ3pmvz!@#tGJZs=N$fAit_AOqF-yY$>(}rK`ej#BY4g&9YgH)sS;@u;h(+Q3lI( X+4-Vpn$kk%T<-dOwN+SJzS9=~9h(^J diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index b2dd08be2db088beccb4e16c6ef9409107e75bd6..ebb983825f5173abc2e4dc52588b35e57e526c36 100644 GIT binary patch literal 89625 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 diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index f11b8a5c3c4df7c5764be29d07fe2515b1834d17..c7319bd589feb4b651d1ee1f424216dc247fc90c 100644 GIT binary patch literal 89726 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 E185&Fp8x;= delta 69 zcmeyjhxN%V#tGJZs=N$fz`m*~OqF-yY$>*frK`eL#czDh&9YgH)sS;@u;i+EQHG-L Xb_>p|{*{_1xjEeE{nX`$a>SGYOJy2H diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index 7cf73d84608273ed3ed3b6ad0e1408e1f3c0ecee..c21257b3a761b2f192d3fab0a6fd4a6135dadf2d 100644 GIT binary patch literal 89782 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 O`SQ~6>*mv`-Txoq0Z0k} delta 69 zcmdnCmvzo<#tGJZs=N$f5Vxu-OqF-yY$>*frK`do#czDh&9YgH)sS;@u;in7QHBZf Y9xdzV{5mn=^YgQdjTd@6byy({07u0ea{vGU diff --git a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo index 3fa3094d52c7cabe6278a4a16f08cd61efc2f942..a335a4de95d61246a282e2a5a1ba7f6494924317 100644 GIT binary patch literal 89740 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 K`k}AB`2Pc;ixp@9 delta 69 zcmeC#%lhdS;{52_F>YP^zj?j@H1!(; diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 4fca7d94df8043e175933aa274d550d079e17a1e..3727f69e62aa3f2bb69fb46dd2b716135f1a7b3d 100644 GIT binary patch literal 89614 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 diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index 94a773565862252c516e72dccac4b12198f73998..cccc85b92c928b1b81131d71342885f5b4cdac30 100644 GIT binary patch literal 89929 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 XbmZj=k*lMx&SBYcP;dL5+p}8%A%+@R diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index ccc726683ee423c090baf07cc207433365ec9ee9..393274d9271f1ddea779b1c322496dd3e68c85fc 100644 GIT binary patch literal 89732 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 diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index 1b2e47301a03ecdee03a7630ac1b16fdedbc80ed..515aa5bc1d287e1cbf1f88f99f42a51310766f55 100644 GIT binary patch literal 89820 zcmeHw3t(JFdG1*!l*rTx34uVN&B;Qr9oEvmca_A6){<c7km-N4rPT;??eE z&&m(nK)LNLw@}KZEjK*cCM|8Dg*NSNfm`|reef!;&=;2$ZYUH&p%i+_Ev*a5{r{Qy z=W%v+SC+K3+}dr>*)wxy{%`)r{PWMt37Y<4C-mF#!;73A0(Zaf zmHpf6n9}0l?S(cYxRy;riZ}IzWTkEySx>r8HTZ9P4GNxFRW$GlY0N9;vF>$ieqjY_Gt0wf$$9~4X8 zV8io5mCaS4mfh}NuNwH03_)KgjnjS*nhz;7$SPL?Z@%i63loskYOY{WT-5wBZ$x;H zttv8(E_t<@Uk#2P-+eY7OT?0~EViv*!%`+d8iKKAz0s)DsO9FH6@NkfEc>As{L3+a zer0hK+M`}Y8nMY=Ri#5M2UJBk!)n;2>vn5_G)SD%LrrxSICoA)_mF1PH zhl(Ny2T7_o8-ahot9grl6GRMaKuG-kWM#R6B_*&@{%XcwuAlU(2P!qukclLd3^Ua` zEmBilZnkYb)$~gz+UsGjshT9z!d|phl0^cHB)tYmBb_KMEbd*Yl@MdVG-H74N+C7A zZR@~U_-~-)Vf#nNr>92uqudOLEThak;BS^~V4=d=J8F@~5;W8?G!OiHQ2@Tc&&Brx zjix^VuSAQ&dz1$F!zm&QqklnFVoAqBR!CGefZy4QWrgGa;D6K{qYH~nq-VWGLzs$z zvfrxLyp}&!30eod(?DMS7I$c92Fyl%*#%i{d9{-7&ik!XsFA5<7gF5TQYCO}E6ekK z)Ad^Jsig|oq<|IcQi;K!3v%Itc&wltr2*Pvv+mXAniXvFL>B9r_CX?Rzy#kdfx?siikW$-l;%|2Ra0d-%YmvjE zMG~3#AT&y_>{qK;HsDI84Oo_nN?y%nUktj30?>A-tL&Fp@e9NOmd6Ln${Xa=5-^Ts zLhAw_KubeQF-BHu3&0*|_keN-e${6hGw4nPK(k0MyYpwDZ2(od0?Nz!R|8ERu-Js{ zP~k9FJ$L|l5J1yR%HTH`Ax+E}adlvmTZ7Kq1%_3afnpFqc$NWy*@#%}02b|?7DXrW zOg7-fddp5H-60p1f;g6rGmb%Z`~Aw|5;umdwpkFoCH_vQHRc9Yma)n7spdmR4VnXr z0_KG=k7*Lq5nyQHFc-hl5^IAx^uc*x6U8G_jxJEEGTXHvM~1gVEN57K*pn;g$TDDUp!omf?H1UMj6LgBZtG zuT{^0NdZBGZh#>I#Rrq*>J_xG+lH5wdO7Ao&*l0a7#Z$DnWg~; z7YJ*D4U$EV3aWfCBxekg(Dbb|pu_agWYue+v;njz`bsUZYS3v8y1NqY9OxwX7CPv} zD7Y*qM2FPDqycHlrp1(zWuNj^ggUrIPi;!oxzP3GFIACAHvG zrIU;*u;h(;v&9t?6@qDm_=$i@D2G^9OJtR>@cSj~Np(00uqO)8k_Rq;f68Uq1a}7A zBiPw+YM7;)heCKgAjH@wwm?)sav5ttfEWd=&s~5=)>(?LnV%u(lEqJ<<$xvv>X*R~ z@(y~*hYkZAQRu|lT8}qKGL3?P-P6!bXeroe>Snj#H9^uxt6uYjyNi!P!0R1^VF@}- zF8l*e8#H@<1zhIfW_&p?rUsbsVgQ{luUdJz4~|Z=g1&v=u3*Q^$Cqw^T{A)f#Ndas zp`W{V_5f8d3HktRhoZ2$LUY-3r&s2ym6FR+0N5<_*1lV)!cf=UQJ9|GHCxyT)GoDJ zjo{{?p;M<$4bDS*u9Pcvq;prwGA~G>@)y}lRx)!Qp@DGVImCVpwP2h!wCus?wmCFgUjb(>7y_Y#Q5rf^L+H8= zg+|)jw%#-Zd>A@R?X_(y^S+CtO>Y5)*^4+h0%?t+kIPfWXQzvEg_(WhbF+|e^thgI zpwKyO-^|pZ>Gn_9>(QynshRe);`C(U?(rF@W6$yvO_fL#Yj^jri6XoX`mEg^; zG>TQ|PpZYrGCIFUqwT|5HjF5HE$*z!8`*SFMiLSD?G*B=Hnh8*^&J zNYh>=W}EfEAa$b2Yc@e}q4YBPUQ*PG+=<)m*5_Y#aHU$66g83!24jwU+U*&z#%UIG znXU&=APi98p)fZoY@{q{f4z!I1crkopJ`F0cCym)%f)>tLWd^Cx};Lnf~k%5V7SHYa6nuPlYcZGga1?d2ZP#^Qws~wGf~OxvvSirHBqY9Qi#S>70>|?i(0@8 zcsLPkp4)odmfN{w#couCOFYy1C#xLmEibK{gQIA%c+5Wi3<|_hP)_w%gn&4f@4rQT9^& zz|K9o6H2Zu?BLWGh2M(q*G@DEXDzARIa4MD+{?U^HgiwiP3r{q&N!F(i+J`8fZv zy`NCvj(b1Y1>aB!#{4o2mcX#MFMJ_*%Lj0*#My!`z`=%KIrzFB44G8V%!C7+yasAG z2wbCC2d^tYg`cd{d~OT^H;TSjc$NcsjIz(U>@>Y;oMX5G{=57h_@Adlwt&lz!$0SH z;in^l{jQ!5a|KT@eVR~)BbU{?d*`O%k(lD=mPMD3?)fpe8pNEK)6 z3$5bb;;7ejw4Zmbc;$I;KOF}``vGQIC_FMI^94 ztV_YMPBETfiC~Q2qy2uhQk=v9jO9H`)ILmyKMZF`IZg@uIB4&a;PIeSS1Sj_#&QW< z1~j=0M+w|&>?@i9pn-XqWsemL#)V$*Ely4EotkNXJ#lbs9QXm4job`5drgituMF~y zfwzclv(ofnfKohMX|`6psw3JSMmcq73pTF#VRsObEj(5=>-%NrQ*VARW4vE=4sHQf zGdCn~?z;@055TAiU^=@&I+#>k9dT&N0(}u@9K8&jsdAu9KM-TSBhW3v*ABeIZf$A- z?e3xc zk3mi2#Tn?koo_uAsab~M-;(n^EMM6><2;)^Ex|yCDF|e!)K*%)lf(BBM(E!9;uw&3 z#(Dg^bGJq!M3(WIwVxl^0pP|Q;^Ukf}ZQ8l- zY2q>COrf@7-mG&2&UNBr&iNKS=A92*Dc%k{_g^I*6LF{Vbb3xWw_HunNoU(N^qg`Y zmCtGCH=jZ8GtLiROV3&7&@<^d=WKr#J?EW&mCwV@N3Rp_lX2%~u^kzOt>Q?7WQN;q%3 zfu57jN|c^c&c5f_8@tlr3PuWS& z3Fp)DIqCe$P4qtHoP7~Jr=0^add@i4@1p0d^H1_Q=lt;?z0W&u9HQr8XE83GGjV4a zj3I01Ou~6ulAe>!=j3zBc?irJ&y#ju1vZdBXPns#J!hR8v-F&EzAc~g&PP!0k&l^S z=dF41oQ*rn!}OeRZoiqHlg`z*&~wW9qI^y}@4l7ZXPj5>rsu44_igl?b6#{iJ?EY8 z%I9I{lOy7NF7Et%fu0jiu!o+L&iE)jr=07?=sE5Dy?o9%zdKIvv(D@G(sRx!?xW|t zlh{ws!_H+B;yE98{!%_CoVUN2-Y1|iMt(U>YXhS2ZLJ9=mdNv24aCT2bPPOtSw~L(7H0=h&%UE;=mS~ z(s3?}oO|HGkx2QMKU0X@^U!aNL?YhHVZx^6oczr7qfkWyX0@O%J2-W491L-#jHQ9a zmQ_cblY9{9h;9$2lZ(tnhg{r=axfU#CIB$9Lb8Z(Tt6~)* zTmZr>uMN>CC7Ot?dUz!AJM({2h&=MxvkMZ@=N@>D6%p%yRMi`UNRX_GRfzrth-Mv# z4bd~9XJLs3qHD&UUWnZO@xKNh-Tn#1qfUs>N7!&436gDy{uGF2{h$reW0YthdRF6j zA@aB0=YU7W8+-EzJ)I3lBuKU)`WfieS$A$j^gEPjAUaon??~he??kElRtS7Jl-T1qq#J@ktsk%=!OqU$of5j~|Jhy=+tL?hcA?p)ar9j8PC(UuPn z6(S#bF-qOyaBoD+<5X2|jAdZ{pxt_31O6fN5p9TuDA7Q)^-W`i$gZFKEFd~^b#FxA zPH(&(36fPqDO>kaw2en3NVXw*4-m~9 zb{nEUr$htMm1VCGnR^CG-SyY?Mg-l%#v>9W+YtRX7=Ex}hYis$QKEt9@h58|k=k|G zA3gcC-u)5u02_};kZeQr5*S3W!IKTqDM~aDoh$zLk;tF^J$gZpKGGWz^Z*-=NRVtp z6uZXZLqHp%2}(2(efxipM1JezXuThe_Le&60X7~H8@1YP-4j4G8_3!aJr_o}EYUBVQPaeEfCDqp4^0<`Edv zjYlL%wjufj2rjUof(_BblxQHj^6_UDB5!yM^(gm4y?F%oa^n#Rl5L1u5F%lr5gVd6 zP@;k8+(RE3iTqsw5WW8uuk4Ko?B&KI5+vIY?R}QR13WfFB}z09J@NeO3z2940wVgv zXm3PdFE<_$i%Hon!?Pho#lloJL>Wpn5uNyfLgd$qFKn$hUhbtXdt@!O;0UE zUj06_b>D{3Y_B*2SeK1QBuKU)`UwbtvcRVe(K{*8Ky>cO&q0556M8{If6!Zxz`ATa zB0;hZ(LE5xW#L;JqWdV(Koq^}iIK>|hY`^?ez!Lwur3>qNRVtpl!O2@3qsovO;MtO z=!vtSJ^PsN{j^<5>N-VEKv6dyks#TI=yC|7vrxJX(G8SnAUgMrKN*R9>4VtAKJ?Ds zJOW+ZctnC^8=}7gqS=Ii4bitK(LnUXRS*IC!^d#M_vbJ^C(F=@N1%%vk4TVgL-Y=q z-eA)jHbftwL<7+k-+QPK`TCpCdcP>y8xhX8Y|$w5)DLGe0Xmm@_|v1x_h34 zcyTYO1IgWZM1o`+qMwE-ST^-)L-d=JXdpVb{fi@!+rErED*khCL?8qkk4TVgL$m-B z$!r4IhUkYW(M0ri(4!+;5z%8G?u`gVdc&nokZePge}TiN!EJ~RQKE_Hs-GN*JoB}H z=#hPq-nI_-yzz+G%)NcYw-qMx*<`*A(RNBS5IyB%(L&_k#;`wn+bUwJz~_xeBuKXL z=(9jHTasWy^skg?Ad3D5XwSPpkBHtm-kV3j=Z!}sNVXyRby#4*7FO60eUuUnMCTs* z>5<4gUV}aC12^?X1g*01hy=+tL_Y+}MA-5W8={}3L<7;5$vuV00}r5O82Yi^mH}F2 z;}HpxZHQ)ez~aH3P^k@3oe~X1&eLIL?_3k5?nBr1<`J~Y#v>9W+Yr3~(6FUCHbezV zG!Sh$c0(a@=f8xlcc=9X&?*~`NRVtp^v^&vTX1AU^o*NCqJik~NB53IuK!i^>mL1! z-cpAGu;KlYAlZiK!$34!Hf2NfB}z09oqPQ!M19hqJijK@vS3~CmEuzL3Fj3?+s;aJR-Js(C!62 zebC{{32lgWQKE_HLohcHdoJ>5d#X1gC}ZOhu@#VZL|=dk*`i1rq9-ZQKy<~mFNW#8 zTQG9+jGes^4fO+&AlW8$zYP_#rJXiJpQ1zq(KTZOg~(+uMIPP13PkaKAQB|o5dA1r z$QG#D5WS5O4MbPo^?ilN`@W90?(J9h=24;_hy=+tM0Y`jY?-YM(F!FRh#oJVhR8__ z5#0~oLodsa><1!2vJKHqP$63^Y(un<5)DLG|H=0hBAIIe(LIm;WA7d|)el61WE-OI z0MTs8vklR6fEt!)AUgN@FN{R)`%%=R=kD&!qjWzI36gDyJ^@6th1)hnU!z0=(N+5| zD@0!VN9fnBW;BuM2O>eT4bg+pglze_4bksYqJij|2cK4me9b}Y{qQP!*la%#36gDy zn$U!75xou3>nYJdbnfVj3X%W16{YT@V8?q|hFm`o36gDy#-It=Rsb6!j}i?;Tc0y2o*ABY6WHbh?m zqS>|#8=|K``?5q6(d%C~68Rq|kVpG~TfL<2=6)a&B-;?Z4~S-)OKgZfO^F7gE8hXp zg{e;biB55bTl;}X zkZeQrQV2L>L<7;*Iket~QICeU^wy)>`+-Q1 zY(w-HKs4JrW<&H(lxQG2_t?*mMDD#CdGzF0d-G_dABY6WHblP+V$L?e*%19PC7OsH zhIOiU&LWSl8tKiWLO&1*l5L1igP5~zd^SXHq(lRe^Mkh)BCq)ZB6{j7#z%Ylfk=>S zL-b-0bG8}LhG>xz4MgXz`i+su!Jk4zPfqsc(P%#q36gDyo;Tv~EtNJz!<1+sy7D(* zRKE4~i0GZ$dm|d_2ck~`WgTY!{}Gbd#!wrgr-2TzL<5oYIE?f5-inBhz}mrHUeI_y z5DAiPJbFJ6&9=AN5Pgmk4MgXLz*BhBzk#iLq`rz(G<*AjNRVtp^pl{tY?H1H(L{VfDW+~A?#CBBO^)luK{Y38`cA_7M1j#l;SAgQOZQnLTH&UXB=$o+X z=vg--kM4)vV!bTGi~E5{kZeQr*FZGeylzAEZAvr{oy)}vk-JWy9zC{-8L>P1fk=>S zL-Z~%MQjVc4bev^(M0sXpN&M`_8#QXWfQ%5G}#YCf@B+_SAZ#E2MO2^y_FITMAzgY zy7h0bf_UBgYcJ`oM+f?WNRVtpG!3SR9fx2;v`mQxA}4lxA#&Agnf3n5-iQwN1Cb!v zhA0ZAh#l%+Lv%YO8i>w4^dlpY5B?SQu(z*bKkQUL5DAiPh#m)`+0hg>L|22IVu>cA z>p+jLWOEabZSAc`)BQjsNVXyRAP~(C*svk`A|)D#uK5b=|5$nzNZlh}+tM4+o&7*0 zNVXw*6Bt)^Oo$E9yD8B?botYxg~-Q#1rR-W|C7D-Xr>>C1j#l;F9YMs4m+_SdNm~) zh#tTG=t$)M)=`gM4>L)yEn$kuw9(!``#_cfFeT4blIE?t&cxWJB~xN;D9i`v$}vpZ#W><14SLv$Fr3w9ur z4N*Xe2BIsj-B*aX-$1Fm{p-CE-Q5pFf@B+_9nf8{W2J0}#wpQ2bgl^Ny%Psf>TZ9a zH=>vH1Cb!vhUgp+%?`)1A-WFw5|(Hn+VbIlf?WnB^u2GZ_C|EHABY6WHbfr-qS+B& zHbj34x)?v3bJKM)C$ZHRsjIzV<%nGMnJQlf$A@h4j&k@o~B zbwjJz+j6`ghy=+tL=ETw*>P(&M6aVn1JTxz1BJ-v*;?Z3-_n~$FYN~+L9z|e9_Rqs zp>Z}uMM^XfUGp6n!~WWH(0YG*6^M%cKqN@EA-WbiKz8(<4N-y;4Mfhnz-L&9qxBy8 zKyM!1(+@;~WE-L{1JUdNKO3UUpm$`62BIed*pGPKZsgJZtMD1TejpMg+YtRPAR3P$ zw62c+OG-2lZCU!}NaUBkf|lWx5BBEKd_NEgl5L1y18DI4Tq~ltQ=);$`6kRw{KZSq zdf#?$Z$zbjAYvrLVbK*h`ZI7YhbqKDk7p4J9tfIn-b0T`=Q8XR@ombPhDUZ-@MZc* zkWabnzOl$Rr{1t9^6>Y*YAoW^@c3Z77Y@z;kOkPolq+g1KZQl|u>=Yhc zY*3>YhQJ&H)JMPn*jVJ}7JqzCt{Rn%4;0u zJo?r@113O|Rvibrbarz0Rgs8!2J;r@Z^y(r#&o*!Ti*QU+vpV@t^DzieQY=V_V8R~ z{({aqHb0YZ)tB;>cI5Gufxz8yI-lKnY)^g3U#@sAyOaRVxUZb_kImKL-kM{09mROL0%y>>({Lm_ zTqp`RUchg-NZ=UVkqdbSOACuJaoO)A-hmvwja>!BtKUCf7!$wYLK5gL;&5rjZue{y z@5hM3y)(&7Jhm&D8H}@kv0bU0d{$4pQYuHBvhpJE;sY!-R645{ zok*(!)l(v4D_WF7g(pSfc*8<8mX9S9`PeSJ>655Vs6uvWuT?cNYm}8i1*b&8hxr8! za7O^#{}P33g~QFFN>Wc+v#H`mNiHvm>Pd@w_(dH>xbg;W`z+1?m~MHY2KK#1uv4aN&^!p;mz+AfX;rt*kJY7v^GNR9n^n2`R;? z6W$pcM6FznT}j2ngsP5Lg!OQoSR~b$6Ez-z+h!JvqUotZ4bd)zL#ssNpH?3$i`PX3 zQgwMzT{M;huEk^NT!KkpHWAyENwde{VR)M##QShk!?9iI410_xVhWI?epnPYJ~J~l zQw(9?BA8T!YZx>g)i9_USb-b@E7c_+tOeN(5|W4n83ef55pLY5fn1Vw!2Ok^UzXDP z+M@ z;K**w;1#SvtGFLJc}u++RhfFqD$uG{Q4m~U3I$1sWKUMXJFO~>chNrt48 zi=~UdrhN&k0RSek@ruvBwu62c1Q!qEvJSs3V@8gO@H@c>-! zJ~c;&1_lI0W`B#Sl34QI&&Xx1PvtO1w{Re_{G z)y2B3sXVeSx~^%^_5Mc_d|d+-m4>RN$bPg5Id>;@A=f)OCD`^#L~*>WNycS!lj#uV ziVs1k|5oypQne^)N+~ugOuQgon>nCKkuBk(EHbu_*EG|i>e8B6)y0Ka6eJ;$u@I1; z=P915H&0YZWi($vt4g!OT3wnQ)`3BpE-SOPs3eUnM7S$0Cdfu;rc$d}d(>)HC^b{b zX~51jG+0cLnXsr$%BnW$?rKA7uk%U)(TtteZi-tPP=&+Ftu*QTDtc?JD*aJatLp06 zTc^n`v~eqG;g(jN#w{z#)o?3KM#RFcWSSef6a-Z^|i;a*qSWC<%8UZ5)q4Ts;mKO;cuJ z6gBIi0BG`|D%ETU6~-HoN+gSwHZ2EtvP34Oa~gkC#hNs#idA!J!pKTBg9*?U1qHm5 z1pzPHIvDLb7EP1=sQIUg=(0iF0RJ_}2Shb+8B&uretc~yA9`I_RO#ZOH0(Y2K;Fe=W0-2Xu zy?Dy^aKJ2)EAHt!r&VqZ*w*SU6-08AAu|H8X}s{(2G1%Wy050-Q7N)`vMT$%0B=-n z!t`SiX0s#@!F-TErZ;0!d#x#krVdabZ#YpZ|A9r zklIK_Ydt#~u{>TQFVtQ;*&ZEuy#_HA7#fRMlyZOcioo8=R?&1;zKq&HGcks;-C4g1 zQ9R87&yYb15i(0;Xs($~Mq1~B60TK{(M|%{C!WHX0E`mKqz$+d8ZCM=bZ`_AslD;Z z7U>;|E=rnI>+H6=Pll77A-gnIFM=1f1T(9IL!({Cp|_(I$5Q1_nr=d z4df#%s!Qv*w5W>Wk~OHpJ1Q^HMaQggCod`dVYQbZFhY%s};Zhf`7G~=s{ zVU@_R@?5mQoNe6hGIzALQmrZi$S~>r)9cjdq_j$RS@p$WV3v%MuvV&n)Y?=pM>Xm$ zO@b7ru+__w*}(`v5xdCZB#e8RptR5T=w<3aG<&3~!V+E9=`yB?V%^zN)AwtM|6 zYOW+N6}l>j#&cpOYA3yFMMaHrWPvOLoMG#56nqID)U}6ka%54&pq{+rQ7I(K8PFn5 zN)xnLjA}_SoF;#qi3PW^B%nDmH&kJ#$uF&Z%@Ap!dR41Y9V<`PMz+V&Y-ww=WxBT- z84xZFqV1r!DyFF2G-=R?)uh2Xub>HoXhSHJi$Ys`KS#F20xDw#mF*6SYzFpgr6sQk z3olfV9U5P@bXKun*W;WL70oAw(l`KBq+|MfOlrW390?DbVPUv_;wU z50kj|79)dE#ei$QS|*sbDm64(mD>9Rb9Ae z&681>YWTI{KEGCmK_Pc3VOb0bN zzmAlgT7v&6RVy&OkqxX9p&V(Qh^&$`1(}z~>&IeUUaY%R5!&GgC9k1+_&k{xqcy<$ zC)rA?TC_<2F0IqaEAljHZf^)}NRcNqLwyLNp^wP zYJjRWuQu7HH?QUvtBSC^u<$Y!3fQO#rAX31R)=I+T0BjbH7!xHtP!MYZj)s)LT#2c zO@gdhR;?b*vRW%zt!1rNYA1xc#$(we!p2uZ#gefUy%EBmisk5ykhxSWou*epAkwi6 zy%8+T#Ip28G-xK4khO_M$i`B`luMY(TuiKJrSVE#q2n2~#EFn?Rf`~*qmR6q&9EnUU8J7eJB#CS+t6mB$30N?s$`o*5 z5nDn+q*-)$nUloRymn$ZmXpm&lha9nnV{N}0#OoRs+R&$G8xND*3ooqG6i8>`ME%p z1olbdlLApP6U#~BlLApP8%wC10#Py-OG`vF4F@l?>Lp1R@KUyXO7JK-9Fw%uR2Iar z70Q$Vlmg*YUkf=)0U#-9DFG;zj-@2ZlmL_h0aO(UK=3l9J{N#eAeXY`Xr3XJi=`xs zXc8a=e3Okt!FgD7kWw#6X<#9OY&nX1L(Z(Mor2bBSYjsWq^NQlVyRLRDeRku22msl zL}`#&iJhXU=}b&gL_tn`Co9hg4#DEhw1iG!!Za{g){_x{(jdpGOtJ&OOZ7RKf_N+= z0Z~*6<`y!NnHj;NOd^(%C^G_327-1{k|+$5NyRdFxD4U99C3YI$WYe*%tcV65Suj^Z@rELbX4j{uYfZIvj=@6P5m^PD3< zV3edB=LDc!T(dtp0VtPYQKv*7>lvQ{NBJA~3yuKtX_E!I& z2UDBK#ev@8VORny z9V~>faLGKlJ}x-gm=_{jEkD5D>;u;oWzNnO=3p5=TQ|>E)VuJHe}eDu1Nn*T;$|zX zgk@)?V{)Yi(YxJ7i7Z1D*X&1Il~&asU1_;Tqwp{0Mx%Qs3!`_qdkbUZWB4MGO688< zg5E2y4N8p0-371g&(>FJWj7v56R}ml=FM0A*~;=t)x+Hb@I^K7LwU_oi)DX)Wf4fl zC{!qCarq2->yTKkc#FjrEcU_QpV8zEqz6AhJiU+8y~7|pn%+EBK1qv^wHX1-e@)Z)`K0i5UqgkmpE3Gp?FsYcV z84GCDcSmU~lHf9nukoK9FXC)Rqu|=pjXGs3?iT36ZO7u2#Ewv+Q4(%$sn@8O!l${EDpcFiKM5yMuYicdnPTy zA26Ntn-Ev1yqu|JNW@)t;1mS=57ke(AA!9kcEad#|$S)|2=>Fmz1UJMk=e0d{? zkeM}9`oP(cI;t;4359Zb{3OIP_QMo))o;2-i>G5dz%q?4EHcYE%A*}%mLLI?I2t|f zmOP-5X>)O*Rw_0jy4$Rc)@uuu#qnCJdFF6(XV`uX+~>mP#c{8+mR$6oZY3kgf(do$o%N{>|3!4g*8Xh(4YT%|h zSeYQEU-(Ry3mb2`wlYL{j1NMYxr|~k6DH+&kvMGzTGJCd%+j`IVFO>S1yXVZ76n37 zEb5v)$mZyf$Q07w)tE$@qu^5*A`p zUCiCIfCToXO2}L239i;7~zf>vV_T#lxBw0k|bOa??SU`ggQRoambkf1pw~<*q~5nRd8o>6 zI^MHN)ND@6`BmCY;oB<>srgze?56$g6^0rXb^iP+?P&_S)JX>5{Awh9?jqV<>ZGsF z7w77XM0>>+({O%pNz>N`m%ct9D(-@xeBy-teY2hr=fa$2e0K*AFvYxbQ^C=HIZ}4ZZonA2b92 zsf|L2%gB{*!`~&`)qIz1`!2bv?^12wrFwiPte_%Oyy#9P*&?kv`KtSux;0Xj>TkP$ zPi8@@S-$H2B^d@)E4c`ykryrq6;ePJ8k1uvl&lR20pk7>+ET){vKab!;Z#kIfiD~b zXsAnnNhG>O0ohQOP6WVnA|%H+x5DWi2EO5J$^iCh?8_k`B`9YeSx2<)@E4Q=X|Pzg$Y;K#)EF*W;xf1pLVsZFlU0>Z@JU~jb}~6 zI{;DhyT@mWGvhBFADt_*F!tf`nOT_1gv^%M^+01~zFH~Kp)_KpHH*G?D5niBOni`? z*}O)*Pp+1jYLkbB7^d%%4G_(7KHe6zD0D^an6Z%RtCS8JuQIGw(R<7Sne$Spo3U>5 zQe{{n-0~0e0IJ;gGgVO8}Fe%O0Bz+i_!Jr+Z@(X3mWD6fvYHJd@UO?ZxKT zQ0@w;!)GM-mERT0vW~vH?GS@aqPRN@7Q4G#!O)%VZEjMU*^p~y(B5Bvi!_=38e%0m zCfC5>@Y|UMGhY_H`z)cyYywr2kGBhdkXc0G`p0mB06eq!x6GMs~PVb=U;cTnz z%R@aUtV9|c-*af6J2!D)+&xm5m>VCv*}V}a$zpCtD;w@k!`}6BB?w@R8majjIC2DSc4 z4DG4HAmlojBY|jC3^>Tx$S-NprJiNAcCzCT!IX027h5udlV1B^5lRCh2}i?L%G42V`rM|! zTyOc~r~MKxS?87_;0HXH@YoP;F~A}xyBB8`-e%dxyq33Kqt?mxWG+7KH+PUrp;E&r zBf~ldQPccLsA5uy9#(SU41o-Si|$s*SaJIB==uZJc+AZxoCW|2V6DNF6>JM3^qRCI zCGdT%QdMEIwXbRq#lOWaX>}^Mh5O+=>kt4wC=;_6{K$t*(j|2C@L(LBNXBI!eld=u zReOg$>@Yt%^cvx8N_|&3m@dF|O0d4UQsUc%_Ij}1wH$*p5GZs9@$xc6o6or3q6fRD z!ZVMXXHb2xPA6mFGPpGluC-#?z=HpHX^<_>(%vN2frS)^DHo#&;47)PA+Q?(Jx5nF zpl3W!LmIovS%J4{7ORj zE!JrzJ*?(CP%q2%w#*}?HG^VC4wf3niUBK4EV&K4m7B-#aL|Ix^_U)`pi9OFoi6x? ziw>bX!g0u@xjA;v*hcJ!G(vNDFM)I~c_=@e-ofyMv#r|fG^)7ul@BgWUprdF?GZRK z<$tYt%wZ(Y0%O#ZK3tq8VrzUxAY3-jDkEDB9@*;liCGm7_D!>RVAq<=&&>HmsP0UN zFrI;r$$0~WGMMGH4V?GX%V+vEaL#unWn+SNoLe@dXGAZ|R_GZ2ActV{#`S3Ert}VN z9oIcdTla8|i>Wxzag#V~-G+17%`ln^jl=QSKyEa|iR98yDu#vgtb=ieL4`QKGN@SH zg^R}+77~wA=WQa#Ll>9p9rhU2p}e(Ri*{4LGLp}pfXy6brEy`iOtXf(4-IjHJk~_Eb&$>jN!|f_yA6I z>71E*S_f02XIZTs>FE3z`mkp2jFBV;^u67(D9esv0^SDwaz)b@Lj;aD0bUp&ZjzEh zqcl96N9lDZ74NkrPb+afyAPxR#U6dV8x2CUIC~0X`zH>M!|aVNqu3~$a07y9Pj=#V zX9i+&Z{Bs>cpxef!K31+Qhsce3+L`B#<7(ooJ>LG`X}F{jIDjPjEpn=U5$|rPnN(o zd&yXCs@rpPFxc%G73aFUe=Kf^8xnY%s>|8r(#6zfUb=X&-eTAEt#gh=6k_XG3{GBJ z#)x(R{#`gza1qb2=x$ZJvYV+L6y40US|#ta1SNGbxGxlblJ|j2BZ-2@4P`jbI=a9% zQ@Ux^pmYmWCGwkLs1k}*>38N>n5HGKgJ0IWcQ(n`a;2iy^TO;St&??+Zs*J1v=-PN z<7cBDm(IwA3t@%WD4arm9j=9sdipvTshc)s*e+~mqx?=hC$=~{J_B1G*Y9wOspLbA z7C+6FFZtr7n^7u+FIIZ-WSEEApaov!s?uM>(UEL6;|dnzD06mjS(6=lGD}fXYuD?t z;&i{+j&QCDY`onRJ7>vd#Ur`au`GzYtgz`I1oYCPpiA@eH*MIweA{lukh+J{J1BcN zo3iiSRlU>X#9GcLma`dcJKNi58A{c9;ETX`+u7y=109Y;Ho{2Jf$)UG=G06w|MYh? z-9XzhKq09Jr+1KwaJJP-MW^9R;v!s9Pj_q6sY)sYgk3-HQ^R?BJ6XMgv&MO8Fcg(N zFIIZt#`eJ2@=B>iYuCh1wxoM2o`QRDWqICjww;69ZS@`qSV2Y!cWyqMZd6I&4IE zHNe_Ugkf&iYZNZxs4rharR{B%Oyj+KIK6}VhqJ9#^UsF7Qej@bf1f)x)E4tjS8Rj` zfdxEkyj#P>i3<%%aIASt?5E?f_g7leb+|<#a4W(1y(?aIuI}<&J9dDJQK(jBjxlc; z4`Aot?Q|P(Q}42SG#-PCKX!JwS18=n1EQ@1zXipzjreeviM}u2wkv<&K9R#tdB`w_ z2N`B7$ng`8FfGGgdcQeYuQx)apn8R`P&wjzuotTt%6SwnFpS6Pav5GMT$|)iRu-39 zp}Zz7YhL=nB;Ot1za6${glg!HK1v4_^lSOY@Wn8Hvfm4eqbp6^B~t{RHf&C2I8W~m zr1J;^E{iD_3vlBS+&0bX+az5`vBVnzX@Z-`Htk81wR-UsBQdaXN~QMZQOALR*j}x= zkPAEP3vmWk^FoMyGc3WOmBhPHq^_D*Bv@{`berucW=I7y_hIIIGlqBh(YA0 zT(B_R^zr_qVj1o|vdOrfz78o5Uzm1bg&d+P2znF__-T5yRR=cyNPewxzK_jmlAwxT&od2}W9NmDR<~v&c03cj1D*CgbpKh0Vq|>i+33SyZ;z zUfMPBR;<7`n_6a~AwM3`Ciu|7@|gv!(lIcbuEPzWE0x)*?>F2;`1V6JUPbbRtt^6; zhtGri&m16YbJZ@a_FTk)F|7{?>4!?`pd2cL>VCRA1k!$Q-i=s{m9iyJthlwn_vV83-E4k_UCX9r;i?ljwQulj4wsBn4*;SFb7tq8Afhm{$0lOZrVjdG%fH!Ihh zecPR%4Y}19f#Q|$G&ekfttiG%im^%y+cK>~C3!5L3sDhIyO7=ch3!mk*deBMjqTMt z-50*lJ!`ze`FORO6*iBI&mEeE(EWl}4gBNxNuF;SXFI$=+{WQ>o^>!dytr|*Fu3ay z@{9KHI?=f+89W1d-SNyr?y@(@l@NyAn@r&Y=W}B$DWm<=<&$hf~iz+M5mQ-6_ zSYvh;)~M8QjY{$KeR7g-rBah8Y=aFu=`}0fJOs|7Q4G#OIHOqR#}&X_(@wY~;phU) zW{6jAB7b}*u1nbrTP_#V$(U?(=P z?GQ#%wCya2wa*`7y{;%dC^db*{oKg5iNq*Fi95&{ZEKi8G&r&;dldU_PLaJ-a(?NZ0SrwPMtFXSI305^I7qH8Qrto+`-)j%rFZLZ{y%n!oc{!-u zC1t~&6JxTy4^-iUNwEcM(=6oO1Oou-80oKJj-~dPL0j&&i*Xqnq$%f#caiNmI%rvY z#?|VWT&fA)DYz!fcoRqqJ0duQkWXB-ErZ!St1}_I07o{LS=+5=f0JHL8{GfQ;pa>1 zGnr{5ZN}^7r82uNDLeh8Y~5#SnkW4x?Z1FCPh@$*E9TcqNUx@Y!V42Dv#nO$rK#M! zfoc69XKW|cLdXl=O5r@bl`#FRdNjJU&MU~c?bJ(Djfo{*xVcKcZJV=Na2gkq!ANq> zKixX7y(uU8U9T|AloGIMqGcq+oemq)(-n6+F}mY2H2WPh7nZ}DfEi@G=fsaK01(|%YU3(9PmOLSaU&FIjqN}2^Dq8t3gGFf0qta z-^v?8t`FLXxk?IcC&P9?CUj7LnXdZW?piM`=H_)^aB8mvw=2P-K)d&1Wa!4sf<2KIlR=`O$u$so@!yBwn9PmBzReUD!%R!GvBtT3xL(JM{$jcqhOfs$Ca|L-5!S6Jmc5VXE+7d-W5yL z3M|gDalAd(I+)+X7+zp46?PWZ9Km9wN)-%lJG(Z8zEX!qe~o@X_Eq97>+M{a?F!jO znU8{vW_pM2tgV<;j?mXR1s{!aRfJR3u?zIeYnZ7sr~iy!NBQ(dtexM-yIuH;ejV3k zSWD1$-*04Qahh=%DU0 zUAa=-J=TlBCk?N*w8?fj&pKqgEvlJTZHa8YaBiv1<3Zr)>uin-g{2bku{H%mZ5*St zb#SWl^7sqOr_k_W6i$PkTfZMt^qNf%?;hm+6f4zSF@vau3&c{X`_j8kmd9M74g2VL z(flgELMwcZq5cgmuULY;`gfTZ2(7N z?M8(cs}-W+l#m!V0@1dUidg~{jsKAa8l5^YJux{Bmc_aDOGmF9{4b54xbEZ6zU#jG OUjCg|{lhC>@c#kOC@wVs delta 69 zcmcb!m-WzX#tGJZs=N$fAit_AOqF-yY$>)!rK`d?5;i{PX4x#pYRI`cSdt?_ltE2l XLd3>n8&YQVM^4?atU3DOkHeY(2tFAy diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index 573ccb2bd6904b1bea402d3b4ac9184227e97eda..5eb026bc4bb43cace2c8d13fe4df995de477d690 100644 GIT binary patch literal 89891 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 J#Ky#%|38ZdGW!4k delta 69 zcmZ3ykG1m-;{7ZQ6>P+!xWnU diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index a24b6862ee7c53f5411576c47b8f213e75c8b53b..d48afd09c5be3244a16336e745154fbd6614df3b 100644 GIT binary patch literal 89906 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 delta 69 zcmdnAk9Ec!#tGJZs=N$fz`m*~OqF-yY$>+KrK`f?5;i{PX4x#pYRI`cSTZg_l)>=M XF@~(L4fO>(7WIDBblt(M%=8Ta0I3)L diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index 1559c70856f008a52d97027343d16e06b5a75816..c1b200d45da62307ae05d416568e306bdb156d29 100644 GIT binary patch literal 89914 zcmeHw3!G#}S?`&I*Mu7$^2m+yIB5vkNqT3eAJaXPWD{m*W_O3o?hG@VUBm9uIn#Y+ zrrDnENq5iAPL{|^LigICsIR_yd97x6)QkN)R6P|o8{SwrJ=f^3)M}nr30vi6 zb-7(_)ceCTZIOTCa{1Z7N8fRjo~!k0`$V}`4eRX^J@>cnm=`&o)hjdhedHZS=~-l) zua}k^t+ti%%RMsVC^FLXQnl5h8e4ZPiG=yvW%?g{>>Wqxd3LSU4wp_W*MhaMS*kS_ zs`dW)mdsoGlFa+Wzj(({ewJ^H{|#2!i;bqg*H4WvH_D6tp+?0&5(Z1D8!o@BTnkz) z|6mwY!sg|doxS`re<4^3kE|_+$Uhs@D|3xA$mTCq>(hdO7T#yXo8XM`W?%sC?!te~ zu(cel)~U9ABeUaFhk7*@q5!-vh`ju=8UPXA()X8N)~HW5g32M;B1|xqF(ncv>g{HO ziar+B%8jMaZ#Vo16J@L6>)CQM3`ADQaOw zHX`0rtE!Bni$T2})>_9;?mat@&ZM*H0<~>er&1;$4Xv?eV|lq+=a!pmR>OJyvl7N$ z$S=pjxs`=cv`3>xG*Xklpi!;gT1Tr?7wTa}y;QuJs?WBAW?Q|SZ#2u{OrzasPFCk; zt4k}jfD}a$4oPY>ms{bXpdKuQO^6uPK#=77$?8&-O3F~B^3_bZ)Hof~4pr-_Av0Ma z8Fp%LMy2MY++2RyYBMaK>a0h+=4!I2MZD;!q(B5%NoEa5W1T3^FYI5bmkDD_XhyHp zm66=|<(KuI#eco+fZ9JbK0P&hkmROUWf>Lbfqsi@z4KMk-YJJXmeEir$UMmJRRQ#Z zK3CuOE;qvoyizTS_aqJYBPn7FV}8L^Qb{LbR!CLVOW(PQ6@}CP(0|+*$C=KnpJA@Oo8f|4k3|sFd_8I zP#DzInD+x;WbFLD1+tKHub+dI;cFsVd^Fz#u@Llyuc&PR;&MdrEC4_1Swphgx8G*N9U%Ve}Vs|eaq>*Y2jLXj)Lfhxt%#VSgM%@-|l zRJBNEaG)QJ(pm~@H7XmpvUv-ZqoQ(9_r(|e{;e%&JL;;0Wl{V*b3o(?VOeE^tS*9a zA`@8`e1MilO9@6+>+@g_+P%fOTVX8}8q@Djv_P{;ulRFoXd9raRH3}0f3?sI0gFr6 zZXG!)RSyr42L&`Qqzu1dgbXng#5KSszmCq^2g9nuKnVyCo+Ti#80o3p-DnVz|fJSQvAw`q7548gUv!~jq)jc)u^MHBya7u=%6<{G$2bA6453#kP;~b zqvZ>=Q8irUX5UD)N&S>$q584E8Qwt}Otv0csNPbCR}Ry*L?X?v;CsJOF0V9OX^F2< zudTtPKoHRl2t-hPm?YnXav?DuzP{3Fmw=`D28iBY&L zr&Nd3#iW5WZPU`)$cj&8E20i*(d0Xlt6Hm}4VP@H7BUM{CnODWxBwft3z~O5yf`V} z^fb_i7A%h}EWmLfR~GG89PDnP+wGuyD($PL12+SIxwQtlCEvCj)Ic!h@OO=_)Y@d* zKx*UEnt!@cEr)$fK!)qj$ol0+Bwl2b$k7CAiHNB>%#|!r$PUShz$4`&DlaQw$ed&j zMCX9+LRg!~fXCX_w6aF?%2N9M$;K*bBLS?D`krn89(n`WgqZ@hn^ZhoZUm7#7>|JMQSP;e^r55kHN=7x`v2-+17^VKHWRej28A*sq|1y!)* z%Z+ARDkdp}&G@!)*EzdV1MArU#gK(M!%(P^;b_{J|U2M0PTi5T|v%0$4 zKZo{QsZ<+8`5yeYv;wNu_Mnuo-U?fL0u;M@Sroflz1-cRVt0e|Qz6rG0ES{^PLaap zFNl|-WZ^ubfoR~lNBr2+#yD-yQh?EIbI)vJ1;)PeL0VJfPjwD!#W120w1X4q_tBHkKsN2Kn{f%knj~9Dj=IQ6O;?@wcU4=5t2O@`iLFu% z7E1HWt!w&VRH43SA=h>aNTx9tDUeK%Iy%vsU9B#WQ`XTWh)J}MG=tV6QbhS=wrCg_ z713@YU@=BI9BuR2c4r2vaasgjrW-93hye;7 zMvhD>8yS^!uu&r=g5hAv7g|)UpRTsUO6dTJ(5(|=>!fnjLa2@NV=^ z(15rUC;#|B8vm#D4};p%Q}granYd)}S*01QPLvz<9HFsQ1v&t+sJDaxk0-)L&Q)tL zU0vH#IUGkrj5x)BJkAl7p=$w?jRx9tU#+4WLy+78*DI5xq9B=K9!lgO5Y;*u6O{4U z)Z7bVpUtgQYn3SxZp3$5RO=zEYpXp8XF)_CxP2P+ad@%&n-pP^H5hMDE7v;-xl#Ts zJ|$N;A}Mln;X5M@5_MP%#CNG6B)Y8m>cW1CSKM@ypW;Ek`Ya`0svp$3r}|KGb$*wm z#wz?qa=-e>B%F1mO6N?Qgy>VHx0@kM`Y2sU6XoCNyD3wZX9hAiIB6cHe>V`-+|(GJ z)Wey2C32JCjEdwvd;HOrRvVFpTf#NOk7RkL@H`^Mzfc!MBDILa)gyhtP@?6JAEa>s z+=u}m?qW^xTK0q}?NG3+s+c|Af2@@xk$vet0GAq{#b-H)$0Ylb%U&~>ra6X3;lH`t@jnmmxdbjh4gb9VhM%4al6%jiA0lw? zJ?#V@r&bWdKUS@KKXHG`D`{{WI?YAh)df*O3MJ0$oqD!H%PH7+`5@C$+ z(ZR4*ElpAY#_?Vx8XxB4AI3A}Jg*Ett`#(cQe`g8z*8VgE66Xyo2D+J*#Zbmzbpl! zG}sh=y}vXyy?<(^^Yz5xv2m~gP_5houz1b>w5$yI;DWDUoI$O!(hM*(;lCpL7+gpr z>1egtUI}WRVhDyl4et_aal2S2vYtz1+-f!qE8a)%evc4>u;xAQ60lvkBrWfim*V*l zMo_@+O+ZqFggm~-`MFXG#Z-ms69y8t(XkL;Yv)-5ZG3UMKGW9m^z4FoOanL(XnoD^L z-fo)rq{pK7eSRGBKKdB-cG!E%W7T73z*~77KWDrHkLTyCcjXW8bI$u}^qlwJ{{((N z=>60a`MKZ)PvYmImwPfl4|xy2f}e-IPw;bgz}apN^h0-fvvR@3Y=ZQv96r zW}m^&dGG3H^7Ekgo#?sXedua_U-aJiEPfvHmagIFVejT$>N!8)J-&~hGu{`X=d5?n zwfsKkz2Z84&U?3|`FYU0ZZ|&{yzfQNMeig1{C>!L^B#U4_F4n#d2qlRhhY@$JecvW z$nta6dmwtwdGCXXlX>#qYhVxM^PpE6dC>dQaeiO$?%vPOMeo!Bejf7n9^~g? z@39l=d1%1KI^^w7Jklo$0qqX@AVzx=Rxn^qUVBl?_qvl^xibZ&qLlF z=qp5<4-I>x&sERE1KyKn_&MW!C3?E$?<%E@84RVY5coRa7wG-NlK$ zm+Jum`rth!*{z3(-GvqJ`*n-v^>c zKIN;=?kT<@0V48rwj7Zn*@fs=(W{H@+=b|aoM<7s`m;dvLvM%Fz2%Jw5It-=5Gj&f zi0*`QBD@k8qStexh3H3lRO;zXH*9Kb8Oy-07{? zBSo@qC~Xq2xnd|;7iA^Oli0?{|#0z|`iCqRTgZR-&!l3j@Y5JU@y-G%70 zoM<8XY43^qdsZF`TlcM3B|wBeZR-&!l3j>ihvA19cDNAzCMQ~muK5Ib^szhPGyLTX z5+Fhku=R)($u30m7(|J|lMB(yIMG5h`qw~|`5hoSa54cR^Z;9rNRjM9H1q?W90Ix! z-O7m;qN85`qAMQ*pW&X@CqRTAVCxZyQLEe5U4}ud7|6O1UBihMqL)w)``a%>fArB- z0z~KmwjPlp*~O#30nuVO?n3l0oM<6>=@)_MQBMPpo{_{dz?g15B1N(b(XS)8Ac6`m zM1RhS7NU254Tv85S|IvnJ^_zlFSj0%BH4xL#R!pz(1;7sFL0uTXzBAn^fOsV-FuQC zg1y{&M2ch=q8S8wM1aSIsKJRQqD#K}Opy4od%&X)U7dhOu$NnpNRjM9^vo+f8K!a} z8sS6}QP0P|4j%p3arg{x|IGx5U@x~Gk%+9hZQZv)v>VrTu`%93zdtYuK>K12!b=i7Eiewj} zHy{8i0-r8K@8LuX(RZkaz2$v0KAJTUb&E5=x@lF1a6w zzM2M)J~ER45v!9b-JED4x{sn;uRaW^`;F%$Km=XfdPIt37oxuf(PBcth3Na7XdycLO(5!7 z1&`kL%Lx!c7q=dfBH4xL-I(4G(;6;BALT?F(f5GpzGuRE_q;U$BIx4QBT^*05d9b? zX~g7=3(;FR(L(e#LiDQdgGV>KGyx*$;?^TlB)bs(Fs7Ow?W0l`q7_cG5Z(C|AbLgv zw(g48CO`zq-FifdWEY}qf#%cQ5FOw|3(=o_28e$3yBNb(Z%%-SX6?2-rm9GGA^I+e z7Snw$9$krfK#^!6I`R)d^sRnK-FGGuAfma)Ek~qCb|Lz|AX-dXx)6Pp6D>p!QoL^B zgFtlObOJ;)gSzF26v-|`{|i&FV(Qg}=>42%A^Le5!~V&`phuT3CqM)t*m^{YWEY|) zCX&SjvJ25qaiWFj!=y()KqJ11+Y%rGpSK>7BH4v#48u1u4emk|aH551jiOt9--Km& z`soCSz~`+;q)2uldNL;R#bmwsdlGN=VgC4cs zlmHQ$Z0ivzl3j>ijb$QYd58VyABf)c$^?keDqD|8tjlpnP6qlsxm3r6=nyAbh<=hR!xNtXM3(jL z7H2@KY&{~ey2y>_l50J=;K+sO>6~aG`jw9Z(fAL+dXJY9@CdE4^@zk8DL0~zgJ`jA z%7y5goM<8H`&%IT*ssAdTpcDrgfg}sks{fpNB{dePcHs)A^Iauv=ANrD|3(>uQ4@B2d5Bs8* zB|wzf4n&G%7orL(6w7Q~h+e{p7NYmldWJ855k2gwpG$x!yB&xW$u2|%R45h;yAaKC zqJ`-G2Y~2`mqF?d)Dj@dZ3iMnvJ26pP@!1z>_T)kCt8SJNpXgy{Xq21By)WE?LeeR zb|Ly}5G@vNyAXYc6D>r&#G~?)$ucAvO$=@aB1N(b(L2zDV)?lX(T6zELiF^n0@35X z21Kt<(!&$=z&iH(eK^?L{I%-0v=tz9f%akE<}FeLi8p=^yBY?tt*=I zu-)PeH*N%_YbcX!8-fsX=Up0Z$?cEMUiewj}8zB^8yOImh zZJcN!`tFy3=#K_~sHdC&5$$u@a;Z}!yAVAFLLoL?xe#5)i58+mWWC3~2|c=WH31^p zt+nNd6v-|`p99fi>zE7C_c+l))TUhq_dXuB?pTtw#LwOiM2ch=qIW^e#RfPRqK|N* zh3Kbfo$7TT0irLxI{}YIwgZtO*@fswA?9Kmp9|5OInhG&iSGc>)enQu@Ts3ofN0-# zAW|f|5FLe>_mW_^5VbhbLNrWseD{A4Ji6}#2@s8L2O>qX3(+p1`BXPVA*uU`F9XqaFHC@Fd^->+l3j>C z45G#MRu`fNIMG6M*QbH#%_y=ylW|{pcsa zqp2kOCJt-|B1N(b(J~ZQY&CWvdJQL9h+af%AbZ~epJ5_NB>&)cAW|f|5bcBFiVf2) zL?uqN5Q!aCcaDKaJvS!MqlxW6q)2uldLk58Z2NX0%5b8E=$fap2f zfk=_;LiA-2EjF*a5M2tb7Ks+3af&lsF$W$^B$*MrWjhcll3j>?2Skf4_%1~EaiWFj zRW!%iGu`Oh~CPH7NUn!bnEUc5Z!TI0z`+l1Cb)x zh3EuKkvI;)g=mcvEku{ndWPTo3rO8Zlgun1-VQ{HWEY}-m?CkggA36uoM<7sm*!y~ z_&g%{S0vdFJGC8%6v-|`9!!xqn!<(Xshnsbx|8&%@j3Vm?|)GOshi#oM2ch=qK|=S zalnQP(bqZALUaesEcf3FJ^DbBG3;}<1Cb)xh3J=IT*WaVE<_*TL<`aTXwAtBa?qn+ zX(!;(%yuABB)bruhH({#owyLamJ=;R58MYtPg#Q=mCq(XG`k&$6v-|`2Vq>rku5Gn zAtzdho=ofOUU~>p_vR#sj%)`aMY0Rg55l;LgJ)cbikxU6+V}53^xzjEb-fD-cy#M_ zAW|f|5d9s97RTqf5cR_HibM<1Dy>F)%r61a6B-E+9o-H@iewj}-v`m+5Fi(#PjRA! z=swyb_L^71dcS;c0z}8Q1Cb)xh3J2vyAVeixe&dR6D>r)^=%+}*XzNf(t!kset0_& zDUw}?=FnY;1DRZiUc`wOqVLg~{ChqJM60I~Ai8Zk5Gj&fi1O$z#IaH?M9<|!3(?DH zZ&4^i}@%@9f%akE<`Ux2PlqPb0NB$6D>qP{%=5Z_`TrKmqrrs==s}$NRjM9bQm3= zI5f_M=oBYfhzc}@{p38nppktE5S6wAks{fJ$VUe#j=pmt+RKR+qB8jmUwZ|3)Hs#^ z(e2xTNRjM9^ba6f9N_0d^jP$cBGE$haXQW54?a(xY7(Cz*bYRBWEY}82GMj3p>ww7 z^PFfQ8YAod@z20|KWRJxkLI=mks{fJ=;we&9jd4fgY5wY>eR&F;zSG4yJ>FXt#?D} zuFfPtRNf9mg5*c?L648nB>w_+=ya%L#``ON%z9T-r$}#eUXvg5-rM1*kA z5ahq4ZD;aRoIy<2HkCr09c&kXvnT5dwb09d=J!Sfu~uQvp~BW)kHWs!S=cHaXKYbp z7AD|YpdMBG89-UPd88+M*X<0dlOoYL)`u^>=iB2ww|}N@wC9r#zn>v>)=o|7Ss(s& zX<&cPi+}ysMtU-T{4%bwj&rjYZMp>m9>!;Q_qfl!Hcyo9lEpeedi0GS1M9)En)gyT z65{Oe$M*EtCqG}}eSS=xp3G-Dzv1q?Z{k;Up!2;S{_tM@9nfjc@&%u+Y=0KL)n7)h z93P9r!t1!uM3s8U1`dEG6?g~-K#O+R>b8FDg9skWw*Gs#ICL(%cd@N+6z#CpZT*_3 z{4%%o^Wdt?-F~sH>AZ8%4rq!!*Ite5DsCK|Iy5~oIqs+SUw>k{*;v38C_dd;(DHYk z87lOh*wbhiUDgQ*>Pst+v8JzLF zmf~s$RkebclByinDLD`t6=(u7`cc;^3iD-QJ{88b6)ccQDNUUU)?5&cat(H6H4`(s zI$06bBXLrZTw_tycno*hERh6a%uLOcVi=?dW;Njk217>; z47vtUpoAbw^%;n0L2)NVL_~%S0`85(#U6FYB})fx$7BV|7|m8RUu*iJyeXq3Zn+Gb zhuN@s8dt&Ff}#1I*N+A=!*J+YWJwO8$gs5#p0Sd8A@ow$47o5K4Sgq&cvNkP| z5j?gdl9f7xvLpr@jVcW`x~n9)h*jxJI--i%usB3A!@@UYie!cbHR}?|3|kDkPp+}j zE*);bO5qYyhf)n`-W!cKtU0I~Pn9OI9B#l$p-5cOsHKo?N0j0)j6=F;!)h30=nA7^ zqK0Bqfg6i)nT_O733oBFup8o*8PLe|Q^w$&u1FN8jG=@V-S4QuvE7)V3tn68(m{0c zj(P`mW%{Y0LF-yoLAV|j1w|0qo+RL%QI)|vXI@Q^+sez4CyzRWk|nM zW(*@Hi}a~TVZl1Mn`QG7SA&6p^w6-h!7#`9;xHSu;Q?u{VY+p*MopPz6Oy1Qi<(zP zQyQ|W%RhHhvK^6~foe)vZ-@FBM$xF(@TS~-nrch#5mA)-(z9Nhr2g+cGMjGHM-hj4jVun>7*W@l%3mR4t{ zJ3dW>tW*{1bD=^^j|J6se}BK0DyI#C~`_Uof(w#Jg-0bAEV7n_(#mTm28IPKqO@}g9atOlxx0a`zu0=~z zPP18Kk_E}y>;X-VZHW|Rm9cZYW|$6Lm(j$!E-A#Spa>Eh3k3;1PieK$JXK|tF?<1| zD#H#Nbs2Wp1cowwQD%KXOB!2J)nH4Z1Y@~rO(dTXO9^HEo;>pEv|ooBny!L6)=TSj#T zx11=Ga4XM7#KEm>UK+U^f-u_U$qwekV6-soGIDt~9W$YbO|0Vna~c5bqfib-Lx#2b znxjG78XGlP#)(E2=&J&yR__bi?b`U7c3$&rL`<7#g?O|fG29RRG9tnb@Z{NG&=vC> zA)qi1bI24!N94;T7~-~icA!L0FT^s^;yhaq+!uV+tqEtJWfVLRXz`I!xc-hXu=(=OkJll_Y zxLP8Y4RHhdx6DS^6c5uiGUUVTN;M=DsO};6_u|@d!9rO<1Z9wIiX1PFA1t*>LA_E! zWV0hUX!^jq1x+Q0$ zxier}Z}?mg%grF05yYnHI$ak$r+}Egnuf=vM8&gJIT*C)w$>)5E=!oHig*a~!Ty-p zj9KHgp%{ibpg`Ghs#N)dif+_(6S7s=k7=+HU0;1VRMo5an$eKPNXBSAHyf!uS)(k} zT|3(z6L_PJmPAG0FZ+o)9xosC|mT%d&*qilaRtRaeLIN*b9kYa?)G8u+z zW|EONxuAtB0U4bnuziv#f(c-hQYK@-l`&{Bo1u%NNJ!m{&$h_yP)t!Wq}pV+(|xj> z>_N6mV~rBLs71`0G7f`w6NlN3P8?$m^2bC;tT_cXK+=0U3>zp%SX`IUaT!q+%_V10 zMRrtDQeXsCiQ>1gOp)dk*!YxbMx;b0SlM8f8Pob2bs5Ij7{h9j5#{-0fhF6d-4*U= zeWg~@1h8Q;`DfN?&Pf@S?sn>n#lQj^C1tI2|7f(SS&nYh-G&5dOmVAMV6#IJfD(0) zrAdr?g`jlK_n2jxKn#1NtD+Kp(di1Nsbc-vax)C;vPH*ebRCHi+o0KYfNR24{?csO zAx6868V$&Xx1#9~#rcd%3Xr5Bs+o<>d^2nV-vbWEW&>((~jS+y;)Y;$;s!&+!C z$51z;O-;v0vri(jMmUkk6xs5~VU4sAC21a1a~jMsYBemXyH>-Ml%=ApLNs0yGf_Vs z)T%maRAdX}7~l*$hokT%WKh=~#woHzQG1qn0jc_M3WK z)S_beq$o`S&_zaUVaq^MHgZah=D*k;8ft7bmLUZO9T9CQG5sSXuCvA1VALq!+Nf0+ zrmIQ=jZvjBv7xJ^;(Qd>4d)OW5AIu|P>4~o0Y*2kL4>X@-m?y|QJ7i|>!kx>y@ElZ zbSbech6QrB;cyvs?KZ5hvo!!6bo zQF(FU6)Mycqb8D~hz7PgEX$F_Gi2G&5-rOHLAvG+S!N^DVOjGm$cAM#>M<;$g9SsnOa%vv*fJ4Bo<+yYVnjU8 zYiEYj#i&_%ayko`8LmC65M=>Vzf_2_+4NAvI-ZWr<`CA6K39mcU|&RhRw2p`ri&5r zS%oNDNN03Tg(zE0=OaWs4TqNn{gR~%yo_2tr+AbdPDix!R2E{`8f8ua%0W2w*GkTE z02E1DP65j0)42#`P65h60ChzQ5MJi==L%2`av8N8&oktT>0HDjo&?B&Z&4$0a2{(8 za{47J4HhCqEyr}EC1w$w997OEmKsSShkf&C5KWRol!wel*g2Y-A52FS zagdYVMU@XK4q@?TK7!6+!aNup)ibC7n`%%q(_#ktA^#W-yl?jB4ko$spu7g3hrFdKtkiD481^ObA02MRoTvR)Ih($0n0>pkDUKaIB#iAk%azqllJH>pu7%`K*ks>UWeyI=@p~F!d z4=ENEi|HZ#QXwi1rH3L!LyQPLj4o3l8UoCy>4sG&N-ra+8CGgElt~Xo*oPG&dKtkS zR%%2qBW4aO9u2{CM|2J=L_@jsP{iS3g=i>mzEp^Y&>)&5g=h$-J3=(fhzjX!L?=el za&77mOr5BHq1KoSYAyLT@@cSKLi}HWEEV8GaA9-`xlAFGg;Buj?}1|fAX3p=3=U=c zvlt%^6w&MDvi-$kCJ&m6Lz(^}R*IvG8w6oPP*PFhDkAKSRasvai@o*#55d%CiUXi` zco<8;!CiE?qT#OHqZZxoiI%;WYeB2!W10Nrmz}-*GT)zXEgi-lDlCCdiFL3DVbPL# zxIR7{ZOV(tRy%CbZ}EZet1@Sgj2yu-ez9&|tf=?#Pkuu0=!57J-=~dQREfwgN~h#% z9nrhJR*51*iq`C>+SPU~99?Pq$5Z&1_EV{SlOvePICYLLoyn(z|SsO}B z4fyjxC7f-n)GPi#EKS8$!+J1R3umiKE46@j58#VhD~#o}OD$Exxs?TwN>Qj-&eGBv zdFx25RD*?58;gDDcPv+R-rprl>GRt(j5%x9&?`R1m8~_?w*`FFmd>LY=po- zClxF0uGsGsGg@#(w_()M%gqq0ndNSYSc^~3jE_zo9-BBaF?AU2Of7F0*O?(IR`Poi zUb2u7;;E7ndQ?PBP8`0)m($RZpir{>m|8SqpZT@#FE^`=X0^Qrf?36)nyG+xV{eMb zA{i;O^qT&;@e>uWU3m)LLV5dN0X$*_sI zLiJ9emN60c{oYjs`){qctF^ONRa=KKJL2z}hgsyshWSEYTrYY{6}h|-B4lTcmELu7yqic!g#&iTsxZWi`%c>yL@a+91qHizPt2P%1sa%#N#Iu)fva$8^f;b zWD84F%8Q2@r$YfJ_Eo&8?J{zP8P3GMv~zCQFk;TR+FHEo+_ur`AMDEQU)}l#htan` z?AB9Fz@Va=it`x#){tLbX&(vCaOajvO;3)9>;orn5L1DXhNtYhmTA)*Rwk(F7dg}A zW8=-bt&Av-^+7DNlu-(1Vp2{PNz-P~nsZ{uENy!h8~EyNNXaoQ3Pe;a<=Z{T&ghWX z6!PCBCXweT-JEzxRX~v#C{_Mf2TPMf-edE{L zGFJ+h8|B3k+`+Kj8h}(RghF_Cp*Msrqy3xyO*fI}Lixac@k0^AKSy#_F{xBvObD&y z%+}O`x$O1p$!@S7*&+?Gaj|udI&vGVBi3S=Vd{oO@?o>p$WppiQp1S|E7&5i*=o3) zt`)&|51R{3;lpoC)^61$l$1<%k+##}Vzo@$k2h9P#3C-ID=4+nY=iX#tUSD6twR!Q zjkSM4wI^odI=!@JDcpK$4IgJZfG-e2(xq-kxTQ_t*Fq~Iz3*u9Se5JP_&KX2&6c!0 zv`W`g_|8gWYQB*Q*VF#a3S$jRI{(lrJ*O#Hr%pBi53NSl=XFGTojUpJhl(?qk?5@0 zVHzG9T-NlB!R4fSL86y9?YfK`V8;(Z5R2&5*XooOG1FO|Ae=ch^;J^KAt~Si^jm`j{!W?<-aTv z>qP;@P?t{xpmQQ3j!ACC)4L3OyNyKffpLUMTbc|9c)S}7FgzPB*T&*GEp!tS~D~mTN zTxXo$G7IPrC{BB zp!Jyq<@{OM3wXZ8!Fu85Xs(k!UDvW=&V;t#N~r^lXKlmVi>Uc+ z<1?k1@#l<>9w~`1_R;Z~SxjXjvmp_*!dbNT_Jt= zOvHWdcg3=7qVMiF#9)Ug?kO0lhDbDF-4E3chU5CwxoS|tmni^ zq_OdRw;u41OdJ~bkBv+m86UgezZ#QdX}_zLjd!PU?|P})YGI8Utq{e!t#U}_gk9(3 zyJVM*iskB&WpN~ltWmxxue92YC4A7rhjcQ5Us7wECNMvH=42nOm5S4#*FUMDJy+O@ zxeoS7AeB-B4mNhtXE<^W?{J=e=+go+EErPjvJwtf?0VEn8Qd2jP55*}O&#N5#I$Ecr2f*;gS{4%Z!vEz4J5n=^qi!sNbaAw!n&YAP zM%Ib1F?(sIb+MIZmZWyF>kz?~a_g5^GD4GH2e1fb8IgqJaVur(h%|kEGhAx4!|^j= znU<_eOVN@CJeTR%5NR=Bk+bU;XBXaK*~Wr)uvw$l&Grmlc-n98AdiGf52LIMn;1k* z%OjymSuJ{0$@wz`Q4m~pw_3(Z(?>@)AF!rlZboq$02IJkgDor67E0(1X(vkXeZ5-K zVY7{|YLCUg)h=m$Dz}6C@jROl068dAvlsHnhaJ)-boKBsj?QEUqCWgW97*f;j(gZ~ zest+I;@PzNCLBzUtk8}fZ0wQSh4u$n?^;RY3Caza*ejW%E6`WYo|)IJ%UE2@~<#sD6+LIBU|fzVpk=DebXWyxNc4MXZCy|s#}W@CNsz}xom(~ z2D`kDf%CpbWo^3#&O_^xvNb_F$t{=Bv!WMvD|C&2utTtO<9a-F(|Sj?PU;?~ZF)E- z#Z;Z=xI-Ma^@ekWoiLh0=aWde_U=N;Uf)S zM*u1LtTruV4bFXr2rA<>SQkJCkl6_x08jexU(1<@n5EvTg)wqDlN`Y5E?qLyOzUDw z%q&UmNLS~_(uWOuXM!X(pg*@;mJ-=1Od#7}yIj%yg%E+0O+Xh0sGFoBq0t&1&!hFa zn~I-nOP*2UW_BM$29$dA&2BV^&Eo7E89O*}bR4rcri@af?7$5Osy)St+ua#R$>-)> z*Nq3N5*0iujcVnmRylv}o@Sg_Ng~NqRBnFqEt0W~&z7-q=D$gdbbPV|+w3F8N>kmL zql>}r%&0lHzWXQQmb4*3wyD0HEn2#m+sR884>#K4n!ZiWv8X~^9gD@ui^~|v4&dMU zGX)p$42$Vjbt=1^+C|arOi7iz+Y*%Ah2Xw$_$j&%JTj6bh|*BT^K7CE>@cM}W(~@E zp{mT#P8h1hVpZmyIS!^7$(!Jp^X{D;GPYc)>h-*sedKkr{_$(%vNxjzu1U+YQBOwB z$oUIl#n`BvLU|pogO6tVCKzd&Hf`9>Z)cS(lZj`|Wnb zxhmLryCZhavdcVQL3&x_1wW@R{oA;r#SEo0Qx|LL%&S?ren%RG zdCzt345^HdlTc$`<<4=RM`jL0Q)6o-L{7pN)B?%De{uF?Vd}E#}>>*oYB=1w0$P zTf@dl3k}LR*1WCu(@EF|tL^CqZc%9Y)zB}x{ok$ zSxlugf*Y4`+q9@}hjbyOvTOvR2{)1L*pnvfjnb+hvE|~FPCYk|x()=?_G;aQoZn$z zj5AoxixB%xSc1bb5&oMbHo|Qi>*dw!E}c7n6sgMk-u$xjVxocm;UXd+7Lhx0!NPPi zr2CIb72JE|l5sPA6H*?(Fzx&bIie~AdK3rzGy~qMgN;8Czcx7EC+0NDjiqI}8AvUQ z7yEXm>bO!HcO$Yq{KqbC>gWYx`Vdd=q8RaP+GMS-AtgG*>U5}V{a#!FCOSa%Tl!@& zU!tp0T@X5D_VA5*Y1XAz@jRQ*t+58JC&h(i3z{S6SHEH$$7Kr^&m%S1pqfSBZ(NOH z1Nay>FfEvXXUMe)uFZ<0!Gu@VP&dyK)9By%3;NoOqq`M$8soV8=f7-G#bW!&uBo?b z1-{+XQ6?Vp(-Cco4_z#uT|h#|z;3!OH-N5GXKP`&>}TS)AL{Wck*92B30fXM5AMHm zfULt+JHOg<0SCs6J|w0eI;D$p=nT61S>GXu?Dx*yh$UDVwFHTkv=;P!6Gs1{z~T<} z8@J++0y%$n7&~yM#fE#`UrR>C)4K?7JX=x`PPW6!4!T7lFg}fPqE0s}H=5hFJHHTf zt1ke>E7NIibOKvRjh{4QwH9_{+Js8VSiTgZ5}kGtb?@i5Gr4M)n%1?pSNHkPdX|6I zdPVc`dNnIHkBlF=bsC}j`JmPcPu>;re8)K3@de^84#)Fsg2C~{jXQn(L3@uwkczW;K{Y;4GD*;2gpkrHVYR0CP=!xFq5DJZ3Z0D?c-I zvX9oK?1ZfrJQn4@iN>UHPDRe98kWY=yJ$^!hOe(YEh=6KrM&o_&Rh^DHi+#IR#K|t zEQpQIA5y)(D!o;1hGFNqksT9>DS?u9kPF&2FoS4uWJku~w`sr;?H(q#YNuF(3wWID z+~E{cU00qi>g&p?xwO6tn;V+2szJMe>uhL>j|a@X_RxN{@0jYX2DR#)P`QiBMm;CR zWY2w|iX2R;Em%8dA@2?t0C301e=TzyX^$PWm2SHlmx)1|cAjJx*_oq@mUU)Ks$(`|8lnVXKI?K!zS;)z?mmedCDu6*GfcQO&5h%COFELRNW&}xpM>4=0VQX zPP&DN7qXS&d1Nb5`dR&Gb!pvKkV)HVmZ%$(N<4pam2%s*WVPZnEhNK8@<@25{gC#i zoR)XJVwf38z>bNQu@HAVY{*R4-0jBbuFKHecg&n$4(|YFu<_!*NsO3O8D)d8GNY8! zN@{v8W{xg~%u!Sno?d@+5P2^Dd2Vr_3vICGg0FJej7t+M>Y`UeijIF54^+QQHbk^O zXe;I_IkcUP+kq&di~2|Dy3bu->m!S~a~&9(+AHIBB`gYbdoNaobN6W7U6-lluwFWV z%b(#<$`w4g)KRx2G5Y*@FMP>V#IX%J9P8h0O&D?9#+qyenpA_;v@RdsiZ!W`vd{>? z7t#AtqgG)yYpEx4WDiIYelyRx`P|iWVI|4!6xME*rCrw+u=BC;WsmH}@Lw)*y)l_v zjbZ~cXQnPz&6!s-Z+#1gDTAOLLWFCL1#wa$EsvApO})4UXh#P6ErS$RT*?v4a&Fz| zZUbjwA6O4z23xwBNf*zb`HLOqB*T0YtwTXA+!4D?VkS*3M{qGqC7qi|T@Bby<jD%X6o$eKkL_VIlYnYV=Z;(A9;?eT#Pe*zE?o3#$@JkLYcxHxR&T*fgKpoL)<+3l)ICbquGIP- z>jmJG##dXqWILW`6SCbA)y(U*BsQNvx76kF5ODH!cE*LmkrK$UHU~pp9OJZ2aH{+A z`18xB*zjQ#r@ifc(@H7JW zm521+KrK`fy5;i{PX4x#pYRI`cSTZd^l;QTP XM|^5duhx1OKN6W>w)L`8WYSy!6bcy} diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index eab6da3ffd9fe69f17f37f8b94db3e2d08aec12e..d12b58f1613d868f6a887a97be541b0534d28ebe 100644 GIT binary patch literal 89756 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 CY8WX1 delta 69 zcmbQUm$m6O;{=uZRwNerkpT=QEwgliq3oB`z8F diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index a7a2cc9620a643cdafbb0eabf754154c6e6d7e33..72ff65016894c1a2d6976f3764e084188ecc8e2b 100644 GIT binary patch literal 89648 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 #5T7y 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 delta 69 zcmdn6hjrR5#tGJZs=N$fAhD_{OqF-yY$>)UrK`eX;x|6$X4x#pYRI`cSTZJFlwnnt XjrGMpxBl)rV!Sdb;mL`DV@ACI8nGIj diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index 59bdad9985eb5e1aa6e1ca61774864732fb45d6a..b864d060833eeab609da4500eeef08f870d36df4 100644 GIT binary patch literal 89671 zcmeHw33y!DRpxVdCqxdO5SAnj33**fr|nKjs=Z3x?M`G#ww0DGMUrjW3zes;C#m96 zy-K|*%Zlj%K43x^0t0~$I{DZJ28M4sWI6-_31JCjh9x9qr=8s_A3KJyLxwr$-h1xy z>Q?Dls=_kZ(9x@R@4NT>_bm6^b2le!`KO)8zZ12Kek*XM{e_iatXi)-PSp=9ty;5P z3mRkovh`eLCZbtCT5yJW!*gyRNZCY+ekckV1K3Vg`s=g_o{yD z!2T--_PcA|hQGYk^dbL}*Ql-pmm!;4OZCV1Lk<3%u$H-XcUWmNCx~W*hBRfJLA2>y==` zciVw0F=4hke7#g@`934y{N?jrwHh?S^Io>>Bla?&_1oe3X06ih014;S2jz-4*7Uqc zWy>|F<*<9ytB1ZML(msVnr97d5}i8xh`PtBQt3Vb*TZuc4qr(n)5%P-fNkqHu#{PlhH$zSG@G>swcJXp=C7)sRX_5Ae>v^1bk?Sz zJ%T#Yh)w?Lpw>9mfL5ukHT)({Pu&M?U^Q@zU~HOuAZ z!2ZpaU%A*_4|`43WS|!IqN|bu5@00hH9#8aL}hjDXs1y@j3LvE5w0tf*_i|TN3Ots zBW(}cKQXf~KXn}CW<+F}V&(yVvuq=)HP+qfd9RCOZqvn`eU1K7>72jR)+ncD7*$o#`-1d4cbQ_(G6~E&mJPTvIRloZqKemW*%xE(sSvas>ZKpQ0EdP(5P>LNdZBG zZh#>I#Rrq*>J_xH+lH65pqg}{=W=}yj0|_7Ow#~_pcEK%0DXN7jG&5_3xu`62FaqQ z1XVs5k}ZQIG<}^WbeJBRte^o(8$yesuha&s2A$@ZJDPTvK_|Jl&_gGtz-758I;0*Z z4MQe3Oc$`-xH6&wtob_ixeOAomC1;Q zf~lLpJ`XIhFw_C|e_hZ{co%*5I9L(H9JnwNfp&$5)mjVMReVZn!Kun+7*$}&n?bA1 z6%!SLX@vNRfGQ}5SXNtPm9X&pb?ixXIBBpa3edU-E`Y!3vTTAoW9}L3Y&bQ{(yc%t zydDr@>=WA{Dj>OxH6TEY0@mlQ!XxV}#n;Tw5Om4n=h1RN69M%bU0)Y&7+NJL$DR(x>WP>!Lf#M%`bMRl^5nFADvl*YF5Q~QIT+Z=J@Q?+zfuyGf{r7Q3>8`r&+E;e^M{kHqiM! zm*^hWvSCEkYkTLR--n(A2eL`GZ^jJ});QUGbktc+Y`WU2d$1OstkvE7IJRodTPv?N z!}|__Q3dtA0&;Dp0LeJ!LIvUpTt{carOny~I%Qo=0x^m9a?1=W?S;WAoZfj zYqdadq4X;HUQ*P`+=)Bv1}m>V*{RnhMa@i;!C2;=c6SD>ae)P07J?88gaHaXOfJs} z8!1aV9@J5Zz;KY{GcBq$F4fw8wR{Xk=+x|VpHzxkFtxFMj0AA8v?njL{7W(m4v5Q9 z^3SD`@PA7GU{HH$esvXkCMubIR&9Bkvz4HcMKq?WfDV9IG(u*;qlsW6S88=IT|L`V zI2@;a7;&-zd6Xj}L(c-{f&kj{NWH2WgOMBp*Q;}=qChgnJcP)BK-3z*7_S1K&9A&V z^4UtKRLXbU4uyaw$J)JpZvf!qjx7CuE+ zSdt{&T=1PC4J7I$8;BniK}hJbR%>fVF<$ZT!)}5G{o=C(dntZk=bktOCD&FDa%zmi zA42!*5SoN5mQ?PXDU%>S6?(fH!nlvpgEUtDL#~}NQF%I*e$Yzu1pa#vsivle;Yq_^ zY*eM21kNZ+9v^q7I$;|k3y=6)5I^GOU4-XJHvR>5fk>nhad7oeA7CgEx--XdTmWuF z$_00^E_ls*LMZKo*A!LEpLAzW&Mq?-VG;Vd$ulP*Toe5Sy$trjxeKm;*{^^D;r0wg zg*@22v;h4TMw!td=--KSZo*YC8nYePkCDw`dP&?ElE=Y(oPXcmPb6^1y&vp?@2Q2; zeia5wU|8Ijyac@E6F64lY{3`cU_-DRd|eNQOsZ#Q!U0ZR6Ez$JuGtE}>k3if=V}d~ z8-vhIpzjr(z>~k(VEpGwm7@h(D1vq2zw0(Dg%a6l9=Zi5x1j(JV_=5%Ro%A_) zobNyk|4gmny!kx+0=pXe&eOhDl=SpFAZkC~2%Tp+liBi8u-YykEl+tZNBjB8j#pg) z_tSA8v>#%Y)iT5xz4B{h0(^S}Mg{n7?Gp41UW5H+rHBOfhjl49)+wjbED?+me01Ee z*UEDkfU&%1iQ0#`=!ek^S;wh>AJ_ISvf&Fj3TS8<^%ZcYv4?1dfB|M-Hau1sm=t<_ zv^>9Xbbhh>_3X*%8Q=mSHF7h&>@~U5yfVl)4L%~aNT=n&u%vvt)@paWx+7W~#x{X- z2R5nsp^fx?cksB>lJ8fY4?g}5#$>(D{ZYzGFk8Grk8s3j|q-Fz#dh5>9S-z^b zTTg!4_$5|8PWbLvazIqlr{YlTyp+EK2JFBc&>P#Nja~_c0?jGY3JPC^qg@(TgJ?ET> zBt7SyXO7Zy!TFSYE;?@=qxU7}8^`H+!dXg*=X}b!7YrY3=X~1vd-(`Ad2(rJP@x74J)F z=Z&wR=Zxb&LeE*JI7iPpXXFGu=bcZ;=YsQ=lk~pmeEmE`Vp3ABI7*1M9*30;xawwoWrN+Iqy8{G(8ub&&lVa^V4VOeaZQjuc7A& z=ggxHGxg3L`y32lIa9Onl^Aq|&dZmtdwU)|Z5W6I$u>mE z0}gktY>03%8S}ghMCb1OFiG8&w{DM!d7P^1!Pq)RmEG3;KOma91n%_U^+=Gc8cNx^-vOeTt7}8_=agt5x|$^(UH_`LZI1~0w80}1B-;@E zcW~U9!)`d7JrM&D*vr8q5+vIYWuD{k0FMpP zJS7^4&OYy>0@3x?|MK=c0(&`lL@Xv{w{>?xh>C@&Y>4imL=(|CA!;6o;n#ub89X9E zvW-U{1EN{5&4%dnlxQOQCGzX8e>esrur7l~BuKU)`kxRwWFbQvqW4mwf#~YU?~)$9 zUh`CY#Tmf53?7jn*@oz~5CCO?PaC4|qeK(Y^JNeF-gj=VM_^qBk4TVgLo^4WTNb{x zA*xZLf#~dWpCTUpaSTLYT?UUxkZeQr)ewMYL1-JI2Px4&bT#=QvUN|7F)9aL96TaH zvJKI7Aex2JZHNv)jGZMKh@N_j?2rCji`VsvZhu4@_^cX$>2qCn?cD^vSdDCqyeT5P>cZ9+4o~hG-QgY1rh9 z4beAIqKRmV5Hz;v~{12F+Kvx9XujI zvJKIG*WnXoHbnPPqKWA3a(r~^-P`v^IBPfXnCiQMvL162pM)ef-DgAekCbR4`U{E$ zHShX`?GfSJLKl5ITtDVV%ula@9_zeR}#qH`}Izpi;OhV=%?9XujIvJKHUz!WT- zdbJ_?0ZKFwo&8NYhCLD^76g1AJR(7|4bdV@B(n)*8=`;`O+;^#dUSUTF9`TNctnC^ z8=@D#*x}RQHbj$@Xdt@w2^rn``WTTD;Pc=Sv6*}Oi0|)!Xf~N|L-b`Z%g+)GMCX1~ z`V2oEBXRX%DRs*+d~ax#!6OnR+Yr@ZnFw1RVng(LN;D8%eVer2UlAh~1g$c7 zM1o`+qK6MUe36R{(K$*q5S=|sQlf$A>YZ{7`-4BXy{&^X29JoX^s@8lzr57pi@$7$ev}doL@R&(S>n;_W5nyA zjKL#f>(%Utz9#ALC2TfC9ZED1UHzntKXkBLMB(b-o?J(`LUXMi#Wk4TVgvkdQt z3fZDa8=^m@L<7;)pZ@?wPQE3E&oDj=M1o`+q929|+0srMqIXlGf#@qg@^P{ZofwEx z!$2fRwjpXkg=~SU4bgW}qJik@lXAA@!!dk@^e_+!l5L2lp+dII)`rNVL<7;a3Avu3 z6C)Os83rOjvJKI5phC7-*oG)ei3XyxFP5_{?~E}j&kh5TAlZiKkAP^lq7#&8AiDYw6v@ASF@|4P8U`XkvJKH4(1dJ5gALIODbYYwnUH?n3t}Le z7zQFivJKHkfM~WY!-nXuDA7Q4?L~4l@k38+FLk(|W8iUbL9z|ekAqOK%_TNOzeESPHbk!g zp3t<(LnU*C&{n7{(=~z^25VGBuKU)dOipR+pc6oG(m|5qO)(3G1Y4^5aB+j zf$NbV*@oyZfM~Yq%7*BfATcb_Ky>x5$a*(dVnp(Bht|Lm36gDyei?{nTgPmOK1GQJ zqLoj}T?YRU!&80vFc1lnZHT@b#GGw_vmtsbB^rpXF3|i@^T%U&L6gHkBuKU)s)Cra zZG1LF-$;ojqT~l@4EwqmoNO(6_VJ-P#dDZr$htMQ-`J0y*q~Q zJp*+Q+|~(_Z9IAc6qjvpwITWqN;D8%dsN!Ge~J+~IXVnPf@B+_{|t)DHtE_By_pgX zL>Jyq{n7RBk1;oKY#4|H$u>j_ptx+Su?^7%B^rpX{w|HmuRk6m&TxDfhy=+tLB2qi5-Vf5)DL89i~`N^P@3F6R#Ks zB0;hZ(fESPHbmbKrig99w;}o&N;DCDh*n2m ze_f0oc5WDm1j#l;uLe`Z4ic~-dL1R2h`yJiTh~AGOWTjiPYeT*AlZiKAuvVkI0PG_ zM=8-n^c?D8uOE+Ly-yAUks#TI=s$reVuw1|5WSQV4Mf+Tl#!Efh|$B&4+D`P*@oz| zKr}m=!iMMzlxQG2`w7yc<|8q@poL)|5+vIYy$y^jJ7B|x=mV5!AiDY)ikw`3MT{}* zD~EwdkZeQr&0t*FF(EcYKSGHHqNm;|*PQ%R3`C2=KqN@EAvz7ll^u3sLljb?f#}+c z85^SK zg5_n22BPzSPiJUc_hR@Ar-p$@kZeQrJ|LPMpJPMx$CPLwx_Vx&MtfC^SkUQVAQB|o z5d9!@7wixq8=`knqJikCQE9!uJBIIlW*CSB$u>ky=q}h%Mm9umphN@F)n6o^p?N08 zn*6UB1|mVS4bc(kF4%!gHbiAgG!fk`S9N|QhSWVe3`Bxt8=^0V?t&dFWkZyvL<7;a zkI{@+^X)Nsbaohs1j#l;e+Wdg!?A3L?u5RCB^rp%ewM6v^Jom;``j=P36gDyeh!Fc zM|{~3eUuUnL{~@1XJ|eY1JU_mAQB|o5PchTfb5_$8={|}L<7;aWx0wbug!?{+9P&h z7>ESPHbm#417ydo*${0}qJik_GOb2yK0Su@{@P(65+vIYjX?*<4vn)RdV~^9M32ca z>_5e@4CP@U5+vIYInV*Jqwj2pUOSL-ZjanjPS0L-d!F zXdpT}_EA~``5iH&&Km|IL9z|ek3pA?#}GoGUmTsf4}OR<27iST4MgYuPFn9Djv;j` z!$2fRwjsI%Xz=`8E21}2qJik_!_o`->KN9$G7LnFQHe6Nd%)rfQTfC&Z z^iQweL6P$2I*fYxr*OnD-nvxw;b>s9061E*u~zq;+^2tG5@~Ua!p?o33{$hxRoEt; zR%}qC7sf!{MaNq2vmOPlAHi(TVVt-;_2v&j3qm8*oi~Cn!4A`Y*1mn_QOS2WpPLrP z4bvgWZ+iUkhv^lbfc)F2{GXk~V+{Oy*0h_wR< z-T3|Y!rcuIP0gQJn4Oz(6GtC7zt9TS;64x+5AYA&gO^K%L+6hK>;6W~bJ_X-aIk#s zl7D_VfGc9oQI>~MD{TrL5>;mrQ?bR8|^8LO3A~CT0av_a@~Px#CO?*9|B|EGqI_0Qqgj-T>pJR^`6Y#b)hF8yI zCz7MNJbO%~lM0ZeenJ#Cv$#0FSdL)eBA8KxYZx>g)i9_USb-b@E7c_+tOeNx4w8s8 z83edQ5w5vtfLxMvz*Ui?U}>${iu!9spUj)kN}`ralX+P3TbJNobW<=C-*f6wL#7!H zRSPf4A{1$|7R=8SQqP2*>zXDP+M@JBw^RY zEuB)x)KgmHoT`WwCyXJ7Coelx;K*();%%p4yL=ovc}u-{RhfD!DA1}_Q4rh}3I$1s zWKUx7POD1eowcrQd6yvz!i8UGcq5Q@M3a7vS(@})Wkxe%yhs;|WEQN8yBRVsQ8h@V zlBEf5gTWl$aEb*WG$rf0lbdu(h> zNtM+Gf#XKapxK}aB~|Jvow6B&ZWF|PK~*o=AMOU$R)zT^=tbSlR5g_J*NO-QojZcH zRo(>Lq`GTC+kFHs0QIY?elkpOjUL?mTP;`N8a|sFpVqs7t#(Z&RPCZLUO6j~WI0O) z$zlzP69qB>nl&g1YXIg#RUqll_OUKIDvzv-u4@`}z5me!U)MlIrJ-tBvL9VS&fQ5} z$n{Q63AViwQ5tc;mM)L)*nrwt-Dz%!mN3CXsQZtpD2JB2DgT*YF35(ift!k6&uQsIiIz!DwN^X5?~YIu?Bvo7jZQz;OU@1VcF(4Vh5ttB(fZ3RT%;X)79DpeqXGT7AT8 zx9c-o%6ZL^5z%d;5#mvXL~}pXOG$(o;K`A}!28xILV#f&;*c(emdKY)Fxb`Y!1=?qRrto3W5rAfe>RrttCN%<*zq_8QePL^ivEgSro_T2NOKRW*0kW{%$% z@@k<>{&2ho*M-;MLSaP$nU_XT-t;{jFiYf$d%DhPm0JV0jliXXNN)0EMj$qgcgxz~ zSp`J*)f7A`MHWw1<+vB(HKr|?2rR=amE<9q5Aw(KX3S`>HO0`>0Se>|Craf%u;`$n znvkr@QJ4ZN<6X{|d{MoKuW1dbjbyaev$GM)<2CX^?X{Eb(SZjIh^fHPSj3`~`=eI` z_ExrvrnB;8!Umd&F_i5t`E`imX%2Xv3{r%UB_cy}&2%zyIv131#UP`b1hP*&g)spb zC6q}UaHTa`^k(ScC?ZmOgA|L9n~aAVTxM40+}6*0F<$dEYHEXmkCPue2-qH4n(s@swyne zWt}c#nkd#?s1u%wW!__RyOKI$$H4LoNA)8MG#?z6kCLPYpp^}N%ab?ipk65 z?JB^Ef*IuKP`F?-I=ay6bt@Zht=be>vN<%wAuZIHqp6$Lrn+OK*vAnWBOEC*MY246 zSi@~ZnVSdEoEmeqS~ZJmuT^s;d8yDFi zB^FS5E2u($P-HW(U#qNpEm(M=g6z=vvZV`({kk3(m8fVwDU`+ms3Ij>$THxR4WClO z`7g4Eni^}3rAdKChomjRrhk~kb+;H9j5-EfgL;)<+N#vhXjN(x8>&hy&V}N7;VhBy zpuSaxLbQ@KFsgYqB2;zJp0z|qVZP}%%E$ah6$XXerG#ZMB#@(;!==?Vs##xaZCI$w z3+4D^$?i1VS{-v8o8miwZAOp^%N5P>LiCWOYcErNz@^ zS<@0F%Njwd<}O(#Bh+PCb0o-`W!37@EUUGmxR$kEYg`oSno1Tj2peAs70V>E^hOAK zHd&-MLguo`T#jA|fygEE^hU5SpDfTD(V+QcTGl2Sp^(f@P%dFAi%I!L7&BPNP@+t< zZe=2=UJ1%!Wll!D6vU^~$)c<@E$B~Yl4*%DEfA!$$+Sd83nJ3FWKMl9aHR9eOiB_Y zkfaOAf_f>iq+!93DpSCLMQmvak!I21Wl<7O^V;c&WKlLNO-^S3W}0fx2t*lxsa^_1 znM|@ISx3{cnJk2L<>vxX2G}Qw&j>`Be6lEs&j>`BLNcv#3PhP=GA9wyG#tDvsFx&N zz)RWkS;3>sL{idDQ&|whRw%OqP!@z!eJ$iH3xK4gWd)#YE}4}mvjR{S1W;8Z0KvFGN*bL7vTqZ5PJyV9N~RS_ z0uj6{$Ob70p@V37Mv_FMu|g(UkgY^xqe3=Wkl1N_Q^+L?vLYIM6u?xGvKIx53Sg;J zJpxbxv{j-czq?S<%yW?dfl-ojToizcDb4;A1)yR&nU%GZhgbw=N^0+xaUccH^&4R`;zSad%wm%Uf&UKqNtO#Zs+Yj+K`@nTYnM=!)%dm`}t(#{n z>RtH9Kf!nSf&9dEaoZDC!m_i{F}c=&=-pwXM3y0eYxWcETD$H~b=vN^1pG_7iNuk) z$*D)&qm$D!)A%Bt%@!{_h~6u&4N6R;+*PmYF9n@O)lEgxL~PY>cq?^(skYInd$@Z5 zzNm+OB(GU&x$3WU)__!uLPc_xH@47Qhs0{lTPwF=u@C-^3eoG~RxN1N+FL*{shF%83up(26Eqe{bD720_|J|Padx9oaP8?vow5}V3v|)8V{uAi zMPu0=WVJeT3E~;YVT!u$x7>5(%gKXanWk3P znB|<}(GD<6kN`@YNL+9$9?;0NxxCt_lv@zpZ8fHX#%gVCrqOO~oz5JJ+OLtvT-cO2 z<5kvOd+CXUogg%b=PtymGm3pAf?e3j5SFM^)=vbNdZxYIph7nlXS!V2c+ne@HN^XC1+q!AVkFyuGxd^jSh)SA^nYG5^0WtPhmtXqmkIdKpJ^eAJyMZ?pP;8 zZDP0GwqApw8RO&b(((CIbJOmTnFmanEBno$vR(#v&~Jw+kcu^*3GYGZ4Z)V-{!RDc zhtYGve87J8Ll8qhC$mN|iNv9Z5E{wp!PEkC+5PLu?64l*A_3dD7;aNXc87IDS`22G zdST&w*ljhul%AE;;e3G(Y!TRPHB?T|iokdGTWc-m!|zPiPN@>gLMD4i+a-U!R>AGZ zJF7^th|1{+N~|>7VLcux4=q^hk_1y@&0nC}vrAE(-q zxlN$gOe>_`cQtvW%6>Y&ZI!6moR%A_w4cIvR~k|ComALQ`@1WQG%V`;ja9m>DdeBIX>0)W&eAjDeaKpJ`Tf>03!WT7!RhC<02NC*)3pU{>P zww1-u$D5~WatwU)7(hc^`b#3wFAB(px^yA{o)aNC#<>+u?=kR=W>W@mNMm1Cp;*F= zWZ&56SFGlS4|%`N7i8j39u zXmU3pdkg^A>JV{Ie1nK9i8m@-cbwla3(z0%*$@iAN0d}67;Q4fbB*G)=@O&d;YRf% z1~q!3i-mWQEZZ}$=S&NCYNRYEeMUjKc~K?*KlF8E8DE;UgBqgxxp$wRjtdgvd{Tc2MZH+*v5l?;buA4iJ$hh ztT1PS+i$tl0gYEo!#e^|^G9bE%ZoFwn3-BGvoQAQnZ+fT%7o08*!4)Wvr?~B=ujH5 z(warzdz8}!7bZT)&g@;IJ|tI5Ots0wLJZS)+Xjf{xDjs)S`@k>cFb5r^;Jp_jaM1s zD*86FK<2y@>SnUvyi^rd2)F&yJb-FhKxKedTvWvh1So?mEO^k0|azgT?NsD;Rpneb~)NGaGTu z4BCh5Z;>X`Uqh@U$HZH)iX!SK$!vO$F5Rdex*aV$WOBniF!J&mH7lHdM@4k2KklB)mrcrqT)9!3KN~!iRV=fm;@9n`U8t z_VR^8xK=7kgIfP2hW1op7;zoUkw79L1{`GUu`Vm-V8yIQ ztdxP%_qhpQ2*lJeJWMXn!DxxiC)?d2v#4HCqhep6J6;>Y1g)!ex_ST@-Wbb5WH0<5 zZm`2OQ#U4_kdzN$SE{}#KX)v4ST?nm?NLIC)nOw3;JBOmrim(bJ0 zgK=~^lahV-tvHfa?H%>7qx|U6Yecgt^^G~0p6uX`9oX2zw+kKhV7+TK31=Ws=nmrL zRfslkx!#%wyQiWvk9%iOeKMevF>o2&jtAFTF3n<6TY&Q+mGZ$8B{QcvBcV)D^Y?uCDrcvLhW03K2J$S;Nt| zi;L`;M+m<%5PnPcT1gM9`A!5?x!#s}q_k#G%*eq~<77ExrHLiCQMYpM7#?im}zen=xUhxZal_mYS5qv<^iPc&O>v(v2O)>l5b zG=1$v8MjB^$dv!J<}rtnJPV9bFZpnBnux9O8G&foJgbasHF;#K-zR2OJlMCu;(>i@ zGCwot6QR1T2w^+}ACvP2h-5I!>l!#8394Je8aS8wk}{Z}9p{$K=o!%qvlV*AKgc22 zyKy}lx+%RwTgP>e(sn(Z<6nnIUnG~}RR5uOuY&@By*GXc z0DKfZCjfkO<}7t>>Q5vd@wcXfO&G+(+7~u(N<_WtksB-RRI^W6Fj_WjcVt!%EEMVS_~2HT$@0+rDktXrT1NbiLXfF^zDui;EcW{J0A zVGLi+#0PMyOXtkg(|VW^Jxg3W($o1d^kK)|86!yy=(l&v5-dB033wX}%N5Pt3K2No z1bAV9xJgP1jneRF9;Mg4RD8QFd0L6P*?k}lDE8>P-DnV*#W^xLeSG%x49wo>GK!6| z2R9&y_GBk+_huj_Z_m4)8xKS!B6w7uQp%65a`W6h#W=Q-gp(<#-2LR6l(C)9mXUF$ zzj2Iobg~4t*-OT9Q{A1Thr#a7s5sZ({bO-U+>pTAR9(&{mo8@a^3uhVL7QFEx63&e zQHZT$F*td986(;O_;>S6!7V()qPtby%5J9iP;@g>TqWrAvEZs1k`)>38N>n5HG~f?w9VclOBGvQty*d13aE*2%i( z?&Hhev=+E8$(UEL6;|dnzD0B93Su;I) zGD}fXYj^9i;&i{+j&QCDY`onQJ7>vd#Ur_Pu`GzYtgz`I0`&Hxpxg8E_YZ7dzH2vQ zMBSt5J(N9~P1*PUs@`jIVkhSl%h`;so$cMT43&Bi`XVsib+-A)NRK0tjWAMTBs$@+ zH#L*YKmCo<4Rjp?6p@N(dJn0HW{WEoy@oUCTX0D|-K|ZhDya|24Y!8gBb}DUJyC!zBW!#7G6x@@YjTOJubq;R7)q5adlQK$pXzzK} zVnGC7YywyF*_a>Avpw^BMt8Y~Eegb4yE|t)I>vY^yk**bw?TSddTiSirNxyEROlxX_>i$C|gremV~Oc&)tnYkXhupw^@?7ha>n;yFIFp(^Bi1Ym`c&*GQ3#0 zHp!o>t*y5sc}-e&y!3-fzB_aLKG>oWsi8mm1RYc`tmPjQx5E6%aW5=Sby~PfrVKo7 z+MLX2p6xr3-XjdSET&qXgd3OOwrN)19_d2L72XI)6Wm0$XHS}J1m#UeVrb)(O5L7E zJqH3}d$sC9Ztk!z!Wmf23nBKsump!XI*P z{b9HQjCFwGH}}gTzC=%@x+Qc<@8N?+dC8_%(LB4*t?2;Qlfs2$YlcdkZ}0eplTFfAB^XOL?bTw7vCgE6lx5I4^v)9~NT3;LRj!@Cvs8sn(@ zr@v%T*AhA`25*P*nzviHr%WJnlmbz-a~k!+2V?Dyd73%&`pNG=rqdN z2Hvb3w1&1jzYuY&Zvn-t;Aw7n0$W*(pA=)27ItOYg-Y^RJ{O`go^~O-_nX_9+;dP& z>l)ju54kUSiF?I(h4b-hH7jf$nOQ!y0HOO;uO9jr9+N!ZGtPE&fw+ys(LB3gaCC9w zUSV+GCFHm4;dP>i>)ui!6M9%;nXdSA%X<-L;Nayl&f=HFDa|%f@5;0bSzl^K{%sa<;NAkT+<=A zB;njD%w~vJZn|{g5Uxwv3tKH{EJ}Z4jY*@NlFp_WmPXQhXiaa1_g9_}ix)!4FTTe! z7ubmnY&(RJl;}DOV(0URSg$Ke4=XL-?>;xOYa%hhP~r}9M%xZ%5Dkv($vFIw1{`wt zFuGNH#Twkg<7Dd&r-^7K$&TUN!T{wl0*Xo6J@$_4DRp(#2Z(D&Md_KSVTSZ~d% z*Io-McU#%8=fs%o_6Mr)!KB!NwPzOc?tuXSb&T}aFvn7R%%ClI+r_wy4bqhJ#JkAu z96hwGJ7ZiOlS?(hI|bKd18)LpV@Cvs5b}wuu4OQLXLTlo7vRX|Dr>vl>~GS`>4N(o zIsANkeI_%Fq|JEUyi{h_C1t0-l&$|vP3w~1qWu?e=7}s%c*Xo$3F+1JP){mw!LEIN*ggu;zlUa@dVa6DjJpSA&WU z|85_szMnUQTpu)uxk?IcXQFmMCiGB$nXdZW{#q|B=H7K+aB8mtw=2P-K)d&1WZ1q( z>+QPCH~mKW7+n4g9wlGF1D86gmPAJ1Jnw}rnUWmap~KPtZfnE{$8Bu!R=`O$u$so@ z!-H6pDwPFC04|H(mxFqh*sP=;$>BX9M)>tS+w-}n=R!)7-7Bo!ElYc@Eg$+Ep}^tORZU>`^i!3>6~nNb&Sp81O$=ETE%v*8J^?(d1+CJ~b+mLu4hC6cyh zQcnZ6S9x^Mwn9PmBzReUHnr;!GvBtT3xL(JM{!MvqhOfsr!}I zc13KX%tygSGrdQ5)>TZ*5&ABt;1db1ig2nrc7c9%2Qzi%^q=wT9G~7ucJuo}zYBlS zuj9H5YYDpU`|U0ablo^YZ|{y_WD?qMA9?mdNIt=a$+$9t4iQ&fd6CSSkS@Yf~`P z#xY9U1*dv1kH5KmiVPp7;569f-TNVBuhsJK?m^y9u~N+yGl*KaKrEHIFTLwzdCV2s zu#b)x&9CyCY)8*A)W4yHJRuYw>oa4EUfhr1K$R(WBul(X_+;D0R+(*QhV#l|*2BN6 zc#R|eqJIej_|+Twun7}$K?9G5x#%}yeu-B-wnEr{9kR({ez32FjYhiL?1bw_yvjxQ zU{{+TvV6R=O8A+#?D%3nyeKz2EA?7s=D4K_Awt^z@t6%@>^fnRCA*-VkCdnzroYq` z_lq1^?0lrN?atAo*X_=zx{Uta@4wTDusJ-x0K(`X6S$nxl%K>1mn$+Qe5MgbZwqsi zkIpQX7iV5EGqqgCSuiT+_7oUu3jDi01vZE&Fm5JLGhyv^+drIOu~;@ThE@DtoxKg= zNUX!C@M5(>LYxwkKlgjzKJtU( OZ++?atpE0()&4)W7F$#R delta 69 zcmX@Uhjr~O#tGJZs=N$fAit_AOqF-yY$>)UrK`e<<2OF%X4x#pYRI`cSh6@?l)>OT XBd4K*)c5%u+1y`O{yLJk_o_Ak0*4rC diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index c96c6431d0b78c19706bc704e397b4fd5c9f58e9..6951bce8773e47810d0e198c2a5b3d303921a31a 100644 GIT binary patch literal 89584 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 delta 1243 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 LK0bIyvi<)7A4nk| delta 69 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 AmH+?% delta 69 zcmcb(mv#GX#tGJZs=N$fAit_AOqF-yY$>*v+mumG0uOc$M^#PF83K~ diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index 08941d49cf51d96fdb75490eeaafcc5b7e0db354..1d52e6af875655ed012bf86e4de8fd2b2be34237 100644 GIT binary patch literal 89708 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 QtIuoC|Hof?=`FAM|L6f>B>(^b delta 69 zcmaE}hxO7e#tGJZs=N$fAit_AOqF-yY$>)UrK`eb#BY4g&9YgH)sS;@u;h$*QHJa- X_h&u{xx_r{lUTy-5@F%4b%GKAKH3>0 diff --git a/Sources/epoch_code/System/player_login.fsm b/Sources/epoch_code/System/player_login.fsm index dd8c87e1..4df94957 100644 --- a/Sources/epoch_code/System/player_login.fsm +++ b/Sources/epoch_code/System/player_login.fsm @@ -28,7 +28,7 @@ item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000 item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; -item27[] = {"Setup_Player_Obj",2,4346,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1595.816406,409.736633,586,880,1}; -window[] = {2,-1,-1,-1,-1,890,78,1370,78,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1746.772461,560.692383,586,880,1}; +window[] = {2,-1,-1,-1,-1,994,182,1474,182,3,604}; *//*%FSM*/ class FSM { @@ -1037,7 +1037,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject)"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf index 69694ef7..8de17f0e 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf @@ -305,9 +305,8 @@ if (typename _this == "ARRAY") then { diag_log format["DEBUG (Load Player) Set Group: %1", _plyrGroup]; }; - _newPlyr setVariable["SETUP", true]; - _newPlyr setVariable["PUID", _plyrUID]; + _newPlyr setVariable["PUID", _plyrUID]; if !(_vars isEqualTo[]) then { _newPlyr setVariable["VARS", _vars]; @@ -321,6 +320,8 @@ if (typename _this == "ARRAY") then { _newPlyr setVariable["REVIVE", _canBeRevived] }; [_plyrNetID, _plyrUID, [_newPlyr, _vars, _currWeap, count(magazines _newPlyr), _plyrGroup, _canBeRevived, _newPlyr call EPOCH_server_setPToken]] call EPOCH_server_pushPlayer; + + _newPlyr setVariable["SETUP", true, true]; }; } else { diag_log format["LOGIN FAILED UNIT NULL: %1 [%2|%3]", _plyr, _group, count allgroups]; diff --git a/Sources/mpmissions/epoch.Altis/System/player_login.fsm b/Sources/mpmissions/epoch.Altis/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Altis/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Altis/description.ext b/Sources/mpmissions/epoch.Altis/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Altis/description.ext +++ b/Sources/mpmissions/epoch.Altis/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Altis/init/client_init.sqf b/Sources/mpmissions/epoch.Altis/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Altis/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Altis/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Altis/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Altis/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Australia/System/player_login.fsm b/Sources/mpmissions/epoch.Australia/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Australia/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Australia/description.ext b/Sources/mpmissions/epoch.Australia/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Australia/description.ext +++ b/Sources/mpmissions/epoch.Australia/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Australia/init/client_init.sqf b/Sources/mpmissions/epoch.Australia/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Australia/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Australia/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Australia/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Australia/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/description.ext b/Sources/mpmissions/epoch.Bootcamp_ACR/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Bootcamp_ACR/description.ext +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/init/client_init.sqf b/Sources/mpmissions/epoch.Bootcamp_ACR/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Bootcamp_ACR/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Bornholm/description.ext b/Sources/mpmissions/epoch.Bornholm/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Bornholm/description.ext +++ b/Sources/mpmissions/epoch.Bornholm/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Bornholm/init/client_init.sqf b/Sources/mpmissions/epoch.Bornholm/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Bornholm/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Bornholm/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Bornholm/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Bornholm/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Chernarus/description.ext b/Sources/mpmissions/epoch.Chernarus/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Chernarus/description.ext +++ b/Sources/mpmissions/epoch.Chernarus/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Chernarus/init/client_init.sqf b/Sources/mpmissions/epoch.Chernarus/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Chernarus/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Chernarus/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/description.ext b/Sources/mpmissions/epoch.Chernarus_Summer/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Chernarus_Summer/description.ext +++ b/Sources/mpmissions/epoch.Chernarus_Summer/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/init/client_init.sqf b/Sources/mpmissions/epoch.Chernarus_Summer/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus_Summer/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Chernarus_Summer/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Chernarus_Summer/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Desert_E/description.ext b/Sources/mpmissions/epoch.Desert_E/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Desert_E/description.ext +++ b/Sources/mpmissions/epoch.Desert_E/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Desert_E/init/client_init.sqf b/Sources/mpmissions/epoch.Desert_E/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Desert_E/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Desert_E/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Desert_E/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Desert_E/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Esseker/description.ext b/Sources/mpmissions/epoch.Esseker/description.ext index 20b1bdac..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Esseker/description.ext +++ b/Sources/mpmissions/epoch.Esseker/description.ext @@ -24,7 +24,7 @@ debriefing = 0; enableDebugConsole = 0; joinUnassigned = 0; respawnOnStart = 0; -forceRotorLibSimulation = 0; +forceRotorLibSimulation = 1; corpseManagerMode = 1; corpseLimit = 10; @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Esseker/init/client_init.sqf b/Sources/mpmissions/epoch.Esseker/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Esseker/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Esseker/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Esseker/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Esseker/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Mountains_ACR/description.ext b/Sources/mpmissions/epoch.Mountains_ACR/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Mountains_ACR/description.ext +++ b/Sources/mpmissions/epoch.Mountains_ACR/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Mountains_ACR/init/client_init.sqf b/Sources/mpmissions/epoch.Mountains_ACR/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Mountains_ACR/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Mountains_ACR/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Mountains_ACR/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Mountains_ACR/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Porto/System/player_login.fsm b/Sources/mpmissions/epoch.Porto/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Porto/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Porto/description.ext b/Sources/mpmissions/epoch.Porto/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Porto/description.ext +++ b/Sources/mpmissions/epoch.Porto/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Porto/init/client_init.sqf b/Sources/mpmissions/epoch.Porto/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Porto/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Porto/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Porto/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Porto/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/description.ext b/Sources/mpmissions/epoch.ProvingGrounds_PMC/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.ProvingGrounds_PMC/description.ext +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/client_init.sqf b/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/fn_postinit.sqf b/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Sara/System/player_login.fsm b/Sources/mpmissions/epoch.Sara/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Sara/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Sara/description.ext b/Sources/mpmissions/epoch.Sara/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Sara/description.ext +++ b/Sources/mpmissions/epoch.Sara/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Sara/init/client_init.sqf b/Sources/mpmissions/epoch.Sara/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Sara/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Sara/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Sara/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Sara/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.SaraLite/description.ext b/Sources/mpmissions/epoch.SaraLite/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.SaraLite/description.ext +++ b/Sources/mpmissions/epoch.SaraLite/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.SaraLite/init/client_init.sqf b/Sources/mpmissions/epoch.SaraLite/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.SaraLite/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.SaraLite/init/fn_postinit.sqf b/Sources/mpmissions/epoch.SaraLite/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.SaraLite/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Sara_dbe1/description.ext b/Sources/mpmissions/epoch.Sara_dbe1/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Sara_dbe1/description.ext +++ b/Sources/mpmissions/epoch.Sara_dbe1/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Sara_dbe1/init/client_init.sqf b/Sources/mpmissions/epoch.Sara_dbe1/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Sara_dbe1/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Sara_dbe1/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Sara_dbe1/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Sara_dbe1/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Shapur_BAF/description.ext b/Sources/mpmissions/epoch.Shapur_BAF/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Shapur_BAF/description.ext +++ b/Sources/mpmissions/epoch.Shapur_BAF/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Shapur_BAF/init/client_init.sqf b/Sources/mpmissions/epoch.Shapur_BAF/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Shapur_BAF/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Shapur_BAF/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Shapur_BAF/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Shapur_BAF/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Stratis/description.ext b/Sources/mpmissions/epoch.Stratis/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Stratis/description.ext +++ b/Sources/mpmissions/epoch.Stratis/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Stratis/init/client_init.sqf b/Sources/mpmissions/epoch.Stratis/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Stratis/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Stratis/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Stratis/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Stratis/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Takistan/description.ext b/Sources/mpmissions/epoch.Takistan/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Takistan/description.ext +++ b/Sources/mpmissions/epoch.Takistan/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Takistan/init/client_init.sqf b/Sources/mpmissions/epoch.Takistan/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Takistan/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Takistan/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Takistan/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Takistan/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.VR/System/player_login.fsm b/Sources/mpmissions/epoch.VR/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.VR/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.VR/description.ext b/Sources/mpmissions/epoch.VR/description.ext index ae92cce3..8783e3aa 100644 --- a/Sources/mpmissions/epoch.VR/description.ext +++ b/Sources/mpmissions/epoch.VR/description.ext @@ -50,52 +50,13 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; }; }; -class CfgEpochClient -{ - epochVersion = "0.3.7.0"; - - sapperRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper - droneRngChance = 100; // increase number to reduce chances and reduce to increase. Default 100 = // 2% chance (+ 4% chance if in city) (1% - 2% Half if using silencer) to spawn drone if shot fired - - buildingNearbyMilitary = 0; //1 to allow building nearby - buildingNearbyMilitaryRange = 300; //Define radius of blocked area - - buildingRequireJammer = 0; // 1 = to allow building without a jammer - buildingCountLimit = 200; // how many objects can be built within range of a jammer - buildingJammerRange = 75; // jammer range in meters - - EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."}; - - // #include "\x\addons\a3_epoch_config\Configs\CfgEpochClient\VR.hpp" - - class vr { - Rocks[] = { - }; - ATM[] = { - }; - Water[] = { - }; - Trash[] = { - }; - Trees[] = { - }; - Bushes[] = { - }; - Cinder[] = { - }; - Wrecks[] = { - }; - }; - - -}; - class CfgEpochSapper { detonateDistMax = 8; //Random distance between 3m and this number at which sapper detonates. Min value = 4 diff --git a/Sources/mpmissions/epoch.VR/init/client_init.sqf b/Sources/mpmissions/epoch.VR/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.VR/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.VR/init/fn_postinit.sqf b/Sources/mpmissions/epoch.VR/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.VR/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Woodland_ACR/description.ext b/Sources/mpmissions/epoch.Woodland_ACR/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Woodland_ACR/description.ext +++ b/Sources/mpmissions/epoch.Woodland_ACR/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Woodland_ACR/init/client_init.sqf b/Sources/mpmissions/epoch.Woodland_ACR/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Woodland_ACR/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Woodland_ACR/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Woodland_ACR/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Woodland_ACR/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.Zargabad/description.ext b/Sources/mpmissions/epoch.Zargabad/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.Zargabad/description.ext +++ b/Sources/mpmissions/epoch.Zargabad/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.Zargabad/init/client_init.sqf b/Sources/mpmissions/epoch.Zargabad/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.Zargabad/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.Zargabad/init/fn_postinit.sqf b/Sources/mpmissions/epoch.Zargabad/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.Zargabad/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true diff --git a/Sources/mpmissions/epoch.utes/System/player_login.fsm b/Sources/mpmissions/epoch.utes/System/player_login.fsm new file mode 100644 index 00000000..9426567f --- /dev/null +++ b/Sources/mpmissions/epoch.utes/System/player_login.fsm @@ -0,0 +1,1398 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; +item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; +item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; +item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; +item5[] = {"Check_Player_UID",2,250,-25.000000,125.000000,75.000000,175.000000,0.000000,"Check Player UID"}; +item6[] = {"PlayerUID_Okay",4,218,-150.000000,175.000000,-50.000000,225.000000,10.000000,"PlayerUID" \n "Okay"}; +item7[] = {"Wrong_Version",4,218,125.000000,-75.000000,225.000000,-25.000000,10.000000,"Wrong" \n "Version"}; +item8[] = {"",7,210,471.000061,-54.000099,478.999939,-45.999901,0.000000,""}; +item9[] = {"ERROR_Wrong_Version",2,250,275.000000,-75.000000,375.000000,-25.000000,0.000000,"ERROR" \n "Wrong Version" \n "Epoch"}; +item10[] = {"Disconnect",2,250,600.000000,1225.000000,700.000000,1275.000000,0.000000,"Disconnect"}; +item11[] = {"Server_Okay",4,218,-125.000000,425.000000,-25.000000,475.000000,0.000000,"Server" \n "Okay"}; +item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,0.000000,"Empty" \n "PlayerUID"}; +item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"}; +item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""}; +item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"}; +item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"}; +item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"}; +item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"}; +item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"}; +item20[] = {"ERROR_Server_not",2,250,275.000000,875.000000,375.000000,925.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item21[] = {"",7,210,471.000000,895.999939,479.000000,904.000061,0.000000,""}; +item22[] = {"Timeout_No_Respo",4,218,125.000000,775.000000,225.000000,825.000000,0.000000,"Timeout" \n "No Response"}; +item23[] = {"Wrong_Server_Ver",4,218,125.000000,475.000000,225.000000,525.000000,10.000000,"Wrong" \n "Server Version"}; +item24[] = {"true",8,218,-150.000000,1125.000000,-50.000000,1175.000000,0.000000,"true"}; +item25[] = {"ERROR_Wrong_Server",2,250,275.000000,475.000000,375.000000,525.000000,0.000000,"ERROR" \n "Wrong" \n "Server Version"}; +item26[] = {"Display_Message",4,218,600.000000,1150.000000,700.000000,1200.000000,0.000000,"" \n "Display Message" \n "Wait..."}; +item27[] = {"Setup_Player_Obj",2,250,-25.000000,975.000000,75.000000,1025.000000,0.000000,"Setup Player" \n "Object"}; +item28[] = {"Check_if_Player",4,218,750.000000,1225.000000,850.000000,1275.000000,0.000000,"Check if" \n "Player got Kicked"}; +item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000,0.000000,"Preload" \n "done"}; +item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; +item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; +item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; +item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; +item37[] = {"ERROR_Server_not_1",2,250,275.000000,375.000000,375.000000,425.000000,0.000000,"ERROR" \n "Server not Ready"}; +item38[] = {"",7,210,471.000000,396.000000,479.000000,404.000000,0.000000,""}; +item39[] = {"Check_Server_1",2,250,-25.000000,225.000000,75.000000,275.000000,0.000000,"Check Server"}; +item40[] = {"Timeout_No_Respo",4,218,125.000000,225.000000,225.000000,275.000000,0.000000,"Timeout" \n "No Response"}; +item41[] = {"ERROR_Server_not_2",2,250,275.000000,225.000000,375.000000,275.000000,0.000000,"ERROR" \n "Server not Ready"}; +item42[] = {"",7,210,471.000000,246.000031,479.000000,253.999969,0.000000,""}; +item43[] = {"Reject_without_B",1,250,900.000000,1225.000000,1000.000000,1275.000000,0.000000,"Reject without" \n "BattlEye"}; +item44[] = {"true",8,218,-150.000000,-25.000000,-50.000000,25.000000,0.000000,"true"}; +item45[] = {"Arma_Version_Che",2,250,-25.000000,25.000000,75.000000,75.000000,0.000000,"Arma Version" \n "Check"}; +item46[] = {"Outdated_Version",4,218,125.000000,25.000000,225.000000,75.000000,10.000000,"Outdated" \n "Version"}; +item47[] = {"ERROR_Wrong_Version_1",2,250,275.000000,25.000000,375.000000,75.000000,0.000000,"ERROR" \n "Wrong Version" \n "ArmA"}; +item48[] = {"",7,210,471.000061,45.999908,478.999939,54.000092,0.000000,""}; +item49[] = {"new_player_____p",4,218,-150.000000,1025.000000,-50.000000,1075.000000,0.000000,"new player == " \n "player"}; +item50[] = {"Setup_EH_s_and_H",2,250,-25.000000,1175.000000,75.000000,1225.000000,0.000000,"Setup EH's" \n "and" \n "HitPoints"}; +item51[] = {"no_weapons",4,218,-25.000000,1275.000000,75.000000,1325.000000,0.000000,"no weapons"}; +item52[] = {"Process",2,250,-25.000000,1375.000000,75.000000,1425.000000,0.000000,"Process"}; +item53[] = {"Has_Current_Weap",4,218,100.000000,1175.000000,200.000000,1225.000000,10.000000,"Has" \n "Current" \n "Weapon"}; +item54[] = {"Find_Active_Weap",2,250,225.000000,1175.000000,325.000000,1225.000000,0.000000,"Find" \n "Active" \n "Weapon"}; +item55[] = {"Current_Weapon_Not",4,218,150.000000,1225.000000,250.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Not Selected"}; +item56[] = {"Current_Weapon_S",4,218,300.000000,1225.000000,400.000000,1275.000000,0.000000,"Current" \n "Weapon" \n "Selected"}; +item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000,0.000000,"Select" \n "Weapon"}; +item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; +item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; +item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; +item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; +item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; +item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; +item65[] = {"Start_Loading_Sc",2,250,-25.000000,-175.000000,75.000000,-125.000000,0.000000,"Start Loading" \n "Screen"}; +item66[] = {"freshServer",4,218,-325.000000,225.000000,-225.000000,275.000000,0.000000,"freshServer"}; +item67[] = {"Update_Loadingscreen",2,250,-325.000000,300.000000,-225.000000,350.000000,0.000000,"Update" \n "Loadingscreen" \n "Message"}; +item68[] = {"true",8,218,-150.000000,300.000000,-50.000000,350.000000,0.000000,"true"}; +item69[] = {"Timeout_",4,218,125.000000,975.000000,225.000000,1025.000000,0.000000,"" \n "Timeout" \n ""}; +item70[] = {"ERROR_Player_Setup",2,250,275.000000,975.000000,375.000000,1025.000000,0.000000,"ERROR" \n "Player Setup" \n "Invalid"}; +item71[] = {"",7,210,471.000000,996.000000,479.000000,1004.000000,0.000000,""}; +item72[] = {"Server_Version_C",2,250,-25.000000,475.000000,75.000000,525.000000,0.000000,"Server Version" \n "Check"}; +item73[] = {"Version_Okay",4,218,-125.000000,525.000000,-25.000000,575.000000,0.000000,"Version" \n "Okay"}; +item74[] = {"",7,210,471.000000,496.000000,479.000000,504.000000,0.000000,""}; +item75[] = {"ERROR_Server_not_3",2,250,275.000000,575.000000,375.000000,625.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +item76[] = {"",7,210,471.000000,596.000000,479.000000,604.000000,0.000000,""}; +item77[] = {"new_character",4,218,-250.000000,675.000000,-150.000000,725.000000,10.000000,"new" \n "character"}; +item78[] = {"Hive_Response",4,218,-125.000000,625.000000,-25.000000,675.000000,0.000000,"Hive" \n "Response"}; +item79[] = {"load_old_charact",4,218,-125.000000,725.000000,-25.000000,775.000000,0.000000,"load old" \n "character"}; +item80[] = {"Process_2",2,250,-25.000000,675.000000,75.000000,725.000000,0.000000,"Process"}; +item81[] = {"Open_Gender_Selection",2,250,-400.000000,675.000000,-300.000000,725.000000,0.000000,"Open Gender" \n "Selection Dialog"}; +item82[] = {"Reopen_when_client",4,218,-400.000000,600.000000,-300.000000,650.000000,0.000000,"Reopen" \n "when client hit" \n "escape"}; +item83[] = {"Gender_Selected",4,218,-450.000000,750.000000,-350.000000,800.000000,10.000000,"Gender" \n "Selected"}; +item84[] = {"Timeout",4,218,-350.000000,750.000000,-250.000000,800.000000,0.000000,"Timeout"}; +item85[] = {"Send_character_s",2,250,-400.000000,825.000000,-300.000000,875.000000,0.000000,"Send" \n "character" \n "selection"}; +item86[] = {"Process_3",2,250,-25.000000,775.000000,75.000000,825.000000,0.000000,"Process"}; +item87[] = {"ERROR_Server_not_4",2,250,275.000000,775.000000,375.000000,825.000000,0.000000,"ERROR" \n "Server not" \n "Response"}; +link0[] = {0,62}; +link1[] = {2,3}; +link2[] = {3,7}; +link3[] = {3,44}; +link4[] = {4,5}; +link5[] = {5,6}; +link6[] = {5,12}; +link7[] = {6,39}; +link8[] = {7,9}; +link9[] = {8,48}; +link10[] = {9,8}; +link11[] = {10,28}; +link12[] = {11,72}; +link13[] = {12,13}; +link14[] = {13,14}; +link15[] = {14,42}; +link16[] = {15,20}; +link17[] = {16,60}; +link18[] = {17,24}; +link19[] = {18,19}; +link20[] = {18,78}; +link21[] = {19,75}; +link22[] = {20,21}; +link23[] = {21,71}; +link24[] = {22,87}; +link25[] = {23,25}; +link26[] = {24,50}; +link27[] = {25,74}; +link28[] = {26,10}; +link29[] = {27,49}; +link30[] = {27,69}; +link31[] = {28,43}; +link32[] = {29,1}; +link33[] = {31,21}; +link34[] = {32,33}; +link35[] = {33,26}; +link36[] = {34,35}; +link37[] = {35,11}; +link38[] = {35,36}; +link39[] = {36,37}; +link40[] = {37,38}; +link41[] = {38,74}; +link42[] = {39,34}; +link43[] = {39,40}; +link44[] = {39,66}; +link45[] = {40,41}; +link46[] = {41,42}; +link47[] = {42,38}; +link48[] = {44,45}; +link49[] = {45,4}; +link50[] = {45,46}; +link51[] = {46,47}; +link52[] = {47,48}; +link53[] = {48,14}; +link54[] = {49,17}; +link55[] = {50,51}; +link56[] = {50,53}; +link57[] = {51,52}; +link58[] = {52,29}; +link59[] = {53,54}; +link60[] = {54,55}; +link61[] = {54,56}; +link62[] = {55,57}; +link63[] = {56,59}; +link64[] = {57,58}; +link65[] = {58,52}; +link66[] = {59,58}; +link67[] = {60,15}; +link68[] = {60,61}; +link69[] = {61,27}; +link70[] = {62,63}; +link71[] = {63,64}; +link72[] = {64,65}; +link73[] = {65,2}; +link74[] = {66,67}; +link75[] = {67,68}; +link76[] = {68,39}; +link77[] = {69,70}; +link78[] = {70,71}; +link79[] = {71,32}; +link80[] = {72,23}; +link81[] = {72,73}; +link82[] = {73,18}; +link83[] = {74,76}; +link84[] = {75,76}; +link85[] = {76,31}; +link86[] = {77,81}; +link87[] = {78,80}; +link88[] = {79,86}; +link89[] = {80,77}; +link90[] = {80,79}; +link91[] = {81,82}; +link92[] = {81,83}; +link93[] = {81,84}; +link94[] = {82,81}; +link95[] = {83,85}; +link96[] = {84,85}; +link97[] = {85,79}; +link98[] = {86,16}; +link99[] = {86,22}; +link100[] = {87,31}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; +window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +*//*%FSM*/ +class FSM +{ + fsmName = "Epoch Login"; + class States + { + /*%FSM*/ + class INIT + { + name = "INIT"; + init = /*%FSM*/"titleCut ["""", ""BLACK FADED"", 1337];" \n + "0 fadeSound 0;" \n + "player enableSimulation false;" \n + "" \n + "_debug = true;" \n + "_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Init"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class FINISH + { + name = "FINISH"; + init = /*%FSM*/"[] spawn {" \n + " disableSerialization;" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " _display = findDisplay 46;" \n + " {" \n + " _display displayAddEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + " } forEach ([""CfgEpochClient"", ""displayAddEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + " " \n + " player switchMove """";" \n + "};" \n + "" \n + "3 fadeSound 1;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Finish!"";" \n + "};" \n + "" \n + "" \n + "" \n + "player enableSimulation true;" \n + "" \n + "titleCut ["""", ""BLACK IN"", 1];" \n + "1338 cutText ["""",""PLAIN"",0]; " \n + "" \n + "progressLoadingScreen 1.0;" \n + "" \n + "endLoadingScreen;" \n + "EPOCH_loadingScreenDone = true;" \n + "" \n + "hintSilent ""Worked"" "/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Check + { + name = "Version_Check"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Version Check"";" \n + "};" \n + "" \n + "// SHOULD BE:" \n + "_epoch_assets0 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets"");" \n + "_epoch_assets1 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_1"");" \n + "_epoch_assets2 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""epoch_objects"");" \n + "_epoch_assets3 = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_assets_3"");" \n + "_epoch_config = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_config"");" \n + "_epoch_language = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_language"");" \n + "_epoch_underground = getText(configFile >> ""Epoch"" >> ""Version"" >> ""Underground_Epoch"");" \n + "_epoch_vehicles = getText(configFile >> ""Epoch"" >> ""Version"" >> ""A3_epoch_vehicles"");" \n + "_epoch_weapons = getText(configFile >> ""Epoch"" >> ""Version"" >> ""a3_epoch_weapons"");" \n + "" \n + "" \n + "// IS:" \n + "_my_epoch_assets0 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets"" >> ""epochVersion"");" \n + "_my_epoch_assets1 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_1"" >> ""epochVersion"");" \n + "_my_epoch_assets2 = getText(configFile >> ""CfgPatches"" >> ""epoch_objects"" >> ""epochVersion"");" \n + "_my_epoch_assets3 = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_assets_3"" >> ""epochVersion"");" \n + "_my_epoch_config = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_config"" >> ""epochVersion"");" \n + "_my_epoch_language = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_language"" >> ""epochVersion"");" \n + "_my_epoch_underground = getText(configFile >> ""CfgPatches"" >> ""Underground_Epoch"" >> ""epochVersion"");" \n + "_my_epoch_vehicles = getText(configFile >> ""CfgPatches"" >> ""A3_epoch_vehicles"" >> ""epochVersion"");" \n + "_my_epoch_weapons = getText(configFile >> ""CfgPatches"" >> ""a3_epoch_weapons"" >> ""epochVersion"");" \n + "" \n + "progressLoadingScreen 0.1;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_epoch_assets0 != _epoch_assets0 ||" \n + "_my_epoch_assets1 != _epoch_assets1 ||" \n + "_my_epoch_assets2 != _epoch_assets2 ||" \n + "_my_epoch_assets3 != _epoch_assets3 ||" \n + "_my_epoch_config != _epoch_config ||" \n + "_my_epoch_language != _epoch_language ||" \n + "_my_epoch_underground != _epoch_underground ||" \n + "_my_epoch_vehicles != _epoch_vehicles ||" \n + "_my_epoch_weapons != _epoch_weapons"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class true + { + priority = 0.000000; + to="Arma_Version_Che"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Player_UID + { + name = "Check_Player_UID"; + init = /*%FSM*/"if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check PlayerUID"";" \n + "};" \n + "" \n + "_playerUID = getPlayerUID player;" \n + "" \n + "progressLoadingScreen 0.2;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class PlayerUID_Okay + { + priority = 10.000000; + to="Check_Server_1"; + precondition = /*%FSM*/"!isNil ""_playerUID"""/*%FSM*/; + condition=/*%FSM*/"_playerUID != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Empty_PlayerUID + { + priority = 0.000000; + to="ERROR_PlayerUID"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version + { + name = "ERROR_Wrong_Version"; + init = /*%FSM*/"_msg = ""You have an outdated version of Epoch"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_EPOCHVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_EPOCHVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Disconnect + { + name = "Disconnect"; + init = /*%FSM*/"endLoadingScreen;" \n + "1338 cutText [_msg,""PLAIN"",0]; " \n + "deleteVehicle player;" \n + "call _rejectPlayer;" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Check_if_Player + { + priority = 0.000000; + to="Reject_without_B"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 2"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_PlayerUID + { + name = "ERROR_PlayerUID"; + init = /*%FSM*/"_msg = ""Can not setup Player Object! (Error 01)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_UID = true;" \n + " publicVariableServer ""PLAYER_REJECT_UID"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Var + { + name = "Setup_Player_Var"; + init = /*%FSM*/"diag_log format[""DEBUG TIME WAITED: %1"", (diag_tickTime - _myTime)];" \n + "{" \n + " missionNamespace setVariable[(format[""EPOCH_player%1"", EPOCH_customVars select _forEachIndex]), _x];" \n + "} forEach _playerVariables;" \n + "" \n + """Loading Player Variables... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "EPOCH_lastPlayerPos = getPosATL vehicle player;" \n + "" \n + "progressLoadingScreen 0.7;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Variables"";" \n + "};" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Setup_EH_s_and_H"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Request_Hive + { + name = "Request_Hive"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + "Epoch_my_Group = [];" \n + "" \n + "player remoteExec [""EPOCH_server_checkPlayer"",2];" \n + "" \n + "" \n + """Loading Player Data... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.5;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Hive_Response + { + priority = 0.000000; + to="Process_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_checkPlayer_PVC"""/*%FSM*/; + action=/*%FSM*/"_newChar = EPOCH_checkPlayer_PVC;" \n + "EPOCH_checkPlayer_PVC = nil;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not + { + name = "ERROR_Server_not"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NoResponse2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NoResponse2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Server + { + name = "ERROR_Wrong_Server"; + init = /*%FSM*/"_msg = format[""Server and Client running with different Version! (You: %1 // Server: %2)"",getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version""),_serverVersion];" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ServerVersion = true;" \n + " publicVariableServer ""PLAYER_REJECT_ServerVersion"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_Player_Obj + { + name = "Setup_Player_Obj"; + init = /*%FSM*/"_ply = player;" \n + "_group = group player;" \n + "" \n + "player reveal _playerObject;" \n + "_playerPos = getposATL _playerObject;" \n + "" \n + "selectPlayer _playerObject;" \n + "" \n + "deleteVehicle _ply;" \n + "deleteGroup _group;" \n + "" \n + """Loading Player Body... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.8;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup Player Object"";" \n + "};" \n + "" \n + "_myTime = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_ + { + priority = 0.000000; + to="ERROR_Player_Setup"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 60"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class new_player_____p + { + priority = 0.000000; + to="Setup_Player_Var"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_playerObject == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Display_Message + { + name = "Display_Message"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n + " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n + "};" \n + "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "_myTime = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Display_Message + { + priority = 0.000000; + to="Disconnect"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 10"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server + { + name = "Check_Server"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Check Server"";" \n + "};" \n + """Checking Server... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.4;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Server_not_worki + { + priority = 10.000000; + to="ERROR_Server_not_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_BADHIVE""" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Okay + { + priority = 0.000000; + to="Server_Version_C"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""Epoch_ServerVersion"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_1 + { + name = "ERROR_Server_not_1"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 03)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady2 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady2"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_Server_1 + { + name = "Check_Server_1"; + init = /*%FSM*/"progressLoadingScreen 0.3;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_2"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 180"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class freshServer + { + priority = 0.000000; + to="Update_Loadingscreen"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"uiNamespace getVariable ['Epoch_freshServer', false]"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Ready + { + priority = 0.000000; + to="Check_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_SERVER"""/*%FSM*/; + action=/*%FSM*/"_serverUptime = EPOCH_SERVER;" \n + "EPOCH_SERVER = nil;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_2 + { + name = "ERROR_Server_not_2"; + init = /*%FSM*/"_msg = ""Server not Ready (Error 02)"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_NotReady1 = true;" \n + " publicVariableServer ""PLAYER_REJECT_NotReady1"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reject_without_B + { + name = "Reject_without_B"; + init = /*%FSM*/"[] spawn {" \n + " waitUntil{!isNull (findDisplay 46)};" \n + " waitUntil {" \n + " (findDisplay 46) closeDisplay 0;" \n + " isNull (findDisplay 46)" \n + " };" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Arma_Version_Che + { + name = "Arma_Version_Che"; + init = /*%FSM*/"progressLoadingScreen 0.15;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Outdated_Version + { + priority = 10.000000; + to="ERROR_Wrong_Version_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"productVersion select 2 < getNumber(configFile >> ""CfgMods"" >> ""Epoch"" >> ""ArmAVersion"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Player_Object_Re + { + priority = 0.000000; + to="Check_Player_UID"; + precondition = /*%FSM*/"!isNull player"/*%FSM*/; + condition=/*%FSM*/"player == player"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Wrong_Version_1 + { + name = "ERROR_Wrong_Version_1"; + init = /*%FSM*/"_msg = ""You have an outdated version of ArmA 3"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_ARMAVERSION = true;" \n + " publicVariableServer ""PLAYER_REJECT_ARMAVERSION"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Setup_EH_s_and_H + { + name = "Setup_EH_s_and_H"; + init = /*%FSM*/"{" \n + " player addEventHandler [_x,([""CfgEpochClient"", _x, """"] call EPOCH_fnc_returnConfigEntryV2)];" \n + "} forEach ([""CfgEpochClient"", ""addEventHandler"", []] call EPOCH_fnc_returnConfigEntryV2);" \n + "" \n + "if (count EPOCH_playerHitPoints isEqualTo count ((getAllHitPointsDamage player) param [0,[]])) then {" \n + " {" \n + " player setHitIndex [_forEachIndex, _x];" \n + " }forEach EPOCH_playerHitPoints;" \n + "};" \n + "" \n + "[] spawn EPOCH_masterLoop;" \n + "true call EPOCH_fnc_Weather;" \n + "[5,100] spawn EPOCH_niteLight;" \n + "" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Setup EH's"";" \n + "};" \n + "" \n + """Loading... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.9;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Has_Current_Weap + { + priority = 10.000000; + to="Find_Active_Weap"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon != """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class no_weapons + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_currentWeapon == """""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process + { + name = "Process"; + init = /*%FSM*/"progressLoadingScreen 0.975;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Preload_done + { + priority = 0.000000; + to="FINISH"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"preloadCamera _playerPos"/*%FSM*/; + action=/*%FSM*/"call compile _playerGroupOnline;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Find_Active_Weap + { + name = "Find_Active_Weap"; + init = /*%FSM*/"_activeWeapon = currentWeapon player;" \n + "progressLoadingScreen 0.95;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Current_Weapon_S + { + priority = 0.000000; + to="Do_nothing"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon == _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Current_Weapon_Not + { + priority = 0.000000; + to="Select_Weapon"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_activeWeapon != _currentWeapon"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Select_Weapon + { + name = "Select_Weapon"; + init = /*%FSM*/"_currentWeapon spawn {" \n + " uiSleep 1; " \n + " player selectWeapon _this;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Do_nothing + { + name = "Do_nothing"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Process"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Check_New_Player + { + name = "Check_New_Player"; + init = /*%FSM*/"_myTime = diag_tickTime;" \n + "" \n + """Loading Player Inventory... Please wait!"" call Epoch_updateLoadingScreen;" \n + "progressLoadingScreen 0.6;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class check_new__player + { + priority = 0.000000; + to="Setup_Player_Obj"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_1 + { + name = "Process_1"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wait_ArmA_Loading + { + priority = 0.000000; + to="Start_Loading_Sc"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"{!isnull _x} count ((uinamespace getvariable ""loading_displays"") - [finddisplay 18]) == 0"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Start_Loading_Sc + { + name = "Start_Loading_Sc"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + "if (_debug) then {" \n + " diag_log ""EPOCH-LOGIN: Start Loadingscreen"";" \n + "};" \n + """Starting Epoch... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Version_Check"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Update_Loadingscreen + { + name = "Update_Loadingscreen"; + init = /*%FSM*/"uiNamespace setVariable ['Epoch_freshServer', false];" \n + "" \n + """Server initializing... Please wait!"" call Epoch_updateLoadingScreen;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Check_Server_1"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Player_Setup + { + name = "ERROR_Player_Setup"; + init = /*%FSM*/"_msg = ""Problem setting up player"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_InvaildSetup = true;" \n + " publicVariableServer ""PLAYER_REJECT_InvaildSetup"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Server_Version_C + { + name = "Server_Version_C"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Wrong_Server_Ver + { + priority = 10.000000; + to="ERROR_Wrong_Server"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"Epoch_ServerVersion != getText(configFile >> ""CfgMods"" >> ""Epoch"" >> ""version"")"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Version_Okay + { + priority = 0.000000; + to="Request_Hive"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_3 + { + name = "ERROR_Server_not_3"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveNotResponse = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveNotResponse"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_2 + { + name = "Process_2"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class new_character + { + priority = 10.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_newChar"/*%FSM*/; + action=/*%FSM*/"endLoadingScreen;" \n + "_myGenderTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Open_Gender_Selection + { + name = "Open_Gender_Selection"; + init = /*%FSM*/"createdialog ""SelectGender"";"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Gender_Selected + { + priority = 10.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Timeout + { + priority = 0.000000; + to="Send_character_s"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _myGenderTime) > 30)"/*%FSM*/; + action=/*%FSM*/"EPOCH_PlayerIsMale = true;" \n + "closeDialog 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Reopen_when_client + { + priority = 0.000000; + to="Open_Gender_Selection"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!dialog && isNil ""EPOCH_PlayerIsMale"""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Send_character_s + { + name = "Send_character_s"; + init = /*%FSM*/"startLoadingScreen ["""",""EpochLoadingScreen""];" \n + """Gender Selected... Please wait!"" call Epoch_updateLoadingScreen;" \n + "" \n + "[player,EPOCH_PlayerIsMale] remoteExec [""EPOCH_server_loadPlayer"",2];" \n + "EPOCH_PlayerIsMale = nil;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class load_old_charact + { + priority = 0.000000; + to="Process_3"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/"_myTime = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Process_3 + { + name = "Process_3"; + init = /*%FSM*/""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Timeout_No_Respo + { + priority = 0.000000; + to="ERROR_Server_not_4"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _myTime) > 120"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Response + { + priority = 0.000000; + to="Check_New_Player"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; + action=/*%FSM*/"_array = EPOCH_C_SET;" \n + "EPOCH_C_SET = nil;" \n + "_playerObject = _array deleteAt 0;" \n + "_playerVariables = _array deleteAt 0;" \n + "_currentWeapon = _array deleteAt 0;" \n + "_magCount = _array deleteAt 0;" \n + "Epoch_my_GroupUID = _array deleteAt 0;" \n + "Epoch_canBeRevived = _array deleteAt 0;" \n + "Epoch_personalToken = _array deleteAt 0;" \n + "reverse _serverUptime;" \n + "_serverUptime pushBack (_array deleteAt 0);" \n + "reverse _serverUptime;" \n + "_serverUptime call EPOCH_client_publicEH;" \n + "_playerGroupOnline = _array deleteAt 0;" \n + "" \n + ""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class ERROR_Server_not_4 + { + name = "ERROR_Server_not_4"; + init = /*%FSM*/"_msg = ""Authentication Failed, Disconnect and try again"";" \n + "_msg call Epoch_updateLoadingScreen;" \n + "diag_log _msg;" \n + "" \n + "_rejectPlayer = {" \n + " PLAYER_REJECT_HiveLoadChar = true;" \n + " publicVariableServer ""PLAYER_REJECT_HiveLoadChar"";" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class true + { + priority = 0.000000; + to="Display_Message"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="INIT"; + finalStates[] = + { + "FINISH", + "Reject_without_B", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/Sources/mpmissions/epoch.utes/description.ext b/Sources/mpmissions/epoch.utes/description.ext index cfe65cba..8783e3aa 100644 --- a/Sources/mpmissions/epoch.utes/description.ext +++ b/Sources/mpmissions/epoch.utes/description.ext @@ -50,6 +50,7 @@ class cfgFunctions }; class postinit { + file = "init\fn_postinit.sqf"; postInit = 1; }; }; diff --git a/Sources/mpmissions/epoch.utes/init/client_init.sqf b/Sources/mpmissions/epoch.utes/init/client_init.sqf new file mode 100644 index 00000000..4a32e342 --- /dev/null +++ b/Sources/mpmissions/epoch.utes/init/client_init.sqf @@ -0,0 +1,76 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize variables used client side and start login FSM + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/client_init.sqf +*/ +//Variables +EPOCH_CraftingItem = ""; +EPOCH_ESP_TARGETS = []; +EPOCH_ESPMAP_TARGETS = []; +EPOCH_ESPGROUPS = []; +EPOCH_ESPGROUPCOLORS = []; +EPOCH_ESP_PLAYER = false; +EPOCH_ESP_VEHICLES = false; +EPOCH_ESP_VEHICLEPLAYER = []; +EPOCH_group_level_img = ["x\addons\a3_epoch_code\data\owner.paa", "x\addons\a3_epoch_code\data\mod.paa", "x\addons\a3_epoch_code\data\member.paa"]; +if (isNil 'EPOCH_diag_fps') then { + EPOCH_diag_fps = 0; +}; +EPOCH_playerIsSwimming = false; +EPOCH_lastTrash = diag_tickTime; +EPOCH_tradeDone = false; +EPOCH_bankBalance = 0; +EPOCH_antiWallCount = 0; +EPOCH_lastTargetTime = diag_tickTime; +EPOCH_lastSave = diag_tickTime; +EPOCH_arr_countdown = []; +EP_light = objNull; +EPOCH_p2ptradeTarget = objNull; +EPOCH_lastPlayerPos = getPosATL player; +EPOCH_Holstered = ""; +Epoch_invited_GroupUID = ""; +Epoch_invited_GroupName = ""; +Epoch_invited_GroupUIDs = []; +Epoch_invited_GroupUIDsPrev = []; +EPOCH_lastPlayerPos = [0,0,0]; +EPOCH_prevOffer = []; +EPOCH_drawIcon3d = false; +EPOCH_velTransform = false; +EPOCH_stabilityTarget = objNull; +EPOCH_currentVehicle = objNull; +EPOCH_currentTarget = objNull; +EPOCH_LootedBlds = []; +EPOCH_soundLevel = 1; +EPOCH_arr_interactedObjs = []; +EPOCH_buildOption = 0; +EPOCH_nearestLocations = []; +onEachFrame EPOCH_onEachFrame; + +EPOCH_LastAirDrop = time; +EPOCH_AirDropCheck = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropFreq"); +if(EPOCH_AirDropCheck < 120)then{EPOCH_AirDropCheck = 120;}; +EPOCH_AirDropChance = getNumber(missionConfigFile >> "CfgEpochAirDrop" >> "AirDropChance"); +if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;}; + +EPOCH_droneRndChance = 100; + +// Custom Keys +EPOCH_keysActionPressed = false; //prevents EH spam +0 call EPOCH_clientKeyMap; + +//ON INIT and RESPAWN +call EPOCH_clientInit; + +[] execFSM "\x\addons\a3_epoch_code\system\SPVEH.fsm"; +[] execFSM "system\player_login.fsm"; + +true diff --git a/Sources/mpmissions/epoch.utes/init/fn_postinit.sqf b/Sources/mpmissions/epoch.utes/init/fn_postinit.sqf new file mode 100644 index 00000000..8be5aa09 --- /dev/null +++ b/Sources/mpmissions/epoch.utes/init/fn_postinit.sqf @@ -0,0 +1,18 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Initalize Player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/fn_postinit.sqf +*/ +if (!isDedicated && isMultiplayer && hasInterface) then { + call compile preprocessFileLineNumbers "init\client_init.sqf"; +}; +true From 43974ceda000fcc51e5cb4d3600cc4c292cb87a5 Mon Sep 17 00:00:00 2001 From: vbawol Date: Sat, 30 Jan 2016 09:40:36 -0600 Subject: [PATCH 2/7] remove debug --- .../mpmissions/epoch.Altis.pbo | Bin 89608 -> 89558 bytes .../mpmissions/epoch.Australia.pbo | Bin 89660 -> 89639 bytes .../mpmissions/epoch.Bootcamp_ACR.pbo | Bin 89772 -> 89751 bytes .../mpmissions/epoch.Bornholm.pbo | Bin 89625 -> 89604 bytes .../mpmissions/epoch.Chernarus.pbo | Bin 89726 -> 89705 bytes .../mpmissions/epoch.Chernarus_Summer.pbo | Bin 89782 -> 89761 bytes .../mpmissions/epoch.Desert_E.pbo | Bin 89740 -> 89719 bytes .../mpmissions/epoch.Esseker.pbo | Bin 89614 -> 89593 bytes .../mpmissions/epoch.Mountains_ACR.pbo | Bin 89929 -> 89908 bytes .../mpmissions/epoch.Porto.pbo | Bin 89732 -> 89711 bytes .../mpmissions/epoch.ProvingGrounds_PMC.pbo | Bin 89820 -> 89799 bytes Server_Install_Pack/mpmissions/epoch.Sara.pbo | Bin 89891 -> 89870 bytes .../mpmissions/epoch.SaraLite.pbo | Bin 89906 -> 89885 bytes .../mpmissions/epoch.Sara_dbe1.pbo | Bin 89914 -> 89893 bytes .../mpmissions/epoch.Shapur_BAF.pbo | Bin 89756 -> 89735 bytes .../mpmissions/epoch.Stratis.pbo | Bin 89648 -> 89627 bytes .../mpmissions/epoch.Takistan.pbo | Bin 89671 -> 89650 bytes Server_Install_Pack/mpmissions/epoch.VR.pbo | Bin 89584 -> 89563 bytes .../mpmissions/epoch.Woodland_ACR.pbo | Bin 89868 -> 89847 bytes .../mpmissions/epoch.Zargabad.pbo | Bin 89809 -> 89788 bytes Server_Install_Pack/mpmissions/epoch.utes.pbo | Bin 89708 -> 89687 bytes .../epoch.Altis/System/player_login.fsm | 4 +--- .../epoch.Australia/System/player_login.fsm | 2 +- .../System/player_login.fsm | 2 +- .../epoch.Bornholm/System/player_login.fsm | 2 +- .../epoch.Chernarus/System/player_login.fsm | 2 +- .../System/player_login.fsm | 2 +- .../epoch.Desert_E/System/player_login.fsm | 2 +- .../epoch.Esseker/System/player_login.fsm | 2 +- .../System/player_login.fsm | 2 +- .../epoch.Porto/System/player_login.fsm | 2 +- .../System/player_login.fsm | 2 +- .../epoch.Sara/System/player_login.fsm | 2 +- .../epoch.SaraLite/System/player_login.fsm | 2 +- .../epoch.Sara_dbe1/System/player_login.fsm | 2 +- .../epoch.Shapur_BAF/System/player_login.fsm | 2 +- .../epoch.Stratis/System/player_login.fsm | 2 +- .../epoch.Takistan/System/player_login.fsm | 2 +- .../epoch.VR/System/player_login.fsm | 2 +- .../System/player_login.fsm | 2 +- .../epoch.Zargabad/System/player_login.fsm | 2 +- .../epoch.utes/System/player_login.fsm | 2 +- 42 files changed, 21 insertions(+), 23 deletions(-) diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index 64632717a0bf1805cda5d3dbf281ea3dd5ed1c71..ac59372482f0e044210f15003bfaee41d7c46654 100644 GIT binary patch delta 62 zcmeC!!+LEu>x8XLc{e6*SK_sL$^ZtsH`at%ZG0BDesb{f$(uPhzFs3D_V};==kraL R%eQ{hn3MV7Eq|`Z8USP39lihn delta 96 zcmcb%o3&#P>x8XLdoE4fuEd-3lmQGxF02X5+4wAO{p8F?ypz`RiDhKwl>}$zq~?_< zC@F>K7iFiWC@CpSKKOCUzDDGU-^%DScG`J*-(LKdc{3;1nw^IY0J&Bv AmH+?% diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index d4e81220ab88cbfbb7768f169cf85dcf0b997e15..997bc2ebba5dc21033c9f4689b7b977936bbae58 100644 GIT binary patch delta 64 zcmdn9hjsZL)(Kmg@@`DruEZPulmQHqZ>$Lm-}r3pdParG8xKy|Y`gLG8WDpY0S@VX T6Gd`2z13S`bkOzQ0het6f_)sf delta 89 zcmZ3!hjq^$)(Kmg_FS5{U5Pj6DFYaYTv!v9v+>#5^$Lm-}p>+1Ea!Z#Y0mzuif~1jmW!wGr5dp TGkxSgWF;l9dQ#$H5g`NsazGnp delta 89 zcmbQfmvzlv)(Kmg_FS5{U5Pj6DFYaYTv!v9v+uW~x33Y|_J8@AOqF?@!dFG&g0xtk?6~Rh6#$FyCuRTu diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index ebb983825f5173abc2e4dc52588b35e57e526c36..d7fa0b9ef2b937d1fefe695f054a573c5ecf866c 100644 GIT binary patch delta 65 zcmbQahqYx7>x8XL`8OtRSK5`CAsgd~&3+rVuMsI+mzK9< U)seU_5zc3Awl4bC?7VR^0D&zXtN;K2 delta 79 zcmZqK!#Z;h>x8XLdoNAguEd-3lmQGxF02X5+4!t$y+}r8UP*9fPHJ9>f|62reo=O6 iiqhu%4UKC>>=?Sm|HR$pKgO7OZHmD2ACKg1mjD0&Xdx{C diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index c7319bd589feb4b651d1ee1f424216dc247fc90c..ff909095fad57ff3707f2bb8bbeb78466e43669c 100644 GIT binary patch delta 65 zcmeyjhxO$i)(Kmg@^4JsuEZPulmQHqZ>$Lm-}vnPdParmf+~ztHrH=_y+-8oaZm5< Vvn*DoY|Gg_&vWInhaFqD0073zA58!N delta 86 zcmaF4hxOkc)(Kmg_FkH}U5Pj6DFYaYTv!v9v+>#c^$Lm-}p>@!)B$84QoZ}7Mv`O4A`RL91x@6 Mzf3vkhMd7i0MK3-QUCw| delta 91 zcmZ3umv!4-)(Kmg_FkH}U5Pj6DFYaYTv!v9v+4h?kQ>Oc}Gn#C^wsHF!5vRCG*K>Aiwvx8XL1ve&cSK8#zRv!_ilW>M&#z~?#(Rz T{9Z*r&&u6s6iL~_dA$Pwp0gcj delta 89 zcmeyqhqY%f>x8XL`z}q~uEd-3lmQGxF02X5+4$`5da;bmyprI|oYcG$1tq2M{G#mC t6eT5v$p?>5nSAr4$>ud1x33Y=d8C(I6K3QeKJVV%D+@F2P9A$21pveGD6#+m diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 3727f69e62aa3f2bb69fb46dd2b716135f1a7b3d..45dcddd395383236520f742646081d241a253b84 100644 GIT binary patch delta 65 zcmeC%!}@bK>x8XL1ve&cSK5`?LS@D&oB21sUL$hm@9k?- U{gvj0l>WTfnCLe1v;Xzo0I;|p82|tP delta 86 zcmeylo3(Eb>x8XL`z}q~uEd-3lmQGxF02X5+4!t}y;w$OUP*9fPHJ9>f|62reo=O6 pijtDTbU`-86PxumZeJt9JnwIn2-o!99yS}_d8_Z3PV;F_1_0j7B0>NF diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index cccc85b92c928b1b81131d71342885f5b4cdac30..3c3d2749c59b2be9e67f575a7b3b8037ed7ddbae 100644 GIT binary patch delta 65 zcmX@Pk9EsF)(Kmg3U5r@uEZPulmQHqZ>$Lm-}r3T21bSHiR_FgHrH+1zD9&iD=IIs T^yvAJZE?{h&6TEd8Fe!OiFO-? delta 79 zcmdn8kM-m})(Kmg_FbB|U5Pj6DFYaYTv!v9v+>!k4I&wtc_qP_IjMOi3Q9`h`9;~O iDN38?Z){vEVzesEwRetAkFad}{ux^?evJ0p*$MzH<02*i diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index 393274d9271f1ddea779b1c322496dd3e68c85fc..f1e628bfa1c9b54be31926a625f31ab97266416a 100644 GIT binary patch delta 58 zcmZqK%ldu~>x8XLg*PT{SKRViCAR9+0RR>V8*~5w delta 86 zcmaFAhqYxd>x8XL`!7x0uEd-3lmQGxF02X5+4$`1da;bmyprI|oYcG$1tq2M{G#mC p6eT5v>4A!jQ#KcDe7#15q4VQGW+mkbpU#@9&g+?FykhR<1ON(wBuD@N diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index 515aa5bc1d287e1cbf1f88f99f42a51310766f55..1b65a2016d4c2037cf8df59fa861f96cb66f0530 100644 GIT binary patch delta 64 zcmcb!m-YBw)(Kmg3U5r@uEZPulmQHqZ>$Lm-}uaT1Ea#^z(Z3u-`)6njfhbeoBhF> T#QNX1O1tkJN&7cx8XLMK>mHSKx8XL2QE$AuEd-3lmQGxF02X5+4yYA2Cg*lS-xG&E40cYbHCMvJ9G%E0^!H7y#v>BRK#7 diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index d48afd09c5be3244a16336e745154fbd6614df3b..c3aeae3464a69682e5ccba558b3adf3292dc044b 100644 GIT binary patch delta 69 zcmdnAk9F=o)(Kmgif&BYuEZPulmQHqZ>$Lm-}r3t21bR+jxVQ7zsJsKvN?Uz_BA3& Y^FmkKW~`VzFJs5)-D(w_c@7#f01fyZy8r+H delta 85 zcmbQck9E^N)(Kmg4qTeJU5Pj6DFYaYTv!v9v+>#D4PqIYc_qP_IjMOi3Q9`h`9;~O oDN0HTlNB#a*(|r|^%@bOTQxTnqFduQq*g7G%3i!F_`29c0M{rZ8~^|S diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index c1b200d45da62307ae05d416568e306bdb156d29..5d47e288d2c00ff0024d71d5acde7064730a3dfc 100644 GIT binary patch delta 64 zcmdnBk9Fxj)(Kmgif&BYuEZPulmQHqZ>$Lm-}r3x21bR+g;%F+w%+u5jmVQdlW(#l TOYZQWntm&MT1AGn=ixU1oL3$4 delta 79 zcmZ3wk9F5R)(Kmg4qTeJU5Pj6DFYaYTv!v9v+>#L4I&wtc_qP_IjMOi3Q9`h`9;~O iDN36sY;0UB((raulAC13kM~z!*zffD^zYG|ioXCxrX`#J diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index d12b58f1613d868f6a887a97be541b0534d28ebe..102ed55a514ae40a341fe62234720265c3623c1b 100644 GIT binary patch delta 64 zcmbQUm$iK_>x8XL#WyBySKx8XL2QN+BuEd-3lmQGxF02X5+4ziigIGppUP*9fPHJ9>f|62reo=O6 sijtDTYl+t-Nfi&xOpu{|dE&hHZuEZPulmQHqZ>$Lm-}r3ddParmA9)$4Ouxg%XtFtV!&^1Wovy3`CW~YIUP^Tn6zj)0KJ_d-v9sr diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index b864d060833eeab609da4500eeef08f870d36df4..c82ddf889d5c4fa02e502a4a0d555a25e3f98f09 100644 GIT binary patch delta 68 zcmX@Uhjr5))(Kmgif>HZuEZPulmQHqZ>$Lm-}r3DdParG6OT`syz->U=9-P$*NCWn Yyf)!vFvP delta 90 zcmdnAhxPa#)(Kmg4qlqLU5Pj6DFYaYTv!v9v+>!E^$Lm-}o$XJ)^?(jl7Igrq5wxG})}War+vP Z3d!aFLpB{}y>?n8lOf^Fu28wnb^sbf9oGN= delta 85 zcmcb;oAtwP)(Kmg4qckKU5Pj6DFYaYTv!v9v+-Htda;bmyprI|oYcG$1tq2M{G#mC o6eT5v$p;@z*?eci>op>dT!*Z9-a18v-qgQTeWTg%g`UP+02Ih2MF0Q* diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 88eeeaf9449ad1d852af59712d4892699732e90e..55f6e61c0cf884be5a5c71bc251375e1ce15df88 100644 GIT binary patch delta 64 zcmeC#$NGIQ>x8XLB{wE+SKx8XLhb~RruEd-3lmQGxF02X5+4!t>gIGppUP*9fPHJ9>f|62reo=O6 sijtDTWXBUzCP$t!*{ri^`x=qWzvuXg7@h2~mwE2}b*1@9PAi=f0EJp5kpKVy diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 8910631d3141ef9b991571c77796138df9ea5b50..3e079349492351360dd901d4643411f8726cf021 100644 GIT binary patch delta 70 zcmcb(mvzrx)(KmgN^eZuuEZPulmQHqZ>$Lm-}uaF1Ea$9g))p&rq{AFnrvp$Lm-}vnAdParG4-Zb+oV)S$8jdv4|at delta 89 zcmcb#8^x=yQmM&3U2LRGbC^G;6 diff --git a/Sources/mpmissions/epoch.Altis/System/player_login.fsm b/Sources/mpmissions/epoch.Altis/System/player_login.fsm index 9426567f..4ecbc2b7 100644 --- a/Sources/mpmissions/epoch.Altis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Altis/System/player_login.fsm @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - "hintSilent ""Worked"" "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Australia/System/player_login.fsm b/Sources/mpmissions/epoch.Australia/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Australia/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Australia/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Porto/System/player_login.fsm b/Sources/mpmissions/epoch.Porto/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Porto/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Porto/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Sara/System/player_login.fsm b/Sources/mpmissions/epoch.Sara/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Sara/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm +++ b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.VR/System/player_login.fsm b/Sources/mpmissions/epoch.VR/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.VR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.VR/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { diff --git a/Sources/mpmissions/epoch.utes/System/player_login.fsm b/Sources/mpmissions/epoch.utes/System/player_login.fsm index 9426567f..d9c106e5 100644 --- a/Sources/mpmissions/epoch.utes/System/player_login.fsm +++ b/Sources/mpmissions/epoch.utes/System/player_login.fsm @@ -261,7 +261,7 @@ class FSM "endLoadingScreen;" \n "EPOCH_loadingScreenDone = true;" \n "" \n - "hintSilent ""Worked"" "/*%FSM*/; + " "/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { From ab98877f064ae490d204ba5be014e0b7bb09396c Mon Sep 17 00:00:00 2001 From: vbawol Date: Sat, 30 Jan 2016 20:52:40 -0600 Subject: [PATCH 3/7] add pre 0.3.7 method for testing --- .../mpmissions/epoch.Altis/System/player_login.fsm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Sources/mpmissions/epoch.Altis/System/player_login.fsm b/Sources/mpmissions/epoch.Altis/System/player_login.fsm index 4ecbc2b7..4c4ffc5a 100644 --- a/Sources/mpmissions/epoch.Altis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Altis/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -34,7 +34,7 @@ item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000, item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; -item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item33[] = {"Display_Message",2,4346,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,314.041901,1103.864014,1613.338623,764.213013,586,630,1}; +window[] = {2,-1,-1,-1,-1,942,130,1422,130,3,604}; *//*%FSM*/ class FSM { @@ -406,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -642,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == magazines player}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ From 6a718de212bbfb4531fc48de27a1338bc9d19c8d Mon Sep 17 00:00:00 2001 From: vbawol Date: Sun, 31 Jan 2016 21:41:52 -0600 Subject: [PATCH 4/7] fixed typo in test --- Sources/mpmissions/epoch.Altis/System/player_login.fsm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/mpmissions/epoch.Altis/System/player_login.fsm b/Sources/mpmissions/epoch.Altis/System/player_login.fsm index 4c4ffc5a..51e595cd 100644 --- a/Sources/mpmissions/epoch.Altis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Altis/System/player_login.fsm @@ -34,7 +34,7 @@ item29[] = {"Preload_done",8,218,-150.000000,1425.000000,-50.000000,1475.000000, item30[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item31[] = {"",7,210,471.000000,796.000000,479.000000,804.000000,0.000000,""}; item32[] = {"true",8,218,425.000000,1075.000000,525.000000,1125.000000,0.000000,"true"}; -item33[] = {"Display_Message",2,4346,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; +item33[] = {"Display_Message",2,250,600.000000,1075.000000,700.000000,1125.000000,0.000000,"Display" \n "Message"}; item34[] = {"Server_Ready",4,218,-25.000000,300.000000,75.000000,350.000000,0.000000,"Server" \n "Ready"}; item35[] = {"Check_Server",2,250,-25.000000,375.000000,75.000000,425.000000,0.000000,"Check Server"}; item36[] = {"Server_not_worki",4,218,125.000000,375.000000,225.000000,425.000000,10.000000,"Server" \n "not working"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,314.041901,1103.864014,1613.338623,764.213013,586,630,1}; -window[] = {2,-1,-1,-1,-1,942,130,1422,130,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == magazines player}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ From 6711ff3e8833748182d87ed6ebb3511093063b92 Mon Sep 17 00:00:00 2001 From: vbawol Date: Mon, 1 Feb 2016 09:43:50 -0600 Subject: [PATCH 5/7] take 2 on login wait for playerobject to be ready code --- .../mpmissions/epoch.Altis.pbo | Bin 89558 -> 89607 bytes .../mpmissions/epoch.Australia.pbo | Bin 89639 -> 89659 bytes .../mpmissions/epoch.Bootcamp_ACR.pbo | Bin 89751 -> 89771 bytes .../mpmissions/epoch.Bornholm.pbo | Bin 89604 -> 89624 bytes .../mpmissions/epoch.Chernarus.pbo | Bin 89705 -> 89725 bytes .../mpmissions/epoch.Chernarus_Summer.pbo | Bin 89761 -> 89781 bytes .../mpmissions/epoch.Desert_E.pbo | Bin 89719 -> 89739 bytes .../mpmissions/epoch.Esseker.pbo | Bin 89593 -> 89613 bytes .../mpmissions/epoch.Mountains_ACR.pbo | Bin 89908 -> 89928 bytes .../mpmissions/epoch.Porto.pbo | Bin 89711 -> 89731 bytes .../mpmissions/epoch.ProvingGrounds_PMC.pbo | Bin 89799 -> 89819 bytes Server_Install_Pack/mpmissions/epoch.Sara.pbo | Bin 89870 -> 89890 bytes .../mpmissions/epoch.SaraLite.pbo | Bin 89885 -> 89905 bytes .../mpmissions/epoch.Sara_dbe1.pbo | Bin 89893 -> 89913 bytes .../mpmissions/epoch.Shapur_BAF.pbo | Bin 89735 -> 89755 bytes .../mpmissions/epoch.Stratis.pbo | Bin 89627 -> 89647 bytes .../mpmissions/epoch.Takistan.pbo | Bin 89650 -> 89670 bytes Server_Install_Pack/mpmissions/epoch.VR.pbo | Bin 89563 -> 89583 bytes .../mpmissions/epoch.Woodland_ACR.pbo | Bin 89847 -> 89867 bytes .../mpmissions/epoch.Zargabad.pbo | Bin 89788 -> 89808 bytes Server_Install_Pack/mpmissions/epoch.utes.pbo | Bin 89687 -> 89707 bytes Sources/epoch_code/System/player_login.fsm | 12 +++++++----- .../epoch.Australia/System/player_login.fsm | 18 ++++++++---------- .../System/player_login.fsm | 18 ++++++++---------- .../epoch.Bornholm/System/player_login.fsm | 18 ++++++++---------- .../epoch.Chernarus/System/player_login.fsm | 18 ++++++++---------- .../System/player_login.fsm | 18 ++++++++---------- .../epoch.Desert_E/System/player_login.fsm | 18 ++++++++---------- .../epoch.Esseker/System/player_login.fsm | 18 ++++++++---------- .../System/player_login.fsm | 18 ++++++++---------- .../epoch.Porto/System/player_login.fsm | 18 ++++++++---------- .../System/player_login.fsm | 18 ++++++++---------- .../epoch.Sara/System/player_login.fsm | 18 ++++++++---------- .../epoch.SaraLite/System/player_login.fsm | 18 ++++++++---------- .../epoch.Sara_dbe1/System/player_login.fsm | 18 ++++++++---------- .../epoch.Shapur_BAF/System/player_login.fsm | 18 ++++++++---------- .../epoch.Stratis/System/player_login.fsm | 18 ++++++++---------- .../epoch.Takistan/System/player_login.fsm | 18 ++++++++---------- .../epoch.VR/System/player_login.fsm | 18 ++++++++---------- .../System/player_login.fsm | 18 ++++++++---------- .../epoch.Zargabad/System/player_login.fsm | 18 ++++++++---------- .../epoch.utes/System/player_login.fsm | 18 ++++++++---------- 42 files changed, 167 insertions(+), 205 deletions(-) diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index ac59372482f0e044210f15003bfaee41d7c46654..e9d475e98c8465922321f7192bfe1700568452e2 100644 GIT binary patch delta 239 zcmcb%o3(up>x8Y$w`V7Y>zp@E5+j*+p6j-ja$n6df8@@ge!eSL+^*{1}Q!Hnv+(bifDYHAAA@wtiV z&iSQzB?`8-3dtab22doiDl;#&SfL;%u`;ztvvzu;DC4B*zk(R+C*QxrHT|^#W8Lx8Y$c{kQf+@Z*8^^^e&bZ@K)v)cGMv5DE{?#k#VP;kK5C47lLc-p w+T8Un*lK!#EaRlfYj4$Wm(XIoZ7d@8_^)@llkB+f3C+G04n%N6#xJL diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 997bc2ebba5dc21033c9f4689b7b977936bbae58..7669585bc6454d273fe3aaf5e90eb0ba7fef80f4 100644 GIT binary patch delta 255 zcmZ3!hjsTJ)(Kmg@6@cHxI>XQ`zZq$9KXCSEPLa#YZc5!rUsi2R9=^4F)=nY**t5q znuv*^g^8Y-siBd%nU0x(sh**^p@EU1j-i>Mv7WK9g_)7Dj=7nMo{^!kfuXUEsfC%2 zg@wW7FUu7K4Gm1pbc~EmbPP?6z>Li*D?&IXi=3W3x$~sS=9rBMlFa)03Y+(w5>N&+ z&b*Db)>2SYQ>c#5O-y&rFU>1au(ef41~D{%B8gR*d8x$;1v!b8sYRN#lRv(1p6+5AJAe9HWvA7zXQ{3!z%B;QyQ7QXS>wF(v!V-vH@`zxG`R}io;w$L#&H!#yNvb40&F*4h%x*~*Qx|ca4?_~c+e2fayA4)S$nZB2e(PXp3 z#stafcg+|%C+~mjKUwa@qRn$piz$IcHt&BMWIeg?XY=F>|M({#c)>CG<*oAVK3a^o cjYSN41URJkO%%!9^j2?$(LvXH2VAxR0N|oiXQ`zZq$9KXCSEPLZKw@PLsQ-jS0Ro5k1OpFapHgio; z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQdMvO+=7(7?n@$H>@3$I#RW%-B3-MF_{_meZ3b|2%23`OL-yNoIY0h0Qvr1(d-I zn|IOHS_*1v3f1wsiRsSyrFkU^wzdk%Ach7|B(W+pFSS^qASbahwMesea^i>P=^MBh w`KRv=W~`sQ;4atX*Ej378)!2I8;gif6IIAL@~cVjpZo6Wmk delta 228 zcmZ3zmv#DH)(Kmg^KYz~xI>XQ{3!z%B;QyQ7QXSBTP2H$v5DDc{i^GdlU=3?Y!;s) zDPm$|V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAab8XbDtdrek4h zGC5_1f`Emwg^r=QftikxrKN?Ak=f>{D?&J??=olPoxJ}MAEUzbKpDm<({@ab*PM}avi>{&$$c*tZRR~ArUVw*tp6^^dh)}c&66Ge^G`N-$uT+dcKP-_T8y`i aMc(b3$z>#)=_CIkD=B%^lM)Y$2q6HDT}|)+ diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index d7fa0b9ef2b937d1fefe695f054a573c5ecf866c..05aa80905ff15cdaa7a7516d101813ca304c0574 100644 GIT binary patch delta 251 zcmZqK!#ZOR>x8Y$cWTy8+@Z*u{geR=j$d9Emc8-W<_cybQ-jTOE3Zqkm>3(HY%ZUy zCSqb}VWMYdYG`C`rekJcs%L0!XkcWhV`ye*tY>U&VP<5kV{T@mXJlw>U}&skYGI~h zVPP=&;&KH+Ljw~t9V25C9Ya$iFk>_0iV%*;A}=OS-@wLbve|NDf+VxPzQX32rv#M2 zjFoSrt+f=?)D)`Ya}(2@^Gowe6l`r3l0gg&ph#j>W?pKsLP1VqWonUT?c|GBnx8Y$`8U=~+@Z)D{*(a>l5eaD3*Y!`a|Mfuv5DE{IhEHXCx7h~*xWK% zQpCi_z+BJN%*4RROvlv1NYBXB+|tmPMW;$R{eHOEyml%B8BVH X@^-8`689y-`K-;>McXQ`zZq$9KXCSEPLZKiAq5uQv)4cBU3#CFwikHnY?kT z$YzzQt&%Jz#)c-F?@U$`F)_3-(K9nOG%`2SF*7jLGc-3eFf!CJG&3~TGd8v`GcwjO zH#5;QGBh?YG}bY-Fw?QHFqmw%LP5~bz{E_)$k;^3(9{Ub*qpW^gk$pMdy_Y3ZJZ*> ztgo-I`QIr4WiW&9U9`29f|{B_b$o7Ox^sSMUWtOOtwJ)0p#c<0tjf$wEmkPVNvupQ y(yX1XsLj|seZCi?*yO#xE4Ei@G2S*7xg(m*@LA%)t3P7CD*LA^**s#(mInYViBXQ{3!z%B;QyQ7QXSBL?w%fv5DDc#;WU*lU1t)Hou%K zDPm$|V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAab8XbDtdrek4h zGTCf}f`Emwg^r=QftikxrKN?Ak=f?-6(JmxPp#ygtZXQ`zZq$9KXCSEPLa#fJ$Z~Q-jS`Ro5k1OpFapHj7MA z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQdMw?aYC(7?n@$H>@3$I#RW%-B3{MF_|AWIo2p(|y?)O*UWKm>|iludlG#?6iO~ znBn#=+FDaVO--RXJ~uJlIlnZoM8VcpAsNKb0E#45W#*+8D-`4;R;CtdZeO6u_|`;3 Z=}z(UsBr&D;Y}^~+qW52=9}!!1OWNeOLYJM delta 221 zcmdnGmv!M@)(Kmg3vR5LxI>XQ{3!z%B;QyQ7QXRWKqZTbv5DDc%c|>=%tnS5n?6ls==^2@tn;Mww7+M+|>6x1wnpl|Vm|Ga?nFBQ%S^`y==~$SW zOwL=OAYfr^p<`%nV5VbaX=$NjWVU(!iV%+JyOx8Y$cWc&9+@Z*u{geR=j$d9Emc8+rS|ziQsljG}s_T+0CdP&)n_o>< z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQeHvO+=7(7?n@$H>@3$I#RW%-CGAB7|dd%IV3IZ=N*Syk=v9B(uK0!e*Y+0?J^9 z%)4l7Ed@0-h3fd+#B}HU(!3G{TU&)>5JLkfl310Qms+e)kds)MTBKP!+3`d3^a)&y w{L^O#GuBUTxXU&9^v$~M0@{qh#v)FSXEdxmeR<}N8o86Pb~^prx8Y$1vl1A+@Z)D{*(a>l5eaD3*Y!mt&+vW*u-ozf7Nx#$tqI?Hh-Ti zDPm$|V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAab8XbDtdrek4h zGTCK?f`Emwg^r=QftikxrKN?Ak=f?b6(JncXPGndPM-gWk5OT|p$y}c>AdWWCYvX0 zOpu(eYtG0yng5;tORPdh)@a&65@W^G_Cd$uZgTcKP->T8y`i aMQ+aS-pu09?^X2ktlW)8k(4c**E;~n#!iv| diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 45dcddd395383236520f742646081d241a253b84..d6e0e69f9ddc69c6a457af2dd80b7863679fccdc 100644 GIT binary patch delta 261 zcmeylo3(cj>x8Y$_iENp+@Z*u{geR=j$d9Emc8-WiV8s^Qv)4cBU3#CFwikHnd~@K zWb>BFt&%Jz#)c-Fb0({am>61^=$V-s8kw8vm>HPr8JZg!7#Zpqni(4F85>)e85!%C zo0;et85$cH8ta%^nCVzp7)(C4TtU##z{E_)$k;^3(9{Ub*!*pI2*>2)dy_Z++Au|u zSzljabKfZeWiVsj+h}Vo1vNE=>iFEmbm#oiyb=XlTZLp0Ljx$1Se2QVTC7lzlUSKr xq**(CqZVWHbbT*IvB|!_E4FiKG2S*7X^e~$lvL9>oWJ`^&$}ll3oLBo`2msORx8Y$1vl1A+@Z)D{*(a>l5eaD3*Y!`MFoqAv5DE{iIvwSCvUA1*jzbT zQpCi_z+BJN%*4RROvlv1NYBXB+|XQ`zZq$9KXCSEPLa#$Cb=RrUskOR$Z55F)=nY*}Qy; znuv*^g^8Y-siBd%nU0x(sh**^p@EU1j-i>Mv7WK9g_)7Dj=7nMo{^!kfuXUEsfC%2 zg@wUn#+3?!h6W~PI!4AOI)XQ{3!z%B;QyQ7QXS><4P72V-vH@XR5ACPFC#~*t}(m zq=<=;fw`WknTdgsnU1N2k)DyMxv7D_Wd z*F=Cht7$KfPC-k#D-T2IHd5r{4!#P2VWTIBD{`+x6QcwHa?4i?C@$ Wx8Y$_iENp+@Z*u{geR=j$d9Emc8+rTqU!SsljHBs_T+MCdP&)I=Y6Y z26_fypkq0?uu60@>l9`Y6GICVJu_27BXctyGXqmSLvup|BSRfSGecuNV`B?5BV!$N zGZQ@{Lt_I&V;xfqGaU;HgUL246a)iFEmbm#oiyb=XlTZLp0Ljx$1Se2QVTC7lzlUSKr sq**)J@XMshdw$n%Z_r}AZ7gD`BmBXkZ06x-eBWYch5NmEULRc#0B}Q6+yDRo delta 226 zcmZqP%ldu~>x8Y$g*Vnr+@Z)D{*(a>l5eaD3*Y!mu9C&X*u-ozd)0Nx$u127lYiE8 zZ~irzPsGH?z+BJN%*4RROvlv1NYBXB+|X#1cWg|M zoP6&X=VbPG{?q;38965By_mK6>1i<~kmzRicR|+EH`*{xnyh)descU>uI=-*7%v)& aJU<-A`24MQmClQa8}e1XCMCA&)BynK^HM_q diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index 1b65a2016d4c2037cf8df59fa861f96cb66f0530..d7a3fe3da07f90a61ef497bb8ca65f5c97064da8 100644 GIT binary patch delta 255 zcmX@Um-Y5u)(Kmg@7JuKxI>XQ`zZq$9KXCSEPLa#vPxznQ-jS3Ro5k1OpFapHd{?m z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQcBWrc#Ep@E5+j*+p6j-ja$n6dfDiV%*;TTV}&ta-|0^Pi0glFa)03Y%k23n+sb zIq#yawG`CU6sqHM6VsjZOY=$;Y;6^iK@1I`NMcoHUTU#IK~7?2YLRB`XQ{3!z%B;QyQ7QXRWStW~!v5DE{_^RuYlS`%wY<8a_ zDPm$|V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAab8XbDtdrek4h zGI`1h1py0V3mrpq12Y{XOG^tKBeTs%SA=j(e`U_dJNf-1K1PM&b$@nkN_h=bxPLl4Ek`?egt!v>0z2 bix_3G*&nP)tp9DRwENzXw10E=RVxDkBMwst diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index 217c147247ab93287957d3aa55b6c35317a97324..9dd3e162c3ebd639b75555867a4e5ec91852d6df 100644 GIT binary patch delta 239 zcmeC%$GT`A>x8Y$_iNTq+@Z*u{geR=j$d9Emc8-W-b!X8Q-jURtFBA3m>3(HY;K&Q zCSqb}VWMYdYG`C`rekJcs%L0!XkcWhV`ye*tY>U&VP<5kV{T@mXJlw>U}&skYGI~h zVPP=&_6h|-Ljw~t9V25C9Ya$iFk>_K$`Fpp!WSlQ=HE0$l38D0Ve{hC0?J^<=6BK7 zS_*1v3f1wsiRsSyrFkU^wzdk%Ach7|B(W+pFSS^qASbahwMese`av(onbR#p7%R5R fYct+97I~Hs%TOf$sNhv-MsSUHx8Y$MK{(=+@Z)D{*(a>l5eaD3*Y!`ZzYR~v5DE{WmVTDnT-rBHaAXD z6EQI|FxN9RGchnS(=oL$(latOH#IQVF|;%`(la+VG_f$zF}E<(GY4ukv;?X!)3Go$ znS6VNf`Emwg^r=QftikxrKN?Ak=bURl_4CHUmfS2{=l4(k5OUr!_!kHYo0UNtiCBh za&ql)&dJN(`A>iA&d4#D_vNh3Eoa1(K%$$My$iD5uB65I#ze%xm^r_}Ah7$Xsgp}k LyhF2mw>dumR6j_= diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index c3aeae3464a69682e5ccba558b3adf3292dc044b..173559e3c5945e4804c140d88734f976f22a5181 100644 GIT binary patch delta 239 zcmbQck9Ffd)(Kmg@7JuKxI>XQ`zZq$9KXCSEPLa#GnLFnrUsk0Rb7{4F)=nY**sy2 znuv*^g^8Y-siBd%nU0x(sh**^p@EU1j-i>Mv7WK9g_)7Dj=7nMo{^!kfuXUEsfC%2 zg@wW7S1S|*4Gm1pbc~EmbPP?6z>LjOD?>OYPd+qxv)raBlFa)03Y#~b7ElH=4!w)E z)>2SYQ>c#5O-y&rFU>1au(ef41~D{%B8gR*d8x$;1v!b8sYRN#(=T{2&YbQM!dS6g fPn+?!v53l7sm^b~hdP7XQ{3!z%B;QyQ7QXS>nMxKDV-vH@TdS^1G8-9MY@RSh zO~k~=z+BJN%*4RROvlv1NYBXB+|E8bMuo|O@25=u`ORdr*`@@^ z$s6u*PTu;?fBGMHMvlocFK2C@d`3(OB)WO)yCCcBhFXkoOhl6Ag|4>ESTT8C#*Wjw L)hami95iGA)?Q5T diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index 5d47e288d2c00ff0024d71d5acde7064730a3dfc..e3277df134fb713a6b0f8fa8b0819c28204c55ea 100644 GIT binary patch delta 309 zcmZ3wk9Frh)(KmgAJnX$xI>XQ`zZq$9KXCSEPLa#E0xSfrUsk$Rb7|lG%+?b(a|+D zHJEHTMR@auDSRUJh88AzW~PQl=4Lu(2Bvz3=7t7FhB}63hQ@lv#ujEq#yaL^CVEDO z#s-GQI;Iw8Iu;fNI)=5@yjXQ{3!z%B;QyQ7QXS>l}Z*9V-vH@d#kQXPCim2uzBee zNs)RZ19Lr7GZOK5#4qwnGB=whd(zu9i3CC7AWM@HVs8;$df&jZ?Ysy?(mx8Y$4{Fv=+@Z*u{geR=j$d9Emc8+rStYZPsljH2s_T+0CdP&)n}1DK z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQb$vO+=7(7?n@$H>@3$I#RW%-GzrB7|dd$?3_HU!FACyk}#AB(uK0!e*J%0?J^9 z&bw%9Ed@0-h3fd+#B}HU(!3G{TU&)>5JLkfl310Qms+e)kds)MTBKP!Iq*aC^aWgu v{L@zlGuBU@aF=WH?VEMm6|@x8Y$#W&VW+@Z)D{*(a>l5eaD3*Y$6tdhmV*u-qJeARWy$tF_;HnUHW z6frR}FxN9RGchnS(=oL$(latOH#IQVF|;%`(la+VG_f$zF}E<(GY4ukv;?X!)3Go$ znH;i0LBPV;LdVeDz)Z);($Yf5$ZT`#iV%+JtIQdBC$E3R$EYyfQHF8KbXj&rlg$e@ zCP+@VHD~0UEdS1ba@~tXoBy5`Qv!=@mVXyyJ^A9#=E(;C`6ny9 diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index 83283f99b1df975c8311fd57c23f4dc3c862eaf7..6a6df672a8e5cab4a753ca3f0bc763126194cf1b 100644 GIT binary patch delta 252 zcmbQehjslP)(KmgAJnX$xI>XQ`zZq$9KXCSEPLa#Qx)t+rUp8?My8WLwu)>%Q@LM~ z#l+aqWOLtSH4zg-3llvvQ$r(jGaWMnQ$0g-Ljxm29YZriV?ASI3o|2Q9dk1iJtIS7 z14CmSQwuX43k!qEFP19^8XB0G=@=QC=op$Bff<`6R)la&4|ZUjyjf=B6iH@%eTB^% zP6;T383*1*TWcw(sVP*)=O(5*=a=S{DA?L6B!d_lK#|0%%)HcMg@T;K%G4sw+UXlP s87ECo@M2`2od3IGyN(v)ZDSGE-71#xDVDKMwZji`P1EAl`0#B#05{H44gdfE delta 223 zcmZ3#hjsQI)(Kmgi*Kx%xI>XQ{3!z%B;QyQ7QXS>sR|AgV-qtST_e-UA6i8=pRU|5 z$!uh3vAJ)unuv*!fw`WknTdgsnU1N2k)DyMxv7DIU z;}prs>+W(+-u%{odVnhcZ+;tOJ=yW!q{&xr)o*vuV!UlEvUZkP WYUjS#L*1{R1TE{1%x@`4O8@}!_EL`k diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index c82ddf889d5c4fa02e502a4a0d555a25e3f98f09..6535ba04e6f00a0e81ef161806bf3b24ca548c8a 100644 GIT binary patch delta 234 zcmdnAhxOPV)(KmgAJnX$xI>XQ`zZq$9KXCSEPLa#hZW35rUsi&S6-K7F)=nY*}QbJ znuv*^g^8Y-siBd%nU0x(sh**^p@EU1j-i>Mv7WK9g_)7Dj=7nMo{^!kfuXUEsfC%2 zg@wW7|H~Bw4Gm1pbc~EmbPP?6z>LlMD?&J?Gs`eeo_>#w(PVS_#so=beSL+^$4?0; zgBjP~Mq6ttsHrJb$LA)dJLi|?l_=QSDkOs#8bFc6s?5C9Vuga7#LCnn&FzMojBiau aDpq{?!}WJ2&-(i>{1e&dyeRASm<9mMGf!dw delta 211 zcmX@Mhjr5))(Kmgi*Kx%xI>XQ{3!z%B;QyQ7QXS>!wMD?V-vH@rz)>YG8-9MY+gE9 zO~k~=z+BJN%*4RROvlv1NYBXB+|{?+*Gx8hZ%mM!TyTza z@~OA}lQmx~+Pvblm=Z`}^QpH%){`gxnKb#$t@`cZT8y`iMby6DFn$pB?#=G0_m?H@ LpSWyI>yZoq2x(F% diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index fa3f6ef8362558155ff057eeb4d153fa516977a2..c6eeb597bedf777b0ca67ba8e3bc2b3a20312249 100644 GIT binary patch delta 252 zcmcb;oAv!})(KmgAJ(j&xI>XQ`zZq$9KXCSEPLa#t_pS|Qv)4cBh$$nTSYeaRPL8# zF)=nY+3Yu2O~k~|!bH!^)X>P>OvlW?RL{`d(7?!0$I#5sSkKtl!pz86$K1?B&&bf& zz|dI7)WS^1!opzkiscG|h6W~PI!4AOI);Z`Y6{iyxryn{`K5U!3bwWi$smRXP$aP`GcUDRp&%!*GPOvvc6uQv sXQ{3!z%B;QyQ7QXRWR|SWOv5A?Eu94~F4Xq-ZyDRrg zG8-9MZ1$V1CSqb_V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAU&L z&=RP^Ovl31Wb%sT3IZ0!7CMIJ24*@&mX;PeMrNCDE)U_DeCsan2aqt@>?RjJJ(NDkPWx W57~5__1bBXOooIvyF%qQ+W`OyPf_mx diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 55f6e61c0cf884be5a5c71bc251375e1ce15df88..4fd715a78162b909bd582e16d2b6f1687c01e043 100644 GIT binary patch delta 254 zcmeyqm$iEz>x8Y$4{O#>+@Z*u{geR=j$d9Emc8-WvPxznQ-jSDs;*12m>3(HY|fgZ zCSqb}VWMYdYG`C`rekJcs%L0!XkcWhV`ye*tY>U&VP<5kV{T@mXJlw>U}&skYGI~h zVPP=&$O;8PLjw~t9V25C9Ya$iFk|zV6(JmxpPZgNIr5arW}Qt5lFa)03Y&XQ3n+sb zbKXT;YbmIyDOAVjCZ;>*m*$ly*xD*2gBTh>k;JOZywqZaf}F(4)FRE=$p=3)PZ!{3 ux8Y$B{$Yg+@Z)D{*(a>l5eaD3*Y!`StW~!v5DE{{;KPelb1{t*jzqE zQpCi_z+BJN%*4RROvlv1NYBXB+|UJ6ZlQAEUzbjWUc=ruVWlnrs%> zlpr~MtvMs-Tm=aiIbN{;_>&cG4nkO&#&p&y>OODAqZXQ`zZq$9KXCSEPLa#>`G=MQ-jT+Ro5k1OpFapHtSDO z6EQKgFwrwJH8e6e(=jtJ)iX3VG%zyMF*GwY)-yJ?Ff%gNF*h^OGcq(bFf`UNwJ_7M zurQe1xk5qE(7?n@$H>@3$I#RW%-FnhMF_{_#g8X%-n(&%B(uK0!sfu!0?J@U;=5>T zEd@0-h3fd+#B}HU(!3G{TU&)>5JLkfl310Qms+e)kds)MTBKP!+3@eA=?{V#>$jiP eV!UlE;+1X{{p-zo5f^{2YkXn*_Q%dSdK3W4y;0u) delta 224 zcmcbxmvzrx)(KmgOK+^1xI>XQ{3!z%B;QyQ7QXRWb|r_2v5A?Eu94~FiESdAbE@`B zG8-9MY}TKmCSqb_V6JCsW@2DurekVhq-SJmZfanzV`yn?q-Sn!XkuZaV{T!nXAU&L z&=RP^Ovl31WOC;U1py0V3mrpq12Y{XOG^tKBeTuBR)la&@AhHjnf!kxKcm9riJzuS z?)+u4`Rc|5$;tlrI46g^^WQw-^bREuXLHEAAnVBw4^Nt0cDsJ^n!8-vUu!X5G#1$t Ydp>nV;O$b4a~&Z&{S9{JRUFm=0Owy*cmMzZ diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index a508732f7327370cab14332492a7ab1524ea2d20..d8b6ac41ed68539ea7c1c98ef3c9f02c619b2bd4 100644 GIT binary patch delta 255 zcmcbXQ`zZq$9KXCSEPLZKwn}CrQ-jSPDz8hjm>3(HY(6zv zO~k~|!bH!^)X>P>OvlW?RL{`d(7?!0$I#5sSkKtl!pz86$K1?B&&bf&z|dI7)WS^1 z!opy($_fQRLjw~t9V25C9Ya$iFk^GbiV%*;E~h6?-g(kwbI-;ENoIY0h0SkH2`GaZ zf8Iu0YbmIyDOAVjCZ;>*m*$ly*xD*2gBTh>k;JOZywqZaf}F(4)FRE=$%-GErx$QB w@=vc0W~`r_aF=WH>YH`jKWH%q8;c~L=g2Fw+p_CGtJ-I~N~Vx+SAX;Y02AU_(f|Me delta 227 zcmaF8hxPg%)(KmgOKz;0xI>XQ{3!z%B;QyQ7QXQrTP2H$v5DE{_m$TrC$mfy*nEAm zq=<=;fw`WknTdgsnU1N2k)DyMxv7D2KK>O*R*7 zOpu(;YtG0y`Tbk}$$l>uZ9aQiObINq`Tg4<>&Xj$Hc$G`Kl#H8j>(d@%eU8PG2S*7 ZnI7)d#Ax@{qQdK3vPp3<%h9<*/ class FSM { @@ -249,6 +249,8 @@ class FSM " diag_log ""EPOCH-LOGIN: Finish!"";" \n "};" \n "" \n + "" \n + "" \n "player enableSimulation true;" \n "" \n "titleCut ["""", ""BLACK IN"", 1];" \n @@ -404,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -640,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1037,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Australia/System/player_login.fsm b/Sources/mpmissions/epoch.Australia/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Australia/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Australia/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Porto/System/player_login.fsm b/Sources/mpmissions/epoch.Porto/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Porto/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Porto/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Sara/System/player_login.fsm b/Sources/mpmissions/epoch.Sara/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Sara/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm +++ b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.VR/System/player_login.fsm b/Sources/mpmissions/epoch.VR/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.VR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.VR/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/Sources/mpmissions/epoch.utes/System/player_login.fsm b/Sources/mpmissions/epoch.utes/System/player_login.fsm index d9c106e5..51e595cd 100644 --- a/Sources/mpmissions/epoch.utes/System/player_login.fsm +++ b/Sources/mpmissions/epoch.utes/System/player_login.fsm @@ -2,7 +2,7 @@ /*%FSM*/ /* item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"}; -item1[] = {"FINISH",1,4346,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; +item1[] = {"FINISH",1,250,-25.000000,1475.000000,75.000000,1525.000000,0.000000,"FINISH"}; item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"}; item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"}; item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"}; @@ -62,7 +62,7 @@ item57[] = {"Select_Weapon",2,250,150.000000,1300.000000,250.000000,1350.000000, item58[] = {"true",8,218,225.000000,1375.000000,325.000000,1425.000000,0.000000,"true"}; item59[] = {"Do_nothing",2,250,300.000000,1300.000000,400.000000,1350.000000,0.000000,"Do nothing"}; item60[] = {"Check_New_Player",2,250,-25.000000,875.000000,75.000000,925.000000,0.000000,"Check" \n "New Player" \n "Setup"}; -item61[] = {"check_new__player",4,218,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; +item61[] = {"check_new__player",4,4314,-150.000000,925.000000,-50.000000,975.000000,0.000000,"check new " \n "player not null"}; item62[] = {"true",8,218,-150.000000,-325.000000,-50.000000,-275.000000,0.000000,"true"}; item63[] = {"Process_1",2,250,-25.000000,-275.000000,75.000000,-225.000000,0.000000,"Process"}; item64[] = {"Wait_ArmA_Loading",4,218,-150.000000,-225.000000,-50.000000,-175.000000,0.000000,"Wait ArmA" \n "Loading Screen" \n "Done"}; @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-207.564026,582.257507,1932.771484,781.734619,586,854,1}; -window[] = {2,-1,-1,-1,-1,838,1706,2998,26,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; +window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; *//*%FSM*/ class FSM { @@ -259,9 +259,7 @@ class FSM "progressLoadingScreen 1.0;" \n "" \n "endLoadingScreen;" \n - "EPOCH_loadingScreenDone = true;" \n - "" \n - " "/*%FSM*/; + "EPOCH_loadingScreenDone = true;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -408,7 +406,7 @@ class FSM "1338 cutText [_msg,""PLAIN"",0]; " \n "deleteVehicle player;" \n "call _rejectPlayer;" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -644,7 +642,7 @@ class FSM " (findDisplay 46) displayAddEventHandler [""KeyDown"",""true""];" \n " (findDisplay 46) displayAddEventHandler [""KeyUp"",""true""];" \n "};" \n - "diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n + "// diag_log format [""(%1) %2"",diag_tickTime,_msg];" \n "_myTime = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -1041,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ From 8bbec6258a45345080832212299f3aed223a8452 Mon Sep 17 00:00:00 2001 From: vbawol Date: Mon, 1 Feb 2016 10:23:11 -0600 Subject: [PATCH 6/7] upload trader city tools --- Tools/SQF/saveTraderCityTemplate.sqf | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Tools/SQF/saveTraderCityTemplate.sqf diff --git a/Tools/SQF/saveTraderCityTemplate.sqf b/Tools/SQF/saveTraderCityTemplate.sqf new file mode 100644 index 00000000..862c943a --- /dev/null +++ b/Tools/SQF/saveTraderCityTemplate.sqf @@ -0,0 +1,75 @@ +/* + Made for A3 Epoch Mod + EpochMod.com + by Aaron Clark - [VB]AWOL + + This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. + http://creativecommons.org/licenses/by-sa/4.0/ + + USAGE: you must create a protection zone and give it the VariableName of MIDDLE + then simply run the below code in debug console and your clipboard will contain the config + + the telePos position needs to match the array variable in the example it is called "custom" + so your telePos array would look like: + + { "Transport_C_EPOCH", { 13.5127,0.410156,-10.3098 }, "", "custom" }, + +*/ + + +EPOCH_dbg_replaceBrackets = { + _return = []; + { + _string = _x; + if (_string == 93) then { + _string = 125; + }; + if (_string == 91) then { + _string = 123; + }; + _return pushBack _string; + } forEach toArray(format['%1',_this]); + _return = toString _return; + _return +}; + +EPOCH_dbg_saveBaseTemplate = { + _br = toString [13,10]; + _classes = []; + _config_str = "custom[] = {"+ _br; + _staticTraders = []; + _middleClass = (typeof MIDDLE); + _classes pushBack _middleClass; + _range = 200; + _array = allMissionObjects "ALL"; + _newArray = []; + + { + if (_x distance MIDDLE <= _range) then { + _type = typeof _x; + if (_middleClass != _type) then { + _newArray pushBack _x + }; + }; + } forEach _array; + + _countArray = (count _newArray) - 1; + { + if (!(isPlayer _x)) then { + _type = typeof _x; + _classes pushBack [_type,(MIDDLE worldToModel (getpos _x)),getDir _x]; + _config_str = _config_str + format[' { "%1", %2, %3, %4 }%5', _type, ((MIDDLE worldToModel (getpos _x))) call EPOCH_dbg_replaceBrackets, getDir _x, !(simulationEnabled _x), if (_forEachIndex isEqualTo _countArray) then {_br} else {("," + _br)}]; + + }; + } forEach _newArray; + + + _config_str = _config_str + "};"; + + if (_this) then { + _config_str + } else { + _classes + } +}; +copyToClipboard (true call EPOCH_dbg_saveBaseTemplate); \ No newline at end of file From dee85d54e4c88fff41f27550e98ab87dbd2017bb Mon Sep 17 00:00:00 2001 From: vbawol Date: Mon, 1 Feb 2016 15:02:49 -0600 Subject: [PATCH 7/7] another fix to login wait --- .../mpmissions/epoch.Altis.pbo | Bin 89607 -> 89670 bytes .../mpmissions/epoch.Australia.pbo | Bin 89659 -> 89722 bytes .../mpmissions/epoch.Bootcamp_ACR.pbo | Bin 89771 -> 89834 bytes .../mpmissions/epoch.Bornholm.pbo | Bin 89624 -> 89687 bytes .../mpmissions/epoch.Chernarus.pbo | Bin 89725 -> 89788 bytes .../mpmissions/epoch.Chernarus_Summer.pbo | Bin 89781 -> 89844 bytes .../mpmissions/epoch.Desert_E.pbo | Bin 89739 -> 89802 bytes .../mpmissions/epoch.Esseker.pbo | Bin 89613 -> 89676 bytes .../mpmissions/epoch.Mountains_ACR.pbo | Bin 89928 -> 89991 bytes .../mpmissions/epoch.Porto.pbo | Bin 89731 -> 89794 bytes .../mpmissions/epoch.ProvingGrounds_PMC.pbo | Bin 89819 -> 89882 bytes Server_Install_Pack/mpmissions/epoch.Sara.pbo | Bin 89890 -> 89953 bytes .../mpmissions/epoch.SaraLite.pbo | Bin 89905 -> 89968 bytes .../mpmissions/epoch.Sara_dbe1.pbo | Bin 89913 -> 89976 bytes .../mpmissions/epoch.Shapur_BAF.pbo | Bin 89755 -> 89818 bytes .../mpmissions/epoch.Stratis.pbo | Bin 89647 -> 89710 bytes .../mpmissions/epoch.Takistan.pbo | Bin 89670 -> 89733 bytes Server_Install_Pack/mpmissions/epoch.VR.pbo | Bin 89583 -> 89646 bytes .../mpmissions/epoch.Woodland_ACR.pbo | Bin 89867 -> 89930 bytes .../mpmissions/epoch.Zargabad.pbo | Bin 89808 -> 89871 bytes Server_Install_Pack/mpmissions/epoch.utes.pbo | Bin 89707 -> 89770 bytes Sources/epoch_code/System/player_login.fsm | 7 ++++--- .../epoch.Altis/System/player_login.fsm | 7 ++++--- .../epoch.Australia/System/player_login.fsm | 7 ++++--- .../System/player_login.fsm | 7 ++++--- .../epoch.Bornholm/System/player_login.fsm | 7 ++++--- .../epoch.Chernarus/System/player_login.fsm | 7 ++++--- .../System/player_login.fsm | 7 ++++--- .../epoch.Desert_E/System/player_login.fsm | 7 ++++--- .../epoch.Esseker/System/player_login.fsm | 7 ++++--- .../System/player_login.fsm | 7 ++++--- .../epoch.Porto/System/player_login.fsm | 7 ++++--- .../System/player_login.fsm | 7 ++++--- .../epoch.Sara/System/player_login.fsm | 7 ++++--- .../epoch.SaraLite/System/player_login.fsm | 7 ++++--- .../epoch.Sara_dbe1/System/player_login.fsm | 7 ++++--- .../epoch.Shapur_BAF/System/player_login.fsm | 7 ++++--- .../epoch.Stratis/System/player_login.fsm | 7 ++++--- .../epoch.Takistan/System/player_login.fsm | 7 ++++--- .../epoch.VR/System/player_login.fsm | 7 ++++--- .../System/player_login.fsm | 7 ++++--- .../epoch.Zargabad/System/player_login.fsm | 7 ++++--- .../epoch.utes/System/player_login.fsm | 7 ++++--- 43 files changed, 88 insertions(+), 66 deletions(-) diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index e9d475e98c8465922321f7192bfe1700568452e2..7a1f66960076b5c967ea30c8086b9e2eb45807f7 100644 GIT binary patch delta 215 zcmZqQ!+LBF>x8XLi;hp+uEe|QDFYbHJib0`)y8MbmKhkCnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{7Wvs^{Y($GxD(7;5;(AW~fFxD|M zFy8!qIY%RZd_hiPWonUsQdVkmiDvEe0$IjMlh@v=-!7rWn5v_el9`wupOc@ikd|MR zn^+R9q~zl26zXoJplYa~q@)v{SX7i)89RMm7^BqomN3SAc9DjSvo0R(wTqsm(yH|J L?`9shv*CLI_i;zT delta 165 zcmX@MhqZkV>x8XLw`(SDSK`fn$^Zt(FRu&B-uP_UG6O>k6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w|4maB*x8km^r7#W-B7@8VE7{)-| zCY!%4=V;_8$VseBEz+!=9QbF__W7EOPjse#2xDa5emIOVpIxNr&Ut$?%V*`z|IY7w MaH;6oGPSPB03UTZt^fc4 diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 7669585bc6454d273fe3aaf5e90eb0ba7fef80f4..a1ffb1e87725fd0e8e98a7c5b43835f8062848e2 100644 GIT binary patch delta 203 zcmdnJhxOMU)(Kmg79F3sU5R(qQwA`Yd3=4?s*TTXEi*7OGuJb8CVFP3hDPRQI%Wo@dWPnP z21bTDhGvGwdd9{UW=6(3=4K{(Mux@)hQ>Ok7G{$_ELRaXG%zvKF)}vMF*G%TFpPn^ zO*U(-;Amtk$VseBE!u9c$ylMg{X-aI8N0||1J<*ikz1-2=A2#eo#j)rRk_U-0PMUn AX8-^I diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index 263729fdfb736b57a95ed6303650b42b4cf12d14..62746bbfc73543c251baef032f224e74b56ebc49 100644 GIT binary patch delta 203 zcmZ3zm-W?N)(Kmg79XFuU5R(qQwA`Yd3=4?s*TUQmKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5wSfL_jX=tWnXkemaXlw~#80(lB z7;m1vf}@c?z91*DGPTG*DJwO(M6-7C!=KHQ9scuAHh9S~Ir4V-_B~pRsXCK=FNyP8 zDX1DMC@Ja0Cl(bYR>n>bjAWGBt`W|d&o1)u+;!&PI#rxAC#RfZul{#W@N=9g04)ba ANB{r; delta 154 zcmaF0mv!}C)(Kmg?$k`&uEd-DlmQHmUtSlMz44jXasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w`yD^$b{4NS~*jEqfm3{8z73}c{f zlg+bMa5S#{}n5v_el9`wupOc@ikd|MR zn^+R9q~zl26zXoJplYa~q@)v{SX7i)89V)=H>2?OzA(lzc9Em1q0{~s1>X9~-09i3 LbDox1LQ*^c*2qSB delta 171 zcmcb8CVFP3hDPRQI%Wo@dWPnP z21bTDhGvGwdd9{UW=6(3=4K{(Mux@)hQ>Ok7G{&rE>{sZG%zvKF)}vMF*G%TFpPn^ zO*XTy;ArG1$VseBEz+!=e$kV0=5)_s#)|FwT8ybW(*+_K*|%Q_W6Wn4nYr=SqI06( Tclca7Kku=tWBjJY8xI2j1X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5YTA?ClX=tWnXkemaXlw~#80(lB z7;ny9!O_ScUyzennOfwZl$DxXqFFnc@oe)pEym9}ljSdo^IIvX8Y(C$>BJ`%6(v^2 mPFIXz6yE+hjIoSeMChW{H!}uJuJrt$$;YkQD?JwFsRIBDTsz7D delta 154 zcmdn9m-X)+)(Kmg?$%7)uEd-DlmQHmUtSlMz44jMasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w{aD^$b{4NS~*jEqfm3{8z73}c{f zlg&9RI2zdsauO?3i?%mvGFIqrHwtGgV;8w2n$7T8;=!vwV!kT-rz_b!V#<~W09xZO AUH||9 diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index baf26998ae1ab466b439abf3aff78126575bbd0b..7958b5854139412d849cea9abff56d6b15c8efeb 100644 GIT binary patch delta 219 zcmdnGm-WkD)(KmgmK>kBU5R(qQwA`Yd3=4?s*TS=mKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{7GTA?ClX=tWnXkemaXlw~#80(lB z7;j#>f}@c?z91*DGPTG*DJwO(M6-5s;HycKqi@%5Kc>Z)s-u>YnV24*lb^1TmS2>c zSQ4$ITac=YN(*3q!XW5RFqg5J6$1?QDk~TI3wG3qj1K2c9F(=J(k74Q+%0@ P)*9_kTDqz*=IBHK98O4o delta 199 zcmeyemv!r2)(Kmg?$%7)uEd-DlmQHmUtSlMz42MdasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w{tD^$b{4NS~*jEqfm3{8z73}c{f zlg&$3a5Qohx8XLOO8+6uEe|QDFYbHJib0`)y8L9%MFao%=JtyjLZxTb<8X*^b8G* zjEqfmj10_8^el{xOpOe5%#1Dd%*;(p4GeTlElejntWXiNG&IvOG%(RIG`55=jCITm zj5k-W;ArHJFUU!(OfB+H%1TWx(X5?(@MrU6h5!7M1zvJYw!B@weU27ms?KEHOXB=i z3aW+*N=iEMiA6<;m9f(eBN?T(bA&VIvx_jB-=31s9PPVkg2S!byO)>mTrcJb0DOl+ AnE(I) delta 154 zcmX@Lm$iE@>x8XLcWWkYSK`fn$^Zt(FRu&B-uO&wxq+dDiJqCMp^>?nj+ud}o}sy+ zfsvt(p_!qvp0TlonUS%MxtWQck)g4Hp|Ossh1q0>6)NI}1}0`YM#d&OhNeakhA~jL z$>ypR9F1%RIf<32Mcex|87p+RJA^Zqv5Po8p3$)O^yQg5YUEDF+UfLflT-Q%078~9 A=l}o! diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index d6e0e69f9ddc69c6a457af2dd80b7863679fccdc..00f9c82e1d1b465455e75ebfbc3a2c9627898e86 100644 GIT binary patch delta 191 zcmeC(!+K^9>x8XLOOH?7uEe|QDFYbHJib0`)y8LQmKhkCnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5gv|L5Z($GxD(7;5;(AW~fFxD|M zFy8!kIY%RZd_hiPWonUsQdVkmiDvEOiD#O(PtauitTTE2MR9&B1yw@@B_*Bs#G<0a o%Gl`}!x@FQH-|Bnv5U-DR-ES@%$fE>#QgZ*Pe#*@PTXh?04ZBQ@&Et; delta 154 zcmX@JhqZSP>x8XL_i83?SK`fn$^Zt(FRu&B-uP_IG6O>k6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w|GmaB*x8km^r7#W-B7@8VE7{)-| zCY%2(=V)Xr$VseBE!r-q$ylMg{ZJTV8M{bhWSpR+n$F?;-Cug%JvmumVH?j60H2mI A0{{R3 diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index 84a4f7cc833169b86501b0a4a76f5fa697e05106..05b103f977e756ec01affc558a399f7bda7940a5 100644 GIT binary patch delta 215 zcmX@HkF|Y2>x8XLOOH?7uEe|QDFYbHJib0`)y8Mfmm3(Fnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{7$yFx|G($GxD(7;5;(AW~fFxD|M zFy3sjlB1D7z91*DGPTG*DJwO(M6-7KMmfewli%I0-yW&Wn5v_el9`wupOc@ikd|MR zn^+R9q~zl26zXoJplYa~q@)v{SX7i)89SZPmr;28zHr7eb`k$$fnjoOkM(vjh}Jr( Lgi9JPIA{a_5;;V| delta 171 zcmZqQ&w64X>x8XL_i83?SK`fn$^Zt(FRu&B-uUeKasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w|8SEz^^8km^r7#W-B7@8VE7{)-| zCY#Myax`)jx8XLOOH?7uEe|QDFYbHJib0`)y8K^%MFao%=JtyjLZxTb<8X*^b8G* zjEqfmj10_8^el{xOpOe5%#1Dd%*;(p4GeTlElej{tWXiNG&IvOG%(RIG`55=jCITm zj5imr;ArHHFUU!(OfB+H%1TWx+1{whSfQ(yl9`wupOc@ikd|MRn^+R9q~zl26zXoJ zplYa~q@)v{SX7i)89O~NoKa-DUN|G$ws6LLc9BO?E8V#6Y@U*t#qRAH|8V+dW(IQr D*f2lL delta 181 zcmX@Km$i8>>x8XL_i83?SK`fn$^Zt(FRu&B-uO&uxq+dDiJqCMp^>?nj+ud}o}sy+ zfsvt(p_!qvp0TlonUS%MxtWQck)g4Hp|Ossh1q0_6)NI}1}0`YM#d&OhNeakhA~jL z$>yRJ9E}_WIf<32MVhsf4No>t4*1JI{hSvg`(*vw6_exca!t-YGi$q@Hse9H|u%4QyZ#`i6DR=D4r=k?L`00<~O4*&oF diff --git a/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo b/Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo index d7a3fe3da07f90a61ef497bb8ca65f5c97064da8..0ef74dde625660c9144885944e01482f69443c7c 100644 GIT binary patch delta 203 zcmcb;mvz=Y)(KmgmK~qCU5R(qQwA`Yd3=4?s*TU8mKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{6rutG)5($GxD(7;5;(AW~fFxD|M zFy4H61xF))d_hiPWonUsQdVkmiDvC&!C%dj3;y#@PI$>Nx$}1U_BUFLsXCKuFNyP8 zDX1DMC@Ja0Cl(bYR>n?mjAWGB9udx%&n^;E)Gbi_a(2eySsOnrezMX_<^9@20A>P5 AZ2$lO delta 154 zcmbQWkM;Im)(Kmg?$=D*uEd-DlmQHmUtSlMz42MqasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w`+R;Y*@8km^r7#W-B7@8VE7{)-| zCYw*K;Amtk$VseBE!uuxld(c~`-E`DGIo)_0%iH%pDH*UTK}Uh#`NKBx$L%20JN7g Ai2wiq diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index 9dd3e162c3ebd639b75555867a4e5ec91852d6df..0e09cb9786b3ea23d06f7d1a25a935a153a4864e 100644 GIT binary patch delta 204 zcmZ3qkM-d`)(KmgmK~qCU5R(qQwA`Yd3=4?s*TSME;leTGuJbOk7G{&LuTT*;G%zvKF)}vMF*G%TFpPn^ zO*RXzABvF?32&ku9*DyF4tu4i*=JP+_^U0KA4eX`+Ob7 i|61FxhclM3i#$t+Whjz=RPZV^Be=#pa#`2buU`OUNkbt3 diff --git a/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo b/Server_Install_Pack/mpmissions/epoch.SaraLite.pbo index 173559e3c5945e4804c140d88734f976f22a5181..90588c7acd778cf879f37fcd67450b1e5a975247 100644 GIT binary patch delta 204 zcmdnEkM+Yo)(KmgmK~qCU5R(qQwA`Yd3=4?s*TSsEH^MRGuJbOk7G{&5txyp+G%zvKF)}vMF*G%TFpPn^ zO*Sj6Ok7G{&*txyp+G%zvKF)}vMF*G%TFpPn^ zO*U(+$eAJGp6cne;3YJ#x7FH`iYhC81ug(FMYNT MPZl$a=~S-=054oMqyPW_ diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index 299ee8c2e173eb0bab915839183d2e3517f24963..0f7145ab759de45b7a1accdea018905aba247425 100644 GIT binary patch delta 203 zcmbQem-W_O)(KmgmLH$EU5R(qQwA`Yd3=4?s*TUAmKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{4_SfL_jX=tWnXkemaXlw~#80(lB z7;o-g!O_ScUyzennOfwZl$DxXqFFon;?L&E2LJgdE4<{G?0LI<`x-6ARGrDTm&Ez4 z6jTirl$3Ph6N`!xD`TfSMlwommk4LfXBW95DDvX=cb)QeA)c=4*XG79Sjq7K0N92@ A_y7O^ delta 154 zcmcb$mv#1D)(Kmg9@I?SuEd-DlmQHmUtSlMz44jVasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w`qD^$b{4NS~*jEqfm3{8z73}c{f zlg(W#I2zdsauO?3i?+|#WUSEL9uUr0#x5e}p?B+&?C<>vQi>;?CR86U?8#dW08(l& AcK`qY diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index 6a6df672a8e5cab4a753ca3f0bc763126194cf1b..136e28719e4e07626796a0d8868dcb647f2e448f 100644 GIT binary patch delta 194 zcmZ3#hxOea)(KmgmLH$EU5R(qQwA`Yd3=4?s*TUiEi*7OGuJb8CVFP3hDPRQI%Wo@dWPnP z21bTDhGvGwdd9{UW=6(3=4K{(Mux@)hQ>Ok7G{&5ELRaXG%zvKF)}vMF*G%TFpPn^ zO*YG|;ArG1$VseBEz+!=-Wb9-X?kQZWBp{VyIk7?v>2mxwm%7DEMpg8-K}C7pJEyN RR6G12*EB6&jSt_}0|4gRHU$6x diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index 6535ba04e6f00a0e81ef161806bf3b24ca548c8a..53af8db1281ce4a585e45ef769535875f64fb18c 100644 GIT binary patch delta 218 zcmX@MhqZMt>x8XLD~?axuEe|QDFYbHJib0`)y8K}ml+tDnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{7$ywEx#x? zu_Rha$;H(v)ZI!!)lfl6NhdzBs3@^AcKXH$Mv-ZejBMKvhcV`}i*Rfe=`ol*!ScQ4 PG{&Hgg^LRx71RI#L|{m= delta 170 zcmZqO%X(}N>x8XL4{9cESK`fn$^Zt(FRu&B-uUe4G6O>k6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w|;m#c^y8km^r7#W-B7@8VE7{)-| zCYw!Ha5Qoh+ejS R_4i-+C$i6ZQP%4*4FC{MIP3rb diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index c6eeb597bedf777b0ca67ba8e3bc2b3a20312249..1c95de1a43c76977f58bf8b269dd36b4e3894229 100644 GIT binary patch delta 193 zcmaFAn|0kD)(KmgRve$WU5R(qQwA`Yd3=4?s*TV3mKhkCnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5=vRp;X($GxD(7;5;(AW~fFxD|M zFy4HBIY%RZd_hiPWonUsQdVkmiDvC&#($G0PrX&YO^Y#AXY$00;`~+$s)hh0 qMMa5~u~Qitg}0}MF_y857@s{`Q7+_^XyNi(?EJR-A)BuE6aWB~?LfT% delta 170 zcmZ3thxPq#)(Kmg9@b3UuEd-DlmQHmUtSlMz42M!G6O>k6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w{fmaB*x8km^r7#W-B7@8VE7{)-| zCY$dq=V;_8$VseBEz+!=?ij*2X}V-EWBue)ceu6-Xfa0XY+n+_SjH~mcyZ~%H6VV40|4&jH(US! diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index 4fd715a78162b909bd582e16d2b6f1687c01e043..aede22aa07941c63fde49117953e49445058ffe5 100644 GIT binary patch delta 203 zcmeC)$9ifX>x8XLE00gyuEe|QDFYbHJib0`)y8M5mKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5gutG)5($GxD(7;5;(AW~fFxD|M zFy8!o1xF))d_hiPWonUsQdVkmiDvC&$6w8p7yRd+JmDqBHq)$ delta 154 zcmX@LkF|Rr>x8XL4{IiFSK`fn$^Zt(FRu&B-uP_QasxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w`wR;Y*@8km^r7#W-B7@8VE7{)-| zCYyh);Amtk$VseBE!xhn#aN-c{XjTl8M}y)rH9t+0Ozf8QpYu<8X^@KZk&t-0Ebg9 A>Hq)$ diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 736477f5148d20a6ce0e892e319843b285b221f3..380efbca7cda4b9cd8591009d8f082f35215dfc3 100644 GIT binary patch delta 199 zcmcbxm$iQ%>x8XLE00gyuEe|QDFYbHJib0`)y8M}%MFao%=JtyjLZxTb<8X*^b8G* zjEqfmj10_8^el{xOpOe5%#1Dd%*;(p4GeTlElel3u22!PG&IvOG%(RIG`55=jCITm zj5i-x!O_ScUyzennOfwZl$DxXqFFon;o(V>%Wl_CUUQdg`)e)6Xr0MLm&66E6jTir wl$3Ph6N`!xD`TxEGwv1M?jFuq$}X}o*ogP=AN$}#Md~jvJu#kWX8GVG06^A6q5uE@ delta 173 zcmeC*$9iEe>x8XLk7_1vSK`fn$^Zt(FRu&B-uNtkxq+dDiJqCMp^>?nj+ud}o}sy+ zfsvt(p_!qvp0TlonUS%MxtWQck)g4Hp|Ossh1ulR6)NI}1}0`YM#d&OhNeakhA~jL z$>#klI2t($auO?3i!^H|Km0do`mbQd`pK*Ba!sE7q;7k@Hsf9G?XBUAW$Yqe=~mId U-mDjK@%OsM7q)MI?3|-V0rPM?p8x;= diff --git a/Server_Install_Pack/mpmissions/epoch.utes.pbo b/Server_Install_Pack/mpmissions/epoch.utes.pbo index d8b6ac41ed68539ea7c1c98ef3c9f02c619b2bd4..3a5c0124bb104b500aac211f6846ad694ad0e31f 100644 GIT binary patch delta 202 zcmaF8hjrCn)(KmgRve$WU5R(qQwA`Yd3=4?s*TUMmKzwEnd_Na7?~Lw>X=zr=ouOq z85x`C7#WzG=vf#WnHm}Bm>FB@nVFlI8W`x9T9{5&SfL_jX=tWnXkemaXlw~#80(lB z7;lbV!O_ScUyzennOfwZl$DxXqFFn6;m_tt|M@3>c)>AQ@^<<58ZE|DoyokH#QCih zR1FoBlyu?~i;5B}W2Xy7GD>ZK5yqI$F0!!qr1gphIpgTbg$$x6KQ(^Za9;xegU3Vr delta 154 zcmZ3rm-Y1?)(Kmg9@b3UuEd-DlmQHmUtSlMz3~~>asxvP6FoCiLnCuD9Ww({JwtOt z10zEnLo-8TJ!4}FGb3Xib2Ae?BST{YLt`CN3$w`zD^$b{4NS~*jEqfm3{8z73}c{f zlg&{pI2zdsauO?3i?-)$GFIqrR|sb;V;4z2&yiPVw`JFXR<+M|l}sVuuKwr)05j__ AlmGw# diff --git a/Sources/epoch_code/System/player_login.fsm b/Sources/epoch_code/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/epoch_code/System/player_login.fsm +++ b/Sources/epoch_code/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Altis/System/player_login.fsm b/Sources/mpmissions/epoch.Altis/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Altis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Altis/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Australia/System/player_login.fsm b/Sources/mpmissions/epoch.Australia/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Australia/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Australia/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bootcamp_ACR/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Bornholm/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Chernarus_Summer/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Desert_E/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Esseker/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Esseker/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Mountains_ACR/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Porto/System/player_login.fsm b/Sources/mpmissions/epoch.Porto/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Porto/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Porto/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm +++ b/Sources/mpmissions/epoch.ProvingGrounds_PMC/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Sara/System/player_login.fsm b/Sources/mpmissions/epoch.Sara/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Sara/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm +++ b/Sources/mpmissions/epoch.SaraLite/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Sara_dbe1/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Shapur_BAF/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Stratis/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Stratis/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Takistan/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Takistan/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.VR/System/player_login.fsm b/Sources/mpmissions/epoch.VR/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.VR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.VR/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Woodland_ACR/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm +++ b/Sources/mpmissions/epoch.Zargabad/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n diff --git a/Sources/mpmissions/epoch.utes/System/player_login.fsm b/Sources/mpmissions/epoch.utes/System/player_login.fsm index 51e595cd..d929174b 100644 --- a/Sources/mpmissions/epoch.utes/System/player_login.fsm +++ b/Sources/mpmissions/epoch.utes/System/player_login.fsm @@ -190,8 +190,8 @@ link97[] = {85,79}; link98[] = {86,16}; link99[] = {86,22}; link100[] = {87,31}; -globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-184.651276,605.171021,1613.338623,764.213013,586,880,1}; -window[] = {2,-1,-1,-1,-1,1046,234,1526,234,3,604}; +globals[] = {0.000000,0,0,0,0,640,480,1,244,6316128,1,-267.582611,688.102234,2074.832520,639.674500,585,880,1}; +window[] = {2,-1,-1,-1,-1,916,104,1396,104,3,603}; *//*%FSM*/ class FSM { @@ -1039,7 +1039,7 @@ class FSM priority = 0.000000; to="Setup_Player_Obj"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines player)}"/*%FSM*/; + condition=/*%FSM*/"!(isNull _playerObject) && {_playerObject getVariable [""SETUP"",false]} && {_magCount == count(magazines _playerObject)}"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -1338,6 +1338,7 @@ class FSM condition=/*%FSM*/"!isNil ""EPOCH_C_SET"""/*%FSM*/; action=/*%FSM*/"_array = EPOCH_C_SET;" \n "EPOCH_C_SET = nil;" \n + "diag_log format[""DEBUG: %1 "",_array];" \n "_playerObject = _array deleteAt 0;" \n "_playerVariables = _array deleteAt 0;" \n "_currentWeapon = _array deleteAt 0;" \n