From 5728c29baa200882df94cebbf887dd374c0b06a2 Mon Sep 17 00:00:00 2001 From: vbawol Date: Fri, 8 Jul 2016 17:34:13 -0500 Subject: [PATCH] 0.3.9 b562 simplify new load vehicle, (realized sleep was not needed as allowDamage does not effect scripted damage (per the wiki) [added] old load vehicle script and epochconfig,hpp flag. (default is false = use new load vehicles, true use old one from 0.3.8 --- .../@epochhive/addons/epoch_server.pbo | Bin 429669 -> 438603 bytes .../@epochhive/addons/epoch_server_core.pbo | Bin 21149 -> 21149 bytes .../addons/epoch_server_settings.pbo | Bin 451335 -> 451335 bytes .../@epochhive/epochconfig.hpp | 3 + .../mpmissions/epoch.Altis.pbo | Bin 1334229 -> 1334229 bytes .../mpmissions/epoch.Australia.pbo | Bin 1332465 -> 1332465 bytes .../mpmissions/epoch.Bootcamp_ACR.pbo | Bin 1333558 -> 1333558 bytes .../mpmissions/epoch.Bornholm.pbo | Bin 1333397 -> 1333397 bytes .../mpmissions/epoch.Chernarus.pbo | Bin 1333373 -> 1333373 bytes .../mpmissions/epoch.Chernarus_Summer.pbo | Bin 1333394 -> 1333394 bytes .../mpmissions/epoch.Desert_E.pbo | Bin 1333523 -> 1333523 bytes .../mpmissions/epoch.Esseker.pbo | Bin 1333361 -> 1333361 bytes .../mpmissions/epoch.Mountains_ACR.pbo | Bin 1333800 -> 1333800 bytes Server_Install_Pack/mpmissions/epoch.Napf.pbo | Bin 1334194 -> 1334194 bytes .../mpmissions/epoch.Porto.pbo | Bin 1333508 -> 1333508 bytes .../mpmissions/epoch.ProvingGrounds_PMC.pbo | Bin 1333545 -> 1333545 bytes Server_Install_Pack/mpmissions/epoch.Sara.pbo | Bin 1333779 -> 1333779 bytes .../mpmissions/epoch.SaraLite.pbo | Bin 1333789 -> 1333789 bytes .../mpmissions/epoch.Sara_dbe1.pbo | Bin 1333794 -> 1333794 bytes .../mpmissions/epoch.Shapur_BAF.pbo | Bin 1333521 -> 1333521 bytes .../mpmissions/epoch.Stratis.pbo | Bin 1333369 -> 1333369 bytes .../mpmissions/epoch.Takistan.pbo | Bin 1333479 -> 1333479 bytes .../mpmissions/epoch.Tanoa.pbo | Bin 1334001 -> 1334001 bytes Server_Install_Pack/mpmissions/epoch.VR.pbo | Bin 1333351 -> 1333351 bytes .../mpmissions/epoch.Woodland_ACR.pbo | Bin 1333798 -> 1333798 bytes .../mpmissions/epoch.Zargabad.pbo | Bin 1333447 -> 1333447 bytes Server_Install_Pack/mpmissions/epoch.utes.pbo | Bin 1333502 -> 1333502 bytes Sources/epoch_config/build.hpp | 2 +- Sources/epoch_server/build.hpp | 2 +- .../epoch_vehicle/EPOCH_load_vehicles.sqf | 54 ++-- .../epoch_vehicle/EPOCH_load_vehicles_old.sqf | 264 ++++++++++++++++++ Sources/epoch_server/config.cpp | 1 + Sources/epoch_server/init/server_init.sqf | 7 +- .../epoch_server/init/server_variables.sqf | 3 +- Sources/epoch_server/treeView.txt | Bin 8842 -> 8924 bytes Sources/epoch_server_core/build.hpp | 2 +- Sources/epoch_server_settings/build.hpp | 2 +- build.txt | 2 +- 38 files changed, 302 insertions(+), 40 deletions(-) create mode 100644 Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server.pbo index 76d57f6b3c3659520a631d527ad4ea4c42976d9b..f337616099295c9e04694669bda664f8526044f8 100644 GIT binary patch delta 2149 zcmaJ?2}~4c6z;y6Q3iqKSa4Zb99gK#f?P(cVku}3L@FLtYmHeqFv_ya4lql#u|$n& z>|ulWE03#+HPw0)5vU85)rRh3tVyplP1^L(Hkw*%V%xMf(X@TD3&tMlBs25RoA-b7 z-uK@7=4!X;(zm8PW!(4H?X62vCbb5(tMvyPrbL}SzB*x2SH|`==O1Jx329ch z;;6PiE7v%y+_Gv{+|{{i!^Q{hKX#MzVT{X*( zu+r)}`^gxD)&LtyULnkzJNKc&oqE$Qy-DZOo8V*%-cfWG-E#@+4LE zO4W`!$0k{Fc&eour?*~ldb}zgY6Sz%3qS&hB9;eWwsvn0z)YQpM*~nux6cBw5I5g| zSd@ZLfKLWt&i;>p$DKh)VZ%x+9tlDrej0=fw%TLF{Ns>_KbVC`+6rS}!9#xvCM+6* zs3H@6Ar3c}2%>7Dd!&`qq3~uOwbYE8w6zK%T zv(dQ;uO5PRxNQ`SSo}Iv+H%tEsmK)Q_=&Y-2^2n>hysxZxZ1&*p z*CBwL4nq;Pd?@7N=c7=J8%lXT{y%(oEYhWFUx~+?qhQ0HS2zLB%;F5bp~Eo3p>P87 zeRW5H1MD~k=^@^+`#5CdwG)tn*+27fSbh?6aprD%n;n2@LZ}`gl8G9P;}F9Zjg)%@ zksg-pj>bkRm|L#$O0$Z>n?g01vrebS=|RZHr9qgD+k=pXL)BE5H#OUfeZgHm^s%k7#@U6b19yDWaz0HeZUpeGq|_eN?ZGmvvKc{T`}@ zxCf%y-RH@Ef_yLb5lAS7<`!c=tNQ#Zxyl z)28t_MQvZo0Ayn603~{xK>~Zum5L=I4PeUvL}KRvm_zYa?t?N+ZlflM8H9Lt&NT_6 zZ;<<0R~&x55A^u#OFA>lcV)7vb$Wc^2Ekn%r2hPU5X{)UAJW(tt{5EKPetq-B=m3g zlZWeV8d6gm%s^W^L1eX4XT86cc<=sELu{kId!r53GhS0|Q8`1D_>V)dTw}9%m_&(y&Gmghd#ElE5xY*V{bt+v(y)a6WMkaY|O7r#rMvFkzsv2+u}<6hYuy2 z$wm|lcD}5OWUCtV7#IPw7Sy*RunOn;;ZfaI{1{1M_xd4KdvVGSNqnA-R+s!xz-i^x zorBqiW@)3+_?V-rMzWJitDz3iTxP_~Ecja!?KlT>rv2MnlUC7|7j7JOr96XiOBUc$ zxm3ATximGsuaPj&V*<;&DX@b}qQejVB~kdnd8$Wfgx>g5ND3+S6at%Q_pngM?gfF@ z&{^s5RQ#rd6ES9#S|xWBk~5+s|6gdRneCdCCgFsr7AH`K;ySy-?H(6sH7D#6w_Z{; zttMtfQFY65JuZJlXP7UFTkTsU@>e!L8vc=KQ`;<6DNPRq-qHy5KJ>ZPC~O delta 633 zcmX^8Nb2bvsRDgxSo2ygZG`ilVBU3q_tWvjP=` zmrRb4C}KU`TNj=-`Laa(i;s%%$Z#dKbH`}qS*2`tmMJZBPfO3X`9NGvGGsZ=P*S13!($V|>jEmlZOD@iR< zC{I-=Ps}V)D9+DKRVc~KP1WP&ijIdWa!JfhOiwM=(U>mi#3(u4|1^`(bnh2TI?S3d zq5G$p?CLdR6^aWI%kvbfdAT?X5{nXZixr}ymC#I4(ut0Z)d31;=H`~>rG^0QQqnOr zG60JeXXcjXB$j06=Xn5Ko0D3kq?4AIQ=A$bYYjA0UmxPgwEQB3LqVR&Ni9)G^vcOW z_^LRyq$CIA3C`l2)YJk6B-@}S0aYlZW#%R3D5OBV2UH7kIA?r?!t_8E=SYq19MQ`&ed#48FWEL%%&&qXEK^TeLs^lOD#y}K9E?^6($8P5SNn^EEsTrNqM@}b0($f@z0sGriTSF z3GktY{B(_@OqaILe#ykyxcx{L^KQlID|?u=rl0I*7Hik)Wd>rF?OMI8J2kemY-2V4 bEyDWlw(+VT>HFEOd2Otf)y0_}>^}kkBPrfn diff --git a/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo b/Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo index 72fc69d397f0fcf8a0191cc478be2a70e264eaea..0c4170c4755c8279ad43550e8e5ea35ad705a484 100644 GIT binary patch delta 95 zcmbQclyUA-#tFX6uQeJb21qkcJ5s+f?+_D+JK2~y2E?B{i8)Zx(!#>rRLPo`s}_jg v@7|wOnwgVgYiedV*-+HVf9048Vh6vc%_W;K1~Jyfm|TW delta 95 zcmbQclyUA-#tFX6(~s0o43K74KUlXh?+_D+JK2~y2E?B{i8)Zx+}P04P|2E?s}_jg v@7|wOnwgVgYiedN*-rT*;c3s}_jg@7@nK)YjC@u=yQ(`#W|!vj_A>oGv3U75E0xQFxvzG!0|P$ delta 161 zcmZoaCf$BadP1PX%p>*TE({C|Nu`-NDS86^@8kh>qB4~L diff --git a/Server_Install_Pack/@epochhive/epochconfig.hpp b/Server_Install_Pack/@epochhive/epochconfig.hpp index b70263a0..3e0b9573 100644 --- a/Server_Install_Pack/@epochhive/epochconfig.hpp +++ b/Server_Install_Pack/@epochhive/epochconfig.hpp @@ -57,3 +57,6 @@ hiveAsync = true; // true = asynchronous hive calls (non blocking), false = sync hiveAdminCmdExec = false; // true = enables extra (To Be Released) feature to allow execution of code via hive. hiveAdminSavePlayerList = true; // true = enables saving of playerUID array to hive value PLAYERS:#InstanceID. hiveAdminCmdTime = 5; // how many seconds between each command queue call. + +// DEBUG +useOldLoadVehicles = false; diff --git a/Server_Install_Pack/mpmissions/epoch.Altis.pbo b/Server_Install_Pack/mpmissions/epoch.Altis.pbo index 8c0323258f572a38f1e3a66e179c7f5b06909da4..407badf65e619145727943abbdb727817312123f 100644 GIT binary patch delta 156 zcmcb*J@D%GzzJr|pEVjbTKd_tz1L_6=VzF_(LrkSa@##T%(IWwPfqiSX0^1iurO*q z=GA`8ixG&KfS4JGS%8=oh}nRc9f&!$AM@huy2fbK9;nC##N0s41H`;Q%m>8$Kr8^n nfI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvA_XiR|!ox#=T{+7D diff --git a/Server_Install_Pack/mpmissions/epoch.Australia.pbo b/Server_Install_Pack/mpmissions/epoch.Australia.pbo index 7a22a1a81cb6876a752d7c2909c2f91287675417..5b318bd0c9c058b48c1f00f82e1eb77d5b08179e 100644 GIT binary patch delta 156 zcmeykGVtTdzzJr|-!&RGTKd_tebHzL=VzF_(LrkSa@##T%nOdxPfqiSX0^1iurO~v z=GA`8ixG&KfS4JGS%8=oh}nRc9f&!$AM@huy2fbK9;nC##N0s41H`;Q%m>8$Kr8^n nfI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvI3+se>ph- diff --git a/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo index e5d044bf36cb39cbbf9f52c2ecf449d4ca41c306..3a436a93654a9f2ae05c69c0a353affe2443508c 100644 GIT binary patch delta 156 zcmdnCDRA4SzzJr|e>564TKd_t{nTg(=VzF_(LrkSa@##T%u9~cPfqiSX0^1iurz8u z=GA`8ixG&KfS4JGS%8=oh}nRc9f&!$AM@huy2fbK9;nC##N0s41H`;Q%m>8$Kr8^n mfI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvDe*7uhEGxLKf`E6l-omBNO_HZSzjOpF0rY&cN> diff --git a/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo b/Server_Install_Pack/mpmissions/epoch.Bornholm.pbo index 94703a4b5f15686f7f0159c96648fca8ddff4373..d0b9b14e3ee999b42ba03ba5df93db50444511a6 100644 GIT binary patch delta 156 zcmbQbF>va}zzJr|jG7G_E&XiS{%JIX^D|7|=peOux$Pbv=9Ne4C#QKuvszkMSeiE< z^J+il#R$YqK+FupEI`Z(#B4y!4#XVWk9l!+U1KzA4^-p=Vs0Sj0b*Vt<^y7WAQk{( mK_C_aV&Uz9iXsN)BHj}3-r7#h@lj6au82_mtSoq?s}lf^b~gq9 delta 156 zcmbQbF>va}zzJr|YmU@!wDhxOTY02DoS$LxMhB_Q%We1YFk2t2o1Eqq&1!CJWN6fU z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvB7Gi-fJ*Cek*eX#bLY)f`sy70OJ@4s`$kGjupv diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus.pbo index 930fef8a4a6895da8705d3cd7a60f1e274db3176..bb4325b2601c2a702b6456f3341bdf1ad151a93b 100644 GIT binary patch delta 156 zcmeynA@J{pzzJr|Y?=)lE&XiSm^B;1`57i}bdcJ-+;$HS^SUGTlheGSSuHIr4UC$P zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMG*;ek%n~9Yb&1_T|OjbIHQ7nEsys$wxs}$U^h+x delta 156 zcmeynA@J{pzzJr|8;{g)wDhxOTX&>BoS$LxMhB_Q%We1YFgqNqo1Eqq&1!CJWN6-e z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvC&$i{$*fccj^*@d+36H}j+FpVSt%zGnac&aOJ? diff --git a/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo b/Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo index 5e6d6728fc65deb9f4205c5824b7807db2de2580..b5511701d182e2b4157974bfd41a1b71be122b48 100644 GIT binary patch delta 156 zcmbQVF>unxzzJr|+?ov=E&XiSI5Zo=`57i}bdcJ-+;$HS^X4PunxzzJr|+m6(4wDhxO+kB)xoS$LxMhB_Q%We1YFuNYCo1Eqq&1!CJWMtHQ z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvIcui^N~~GEsG2=+pKKcQo&XuI!WY_E!Y}T7fza diff --git a/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo b/Server_Install_Pack/mpmissions/epoch.Desert_E.pbo index ad11bfdb6112ab6b8fb97081711ad9d18c45840f..60c74598fff12dda2cad4c127f92fa7119f84cdd 100644 GIT binary patch delta 156 zcmbQdDRAI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvGQ#7in%W*vl{S%Ph6?{$^EC#k=2nLt_C}`8kIG diff --git a/Server_Install_Pack/mpmissions/epoch.Esseker.pbo b/Server_Install_Pack/mpmissions/epoch.Esseker.pbo index 832d7df1fef92676bdcc8aa72bec7465d6238765..a4698f636238d6ada44eeb91d6dbc9d76f937161 100644 GIT binary patch delta 156 zcmeykA@JjdzzJr|qM8jGE&XiS1T`DN`57i}bdcJ-+;$HS^WG!%lheGSSuHIr4b7U5 zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMG+ozk>ise&$wq58{_p_U045ns-<=PvJ?QK&^P-4 delta 156 zcmeykA@JjdzzJr|2aeQlwDhxO+k2!woS$LxMhB_Q%We1YF#8{@o1Eqq&1!CJWNg%Y z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvI!!izpV}VOmsPQ~bM~O)>MsQu}*Md8z=u`8h=Z diff --git a/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo index 9d6050f0619c2f60179b0605a42ef26b6b8557eb..211681655fd3c159c16781e0b9a15a5199e8ccce 100644 GIT binary patch delta 156 zcmZ3nC2+--zzJr|l9~-0E&XiS#5Ehj`57i}bdcJ-+;$HS^Wh`)lheGSSuHIrjSQQQ zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMUlf6A{m#tH+h%qP8NS=6DagE!T#lm_GbW8w>WYD delta 156 zcmZ3nC2+--zzJr|M~~ERwDhxOJ9MNzoS$LxMhB_Q%We1YFoztho1Eqq&1!CJWNhAi z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvBJo5UE#)3)^sh_R{3?vRM;6bJ};f_Wl6?jd(i* diff --git a/Server_Install_Pack/mpmissions/epoch.Napf.pbo b/Server_Install_Pack/mpmissions/epoch.Napf.pbo index 6c87908f7d26359633eb5b97ddd6b6e0310aacd5..ba2ca31e1584b9724899974d899dcbc3cbebbe0f 100644 GIT binary patch delta 156 zcmdnAJ#f?ZzzJr|a+(brE&XiSq%|AD`57i}bdcJ-+;$HS^NAz%lheGSSuHIrjm(;l zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY nAP@@yvGDdlMG;>s5&w&4*JfP2@8*5<(5xGu?#s;x@lXc delta 156 zcmdnAJ#f?ZzzJr|r;gNbwDhxOJAR}-oS$LxMhB_Q%We1YFh?G&o1Eqq&1!CJWMb5O z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvJ18i70yBG7g@U@PBhht*pQInWg5e4etSwQ8}#u diff --git a/Server_Install_Pack/mpmissions/epoch.Porto.pbo b/Server_Install_Pack/mpmissions/epoch.Porto.pbo index bd1adabc31dd964e5a66c234b3673ff3ee969e5e..dfe1ceaf432e971213fcd323e8e72e117d559a0c 100644 GIT binary patch delta 156 zcmZqK6xgyUaDo}LvS!0ZOFvsS18ftX|aF)z-pYm7$ifr?x}%nigmK+Frod_c?(!~#Gp m2*g4_EWABXQDnZk$kd(sip8hi+SM(8yZmQH@spJ@dr|>QQ#r5z delta 156 zcmZqK6xgyUaDo~0`6KlkE&XiS&K#)^=VzF_(LrkSa@##T%y9?nCZ~Btvzi+lnV2^p z^J+il#R$YqK+FupEI`Z(#B4y!4#XVWk9l!+U1KzC4^-p=Vs0Sj0b*Vt<^y7WAQk{( nK_C_aV&Uz9iX!vPMNT>K&s(Hf_^I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvBI27qR!uvp4^3(yG>@by;VxMtJ;H5h(zTYB+ZQ diff --git a/Server_Install_Pack/mpmissions/epoch.Sara.pbo b/Server_Install_Pack/mpmissions/epoch.Sara.pbo index c041925e2c7d980a10d6c60362f9926787a29025..fcfe5d4ac26b7df679996e5e7335edf373debe6f 100644 GIT binary patch delta 156 zcmbQdC2;bVzzJr|x|$6eE&XiSv@{#S`57i}bdcJ-+;$HS^R*-OlheGSSuHIrO$?il zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMUizDA`8lv23Tfrx5gTaTI`U{iP`j?RSp16bv7FS delta 156 zcmbQdC2;bVzzJr|H;>eBwDhxOyLO~LoS$LxMhB_Q%We1YFlQXBo1Eqq&1!CJWNO}g z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvGSL5a}-4|N86sf@|$A<_rL1`8LJ? delta 156 zcmbQcC2;PRzzJr|_m0$WwDhxOyM3fSoS$LxMhB_Q%We1YFy|huo1Eqq&1!CJWMI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvIo|5Xo>*pP6uY-$~AC?{qb19c{R+ZTJ@eqwYH9 diff --git a/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo b/Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo index b67021492d70ca301a73c9a6f23e86a8b4043875..a5eec5cd90a67c21fec6883dc2012d4605b82f7b 100644 GIT binary patch delta 156 zcmZ3qC2-M}zzJr|W||EfE&XiSj5Qm=`57i}bdcJ-+;$HS^MfPxlheGSSuHIrO%0ll zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY nAP@@yvGDdlMUlN0B3uR+W*vQh*YC~MbrmZUoy delta 156 zcmZ3qC2-M}zzJr|kB-!DwDhxOdvK&aoS$LxMhB_Q%We1YFc%%Ho1Eqq&1!CJWMI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvIp25OFJ2zb)p_WzYF-!n4F9AHrXm%})aWt;9Ov diff --git a/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo b/Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo index 78c8e8fab390b58a22bc84d5d785d8444bd23cb5..548f26d8d45a52ec9114f9cef83ebc6def08f163 100644 GIT binary patch delta 156 zcmbQZDRAPZzzJr|R+ delta 156 zcmbQZDRAPZzzJr|&yUn^wDhxOdvc^coS$LxMhB_Q%We1YFqa>!o1Eqq&1!CJWNz4e z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvGQz7kPemt8UzZCrwvxUY2C|94~feVY?InzHK}E diff --git a/Server_Install_Pack/mpmissions/epoch.Stratis.pbo b/Server_Install_Pack/mpmissions/epoch.Stratis.pbo index d5d7f868c68651f187e307a62d3ef6e5778072f4..7500c80bbf9d2ff023b51c1e5b43d3ec4796601e 100644 GIT binary patch delta 156 zcmeylA@JvhzzJr|_L>bFE&XiSY&9Fg`57i}bdcJ-+;$HS^Q$BElheGSSuHIrO)Z;` zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMG+Bm5y^J_8T?Z|{5aS6>qmo>vS@U}rDXu{dpTwR delta 156 zcmeylA@JvhzzJr|Z;sS&wDhxOdwHZjoS$LxMhB_Q%We1YFjpU}o1Eqq&1!CJWNy}c z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvF4hi*#5RKG-j)x!Y4`!46Xfk+g#St|kBpC^*3Y diff --git a/Server_Install_Pack/mpmissions/epoch.Takistan.pbo b/Server_Install_Pack/mpmissions/epoch.Takistan.pbo index 32b6724f5d57b0f6e60c55d47fae7c035f1ba92c..945651ec9cee97c89db38f1a9ba73946aff361ab 100644 GIT binary patch delta 156 zcmaF9G4T1uzzJr|E}9J+E&XiS95oxl`57i}bdcJ-+;$HS^SdMUlheGSSuHIr%}kn) zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMUf_R5u>M0%btE0ZJZ%9f3N7o=GcbZ#qR*_!a3*w delta 156 zcmaF9G4T1uzzJr|ACJ^;wDhxOdv~NhoS$LxMhB_Q%We1YFgF~mo1Eqq&1!CJWMSBR z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvC6ji?jyKk#$<#XVI~D<4Y;`6AqllrV0QJ&^e0$ diff --git a/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo b/Server_Install_Pack/mpmissions/epoch.Tanoa.pbo index 0e27c22683b70268a40d6ccba66194a3217f7f69..057ef4e5082551b20365f104237bd7c3e33e62c2 100644 GIT binary patch delta 156 zcmeykHSpuszzJr|o|+9CE&XiS+%y})`57i}bdcJ-+;$HS^XDV=lheGSSuHIr%`BUb zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMUfs$kv%`$zOG3$b2`TG^<3BbPFr!;8&3ch4LY*` delta 156 zcmeykHSpuszzJr|-;UI8wDhxO`+TH6oS$LxMhB_Q%We1YFt;A8o1Eqq&1!CJWMS5P z%&YyF7b6fe0WmWWvj8zG5VHX>I}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D m1%X%yh=sQYDvI=2idgBM3rsWWIJ?`Uzcu{*6bI?`xoH3@>N@NI diff --git a/Server_Install_Pack/mpmissions/epoch.VR.pbo b/Server_Install_Pack/mpmissions/epoch.VR.pbo index 31b97872897b5f5f8ce3a3485977e8770c911066..5812f18f0c7dc2da58806efdc1d25acc3d72f50c 100644 GIT binary patch delta 156 zcmaF9A@KQzzzJr|!I}*lE&XiS0yG=K`57i}bdcJ-+;$HS^WP)&lheGSSuHIr%`Kac zd9@$&VgzC)AZ7+)79eH?Vm2UV2V#!x$GkYZt}z<52P$#_F*gwN05LBR^8qnG5DNgY mAP@@yvGDdlMG+=*k(`xQr*6El2?|>#BxuxYdD3w`%OU{thd1>A delta 156 zcmaF9A@KQzzzJr||BuvfwDhxO`*Wl|oS$LxMhB_Q%We1YFi$*KH#yBKn$_Ic$kMd= zm{l&kBd!Qm05OV`D4-oSLF&_}~1F--Q n3j(na5DRY)R1{${7jb`oa{7wiYqPqqACC_^wVs#Fb9xQ{Jsms{ diff --git a/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo b/Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo index d08b5eb61728fcacd911c8591a08032c1b0fe031..7341485ef1920ffcbcf7644307f1a1bcefcadf8e 100644 GIT binary patch delta 156 zcmZ3sC2-l6zzJr|k(vz~E&XiSLNy!0`57i}bdcJ-+;$HSGt<%f$!T8EtdF#<6Y5HkZY3lOscF&hxG12M<;V_uwH*BFi30~NV|m>Y8$Kr8^n nf%ymr)Y047UOR%5*r- diff --git a/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo b/Server_Install_Pack/mpmissions/epoch.Zargabad.pbo index 3101783cde297447b3d83230a6720856a02dfee2..f1a73df9a47a202647613c9eb1a82e2a8ae731f2 100644 GIT binary patch delta 156 zcmX@UG4S}tzzJr|aheSqE&XiSqBR@B`57i}bdcJ-+;$HSGuzSn$!T8EtdF#<6Y5HkZY3lOscF&hxG12M<;V_uwH*BFi30~NV|m>YU+ok~kfU!BA delta 156 zcmX@UG4S}tzzJr|oJZ?7TKd_tu^p`s=VzF_(LrkSa@##T%(D;HO-}QQW;Hi9HZW~I z=GA`8ixG&KfS4JGS%8=oh}nRc9f&!$AM@huy2fbO9;nC##N0s41H`;Q%m>8$Kr8^n nfI}mehKjy{Rb&b)mJy4Mgh`E872Z(urm=B2gfmi^D n1%X%yh=sQYDvHcB7un^tpS@+9`X0uY+{#n8S1g{fTkI78KIA)! diff --git a/Sources/epoch_config/build.hpp b/Sources/epoch_config/build.hpp index 5db56ac3..52e5377b 100644 --- a/Sources/epoch_config/build.hpp +++ b/Sources/epoch_config/build.hpp @@ -1 +1 @@ -build=561; +build=562; diff --git a/Sources/epoch_server/build.hpp b/Sources/epoch_server/build.hpp index 5db56ac3..52e5377b 100644 --- a/Sources/epoch_server/build.hpp +++ b/Sources/epoch_server/build.hpp @@ -1 +1 @@ -build=561; +build=562; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf index 6b49f1d1..323a56b4 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf @@ -62,7 +62,7 @@ for "_i" from 1 to _maxVehicleLimit do { }; // spawn vehicle at temp location. - _vehicle = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + _vehicle = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"]; if !(isNull _vehicle) then { // make vehicle immune from damage. _vehicle allowDamage false; @@ -186,6 +186,27 @@ for "_i" from 1 to _maxVehicleLimit do { // remove and add back magazines works for armed trucks but not helis ATM {_vehicle removeMagazineGlobal _x}count (magazines _vehicle); {_vehicle addMagazine _x}count (_arr select 6); + + // set damage and hitpoints + _vehicle setDamage _damage; + _allHitpoints = getAllHitPointsDamage _vehicle; + if !(_allHitpoints isEqualTo []) then{ + _actualHitpoints = _allHitpoints select 0; + if ((count _actualHitpoints) == (count _hitpoints)) then{ + { + _dmg = _hitpoints param [_forEachIndex,0]; + if (_x in ["HitFuel", "HitEngine"]) then { + _dmg = _dmg min 0.9; + }; + _vehicle setHitIndex [_forEachIndex, _dmg]; + } forEach _actualHitpoints; + }; + }; + _vehicle allowDamage true; + // vehicle simulation handler + if (_simulationHandler) then{ + _vehicle enableSimulationGlobal false; + }; // turrets /* _mags = _vehicle magazinesTurret [0]; @@ -220,38 +241,7 @@ for "_i" from 1 to _maxVehicleLimit do { diag_log format["DEBUG: invalid vehicle data: %1",_response]; }; }; - -// re-enable damage and apply to vehicles after we wait some time. -[_vehicleDamages,([_serverSettingsConfig, "immuneVehicleSpawnTime", 120] call EPOCH_fnc_returnConfigEntry),([_serverSettingsConfig, "simulationHandlerOld", false] call EPOCH_fnc_returnConfigEntry)] spawn { - params [["_vehicleDamages",[]],["_immuneTime",120],["_simulationHandler",false]]; - // wait for some time to let all vehicles settle. - sleep _immuneTime; - // set final damages - { - _x params ["_vehicle","_damage","_hitpoints"]; - _vehicle allowDamage true; - _vehicle setDamage _damage; - _allHitpoints = getAllHitPointsDamage _vehicle; - if !(_allHitpoints isEqualTo []) then{ - _actualHitpoints = _allHitpoints select 0; - if ((count _actualHitpoints) == (count _hitpoints)) then{ - { - _dmg = _hitpoints param [_forEachIndex,0]; - if (_x in ["HitFuel", "HitEngine"]) then { - _dmg = _dmg min 0.9; - }; - _vehicle setHitIndex [_forEachIndex, _dmg]; - } forEach _actualHitpoints; - }; - }; - // vehicle simulation handler - if (_simulationHandler) then{ - _vehicle enableSimulationGlobal false; - }; - } forEach _vehicleDamages; -}; // add all spawned vehicles to remains collector. addToRemainsCollector _allVehicles; diag_log format ["Epoch: Vehicle SPAWN TIMER %1, LOADED %2 VEHICLES", diag_tickTime - _diag, count _allVehicles]; - true diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf new file mode 100644 index 00000000..07150427 --- /dev/null +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_vehicles_old.sqf @@ -0,0 +1,264 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Load Vehicles + + 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_server/compile/epoch_vehicle/EPOCH_load_vehicles.sqf +*/ +private ["_location","_class","_dmg","_actualHitpoints","_hitpoints","_textures","_color","_colors","_textureSelectionIndex","_selections","_count","_objTypes","_objQty","_wMags","_wMagsArray","_attachments","_magazineSizeMax","_magazineName","_magazineSize","_qty","_objType","_marker","_found","_vehicle","_allHitpoints","_config","_worldspace","_damage","_arr","_arrNum","_vehicleSlotIndex","_vehHiveKey","_response","_immuneVehicleSpawnTime","_diag","_dataFormat","_dataFormatCount","_allVehicles","_serverSettingsConfig","_simulationHandler","_immuneVehicleSpawn"]; +params [["_maxVehicleLimit",0]]; + +_diag = diag_tickTime; +_dataFormat = ["", [], 0, [], 0, [], [], 0]; +_dataFormatCount = count _dataFormat; +EPOCH_VehicleSlots = []; +_allVehicles = []; + +_serverSettingsConfig = configFile >> "CfgEpochServer"; +_simulationHandler = [_serverSettingsConfig, "simulationHandlerOld", false] call EPOCH_fnc_returnConfigEntry; +_immuneVehicleSpawn = [_serverSettingsConfig, "immuneVehicleSpawn", false] call EPOCH_fnc_returnConfigEntry; + +for "_i" from 1 to _maxVehicleLimit do { + _vehicleSlotIndex = EPOCH_VehicleSlots pushBack str(_i); + + _vehHiveKey = format ["%1:%2", call EPOCH_fn_InstanceID,_i]; + _response = ["Vehicle", _vehHiveKey] call EPOCH_fnc_server_hiveGETRANGE; + + if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { + _arr = _response select 1; + _arrNum = count _arr; + + if (_arrNum == _dataFormatCount) then { + + // Validate and replace invaild data + { + if !((_arr select _forEachIndex) isEqualType _x) then {_arr set[_forEachIndex, _x]}; + } forEach _dataFormat; + + _class = _arr select 0; + _worldspace = _arr select 1; + _damage = _arr select 2; + + if (_class != "" && _damage < 1) then { + _location = _worldspace deleteAt 0; + + if !(_location isEqualTo []) then { + + // increased position precision + if (count _location == 2) then{ + _location = (_location select 0) vectorAdd (_location select 1); + }; + + EPOCH_VehicleSlots deleteAt _vehicleSlotIndex; + + // temp for changes in class names + _found = ["O_Heli_Transport_04_F","O_Heli_Transport_04_bench_F","O_Heli_Transport_04_box_F","O_Heli_Transport_04_covered_F","B_Heli_Transport_03_unarmed_F","O_Truck_03_covered_F"] find _class; + if (_found != -1) then { + _class = ["O_Heli_Transport_04_EPOCH","O_Heli_Transport_04_bench_EPOCH","O_Heli_Transport_04_box_EPOCH","O_Heli_Transport_04_covered_EPOCH","B_Heli_Transport_03_unarmed_EPOCH","O_Truck_03_covered_EPOCH"] select _found; + }; + + _vehicle = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"]; + _allVehicles pushBack _vehicle; + _vehicle call EPOCH_server_setVToken; + _vehicle setVectorDirAndUp _worldspace; + _vehicle setposATL _location; + _vehicle setDamage _damage; + + _allHitpoints = getAllHitPointsDamage _vehicle; + if !(_allHitpoints isEqualTo []) then{ + _actualHitpoints = _allHitpoints select 0; + _hitpoints = _arr select 3; + if ((count _actualHitpoints) == (count _hitpoints)) then{ + { + _dmg = _hitpoints param [_forEachIndex,0]; + if (_x in ["HitFuel", "HitEngine"]) then { + _dmg = _dmg min 0.9; + }; + _vehicle setHitIndex [_forEachIndex, _dmg]; + } forEach _actualHitpoints; + }; + }; + + if (_immuneVehicleSpawn) then{ + _vehicle allowDamage false; + }; + + _vehicle setFuel (_arr select 4); + + _vehicle call EPOCH_server_vehicleInit; + + _config = configFile >> "CfgVehicles" >> _class >> "availableColors"; + if (isArray(_config)) then { + _color = _arr select 7; + _colors = getArray(_config); + _textureSelectionIndex = configFile >> "CfgVehicles" >> _class >> "textureSelectionIndex"; + _selections = if (isArray(_textureSelectionIndex)) then { getArray(_textureSelectionIndex) } else { [0] }; + _count = (count _colors) - 1; + { + _textures = _colors select 0; + if (_count >= _forEachIndex) then { + _textures = _colors select _forEachIndex; + }; + _vehicle setObjectTextureGlobal [_x, _textures select _color]; + } forEach _selections; + _vehicle setVariable ["VEHICLE_TEXTURE", _color]; + }; + + clearWeaponCargoGlobal _vehicle; + clearMagazineCargoGlobal _vehicle; + clearBackpackCargoGlobal _vehicle; + clearItemCargoGlobal _vehicle; + + _vehicle disableTIEquipment true; + + _vehicle lock true; + + _vehicle setVariable ["VEHICLE_SLOT", str(_i), true]; + + //diag_log format ["FILLING: _vehicle %1 pos: %2", _vehicle, (getPosATL _vehicle)]; + { + _objType = _forEachIndex; + + _objTypes = _x; + _objQty = []; + + if (_objType in [1, 2, 3]) then { + _objTypes = _x select 0; + _objQty = _x select 1; + }; + + { + switch _objType do { + // Weapon cargo + case 0: { + if (_x isEqualType []) then { + if ((count _x) >= 4) then { + + _vehicle addWeaponCargoGlobal[_x deleteAt 0, 1]; + + _attachments = []; + _wMags = false; + _wMagsArray = []; + // suppressor, laser, optics, magazines(array), bipods + { + // magazines + if (_x isEqualType []) then{ + _wMags = true; + _wMagsArray = _x; + } + else { + // attachments + if (_x != "") then{ + _attachments pushBack _x; + }; + }; + } forEach _x; + + // add all attachments to vehicle + // TODO replace with adding attachments directly to gun (Arma feature dependant) + { + _vehicle addItemCargoGlobal[_x, 1]; + } forEach _attachments; + + if (_wMags) then{ + if (_wMagsArray isEqualType [] && (count _wMagsArray) >= 2) then{ + _vehicle addMagazineAmmoCargo[_wMagsArray select 0, 1, _wMagsArray select 1]; + }; + }; + + }; + }; + }; + // Magazine cargo + case 1: { + _magazineName = _x; + _magazineSize = _objQty select _forEachIndex; + + if ((_magazineName isEqualType "STRING") && (_magazineSize isEqualType 0)) then { + _magazineSizeMax = getNumber (configFile >> "CfgMagazines" >> _magazineName >> "count"); + + // Add full magazines cargo + _vehicle addMagazineAmmoCargo [_magazineName, floor (_magazineSize / _magazineSizeMax), _magazineSizeMax]; + + // Add last non full magazine + if ((_magazineSize % _magazineSizeMax) > 0) then { + _vehicle addMagazineAmmoCargo [_magazineName, 1, floor (_magazineSize % _magazineSizeMax)]; + }; + }; + }; + // Backpack cargo + case 2: { + if (_x isEqualType "STRING") then { + _qty = _objQty select _forEachIndex; + _vehicle addBackpackCargoGlobal [_x, _qty]; + }; + }; + // Item cargo + case 3: { + if (_x isEqualType "STRING") then { + _qty = _objQty select _forEachIndex; + _vehicle addItemCargoGlobal [_x, _qty]; + }; + }; + }; + } forEach _objTypes; + } forEach (_arr select 5); + + // remove and add back magazines works for armed trucks but not helis ATM + {_vehicle removeMagazineGlobal _x}count (magazines _vehicle); + {_vehicle addMagazine _x}count (_arr select 6); + + // turrets + /* + _mags = _vehicle magazinesTurret [0]; + { + _object removeMagazinesTurret [_x, [0]]; + } forEach _mags; + + _mags = _vehicle magazinesTurret [-1]; + { + _object removeMagazinesTurret [_x, [-1]]; + } forEach _mags; + */ + + if (EPOCH_DEBUG_VEH) then { + _marker = createMarker [str(_location) , _location]; + _marker setMarkerShape "ICON"; + _marker setMarkerType "mil_dot"; + _marker setMarkerText _class; + _marker setMarkerColor "ColorGreen"; + }; + + if (_simulationHandler) then{ + _vehicle enableSimulationGlobal false; + }; + + + + }; + }; + }; + }; +}; + +// re-enable damage to vehicles after we wait +if (_immuneVehicleSpawn) then{ + _immuneVehicleSpawnTime = [_serverSettingsConfig, "immuneVehicleSpawnTime", 120] call EPOCH_fnc_returnConfigEntry; + [_allVehicles,_immuneVehicleSpawnTime] spawn{ + sleep (_this select 1); + {_x allowDamage true} count (_this select 0); + }; +}; + +addToRemainsCollector _allVehicles; + +diag_log format ["Epoch: Vehicle SPAWN TIMER %1, LOADED %2 VEHICLES", diag_tickTime - _diag, count _allVehicles]; + +true diff --git a/Sources/epoch_server/config.cpp b/Sources/epoch_server/config.cpp index acc0a46f..dec21dba 100644 --- a/Sources/epoch_server/config.cpp +++ b/Sources/epoch_server/config.cpp @@ -99,6 +99,7 @@ class CfgServerFunctions class server_save_killedStorage {}; class server_save_killedBuilding {}; class load_vehicles {}; + class load_vehicles_old {}; class load_storage {}; class server_save_storage {}; class spawn_vehicles {}; diff --git a/Sources/epoch_server/init/server_init.sqf b/Sources/epoch_server/init/server_init.sqf index 964cf6a3..e1185734 100644 --- a/Sources/epoch_server/init/server_init.sqf +++ b/Sources/epoch_server/init/server_init.sqf @@ -142,8 +142,11 @@ _vehicleSlotLimit = 0; {_vehicleSlotLimit = _vehicleSlotLimit + (_x select 1)} forEach _allowedVehiclesList; _ReservedSlots = 50; _vehicleSlotLimit = _vehicleSlotLimit + _ReservedSlots; -_vehicleSlotLimit call EPOCH_load_vehicles; - +if (EPOCH_useOldLoadVehicles) then { + _vehicleSlotLimit call EPOCH_load_vehicles_old; +} else { + _vehicleSlotLimit call EPOCH_load_vehicles; +}; diag_log "Epoch: Spawning vehicles"; _allowedVehiclesListArray = []; { diff --git a/Sources/epoch_server/init/server_variables.sqf b/Sources/epoch_server/init/server_variables.sqf index 2fc2118a..e5815b6f 100644 --- a/Sources/epoch_server/init/server_variables.sqf +++ b/Sources/epoch_server/init/server_variables.sqf @@ -58,7 +58,8 @@ _configArray = [ ["hiveAdminCmdExec", false], ["hiveAdminSavePlayerList", true], ["hiveAdminCmdTime", 5], - ["DEBUG_VEH", false] + ["DEBUG_VEH", false], + ["useOldLoadVehicles", false] ]; EPOCH_fnc_returnConfigEntry = { diff --git a/Sources/epoch_server/treeView.txt b/Sources/epoch_server/treeView.txt index 40dc3888ce3862d0dc1524e6524e7f474fbe593a..4af06ca1701190051d03ff8f6bb460d04208656e 100644 GIT binary patch delta 28 kcmeBjz2my!l=S2VX({%2hJ1z`hLp*UGWMHqNN-{T0Ga3t00000 delta 16 XcmccP+U2_8l=S2V7QW3|GMm@{K4b=5 diff --git a/Sources/epoch_server_core/build.hpp b/Sources/epoch_server_core/build.hpp index 5db56ac3..52e5377b 100644 --- a/Sources/epoch_server_core/build.hpp +++ b/Sources/epoch_server_core/build.hpp @@ -1 +1 @@ -build=561; +build=562; diff --git a/Sources/epoch_server_settings/build.hpp b/Sources/epoch_server_settings/build.hpp index 5db56ac3..52e5377b 100644 --- a/Sources/epoch_server_settings/build.hpp +++ b/Sources/epoch_server_settings/build.hpp @@ -1 +1 @@ -build=561; +build=562; diff --git a/build.txt b/build.txt index ed5e6e8f..1cb4f70c 100644 --- a/build.txt +++ b/build.txt @@ -1 +1 @@ -561 +562