diff --git a/CHANGE LOG 1.0.7.1.txt b/CHANGE LOG 1.0.7.1.txt index 73862de63..dd805f9b7 100644 --- a/CHANGE LOG 1.0.7.1.txt +++ b/CHANGE LOG 1.0.7.1.txt @@ -2,7 +2,22 @@ [ADDED] AKS-74, AKS-74 Kobra, AKS-74 PSO1, AKS-74 NSPU and AKS-74 TWS with full attachment support. (db1ed4c0) @AirwavesMan [ADDED] Red Ryder BB gun and magazine as Epoch version. (597e6086) @AirwavesMan [ADDED] G36A and G36K as Epoch version. (e0a00512) @AirwavesMan +[ADDED] More snappoints for the 4x metal floors. (f68e92d5) @worldwidesorrow +[ADDED] Right click menu made by Mudzereli and updated by Salival. (c4919d65) @AirwavesMan +[ADDED] Missing Combine Magazine option for the Desert Eagle and the 20Rnd Stanag magazine. (858f418a) @seelenapparat, @AirwavesMan +[ADDED] Toggleable Remote Vehicle by Salival. (a9500b4e) @AirwavesMan +[ADDED] Toggleable Locate Vehicle by Salival. (152ec42d) @AirwavesMan +[ADDED] Toggleable Take Clothes by Salival. (1113b579) @AirwavesMan +[ADDED] Toggleable Safe Zone Relocate by Salival. (cc005a97) @AirwavesMan +[ADDED] Toggleable Vehicle Service Point by Salival. (343128bb) @AirwavesMan +[ADDED] Toggleable Garage Door Opener by Salival. (b3871aa3) @AirwavesMan +[ADDED] Toggleable Bury and Butcher Bodies by Salival. (be7898aa) @AirwavesMan +[ADDED] Toggleable Vehicle Key Changer by Salival. (e6eb9419) @AirwavesMan +[ADDED] Toggleable Virtual Garage by Salival. (30f15326) @AirwavesMan +[ADDED] Fully functional Namalsk Bloodsuckers by SumrakDZN. Can be activated in the configVariables.sqf. (05118343) @worldwidesorrow +[ADDED] G3A3 with attachment support. (a3a4cf90) @AirwavesMan [UPDATED] Better message for filling fuel containers if the fuel tank has not enough fuel. (93bf494c) @AirwavesMan +[UPDATED] Snappoints got improved. (f68e92d5) @worldwidesorrow [FIXED] Side Chat was unintentionally disabled on Podagorsk Mission. (cf43c20d) @Voltan, @AirwavesMan [FIXED] English string from the Broken APSI got overwritten by the german string. (43786eec) @seelenapparat, @AirwavesMan [FIXED] Open or close a winter lockbox or an upgraded lockbox had the wrong sound. (ffccff6a, cdfc57fd) @AirwavesMan @@ -10,7 +25,7 @@ [FIXED] DayZ Mod gates could not be removed. (2bbb126a) @Aschalder, @AirwavesMan [FIXED] The AK74 taped magazine could not be used with the AN94. (31c4a0a7) @Schalldampfer, @AirwavesMan [FIXED] Dupe with player_emptyContainer and dayz_actionInProgress bug. (44c94541) @F507DMT, @AirwavesMan -[FIXED] Remove the iron sight view from the RK95 ACOG since it does not work. (ee259c4a) @IsGoose, @AirwavesMan +[FIXED] Remove the iron sight view from the RK95 ACOG, SVD Gold and SVU since it does not work. (ee259c4a, ad3c38e4) @IsGoose, @AirwavesMan [FIXED] Some building wrecks could not be removed. (b43279cd) @Seelenapparat, @AirwavesMan [FIXED] Wrong name of the PIVOT snappoint of all wooden stairs. (f24a8193) @AirwavesMan [FIXED] ArmoredSUV gunner glitch. (aeafb3b3) @TheFirstNoob, @AirwavesMan @@ -23,4 +38,9 @@ [FIXED] Radio state variable got resetted after changing clothes. (6becd3d8) @AirwavesMan [FIXED] Missing side and faction entry for many epoch vehicles (4ba6fa32) @iben, @AirwavesMan [FIXED] Missing terrainCoef for the Mini Cooper. (53d92ba3) @DeVloek, @AirwavesMan -[REMOVED] gsc_cloth_loner_head_DZ model and Skin_gsc_cloth_loner_head_DZ due to model issues. (b1e77a39) @Seelenapparat, @AirwavesMan \ No newline at end of file +[FIXED] Weapon dupe on gear syncing. (9852778b) @F507DMT, @AirwavesMan +[FIXED] 200Rnd 40mm FV510 HE and Sabot magazines could not be used. (c10a436c) @Schalldampfer, @AirwavesMan +[FIXED] Client RPT Spam 'Strange convex component288 in warehouse\models\warehouse.p3d:geometry' @helion4 +[REMOVED] gsc_cloth_loner_head_DZ model and Skin_gsc_cloth_loner_head_DZ due to model issues. (b1e77a39) @Seelenapparat, @AirwavesMan + +[INFO] Big thanks to the following authors which allowed us to use their content: SumrakDZN, SyNcRoNiCzZ \ No newline at end of file diff --git a/Documents/CHANGE LOG 1.0.7.txt b/Documents/CHANGE LOG 1.0.7.txt new file mode 100644 index 000000000..dbd634b83 --- /dev/null +++ b/Documents/CHANGE LOG 1.0.7.txt @@ -0,0 +1,169 @@ +[NEW] Time between unlocking safes/lockboxes after a failed code will be exponentially higher, see configVariables.sqf\DZE_lockablesHarderPenalty (c3cbca1) @oiad +[NEW] Added over 200 new zombie models with loot groups and strings for Server Admins to use. (2e15009) @AirwavesMan +[NEW] Zombie can wear backpacks. (096fc13) @AirwavesMan +[NEW] Hide Body can be edited and toggled. Enabled by default, configVariables.sqf/DZE_Hide_Body (c0e9fe6) @AirwavesMan +[NEW] Added 6 AK-107 versions with attachment support. (82485ea) @AirwavesMan +[NEW] Added new waterbottles from DayZ Mod. Icons made by @DeVloek. Fully functional with all actions. @AirwavesMan +[NEW] All fuel containers can be emptied. (276615a8) @AirwavesMan +[NEW] Different boxes of matches can be combined. (bc75ad8) @AirwavesMan +[NEW] Added a basic support for PVE Servers. This disables the PVP damage on the server. Disabled by default, configVariables.sqf/DZE_PVE_Mode (e7dbc5dd) @AirwavesMan +[NEW] Dedicated sounds for opening and closing vaults. (c001c38, 9c83ef2, 61258c9, 76721e3) @worldwidesorrow +[NEW] Added the option for vectorUp on spawned objects in fnc_spawnObjects. (bf9dc49) @worldwidesorrow +[NEW] Added 2 new cargo truck versions. A truck with more items slots and a truck with more weapons slots. (02c91007) @AirwavesMan +[NEW] Added an option to give another player an antibacterial wipe. (8c074be) @worldwidesorrow +[NEW] The maps Podagorsk and Chernarus Winter are now part of Epoch. +[NEW] Added snow fall, snow storm, ground fog and cold breath to the game. This can be enabled in the configVariables.sqf/DZE_WeatherVariables and DZE_Weather @worldwidesorrow +[NEW] Added warm clothes support. configVariables.sqf/DZE_WarmClothes (4058f596) @AirwavesMan +[NEW] Added shivering - if the players body temperature is under a certain value the shivering starts. Can be defined and disabled with the last value in the DZE_WeatherVariables array. (4058f596) @AirwavesMan +[NEW] Players can choose among 5 sets of status icons by pressing the F3 key or selecting in the game options menu. @worldwidesorrow +[NEW] Added over 100 new weapons and magazines with attachment support, eg. HK417, Famas, Steyr Aug, G3, MP7 and many more. @AirwavesMan +[NEW] Added M110_DZ with double zoom which was removed with the last Arma 2 1.64 patch. (9a531b3) @AirwavesMan +[NEW] Almost all items have a world model now, eg. FN Fal mag, M203 Flare, AS50 mag. @Helion4, @AirwavesMan +[NEW] Added over 130 new male and female skins. @AirwavesMan @Helion4 +[NEW] Added 11 new backpacks. (637358b, 88053499) @Seelenapparat, @DeVloek, @AirwavesMan, @Helion4 +[NEW] Added different backpack skins for the Coyote and the Czech Backpack. (637358b) @Seelenapparat, @DeVloek, @AirwavesMan +[NEW] All backpacks got updated and have 2 versions, a regular and an upgraded version. (637358b) @Seelenapparat, @DeVloek, @AirwavesMan +[NEW] Fireplaces can be crafted directly from a wooden log. (2b8997ec) @AirwavesMan +[NEW] New sounds for M9, M1911, SVD, VSS Vintorez, PDW, PDW SD, Winchester 1866, Saiga 12k, Anzio. @AirwavesMan +[NEW] All vehicles/buildings are grouped under special vehicle categories in the editor with the indicator: 'DayZ Epoch', @AirwavesMan +[NEW] Painkiller packages can have 0 to 6 pills and can also be combined, similar to antibiotics. (b4b8860c) @AirwavesMan +[NEW] New helicopter skins for CH-47, Mi-17, UH-1H. (43337b6a, c47821ee) @AirwavesMan +[NEW] Added KA60 and AW159 Epoch versions with PKT and M240. (8de9858b) @AirwavesMan +[NEW] Added Land_Ind_Oil_Pump_EP1_DZE, a version without the pumping sound. (8557f559) @seelenapparat +[NEW] Added a proper display name for heli crashes. (ba31c67b) @seelenapparat +[NEW] Players can craft a firebarrel kit from empty methylamin/oil barrels. (b4b93562) @AirwavesMan +[NEW] Enabled DZE_defaultSkin by default. (9842279d) @AirwavesMan +[NEW] Added 2 new AN2 versions with Twin Vickers and M134. (d98834aa) @AirwavesMan +[NEW] Every vehicle ammunition can now be spawned in-game and was added to the loot tables and traders. (6e813dc1) @AirwavesMan +[NEW] Reintroduced DayZ Mod stashes. Build the stash by right-clicking the canvas item. (8304efe9) @AirwavesMan +[NEW] Storage buildings like gun racks, storage sheds, safes etc. can be upgraded to a version with more gear slots. (19889a9d) @AirwavesMan +[NEW] Lumber can be crafted directly from wooden logs. (ae79f4ce) @AirwavesMan +[NEW] Added DayZ Mod fences and gates with upgrade and snap support. (3724a1f3) @AirwavesMan +[NEW] Added sounds for taking painkillers/antibiotics and attaching/detaching a weapon attachment. (a69948d5) @AirwavesMan +[NEW] The community localization stringtable is now part of Epoch. (04a81c15) @AirwavesMan +[NEW] Salival's Change Code script is now part of Epoch. (5e296fc0) @AirwavesMan +[NEW] Added ZSC with global banking. Pull request # 2076. @oiad, @worldwidesorrow, @DevZupa +[NEW] Added remote messaging with localization. Pull request # 2076. @oiad, @worldwidesorrow, @BigEgg17 +[NEW] Almost all epoch vehicles can now be upgraded. This includes trucks, helicopters and APCs. @AirwavesMan +[NEW] Added vehicle upgrade manuals for trucks, helicopters and APCs. @AirwavesMan, @DeVloek, @Helion4 +[NEW] Added new variables DZE_Hero and DZE_Bandit. The variables define the Hero and Bandit humanity. Used for traders and in player_death. (431cbc88, 272a7406) @AirwavesMan +[NEW] Heroes and Bandits will drop a dog tag on death which can be traded at the Hero or Bandit trader for humanity. Thx for the idea @Tecumseh. (431cbc88, 272a7406, 4f106220) @AirwavesMan +[NEW] Special handling for floating loot in buildings over water. Use fixWaterPos = 1; in the building class that has this problem. (89bca2c9) @AirwavesMan +[NEW] With activated weight system, traders will show the item's weight under item information. (e5af93b5) @AirwavesMan +[NEW] Female players can now wear all ghillie suits. (758be289) @AirwavesMan, @Helion4 +[NEW] Added MTVR Bird helicopter. (8fa93188) @AirwavesMan, @Helion4 +[NEW] Added a winter version of the following objects: Lockbox, Camo Net, Tent, Dome Tent. (215932d7, 420ad269, 83012eb1) @AirwavesMan, @Helion4 +[NEW] Added a winter version of the following vehicles: BMP2, BRDM2, SUV, UAZ, Mi17, UH1H, T72, Ural, Kamaz, HMMWV. (34455948, cb1b34fc) @AirwavesMan +[NEW] Added Mini Cooper, old Jeep, 11 Nissan 350z versions, VS3 Camper, MTVR Open, Scrap APC, armored Tractor and armored Bus. (a1e5fca7, db36bb48, 1ce3f92b, 0dc00d97, d0f647c0, 34c2c716, f8d8a686, 8feed62b) @AirwavesMan, @Helion4 +[NEW] Added interior to storage sheds and those on the map can now spawn loot. (ad8ca464, 35135c75) @AirwavesMan, @Helion4 +[NEW] Added a few new female skins. (758be289) @AirwavesMan, @Helion4 +[NEW] Added over 30 new base building items like a drawbridge, metal and wood gates, glass floors and many more. @AirwavesMan, @Helion4 +[NEW] Added many broken versions of already existing items and tools like Safe, Engine Parts, Wheel, Toolbox and many more. @AirwavesMan +[NEW] Added lots of new items and tools like Handsaw, Hammer, Cement Bag, Carrot, Potato, Mobile Phone and more. @AirwavesMan, @Helion4 +[NEW] Added snapping support for Storage Sheds, Wood Shacks, Wooden Sheds, Gun Racks and Outhouses. (ca05896f) @AirwavesMan +[NEW] Added Submarine (c316d20) @AirwavesMan, @Helion4 + +[FIXED] Some more occurrences of zero_building interiors misaligned or at the wrong terrain height (eaaedf2, 048caa5) @ebayShopper +[FIXED] Player could switch into gunner's seat of ArmoredSUV while the hatch was being closed (e89eebc) #2009 @TheFirstNoob +[FIXED] POI fires were still spawning when POI was off and town generator was on (2855997) @ebayShopper +[FIXED] Combo locks could be duplicated by two players removing them at the same time (564e3da) @shu, @oiad +[FIXED] Bush b_corylus.p3d allowed chopping down for wood like a tree (42e519a) @ebayShopper +[FIXED] Player could shoot during unconscious wake up animation (634a01a) @ebayShopper +[FIXED] Rare publicVariable value restrictions for AuthKey due to RNG with basic Latin characters (d48c907) @oiad, @AirwavesMan +[FIXED] Freeze when iterating through CfgWeapons in A2OA 1.64 due to conflict with ItemKeys in dayz_epoch_b.pbo #2010 @S-fly +[FIXED] 45Rnd_545x39_RPK error after it was removed with the 2018-04-05 A2OA CorePatch (d249227) @ebayShopper +[FIXED] Disabled Arma's automatic vehicle refuel, repair and rearm at WarfareBVehicleServicePoint buildings (2c4f06c) @dihan48 +[FIXED] DistanceFoot database stat was incorrect. (be777dd) @dihan48 +[FIXED] Vehicles jumping into the air after flipping. (096fc13) @AirwavesMan +[FIXED] Crafting wooden arrows from wood piles and razors was not possible. (d4b46e4) @AirwavesMan +[FIXED] Top snap point for half cinder wall was incorrect. (8f10a36) @ndavalos, @AirwavesMan +[FIXED] The RPK-74 magazine could not be used with some AK-74 versions. (82485ea) @AirwavesMan +[FIXED] Multiple vehicle upgrades were not possible. (ac884f2, a430f79, c24504a) @F507DMT +[FIXED] Inventory dupe if on water. (a052ba7, baf92eb) @F507DMT +[FIXED] The pickaxe and the broken pickaxe spawned in the ground on loot spawn. (a09bb81a) @AirwavesMan +[FIXED] Floating loot from remove, pack and fn_dropItem. (1268f55) @AirwavesMan +[FIXED] Giving water to dogs did not work with all waterbottles. (915cf72) @AirwavesMan +[FIXED] Backpacks had no descriptions. (f1d5038) @AirwavesMan +[FIXED] Potential dupe on lag with Advanced Trading. (0617a77, 5f44161) @oiad, @AirwavesMan, @loooooool(TEMA) +[FIXED] Invisible backseat bug on LAV-HQ DZ and DZE version. (5c3f2162) @AirwavesMan +[FIXED] The fuel capacity of the MH-6J Little Bird, Mi17 Civilian, UH60M was incorrect. (862cf39a, f0e08f22, fc9cb679) @AirwavesMan +[FIXED] AIs could attack traders. (f0ac4afc) @AirwavesMan +[FIXED] RHIB_DZ floating gunner position. (38a31290) @AirwavesMan +[FIXED] The carry and drag functions have been fixed. (bcc5b63) @worldwidesorrow +[FIXED] Bug on switching weapons. @worldwidesorrow +[FIXED] Backpacks and keys were not counted within the weight system. (838e4a06, 49446122) @Damian6666 @AirwavesMan +[FIXED] Biomeat had no infection chance. (b52325c9) @AirwavesMan +[FIXED] Parachute speed bug by pressing certain keys. (2a41d122) @ch0c +[FIXED] Loading screen progress bar did not work since the last Arma 2 1.64 patch. (21e5cfae) @IsGoose +[FIXED] Players were unable to open a few tank versions with their key. (9cc8b5d8) @AirwavesMan +[FIXED] The epoch versions of the RHIB boats were incorrect. (38a31290) @AirwavesMan +[FIXED] Players are no longer able to exploit the player_wearClothes function to reset AI targeting. (5c29704) @morgoth0, @Arrakis, @worldwidesorrow. +[FIXED] Vehicles should no longer explode after a server restart due to buildings loading in late. (99dc7cd7) @Seelenapparat +[FIXED] CZ550 shadow bug (c22ae9e5) @AirwavesMan +[FIXED] Floating loot in buildings over water. (89bca2c9) @AirwavesMan +[FIXED] Potential kill count doubling after change clothes. (0b26ae12) @Seelenapparat +[FIXED] Damaged vehicles will no longer repair after a vehicle upgrade. (95d528b8) @AirwavesMan +[FIXED] Exorbitant damage from chainsaws and sledgehammers on buildings (118dbfa6) @AirwavesMan +[FIXED] Players always looked north on spawn. (4aad93fe) @TH, @AirwavesMan +[FIXED] Trees could be knocked down on the first hit by a hatchet or chainsaw. (8dc6ef8d) @AirwavesMan +[FIXED] Female players had not the correct armor and camouflage set. (758be289) @AirwavesMan +[FIXED] Sometimes players were not properly ejected from an exploded Cessna wreck. (0b6df456) @AirwavesMan +[FIXED] Players were not in combat after shooting from certain helicopters or planes. (e6680aaa) @AirwavesMan +[FIXED] Often the weapon on back was duped when the player was kicked or didn't log out properly. (1697af97) @AirwavesMan +[FIXED] Filling mixed gas into a chainsaw now requires a chainsaw. (b0edf3cb) @AirwavesMan + +[UPDATED] All Epoch items and buildable models updated and optimized to affect less the performance. @Helion4 +[UPDATED] Spawning of Zombies and loot in Safe Zones can now be toggled, disabled by default, see configVariables.sqf/DZE_SafeZoneZombieLoot (6248add, 141b25e) @oiad, @_Lance_ +[UPDATED] Added notification when status icons are disabled. (e04f0fc) @ebayShopper +[UPDATED] Added night vision mode back to DMR_DZ and M4SPR_DZE after it was removed with the 2018-04-05 A2OA CorePatch (d6cf707) @ebayShopper +[UPDATED] All M32 grenades now use only one inventory slot. (cc85067) @AirwavesMan +[UPDATED] The Czech Vest Pouch can now carry one weapon. This was changed to be more intuitive and to avoid disappearing weapons. (f7ea9cb) @AirwavesMan +[UPDATED] Old/unused variables removed from variables.sqf. Entire file reorganized. (4accdee) @worldwidesorrow +[UPDATED] Functions fnc_usec_damageHandler, dayz_inflame_showMenu, dayz_inflame_showMenu_other, DZ_KeyDown_EH, dayz_EjectPlayer compiled on client only - compiles.sqf. (7613e3a) @worldwidesorrow +[UPDATED] Many unused trader cities were moved into a new folder called 'Archive'. Those files will no longer be updated. (6699d8d7) @AirwavesMan +[UPDATED] All vehicle names updated and localizations added. (e36e3cc4) @AirwavesMan +[UPDATED] The gunner optics angle of the BRDM-2 HQ was adjusted to have a better usage. (9ab576fa) @AirwavesMan +[UPDATED] Moved FPS logging and server event spawner to the server scheduler (0a264b9) @worldwidesorrow +[UPDATED] Vanilla events adjusted and moved to the server modules folder. The events are now spawned by the scheduler. (0a264b9) @worldwidesorrow +[UPDATED] Rebuilt trader files and overhauled trader cities. (92700e8a) @AirwavesMan +[UPDATED] Server side security added for higher risk PVDZ_send usage. (40dcf6f) @worldwidesorrow +[UPDATED] New strings added to the string table for medical functions. (2a145bf) @worldwidesorrow +[UPDATED] Medical functions revised. Old/unused medical functions moved to archive. @worldwidesorrow +[UPDATED] Separate actions added for typed blood bags. Variable dayz_classicBloodBagSystem used to bypass unnecessary code. (a4c0638) @worldwidesorrow +[UPDATED] All vehicles updated and many bugs fixed. Now there is a DZ and DZE class for every armed Epoch vehicle. @AirwavesMan +[UPDATED] All silenced weapons can only be used with SD ammo, and all non-silenced weapons can only be used with regular (non-SD) ammo. (6f4b1706) @AirwavesMan +[UPDATED] Increased bullet speed for the MK17 SD and Vintorez ammo. (1e69f357) @AirwavesMan +[UPDATED] MK17 Sniper SD and Vintorez DZ and DZE versions have a higher zeroing. (3895cf9c) @AirwavesMan +[UPDATED] AK74 and AKM start with the semi-automatic firemode instead of full-automatic. (9aeceebb, becfee04) @AirwavesMan +[UPDATED] The FN Fal has a full-automatic mode again. (052becb) @AirwavesMan +[UPDATED] Zombies will no longer get triggered by a chemlight at daytime. (93ba732e) @AirwavesMan +[UPDATED] All magazines now have the combine option. @AirwavesMan +[UPDATED] The Humanity system was updated for hotwiring vehicles and killing players. (f68bbda0, d5910357) @AirwavesMan, @oiad +[UPDATED] The gear count of many vehicles (helicopters in particular) was updated and increased. (06b788a) @AirwavesMan +[UPDATED] Sharpening a knife now has an animation. (b7892bfc) @AirwavesMan +[UPDATED] Added full localization to snap and vector building. (fe1d7fb4) @AirwavesMan +[UPDATED] Added the correct icon for the Terminal Backpack. (1a411660) @AirwavesMan, @DeVloek +[UPDATED] Crafting a tent requires 2x equip_tent_poles instead of 2x ItemPole. (73289a69) @AirwavesMan +[UPDATED] Crafting a firebarrel kit no longer requires matches. (b4b93562) @nadal28 @AirwavesMan +[UPDATED] Crafting shows all required items now. (8315d899) @AirwavesMan +[UPDATED] Relogging with a chainsaw in the backpack will delete the chainsaw gas instead of refilling it. (132e9506) @AirwavesMan +[UPDATED] The group invite message now contains the name of the inviter. (396d0313) @ch0c, @AirwavesMan +[UPDATED] Harvesting wood with a hatchet can now drop both wood piles and wooden logs. (ae79f4ce) @AirwavesMan +[UPDATED] The maintain animation is interruptible now. (910ab43a) @AirwavesMan +[UPDATED] Trading single items can be configured to change the player's humanity value. (4f106220) @AirwavesMan +[UPDATED] The Journal main page was reworked and has some more information about the server settings now. (ef05eb4e) @AirwavesMan +[UPDATED] Harvesting wood will yield at least 16 or more wood. This was added in order to decrease network traffic. (8dc6ef8d) @AirwavesMan +[UPDATED] Increased cargo count of Refuel Trucks. (4667f20b) @AirwavesMan +[UPDATED] Cinder buildings and metal floors have a new texture. @Helion4 +[UPDATED] Highly increased infection chance if the player eats uncooked meat or fish. (29b6a26) @AirwavesMan +[UPDATED] Crafting wooden buildings now requires a handsaw and a hammer. (247f5dc6) @AirwavesMan +[UPDATED] Full Russian Localization @RedLink-kam, @dreamforceinc + +[REMOVED] Epoch 1.0.7 does not support Database Traders any longer. All server admins with DB Traders have to switch to the config traders now. (49378f62) @AirwavesMan +[REMOVED] NORRN_loadVcl, posForceUpdate, and medForceUpdate removed from setvariable.txt (47f07a8) @worldwidesorrow +[REMOVED] PVDZ_drg_RaDrag, PVDZ_drg_RaLW, PVDZ_drg_RLact and PVDZ_Unconscious removed from publicvariable.txt. They have been replaced with PVDZ_send. (2d03fb9) @worldwidesorrow +[REMOVED] DayZ Vanilla Crafting - all recipes were moved to Epoch Crafting. (8315d899) @AirwavesMan + +[INFO] Synced with DayZMod upstream up to commit fe063a8 +[INFO] Removed functions can be found under "dayz_code\old". +[INFO] Big thanks to the following authors which allowed us to use their content: SumrakDZN, Icewindo, Brainbug, lennard91, stagler, SyNcRoNiCzZ, Sam563, Alwarren, Robert Hammer, Marseille77 \ No newline at end of file diff --git a/README.md b/README.md index 479c94a05..a44a0b184 100644 --- a/README.md +++ b/README.md @@ -14,62 +14,63 @@ http://dayzmod.com -------------------------- Included Custom Addons -------------------------- -* DayZero Enterable Buildings - https://zombies.nu/ -* AutoGyro - by CSJ http://www.armaholic.com/page.php?id=2359 -* Taxi by [GLT]Myke http://www.armaholic.com/page.php?id=12289 -* Blackhawk and Seahawk Wrecks by [GLT]Myke http://www.armaholic.com/page.php?id=10670 -* SUV Colors by Python.au http://www.armaholic.com/page.php?id=17176 -* R3F Realism by Team [R3F] - http://www.armaholic.com/page.php?id=12610 -* ASC EU Lights Mod http://www.armaholic.com/page.php?id=12076 -* MAP Editorupgrade (EU) http://www.armaholic.com/page.php?id=6194 -* ShackTac Movement by Rg - http://www.armaholic.com/page.php?id=12540 -* ShackTac Bunnyhop by Macolik - http://www.armaholic.com/page.php?id=17546 -* Jetski Yanahui by Kol9yN, Zakat, Gerasimow9, YuraPetrov, zGuba, A.Karagod, IceBreakr and Sahbazz http://www.armaholic.com/page.php?id=13053 -* gdtmod_grass 1.00 by HeinBloed - http://www.armaholic.com/page.php?id=6628 -* Bell 47/H-13 Helicopter by hcpookie - http://www.armaholic.com/page.php?id=22143 -* USEC CH53 by Rocket - http://www.armaholic.com/page.php?id=13949 -* Anzio 20mm Rifle by WillRobinson - http://www.armaholic.com/page.php?id=30175 -* RedRyder BB Gun by WillRobinson - https://github.com/arma2WillRobinson/Red-Ryder -* Namalsk Addons by SumrakDZN - https://github.com/SumrakDZN/DayZNamalsk -* Stalker Units by Icewindo - http://www.armaholic.com/page.php?id=9795 -* Post Apocalypse Units by Icewindo - http://www.armaholic.com/page.php?id=11840 -* Ghillie Suits by Brainbug - http://www.armaholic.com/page.php?id=11424 -* Retextured German KSK Units by Brainbug - http://www.armaholic.com/page.php?id=11129 -* 19 Backpack Variants by lennard91 - http://www.armaholic.com/page.php?id=13793 -* Spetsnaz GRU by stagler - http://www.armaholic.com/page.php?id=15693 -* CH-47 Reskins by SyNcRoNiCzZ - http://www.armaholic.com/page.php?id=11202 -* RACS UH-1H Huey Reskins by lennard91 - http://www.armaholic.com/page.php?id=11697 -* UH1H Search and Rescue Skin by Sam563 - https://opendayz.net/threads/uh1h-search-and-rescue-skin.22516/ -* Contractor Mi-17 Pack by lennard91 - http://www.armaholic.com/page.php?id=18498 -* "Heckler & Koch" MP7 by SyNcRoNiCzZ - http://www.armaholic.com/page.php?id=8379 -* P99 Projekt by SyNcRoNiCzZ - http://www.armaholic.com/page.php?id=9985 -* FAMAS Pack by SyNcRoNiCzZ - http://www.armaholic.com/page.php?id=8867 -* FHQ Remington Weapon Pack by Alwarren - http://www.armaholic.com/page.php?id=17971 -* RH PDW pack by Robert Hammer - http://www.armaholic.com/page.php?id=12214 -* RH M14 pack by Robert Hammer - http://www.armaholic.com/page.php?id=11374 -* RH Pistol Pack Remake by Robert Hammer - http://www.armaholic.com/page.php?id=12800 -* RH SMG pack by Robert Hammer - http://www.armaholic.com/page.php?id=13788 -* RH HK416 Pack by Robert Hammer - http://www.armaholic.com/page.php?id=11789 -* RH Ak's Pack by Robert Hammer - http://www.armaholic.com/page.php?id=9029 -* RH MGS weapon pack by Robert Hammer - http://www.armaholic.com/page.php?id=13095 -* German Technical Relief Pack (THW Pack) by Marseille77 - http://www.armaholic.com/page.php?id=15466 -* German Firefighters Pack by Marseille77 - http://www.armaholic.com/page.php?id=20391 -* German Civil Pack by Marseille77 - http://www.armaholic.com/page.php?id=9793 -* Sahrani Rearmed: Sahrani Civilians by Marseille77 - http://www.armaholic.com/page.php?id=24325 -* Modern Irish Defence Forces - Steyr Aug A3 Pack by SyNcRoNiCzZ - http://www.armaholic.com/page.php?id=9505 -* Standard Vehicles Pack by Marseille77 - https://www.armaholic.com/page.php?id=10730 -* Nissan 350z by CRASHNZ - https://www.armaholic.com/page.php?id=8570 +* DayZero Enterable Buildings +* AutoGyro - by CSJ +* Taxi by [GLT]Myke +* Blackhawk and Seahawk Wrecks by [GLT]Myke +* SUV Colors by Python.au +* R3F Realism by Team [R3F] +* ASC EU Lights Mod +* MAP Editorupgrade (EU) +* ShackTac Movement by Rg +* ShackTac Bunnyhop by Macolik +* Jetski Yanahui by Kol9yN, Zakat, Gerasimow9, YuraPetrov, zGuba, A.Karagod, IceBreakr and Sahbazz +* gdtmod_grass 1.00 by HeinBloed +* Bell 47/H-13 Helicopter by hcpookie +* USEC CH53 by Rocket +* Anzio 20mm Rifle by WillRobinson +* RedRyder BB Gun by WillRobinson +* Namalsk Addons and Bloodsucker by SumrakDZN +* Stalker Units by Icewindo +* Post Apocalypse Units by Icewindo +* Ghillie Suits by Brainbug +* Retextured German KSK Units by Brainbug +* 19 Backpack Variants by lennard91 +* Spetsnaz GRU by stagler +* CH-47 Reskins by SyNcRoNiCzZ +* RACS UH-1H Huey Reskins by lennard91 +* UH1H Search and Rescue Skin by Sam563 +* Contractor Mi-17 Pack by lennard91 +* "Heckler & Koch" MP7 by SyNcRoNiCzZ +* P99 Projekt by SyNcRoNiCzZ +* FAMAS Pack by SyNcRoNiCzZ +* FHQ Remington Weapon Pack by Alwarren +* RH PDW pack by Robert Hammer +* RH M14 pack by Robert Hammer +* RH Pistol Pack Remake by Robert Hammer +* RH SMG pack by Robert Hammer +* RH HK416 Pack by Robert Hammer +* RH Ak's Pack by Robert Hammer +* RH MGS weapon pack by Robert Hammer +* German Technical Relief Pack (THW Pack) by Marseille77 +* German Firefighters Pack by Marseille77 +* German Civil Pack by Marseille77 +* Sahrani Rearmed: Sahrani Civilians by Marseille77 +* Modern Irish Defence Forces - Steyr Aug A3 Pack by SyNcRoNiCzZ +* Standard Vehicles Pack by Marseille77 +* Nissan 350z by CRASHNZ +* G3 Pack by Marseille77 -------------------------- Included Custom Islands -------------------------- -* Sauerland by Falconsan - http://www.s6computer.de/ +* Sauerland by Falconsan * Napf Island by #momo# - http://forums.bistudio.com/showthread.php?136469-Napf-Island-beta -* | MBG Killhouses http://www.armaholic.com/page.php?id=15180 -* | MBG Buildings 3 - European Theatre http://www.armaholic.com/page.php?id=14828 -* | MBG Generic African Buildings http://www.armaholic.com/page.php?id=17817 -* | German Town - and waysigns http://www.armaholic.com/page.php?id=9658 -* FDF Podagorsk by Goth http://www.armaholic.com/page.php?id=8791 -* Chernarus Winter by ArmanIII http://www.armaholic.com/page.php?id=27807 +* | MBG Killhouses +* | MBG Buildings 3 - European Theatre +* | MBG Generic African Buildings +* | German Town - and waysigns +* FDF Podagorsk by Goth +* Chernarus Winter by ArmanIII -------------------------- Initial Developers @@ -165,7 +166,7 @@ Special thanks * Rajkosto - DayZ Hive DLL - https://github.com/rajkosto/hive * DayZ Community Developers - https://github.com/DayZMod * ziellos2k - Tag Friendly code. https://github.com/ziellos2k -* Tansien and Zac - for providing and creating DayZero Enterable Buildings https://zombies.nu/ +* Tansien and Zac - for providing and creating DayZero Enterable Buildings * Munchiefest - Beta Tester, Wiki Editor, Ideas - http://www.twitch.tv/munchiefest * Chelsey - Beta Tester, New female textures. * OrangeSherbet - Beta Tester - http://www.twitch.tv/orangesherbet diff --git a/SQF/dayz_code/Configs/CfgMagazines/Buildings/StaticWeapons.hpp b/SQF/dayz_code/Configs/CfgMagazines/Buildings/StaticWeapons.hpp new file mode 100644 index 000000000..3d63b6d30 --- /dev/null +++ b/SQF/dayz_code/Configs/CfgMagazines/Buildings/StaticWeapons.hpp @@ -0,0 +1,527 @@ +class M2_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_M2_MG; + descriptionShort = $STR_DN_M2_MG; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "M2_MG_Static_DZ"; + }; + }; +}; + +class M2_TriPod_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_M2HD_MINITRIPOD; + descriptionShort = $STR_DN_M2HD_MINITRIPOD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "M2_TriPod_MG_Static_DZ"; + }; + }; +}; + +class DSHKM_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_DSHKM; + descriptionShort = $STR_DN_DSHKM; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "DSHKM_MG_Static_DZ"; + }; + }; +}; + +class DSHKM_TriPod_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_DSHKM_MINITRIPOD; + descriptionShort = $STR_DN_DSHKM_MINITRIPOD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "DSHKM_TriPod_MG_Static_DZ"; + }; + }; +}; + +class KORD_TriPod_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_KORD_LOW; + descriptionShort = $STR_DN_KORD_LOW; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "KORD_Tripod_MG_Static_DZ"; + }; + }; +}; + +class KORD_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_KORD; + descriptionShort = $STR_DN_KORD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "KORD_MG_Static_DZ"; + }; + }; +}; + +class L2A1_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_BAF_BAF_L2A1_TRIPOD_D0; + descriptionShort = $STR_BAF_BAF_L2A1_TRIPOD_D0; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "L2A1_MG_Static_DZ"; + }; + }; +}; + +class L2A1_Tripod_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_BAF_BAF_L2A1_MINITRIPOD_D0; + descriptionShort = $STR_BAF_BAF_L2A1_MINITRIPOD_D0; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "L2A1_Tripod_MG_Static_DZ"; + }; + }; +}; + +class GMG_Tripod_MG_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_BAF_BAF_GMG_TRIPOD_D0; + descriptionShort = $STR_BAF_BAF_GMG_TRIPOD_D0; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "GMG_Tripod_MG_Static_DZ"; + }; + }; +}; + +class AGS30_GrenadeLauncher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_AGS30; + descriptionShort = $STR_DN_AGS30; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "AGS30_GrenadeLauncher_Static_DZ"; + }; + }; +}; + +class MK19_TriPod_GrenadeLauncher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_MK19_TRIPOD; + descriptionShort = $STR_DN_MK19_TRIPOD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "MK19_TriPod_GrenadeLauncher_Static_DZ"; + }; + }; +}; + +class GPMG_TriPod_GrenadeLauncher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_BAF_BAF_GPMG_MINITRIPOD_D0; + descriptionShort = $STR_BAF_BAF_GPMG_MINITRIPOD_D0; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "GPMG_TriPod_GrenadeLauncher_Static_DZ"; + }; + }; +}; + +class M119_Artillery_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_M119; + descriptionShort = $STR_DN_M119; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "M119_Artillery_Static_DZ"; + }; + }; +}; + +class D30_Artillery_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_D30; + descriptionShort = $STR_DN_D30; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "D30_Artillery_Static_DZ"; + }; + }; +}; + +class SearchLight_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_SEARCHLIGHT; + descriptionShort = $STR_DN_SEARCHLIGHT; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "SearchLight_Static_DZ"; + }; + }; +}; + +class M252_Mortar_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_M252; + descriptionShort = $STR_DN_M252; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "M252_Mortar_Static_DZ"; + }; + }; +}; + +class 2b14_82mm_Mortar_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_2B14; + descriptionShort = $STR_DN_2B14; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "2b14_82mm_Mortar_Static_DZ"; + }; + }; +}; + +class Metis_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_AT13; + descriptionShort = $STR_DN_AT13; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "Metis_Launcher_Static_DZ"; + }; + }; +}; + +class SPG9_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_SPG9; + descriptionShort = $STR_DN_SPG9; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "SPG9_Launcher_Static_DZ"; + }; + }; +}; + +class Stinger_Tripod_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_STINGER_POD; + descriptionShort = $STR_DN_STINGER_POD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "Stinger_Tripod_Launcher_Static_DZ"; + }; + }; +}; + +class TOW_Tripod_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_TOW_TRIPOD; + descriptionShort = $STR_DN_TOW_TRIPOD; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "TOW_Tripod_Launcher_Static_DZ"; + }; + }; +}; + +class Rbs70_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_ACR_DN_RBS70; + descriptionShort = $STR_ACR_DN_RBS70; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "Rbs70_Launcher_Static_DZ"; + }; + }; +}; + +class Igla_AntiAir_Launcher_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_IGLA_AA_POD_EAST; + descriptionShort = $STR_DN_IGLA_AA_POD_EAST; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "Igla_AntiAir_Launcher_Static_DZ"; + }; + }; +}; + +class ZU23_AntiAir_Static_kit: CA_Magazine +{ + scope = 2; + count = 1; + type = 256; + displayName = $STR_DN_ZU23; + descriptionShort = $STR_DN_ZU23; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + + class ItemActions + { + class Build + { + text = $STR_ACTIONS_BUILD; + script = "spawn player_build;"; + require[] = {"ItemToolbox"}; + create = "ZU23_AntiAir_Static_DZ"; + }; + }; +}; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgMagazines/CfgMagazines.hpp b/SQF/dayz_code/Configs/CfgMagazines/CfgMagazines.hpp index f54704326..94c158dde 100644 --- a/SQF/dayz_code/Configs/CfgMagazines/CfgMagazines.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines/CfgMagazines.hpp @@ -65,5 +65,6 @@ class CfgMagazines #include "Buildings\Fences.hpp" #include "Buildings\Storage.hpp" #include "Buildings\Tent.hpp" - #include "Buildings\Misc.hpp" + #include "Buildings\Misc.hpp" + #include "Buildings\StaticWeapons.hpp" }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgMagazines/Items/Misc.hpp b/SQF/dayz_code/Configs/CfgMagazines/Items/Misc.hpp index e8ccdf74b..af0c90661 100644 --- a/SQF/dayz_code/Configs/CfgMagazines/Items/Misc.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines/Items/Misc.hpp @@ -262,6 +262,160 @@ class ItemCeramicParts : CA_Magazine type = 256; }; +class ItemWeaponPartsPistol : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_PISTOL; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_PISTOL_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsSMG : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_SMG; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_SMG_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsShotgun : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_SHOTGUN; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_SHOTGUN_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsRifle : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_RIFLE; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_RIFLE_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsSniperRilfe : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_SNIPERRIFLE; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_SNIPERRIFLE_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsMG : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_MG; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_MG_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsUnknown : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_UNKNOWN_MG; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_UNKNOWN_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsBad : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_BAD; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_BAD_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsNormal : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_NORMAL; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_NORMAL_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsGood : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_GOOD; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_GOOD_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemWeaponPartsExecellent : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_WEAPON_PARTS_EXCELLENT; + descriptionShort = $STR_EPOCH_WEAPON_PARTS_EXCELLENT_DESC; + model = "\z\addons\dayz_communityassets\models\crate.p3d"; + picture = "\z\addons\dayz_communityassets\CraftingPlaceholders\equip_part_somegeneric.paa"; + type = 256; +}; + +class ItemGunPowderSmall : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_GUN_POWDER_SMALL; + descriptionShort = $STR_EPOCH_GUN_POWDER_SMALL_DESC; + model = "\z\addons\dayz_communityassets\models\tin_powder.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_tin_powder_co.paa"; + type = 256; +}; + +class ItemGunPowder : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_GUN_POWDER; + descriptionShort = $STR_EPOCH_GUN_POWDER_DESC; + model = "\z\addons\dayz_communityassets\models\tin_powder.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_tin_powder_co.paa"; + type = 256; +}; + +class ItemGunPowderBig : CA_Magazine +{ + scope = 2; + count = 1; + displayName = $STR_EPOCH_GUN_POWDER_BIG; + descriptionShort = $STR_EPOCH_GUN_POWDER_BIG_DESC; + model = "\z\addons\dayz_communityassets\models\tin_powder.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_tin_powder_co.paa"; + type = 256; +}; + //No models class equip_cable_tie : CA_Magazine { diff --git a/SQF/dayz_code/Configs/CfgMagazines/Magazines/50AE.hpp b/SQF/dayz_code/Configs/CfgMagazines/Magazines/50AE.hpp index 48427dd55..4a164e38b 100644 --- a/SQF/dayz_code/Configs/CfgMagazines/Magazines/50AE.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines/Magazines/50AE.hpp @@ -9,4 +9,9 @@ class 7Rnd_50AE_Deagle: CA_Magazine ammo = "B_357mag_Ball"; count = 7; initSpeed = 400; + + class ItemActions + { + COMBINE_MAG + }; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgMagazines/Magazines/556x45.hpp b/SQF/dayz_code/Configs/CfgMagazines/Magazines/556x45.hpp index 6f9af29d1..faf5b509b 100644 --- a/SQF/dayz_code/Configs/CfgMagazines/Magazines/556x45.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines/Magazines/556x45.hpp @@ -50,7 +50,14 @@ class 100Rnd_556x45_BetaCMagSD: 100Rnd_556x45_BetaCMag { }; /* STANAG <-> G36 */ -class 20Rnd_556x45_Stanag; +class 20Rnd_556x45_Stanag : CA_Magazine +{ + class ItemActions + { + COMBINE_MAG + }; +}; + class 30Rnd_556x45_Stanag : 20Rnd_556x45_Stanag { displayName = $STR_DZ_MAG_30RND_556x45_STANAG_NAME; diff --git a/SQF/dayz_code/Configs/CfgMagazines/Magazines/VehicleAmmo.hpp b/SQF/dayz_code/Configs/CfgMagazines/Magazines/VehicleAmmo.hpp index d908f9d96..31a7fd044 100644 --- a/SQF/dayz_code/Configs/CfgMagazines/Magazines/VehicleAmmo.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines/Magazines/VehicleAmmo.hpp @@ -1484,7 +1484,7 @@ class 8Rnd_82mmILLUM_2B14: 8Rnd_82mmHE_2B14 }; class 200Rnd_40mmHE_FV510: Vehicle_ammo_base { - scope = 1; + scope = 2; displayName = $STR_DZ_MAG_200RND_FV510HE_NAME; descriptionShort = $STR_DZ_MAG_200RND_FV510HE_DESC; ammo = "Sh_40_HE"; diff --git a/SQF/dayz_code/Configs/CfgServerTrader/Category/Weapons.hpp b/SQF/dayz_code/Configs/CfgServerTrader/Category/Weapons.hpp index 065651f50..7a490bb7b 100644 --- a/SQF/dayz_code/Configs/CfgServerTrader/Category/Weapons.hpp +++ b/SQF/dayz_code/Configs/CfgServerTrader/Category/Weapons.hpp @@ -459,10 +459,10 @@ class Category_16 { class AK74_GL_PSO1_SD_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {1,"ItemGoldBar10oz"};}; class AK107_DZ {type = "trade_weapons";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; class AK107_Kobra_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {3,"ItemGoldBar"};}; - class AK107_PSO1_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {5,"ItemGoldBar"};}; + class AK107_PSO_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {5,"ItemGoldBar"};}; class AK107_GL_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {3,"ItemGoldBar"};}; class AK107_GL_Kobra_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {5,"ItemGoldBar"};}; - class AK107_GL_PSO1_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {7,"ItemGoldBar"};}; + class AK107_GL_PSO_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {7,"ItemGoldBar"};}; class AN94_DZ {type = "trade_weapons";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; class AN94_GL_DZ {type = "trade_weapons";buy[] = {-1,"ItemGoldBar"};sell[] = {3,"ItemGoldBar"};}; class SCAR_H_AK_DZ {type = "trade_weapons";buy[] = {8,"ItemGoldBar"};sell[] = {4,"ItemGoldBar"};}; diff --git a/SQF/dayz_code/Configs/CfgServerTrader/Category/Wholesale.hpp b/SQF/dayz_code/Configs/CfgServerTrader/Category/Wholesale.hpp index 9984fdb66..959b022de 100644 --- a/SQF/dayz_code/Configs/CfgServerTrader/Category/Wholesale.hpp +++ b/SQF/dayz_code/Configs/CfgServerTrader/Category/Wholesale.hpp @@ -16,4 +16,12 @@ class Category_50 { class ItemRSJ {type = "trade_items";buy[] = {1,"ItemGoldBar10oz"};sell[] = {5,"ItemGoldBar"};}; class ItemFuelBarrelEmpty {type = "trade_items";buy[] = {1,"ItemGoldBar"};sell[] = {5,"ItemSilverBar10oz"};}; class ItemFuelBarrel {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; +}; + +class Category_52 { + class helipad_civil_kit {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; + class helipad_rescue_kit {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; + class helipad_army_kit {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; + class helipad_cross_kit {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; + class helipad_parkborder_kit {type = "trade_items";buy[] = {2,"ItemGoldBar"};sell[] = {1,"ItemGoldBar"};}; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Weapons.hpp b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Weapons.hpp index f5bb4e067..23bebf4b0 100644 --- a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Weapons.hpp +++ b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Weapons.hpp @@ -459,10 +459,10 @@ class Category_16 { class AK74_GL_PSO1_SD_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {1000,"worth"};}; class AK107_DZ {type = "trade_weapons";buy[] = {200,"worth"};sell[] = {100,"worth"};}; class AK107_Kobra_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {300,"worth"};}; - class AK107_PSO1_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {500,"worth"};}; + class AK107_PSO_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {500,"worth"};}; class AK107_GL_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {300,"worth"};}; class AK107_GL_Kobra_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {500,"worth"};}; - class AK107_GL_PSO1_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {700,"worth"};}; + class AK107_GL_PSO_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {700,"worth"};}; class AN94_DZ {type = "trade_weapons";buy[] = {200,"worth"};sell[] = {100,"worth"};}; class AN94_GL_DZ {type = "trade_weapons";buy[] = {-1,"worth"};sell[] = {300,"worth"};}; class SCAR_H_AK_DZ {type = "trade_weapons";buy[] = {800,"worth"};sell[] = {400,"worth"};}; diff --git a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Wholesale.hpp b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Wholesale.hpp index 9c44c8e47..130f6f0a9 100644 --- a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Wholesale.hpp +++ b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Wholesale.hpp @@ -16,4 +16,12 @@ class Category_50 { class ItemRSJ {type = "trade_items";buy[] = {1000,"worth"};sell[] = {500,"worth"};}; class ItemFuelBarrelEmpty {type = "trade_items";buy[] = {100,"worth"};sell[] = {50,"worth"};}; class ItemFuelBarrel {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; +}; + +class Category_52 { + class helipad_civil_kit {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; + class helipad_rescue_kit {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; + class helipad_army_kit {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; + class helipad_cross_kit {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; + class helipad_parkborder_kit {type = "trade_items";buy[] = {200,"worth"};sell[] = {100,"worth"};}; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgVehicles/Buildables/Misc.hpp b/SQF/dayz_code/Configs/CfgVehicles/Buildables/Misc.hpp index 25c546953..0a834b794 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Buildables/Misc.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Buildables/Misc.hpp @@ -241,22 +241,6 @@ class Fort_RazorWire : BuiltItems { nounderground = 0; }; -class USMC_WarfareBMGNest_M240; -class M240Nest_DZ: USMC_WarfareBMGNest_M240 -{ - destrType = "DestructBuilding"; - armor = 450; - scope = 2; - offset[] = {0,3.5,0}; - displayName = $STR_EPOCH_M240NEST; - vehicleClass = "DayZ Epoch Buildables"; - transportMaxMagazines = 25; - transportMaxWeapons = 4; - transportMaxBackpacks = 1; - constructioncount = 10; - removeoutput[] = {{"m240_nest_kit",1}}; -}; - class WoodGate_DZ: BuiltItems { scope = 2; @@ -333,7 +317,7 @@ class Greenhouse_DZ: MAP_Misc_Greenhouse mapSize = 2; displayName = $STR_EPOCH_GREENHOUSE; constructioncount = 1; - offset[] = {0,3,2}; + offset[] = {0,5,1.4}; removeoutput[] = {{"greenhouse_kit",1}}; vehicleClass = "DayZ Epoch Buildables"; }; diff --git a/SQF/dayz_code/Configs/CfgVehicles/Buildables/StaticWeapons.hpp b/SQF/dayz_code/Configs/CfgVehicles/Buildables/StaticWeapons.hpp new file mode 100644 index 000000000..80a3bbb52 --- /dev/null +++ b/SQF/dayz_code/Configs/CfgVehicles/Buildables/StaticWeapons.hpp @@ -0,0 +1,288 @@ +class USMC_WarfareBMGNest_M240; +class M240Nest_DZ: USMC_WarfareBMGNest_M240 +{ + destrType = "DestructBuilding"; + armor = 450; + scope = 2; + offset[] = {0,3.5,0}; + displayName = $STR_EPOCH_M240NEST; + transportMaxMagazines = 25; + transportMaxWeapons = 4; + transportMaxBackpacks = 1; + constructioncount = 10; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"m240_nest_kit",1}}; +}; + +class M2StaticMG; +class M2_MG_Static_DZ: M2StaticMG { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "M2_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"M2_MG_Static_kit",1}}; +}; + +class M2HD_mini_TriPod; +class M2_TriPod_MG_Static_DZ: M2HD_mini_TriPod { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "M2_TriPod_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"M2_TriPod_MG_Static_kit",1}}; +}; + +class DSHKM_Ins; +class DSHKM_MG_Static_DZ: DSHKM_Ins { + side = 1; + faction = "USMC"; + offset[] = {0,3,2}; + GhostPreview = "DSHKM_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"DSHKM_MG_Static_kit",1}}; +}; + +class DSHkM_Mini_TriPod; +class DSHKM_TriPod_MG_Static_DZ: DSHkM_Mini_TriPod { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "DSHKM_TriPod_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"DSHKM_TriPod_MG_Static_kit",1}}; +}; + +class KORD; +class KORD_Tripod_MG_Static_DZ: KORD { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "KORD_Tripod_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"KORD_TriPod_MG_Static_kit",1}}; +}; + +class KORD_high; +class KORD_MG_Static_DZ: KORD_high { + side = 1; + faction = "USMC"; + offset[] = {0,3,2}; + GhostPreview = "KORD_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"KORD_MG_Static_kit",1}}; +}; + +class BAF_L2A1_ACOG_base; +class BAF_L2A1_Tripod_D: BAF_L2A1_ACOG_base { + class assembleInfo; +}; + +class L2A1_MG_Static_DZ: BAF_L2A1_Tripod_D { + side = 1; + faction = "USMC"; + class assembleInfo: assembleInfo { + dissasembleTo[] = {}; + }; + offset[] = {0,3,1}; + GhostPreview = "L2A1_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"L2A1_MG_Static_kit",1}}; +}; + +class BAF_L2A1_Minitripod_D: BAF_L2A1_ACOG_base { + class assembleInfo; +}; + +class L2A1_Tripod_MG_Static_DZ: BAF_L2A1_Minitripod_D { + side = 1; + faction = "USMC"; + class assembleInfo: assembleInfo { + dissasembleTo[] = {}; + }; + offset[] = {0,3,1}; + GhostPreview = "L2A1_Tripod_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"L2A1_Tripod_MG_Static_kit",1}}; +}; + +class GMG_TriPod; +class BAF_GMG_Tripod_D: GMG_TriPod { + class assembleInfo; +}; + +class GMG_Tripod_MG_Static_DZ: BAF_GMG_Tripod_D { + side = 1; + faction = "USMC"; + class assembleInfo: assembleInfo { + dissasembleTo[] = {}; + }; + offset[] = {0,3,0}; + GhostPreview = "GMG_Tripod_MG_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"GMG_Tripod_MG_Static_kit",1}}; +}; + +class AGS_Ins; +class AGS30_GrenadeLauncher_Static_DZ: AGS_Ins { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "AGS30_GrenadeLauncher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"AGS30_GrenadeLauncher_Static_kit",1}}; +}; + +class MK19_TriPod; +class MK19_TriPod_GrenadeLauncher_Static_DZ: MK19_TriPod { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "MK19_TriPod_GrenadeLauncher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"MK19_TriPod_GrenadeLauncher_Static_kit",1}}; +}; + +class BAF_GPMG_Minitripod_D: BAF_L2A1_ACOG_base { + class assembleInfo; +}; + +class GPMG_TriPod_GrenadeLauncher_Static_DZ: BAF_GPMG_Minitripod_D { + side = 1; + faction = "USMC"; + class assembleInfo: assembleInfo { + dissasembleTo[] = {}; + }; + offset[] = {0,3,1}; + GhostPreview = "GPMG_TriPod_GrenadeLauncher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"GPMG_TriPod_GrenadeLauncher_Static_kit",1}}; +}; + +class M119; +class M119_Artillery_Static_DZ: M119 { + side = 1; + faction = "USMC"; + offset[] = {0,5,0.5}; + GhostPreview = "M119_Artillery_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"M119_Artillery_Static_kit",1}}; +}; + +class D30_Ins; +class D30_Artillery_Static_DZ: D30_Ins { + side = 1; + faction = "USMC"; + offset[] = {0,5,1}; + GhostPreview = "D30_Artillery_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"D30_Artillery_Static_kit",1}}; +}; + +class SearchLight_INS; +class SearchLight_Static_DZ: SearchLight_INS { + side = 1; + faction = "USMC"; + offset[] = {0,3,0}; + GhostPreview = "SearchLight_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"SearchLight_Static_kit",1}}; +}; + +class M252; +class M252_Mortar_Static_DZ: M252 { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "M252_Mortar_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"M252_Mortar_Static_kit",1}}; +}; + +class 2b14_82mm; +class 2b14_82mm_Mortar_Static_DZ: 2b14_82mm { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "2b14_82mm_Mortar_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"2b14_82mm_Mortar_Static_kit",1}}; +}; + +class Metis; +class Metis_Launcher_Static_DZ: Metis { + side = 1; + faction = "USMC"; + offset[] = {0,3,1}; + GhostPreview = "Metis_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"Metis_Launcher_Static_kit",1}}; +}; + +class SPG9_Gue; +class SPG9_Launcher_Static_DZ: SPG9_Gue { + side = 1; + faction = "USMC"; + offset[] = {0,3,0}; + GhostPreview = "SPG9_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"SPG9_Launcher_Static_kit",1}}; +}; + +class Stinger_Pod; +class Stinger_Tripod_Launcher_Static_DZ: Stinger_Pod { + side = 1; + faction = "USMC"; + offset[] = {0,3,0}; + GhostPreview = "Stinger_Tripod_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"Stinger_Tripod_Launcher_Static_kit",1}}; +}; + +class TOW_TriPod; +class TOW_Tripod_Launcher_Static_DZ: TOW_TriPod { + side = 1; + faction = "USMC"; + offset[] = {0,3,2}; + GhostPreview = "TOW_Tripod_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"TOW_Tripod_Launcher_Static_kit",1}}; +}; + +class Stinger_Pod_base; +class Rbs70_ACR: Stinger_Pod_base { + class AssembleInfo; +}; + +class Rbs70_Launcher_Static_DZ: Rbs70_ACR { + side = 1; + faction = "USMC"; + class AssembleInfo : AssembleInfo { + dissasembleTo[] = {}; + }; + offset[] = {0,3,4}; + GhostPreview = "Rbs70_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"Rbs70_Launcher_Static_kit",1}}; +}; + +class Igla_AA_pod_East; +class Igla_AntiAir_Launcher_Static_DZ: Igla_AA_pod_East { + side = 1; + faction = "USMC"; + offset[] = {0,3,2}; + GhostPreview = "Igla_AntiAir_Launcher_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"Igla_AntiAir_Launcher_Static_kit",1}}; +}; + +class ZU23_Ins; +class ZU23_AntiAir_Static_DZ: ZU23_Ins { + side = 1; + faction = "USMC"; + offset[] = {0,3,2}; + GhostPreview = "ZU23_AntiAir_Static_DZ"; + vehicleClass = "DayZ Epoch Static Weapons"; + removeoutput[] = {{"ZU23_AntiAir_Static_kit",1}}; +}; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp index e827177c0..9348c66a0 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp @@ -622,6 +622,7 @@ class CfgVehicles #include "Zeds\WildZeds.hpp" //Wild type zeds #include "Zeds\SwarmZeds.hpp" //Swarm type zeds #include "Zeds\PlayerZeds.hpp" //Player type zeds + #include "Zeds\Bloodsuckers.hpp" //NS Bloodsuckers //Skins #include "Skins\Male.hpp" #include "Skins\Female.hpp" @@ -780,6 +781,7 @@ class CfgVehicles #include "Buildables\Sandbags.hpp" #include "Buildables\Billboards.hpp" #include "Buildables\Misc.hpp" + #include "Buildables\StaticWeapons.hpp" //Loot Container #include "LootContainer\AmmoCrates.hpp" diff --git a/SQF/dayz_code/Configs/CfgVehicles/Zeds/Bloodsuckers.hpp b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Bloodsuckers.hpp new file mode 100644 index 000000000..686337797 --- /dev/null +++ b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Bloodsuckers.hpp @@ -0,0 +1,134 @@ +class z_bloodsucker : Zed_Base { + scope = 2; + glassesEnabled = 0; + vehicleClass = "Zombie"; + displayName = $STR_ZNAME_BLOODSUCKER; + model = "\nst\NS_mutants\blood\bloodsucker.p3d"; + hiddenSelections[] = {"invisible"}; + //hiddenSelectionsTextures[] = {}; + fsmDanger = ""; + fsmFormation = ""; + //zombieLoot = "bloodsucker"; + moves = "CfgMovesBloodsucker"; + isMan = false; + weapons[] = {}; + magazines[] = {}; + sensitivity = 1; // sensor sensitivity + sensitivityEar = 1; + identityTypes[] = {}; + class TalkTopics {}; + languages[] = {}; + armor = 46; + damageScale = 250; + sepsisChance = 0; + BleedChance = 10; // Maybe this should be higher + forcedSpeed = 6; // Left here to prevent errors in player_zombieCheck + + class Eventhandlers { + init = "[(_this select 0)] execFSM ""\z\AddOns\dayz_code\system\mutant_agent.fsm"""; + local = "_z = _this select 0; if (!(_this select 1)) exitWith {}; if (isServer) exitWith { _z call sched_co_deleteVehicle; }; [_z,true] execFSM '\z\AddOns\dayz_code\system\mutant_agent.fsm';"; + //HandleDamage = "_this call local_zombieDamage;"; + //Killed = "[_this,'zombieKills'] call local_eventKill;"; + }; + + class UserActions + { + class Butcher + { + displayName = $STR_EPOCH_ACTIONS_GUTBLOOD; + displayNameDefault = $STR_EPOCH_ACTIONS_GUTBLOOD; + priority = 0; + radius = 3; + position = ""; + showWindow = 1; + onlyForPlayer = 1; + shortcut = ""; + condition = "(['Butcher',this] call userActionConditions)"; + statement = "this spawn player_butcher;"; + }; + }; + + class HitPoints { + class HitHead { + armor = 10; + material = -1; + name = "head_hit"; + passThrough = true; + memoryPoint = "pilot"; + }; + + class HitBody : HitHead { + armor = 20; + name = "body"; + memoryPoint = "aimPoint"; + }; + + class HitSpine : HitHead { + armor = 10; + name = "Spine2"; + memoryPoint = "aimPoint"; + }; + + class HitHands : HitHead { + armor = 10; + material = -1; + name = "hands"; + passThrough = true; + }; + + class HitLArm : HitHands { + name = "LeftArm"; + memoryPoint = "lelbow"; + }; + + class HitRArm : HitHands { + name = "RightArm"; + memoryPoint = "relbow"; + }; + + class HitLForeArm : HitHands { + name = "LeftForeArm"; + memoryPoint = "lwrist"; + }; + + class HitRForeArm : HitHands { + name = "RightForeArm"; + memoryPoint = "rwrist"; + }; + + class HitLHand : HitHands { + name = "LeftHand"; + memoryPoint = "LeftHandMiddle1"; + }; + + class HitRHand : HitHands { + name = "RightHand"; + memoryPoint = "RightHandMiddle1"; + }; + + class HitLegs : HitHands { + name = "legs"; + memoryPoint = "pelvis"; + }; + + class HitLLeg : HitHands { + name = "LeftLeg"; + memoryPoint = "lknee"; + }; + + class HitLLegUp : HitHands { + name = "LeftUpLeg"; + memoryPoint = "lfemur"; + }; + + class HitRLeg : HitHands { + name = "RightLeg"; + memoryPoint = "rknee"; + }; + + class HitRLegUp : HitHands { + name = "RightUpLeg"; + memoryPoint = "rfemur"; + }; + }; +}; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgWeapons/CfgWeapons.hpp b/SQF/dayz_code/Configs/CfgWeapons/CfgWeapons.hpp index 260344ccd..6c69823c1 100644 --- a/SQF/dayz_code/Configs/CfgWeapons/CfgWeapons.hpp +++ b/SQF/dayz_code/Configs/CfgWeapons/CfgWeapons.hpp @@ -346,9 +346,10 @@ class CfgWeapons #include "Tools\Scissors.hpp" #include "Tools\ScrewExtractor.hpp" #include "Tools\Wrench.hpp" + #include "Tools\MutantHeart.hpp" #include "Item\ItemKeys.hpp" #include "Item\Documents.hpp" - #include "VehicleWeapons.hpp" + #include "VehicleWeapons.hpp" }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgWeapons/Rifles/G3.hpp b/SQF/dayz_code/Configs/CfgWeapons/Rifles/G3.hpp index 60fb27f1d..afec1910a 100644 --- a/SQF/dayz_code/Configs/CfgWeapons/Rifles/G3.hpp +++ b/SQF/dayz_code/Configs/CfgWeapons/Rifles/G3.hpp @@ -1,3 +1,24 @@ +#define G3_ACOG modelOptics = "\Ca\weapons_E\SCAR\ACOG_TA31_optic_4x.p3d";\ +class OpticsModes\ +{\ + class ACOG\ + {\ + opticsID = 1;\ + useModelOptics = true;\ + opticsFlare = true;\ + opticsDisablePeripherialVision = true;\ + opticsZoomMin = 0.0623;\ + opticsZoomMax = 0.0623;\ + opticsZoomInit = 0.0623;\ + distanceZoomMin = 300;\ + distanceZoomMax = 300;\ + memoryPointCamera = "opticView";\ + visionMode[] = {"Normal"};\ + opticsPPEffects[] = {"OpticsCHAbera3","OpticsBlur3"};\ + cameraDir = "";\ + };\ +} + class G3_DZ: FNFAL_DZ { scope = 2; @@ -10,30 +31,30 @@ class G3_DZ: FNFAL_DZ fireLightDuration = 0.000; fireLightIntensity = 0.000; drySound[] = {"Ca\sounds\Weapons\rifles\dry",db-50,1,10}; - reloadMagazineSound[] = {"ca\sounds\weapons\rifles\reload-m16-3",db-25,1,25}; + reloadMagazineSound[] = {"\C1987_G3\sound\G3_Reload.wss",0.056234,1,20}; distanceZoomMin = 50; distanceZoomMax = 50; handAnim[] = {"OFP2_ManSkeleton"}; modes[] = {Single, FullAuto}; class Single : Mode_SemiAuto { - begin1[] = {"rh_mgswp\sound\scarAk", db5, 1,1000}; - soundBegin[] = {begin1,1}; + begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000}; + soundBegin[] = {"begin1",1}; reloadTime = 0.07; recoil = "recoil_single_primary_3outof10"; recoilProne = "recoil_single_primary_prone_3outof10"; dispersion = 0.003; minRange = 2; minRangeProbab = 0.25; - midRange = 20; + midRange = 200; midRangeProbab = 0.7; - maxRange = 50; + maxRange = 500; maxRangeProbab = 0.05; }; class FullAuto : Mode_FullAuto { - begin1[] = {"rh_mgswp\sound\scarAk", db5, 1,1000}; - soundBegin[] = {begin1,1}; + begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000}; + soundBegin[] = {"begin1",1}; soundContinuous = 0; reloadTime = 0.1; ffCount = 1; @@ -43,10 +64,142 @@ class G3_DZ: FNFAL_DZ dispersion = 0.003; //0.007; minRange = 0; minRangeProbab = 0.20; - midRange = 7; + midRange = 150; midRangeProbab = 0.7; - maxRange = 15; + maxRange = 400; maxRangeProbab = 0.05; }; class Attachments {}; -}; \ No newline at end of file +}; + +class G3A3_DZ: G3_DZ +{ + displayName = $STR_DZ_WPN_G3A3_NAME; + model = "\C1987_G3\g3.p3d"; + picture = "\C1987_G3\equip\g3.paa"; + + class Attachments + { + Attachment_CCO = "G3A3_CCO_DZ"; + Attachment_Holo = "G3A3_HOLO_DZ"; + Attachment_ACOG = "G3A3_ACOG_DZ"; + }; +}; + +class G3A3_CCO_DZ: G3A3_DZ +{ + displayName = $STR_DZ_WPN_G3A3_CCO_NAME; + model = "\C1987_G3\g3_aimshot.p3d"; + picture = "\C1987_G3\equip\g3_aim.paa"; + class Attachments {}; + + class ItemActions + { + class RemoveCCO + { + text = $STR_DZ_ATT_CCO_RMVE; + script = "; ['Attachment_CCO',_id,'G3A3_DZ'] call player_removeAttachment"; + }; + }; +}; + +class G3A3_Holo_DZ: G3A3_DZ +{ + displayName = $STR_DZ_WPN_G3A3_HOLO_NAME; + model = "\C1987_G3\g3_eotech.p3d"; + picture = "\C1987_G3\equip\g3_eotech.paa"; + class Attachments {}; + + class ItemActions + { + class RemoveHolo + { + text = $STR_DZ_ATT_HOLO_RMVE; + script = "; ['Attachment_Holo',_id,'G3A3_DZ'] call player_removeAttachment"; + }; + }; +}; + +class G3A3_ACOG_DZ: G3A3_DZ +{ + displayName = $STR_DZ_WPN_G3A3_ACOG_NAME; + model = "\C1987_G3\g3_acog.p3d"; + picture = "\C1987_G3\equip\g3_acog.paa"; + class Attachments {}; + G3_ACOG; + + class ItemActions + { + class RemoveACOG + { + text = $STR_DZ_ATT_ACOG_RMVE; + script = "; ['Attachment_ACOG',_id,'G3A3_DZ'] call player_removeAttachment"; + }; + }; +}; + +class G3_SG1_DZ: G3A3_DZ +{ + displayName = $STR_DZ_WPN_G3_SG1_NAME; + model = "\C1987_G3\g3sg1.p3d"; + picture = "\C1987_G3\equip\g3sg1.paa"; + modelOptics = "\ca\weapons\2Dscope_MilDot_10"; + opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1"}; + opticsZoomMin = 0.029624; + opticsZoomMax = 0.09222; + opticsZoomInit = 0.09222; + distanceZoomMin = 329; + distanceZoomMax = 329; + optics = 1; + class Single : Mode_SemiAuto + { + begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000}; + soundBegin[] = {"begin1",1}; + reloadTime = 0.07; + recoil = "recoil_single_primary_3outof10"; + recoilProne = "recoil_single_primary_prone_3outof10"; + dispersion = 0.003; + minRange = 2; + minRangeProbab = 0.25; + midRange = 400; + midRangeProbab = 0.7; + maxRange = 800; + maxRangeProbab = 0.05; + }; + class FullAuto : Mode_FullAuto + { + begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000}; + soundBegin[] = {"begin1",1}; + soundContinuous = 0; + reloadTime = 0.1; + ffCount = 1; + recoil = "recoil_auto_primary_3outof10"; + recoilProne = "recoil_auto_primary_prone_3outof10"; + aiRateOfFire = 0.001; + dispersion = 0.003; //0.007; + minRange = 0; + minRangeProbab = 0.20; + midRange = 350; + midRangeProbab = 0.7; + maxRange = 700; + maxRangeProbab = 0.05; + }; + class Attachments {}; +}; + +class G3_SG1_Bipod_DZ: G3_SG1_DZ +{ + displayName = $STR_DZ_WPN_G3_SG1_BIPOD_NAME; + model = "\C1987_G3\g3sg1_bipod.p3d"; + picture = "\C1987_G3\equip\g3sg1_bipod.paa"; + class Single : Single + { + recoilProne = "recoil_single_primary_prone_1outof10"; + }; + class FullAuto : FullAuto + { + recoilProne = "recoil_auto_primary_prone_2outof10"; + }; +}; + +#undef G3_ACOG \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVD.hpp b/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVD.hpp index 46a9fc579..ebdb10ab0 100644 --- a/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVD.hpp +++ b/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVD.hpp @@ -172,6 +172,26 @@ class SVD_Gold_DZ : SVD_PSO1_DZ { model = "\RH_aks\RH_svdg.p3d"; picture = "\RH_aks\inv\svdg.paa"; + class OpticsModes { + class Scope { + discreteDistance[] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; + discreteDistanceInitIndex = 2; + cameraDir = ""; + distanceZoomMax = 300; + distanceZoomMin = 300; + memoryPointCamera = "opticView"; + opticsDisablePeripherialVision = 1; + opticsFlare = 1; + opticsID = 1; + opticsPPEffects[] = {"OpticsCHAbera3", "OpticsBlur3"}; + opticsZoomInit = 0.0623; + opticsZoomMax = 0.0623; + opticsZoomMin = 0.0623; + useModelOptics = 1; + visionMode[] = {"Normal"}; + }; + }; + class ItemActions {}; class Attachments {}; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVU.hpp b/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVU.hpp index 955c28107..6c7fa13d0 100644 --- a/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVU.hpp +++ b/SQF/dayz_code/Configs/CfgWeapons/Rifles/SVU.hpp @@ -8,4 +8,24 @@ class SVU_PSO1_DZ: SVD_PSO1_DZ { magazines[] = {"10Rnd_762x54_SVD"}; class ItemActions {}; class Attachments {}; + + class OpticsModes { + class Scope { + discreteDistance[] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; + discreteDistanceInitIndex = 2; + cameraDir = ""; + distanceZoomMax = 300; + distanceZoomMin = 300; + memoryPointCamera = "opticView"; + opticsDisablePeripherialVision = 1; + opticsFlare = 1; + opticsID = 1; + opticsPPEffects[] = {"OpticsCHAbera3", "OpticsBlur3"}; + opticsZoomInit = 0.0623; + opticsZoomMax = 0.0623; + opticsZoomMin = 0.0623; + useModelOptics = 1; + visionMode[] = {"Normal"}; + }; + }; }; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/CfgWeapons/Tools/MutantHeart.hpp b/SQF/dayz_code/Configs/CfgWeapons/Tools/MutantHeart.hpp new file mode 100644 index 000000000..a44f9453f --- /dev/null +++ b/SQF/dayz_code/Configs/CfgWeapons/Tools/MutantHeart.hpp @@ -0,0 +1,7 @@ +class ItemMutantHeart: ItemCore +{ + scope = 2; + displayName = $STR_MUTANT_HEART; + picture = "\nst\ns_mutants\blood\heart_icon_ca.paa"; + descriptionShort = $STR_MUTANT_HEART_DESC; +}; \ No newline at end of file diff --git a/SQF/dayz_code/Configs/RscDisplay/RscPlayerUI.hpp b/SQF/dayz_code/Configs/RscDisplay/RscPlayerUI.hpp index 6bc4b4bdb..3892cb186 100644 --- a/SQF/dayz_code/Configs/RscDisplay/RscPlayerUI.hpp +++ b/SQF/dayz_code/Configs/RscDisplay/RscPlayerUI.hpp @@ -931,4 +931,24 @@ class RscTitles }; }; }; + class mutant_attack + { + idd=-1; + movingEnable=0; + duration=1; + fadein=0; + name="Skrabanec"; + controls[]= + { + "skrabanec" + }; + class skrabanec: RscPicture + { + x=0; + y=0; + w=1; + h=1; + text="\nst\textures\skrabanec.paa"; + }; + }; }; diff --git a/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp b/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp new file mode 100644 index 000000000..4a73600fe --- /dev/null +++ b/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp @@ -0,0 +1,304 @@ +class rv_RscText { + idc = -1; + x = 0; + y = 0; + h = 0.037; + w = 0.3; + type = 0; + style = 0; + shadow = 2; + colorShadow[] = {0, 0, 0, 0.5}; + font = "Zeppelin32"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + colorText[] = {1, 1, 1, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + linespacing = 1; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; +}; + +class rv_RscTitle : rv_RscText { + idc = -1; + style = 0; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.95, 0.95, 0.95, 1}; +}; + +class rv_RscShortcutButton { + idc = -1; + style = 0; + default = 0; + shadow = 2; + w = 0.183825; + h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; + color[] = {1,1,1,1.0}; + colorFocused[] = {1,1,1,1.0}; + color2[] = {0.95,0.95,0.95,1}; + colorDisabled[] = {1,1,1,0.25}; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackground2[] = {1,1,1,1}; + animTextureDefault = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureNormal = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureDisabled = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureOver = "gza\scripts\gold\gui\over_ca.paa"; + animTextureFocused = "gza\scripts\gold\gui\focus_ca.paa"; + animTexturePressed = "gza\scripts\gold\gui\down_ca.paa"; + periodFocus = 1.2; + periodOver = 0.8; + class HitZone { + left = 0.0; + top = 0.0; + right = 0.0; + bottom = 0.0; + }; + class ShortcutPos { + left = 0; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + }; + class TextPos { + left = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + period = 0.4; + font = "Zeppelin32"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + action = ""; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + shadow = 1; + }; + class AttributesImage { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; +}; + +class rv_RscButtonMenu : rv_RscShortcutButton { + idc = -1; + type = 16; + style = "0x02 + 0xC0"; + default = 0; + shadow = 0; + x = 0; + y = 0; + w = 0.095589; + h = 0.039216; + animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[] = {0,0,0,0.8}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground2[] = {0.75,0.75,0.75,1}; + color[] = {1,1,1,1}; + colorFocused[] = {0,0,0,1}; + color2[] = {0,0,0,1}; + colorText[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.25}; + period = 1.2; + periodFocus = 1.2; + periodOver = 1.2; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class TextPos { + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "center"; + shadow = 0; + }; + class ShortcutPos { + left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top = 0.005; + w = 0.0225; + h = 0.03; + }; + textureNoShortcut = ""; +}; + +class rv_RscListBox { + style = 16; + idc = -1; + type = 5; + w = 0.275; + h = 0.04; + font = "Zeppelin32"; + colorSelect[] = {0.11,0.686,0.831,1}; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0.28,0.28,0.28,0.28}; + colorSelect2[] = {1, 1, 1, 1}; + colorSelectBackground[] = {0.95, 0.95, 0.95, 0.5}; + colorSelectBackground2[] = {1, 1, 1, 0.5}; + colorScrollbar[] = {0.2, 0.2, 0.2, 1}; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + wholeHeight = 0.45; + rowHeight = 0.04; + color[] = {0.7, 0.7, 0.7, 1}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + sizeEx = 0.023; + maxHistoryDelay = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\ca\ui\data\igui_scrollbar_thumb_ca.paa"; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + border = "\ca\ui\data\igui_border_scroll_ca.paa"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; + soundSelect[] = { "", 0, 1 }; +}; + +class rv_RscStructuredText { + type = 13; + style = 0; + x = 0; + y = 0; + h = 0.035; + w = 0.1; + text = ""; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1.0}; + shadow = 1; + class Attributes { + font = "Zeppelin32"; + color = "#ffffff"; + align = "left"; + shadow = 1; + }; +}; + +class remoteVehicle { + idd = 8800; + name="remoteVehicle"; + onLoad = "uiNamespace setVariable ['rv_dialog', _this select 0]"; + movingEnabled = 0; + enableSimulation = 1; + + class controlsBackground { + class rv_RscTitleBackground : rv_RscText { + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + idc = -1; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class MainBackground : rv_RscText { + colorBackground[] = {0,0,0,0.7}; + idc = -1; + x = 0.1; + y = 0.2 + (11 / 250); + w = 0.8; + h = 0.7 - (22 / 250); + }; + + class VehicleInfoHeader : rv_RscText { + idc = 8830; + text = $STR_CL_RV_VEHICLE_INFO; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.47; y = 0.26; + w = 0.42; + h = (1 / 25); + }; + + class CloseBtn : rv_RscButtonMenu { + idc = -1; + text = $STR_UI_CLOSE; + onButtonClick = "closeDialog 2;"; + x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 40); + h = (1 / 25); + }; + }; + + class controls { + class Title : rv_RscTitle { + idc = 8801; + text = ""; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class VehicleList : rv_RscListBox { + idc = 8802; + text = ""; + sizeEx = 0.04; + colorBackground[] = {0.1,0.1,0.1,0.9}; + onLBSelChanged = "[_this] call rv_vehicleInfo;"; + x = 0.11; y = 0.302; + w = 0.35; h = 0.49; + }; + + class VehicleTitleBox : rv_RscText { + idc = 8804; + text = $STR_CL_RV_VEHICLE_LIST; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.11; y = 0.26; + w = 0.35; + h = (1 / 25); + }; + + class selectVehicle : rv_RscButtonMenu { + idc = 8850; + text = $STR_CL_RV_SELECT_VEHICLE; + onButtonClick = "rv_isOk = true;closeDialog 0;"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 20); + h = (1 / 25); + }; + + class vehicleInfomationList : rv_RscStructuredText { + idc = 8803; + text = ""; + sizeEx = 0.035; + x = 0.47; y = 0.3; + w = 0.41; h = 0.5; + }; + }; +}; diff --git a/SQF/dayz_code/Configs/RscDisplay/vehicleKeyChanger.hpp b/SQF/dayz_code/Configs/RscDisplay/vehicleKeyChanger.hpp new file mode 100644 index 000000000..96e4868d5 --- /dev/null +++ b/SQF/dayz_code/Configs/RscDisplay/vehicleKeyChanger.hpp @@ -0,0 +1,315 @@ +class vkc_RscText { + idc = -1; + x = 0; + y = 0; + h = 0.037; + w = 0.3; + type = 0; + style = 0; + shadow = 2; + colorShadow[] = {0, 0, 0, 0.5}; + font = "Zeppelin32"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + colorText[] = {1, 1, 1, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + linespacing = 1; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; +}; + +class vkc_RscTitle : vkc_RscText { + idc = -1; + style = 0; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.95, 0.95, 0.95, 1}; +}; + +class vkc_RscShortcutButton { + idc = -1; + style = 0; + default = 0; + shadow = 2; + w = 0.183825; + h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; + color[] = {1,1,1,1.0}; + colorFocused[] = {1,1,1,1.0}; + color2[] = {0.95,0.95,0.95,1}; + colorDisabled[] = {1,1,1,0.25}; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackground2[] = {1,1,1,1}; + animTextureDefault = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureNormal = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureDisabled = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureOver = "gza\scripts\gold\gui\over_ca.paa"; + animTextureFocused = "gza\scripts\gold\gui\focus_ca.paa"; + animTexturePressed = "gza\scripts\gold\gui\down_ca.paa"; + periodFocus = 1.2; + periodOver = 0.8; + class HitZone { + left = 0.0; + top = 0.0; + right = 0.0; + bottom = 0.0; + }; + class ShortcutPos { + left = 0; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + }; + class TextPos { + left = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + period = 0.4; + font = "Zeppelin32"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + action = ""; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + shadow = 1; + }; + class AttributesImage { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; +}; + +class vkc_RscButtonMenu : vkc_RscShortcutButton { + idc = -1; + type = 16; + style = "0x02 + 0xC0"; + default = 0; + shadow = 0; + x = 0; + y = 0; + w = 0.095589; + h = 0.039216; + animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[] = {0,0,0,0.8}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground2[] = {0.75,0.75,0.75,1}; + color[] = {1,1,1,1}; + colorFocused[] = {0,0,0,1}; + color2[] = {0,0,0,1}; + colorText[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.25}; + period = 1.2; + periodFocus = 1.2; + periodOver = 1.2; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class TextPos { + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "center"; + shadow = 0; + }; + class ShortcutPos { + left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top = 0.005; + w = 0.0225; + h = 0.03; + }; + textureNoShortcut = ""; +}; + +class vkc_RscListBox { + style = 16; + idc = -1; + type = 5; + w = 0.275; + h = 0.04; + font = "Zeppelin32"; + colorSelect[] = {0.11,0.686,0.831,1}; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0.28,0.28,0.28,0.28}; + colorSelect2[] = {1, 1, 1, 1}; + colorSelectBackground[] = {0.95, 0.95, 0.95, 0.5}; + colorSelectBackground2[] = {1, 1, 1, 0.5}; + colorScrollbar[] = {0.2, 0.2, 0.2, 1}; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + wholeHeight = 0.45; + rowHeight = 0.04; + color[] = {0.7, 0.7, 0.7, 1}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + sizeEx = 0.023; + maxHistoryDelay = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\ca\ui\data\igui_scrollbar_thumb_ca.paa"; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + border = "\ca\ui\data\igui_border_scroll_ca.paa"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; + soundSelect[] = { "", 0, 1 }; +}; + +class vkc_RscStructuredText { + type = 13; + style = 0; + x = 0; + y = 0; + h = 0.035; + w = 0.1; + text = ""; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1.0}; + shadow = 1; + class Attributes { + font = "Zeppelin32"; + color = "#ffffff"; + align = "left"; + shadow = 1; + }; +}; + +class vkc { + idd = 4800; + name="vkc"; + onload = "player setVariable['isBusy',true,true];"; + onUnload = "player setVariable['isBusy',false,true];"; + movingEnabled = 0; + enableSimulation = 1; + + class controlsBackground { + class vkc_RscTitleBackground : vkc_RscText { + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + idc = -1; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class MainBackground : vkc_RscText { + colorBackground[] = {0,0,0,0.7}; + idc = -1; + x = 0.1; + y = 0.2 + (11 / 250); + w = 0.8; + h = 0.7 - (22 / 250); + }; + + class Title : vkc_RscTitle { + idc = 4801; + text = $STR_CL_VKC_TITLE; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class VehicleInfoHeader : vkc_RscText { + idc = 4830; + text = $STR_CL_VKC_INFO; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.47; y = 0.26; + w = 0.42; + h = (1 / 25); + }; + + class CloseBtn : vkc_RscButtonMenu { + idc = -1; + text = $STR_UI_CLOSE; + onButtonClick = "closeDialog 2;"; + x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 40); + h = (1 / 25); + }; + }; + + class controls { + class VehicleList : vkc_RscListBox { + idc = 4802; + text = ""; + sizeEx = 0.04; + colorBackground[] = {0.1,0.1,0.1,0.9}; + onLBSelChanged = "vkc_charID = (vkc_keyList select 0) select (lbCurSel 4802);vkc_keyName = (vkc_keyList select 1) select (lbCurSel 4802);"; + x = 0.11; y = 0.302; + w = 0.35; h = 0.49; + }; + + class VehicleTitleBox : vkc_RscText { + idc = 4804; + text = $STR_CL_VKC_KEYS; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.11; y = 0.26; + w = 0.35; + h = (1 / 25); + }; + + class claimVehicle : vkc_RscButtonMenu { + idc = 4850; + text = $STR_CL_VKC_CLAIM; + onButtonClick = "vkc_isOk = true;closeDialog 0;"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 20); + h = (1 / 25); + }; + + class changeKey : vkc_RscButtonMenu { + idc = 4851; + text = $STR_CL_VKC_CHANGE; + onButtonClick = "vkc_isOk = true;closeDialog 0;"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 20); + h = (1 / 25); + }; + + class vehicleInfomationList : vkc_RscStructuredText { + idc = 4803; + text = ""; + sizeEx = 0.035; + x = 0.47; y = 0.3; + w = 0.41; h = 0.5; + }; + }; +}; diff --git a/SQF/dayz_code/Configs/RscDisplay/virtualGarage.hpp b/SQF/dayz_code/Configs/RscDisplay/virtualGarage.hpp new file mode 100644 index 000000000..975259ed8 --- /dev/null +++ b/SQF/dayz_code/Configs/RscDisplay/virtualGarage.hpp @@ -0,0 +1,367 @@ +// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/) +// Rewritten by salival (https://github.com/oiad) + +class vg_RscText { + idc = -1; + x = 0; + y = 0; + h = 0.037; + w = 0.3; + type = 0; + style = 0; + shadow = 2; + colorShadow[] = {0, 0, 0, 0.5}; + font = "Zeppelin32"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + colorText[] = {1, 1, 1, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + linespacing = 1; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; +}; + +class vg_RscTitle : vg_RscText { + idc = -1; + style = 0; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.95, 0.95, 0.95, 1}; +}; + +class vg_RscShortcutButton { + idc = -1; + style = 0; + default = 0; + shadow = 2; + w = 0.183825; + h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; + color[] = {1,1,1,1.0}; + colorFocused[] = {1,1,1,1.0}; + color2[] = {0.95,0.95,0.95,1}; + colorDisabled[] = {1,1,1,0.25}; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackground2[] = {1,1,1,1}; + animTextureDefault = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureNormal = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureDisabled = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureOver = "gza\scripts\gold\gui\over_ca.paa"; + animTextureFocused = "gza\scripts\gold\gui\focus_ca.paa"; + animTexturePressed = "gza\scripts\gold\gui\down_ca.paa"; + periodFocus = 1.2; + periodOver = 0.8; + class HitZone { + left = 0.0; + top = 0.0; + right = 0.0; + bottom = 0.0; + }; + class ShortcutPos { + left = 0; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + }; + class TextPos { + left = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + period = 0.4; + font = "Zeppelin32"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + action = ""; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + shadow = 1; + }; + class AttributesImage { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; +}; + +class vg_RscButtonMenu : vg_RscShortcutButton { + idc = -1; + type = 16; + style = "0x02 + 0xC0"; + default = 0; + shadow = 0; + x = 0; + y = 0; + w = 0.095589; + h = 0.039216; + animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[] = {0,0,0,0.8}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground2[] = {0.75,0.75,0.75,1}; + color[] = {1,1,1,1}; + colorFocused[] = {0,0,0,1}; + color2[] = {0,0,0,1}; + colorText[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.25}; + period = 1.2; + periodFocus = 1.2; + periodOver = 1.2; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class TextPos { + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "center"; + shadow = 0; + }; + class ShortcutPos { + left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top = 0.005; + w = 0.0225; + h = 0.03; + }; + textureNoShortcut = ""; +}; + +class vg_RscListBox { + style = 16; + idc = -1; + type = 5; + w = 0.275; + h = 0.04; + font = "Zeppelin32"; + colorSelect[] = {0.11,0.686,0.831,1}; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0.28,0.28,0.28,0.28}; + colorSelect2[] = {1, 1, 1, 1}; + colorSelectBackground[] = {0.95, 0.95, 0.95, 0.5}; + colorSelectBackground2[] = {1, 1, 1, 0.5}; + colorScrollbar[] = {0.2, 0.2, 0.2, 1}; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + wholeHeight = 0.45; + rowHeight = 0.04; + color[] = {0.7, 0.7, 0.7, 1}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + sizeEx = 0.023; + maxHistoryDelay = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\ca\ui\data\igui_scrollbar_thumb_ca.paa"; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + border = "\ca\ui\data\igui_border_scroll_ca.paa"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; + soundSelect[] = { "", 0, 1 }; +}; + +class vg_RscStructuredText { + type = 13; + style = 0; + x = 0; + y = 0; + h = 0.035; + w = 0.1; + text = ""; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1.0}; + shadow = 1; + class Attributes { + font = "Zeppelin32"; + color = "#ffffff"; + align = "left"; + shadow = 1; + }; +}; + +class virtualGarage { + idd = 2800; + name="virtualGarage"; + onload = "player setVariable['isBusy',true,true]; [] spawn vg_maintainSetText;"; + onUnload = "player setVariable['isBusy',false,true];dayz_actionInProgress = false;"; + movingEnabled = 0; + enableSimulation = 1; + + class controlsBackground { + class vg_RscTitleBackground : vg_RscText { + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + idc = -1; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class MainBackground : vg_RscText { + colorBackground[] = {0,0,0,0.7}; + idc = -1; + x = 0.1; + y = 0.2 + (11 / 250); + w = 0.8; + h = 0.7 - (22 / 250); + }; + + class Title : vg_RscTitle { + idc = 2801; + text = $STR_CL_VG_VIRTUAL_GARAGE; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class VehicleInfoHeader : vg_RscText { + idc = 2830; + text = $STR_CL_VG_VEHICLE_INFO; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.47; y = 0.26; + w = 0.42; + h = (1 / 25); + }; + + class CloseBtn : vg_RscButtonMenu { + idc = -1; + text = $STR_UI_CLOSE; + onButtonClick = "closeDialog 2;"; + x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 40); + h = (1 / 25); + }; + }; + + class controls { + class VehicleList : vg_RscListBox { + idc = 2802; + text = ""; + sizeEx = 0.04; + colorBackground[] = {0.1,0.1,0.1,0.9}; + onLBSelChanged = "[_this] call vehicleInfo;"; + x = 0.11; y = 0.302; + w = 0.35; h = 0.49; + }; + + class VehicleTitleBox : vg_RscText { + idc = 2804; + text = ""; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.11; y = 0.26; + w = 0.35; + h = (1 / 25); + }; + + class storeVehicle : vg_RscButtonMenu { + idc = 2850; + text = $STR_CL_VG_STORE_VEHICLE; + onButtonClick = "if (!vg_hasRun) then {vg_hasRun = true;[true] spawn player_storeVehicle;};"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 36); + h = (1 / 25); + }; + + class storeVehicleGear : vg_RscButtonMenu { + idc = 2851; + text = $STR_CL_VG_STORE_VEHICLE_GEAR; + onButtonClick = "if (!vg_hasRun) then {vg_hasRun = true;[false] spawn player_storeVehicle;};"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 15.85); + h = (1 / 25); + }; + + class getVehicle : vg_RscButtonMenu { + idc = 2852; + text = $STR_CL_VG_GET_VEHICLE; + onButtonClick = "if (!vg_hasRun) then {vg_hasRun = true;[] spawn player_getVehicle;};"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 20); + h = (1 / 25); + }; + + class removePad : vg_RscButtonMenu { + idc = 2853; + text = $STR_CL_VG_REMOVE_PAD; + onButtonClick = "call player_removePad;"; + x = 0.5 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = 0.241; + h = (1 / 25); + }; + + class MaintainGarage : vg_RscButtonMenu { + idc = 2854; + text = $STR_CL_VG_MAINTAIN_GARAGE; + onButtonClick = "if (!vg_hasRun) then {vg_hasRun = true;[] spawn Player_MaintainVG;};"; + x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.903; + w = 0.8; + h = (1 / 25); + }; + + class vehicleInfomationList : vg_RscStructuredText { + idc = 2803; + text = ""; + sizeEx = 0.035; + x = 0.47; y = 0.3; + w = 0.41; h = 0.5; + }; + + class MainBackgroundHider : vg_RscText { + colorBackground[] = {0,0,0,1}; + idc = 2810; + x = 0.1; + y = 0.2 + (11 / 250); + w = 0.8; + h = 0.7 - (22 / 250); + }; + + class MainHideText : vg_RscText { + idc = 2811; + text = $STR_CL_VG_SEARCH_VEHICLES; + sizeEx = 0.06; + x = 0.10; + y = 0.5; + w = 0.8; + h = (1 / 15); + }; + }; +}; diff --git a/SQF/dayz_code/Configs/cfgMoves.hpp b/SQF/dayz_code/Configs/cfgMoves.hpp index 0050a9752..84cd12e66 100644 --- a/SQF/dayz_code/Configs/cfgMoves.hpp +++ b/SQF/dayz_code/Configs/cfgMoves.hpp @@ -661,4 +661,2058 @@ class CfgGesturesDogDZ transitionsInterpolated[] = {}; transitionsSimple[] = {}; transitionsDisabled[] = {}; +}; + +class CfgMovesBloodsucker: CfgMovesMaleSdr +{ + skeletonName="OFP2_ManSkeleton"; + gestures="CfgGesturesMale"; + class StandBase; + class StatesExt + { + class AmovPercMstpSnonWnonDnon: StandBase + { + actions="CivilStandActions"; + duty=-1; + equivalentTo=""; + preload=0; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + showWeaponAim=0; + disableWeapons=1; + canPullTrigger=0; + speed=1e+010; + relSpeedMin=0.69999999; + relSpeedMax=1.1; + leaningFactorBeg=0; + leaningFactorEnd=0; + looped=1; + soundEnabled=0; + soundOverride=""; + soundEdge[]={0.5,1}; + enableBinocular=1; + leftHandIKBeg=0; + leftHandIKCurve[]={}; + leftHandIKEnd=0; + rightHandIKBeg=0; + rightHandIKCurve[]={}; + rightHandIKEnd=0; + hasCollShapeSafe=0; + collisionShapeSafe=""; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Mrun_Slow_Wrfl.p3d"; + headBobStrength=0.21393; + limitGunMovement=0.1; + enableOptics=-1; + ConnectTo[]= + { + "ActsPercMstpSnonWpstDnon_suicide1A", + 0.02, + "ActsPercMstpSnonWpstDnon_suicide2A", + 0.02, + "AmovPercMstpSnonWnonDnon_sekaniIn", + 0.02, + "AidlPercMstpSnonWnonDnon", + 0.0099999998, + "AidlPercMstpSnonWnonDnon_player", + 0.0099999998, + "AovrPercMstpSnonWnonDf", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_turnL", + 0.02, + "AmovPercMstpSnonWnonDnon_turnR", + 0.02, + "AmovPercMstpSnonWnonDnon_AmovPknlMstpSnonWnonDnon", + 0.02, + "AmovPercMstpSnonWnonDnon_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPercMstpSnonWnonDnon_AmovPercMstpSrasWrflDnon", + 0.02, + "AmovPercMstpSnonWnonDnon_AmovPercMstpSrasWpstDnon", + 0.02, + "AmovPercMstpSnonWnonDnon_AmovPknlMstpSrasWlnrDnon", + 0.029999999, + "AmovPercMstpSnonWnonDnon_AwopPercMstpSoptWbinDnon", + 0.02, + "ActsPercMstpSnonWnonDnon_varStayLeant", + 2, + "ActsPercMstpSnonWrflDnon_Interrogate01", + 2, + "ActsPercMstpSnonWrflDnon_Interrogate02", + 2, + "ActsPsitMstpSnonWnonDnon_InterrogateLeaves", + 2, + "AmovPercMstpSnonWnonDnon_Scared", + 2, + "AmovPercMstpSnonWnonDnon_Scared2", + 2, + "AmovPercMstpSnonWnonDnon_carCheckPush", + 2, + "AmovPercMstpSnonWnonDnon_carCheckWash", + 2, + "AmovPercMstpSnonWnonDnon_carCheckWheel", + 2, + "AmovPercMstpSnonWnonDnon_exerciseKata", + 2, + "ActsPercMstpSnonWnonDnon_DancingDuoIvan", + 2, + "ActsPercMstpSnonWnonDnon_DancingDuoStefan", + 2, + "ActsPercMstpSnonWnonDnon_DancingStefan", + 2, + "AmovPercMstpSnonWnonDnon_exercisekneeBendA", + 2, + "AmovPercMstpSnonWnonDnon_exercisekneeBendB", + 2, + "AmovPercMstpSnonWnonDnon_exercisePushup", + 2, + "AmovPercMstpSnonWnonDnon_seeWatch", + 2, + "AmovPercMstpSnonWnonDnon_talking", + 2, + "ActsPercMstpSnonWpstDnon_sceneBardak01", + 0.1, + "AmovPercMstpSnonWnonDnon_normalizationTest", + 0.1, + "AmovPercMstpSnonWnonDnon_SaluteIn", + 0.1, + "AmovPercMstpSnonWnonDnon_EaseIn", + 0.1, + "AmovPercMstpSnonWnonDnon_AmovPsitMstpSnonWnonDnon_ground", + 0.1, + "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon", + 0.1, + "AwopPercMstpSgthWnonDnon_start", + 0.1, + "LadderCivilOn", + 1, + "AswmPercMstpSnonWnonDnon", + 0.30000001, + "ActsPknlMstpWunaSnonDnon_sceneCrashSite_Villager", + 0.1, + "AmovPercMstpSnonWnonDnon_AinvPknlMstpSnonWnonDnon", + 0.02, + "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInLow", + 0.02, + "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium", + 0.02, + "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInHigh", + 0.02, + "amovpercmstpsnonwnondnon_amovpercmstpsraswlnrdnon", + 0.02, + "ActsPercSnonWnonDnon_assembling", + 0.0099999998, + "ActsPercSnonWnonDnon_carFixing", + 0.0099999998, + "ActsPercSnonWnonDnon_carFixing2", + 0.0099999998, + "ActsPercSnonWnonDnon_tableSupport_TalkIn", + 0.0099999998, + "ActsPercMstpSrasWunaDnon_sceneLopotevBandCaptured_Kostey", + 0.0099999998, + "AidlPpneMstpSnonWnonDnon_SleepA_layDown", + 0.0099999998, + "AidlPpneMstpSnonWnonDnon_SleepB_layDown", + 0.0099999998, + "AidlPpneMstpSnonWnonDnon_SleepC_layDown", + 0.0099999998, + "ActsPercMstpSnonWunaDnon_sceneNikitinDisloyalty_Nikitin", + 0.0099999998, + "ActsPercMstpSnonWunaDnon_sceneNikitinDisloyalty_Bardak", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneNikitinDisloyalty_Homeless", + 0.0099999998, + "ActsPercMstpSnonWunaDnon_sceneNikitinDisloyalty_Lopotev1", + 0.0099999998, + "ErcUnarm_sitUnarm_L", + 0.0099999998, + "ErcUnarm_sitUnarm_R", + 0.0099999998, + "sitTableRfl_listening_onTTractor", + 0.0099999998, + "sitUnarm_L_idleLoop_onFoiledPallets", + 0.0099999998, + "sitUnarm_L_idleLoop_onFoiledPallets2", + 0.0099999998, + "ErcUnarm_sitTable", + 0.0099999998, + "sitTableUnarm_talkingListening_TowingTractor", + 0.0099999998, + "UnaErc_UnaErcPoslechVelitele", + 0.0099999998, + "Csdr_LHD_oprenOzabradli118cm_A", + 0.0099999998, + "UnaErcVelitelProslov1", + 0.0099999998, + "FPS_shift", + 0.0099999998, + "ctsLopoHover_cdf2", + 0.0099999998, + "ctsLopoHover_lopotev", + 0.0099999998, + "sitUnarm_L_idleLoop_inUH1Y", + 0.0099999998, + "AmelPercMstpSnonWnonDnon_amaterUder1", + 0.02, + "AmelPercMstpSnonWnonDnon_amaterUder2", + 0.02, + "AmelPercMstpSnonWnonDnon_amaterUder3", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah1", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah2", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah3hard", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah4", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah5hard", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah6hlava", + 0.02, + "AmelPercMstpSnonWnonDnon_zasah7bricho", + 0.02, + "NavigationDriverReverse", + 0.0099999998, + "RepairingKneel", + 0.0099999998, + "RepairingErc", + 0.0099999998, + "NavigationHeli", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_initLoop", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_idle70chozeniPoRukou", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_idle68boxing", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_zevl", + 0.0099999998 + }; + InterpolateTo[]= + { + "AinvPknlMstpSnonWnonDnon_AinvPknlMstpSnonWnonDnon_medic", + 0.02, + "AmovPercMstpSnonWnonDnon_turnL", + 0.02, + "AmovPercMstpSnonWnonDnon_turnR", + 0.02, + "AmovPercMwlkSnonWnonDf", + 0.02, + "AmovPercMwlkSnonWnonDfl", + 0.02, + "AmovPercMwlkSnonWnonDl", + 0.02, + "AmovPercMwlkSnonWnonDbl", + 0.02, + "AmovPercMwlkSnonWnonDb", + 0.02, + "AmovPercMwlkSnonWnonDbr", + 0.02, + "AmovPercMwlkSnonWnonDr", + 0.02, + "AmovPercMwlkSnonWnonDfr", + 0.02, + "AmovPercMrunSnonWnonDf", + 0.02, + "AmovPercMrunSnonWnonDfl", + 0.02, + "AmovPercMrunSnonWnonDl", + 0.02, + "AmovPercMrunSnonWnonDbl", + 0.02, + "AmovPercMrunSnonWnonDb", + 0.02, + "AmovPercMrunSnonWnonDbr", + 0.02, + "AmovPercMrunSnonWnonDr", + 0.02, + "AmovPercMrunSnonWnonDfr", + 0.02, + "AmovPercMevaSnonWnonDf", + 0.02, + "AmovPercMevaSnonWnonDfl", + 0.02, + "AmovPercMevaSnonWnonDfr", + 0.02, + "AdthPercMstpSnonWnonDnon_1", + 0.0099999998, + "AdthPercMstpSnonWnonDnon_2", + 0.0099999998, + "AdthPercMstpSnonWnonDnon_3", + 0.0099999998, + "ActsPsitMstpSnonWnonDnon_varSittingDrinking", + 0.02, + "AmovPercMstpSnonWnonDnon_AcinPknlMwlkSnonWnonDb_1", + 0.1, + "ActsPercMstpSnonWnonDnon_talking01", + 0.1, + "ActsPercMstpSnonWnonDnon_talking02", + 0.1, + "ActsPercMstpSnonWnonDnon_talking03", + 0.1, + "ActsPercMstpSnonWnonDnon_talking04", + 0.1, + "AidlPercSnonWnonDnon_talkBS", + 0.0099999998, + "sitTableRfl_listening_onTTractor", + 0.0099999998, + "sitUnarm_L_idleLoop_onFoiledPallets", + 0.0099999998, + "sitUnarm_L_idleLoop_onFoiledPallets2", + 0.0099999998, + "sitUnarm_L_idleLoop_inUH1Y", + 0.0099999998 + }; + }; + class AmovPercMrunSnonWnonDf: AmovPercMstpSnonWnonDnon + { + actions="CivilRunActionsF"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + soundEdge[]={0.25,0.5,0.75,1}; + duty=0.40000001; + soundOverride="run"; + soundEnabled=1; + limitGunMovement=0.1; + walkcycles=2; + disableWeapons=1; + ConnectTo[]= + { + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPercMstpSnonWnonDnon", + 0.02, + "AmovPercMwlkSnonWnonDf", + 0.025, + "AmovPercMrunSnonWnonDfl", + 0.025, + "AmovPercMrunSnonWnonDfr", + 0.025, + "AmovPknlMrunSnonWnonDf", + 0.029999999, + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPercMevaSnonWnonDf", + 0.02 + }; + }; + class AmovPercMwlkSnonWnonDf: AmovPercMstpSnonWnonDnon + { + actions="CivilWlkActionsF"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + soundEdge[]={0.25,0.5,0.75,1}; + speed=3.21; + duty=-0.1; + soundOverride="walk"; + soundEnabled=1; + walkcycles=2; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDfl", + 0.025, + "AmovPercMwlkSnonWnonDfr", + 0.025, + "AmovPercMrunSnonWnonDf", + 0.025, + "AmovPknlMwlkSnonWnonDf", + 0.029999999, + "AmovPercMevaSnonWnonDf", + 0.025, + "AmovPercMrunSnonWnonDf_AmovPercMstpSnonWnonDnon_gthStart", + 0.1 + }; + }; + class AmovPercMwlkSnonWnonDfl: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsFL"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDf", + 0.025, + "AmovPercMwlkSnonWnonDl", + 0.025, + "AmovPercMrunSnonWnonDfl", + 0.025, + "AmovPknlMwlkSnonWnonDfl", + 0.029999999, + "AmovPercMevaSnonWnonDfl", + 0.025, + "AmovPercMrunSnonWnonDf_AmovPercMstpSnonWnonDnon_gthStart", + 0.1 + }; + }; + class AmovPercMwlkSnonWnonDl: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsL"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDfl", + 0.025, + "AmovPercMwlkSnonWnonDbl", + 0.025, + "AmovPercMrunSnonWnonDl", + 0.025, + "AmovPknlMwlkSnonWnonDl", + 0.029999999 + }; + }; + class AmovPercMwlkSnonWnonDbl: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsBL"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDl", + 0.025, + "AmovPercMwlkSnonWnonDb", + 0.025, + "AmovPercMrunSnonWnonDbl", + 0.025, + "AmovPknlMwlkSnonWnonDbl", + 0.029999999 + }; + }; + class AmovPercMwlkSnonWnonDb: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsB"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDbl", + 0.025, + "AmovPercMwlkSnonWnonDbr", + 0.025, + "AmovPercMrunSnonWnonDb", + 0.025, + "AmovPknlMwlkSnonWnonDb", + 0.029999999 + }; + }; + class AmovPercMwlkSnonWnonDbr: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsBR"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDb", + 0.025, + "AmovPercMwlkSnonWnonDr", + 0.025, + "AmovPercMrunSnonWnonDbr", + 0.025, + "AmovPknlMwlkSnonWnonDbr", + 0.029999999 + }; + }; + class AmovPercMwlkSnonWnonDr: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsR"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDbr", + 0.025, + "AmovPercMwlkSnonWnonDfr", + 0.15000001, + "AmovPercMrunSnonWnonDr", + 0.025, + "AmovPknlMwlkSnonWnonDr", + 0.029999999 + }; + }; + class AmovPercMwlkSnonWnonDfr: AmovPercMwlkSnonWnonDf + { + actions="CivilWlkActionsFR"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMwlkSnonWnonDnon_transition", + 0.015, + "AmovPercMwlkSnonWnonDf", + 0.025, + "AmovPercMwlkSnonWnonDr", + 0.15000001, + "AmovPercMrunSnonWnonDfr", + 0.025, + "AmovPknlMwlkSnonWnonDfr", + 0.029999999, + "AmovPercMevaSnonWnonDfr", + 0.025, + "AmovPercMrunSnonWnonDf_AmovPercMstpSnonWnonDnon_gthStart", + 0.1 + }; + }; + class SprintBaseDf: StandBase + { + actions="RifleStandEvasiveActions"; + preload=0; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + soundOverride="sprint"; + duty=0.60000002; + showWeaponAim=0; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Mrun_Slow_Wrfl.p3d"; + leaningFactorBeg=0; + leaningFactorEnd=0; + limitGunMovement=0; + relSpeedMin=0.69717097; + relSpeedMax=1.1; + enableAutoActions=0; + visibleSize=1.000121; + soundEnabled=1; + aiming="aimingCivil"; + aimingBody="aimingUpCivil"; + headBobStrength=0.154229; + headBobMode=2; + ConnectTo[]= + { + "AmovPercMsprSlowWrflDf_AmovPpneMstpSrasWrflDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPercMsprSlowWrflDf_AmovPpneMstpSrasWrflDnon", + 0.02 + }; + }; + class SprintBaseDfl: SprintBaseDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Mrun_Slow_Wrfl_Dl.p3d"; + ConnectTo[]={}; + InterpolateTo[]={}; + }; + class SprintBaseDfr: SprintBaseDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Mrun_Slow_Wrfl_Dr.p3d"; + ConnectTo[]={}; + InterpolateTo[]={}; + }; + class SprintCivilBaseDf: SprintBaseDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Wnon.p3d"; + visibleSize=1.000121; + ConnectTo[]={}; + InterpolateTo[]={}; + }; + class SprintCivilBaseDfl: SprintCivilBaseDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]={}; + }; + class SprintCivilBaseDfr: SprintCivilBaseDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + ConnectTo[]={}; + InterpolateTo[]={}; + }; + class AmovPercMevaSnonWnonDf: SprintCivilBaseDf + { + actions="CivilEvasiveActions"; + soundOverride="sprint"; + soundEnabled=1; + speed=3.21; + canPullTrigger=0; + duty=0.60000002; + walkcycles=1; + ConnectTo[]= + { + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPercMstpSnonWnonDnon", + 0.02, + "AmovPercMwlkSnonWnonDf", + 0.025, + "AmovPercMrunSnonWnonDf", + 0.02, + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPercMevaSnonWnonDfl", + 0.02, + "AmovPercMevaSnonWnonDfr", + 0.02 + }; + }; + class AmovPercMevaSnonWnonDfl: SprintCivilBaseDfl + { + actions="CivilEvasiveActions"; + soundOverride="sprint"; + soundEnabled=1; + canPullTrigger=0; + duty=0.60000002; + relSpeedMin=0.69717097; + relSpeedMax=1.1064889; + walkcycles=2; + ConnectTo[]= + { + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPercMstpSnonWnonDnon", + 0.02, + "AmovPercMwlkSnonWnonDfl", + 0.025, + "AmovPercMrunSnonWnonDfl", + 0.02, + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPercMevaSnonWnonDf", + 0.02, + "AmovPercMevaSnonWnonDfr", + 0.02 + }; + }; + class AmovPercMevaSnonWnonDfr: SprintCivilBaseDfr + { + actions="CivilEvasiveActions"; + soundOverride="sprint"; + soundEnabled=1; + canPullTrigger=0; + duty=0.60000002; + relSpeedMin=0.69717097; + relSpeedMax=1.1064889; + walkcycles=2; + ConnectTo[]= + { + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPercMstpSnonWnonDnon", + 0.02, + "AmovPercMwlkSnonWnonDfr", + 0.025, + "AmovPercMrunSnonWnonDfr", + 0.02, + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPercMevaSnonWnonDf", + 0.02, + "AmovPercMevaSnonWnonDfl", + 0.02 + }; + }; + class AmovPercMevaSrasWrflDf: SprintBaseDf + { + actions="RifleStandEvasiveActions"; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Mrun_Slow_Wrfl.p3d"; + relSpeedMin=0.797005; + soundOverride="sprint"; + soundEnabled=1; + limitGunMovement=0.1; + weaponIK=1; + headBobStrength=0.25373101; + duty=0.60000002; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMstpSrasWrflDnon", + 0.02, + "AmovPercMrunSlowWrflDf", + 0.025, + "AmovPercMwlkSrasWrflDf", + 0.025, + "AmovPercMrunSrasWrflDf", + 0.025, + "AmovPercMsprSlowWrflDf_AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPknlMevaSrasWrflDf", + 0.025, + "AmovPercMevaSlowWrflDf", + 0.025, + "AmovPercMevaSrasWrflDfl", + 0.025, + "AmovPercMevaSrasWrflDfr", + 0.025, + "AdthPercMrunSlowWrflDf_6", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A1short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A2short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A3short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A4short", + 0.0099999998 + }; + }; + class AmovPknlMevaSrasWrflDf: AmovPercMevaSrasWrflDf + { + actions="RifleKneelEvasiveActions"; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPknlMrunSlowWrflDf", + 0.025, + "AmovPknlMrunSrasWrflDf", + 0.025, + "AmovPercMevaSrasWrflDf", + 0.025, + "AmovPercMevaSlowWrflDf", + 0.025 + }; + }; + class AmovPercMevaSlowWrflDf: AmovPercMevaSrasWrflDf + { + actions="RifleStandLowEvasiveActions"; + limitGunMovement=0.1; + weaponIK=1; + headBobStrength=0.25373101; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPercMstpSlowWrflDnon", + 0.025, + "AmovPercMwlkSlowWrflDf", + 0.025, + "AmovPercMrunSlowWrflDf", + 0.025, + "AmovPercMevaSrasWrflDf", + 0.025, + "AidlPercMevaSrasWrflDf", + 0.0099999998, + "AmovPercMevaSlowWrflDfl", + 0.025, + "AmovPercMevaSlowWrflDfr", + 0.025, + "AdthPercMrunSlowWrflDf_A1short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A2short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A3short", + 0.0099999998, + "AdthPercMrunSlowWrflDf_A4short", + 0.0099999998 + }; + }; + class AmovPercMstpSrasWpstDnon: StandBase + { + actions="PistolStandActions"; + duty=-1; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + showWeaponAim=1; + disableWeapons=0; + disableWeaponsLong=0; + showHandGun=1; + speed=1e+010; + relSpeedMin=0.700001; + relSpeedMax=1.1; + aiming="aimingPistol"; + aimingBody="aimingUpPistol"; + looped=1; + soundEnabled=0; + enableBinocular=1; + leftHandIKBeg=1; + leftHandIKCurve[]={1}; + leftHandIKEnd=1; + rightHandIKBeg=1; + rightHandIKCurve[]={1}; + rightHandIKEnd=1; + collisionShape="ca\Anims\Characters\Data\Geom\Sdr\Perc_Wpst.p3d"; + weaponIK=2; + enableOptics=2; + headBobStrength=0.22388101; + headBobMode=2; + ConnectTo[]= + { + "AidlPercMstpSrasWpstDnon_player_0S", + 0.02, + "AovrPercMstpSrasWpstDf", + 0.0099999998, + "AmovPercMstpSrasWpstDnon_AidlPercMstpSlowWpstDnon", + 0.0099999998, + "AmovPercMstpSrasWpstDnon_turnL", + 0.02, + "AmovPercMstpSrasWpstDnon_turnR", + 0.02, + "PistolMagazineReloadStand", + 0.1, + "AmovPercMstpSrasWpstDnon_AmovPercMstpSlowWpstDnon", + 0.02, + "AmovPercMstpSrasWpstDnon_AmovPknlMstpSrasWpstDnon", + 0.02, + "AmovPercMstpSrasWpstDnon_AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPercMstpSrasWpstDnon_AmovPercMstpSrasWrflDnon", + 0.02, + "AmovPercMstpSrasWpstDnon_AwopPercMstpSoptWbinDnon", + 0.02, + "AmovPercMstpSrasWpstDnon_AmovPercMstpSnonWnonDnon", + 0.02, + "ActsPercMstpSnonWpstDnon_sceneBardakPistol01", + 0.1, + "AmovPercMstpSrasWpstDnon_SaluteIn", + 0.02, + "AwopPercMstpSgthWpstDnon_Part1", + 0.1, + "AswmPercMstpSnonWnonDnon", + 0.30000001, + "AmovPercMstpSrasWpstDnon_AinvPknlMstpSnonWnonDnon", + 0.02, + "amovpercmstpsraswpstdnon_amovpercmstpsraswlnrdnon", + 0.02, + "ctsLopoHover_shagarov", + 0.0099999998 + }; + InterpolateTo[]= + { + "AmovPercMstpSrasWpstDnon_turnL", + 0.02, + "AmovPercMstpSrasWpstDnon_turnR", + 0.02, + "AmovPercMwlkSrasWpstDf", + 0.02, + "AmovPercMwlkSrasWpstDfl", + 0.02, + "AmovPercMwlkSrasWpstDl", + 0.02, + "AmovPercMwlkSrasWpstDbl", + 0.02, + "AmovPercMwlkSrasWpstDb", + 0.02, + "AmovPercMwlkSrasWpstDbr", + 0.02, + "AmovPercMwlkSrasWpstDr", + 0.02, + "AmovPercMwlkSrasWpstDfr", + 0.02, + "AmovPercMrunSrasWpstDf", + 0.02, + "AmovPercMrunSrasWpstDfl", + 0.02, + "AmovPercMrunSrasWpstDl", + 0.02, + "AmovPercMrunSrasWpstDbl", + 0.02, + "AmovPercMrunSrasWpstDb", + 0.02, + "AmovPercMrunSrasWpstDbr", + 0.02, + "AmovPercMrunSrasWpstDr", + 0.02, + "AmovPercMrunSrasWpstDfr", + 0.02, + "AmovPercMevaSrasWpstDf", + 0.02, + "AmovPercMevaSrasWpstDfl", + 0.02, + "AmovPercMevaSrasWpstDfr", + 0.02, + "AdthPercMstpSrasWpstDnon_1", + 0.0099999998, + "AdthPercMstpSrasWpstDnon_3", + 0.0099999998, + "AdthPercMstpSrasWpstDnon_5", + 0.0099999998 + }; + }; + class AmovPpneMstpSrasWpstDnon: AmovPercMstpSrasWpstDnon + { + actions="PistolProneActions"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + showWeaponAim=1; + visibleSize=0.100123; + onLandBeg=1; + onLandEnd=1; + aiming="aimingPistol"; + aimingBody="aimingUpPistol"; + legs="legsDefault"; + collisionShape="ca\Anims\Characters\Data\Geom\Sdr\Ppne.p3d"; + leaningFactorBeg=0; + leaningFactorEnd=0; + leaning="leaningDefault"; + soundOverride="crawl"; + weaponIK=2; + limitGunMovement=1; + ConnectTo[]= + { + "AmovPpneMstpSrasWpstDnon_turnL", + 0.02, + "AmovPpneMstpSrasWpstDnon_turnR", + 0.02, + "PistolMagazineReloadProne", + 0.1, + "AmovPpneMstpSrasWpstDnon_AmovPercMstpSrasWpstDnon", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPknlMstpSrasWpstDnon", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPpneMstpSrasWpstDnon_AwopPpneMstpSoptWbinDnon", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPpneMevaSlowWpstDl", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPpneMevaSlowWpstDr", + 0.02, + "AwopPpneMstpSgthWpstDnon_Part1", + 0.1, + "AidlPpneMstpSrasWpstDnon0S", + 0.1, + "AidlPpneMstpSrasWpstDnon01", + 0.1, + "AidlPpneMstpSrasWpstDnon02", + 0.1, + "AidlPpneMstpSrasWpstDnon03", + 0.1, + "AmovPpneMstpSrasWpstDnon_healed", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon_turnL", + 0.02, + "AmovPpneMstpSrasWpstDnon_turnR", + 0.02, + "AmovPpneMrunSlowWpstDf", + 0.02, + "AmovPpneMrunSlowWpstDfl", + 0.02, + "AmovPpneMrunSlowWpstDl", + 0.02, + "AmovPpneMrunSlowWpstDbl", + 0.02, + "AmovPpneMrunSlowWpstDb", + 0.02, + "AmovPpneMrunSlowWpstDbr", + 0.02, + "AmovPpneMrunSlowWpstDr", + 0.02, + "AmovPpneMrunSlowWpstDfr", + 0.02, + "AmovPpneMstpSrasWpstDnon_AmovPercMsprSlowWpstDf", + 0.0099999998, + "AdthPpneMstpSrasWpstDnon_1", + 0.0099999998, + "AdthPpneMstpSrasWpstDnon_2", + 0.0099999998, + "AidlPpneMstpSrasWpstDnon0S", + 0.02, + "AidlPpneMstpSrasWpstDnon01", + 0.02, + "AidlPpneMstpSrasWpstDnon02", + 0.02, + "AidlPpneMstpSrasWpstDnon03", + 0.02 + }; + }; + class AmovPpneMrunSlowWpstDf: AmovPpneMstpSrasWpstDnon + { + visibleSize=0.150123; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + soundOverride="crawl"; + duty=0.40000001; + showWeaponAim=0; + disableWeapons=1; + limitGunMovement=0; + soundEnabled=1; + legs="wholeBody"; + leaning="empty"; + aimingBody="empty"; + aiming="empty"; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDl", + 0.025, + "AmovPpneMrunSlowWpstDfr", + 0.025, + "AmovPpneMstpSrasWpstDnon_AmovPercMsprSlowWpstDf", + 0.0099999998 + }; + }; + class AmovPpneMrunSlowWpstDfl: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDl", + 0.025, + "AmovPpneMrunSlowWpstDb", + 0.025, + "AmovPpneMstpSrasWpstDnon_AmovPercMsprSlowWpstDf", + 0.0099999998 + }; + }; + class AmovPpneMrunSlowWpstDl: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDf", + 0.025, + "AmovPpneMrunSlowWpstDfl", + 0.025 + }; + }; + class AmovPpneMrunSlowWpstDbl: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDb", + 0.025, + "AmovPpneMrunSlowWpstDbr", + 0.025 + }; + }; + class AmovPpneMrunSlowWpstDb: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDfl", + 0.025, + "AmovPpneMrunSlowWpstDbl", + 0.025 + }; + }; + class AmovPpneMrunSlowWpstDbr: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDbl", + 0.025, + "AmovPpneMrunSlowWpstDr", + 0.025 + }; + }; + class AmovPpneMrunSlowWpstDr: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDbr", + 0.025, + "AmovPpneMrunSlowWpstDfr", + 0.025 + }; + }; + class AmovPpneMrunSlowWpstDfr: AmovPpneMrunSlowWpstDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=3.21; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMrunSlowWpstDf", + 0.025, + "AmovPpneMrunSlowWpstDr", + 0.025, + "AmovPpneMstpSrasWpstDnon_AmovPercMsprSlowWpstDf", + 0.0099999998 + }; + }; + class AmovPercMstpSlowWrflDnon: StandBase + { + actions="RifleLowStandActions"; + duty=-1; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Idle.p3d"; + showWeaponAim=0; + disableWeapons=0; + disableWeaponsLong=1; + speed=1e+010; + relSpeedMin=0.69999999; + relSpeedMax=1.1; + looped=1; + soundEnabled=0; + enableBinocular=1; + aiming="aimingDefault"; + aimingBody="aimingUpDefault"; + leftHandIKBeg=1; + leftHandIKCurve[]={1}; + leftHandIKEnd=1; + rightHandIKBeg=1; + rightHandIKCurve[]={1}; + rightHandIKEnd=1; + aimPrecision=1; + weaponIK=1; + headBobMode=2; + canPullTrigger=0; + ConnectTo[]= + { + "AidlPercMstpSlowWrflDnon_player_0S", + 0.0099999998, + "AovrPercMstpSlowWrflDf", + 0.0099999998, + "AmovPercMstpSlowWrflDnon_turnL", + 0.02, + "AmovPercMstpSlowWrflDnon_turnR", + 0.02, + "AmovPercMstpSlowWrflDnon_AmovPknlMstpSlowWrflDnon", + 0.02, + "AmovPercMstpSlowWrflDnon_AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPercMstpSlowWrflDnon_AmovPercMstpSrasWrflDnon", + 0.0099999998, + "ActsPsitMstpSnonWrflDnon_varSittingDrinking", + 10, + "AmovPercMstpSlowWrflDnon_ScaredTalking", + 2, + "AmovPercMstpSlowWrflDnon_talking", + 2, + "AmovPercMstpSlowWrflDnon_seeWatch", + 2, + "AmovPercMstpSlowWrflDnon_SaluteIn", + 0.1, + "AmovPercMstpSrasWrflDnon_SaluteIn", + 0.15000001, + "AmovPercMstpSlowWrflDnon_AmovPsitMstpSlowWrflDnon", + 0.1, + "AmovPercMstpSlowWrflDnon_AmovPsitMstpSrasWrflDnon", + 0.1, + "LadderRifleOn", + 1, + "AswmPercMstpSnonWnonDnon", + 0.30000001, + "AidlPercMstpSrasWrflDnon0S", + 0.0099999998, + "ActsPpneMstpWunaSnonDnon_sceneCrashSite_Cooper", + 0.1, + "AidlPercMstpSlowWrflDnon0S", + 0.0099999998, + "ActsPpneMstpWrflSlowDnon_sceneCrashSite_Ohara", + 0.1, + "ActsPpneMstpWrflSlowDnon_sceneCrashSite_Sykes", + 0.1, + "ActsPpneMstpWrflSlowDnon_sceneCrashSite_Rodriguez", + 0.1, + "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_1", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_AcinPknlMwlkSnonWnonDb_1", + 0.1, + "ActsPercMstpSnonWnonDnon_talking01a", + 0.1, + "AidlPercSlowWrflDnon_talkCalm", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Rodriguez1", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Ohara1", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneLopotevBandCaptured_Cooper", + 0.1, + "AidlPercSlowWrflDnon_talkHeated", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneNikitinDisloyalty_Steve", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneNikitinDisloyalty_Simms", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneNikitinDisloyalty_Kostey", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_sceneNikitinDisloyalty_Adamson", + 0.0099999998, + "ActsPercMstpSgthWmagDnon_sceneNikitinDisloyalty_USflashbang1", + 10, + "ActsPercMstpSlowWpstDnon_sceneLopotevBandCaptured_Sykes", + 0.0099999998, + "ErcRflLow_sitRfl_L", + 0.0099999998, + "ErcRflLow_sitRfl_L2", + 0.0099999998, + "ErcRflLow_sitRfl_R", + 0.0099999998, + "ErcRflLow_sitTable", + 0.0099999998, + "ErcRflLow_sitRfl_L_CARGO", + 0.0099999998, + "CtsDoktor_Doktor_uder4", + 0.0099999998, + "CtsDoktor_Doktor_uder5", + 0.0099999998, + "CtsDoktor_Vojak_vyslechStand2unaerc_reverse", + 0.0099999998, + "otockaErcRflLow_180leva", + 0.0099999998, + "ctsLopoHover_cooper", + 0.0099999998, + "ctsLopoHover_ohara", + 0.0099999998, + "ctsLopoHover_rodriguez", + 0.0099999998, + "ctsLopoHover_sykes", + 0.0099999998, + "sitRfl_R_BidleLoopTest", + 0.0099999998, + "AmelPercMstpSlowWrflDnon_StrokeGun", + 0.02, + "ActsPercMstpSlowWrflDnon_listeningOrdersUnderFireShort", + 0.0099999998, + "AmovPercMstpSlowWrflDnon_ActsPercMstpSlowWrflDr_HideFromFire", + 0.0099999998, + "AsigPercMstpSlowWrflDnon_GoGo", + 0.0099999998, + "AsigPercMstpSlowWrflDnon_AmovPercMrunSlowWrflDnon_GoGo", + 0.0099999998, + "AsigPercMstpSlowWrflDnon_SendMenInAction", + 0.0099999998, + "AmovPercMstpSnonWnonDnon_zevl", + 0.0099999998, + "c4coming2cdf_genericstani", + 0.0099999998 + }; + InterpolateTo[]= + { + "AmovPercMstpSlowWrflDnon_turnL", + 0.02, + "AmovPercMstpSlowWrflDnon_turnR", + 0.02, + "AmovPercMwlkSlowWrflDf", + 0.02, + "AmovPercMwlkSlowWrflDfl", + 0.02, + "AmovPercMwlkSlowWrflDl", + 0.02, + "AmovPercMwlkSlowWrflDbl", + 0.02, + "AmovPercMwlkSlowWrflDb", + 0.02, + "AmovPercMwlkSlowWrflDbr", + 0.02, + "AmovPercMwlkSlowWrflDr", + 0.02, + "AmovPercMwlkSlowWrflDfr", + 0.02, + "AmovPercMrunSlowWrflDf", + 0.02, + "AmovPercMrunSlowWrflDfl", + 0.02, + "AmovPercMrunSlowWrflDl", + 0.02, + "AmovPercMrunSlowWrflDbl", + 0.02, + "AmovPercMrunSlowWrflDb", + 0.02, + "AmovPercMrunSlowWrflDbr", + 0.02, + "AmovPercMrunSlowWrflDr", + 0.02, + "AmovPercMrunSlowWrflDfr", + 0.02, + "AmovPercMevaSlowWrflDf", + 0.025, + "AmovPercMevaSlowWrflDfl", + 0.025, + "AmovPercMevaSlowWrflDfr", + 0.025, + "AmovPercMstpSlowWrflDnon_AmovPercMevaSrasWrflDl", + 0.02, + "AmovPercMstpSlowWrflDnon_AmovPercMevaSrasWrflDr", + 0.02, + "AmovPercMstpSlowWrflDnon_AmovPercMevaSrasWrflDb", + 0.02, + "AdthPercMstpSlowWrflDnon_1", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_2", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_4", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_8", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_rS0", + 0.0099999998, + "AwopPercMstpSgthWrflDnon_Start1", + 0.1, + "AwopPercMstpSgthWrflDnon_Throw1", + 0.1, + "AwopPercMstpSgthWrflDnon_End1", + 0.1, + "AwopPercMstpSgthWrflDnon_Throw2", + 0.1, + "AwopPercMstpSgthWrflDnon_End2", + 0.1, + "AidlPercMstpSlowWrflDnon01", + 0.02, + "AidlPercMstpSlowWrflDnon02", + 0.02, + "AidlPercMstpSlowWrflDnon03", + 0.02, + "AidlPercMstpSlowWrflDnon04", + 0.02, + "AidlPercMstpSlowWrflDnon_i01", + 0.02, + "AidlPercMstpSlowWrflDnon_i02", + 0.02, + "AidlPercMstpSlowWrflDnon_i03", + 0.02, + "AidlPercMstpSlowWrflDnon_i04", + 0.02, + "AidlPercMstpSlowWrflDnon_i05", + 0.02, + "AidlPercMstpSlowWrflDnon_i06", + 0.02, + "AidlPercMstpSlowWrflDnon_i07", + 0.02, + "AidlPercMstpSlowWrflDnon_i08", + 0.02, + "AidlPercMstpSlowWrflDnon_i09", + 0.02, + "AidlPercMstpSlowWrflDnon_i10", + 0.02, + "AidlPercMstpSlowWrflDnon_i11", + 0.02, + "AidlPercMstpSlowWrflDnon_i12", + 0.02, + "AidlPercMstpSlowWrflDnon_i13", + 0.02, + "AidlPercMstpSlowWrflDnon05", + 0.02, + "AidlPercMstpSlowWrflDnon06", + 0.02, + "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_1", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_16", + 0.0099999998, + "AdthPercMstpSlowWrflDnon_32", + 0.0099999998, + "ActsPercMstpSlowWrflDnon_talking_C3BeginBriefing", + 0.1, + "AidlPercSlowWrflDnon_talkListeningS", + 0.0099999998, + "AidlPercSnonWnonDnon_talkAS", + 0.0099999998 + }; + }; + class AmovPercMstpSrasWrflDnon: AmovPercMstpSlowWrflDnon + { + visibleSize=0.70012099; + actions="RifleStandActions"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Perc_Wrfl.p3d"; + showWeaponAim=1; + disableWeapons=0; + disableWeaponsLong=0; + aiming="aimingDefault"; + aimingBody="aimingUpDefault"; + relSpeedMax=1.1; + relSpeedMin=0.700001; + aimPrecision=1; + weaponIK=1; + canPullTrigger=1; + ConnectTo[]= + { + "AidlPercMstpSrasWrflDnon_aiming0S", + 0.02, + "AovrPercMstpSrasWrflDf", + 0.0099999998, + "AmovPercMwlkSrasWrflDnon_transition", + 0.02, + "AmovPercMstpSrasWrflDnon_turnL", + 0.02, + "AmovPercMstpSrasWrflDnon_turnR", + 0.02, + "WeaponMagazineReloadStand", + 0.1, + "amovpercmstpsraswrfldnon_amovpercmstpsraswlnrdnon", + 0.0099999998, + "AmovPercMstpSrasWrflDnon_AmovPknlMstpSrasWrflDnon", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPercMstpSlowWrflDnon", + 0.0099999998, + "AmovPercMstpSrasWrflDnon_AmovPercMstpSrasWpstDnon", + 0.02, + "AmovPercMstpSrasWrflDnon_AwopPercMstpSoptWbinDnon", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPercMstpSnonWnonDnon", + 0.02, + "AwopPercMstpSgthWrflDnon_Start2", + 0.1, + "AswmPercMstpSnonWnonDnon", + 0.30000001, + "AmovPercMstpSrasWrflDnon_AinvPknlMstpSlayWrflDnon", + 0.02, + "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_1", + 0.0099999998, + "ActsPercMstpSnonWpstDnon_sceneBardakRifle01", + 0.1, + "adthpercmstpsraswrfldnon_NikitinDead", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_zevl1", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_zevl2", + 0.0099999998, + "ActsPercMstpSrasWunaDnon_sceneLopotevBandCaptured_Bardak", + 10, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Lopotev", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Miles", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Nameless", + 0.0099999998, + "ActsPercMstpSrasWrflDnon_sceneLopotevBandCaptured_Nikitin", + 0.0099999998 + }; + InterpolateTo[]= + { + "AmovPercMstpSrasWrflDnon_turnL", + 0.02, + "AmovPercMstpSrasWrflDnon_turnR", + 0.02, + "AmovPercMwlkSrasWrflDf", + 0.02, + "AmovPercMwlkSrasWrflDfl", + 0.02, + "AmovPercMwlkSrasWrflDl", + 0.02, + "AmovPercMwlkSrasWrflDbl", + 0.02, + "AmovPercMwlkSrasWrflDb", + 0.02, + "AmovPercMwlkSrasWrflDbr", + 0.02, + "AmovPercMwlkSrasWrflDr", + 0.02, + "AmovPercMwlkSrasWrflDfr", + 0.02, + "AmovPercMrunSrasWrflDf", + 0.02, + "AmovPercMrunSrasWrflDfl", + 0.02, + "AmovPercMrunSrasWrflDl", + 0.02, + "AmovPercMrunSrasWrflDbl", + 0.02, + "AmovPercMrunSrasWrflDb", + 0.02, + "AmovPercMrunSrasWrflDbr", + 0.02, + "AmovPercMrunSrasWrflDr", + 0.02, + "AmovPercMrunSrasWrflDfr", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPknlMstpSlowWrflDnon", + 0.02, + "AmovPercMevaSrasWrflDf", + 0.02, + "AmovPercMevaSrasWrflDfl", + 0.02, + "AmovPercMevaSrasWrflDfr", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPercMevaSrasWrflDl", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPercMevaSrasWrflDr", + 0.02, + "AmovPercMstpSrasWrflDnon_AmovPercMevaSrasWrflDb", + 0.02, + "AdthPercMstpSrasWrflDnon_1", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_2", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_4", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_8", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_rS0", + 0.0099999998, + "AidlPercMstpSrasWrflDnon0S", + 0.02, + "AidlPercMstpSrasWrflDnon", + 0.0099999998, + "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_1", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_16", + 0.0099999998, + "AdthPercMstpSrasWrflDnon_32", + 0.0099999998, + "adthpercmstpsraswrfldnon_NikitinDead", + 0.0099999998 + }; + }; + class AmovPpneMstpSrasWrflDnon: AmovPercMstpSrasWrflDnon + { + variantsAI[]={}; + actions="RifleProneActions"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Ppne.p3d"; + onLandBeg=1; + onLandEnd=1; + showWeaponAim=1; + disableWeapons=0; + visibleSize=0.100123; + aimPrecision=0.30000001; + aiming="aimingDefault"; + aimingBody="aimingUpDefault"; + leaning="leaningDefault"; + legs="legsDefault"; + leaningFactorBeg=0; + leaningFactorEnd=0; + limitGunMovement=1; + soundOverride="crawl"; + weaponIK=1; + headBobStrength=0.20398; + ConnectTo[]= + { + "AmovPpneMstpSrasWrflDnon_injured", + 0.1, + "AmovPpneMstpSrasWrflDnon_turnL", + 0.02, + "AmovPpneMstpSrasWrflDnon_turnR", + 0.02, + "WeaponMagazineReloadProne", + 0.1, + "AmovPpneMstpSrasWrflDnon_AmovPercMstpSrasWrflDnon", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPknlMstpSrasWrflDnon", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMstpSrasWrflDnon_AwopPpneMstpSoptWbinDnon", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDl", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDr", + 0.02, + "AwopPpneMstpSgthWrflDnon_Start", + 0.1, + "AwopPpneMstpSgthWrflDnon_End", + 0.1, + "AidlPpneMstpSrasWrflDnon0S", + 0.1, + "AidlPpneMstpSrasWrflDnon01", + 0.1, + "AidlPpneMstpSrasWrflDnon02", + 0.1, + "AidlPpneMstpSrasWrflDnon03", + 0.1, + "AmovPpneMstpSrasWrflDnon_healed", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSrasWrflDnon_turnL", + 0.02, + "AmovPpneMstpSrasWrflDnon_turnR", + 0.02, + "AmovPpneMrunSlowWrflDf", + 0.02, + "AmovPpneMrunSlowWrflDfl", + 0.02, + "AmovPpneMrunSlowWrflDl", + 0.02, + "AmovPpneMrunSlowWrflDbl", + 0.02, + "AmovPpneMrunSlowWrflDb", + 0.02, + "AmovPpneMrunSlowWrflDbr", + 0.02, + "AmovPpneMrunSlowWrflDr", + 0.02, + "AmovPpneMrunSlowWrflDfr", + 0.02, + "AmovPpneMsprSlowWrflDf", + 0.02, + "AmovPpneMsprSlowWrflDbl", + 0.02, + "AmovPpneMsprSlowWrflDl", + 0.02, + "AmovPpneMsprSlowWrflDr", + 0.02, + "AmovPpneMsprSlowWrflDbr", + 0.02, + "AmovPpneMsprSlowWrflDb", + 0.02, + "AmovPpneMsprSlowWrflDfl", + 0.02, + "AmovPpneMsprSlowWrflDfr", + 0.02, + "AmovPpneMstpSrasWrflDnon_AmovPercMsprSlowWrflDf", + 0.050000001, + "AdthPpneMstpSrasWrflDnon_1", + 0.0099999998, + "AdthPpneMstpSrasWrflDnon_2", + 0.0099999998, + "AidlPpneMstpSrasWrflDnon0S", + 0.02, + "AidlPpneMstpSrasWrflDnon01", + 0.02, + "AidlPpneMstpSrasWrflDnon02", + 0.02, + "AidlPpneMstpSrasWrflDnon03", + 0.02 + }; + }; + class AmovPpneMrunSlowWrflDf: AmovPpneMstpSrasWrflDnon + { + visibleSize=0.150123; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + soundOverride="crawl"; + duty=0.40000001; + showWeaponAim=0; + disableWeapons=1; + soundEnabled=1; + limitGunMovement=0; + legs="wholeBody"; + aiming="empty"; + aimingBody="empty"; + leaning="empty"; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + leftHandIKBeg=0; + leftHandIKCurve[]={}; + leftHandIKEnd=0; + actions="RifleProneActionsRunF"; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPpneMrunSlowWrflDfl", + 0.025, + "AmovPpneMrunSlowWrflDfr", + 0.025, + "AmovPpneMsprSlowWrflDf", + 0.025, + "AmovPpneMstpSrasWrflDnon_AmovPercMsprSlowWrflDf", + 0.050000001, + "AdthPpneMstpSlowWrflDf_1", + 0.0099999998, + "AdthPpneMstpSlowWrflDf_2", + 0.0099999998 + }; + }; + class AmovPpneMstpSrasWrflDnon_turnL: AmovPpneMstpSrasWrflDnon + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + soundOverride="crawl"; + ConnectTo[]= + { + "AmovPpneMstpSrasWrflDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSrasWrflDnon", + 0.02 + }; + }; + class AmovPpneMstpSrasWrflDnon_turnR: AmovPpneMstpSrasWrflDnon + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + soundOverride="crawl"; + ConnectTo[]= + { + "AmovPpneMstpSrasWrflDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSrasWrflDnon", + 0.02 + }; + }; + class AmovPpneMstpSnonWnonDnon: AmovPercMstpSnonWnonDnon + { + actions="CivilProneActions"; + file="\nst\ns_anims\bloodsucker\forward.rtm"; + legs="Wholebody"; + onLandBeg=1; + onLandEnd=1; + collisionShape="ca\Anims\Characters\data\Geom\Sdr\Ppne.p3d"; + aimingBody="empty"; + disableWeapons=0; + soundOverride="crawl"; + canPullTrigger=0; + ConnectTo[]= + { + "AmovPpneMstpSnonWnonDnon_turnL", + 0.02, + "AmovPpneMstpSnonWnonDnon_turnR", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPercMstpSnonWnonDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPknlMstpSnonWnonDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPercMsprSnonWnonDf", + 0.050000001, + "AmovPpneMstpSnonWnonDnon_AmovPpneMstpSrasWrflDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPpneMstpSrasWpstDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPknlMstpSrasWlnrDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AwopPpneMstpSoptWbinDnon", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPpneMevaSnonWnonDl", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPpneMevaSnonWnonDr", + 0.02, + "AmovPpneMstpSnonWnonDnon_AmovPsitMstpSnonWnonDnon_ground", + 0.1, + "AwopPpneMstpSgthWnonDnon_start", + 0.1, + "AidlPpneMstpSnonWnonDnon0S", + 0.1, + "AidlPpneMstpSnonWnonDnon01", + 0.1, + "AidlPpneMstpSnonWnonDnon02", + 0.1, + "AidlPpneMstpSnonWnonDnon03", + 0.1, + "AmovPpneMstpSnonWnonDnon_healed", + 0.02, + "AmovPpneMstpSnonWnonDnon_injured", + 0.1 + }; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon_turnL", + 0.02, + "AmovPpneMstpSnonWnonDnon_turnR", + 0.02, + "AmovPpneMrunSnonWnonDf", + 0.02, + "AmovPpneMrunSnonWnonDfl", + 0.02, + "AmovPpneMrunSnonWnonDl", + 0.02, + "AmovPpneMrunSnonWnonDbl", + 0.02, + "AmovPpneMrunSnonWnonDb", + 0.02, + "AmovPpneMrunSnonWnonDbr", + 0.02, + "AmovPpneMrunSnonWnonDr", + 0.02, + "AmovPpneMrunSnonWnonDfr", + 0.02, + "AdthPpneMstpSnonWnonDnon", + 0.0099999998 + }; + }; + class AmovPpneMrunSnonWnonDf: AmovPpneMstpSnonWnonDnon + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + soundOverride="crawl"; + leaningFactorBeg=0; + leaningFactorEnd=0; + soundEnabled=1; + legs="wholeBody"; + aimingBody="empty"; + leaning="empty"; + aiming="empty"; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDfl", + 0.025, + "AmovPpneMrunSnonWnonDfr", + 0.025, + "AmovPpneMstpSnonWnonDnon_AmovPercMsprSnonWnonDf", + 0.050000001 + }; + }; + class AmovPpneMstpSnonWnonDnon_turnL: AmovPpneMstpSnonWnonDnon + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + soundOverride="crawl"; + canPullTrigger=0; + ConnectTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02 + }; + }; + class AmovPpneMstpSnonWnonDnon_turnR: AmovPpneMstpSnonWnonDnon + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + soundOverride="crawl"; + canPullTrigger=0; + ConnectTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02 + }; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02 + }; + }; + class AmovPpneMrunSnonWnonDfl: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDf", + 0.025, + "AmovPpneMrunSnonWnonDl", + 0.025, + "AmovPpneMstpSnonWnonDnon_AmovPercMsprSnonWnonDf", + 0.050000001 + }; + }; + class AmovPpneMrunSnonWnonDl: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDfl", + 0.025, + "AmovPpneMrunSnonWnonDbl", + 0.025 + }; + }; + class AmovPpneMrunSnonWnonDbl: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDl", + 0.025, + "AmovPpneMrunSnonWnonDb", + 0.025 + }; + }; + class AmovPpneMrunSnonWnonDb: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDbl", + 0.025, + "AmovPpneMrunSnonWnonDbr", + 0.025 + }; + }; + class AmovPpneMrunSnonWnonDbr: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDb", + 0.025, + "AmovPpneMrunSnonWnonDr", + 0.025 + }; + }; + class AmovPpneMrunSnonWnonDr: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=0.5; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDbr", + 0.025, + "AmovPpneMrunSnonWnonDfr", + 0.025 + }; + }; + class AmovPpneMrunSnonWnonDfr: AmovPpneMrunSnonWnonDf + { + file="\nst\ns_anims\bloodsucker\forward.rtm"; + speed=1.05; + duty=0.40000001; + relSpeedMin=0.69717097; + relSpeedMax=1.096506; + soundOverride="crawl"; + soundEnabled=1; + canPullTrigger=0; + ConnectTo[]={}; + InterpolateTo[]= + { + "AmovPpneMstpSnonWnonDnon", + 0.02, + "AmovPpneMrunSnonWnonDf", + 0.025, + "AmovPpneMrunSnonWnonDr", + 0.025, + "AmovPpneMstpSnonWnonDnon_AmovPercMsprSnonWnonDf", + 0.050000001 + }; + }; + }; }; \ No newline at end of file diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_sellItems.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_sellItems.sqf index e7886717f..12ccb1af7 100644 --- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_sellItems.sqf +++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_sellItems.sqf @@ -135,6 +135,7 @@ if (Z_SellingFrom == 2) then { if (_type == "trade_weapons") then {_name = configFile >> "CfgWeapons" >> _name;}; if (_x select 0 == dayz_onBack) then { dayz_onBack = ""; // Remove from back + player setVariable ["dayz_onBack",dayz_onBack,true]; _localResult = 1; } else { _localResult = [player,_name,1] call BIS_fnc_invRemove; // Use config for BIS_fnc_invRemove diff --git a/SQF/dayz_code/actions/buryActions.sqf b/SQF/dayz_code/actions/buryActions.sqf new file mode 100644 index 000000000..26c465216 --- /dev/null +++ b/SQF/dayz_code/actions/buryActions.sqf @@ -0,0 +1,85 @@ +/* + Bury/Butcher body script by salival (https://github.com/oiad) +*/ +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_action","_backPackMag","_backPackWpn","_crate","_corpse","_cross","_gain","_isBury","_grave","_name","_playerNear","_backPack","_position","_sound","_notOnRoad"]; + +_corpse = (_this select 3) select 0; +if (isNull _corpse) exitWith {dayz_actionInProgress = false; systemChat localize "str_cursorTargetNotFound";}; + +_playerNear = {isPlayer _x} count (([_corpse] call FNC_GetPos) nearEntities ["CAManBase", 10]) > 1; +if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_pickup_limit_5" call dayz_rollingMessages;}; + +_action = (_this select 3) select 1; +_notOnRoad = false; // Restrict burying/butchering on roads? + +player removeAction s_player_bury_human; +s_player_bury_human = -1; +player removeAction s_player_butcher_human; +s_player_butcher_human = -1; + +_position = getPosATL _corpse; +_isBury = _action == "bury"; + +if (_notOnRoad && {isOnRoad _position}) exitWith {dayz_actionInProgress = false; format[localize "STR_CL_BA_ROAD",if (_isBury) then {localize "STR_CL_BA_BURY1"} else {"STR_CL_BA_BUTCHER1"}] call dayz_rollingMessages;}; + +_finished = ["Medic",1] call fn_loopAction; +if (!_finished) exitWith {dayz_actionInProgress = false;localize "str_epoch_player_26" call dayz_rollingMessages;}; + +_corpse setVariable["isBuried",true,true]; + +_backPack = typeOf (unitBackPack _corpse); + +_crate = createVehicle ["DZ_AmmoBoxSmallUS",_position,[],0,"CAN_COLLIDE"]; +_crate setPosATL [(_position select 0)+1,(_position select 1)+1.5,_position select 2]; +_crate setVariable ["permaLoot",true,true]; +_crate setVariable ["bury",true,true]; + +_grave = createVehicle ["Grave",_position,[],0,"CAN_COLLIDE"]; +_grave setPosATL [(_position select 0)+1,_position select 1,_position select 2]; +_grave setVariable ["bury",true,true]; + +if (_isBury) then { + _name = _corpse getVariable["bodyName","unknown"]; + _cross = createVehicle ["GraveCross1",_position,[],0,"CAN_COLLIDE"]; + _cross setPosATL [(_position select 0)+1,(_position select 1)-1.2,_position select 2]; + _cross setVariable ["bury",true,true]; +}; + +{_crate addWeaponCargoGlobal [_x,1]} forEach weapons _corpse; +{_crate addMagazineCargoGlobal [_x,1]} forEach magazines _corpse; + +if (_backPack != "") then { + _backPackWpn = getWeaponCargo unitBackpack _corpse; + _backPackMag = getMagazineCargo unitBackpack _corpse; + + if (count _backPackWpn > 0) then {{_crate addWeaponCargoGlobal [_x,(_backPackWpn select 1) select _forEachIndex]} forEach (_backPackWpn select 0);}; + if (count _backPackMag > 0) then {{_crate addMagazineCargoGlobal [_x,(_backPackMag select 1) select _forEachIndex]} forEach (_backPackMag select 0);}; + + _crate addBackpackCargoGlobal [_backPack,1]; +}; + +_sound = _corpse getVariable ["sched_co_fliesSource",nil]; +if (!isNil "_sound") then { + detach _sound; + deleteVehicle _sound; +}; + +deleteVehicle _corpse; + +if (_isBury) then { + if (_name != "unknown") then { + format[localize "STR_CL_BA_RIP",_name] call dayz_rollingMessages; + } else { + localize "STR_CL_BA_RIP_UNKNOWN" call dayz_rollingMessages; + }; +} else { + ["knives",0.2] call fn_dynamicTool; +}; + +_gain = if (_isBury) then {DZE_Bury_Body_Value} else {DZE_Butcher_Body_Value}; +_gain call player_humanityChange; + +dayz_actionInProgress = false; diff --git a/SQF/dayz_code/actions/garageDoorOpener.sqf b/SQF/dayz_code/actions/garageDoorOpener.sqf new file mode 100644 index 000000000..7eef6173e --- /dev/null +++ b/SQF/dayz_code/actions/garageDoorOpener.sqf @@ -0,0 +1,70 @@ +/* + Garage door opener script by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_door","_typeof","_state"]; + +_door = _this select 3; +_typeof = typeof _door; +_state = 5; + +if (isNull _door) exitWith {dayz_actionInProgress = false; systemChat localize "str_cursorTargetNotFound";}; + +{DZE_myVehicle removeAction _x} count s_player_gdoor_opener;s_player_gdoor_opener = []; +s_player_gdoor_opener_ctrl = 1; + +call { + if (_typeof in ["WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ"]) exitwith { + if (_door animationPhase "DoorR" == 0) then { + systemChat localize "STR_CL_GDO_DOOR_OPEN"; + _door animate ["DoorR",1]; + _door animate ["DoorL",1]; + } else { + systemChat localize "STR_CL_GDO_DOOR_CLOSE"; + _door animate ["DoorR",0]; + _door animate ["DoorL",0]; + _state = 4; + }; + }; + if (_typeof in ["CinderGarageOpenTopLocked_DZ","Land_DZE_WoodOpenTopGarageLocked"]) exitwith { + if (_door animationPhase "doorl" == 0) then { + systemChat localize "STR_CL_GDO_DOOR_OPEN"; + _door animate ["doorR",1]; + _door animate ["doorl",1]; + } else { + systemChat localize "STR_CL_GDO_DOOR_CLOSE"; + _door animate ["doorR",0]; + _door animate ["doorl",0]; + _state = 4; + }; + }; + if (_typeof in ["CinderGateLocked_DZ","Land_DZE_WoodGateLocked"]) exitwith { + if (_door animationPhase "Open_door" == 0) then { + systemChat localize "STR_CL_GDO_DOOR_OPEN"; + _door animate ["Open_door",1]; + _door animate ["Open_doorR",1]; + } else { + systemChat localize "STR_CL_GDO_DOOR_CLOSE"; + _door animate ["Open_door",0]; + _door animate ["Open_doorR",0]; + _state = 4; + }; + }; + if (_door animationPhase "Open_door" == 0) then { + systemChat localize "STR_CL_GDO_DOOR_OPEN"; + _door animate ["Open_door",1]; + } else { + systemChat localize "STR_CL_GDO_DOOR_CLOSE"; + _door animate ["Open_door",0]; + _state = 4; + }; +}; + +PVDZE_handleSafeGear = [player,_door,_state,"DoorOpener"]; +publicVariableServer "PVDZE_handleSafeGear"; + +s_player_gdoor_opener_ctrl = -1; +dayz_actionInProgress = false; \ No newline at end of file diff --git a/SQF/dayz_code/actions/gather_meat.sqf b/SQF/dayz_code/actions/gather_meat.sqf index 1826fb5af..c77bf8ee7 100644 --- a/SQF/dayz_code/actions/gather_meat.sqf +++ b/SQF/dayz_code/actions/gather_meat.sqf @@ -1,27 +1,27 @@ -private ["_item","_type","_hasHarvested","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_qty","_string","_isZombie","_humanity","_finished"]; - if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; dayz_actionInProgress = true; -_item = _this; -_type = typeOf _item; -_isZombie = _type isKindOf "zZombie_base"; -_hasHarvested = _item getVariable["meatHarvested",false]; +local _body = _this; +if (isNull _body) exitWith {dayz_actionInProgress = false; systemChat localize "str_cursorTargetNotFound";}; +if (_body getVariable["meatHarvested",false]) exitWith {dayz_actionInProgress = false;}; // Exit the script if the meat has already been harvested. +if ({isPlayer _x} count ((getPosATL _body) nearEntities ["CAManBase", 12]) > 1) exitWith {dayz_actionInProgress = false;localize "str_pickup_limit_5" call dayz_rollingMessages;}; // Exit the script if another player is near to prevent duping. -_knifeArray = []; +local _type = typeOf _body; +local _isZombie = _type isKindOf "zZombie_base"; +local _isMutant = _type == "z_bloodsucker"; +local _knives = []; +local _string = ""; -_PlayerNear = {isPlayer _x} count ((getPosATL _item) nearEntities ["CAManBase", 12]) > 1; -if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages; dayz_actionInProgress = false;}; - -//Count how many active tools the player has +// Count how many knives the player has { - if (_x IN items player) then { - _knifeArray set [count _knifeArray, _x]; + if (_x in items player) then { + _knives set [count _knives, _x]; }; } count Dayz_Gutting; -if ((count _knifeArray) < 1) exitWith { - if (_isZombie) then { +// Exit the script if the player doesn't have a knife +if ((count _knives) < 1) exitWith { + if (_isZombie || _isMutant) then { format[localize "str_missing_to_do_this",localize "STR_EQUIP_NAME_4"] call dayz_rollingMessages; } else { localize "str_cannotgut" call dayz_rollingMessages; @@ -29,48 +29,48 @@ if ((count _knifeArray) < 1) exitWith { dayz_actionInProgress = false; }; -if ((count _knifeArray > 0) and !_hasHarvested) then { - //Use sharpest knife player has - _activeKnife = _knifeArray select 0; +[player,(getPosATL player),10,"gut"] spawn fnc_alertZombies; - //Get Animal Type - _isListed = isClass (configFile >> "CfgSurvival" >> "Meat" >> _type); - _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); +local _finished = ["Medic",1] call fn_loopAction; +if (!_finished) exitWith {dayz_actionInProgress = false;}; - [player,(getPosATL player),10,"gut"] spawn fnc_alertZombies; +// Added Nutrition-Factor for work +["Working",0,[20,40,15,0]] call dayz_NutritionSystem; - _finished = ["Medic",1] call fn_loopAction; - if (!_finished) exitWith {}; +//Get Animal Type +local _isListed = isClass (configFile >> "CfgSurvival" >> "Meat" >> _type); +local _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); - // Added Nutrition-Factor for work - ["Working",0,[20,40,15,0]] call dayz_NutritionSystem; +_body setVariable ["meatHarvested",true,true]; +local _qty = if (_isListed) then {getNumber (configFile >> "CfgSurvival" >> "Meat" >> _type >> "yield")} else {2}; +if ((_knives select 0) == "ItemKnifeBlunt") then {_qty = round(_qty / 2);}; - _item setVariable ["meatHarvested",true,true]; - - _qty = if (_isListed) then {getNumber (configFile >> "CfgSurvival" >> "Meat" >> _type >> "yield")} else {2}; - if (_activeKnife == "ItemKnifeBlunt") then { _qty = round(_qty / 2); }; - - if (local _item) then { - [_item,_qty] spawn local_gutObject; //leave as spawn (sleeping in loops will work but can freeze the script) - } else { - PVCDZ_obj_GutBody =[_item,_qty]; - publicVariable "PVCDZ_obj_GutBody"; - }; - - ["knives",0.2] call fn_dynamicTool; - - if (_isZombie) then { - // Reduce humanity for gutting zeds - _humanity = player getVariable ["humanity",0]; - _humanity = _humanity - 10; - player setVariable ["humanity",_humanity,true]; - _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass - } else { - _string = format[localize "str_success_gutted_animal",_text,_qty]; - }; - closeDialog 0; - uiSleep 0.02; - _string call dayz_rollingMessages; +if (local _body) then { + [_body,_qty] spawn local_gutObject; //leave as spawn (sleeping in loops will work but can freeze the script) +} else { + PVCDZ_obj_GutBody =[_body,_qty]; + publicVariable "PVCDZ_obj_GutBody"; }; -dayz_actionInProgress = false; +["knives",0.2] call fn_dynamicTool; + +call { + if (_isZombie) exitWith { + // Reduce humanity for gutting zeds + local _humanity = player getVariable ["humanity",0]; + player setVariable ["humanity",(_humanity - 10),true]; + _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass + }; + + if (_isMutant) exitWith { + _string = format[localize "str_success_gutted_mutant",_text]; + }; + + _string = format[localize "str_success_gutted_animal",_text,_qty]; // default is gut animal +}; + +closeDialog 0; +uiSleep 0.02; +_string call dayz_rollingMessages; + +dayz_actionInProgress = false; \ No newline at end of file diff --git a/SQF/dayz_code/actions/locateVehicle.sqf b/SQF/dayz_code/actions/locateVehicle.sqf new file mode 100644 index 000000000..c689aa43d --- /dev/null +++ b/SQF/dayz_code/actions/locateVehicle.sqf @@ -0,0 +1,57 @@ +/* + locateVehicle by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_characterID","_found","_i","_keyID","_keyIDS","_keyList","_keyName","_keyNames","_locateMarkerDelete","_locateMarkerTime","_marker","_name","_position","_vehicle"]; + +_keyList = call epoch_tempKeys; +_keyIDS = _keyList select 0; +_keyNames = _keyList select 1; + +_locateMarkerDelete = true; // Delete markers after a certain amount of time to avoid cluttering the map? +_locateMarkerTime = 60; // Time in seconds before markers are deleted if enabled above. + +_i = 0; +for "_i" from 0 to 60 do {deleteMarkerLocal ("vehicleMarker"+ (str _i));}; + +if (count _keyIDS < 1) exitWith {dayz_actionInProgress = false; systemChat localize "STR_CL_LV_NO_KEYS";}; + +_i = 0; +{ + _keyID = parseNumber (_keyIDS select _forEachIndex); + _keyName = _keyNames select _forEachIndex; + _found = 0; + { + _vehicle = typeOf _x; + _characterID = parseNumber (_x getVariable ["CharacterID","0"]); + if ((_characterID == _keyID) && {_vehicle isKindOf "Air" || {_vehicle isKindOf "LandVehicle"} || {_vehicle isKindOf "Ship"}}) then { + _found = _found +1; + _i = _i +1; + _position = getPos _x; + _name = getText (configFile >> "CfgVehicles" >> _vehicle >> "displayName"); + _marker = createMarkerLocal ["vehicleMarker" + (str _i),[_position select 0,_position select 1]]; + _marker setMarkerShapeLocal "ICON"; + _marker setMarkerTypeLocal "DOT"; + _marker setMarkerColorLocal "ColorOrange"; + _marker setMarkerSizeLocal [1.0, 1.0]; + _marker setMarkerTextLocal format ["%1",_name]; + systemChat format[localize "STR_CL_LV_BELONGS",_keyName,_name,if (!alive _x) then {toLower (format [" (%1)",localize "str_artdlg_destroyed"])} else {""}]; + }; + } forEach vehicles; + if (_found == 0) then {systemChat format[localize "STR_CL_LV_NO_VEHICLES",_keyName]}; +} forEach _keyIDS; + +if (_i > 0) then { + systemChat format[localize "STR_CL_LV_FOUND",_i]; + if (_locateMarkerDelete) then { + _locateMarkerTime spawn { + uiSleep _this; + for "_i" from 0 to 60 do {deleteMarkerLocal ("vehicleMarker"+ (str _i));}; + }; + }; +}; + +dayz_actionInProgress = false; diff --git a/SQF/dayz_code/actions/player_addToolbelt.sqf b/SQF/dayz_code/actions/player_addToolbelt.sqf index f2c494997..56f8bde78 100644 --- a/SQF/dayz_code/actions/player_addToolbelt.sqf +++ b/SQF/dayz_code/actions/player_addToolbelt.sqf @@ -38,6 +38,7 @@ call gear_ui_init; if (_item == dayz_onBack && carryClick) then { dayz_onBack = ""; + player setVariable ["dayz_onBack",dayz_onBack,true]; carryClick = false; ((findDisplay 106) displayCtrl 1209) ctrlSetText ""; _removed = true; diff --git a/SQF/dayz_code/actions/player_addtoBack.sqf b/SQF/dayz_code/actions/player_addtoBack.sqf index 066288672..fd63584f6 100644 --- a/SQF/dayz_code/actions/player_addtoBack.sqf +++ b/SQF/dayz_code/actions/player_addtoBack.sqf @@ -17,13 +17,12 @@ call gear_ui_init; if (_item in ["ItemHatchet","ItemCrowbar","ItemMachete","ItemFishingPole","ItemSledge"]) then { //free primary slot for new melee (remember item to add after) call { - if (_item == "ItemHatchet") exitwith {player removeWeapon "ItemHatchet"; dayz_onBack = "MeleeHatchet";}; - if (_item == "ItemCrowbar") exitwith {player removeWeapon "ItemCrowbar"; dayz_onBack = "MeleeCrowbar";}; - if (_item == "ItemMachete") exitwith {player removeWeapon "ItemMachete"; dayz_onBack = "MeleeMachete";}; - if (_item == "ItemFishingPole") exitwith {player removeWeapon "ItemFishingPole"; dayz_onBack = "MeleeFishingPole";}; - if (_item == "ItemSledge") exitwith {player removeWeapon "ItemSledge"; dayz_onBack = "MeleeSledge";}; + if (_item == "ItemHatchet") exitwith {player removeWeapon "ItemHatchet"; dayz_onBack = "MeleeHatchet";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (_item == "ItemCrowbar") exitwith {player removeWeapon "ItemCrowbar"; dayz_onBack = "MeleeCrowbar";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (_item == "ItemMachete") exitwith {player removeWeapon "ItemMachete"; dayz_onBack = "MeleeMachete";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (_item == "ItemFishingPole") exitwith {player removeWeapon "ItemFishingPole"; dayz_onBack = "MeleeFishingPole";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (_item == "ItemSledge") exitwith {player removeWeapon "ItemSledge"; dayz_onBack = "MeleeSledge";player setVariable ["dayz_onBack",dayz_onBack,true];}; }; disableSerialization; [[(findDisplay 106)],"onLBSelChanged"] spawn fn_handleGear; //update back - }; diff --git a/SQF/dayz_code/actions/player_dropWeapon.sqf b/SQF/dayz_code/actions/player_dropWeapon.sqf index 61f7256ef..cf06b28e8 100644 --- a/SQF/dayz_code/actions/player_dropWeapon.sqf +++ b/SQF/dayz_code/actions/player_dropWeapon.sqf @@ -1,3 +1,6 @@ +if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; }; +dayz_actionInProgress = true; + private ["_item","_config","_onLadder","_consume","_bag","_droppedType"]; disableSerialization; @@ -8,23 +11,22 @@ _droppedType = getText (_config >> "droppeditem"); //Make sure the player still has the tool this script was spawned with if ((dayz_onBack != _item && carryClick) or (!(player hasWeapon _item) && !carryClick)) exitWith { format[localize "str_player_30",getText (_config >> "displayName")] call dayz_rollingMessages; + dayz_actionInProgress = false; }; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; -if (_onLadder) exitWith { localize "str_player_21" call dayz_rollingMessages; }; -if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; }; -dayz_actionInProgress = true; +if (_onLadder) exitWith {dayz_actionInProgress = false; localize "str_player_21" call dayz_rollingMessages; }; call gear_ui_init; _consume = ([] + getArray (_config >> "magazines")) select 0; if (_item == dayz_onBack && carryClick) then { - switch DayZ_onBack do { - case "MeleeHatchet": {_item = "ItemHatchet"; dayz_onBack = "";}; - case "MeleeCrowbar": {_item = "ItemCrowbar"; dayz_onBack = "";}; - case "MeleeMachete": {_item = "ItemMachete"; dayz_onBack = "";}; - case "MeleeSledge": {_item = "ItemSledge"; dayz_onBack = "";}; + call { + if (dayZ_onBack == "MeleeHatchet") exitWith {_item = "ItemHatchet"; dayz_onBack = ""; player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (dayZ_onBack == "MeleeCrowbar") exitWith {_item = "ItemCrowbar"; dayz_onBack = "";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (dayZ_onBack == "MeleeMachete") exitWith {_item = "ItemMachete"; dayz_onBack = "";player setVariable ["dayz_onBack",dayz_onBack,true];}; + if (dayZ_onBack == "MeleeSledge") exitWith {_item = "ItemSledge"; dayz_onBack = "";player setVariable ["dayz_onBack",dayz_onBack,true];}; }; carryClick = false; ((findDisplay 106) displayCtrl 1209) ctrlSetText ""; diff --git a/SQF/dayz_code/actions/player_goFishing.sqf b/SQF/dayz_code/actions/player_goFishing.sqf index b22ed64d4..1eb20ba55 100644 --- a/SQF/dayz_code/actions/player_goFishing.sqf +++ b/SQF/dayz_code/actions/player_goFishing.sqf @@ -110,7 +110,7 @@ while {_isOk} do { } else { call gear_ui_init; //Remove melee magazines (BIS_fnc_invAdd fix) - {player removeMagazines _x} forEach MeleeMagazines; + false call dz_fn_meleeMagazines; _result = [player,_itemOut] call BIS_fnc_invAdd; if (_result) then { //Let the player know what he caught diff --git a/SQF/dayz_code/actions/player_mineStone.sqf b/SQF/dayz_code/actions/player_mineStone.sqf index 8d842bf7b..99037d17a 100644 --- a/SQF/dayz_code/actions/player_mineStone.sqf +++ b/SQF/dayz_code/actions/player_mineStone.sqf @@ -1,12 +1,12 @@ +if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; }; +dayz_actionInProgress = true; + private ["_mineChance","_breaking","_counter","_rocks","_findNearestRock","_objName","_countOut","_isOk","_proceed","_finished","_itemOut","_weapons"]; _item = _this; call gear_ui_init; closeDialog 1; -if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; }; -dayz_actionInProgress = true; - // allowed rocks list move this later _rocks = ["r2_boulder1.p3d","r2_boulder2.p3d","r2_rock1.p3d","r2_rock2.p3d","r2_rocktower.p3d","r2_rockwall.p3d","r2_stone.p3d"]; _findNearestRock = objNull; @@ -37,7 +37,7 @@ if (!isNull _findNearestRock) then { _weapons set [count _weapons,dayz_onBack]; //Make sure player did not drop pickaxe - if (!_finished or !("MeleePickaxe" in _weapons or ("ItemPickaxe" in _weapons))) exitWith { + if (!_finished || !("ItemPickaxe" in _weapons)) exitWith { _isOk = false; _proceed = false; }; @@ -48,18 +48,9 @@ if (!isNull _findNearestRock) then { _breaking = false; if (dayz_toolBreaking && _mineChance) then { _breaking = true; - if ("MeleePickaxe" in weapons player) then { - player removeWeapon "MeleePickaxe"; - } else { - if ("ItemPickaxe" in weapons player) then { - player removeWeapon "ItemPickaxe"; - } else { - if (dayz_onBack == "MeleePickaxe") then { - dayz_onBack = ""; - if (!isNull findDisplay 106) then {findDisplay 106 displayCtrl 1209 ctrlSetText "";}; - }; - }; - }; + if ("ItemPickaxe" in weapons player) then { + player removeWeapon "ItemPickaxe"; + }; if (!("ItemPickaxeBroken" in weapons player)) then { player addWeapon "ItemPickaxeBroken"; }; diff --git a/SQF/dayz_code/actions/player_surrender.sqf b/SQF/dayz_code/actions/player_surrender.sqf index 2ef9fa5e4..d6eae7fd7 100644 --- a/SQF/dayz_code/actions/player_surrender.sqf +++ b/SQF/dayz_code/actions/player_surrender.sqf @@ -32,6 +32,7 @@ if (_canDo && !DZE_Surrender && !(player isKindOf "PZombie_VB")) then { if (dayz_onBack != "") then { [dayz_onBack,2,1] call fn_dropItem; dayz_onBack = ""; // Remove from back + player setVariable ["dayz_onBack",dayz_onBack,true]; if (!isNull findDisplay 106) then {findDisplay 106 displayCtrl 1209 ctrlSetText "";}; }; call player_forceSave; diff --git a/SQF/dayz_code/actions/player_switchWeapon.sqf b/SQF/dayz_code/actions/player_switchWeapon.sqf index 83abe06bf..f79efe88e 100644 --- a/SQF/dayz_code/actions/player_switchWeapon.sqf +++ b/SQF/dayz_code/actions/player_switchWeapon.sqf @@ -151,6 +151,8 @@ dz_fn_switchWeapon_swap = { dayz_onBack = [primaryWeapon player,player removeWeapon primaryWeapon player,player addWeapon dayz_onBack] select 0; }; + player setVariable ["dayz_onBack",dayz_onBack,true]; + if (_this) then { player selectWeapon primaryWeapon player; if (IS_MELEE(primaryWeapon player)) then { diff --git a/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf b/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf new file mode 100644 index 000000000..8b51bf3ae --- /dev/null +++ b/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf @@ -0,0 +1,152 @@ +/* + Remote vehicle script by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_characterID","_checkDistance","_display","_distance","_fuel","_group","_vehicleFound","_keyID","_keyName","_option","_time","_vehicle","_vehicleType","_index","_control","_keyDisplay","_exit"]; + +_keyName = _this select 0; +_option = _this select 1; + +_checkDistance = true; // Check to see if the player is too far away from the remote +_distance = 300; // Maximum distance the player can be away from the vehicle to be able to use the remote. + +disableSerialization; + +_exit = { + dayz_actionInProgress = false; + rv_vehicleList = nil; + rv_selected = nil; +}; + +_display = findDisplay 106; +_display closeDisplay 0; + +_keyList = call epoch_tempKeys; +_keyID = 0; + +_keyID = (_keyList select 0) select ((_keyList select 2) find _keyName); +_foundPos = (_keyList select 0) find _keyID; + +if (_foundPos >= 0) then { + _keyDisplay = (_keyList select 1) select _foundPos; +}; + +if (_foundPos == -1) exitWith {systemChat localize "STR_CL_RV_NO_KEYS"; call _exit;}; + +rv_vehicleList = []; +_vehicleFound = false; +{ + _vehicleType = typeOf _x; + _characterID = _x getVariable ["CharacterID","0"]; + if ((_characterID == _keyID) && {_vehicleType isKindOf "Air" || _vehicleType isKindOf "LandVehicle" || _vehicleType isKindOf "Ship"}) then { + _vehicleFound = true; + rv_vehicleList set [count rv_vehicleList,_x]; + }; +} count vehicles; + +if (count rv_vehicleList > 1) then { + rv_isOk = false; + + createDialog "remoteVehicle"; + + _display = uiNamespace getVariable["rv_dialog", displayNull]; + _display displayCtrl 8801 ctrlSetText(format[localize "STR_CL_RV_TITLE",_keyDisplay]); + + _control = ((findDisplay 8800) displayCtrl 8802); + lbClear _control; + { + _control lbAdd getText(configFile >> "CfgVehicles" >> typeOf _x >> "displayName"); + if (!isNull DZE_myVehicle && {local DZE_myVehicle} && {alive DZE_myVehicle} && {DZE_myVehicle == _x}) then { + _control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]]; + }; + } count rv_vehicleList; + _control lbSetCurSel 0; + + waitUntil {!dialog}; + +} else { + rv_selected = rv_vehicleList select 0; + rv_isOk = true; +}; + +if (!rv_isOk) exitWith {call _exit;}; + +if (!_vehicleFound) exitWith {systemChat localize "STR_CL_RV_NO_VEHICLES"; call _exit;}; + +_vehicleType = typeOf rv_selected; +_displayName = getText(configFile >> "CfgVehicles" >> _vehicleType >> "displayName"); + +if (!alive rv_selected) exitWith {systemChat localize "STR_CL_RV_DESTROYED"; call _exit;}; +if (_checkDistance && {(player distance rv_selected) >= _distance}) exitWith {format[localize "STR_CL_RV_RANGE_FAIL",_displayName] call dayz_rollingMessages; call _exit;}; + +if (_option == 1) then { + _group = units group player; + + systemChat format[localize "STR_CL_RV_EJECT",_displayName]; + { + if !(_x in _group) then { + _x action ["eject",rv_selected]; + systemChat format[localize "STR_CL_RV_EJECT_PLAYER",name _x]; + }; + } forEach (crew rv_selected); +}; + +if (_option == 2) then { + systemChat format[localize "STR_CL_RV_ENGINE",if (isEngineOn rv_selected) then {localize "strwfoff"} else {localize "strwfon"},_displayName]; + if (isEngineOn rv_selected) then { + if (rv_selected isKindOf "Helicopter") then { // This is needed because dayz_engineSwitch won't turn off the engine for a helicopter. + _fuel = fuel rv_selected; + rv_selected setFuel 0; + player action ["engineOff",rv_selected]; + uiSleep 4.5; + rv_selected setFuel _fuel; + } else { + [rv_selected,false] call dayz_engineSwitch; + }; + } else { + [rv_selected,true] call dayz_engineSwitch; + }; +}; + +if (_option == 3) then { + systemChat format[localize "STR_BLD_UNLOCKED",_displayName]; + PVDZE_veh_Lock = [rv_selected,false]; + _time = diag_tickTime; + + if (local rv_selected) then { + PVDZE_veh_Lock call local_lockUnlock; + } else { + publicVariable "PVDZE_veh_Lock"; + waitUntil {uiSleep 0.1;(!locked rv_selected or (diag_tickTime - _time > 4))}; + }; +}; + +if (_option == 4) then { + systemChat format[localize "STR_EPOCH_PLAYER_117",_displayName]; + PVDZE_veh_Lock = [rv_selected,true]; + _time = diag_tickTime; + + if (local rv_selected) then { + PVDZE_veh_Lock call local_lockUnlock; + } else { + publicVariable "PVDZE_veh_Lock"; + waitUntil {uiSleep 0.1;(locked rv_selected or (diag_tickTime - _time > 4))}; + }; +}; + +if (_option == 5) then { + if !(rv_selected getVariable["vehicleLights",false]) then { + player action ["lightOn", rv_selected]; + systemChat format[localize "STR_CL_RV_LIGHTS",localize "strwfon",_vehicleType]; + rv_selected setVariable ["vehicleLights",true,true]; + } else { + player action ["lightOff", rv_selected]; + systemChat format[localize "STR_CL_RV_LIGHTS",localize "strwfoff",_vehicleType]; + rv_selected setVariable ["vehicleLights",false,true]; + }; +}; + +call _exit; \ No newline at end of file diff --git a/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf b/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf new file mode 100644 index 000000000..8fc6a2390 --- /dev/null +++ b/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf @@ -0,0 +1,54 @@ +private ["_backPackCount","_backPackCount_raw","_backPackSlots","_formattedText","_gearCount","_magazineCount","_magazineCount_raw","_magazineSlots","_name","_picture","_price","_text","_typeOf","_weaponSlots","_weaponsCount","_weaponsCount_raw","_control","_index"]; + +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter +}; + +_control = (_this select 0) select 0; +_index = (_this select 0) select 1; + +rv_selected = rv_vehicleList select _index; +_typeOf = typeOf rv_selected; + +_weaponsCount_raw = getWeaponCargo rv_selected; +_magazineCount_raw = getMagazineCargo rv_selected; +_backPackCount_raw = getBackpackCargo rv_selected; + +_weaponSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxWeapons"); +_magazineSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxMagazines"); +_backPackSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportmaxbackpacks"); +_name = getText(configFile >> "CfgVehicles" >> _typeOf >> "displayName"); +_picture = getText(configFile >> 'CfgVehicles' >> _typeOf >> 'picture'); + +_weaponsCount = (_weaponsCount_raw select 1) call _gearCount; +_magazineCount = (_magazineCount_raw select 1) call _gearCount; +_backPackCount = (_backPackCount_raw select 1) call _gearCount; + +_formattedText = format [ + "
" + + "%2: %3
" + + "%4: %5
" + + "%6: %13/%10 %14/%11 %15/%12
", + _picture, + localize "STR_EPOCH_NAME", + _name, + localize "STR_EPOCH_CLASS", + _typeOf, + localize "STR_EPOCH_CARGO_SPACE", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_weapons_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_items_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_backPacks_white.paa", + _weaponSlots, + _magazineSlots, + _backPackSlots, + _weaponsCount, + _magazineCount, + _backPackCount, + _text +]; + +((findDisplay 8800) displayCtrl 8803) ctrlSetStructuredText parseText _formattedText; +ctrlShow [8803,true]; \ No newline at end of file diff --git a/SQF/dayz_code/actions/remove.sqf b/SQF/dayz_code/actions/remove.sqf index bf35db7f3..9894537ba 100644 --- a/SQF/dayz_code/actions/remove.sqf +++ b/SQF/dayz_code/actions/remove.sqf @@ -137,6 +137,7 @@ if (_brokenTool) then { } else { if (dayz_onBack == "MeleeCrowbar") then { dayz_onBack = ""; // Remove + player setVariable ["dayz_onBack",dayz_onBack,true]; _success = true; if (!isNull (findDisplay 106)) then {((findDisplay 106) displayCtrl 1209) ctrlSetText "";}; }; diff --git a/SQF/dayz_code/actions/servicePoints/init.sqf b/SQF/dayz_code/actions/servicePoints/init.sqf new file mode 100644 index 000000000..09aefd287 --- /dev/null +++ b/SQF/dayz_code/actions/servicePoints/init.sqf @@ -0,0 +1,176 @@ +/* + Vehicle Service Point by Axe Cop + Rewritten for single currency, gems, briefcase support and 1.0.7 epoch compatibility by salival - https://github.com/oiad/ + + Requires DayZ Epoch 1.0.7 + + This version adds support for both single currency and gems (from the epoch 1.0.7 update) as well as the original epoch briefcase currency system. + Instead of pricing things like the original way, prices are now done on a "worth" similar to how coins are done. The price value of items are below. + + 1 silver = 1 worth + 1 10oz silver = 10 worth + 1 gold = 100 worth + 1 10oz gold = 1,000 worth + 1 briefcase = 10,000 worth + + Please see dayz_code\configVariables.sqf for the value of gems (DZE_GemWorthArray) and their relevant worth if they are enabled. + + Example config settings for DZE_SP_Refuel_Costs, DZE_SP_Repair_Costs and DZE_SP_Rearm_Costs: + + All 3 sections can either be made free, disabled or a specifc price with the following examples: + + ["Air",localize "strwffree"] will make the vehicle config class of "Air" free for the specific action. + ["Air",localize "str_temp_param_disabled"] will make the vehicle config class of "Air" disabled for the specific action. + ["Air",2000] will make the vehicle config class of "Air" have a worth of 2000 for the specific action. + ["Armored_SUV_PMC",2000] will make the specific vehicle have a worth of 2000 for the specific action. + ["Armored_SUV_PMC",localize "strwffree"] will make the specific vehicle be free for the specific action. + ["Armored_SUV_PMC",localize "str_temp_param_disabled"] will make the specific vehicle be disabled for the specific action. + + Valid vehicle config classes as an example: "Air", "AllVehicles", "All", "APC", "Bicycle", "Car", "Helicopter", "Land", "Motorcycle", "Plane", "Ship", "Tank" +*/ + +private ["_folder","_actionTitleFormat","_actionCostsFormat","_message","_messageShown","_lastVehicle","_lastRole","_fnc_removeActions","_fnc_getCostsWep","_fnc_getCostsWep","_fnc_actionTitle","_fnc_isArmed","_fnc_getWeapons","_cycleTime","_servicePoints","_vehicle","_role","_costs","_actionTitle","_weapons","_weaponName"]; + +// general settings +_folder = "\z\addons\dayz_code\actions\servicePoints\"; // folder where the service point scripts are saved, relative to the mission file +_actionTitleFormat = "%1 (%2)"; // text of the vehicle menu, %1 = action name (Refuel, Repair, Rearm), %2 = costs (see format below) +_actionCostsFormat = "%2 %1"; // %1 = item name, %2 = item count +_message = localize "STR_CL_SP_MESSAGE"; // This is translated from your stringtable.xml in your mission folder root. Set to "" to disable +_cycleTime = 5; // Time in sections for how often the action menu will be refreshed and how often it will search for a nearby fuel station (setting this too low can make a lot of lag) + +_lastVehicle = objNull; +_lastRole = []; +_messageShown = false; + +SP_refuel_action = -1; +SP_repair_action = -1; +SP_rearm_actions = []; + +_fnc_removeActions = { + if (isNull _lastVehicle) exitWith {}; + _lastVehicle removeAction SP_refuel_action; + SP_refuel_action = -1; + _lastVehicle removeAction SP_repair_action; + SP_repair_action = -1; + { + _lastVehicle removeAction _x; + } forEach SP_rearm_actions; + SP_rearm_actions = []; + _lastVehicle = objNull; + _lastRole = []; +}; + +_fnc_getCosts = { + private ["_getVehicle","_getCosts","_cost","_getTypeName"]; + _getVehicle = _this select 0; + _getCosts = _this select 1; + _cost = []; + { + _getTypeName = _x select 0; + if (_getVehicle isKindOf _getTypeName) exitWith { + _cost = _x select 1; + }; + } forEach _getCosts; + _cost +}; + +_fnc_getCostsWep = { + private ["_weapon","_getCostsWep","_returnCostWep","_typeName"]; + _weapon = _this select 0; + _getCostsWep = _this select 1; + _returnCostWep = DZE_SP_Rearm_Defaultcost; + { + _typeName = _x select 0; + if (_weapon == _typeName) exitWith { + _returnCostWep = _x select 1; + }; + } forEach _getCostsWep; + _returnCostWep +}; + +_fnc_actionTitle = { + private ["_actionName","_actionCosts","_costsText","_return"]; + _actionName = _this select 0; + _actionCosts = _this select 1; + if (typeName _actionCosts == "STRING") then { + _costsText = _actionCosts; + } else { + _costsText = if (Z_SingleCurrency) then {format ["%1 %2",[_actionCosts] call BIS_fnc_numberText,CurrencyName]} else {format ["%1",[_actionCosts,true] call z_calcCurrency]}; + }; + _return = format [_actionTitleFormat,_actionName,_costsText]; + _return +}; + +_fnc_getWeapons = { + private ["_gWeaponsVehicle","_gWeaponsRole","_gWeapons","_gWeaponName","_gTurret","_gWeaponsTurret"]; + _gWeaponsVehicle = _this select 0; + _gWeaponsRole = _this select 1; + _gWeapons = []; + if (count _gWeaponsRole > 1) then { + _gTurret = _gWeaponsRole select 1; + _gWeaponsTurret = _gWeaponsVehicle weaponsTurret _gTurret; + { + _gWeaponName = getText (configFile >> "CfgWeapons" >> _x >> "displayName"); + if !(_gWeaponName in DZE_SP_Rearm_Ignore) then { + _gWeapons set [count _gWeapons, [_x,_gWeaponName,_gTurret]]; + }; + } forEach _gWeaponsTurret; + }; + _gWeapons +}; + +while {1==1} do { + _vehicle = vehicle player; + if (_vehicle != player) then { + _servicePoints = (nearestObjects [getPosATL _vehicle,DZE_SP_Classes,DZE_SP_MaxDistance]) - [_vehicle]; + if (count _servicePoints > 0) then { + if (assignedDriver _vehicle == player) then { + _role = ["Driver", [-1]]; + } else { + _role = assignedVehicleRole player; + }; + if (((str _role) != (str _lastRole)) || {_vehicle != _lastVehicle}) then { + call _fnc_removeActions; + }; + _lastVehicle = _vehicle; + _lastRole = _role; + if (DZE_SP_Refuel_Enable) then { + if (SP_refuel_action < 0) then { + _costs = [_vehicle,DZE_SP_Refuel_Costs] call _fnc_getCosts; + _actionTitle = [localize "config_depot.sqf8",_costs] call _fnc_actionTitle; + SP_refuel_action = _vehicle addAction [_actionTitle,_folder + "servicePointActions.sqf",["refuel",_costs,DZE_SP_Refuel_UpdateInterval,DZE_SP_Refuel_Amount],-1,false,true]; + }; + }; + if (DZE_SP_Repair_Enable) then { + if (SP_repair_action < 0) then { + _costs = [_vehicle,DZE_SP_Repair_Costs] call _fnc_getCosts; + _actionTitle = [localize "config_depot.sqf1",_costs] call _fnc_actionTitle; + SP_repair_action = _vehicle addAction [_actionTitle,_folder + "servicePointActions.sqf",["repair",_costs,DZE_SP_Repair_RepairTime],-1,false,true]; + }; + }; + if (DZE_SP_Rearm_Enable) then { + if ((count _role > 1) && {count SP_rearm_actions == 0}) then { + _weapons = [_vehicle,_role] call _fnc_getWeapons; + { + _weaponName = _x select 1; + _costs = [_weaponName,DZE_SP_Rearm_Costs] call _fnc_getCostsWep; + _actionTitle = [format["%1 %2",localize "config_depot.sqf5",_weaponName],_costs] call _fnc_actionTitle; + SP_rearm_action = _vehicle addAction [_actionTitle,_folder + "servicePointActions.sqf",["rearm",_costs,DZE_SP_Rearm_MagazineCount,_x],-1,false,true]; + SP_rearm_actions set [count SP_rearm_actions, SP_rearm_action]; + } forEach _weapons; + }; + }; + if (!_messageShown && {_message != ""}) then { + _messageShown = true; + _vehicle vehicleChat _message; + }; + } else { + call _fnc_removeActions; + _messageShown = false; + }; + } else { + call _fnc_removeActions; + _messageShown = false; + }; + uiSleep _cycleTime; +}; diff --git a/SQF/dayz_code/actions/servicePoints/servicePointActions.sqf b/SQF/dayz_code/actions/servicePoints/servicePointActions.sqf new file mode 100644 index 000000000..40dcec70a --- /dev/null +++ b/SQF/dayz_code/actions/servicePoints/servicePointActions.sqf @@ -0,0 +1,143 @@ +// Vehicle Service Point (Rearm) by Axe Cop +// Rewritten for single currency, gems, briefcase support and 1.0.7 epoch compatibility by salival - https://github.com/oiad/ +// Requires DayZ Epoch 1.0.7 for gem support. + +private ["_vehicle","_costs","_fuel","_magazineCount","_weapon","_type","_name","_weaponType","_weaponName","_turret","_magazines","_ammo","_textMissing","_pos","_message","_action","_damage","_selection","_strH","_disabled","_amount","_enoughMoney","_moneyInfo","_wealth","_success","_reason","_cmpt"]; + +_vehicle = _this select 0; + +_ammo = ""; +_reason = ""; + +_action = (_this select 3) select 0; + +_type = typeOf _vehicle; +_disabled = false; +_name = getText(configFile >> "cfgVehicles" >> _type >> "displayName"); + +_amount = (_this select 3) select 1; + +if (_action == "rearm") then { + _magazineCount = (_this select 3) select 2; + _weapon = (_this select 3) select 3; + + _weaponType = _weapon select 0; + _weaponName = _weapon select 1; + _turret = _weapon select 2; +}; + +if (typeName _amount == "STRING") then { + if (_amount == (localize "str_temp_param_disabled")) then { + if (_action == "rearm") then {_reason = format[localize "STR_CL_SP_UNABLE_REARM",_weaponName]; _disabled = true}; + if (_action == "repair") then {_reason = format[localize "STR_CL_SP_UNABLE_REPAIR",_name]; _disabled = true}; + if (_action == "refuel") then {_reason = format[localize "STR_CL_SP_UNABLE_REFUEL",_name]; _disabled = true}; + }; + if (_amount == (localize "strwffree")) then {_amount = 0}; +}; + +if (_disabled) exitWith {[_reason,1] call dayz_rollingMessages}; + +_enoughMoney = false; +_moneyInfo = [false, [], [], [], 0]; +_wealth = player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0]; + +if (Z_SingleCurrency) then { + _enoughMoney = (_wealth >= _amount); +} else { + Z_Selling = false; + if (Z_AllowTakingMoneyFromVehicle) then {false call Z_checkCloseVehicle}; + _moneyInfo = _amount call Z_canAfford; + _enoughMoney = _moneyInfo select 0; +}; + +_success = if (Z_SingleCurrency) then {true} else {[player,_amount,_moneyInfo,true,0] call Z_payDefault}; + +if (!_success && _enoughMoney) exitWith {systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL"}; // Not enough room in gear or bag to accept change + +if (_enoughMoney) then { + _success = if (Z_SingleCurrency) then {_amount <= _wealth} else {[player,_amount,_moneyInfo,false,0] call Z_payDefault}; + if (_success) then { + if (Z_SingleCurrency) then { + player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),(_wealth - _amount),true]; + }; + + [player,(getPosATL player),50,"refuel"] spawn fnc_alertZombies; + _vehicle engineOn false; + if (_action == "refuel") then { + [format[localize "STR_CL_SP_REFUELING",_name],1] call dayz_rollingMessages; + + while {vehicle player == _vehicle} do { + if ([0,0,0] distance (velocity _vehicle) > 1) exitWith {[format[localize "STR_CL_SP_REFUELING_STOPPED",_name],1] call dayz_rollingMessages}; + _fuel = (fuel _vehicle) + ((_this select 3) select 3); + if (_fuel > 0.99) exitWith { + _vehicle setFuel 1; + [format[localize "STR_CL_SP_REFUEL_OK",_name],1] call dayz_rollingMessages; + }; + _vehicle setFuel _fuel; + uiSleep ((_this select 3) select 2); + }; + }; + if (_action == "repair") then { + [player,(getPosATL player),50,"repair"] spawn fnc_alertZombies; + + _hitpoints = _vehicle call vehicle_getHitpoints; + _allRepaired = true; + { + if ((vehicle player != _vehicle) || {[0,0,0] distance (velocity _vehicle) > 1}) exitWith { + _allRepaired = false; + [format[localize "STR_CL_SP_REPAIRING_STOPPED",_name],1] call dayz_rollingMessages; + }; + _hits = [_vehicle,_x] call object_getHit; + _damage = _hits select 0; + if (_damage > 0) then { + _cmpt = []; + { + if (_forEachIndex > 2) then {_cmpt set [count _cmpt,_x]}; + } forEach toArray (_x); + _cmpt = toString _cmpt; + [format[localize "STR_CL_SP_REPAIRING",_cmpt],1] call dayz_rollingMessages; + _selection = getText(configFile >> "cfgVehicles" >> _type >> "HitPoints" >> _x >> "name"); + _strH = "hit_" + (_selection); + _vehicle setHit[_selection,0]; + _vehicle setVariable [_strH,0,true]; + uiSleep ((_this select 3) select 2); + }; + } forEach _hitpoints; + PVDZ_veh_Save = [_vehicle,"repair",true]; + publicVariableServer "PVDZ_veh_Save"; + + if (_allRepaired) then { + _vehicle setDamage 0; + _vehicle setVelocity [0,0,1]; + [format[localize "STR_CL_SP_REPAIR_OK",_name],1] call dayz_rollingMessages; + }; + }; + + if (_action == "rearm") then { + _magazines = getArray (configFile >> "CfgWeapons" >> _weaponType >> "magazines"); + _ammo = _magazines select 0; + + if (_weaponType == "CMFlareLauncher") then { + _vehicle removeWeaponTurret ["CMFlareLauncher",_turret]; + for "_i" from 1 to _magazineCount do {_vehicle addMagazineTurret [_ammo,_turret];}; + _vehicle addWeaponTurret ["CMFlareLauncher",_turret]; + } else { + {_vehicle removeMagazinesTurret [_x,_turret];} forEach _magazines; + + for "_i" from 1 to _magazineCount do {_vehicle addMagazineTurret [_ammo,_turret];}; + }; + + [format[localize "STR_CL_SP_REARMED",_weaponName,_name],1] call dayz_rollingMessages; + }; + call player_forceSave; + } else { + systemChat localize "STR_EPOCH_TRADE_DEBUG"; + }; +} else { + _itemText = if (Z_SingleCurrency) then {CurrencyName} else {[_amount,true] call z_calcCurrency}; + if (Z_SingleCurrency) then { + systemChat format[localize "STR_CL_SP_FAIL_COINS",[_amount] call BIS_fnc_numberText,_itemText,_action,_name]; + } else { + systemChat format[localize "STR_CL_SP_FAIL_BRIEFCASES",_itemText,_action,_name]; + }; +}; diff --git a/SQF/dayz_code/actions/takeClothes.sqf b/SQF/dayz_code/actions/takeClothes.sqf new file mode 100644 index 000000000..ac1ef48ab --- /dev/null +++ b/SQF/dayz_code/actions/takeClothes.sqf @@ -0,0 +1,45 @@ +/* + Originally by Zabn + Modified for DayZ Epoch 1.0.7+ by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_body","_clothesTaken","_finished","_itemNew","_itemNewName","_okSkin","_playerNear","_result","_skin"]; + +_body = _this select 3; + +player removeAction s_player_clothes; +s_player_clothes = -1; + +if (isNull _body) exitWith {dayz_actionInProgress = false; systemChat localize "str_cursorTargetNotFound";}; + +_playerNear = {isPlayer _x} count (([_body] call FNC_GetPos) nearEntities ["CAManBase", 10]) > 1; +if (_playerNear) exitWith {dayz_actionInProgress = false; localize "str_pickup_limit_5" call dayz_rollingMessages;}; + +_clothesTaken = _body getVariable["clothesTaken",false]; +if (_clothesTaken) exitWith {dayz_actionInProgress = false; localize "STR_CL_TC_ALREADY_TAKEN" call dayz_rollingMessages;}; + +_skin = typeOf _body; +_itemNew = _skin; +_itemNew = "Skin_" + _itemNew; +_okSkin = isClass (configFile >> "CfgMagazines" >> _itemNew); + +if (!_okSkin || _skin in DZE_Disable_Take_Clothes) exitWith {dayz_actionInProgress = false; format[localize "STR_CL_TC_NOT_SUPPORTED",_skin] call dayz_rollingMessages;}; + +_finished = ["Medic",1] call fn_loopAction; +if (_finished) then { + _itemNewName = getText (configFile >> "CfgMagazines" >> _itemNew >> "displayName"); + _result = [player,_itemNew] call BIS_fnc_invAdd; + if (_result) then { + _body setVariable["clothesTaken",true,true]; + format[localize "STR_CL_TC_ADD_OK",_itemNewName] call dayz_rollingMessages; + } else { + format[localize "STR_CL_TC_ADD_FAIL",_itemNewName] call dayz_rollingMessages; + }; +} else { + localize "str_epoch_player_26" call dayz_rollingMessages; +}; + +dayz_actionInProgress = false; \ No newline at end of file diff --git a/SQF/dayz_code/actions/virtualGarage/player_MaintainVG.sqf b/SQF/dayz_code/actions/virtualGarage/player_MaintainVG.sqf new file mode 100644 index 000000000..209fec3f9 --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/player_MaintainVG.sqf @@ -0,0 +1,42 @@ +// Written by icomrade (https://github.com/icomrade) + +private ["_hasAccess","_heliPad","_objectID","_objectUID","_plotCheck"]; + +closeDialog 0; + +_itemText = if (Z_SingleCurrency) then {CurrencyName} else {[vg_maintainCost,true] call z_calcCurrency}; +_enoughMoney = false; +_moneyInfo = [false, [], [], [], 0]; + +if (Z_SingleCurrency) then { + _wealth = player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0]; + _enoughMoney = (_wealth >= vg_maintainCost); +} else { + Z_Selling = false; + _moneyInfo = vg_maintainCost call Z_canAfford; + _enoughMoney = _moneyInfo select 0; +}; + +_success = true; +if (vg_maintainCost > 0) then { + _success = if (Z_SingleCurrency) then {_enoughMoney} else {[player,vg_maintainCost,_moneyInfo,false,0] call Z_payDefault}; +}; + +if (!_success && _enoughMoney) exitWith {systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL";}; + +if (_enoughMoney || vg_maintainCost < 1) then { + if (Z_SingleCurrency) then { + player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),(_wealth - vg_maintainCost),true]; + }; + localize "STR_CL_VG_MAINTAINSUCCESS" call dayz_rollingMessages; + PVDZE_maintainGarage = if (vg_tiedToPole) then { + _plotCheck = [player,false] call FNC_find_plots; + _ownerPUID = if (_plotCheck select 1 > 0) then {(_plotCheck select 2) getVariable ["ownerPUID","0"]} else {dayz_playerUID}; + [player,_ownerPUID] + } else { + [player] + }; + publicVariableServer "PVDZE_maintainGarage"; +} else { + localize "STR_CL_VG_MAINTAINFAIL" call dayz_rollingMessages; +}; diff --git a/SQF/dayz_code/actions/virtualGarage/player_getVehicle.sqf b/SQF/dayz_code/actions/virtualGarage/player_getVehicle.sqf new file mode 100644 index 000000000..409bfcf1f --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/player_getVehicle.sqf @@ -0,0 +1,69 @@ +// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/) +// Rewritten by salival (https://github.com/oiad) + +private ["_backPack","_charID","_dir","_heliPad","_inventory","_isNearPlot","_keyID","_keyName","_location","_plotCheck","_sign","_vehicle"]; + +closeDialog 0; +_vehicle = (call compile format["%1",lbData[2802,(lbCurSel 2802)]]); + +if (vg_removeKey && {_vehicle select 3 != 0} && {({getNumber (configFile >> "CfgWeapons" >> _x >> "type") == 131072} count (weapons player)) == 12}) exitWith {localize "str_epoch_player_107" call dayz_rollingMessages;}; + +_dir = round(random 360); +_backPack = []; + +_plotCheck = [player,false] call FNC_find_plots; +_isNearPlot = (_plotCheck select 1) > 0; + +_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {player},vg_heliPads,if (_isNearPlot) then {DZE_maintainRange} else {Z_VehicleDistance}]; +if ((count _heliPad == 0) && ((_vehicle select 1) isKindOf "Air")) exitWith {localize "STR_CL_VG_NEED_HELIPAD" call dayz_rollingMessages;}; +if (count _heliPad > 0) then { + _location = [(_heliPad select 0)] call FNC_GetPos; +} else { + _location = [(position player),0,400,10,0,2000,0] call BIS_fnc_findSafePos; + _location set [2,0]; +}; + +_sign = "Sign_arrow_down_large_EP1" createVehicleLocal [0,0,0]; +_sign setPos _location; + +if (surfaceIsWater _location && {count (_location nearEntities ["Ship",8]) > 0}) then { + deleteVehicle _sign; + localize "STR_EPOCH_TRADE_OBSTRUCTED" call dayz_rollingMessages; +} else { + [_vehicle select 1,_sign] call fn_waitForObject; +}; + +PVDZE_spawnVehicle = [[_dir,_location],player,_vehicle select 0]; +publicVariableServer "PVDZE_spawnVehicle"; + +waitUntil {!isNil "PVDZE_spawnVehicleResult"}; + +if (PVDZE_spawnVehicleResult != "0") then { + _keyID = ""; + _charID = parseNumber PVDZE_spawnVehicleResult; + if ((_charID > 0) && (_charID <= 2500)) then {_keyID = format["ItemKeyGreen%1",_charID];}; + if ((_charID > 2500) && (_charID <= 5000)) then {_keyID = format["ItemKeyRed%1",_charID-2500];}; + if ((_charID > 5000) && (_charID <= 7500)) then {_keyID = format["ItemKeyBlue%1",_charID-5000];}; + if ((_charID > 7500) && (_charID <= 10000)) then {_keyID = format["ItemKeyYellow%1",_charID-7500];}; + if ((_charID > 10000) && (_charID <= 12500)) then {_keyID = format["ItemKeyBlack%1",_charID-10000];}; + _keyName = getText(configFile >> "CfgWeapons" >> _keyID >> "displayName"); + + if (vg_removeKey) then { + _inventory = weapons player; + dayz_myBackpack = unitBackpack player; + if (!isNull dayz_myBackpack) then {_backPack = (getWeaponCargo dayz_myBackpack) select 0;}; + if (_keyID in (_inventory+_backPack)) then { + if (_keyID in _inventory) then {format[localize "STR_CL_VG_IN_INVENTORY",_keyName] call dayz_rollingMessages;}; + if (_keyID in _backPack) then {format[localize "STR_CL_VG_IN_BACKPACK",_keyName] call dayz_rollingMessages;}; + } else { + player addWeapon _keyID; + format[localize "STR_CL_VG_ADDED_INVENTORY",_keyName] call dayz_rollingMessages; + }; + }; +}; + +PVDZE_spawnVehicle = nil; +PVDZE_spawnVehicleResult = nil; +vg_vehicleList = nil; + +localize "STR_CL_VG_VEHICLE_SPAWNED" call dayz_rollingMessages; diff --git a/SQF/dayz_code/actions/virtualGarage/player_removePad.sqf b/SQF/dayz_code/actions/virtualGarage/player_removePad.sqf new file mode 100644 index 000000000..fd0e54247 --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/player_removePad.sqf @@ -0,0 +1,24 @@ +// Written by salival (https://github.com/oiad) + +private ["_hasAccess","_objectID","_objectUID","_plotCheck"]; + +closeDialog 0; + +_plotCheck = [player, false] call FNC_find_plots; +_hasAccess = [player,_plotCheck select 2] call FNC_check_access; + +if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3) or (_hasAccess select 4)) then { + + { + _objectID = _x getVariable ["ObjectID","0"]; + _objectUID = _x getVariable ["ObjectUID","0"]; + + PVDZ_obj_Destroy = [_objectID,_objectUID,player,_x,dayz_authKey]; + publicVariableServer "PVDZ_obj_Destroy"; + + deleteVehicle _x; + systemChat format[localize "STR_CL_VG_HELIPAD_REMOVED",typeOf _x]; + } count (nearestObjects [_plotCheck select 2,vg_heliPads,Z_VehicleDistance]); +} else { + systemChat localize "STR_EPOCH_PLAYER_134"; +}; diff --git a/SQF/dayz_code/actions/virtualGarage/player_storeVehicle.sqf b/SQF/dayz_code/actions/virtualGarage/player_storeVehicle.sqf new file mode 100644 index 000000000..a5a5c65eb --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/player_storeVehicle.sqf @@ -0,0 +1,209 @@ +// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/) +// Rewritten by salival (https://github.com/oiad) + +private ["_amount","_backPackCount","_backPackGear","_cargoAmount","_charID","_control","_counter","_display","_enoughMoney","_gearCount","_hasKey","_isLimitArray","_itemText","_items","_keyName","_limit","_magazineCount","_matchedCount","_moneyInfo","_name","_overLimit","_storedVehicles","_success","_typeName","_typeOf","_vehicle","_vehicleID","_vehicleUID","_wealth","_weaponsCount","_woGear","_playerNear","_ownerPUID","_plotCheck"]; + +disableSerialization; + +_display = findDisplay 2800; +_control = ((findDisplay 2800) displayCtrl 2802); + +_vehicle = vg_vehicleList select (lbCurSel _control); +_typeOf = typeOf _vehicle; +_isLimitArray = typeName vg_limit == "ARRAY"; + +_overLimit = false; +_matchedCount = 0; +_storedVehicles = []; + +{if (_typeOf isKindOf _x) exitWith {_overLimit = true;}} count vg_blackListed; +if (_overLimit) exitWith {localize "STR_CL_VG_BLACKLISTED" call dayz_rollingMessages;}; + +{ + if (typeName _x == "ARRAY") then { + _storedVehicles set [count _storedVehicles,_x select 1]; + }; +} count vg_vehicleList; + +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter +}; + +if (_isLimitArray) then { + { + _typeName = _x select 0; + _limit = _x select 1; + if (typeName _x == "ARRAY") then { + if (_typeOf isKindOf _typeName) then { + { + if (_x isKindOf _typeName) then {_matchedCount = _matchedCount +1}; + if (_matchedCount >= _limit) then {_overLimit = true;}; + } count _storedVehicles; + }; + }; + if (_overLimit) exitWith {}; + } count vg_limit; +} else { + if (count _storedVehicles >= vg_limit) then {_overLimit = true;}; +}; + +if (_overLimit) exitWith { + if (_isLimitArray) then { + systemChat localize "STR_CL_VG_LIMIT_ARRAY"; + } else { + systemChat localize "STR_CL_VG_LIMIT_NUMBER"; + }; +}; + +vg_vehicleList = nil; + +_woGear = _this select 0; +closeDialog 0; +if (!vg_storeWithGear && !_woGear) exitWith {localize "STR_CL_VG_NOSTOREWITHGEAR" call dayz_rollingMessages;}; + +_charID = _vehicle getVariable ["CharacterID","0"]; +_vehicleID = _vehicle getVariable ["ObjectID","0"]; +_vehicleUID = _vehicle getVariable ["ObjectUID","0"]; +_weaponsCount = ((getWeaponCargo _vehicle) select 1) call _gearCount; +_magazineCount = ((getMagazineCargo _vehicle) select 1) call _gearCount; +_backPackCount = ((getBackpackCargo _vehicle) select 1) call _gearCount; +_cargoAmount = (_weaponsCount + _magazineCount + _backPackCount); + +if (_vehicleID == "1" || _vehicleUID == "1") exitWith {localize "STR_CL_VG_STORE_MISSION" call dayz_rollingMessages;}; +if (isNull DZE_myVehicle || !local DZE_myVehicle) exitWith {localize "STR_EPOCH_PLAYER_245" call dayz_rollingMessages;}; + +_hasKey = false; + +_items = items player; +dayz_myBackpack = unitBackpack player; + +if (!isNull dayz_myBackpack) then { + _backPackGear = (getWeaponCargo dayz_myBackpack) select 0; + _items = _items + _backPackGear; +}; + +if (_charID != "0") then { + { + if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in DZE_itemKeys) then { + if (str(getNumber(configFile >> "CfgWeapons" >> _x >> "keyid")) == _charID) then { + _keyName = _x; + _hasKey = true; + }; + }; + } count _items; +} else { + if (vg_store_keyless_vehicles) then { + _hasKey = true; + }; +}; + +if (vg_requireKey && {!_hasKey}) exitWith {localize "STR_CL_VG_REQUIRE_KEY" call dayz_rollingMessages;}; + +_name = getText(configFile >> "cfgVehicles" >> _typeOf >> "displayName"); + +{ + if (_typeOf isKindOf (_x select 0)) exitWith {_amount = _x select 1}; +} forEach vg_price; + +if (_cargoAmount > 0) then {_amount = _amount + (_cargoAmount * vg_pricePer);}; + +if (!isNil "sk_dualCurrency") then {_amount = if (z_singleCurrency) then {_amount * 10} else {_amount};}; + +/* +_playerNear = {isPlayer _x && (_x != player)} count (([_vehicle] call FNC_GetPos) nearEntities ["CAManBase", 15]) > 0; +if (_playerNear) exitWith {localize "STR_CL_VG_PLAYERNEARVEHICLE" call dayz_rollingMessages;}; +*/ + +if (count (crew _vehicle) > 0) exitWith {localize "STR_CL_VG_PLAYERINVEHICLE" call dayz_rollingMessages;}; + +_enoughMoney = false; +_moneyInfo = [false,[],[],[],0]; + +if (Z_SingleCurrency) then { + _wealth = player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0]; + _enoughMoney = (_wealth >= _amount); +} else { + Z_Selling = false; + if (Z_AllowTakingMoneyFromVehicle) then {false call Z_checkCloseVehicle}; + _moneyInfo = _amount call Z_canAfford; + _enoughMoney = _moneyInfo select 0; +}; + +_success = if (Z_SingleCurrency) then {true} else {[player,_amount,_moneyInfo,true,0] call Z_payDefault}; + +if (!_success && {_enoughMoney}) exitWith {systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL"}; + +if (_enoughMoney) then { + _success = if (Z_SingleCurrency) then {_amount <= _wealth} else {[player,_amount,_moneyInfo,false,0] call Z_payDefault}; + if (_success) then { + if (Z_SingleCurrency) then {player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),(_wealth - _amount),true];}; + + [_vehicle,true] call local_lockUnlock; + DZE_myVehicle = objNull; + + PVDZE_storeVehicle = if (vg_tiedToPole) then { + _plotCheck = [player,false] call FNC_find_plots; + _ownerPUID = if (_plotCheck select 1 > 0) then {(_plotCheck select 2) getVariable ["ownerPUID","0"]} else {dayz_playerUID}; + [_vehicle,player,_woGear,_ownerPUID] + } else { + [_vehicle,player,_woGear] + }; + + publicVariableServer "PVDZE_storeVehicle"; + waitUntil {!isNil "PVDZE_storeVehicleResult"}; + + PVDZE_storeVehicle = nil; + PVDZE_storeVehicleResult = nil; + + format[localize "STR_CL_VG_VEHICLE_STORED",_name] call dayz_rollingMessages; + if (vg_removeKey && {_charID != "0"}) then { + if (_keyName in (items player)) then { + [player,_keyName,1] call BIS_fnc_invRemove; + } else { + private ["_weparray", "_qtyarray", "_arraycnt","_newwepqty","_newwep","_newarray","_cntarray","_weapon","_weaponqty"]; + + _weparray = []; + _qtyarray = []; + _arraycnt = -1; + _backPackGear = getWeaponCargo dayz_myBackpack; + + { + _arraycnt = _arraycnt + 1; + if (_x == _keyName) then { + } else { + _newwep = (_backPackGear select 0) select _arraycnt; + _newwepqty = (_backPackGear select 1) select _arraycnt; + + _weparray set [count _weparray, _newwep]; + _qtyarray set [count _qtyarray,_newwepqty]; + }; + } forEach (_backPackGear select 0); + + _newarray = []; + _newarray = [_weparray] + [_qtyarray]; + + clearWeaponCargoGlobal dayz_myBackpack; + + _cntarray = count _weparray; + + for "_i" from 0 to (_cntarray-1) do { + _weapon = (_newarray select 0) select _i; + _weaponqty = (_newarray select 1) select _i; + dayz_myBackpack addWeaponCargoGlobal [_weapon,_weaponqty]; + }; + }; + }; + } else { + systemChat localize "STR_EPOCH_TRADE_DEBUG"; + }; +} else { + _itemText = if (Z_SingleCurrency) then {CurrencyName} else {[_amount,true] call z_calcCurrency}; + if (Z_SingleCurrency) then { + systemChat format[localize "STR_CL_VG_NEED_COINS",[_amount] call BIS_fnc_numberText,_itemText,_name]; + } else { + systemChat format[localize "STR_CL_VG_NEED_BRIEFCASES",_itemText,_name]; + }; +}; diff --git a/SQF/dayz_code/actions/virtualGarage/vehicleInfo.sqf b/SQF/dayz_code/actions/virtualGarage/vehicleInfo.sqf new file mode 100644 index 000000000..9b752779e --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/vehicleInfo.sqf @@ -0,0 +1,110 @@ +// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/) +// Rewritten by salival (https://github.com/oiad) + +private ["_backPackCount","_backPackSlots","_cargoAmount","_control","_counter","_DateStored","_formattedText","_index","_inventory","_localVehicle","_magazineCount","_magazineSlots","_name","_picture","_price","_typeOf","_vehicle","_weaponSlots","_weaponsCount","_MaintainDays","_DateMaintained"]; + +disableSerialization; + +_control = (_this select 0) select 0; +_index = (_this select 0) select 1; +_localVehicle = typeName (vg_vehicleList select _index) == "OBJECT"; +_DateMaintained = ""; +_MaintainDays = -1; +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter; +}; + +if (_localVehicle) then { + _vehicle = vg_vehicleList select _index; + _typeOf = typeOf _vehicle; + _weaponsCount = ((getWeaponCargo _vehicle) select 1) call _gearCount; + _magazineCount = ((getMagazineCargo _vehicle) select 1) call _gearCount; + _backPackCount = ((getBackpackCargo _vehicle) select 1) call _gearCount; + ctrlShow[2852,false]; // getVehicle + ctrlShow[2850,true]; // storeVehicle + ctrlShow[2851,true]; // storeVehicleWithGear +} else { + _vehicle = (vg_vehicleList select _index) select 1; + _inventory = (vg_vehicleList select _index) select 2; + _DateStored = (vg_vehicleList select _index) select 4; + _DateMaintained = (vg_vehicleList select _index) select 5; + _MaintainDays = (vg_vehicleList select _index) select 6; + _typeOf = _vehicle; + _weaponsCount = _inventory select 0; + _magazineCount = _inventory select 1; + _backPackCount = _inventory select 2; + + ctrlShow[2852,true]; // getVehicle + ctrlShow[2850,false]; // storeVehicle + ctrlShow[2851,false]; // storeVehicleWithGear +}; + +_weaponSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxWeapons"); +_magazineSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxMagazines"); +_backPackSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportmaxbackpacks"); +_name = getText(configFile >> "CfgVehicles" >> _typeOf >> "displayName"); +_picture = getText (configFile >> 'CfgVehicles' >> _typeOf >> 'picture'); + +_cargoAmount = (_weaponsCount + _magazineCount + _backPackCount); + +if (_localVehicle) then { + { + if (_typeOf isKindOf (_x select 0)) exitWith {_price = _x select 1;}; + } forEach vg_price; + if (_cargoAmount > 0) then { + _price = _price + (_cargoAmount * vg_pricePer); + ctrlShow[2850,false]; + } else { + ctrlShow[2851,false]; + }; + _price = if (_price == 0) then {localize "strwffree"} else { + if (!isNil "sk_dualCurrency") then {_price = if (z_singleCurrency) then {_price * 10} else {_price};}; + if (z_singleCurrency) then { + format ["%1 %2",[_price] call BIS_fnc_numberText,currencyName] + } else { + [_price,true] call z_calcCurrency + }; + }; +}; + +_formattedText = format [ + "
" + + "%2: %3
" + + "%4: %5
" + + "%6: %13/%10 %14/%11 %15/%12
", + _picture, + localize "STR_EPOCH_NAME", + _name, + localize "STR_EPOCH_CLASS", + _typeOf, + localize "STR_EPOCH_CARGO_SPACE", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_weapons_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_items_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_backPacks_white.paa", + _weaponSlots, + _magazineSlots, + _backPackSlots, + _weaponsCount, + _magazineCount, + _backPackCount +]; + +if (_localVehicle) then {_formattedText = _formattedText + format ["%1: %2
",localize "STR_CL_VG_PRICE",_price];}; +if (!_localVehicle) then { + if (_DateStored != "old") then { + _formattedText = _formattedText + format ["%1: %2
",localize "STR_CL_VG_STOREDATE",_DateStored]; + if (_MaintainDays >= 0) then { + _formattedText = _formattedText + format ["%1: %2
%3: %4
",localize "STR_CL_VG_MAINTAINDATE",_DateMaintained,localize "STR_CL_VG_MAINTAININTERVAL",_MaintainDays]; + }; + } else { + _formattedText = _formattedText + format ["%1: %2
",localize "STR_CL_VG_STOREDATE",localize "STR_CL_VG_STOREDATE_INVALID"]; + }; +}; + +((findDisplay 2800) displayCtrl 2803) ctrlSetStructuredText parseText _formattedText; + +ctrlShow [2803,true]; +ctrlShow [2830,true]; diff --git a/SQF/dayz_code/actions/virtualGarage/virtualGarage.sqf b/SQF/dayz_code/actions/virtualGarage/virtualGarage.sqf new file mode 100644 index 000000000..12a6fdca3 --- /dev/null +++ b/SQF/dayz_code/actions/virtualGarage/virtualGarage.sqf @@ -0,0 +1,64 @@ +// Developed by [GZA] David for German Zombie Apocalypse Servers (https://zombieapo.eu/) +// Rewritten by salival (https://github.com/oiad) + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_class","_control","_displayName","_heliPad","_isNearPlot","_itemText","_localVehicles","_plotCheck","_storedVehicles","_vgDisplCtl"]; +disableSerialization; + +vg_hasRun = false; +createDialog "virtualGarage"; + +{ctrlShow [_x,false]} count [2803,2830,2850,2851,2852,2853]; + +_plotCheck = [player,false] call FNC_find_plots; +_isNearPlot = (_plotCheck select 1) > 0; + +PVDZE_queryVehicle = if (vg_tiedToPole) then { + [player,if (_isNearPlot) then {(_plotCheck select 2) getVariable ["ownerPUID","0"]} else {dayz_playerUID}] +} else { + [player] +}; + +publicVariableServer "PVDZE_queryVehicle"; +waitUntil {!isNil "PVDZE_queryVehicleResult"}; + +_storedVehicles = PVDZE_queryVehicleResult; +PVDZE_queryVehicle = nil; +PVDZE_queryVehicleResult = nil; + +_localVehicles = ([player] call FNC_getPos) nearEntities [["Air","LandVehicle","Ship"],Z_VehicleDistance]; +_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {player},vg_heliPads,if (_isNearPlot) then {DZE_maintainRange} else {Z_VehicleDistance}]; + +if (count _heliPad > 0 && {_isNearPlot}) then {ctrlShow[2853,true];}; + +_control = ((findDisplay 2800) displayCtrl 2802); +lbClear _control; + +if (count _storedVehicles == 0 && {isNull DZE_myVehicle || {!(alive DZE_myVehicle)} || {!(local DZE_myVehicle)}}) exitWith {ctrlSetText[2811,localize "STR_CL_VG_NO_VEHICLES"];}; + +vg_vehicleList = []; + +{ + _displayName = getText(configFile >> "CfgVehicles" >> (_x select 1) >> "displayName"); + _control lbAdd _displayName; + _control lbSetData [(lbSize _control)-1,str(_x)]; + vg_vehicleList set [count vg_vehicleList,_x]; +} count _storedVehicles; + +{ + if (!isNull DZE_myVehicle && {local DZE_myVehicle} && {alive DZE_myVehicle} && {DZE_myVehicle == _x}) then { + _class = typeOf _x; + _displayName = getText(configFile >> "CfgVehicles" >> _class >> "displayName"); + _control lbAdd _displayName; + _control lbSetData [(lbSize _control)-1,_class]; + _control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]]; + vg_vehicleList set [count vg_vehicleList,_x]; + }; +} count _localVehicles; + +ctrlShow[2810,false]; +ctrlShow[2811,false]; + +ctrlSetText [2804, format ["%1 (%2 %3)",localize "STR_CL_VG_YOUR_VEHICLES",count (_storedVehicles),localize "STR_CL_VG_VEHICLES"]]; diff --git a/SQF/dayz_code/actions/vkc/vehicleInfo.sqf b/SQF/dayz_code/actions/vkc/vehicleInfo.sqf new file mode 100644 index 000000000..e430206b3 --- /dev/null +++ b/SQF/dayz_code/actions/vkc/vehicleInfo.sqf @@ -0,0 +1,68 @@ +private ["_backPackCount","_backPackCount_raw","_backPackSlots","_formattedText","_gearCount","_magazineCount","_magazineCount_raw","_magazineSlots","_name","_picture","_price","_text","_typeOf","_weaponSlots","_weaponsCount","_weaponsCount_raw"]; + +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter +}; + +if (vkc_action == "claim") then { + ctrlShow[4850,true]; + _text = localize "STR_CL_VKC_CLAIM"; + _price = vkc_claimPrice; +} else { + ctrlShow[4851,true]; + _text = localize "STR_CL_VKC_CHANGE"; + _price = vkc_changePrice; +}; + +_typeOf = typeOf vkc_cursorTarget; +_weaponsCount_raw = getWeaponCargo vkc_cursorTarget; +_magazineCount_raw = getMagazineCargo vkc_cursorTarget; +_backPackCount_raw = getBackpackCargo vkc_cursorTarget; + +_weaponSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxWeapons"); +_magazineSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxMagazines"); +_backPackSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportmaxbackpacks"); +_name = getText(configFile >> "CfgVehicles" >> _typeOf >> "displayName"); +_picture = getText(configFile >> 'CfgVehicles' >> _typeOf >> 'picture'); + +_weaponsCount = (_weaponsCount_raw select 1) call _gearCount; +_magazineCount = (_magazineCount_raw select 1) call _gearCount; +_backPackCount = (_backPackCount_raw select 1) call _gearCount; + +if (!isNil "sk_dualCurrency") then {if (z_singleCurrency) then {_price = _price * 10};}; + +_price = if (z_singleCurrency) then { + format ["%1 %2",[_price] call BIS_fnc_numberText,currencyName] +} else { + [_price,true] call z_calcCurrency +}; +_formattedText = format [ + "
" + + "%2: %3
" + + "%4: %5
" + + "%6: %13/%10 %14/%11 %15/%12
" + + "Price to %16: %17
", + _picture, + localize "STR_EPOCH_NAME", + _name, + localize "STR_EPOCH_CLASS", + _typeOf, + localize "STR_EPOCH_CARGO_SPACE", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_weapons_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_items_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_backPacks_white.paa", + _weaponSlots, + _magazineSlots, + _backPackSlots, + _weaponsCount, + _magazineCount, + _backPackCount, + toLower (_text), + _price +]; + +((findDisplay 4800) displayCtrl 4803) ctrlSetStructuredText parseText _formattedText; +ctrlShow [4803,true]; diff --git a/SQF/dayz_code/actions/vkc/vehicleKeyChanger.sqf b/SQF/dayz_code/actions/vkc/vehicleKeyChanger.sqf new file mode 100644 index 000000000..dd003f4c0 --- /dev/null +++ b/SQF/dayz_code/actions/vkc/vehicleKeyChanger.sqf @@ -0,0 +1,175 @@ +/* + Vehicle Key Changer by salival (https://github.com/oiad) + + This version adds support for both single currency and gems (from the epoch 1.0.6 update) as well as the original epoch briefcase currency system. + Instead of pricing things like the original way, prices are now done on a "worth" similar to how coins are done. The price value of items are below. + If you are using coins, I would recommend using the _currencyModifier variable since coins typically are 10x the value of briefcase based currency (1 brief == 100,000 coins) + + 1 silver = 1 worth + 1 10oz silver = 10 worth + 1 gold = 100 worth + 1 10oz gold = 1,000 worth + 1 briefcase = 10,000 worth + + Please see dayz_code\configVariables.sqf for the value of gems (DZE_GemWorthArray) and their relevant worth if they are enabled. +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +disableSerialization; +private ["_amount","_characterID","_control","_currencyModifier","_enoughMoney","_exit","_foundPos","_index","_itemText","_message","_moneyInfo","_name","_playerNear","_position","_success","_typeOf","_vehicleID","_vehicleUID","_wealth"]; + +vkc_cursorTarget = (_this select 3) select 0; +_characterID = (_this select 3) select 1; +vkc_action = (_this select 3) select 2; + +vkc_isOk = false; + +player removeAction s_player_claimVehicle; +s_player_claimVehicle = 1; +player removeAction s_player_copyToKey; +s_player_copyToKey = 1; + +_exit = { + vkc_action = nil; + vkc_keyList = nil; + vkc_keyName = nil; + vkc_charID = nil; + vkc_isOk = nil; + vkc_cursorTarget = nil; + s_player_copyToKey = -1; + s_player_claimVehicle = -1; + dayz_actionInProgress = false; +}; + +if (isNull vkc_cursorTarget) exitWith {call _exit; systemChat localize "str_cursorTargetNotFound";}; + +_playerNear = {isPlayer _x} count (([vkc_cursorTarget] call FNC_GetPos) nearEntities ["CAManBase", 10]) > 1; +if (_playerNear) exitWith {call _exit; localize "str_pickup_limit_5" call dayz_rollingMessages;}; + +if !(vkc_cursorTarget isKindOf "Air" || {vkc_cursorTarget isKindOf "LandVehicle"} || {vkc_cursorTarget isKindOf "Ship"}) exitWith {call _exit; localize "STR_CL_VKC_FAIL_CURSOR" call dayz_rollingMessages;}; + +if (isNull DZE_myVehicle || {!(alive DZE_myVehicle)} || {!(local DZE_myVehicle)}) exitWith {call _exit; localize "str_epoch_player_245" call dayz_rollingMessages;}; + +_vehicleID = vkc_cursorTarget getVariable ["ObjectID","0"]; +_vehicleUID = vkc_cursorTarget getVariable ["ObjectUID","0"]; + +_typeOf = typeOf vkc_cursorTarget; +_name = getText(configFile >> "cfgVehicles" >> _typeOf >> "displayName"); + +if ((_vehicleID == "0" && {_vehicleUID == "0"}) || {_vehicleID == "1" || _vehicleUID == "1"}) exitWith {call _exit; format[localize "STR_CL_VKC_FAIL_SUPPORT",_name] call dayz_rollingMessages;}; + +if (_vehicleUID == "0") then { + _vehicleUID = ""; + { + _x = _x * 10; + if (_x < 0) then {_x = _x * -10}; + _vehicleUID = _vehicleUID + str(round(_x)); + } forEach getPosATL vkc_cursorTarget; + _vehicleUID = _vehicleUID + str(round((getDir vkc_cursorTarget) + time)); + vkc_cursorTarget setVariable["ObjectUID",_vehicleUID,true]; +}; + +vkc_keyList = call epoch_tempKeys; + +if (vkc_action == "change") then { + _amount = vkc_changePrice; + _message = [localize "STR_CL_VKC_CHANGE_MESSAGE_1",localize "STR_CL_VKC_CHANGE_MESSAGE_2",localize "STR_CL_VKC_CHANGE_MESSAGE_3"]; + _foundPos = (vkc_keyList select 0) find _characterID; + if (_foundPos >= 0) then { + vkc_keyList set [0,(vkc_keyList select 0) - [(vkc_keyList select 0) select _foundPos]]; + vkc_keyList set [1,(vkc_keyList select 1) - [(vkc_keyList select 1) select _foundPos]]; + vkc_keyList set [2,(vkc_keyList select 2) - [(vkc_keyList select 2) select _foundPos]]; + } else { + vkc_keyList = [[],[]]; + }; +} else { + _amount = vkc_claimPrice; + _message = [localize "STR_CL_VKC_CLAIM_MESSAGE_1",localize "STR_CL_VKC_CLAIM_MESSAGE_2",localize "STR_CL_VKC_CLAIM_MESSAGE_3"]; +}; + +if (count (vkc_keyList select 0) == 0) exitWith {systemChat localize "STR_CL_VKC_FAIL_KEYS"; call _exit;}; + +if (!isNil "sk_dualCurrency") then {if (z_singleCurrency) then {_amount = _amount * 10};}; + +_itemText = if (Z_SingleCurrency) then {format ["%1 %2",[_amount] call BIS_fnc_numberText,CurrencyName]} else {[_amount,true] call z_calcCurrency}; + +createDialog "vkc"; +{ctrlShow [_x,false]} count [4803,4850,4851]; + +call vkc_vehicleInfo; + +_control = ((findDisplay 4800) displayCtrl 4802); +lbClear _control; + +{ + _index = _control lbAdd ((vkc_keyList select 1) select _forEachIndex); + _control lbSetPicture [_index,getText(configFile >> "CfgWeapons" >> ((vkc_keyList select 2) select _index) >> "picture")]; +} forEach (vkc_keyList select 0); + +_control lbSetCurSel 0; + +waitUntil {!dialog}; + +if (!vkc_isOk) exitWith {call _exit;}; + +if (isNull DZE_myVehicle || {!(alive DZE_myVehicle)} || {!(local DZE_myVehicle)}) exitWith {call _exit; localize "str_epoch_player_245" call dayz_rollingMessages;}; + +_enoughMoney = false; +_moneyInfo = [false,[],[],[],0]; + +if (Z_SingleCurrency) then { + _wealth = player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0]; + _enoughMoney = (_wealth >= _amount); +} else { + Z_Selling = false; + if (Z_AllowTakingMoneyFromVehicle) then {false call Z_checkCloseVehicle}; + _moneyInfo = _amount call Z_canAfford; + _enoughMoney = _moneyInfo select 0; +}; + +_success = if (Z_SingleCurrency) then {true} else {[player,_amount,_moneyInfo,true,0] call Z_payDefault}; + +if (!_success && {_enoughMoney}) exitWith {call _exit;systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL"}; + +if (_enoughMoney) then { + _success = if (Z_SingleCurrency) then {_amount <= _wealth} else {[player,_amount,_moneyInfo,false,0] call Z_payDefault}; + if (_success) then { + if (Z_SingleCurrency) then {player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),(_wealth - _amount),true];}; + + vkc_cursorTarget setVehicleLock "LOCKED"; + player playActionNow "Medic"; + + _position = [vkc_cursorTarget] call FNC_GetPos; + + [_typeOf,objNull] call fn_waitForObject; + dze_waiting = nil; + + PVDZE_veh_Upgrade = [vkc_cursorTarget,[getDir vkc_cursorTarget,_position],_typeOf,vkc_charID,player,dayz_authKey,if (vkc_action == "change") then {"changed the key for"} else {"claimed"}]; + publicVariableServer "PVDZE_veh_Upgrade"; + + localize "STR_CL_VKC_WAIT" call dayz_rollingMessages; + + waitUntil {!isNil "dze_waiting"}; + + if (dze_waiting == "fail") then { + systemChat format[localize "STR_CL_VKC_FAIL_UPGRADE",_name]; + if (z_singleCurrency) then { + player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),_wealth,true]; + } else { + Z_Selling = true; + _success = [_amount,0,false,0,[],[],false] call Z_returnChange; + }; + } else { + {player reveal _x;} count (player nearEntities [["LandVehicle"],10]); + [format[_message select 0,_name,vkc_keyName],1] call dayz_rollingMessages; + }; + } else { + systemChat localize "STR_EPOCH_TRADE_DEBUG"; + }; +} else { + systemChat format[localize "STR_CL_VKC_FAIL_MONEY",_itemText,_message select 1,_name]; +}; + +call _exit; diff --git a/SQF/dayz_code/compile/Rightclicks/ui_selectSlot_addon.sqf b/SQF/dayz_code/compile/Rightclicks/ui_selectSlot_addon.sqf new file mode 100644 index 000000000..8cbbd93c7 --- /dev/null +++ b/SQF/dayz_code/compile/Rightclicks/ui_selectSlot_addon.sqf @@ -0,0 +1,105 @@ +disableSerialization; +local _control = _this select 0; +local _button = _this select 1; +local _parent = findDisplay 106; + +if (carryClick) then {carryClick = false;}; + +if (_button == 1) then { + if (animationState player in ["ainjppnemstpsnonwnondnon_rolltofront","amovppnemstpsnonwnondnon_healed"]) exitWith { + //Prevent bypassing unconscious wake up animation with bandage or other right click actions + localize "str_player_actionslimit" call dayz_rollingMessages; + }; + + local _group = _parent displayCtrl 6902; + local _pos = ctrlPosition _group; + local _item = gearSlotData _control; + + if ( //No right click action + (!DZE_SelfTransfuse && {_item in ["ItemBloodbag","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"]}) + ) exitWith {}; + + if (mouseOverCarry) then { + _item = DayZ_onBack; + carryClick = true; + }; + + _pos set [0,((_this select 2) + 0.46)]; + _pos set [1,((_this select 3) + 0.07)]; + + local _conf = configFile >> "cfgMagazines" >> _item; + if (!isClass _conf) then { + _conf = configFile >> "cfgWeapons" >> _item; + }; + local _name = getText(_conf >> "displayName"); + + local _cfgActions = _conf >> "ItemActions"; + local _numActions = (count _cfgActions); + local _height = 0; + if (!dayz_groupSystem && {_item == "ItemRadio"}) then {_numActions = 1;}; // Used to bypass the group action when not enabled. + + local _i = 0; + //Populate Menu + while {_i <= (_numActions - 1)} do { + local _menu = _parent displayCtrl (1600 + _i); + _menu ctrlShow true; + local _config = (_cfgActions select _i); + local _type = getText (_config >> "text"); + local _script = getText (_config >> "script"); + local _outputOriented = getNumber (_config >> "outputOriented") == 1; + _height = _height + (0.025 * safezoneH); + local _compile = format["_id = '%2' %1;",_script,_item]; + uiNamespace setVariable ['uiControl', _control]; + if (_outputOriented) then { + /* + This flag means that the action is output oriented + the output class will then be transferred to the script + and the type used for the name + */ + local _array = getArray (_config >> "output"); + local _outputClass = _array select 0; + local _outputType = _array select 1; + _name = getText (configFile >> _outputType >> _outputClass >> "displayName"); + _compile = format["_id = ['%2',%3] %1;",_script,_item,_array]; + }; + + _menu ctrlSetText format[_type,_name]; + _menu ctrlSetEventHandler ["ButtonClick",_compile]; + _i = _i + 1; + }; + + local _isKey = ((["ItemKey",_item] call fnc_inString) && (_item != "ItemKeyKit")); + + { + local _classname = _x select 0; + local _text = _x select 1; + local _execute = _x select 2; + local _condition = _x select 3; + + if ((_item == _classname || (_isKey && (_className == "ItemKey"))) && (call compile _condition)) then { + local _menu = _parent displayCtrl (1600 + _numActions); + _menu ctrlShow true; + _height = _height + (0.025 * safezoneH); + uiNamespace setVariable ['uiControl', _control]; + _menu ctrlSetText _text; + if (_isKey && (_className == "ItemKey")) then { + if (count _this > 4) then { + local _option = _x select 4; + _menu ctrlSetEventHandler ["ButtonClick",format ["[%1,%2] %3",str _item,_option,_execute]]; + }; + } else { + _menu ctrlSetEventHandler ["ButtonClick",_execute]; + }; + _numActions = _numActions + 1; + }; + } forEach DZE_CLICK_ACTIONS; + + _pos set [3,_height]; + + //hint format["Obj: %1 \nHeight: %2\nPos: %3",_item,_height,_grpPos]; + + _group ctrlShow true; + ctrlSetFocus _group; + _group ctrlSetPosition _pos; + _group ctrlCommit 0; +}; \ No newline at end of file diff --git a/SQF/dayz_code/compile/ui_selectSlot.sqf b/SQF/dayz_code/compile/Rightclicks/ui_selectSlot_vanilla.sqf similarity index 62% rename from SQF/dayz_code/compile/ui_selectSlot.sqf rename to SQF/dayz_code/compile/Rightclicks/ui_selectSlot_vanilla.sqf index 04740e5bf..e33d457e2 100644 --- a/SQF/dayz_code/compile/ui_selectSlot.sqf +++ b/SQF/dayz_code/compile/Rightclicks/ui_selectSlot_vanilla.sqf @@ -1,8 +1,7 @@ -//private ["_control","_button","_parent","_group","_pos","_item","_conf","_name","_cfgActions","_numActions","_height","_menu","_config","_type","_script","_outputOriented","_compile","_array","_outputClass","_outputType"]; disableSerialization; -_control = _this select 0; -_button = _this select 1; -_parent = findDisplay 106; +local _control = _this select 0; +local _button = _this select 1; +local _parent = findDisplay 106; if (carryClick) then {carryClick = false;}; @@ -12,12 +11,10 @@ if (_button == 1) then { localize "str_player_actionslimit" call dayz_rollingMessages; }; - private ["_conf","_name","_compile","_height","_item"]; - _group = _parent displayCtrl 6902; - - _pos = ctrlPosition _group; - - _item = gearSlotData _control; + local _group = _parent displayCtrl 6902; + local _pos = ctrlPosition _group; + local _item = gearSlotData _control; + if ( //No right click action (!DZE_SelfTransfuse && {_item in ["ItemBloodbag","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"]}) ) exitWith {}; @@ -30,28 +27,28 @@ if (_button == 1) then { _pos set [0,((_this select 2) + 0.46)]; _pos set [1,((_this select 3) + 0.07)]; - _conf = configFile >> "cfgMagazines" >> _item; + local _conf = configFile >> "cfgMagazines" >> _item; if (!isClass _conf) then { _conf = configFile >> "cfgWeapons" >> _item; }; - _name = getText(_conf >> "displayName"); + local _name = getText(_conf >> "displayName"); - _cfgActions = _conf >> "ItemActions"; - _numActions = (count _cfgActions); - _height = 0; + local _cfgActions = _conf >> "ItemActions"; + local _numActions = (count _cfgActions); + local _height = 0; if (!dayz_groupSystem && {_item == "ItemRadio"}) then {_numActions = 1;}; // Used to bypass the group action when not enabled. + local _i = 0; //Populate Menu - for "_i" from 0 to (_numActions - 1) do - { - _menu = _parent displayCtrl (1600 + _i); + while {_i <= (_numActions - 1)} do { + local _menu = _parent displayCtrl (1600 + _i); _menu ctrlShow true; - _config = (_cfgActions select _i); - _type = getText (_config >> "text"); - _script = getText (_config >> "script"); - _outputOriented = getNumber (_config >> "outputOriented") == 1; + local _config = (_cfgActions select _i); + local _type = getText (_config >> "text"); + local _script = getText (_config >> "script"); + local _outputOriented = getNumber (_config >> "outputOriented") == 1; _height = _height + (0.025 * safezoneH); - _compile = format["_id = '%2' %1;",_script,_item]; + local _compile = format["_id = '%2' %1;",_script,_item]; uiNamespace setVariable ['uiControl', _control]; if (_outputOriented) then { /* @@ -59,15 +56,16 @@ if (_button == 1) then { the output class will then be transferred to the script and the type used for the name */ - _array = getArray (_config >> "output"); - _outputClass = _array select 0; - _outputType = _array select 1; + local _array = getArray (_config >> "output"); + local _outputClass = _array select 0; + local _outputType = _array select 1; _name = getText (configFile >> _outputType >> _outputClass >> "displayName"); _compile = format["_id = ['%2',%3] %1;",_script,_item,_array]; }; _menu ctrlSetText format[_type,_name]; _menu ctrlSetEventHandler ["ButtonClick",_compile]; + _i = _i + 1; }; _pos set [3,_height]; @@ -77,4 +75,4 @@ if (_button == 1) then { ctrlSetFocus _group; _group ctrlSetPosition _pos; _group ctrlCommit 0; -}; +}; \ No newline at end of file diff --git a/SQF/dayz_code/compile/building_spawnZombies.sqf b/SQF/dayz_code/compile/building_spawnZombies.sqf index 8e7be6f60..865a9e981 100644 --- a/SQF/dayz_code/compile/building_spawnZombies.sqf +++ b/SQF/dayz_code/compile/building_spawnZombies.sqf @@ -41,4 +41,11 @@ if (!([_objPos] call DZE_SafeZonePosCheck)) then { }; } forEach _positions; }; + + // Bloodsuckers + if (DZE_Bloodsuckers) then { + if ((dayz_spawnBloodsuckers < DZE_BloodsuckersMaxLocal) && {dayz_CurrentNearBloodsuckers < DZE_BloodsuckersMaxNear} && {dayz_currentGlobalBloodsuckers < DZE_BloodsuckersMaxGlobal} && {_type in DZE_BloodsuckerBuildings} && {(random 1) < DZE_BloodsuckerChance}) then { + _objPos call mutant_generate; + }; + }; }; diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf index 43de6709b..13a19bdf2 100644 --- a/SQF/dayz_code/compile/fn_selfActions.sqf +++ b/SQF/dayz_code/compile/fn_selfActions.sqf @@ -128,9 +128,28 @@ if (_inVehicle) then { {DZE_myVehicle removeAction _x} count s_player_lockUnlockInside;s_player_lockUnlockInside = []; s_player_lockUnlockInside_ctrl = -1; }; + + //Allows to open garage doors from the vehicle, but may negatively impact performance + if (DZE_GarageDoor_Opener) then { + local _doors = nearestObjects [DZE_myVehicle, DZE_GarageDoors, DZE_GarageDoor_Radius]; + + if (count _doors > 0 && {driver DZE_myVehicle == player}) then { + local _hasAccess = [player,_doors select 0] call FNC_check_access; + if (s_player_gdoor_opener_ctrl < 0 && ((_hasAccess select 0) || (_hasAccess select 2) || (_hasAccess select 3) || (_hasAccess select 4))) then { + local _door = DZE_myVehicle addAction [format["%1",localize "STR_CL_GDO_GARAGE"],"\z\addons\dayz_code\actions\garageDoorOpener.sqf",_doors select 0, 1, false, true]; + s_player_gdoor_opener set [count s_player_gdoor_opener,_door]; + s_player_gdoor_opener_ctrl = 1; + }; + } else { + {DZE_myVehicle removeAction _x} count s_player_gdoor_opener;s_player_gdoor_opener = []; + s_player_gdoor_opener_ctrl = -1; + }; + }; } else { {DZE_myVehicle removeAction _x} count s_player_lockUnlockInside;s_player_lockUnlockInside = []; s_player_lockUnlockInside_ctrl = -1; + {DZE_myVehicle removeAction _x} count s_player_gdoor_opener;s_player_gdoor_opener = []; + s_player_gdoor_opener_ctrl = -1; }; if (DZE_HeliLift) then { @@ -215,6 +234,7 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis local _weaponsPlayer = weapons player; local _hasCrowbar = "ItemCrowbar" in _itemsPlayer || "MeleeCrowbar" in _weaponsPlayer || dayz_onBack == "MeleeCrowbar"; local _hasToolbox = "ItemToolbox" in _itemsPlayer; + local _hasKeymakerskit = "ItemKeyKit" in _itemsPlayer; local _isAlive = alive _cursorTarget; local _text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName"); local _isPlant = _typeOfCursorTarget in Dayz_plants; @@ -549,11 +569,12 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis // Allow Owner to lock and unlock vehicle if (_player_lockUnlock_crtl) then { + local _totalKeys = call epoch_tempKeys; + local _temp_keys = _totalKeys select 0; + local _temp_keys_names = _totalKeys select 1; + local _hasKey = _characterID in _temp_keys; + if (s_player_lockUnlock_crtl < 0) then { - local _totalKeys = call epoch_tempKeys; - local _temp_keys = _totalKeys select 0; - local _temp_keys_names = _totalKeys select 1; - local _hasKey = _characterID in _temp_keys; local _oldOwner = (_characterID == _uid); local _unlock = []; @@ -579,9 +600,18 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis }; }; }; + if (DZE_VehicleKey_Changer) then { + if (s_player_copyToKey < 0) then { + if ((_hasKeymakerskit && _hasKey && !_isLocked && {(count _temp_keys) > 1}) || {_cursorTarget getVariable ["hotwired",false]}) then { + s_player_copyToKey = player addAction [format["%1",localize "STR_CL_VKC_CHANGE_ACTION"],"\z\addons\dayz_code\actions\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,if (_cursorTarget getVariable ["hotwired",false]) then {"claim"} else {"change"}],5,false,true]; + }; + }; + }; } else { {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = []; s_player_lockUnlock_crtl = -1; + player removeAction s_player_copyToKey; + s_player_copyToKey = -1; }; if (DZE_Hide_Body && {_isMan && !_isAlive}) then { @@ -616,7 +646,7 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis }; //Allow owner to unlock vault - if (_isClose && !keypadCancel && {(_typeOfCursorTarget in DZE_LockedStorage) && {_characterID != "0"}}) then { + if (_isClose && !keypadCancel && {(_typeOfCursorTarget in (DZE_LockedStorage + DZE_UnLockedStorage)) && {_characterID != "0"}}) then { if (s_player_unlockvault < 0) then { local _combi = []; if (_typeOfCursorTarget in DZE_LockedStorage) then { @@ -790,22 +820,73 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis player removeAction s_player_fillgen; s_player_fillgen = -1; }; + + if (DZE_VehicleKey_Changer) then { + if (_hasKeymakerskit && _isVehicle && !_isMan && _isAlive && {_characterID == "0"}) then { + if (s_player_claimVehicle < 0) then { + _totalKeys = call epoch_tempKeys; + if (count (_totalKeys select 0) > 0) then { + s_player_claimVehicle = player addAction [format["%1",format[localize "STR_CL_VKC_CLAIM_ACTION",_text]],"\z\addons\dayz_code\actions\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,"claim"],5,false,true]; + }; + }; + } else { + player removeAction s_player_claimVehicle; + s_player_claimVehicle = -1; + }; + }; - //Towing with tow truck - /* - if(_typeOfCursorTarget == "TOW_DZE") then { - if (s_player_towing < 0) then { - if(!(_cursorTarget getVariable ["DZEinTow", false])) then { - s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true]; + if (!_isAlive && _isMan && !_isZombie && {!(_cursorTarget isKindOf "Animal")}) then { + if (DZE_Take_Clothes) then { + if (!(_cursorTarget getVariable["clothesTaken",false]) && {_typeOfCursorTarget in AllPlayers} && {!(_typeOfCursorTarget in DZE_Disable_Take_Clothes)}) then { + if (s_player_clothes < 0) then { + s_player_clothes = player addAction [format["%1",localize "STR_CL_TC_TAKE_CLOTHES"],"\z\addons\dayz_code\actions\takeClothes.sqf",_cursorTarget,0, false,true]; + }; } else { - s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true]; + player removeAction s_player_clothes; + s_player_clothes = -1; + }; + }; + + if (DZE_Bury_Body) then { + local _hasShovel = ("ItemEtool" in _itemsPlayer || "ItemShovel" in _itemsPlayer); + if (_hasShovel && !(_cursorTarget getVariable ["bodyButchered",false])) then { + if (s_player_bury_human < 0) then { + s_player_bury_human = player addAction [format["%1",localize "STR_CL_BA_BURY"],"\z\addons\dayz_code\actions\buryActions.sqf",[_cursorTarget,"bury"],0,false,true]; + }; + } else { + player removeAction s_player_bury_human; + s_player_bury_human = -1; + }; + }; + + if (DZE_Butcher_Body) then { + if (({_x in ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnife1"]} count _itemsPlayer > 0) && !(_cursorTarget getVariable ["bodyButchered",false])) then { + if (s_player_butcher_human < 0) then { + s_player_butcher_human = player addAction [format["%1",localize "STR_CL_BA_BUTCHER"],"\z\addons\dayz_code\actions\buryActions.sqf",[_cursorTarget,"butcher"],0,false,true]; + }; + } else { + player removeAction s_player_butcher_human; + s_player_butcher_human = -1; }; }; - } else { - player removeAction s_player_towing; - s_player_towing = -1; }; - */ + + if (DZE_Virtual_Garage) then { + if (_typeOfCursorTarget in vg_List) then { + if (s_garage_dialog < 0) then { + local _hasAccess = [player,_cursorTarget] call FNC_check_access; + local _plotCheck = [player, false] call FNC_find_plots; + local _isNearPlot = ((_plotCheck select 1) > 0); + + if ((_isNearPlot && ((_hasAccess select 0) || (_hasAccess select 2) || (_hasAccess select 3) || (_hasAccess select 4))) || !_isNearPlot) then { + s_garage_dialog = player addAction [format["%1",localize "STR_CL_VG_VIRTUAL_GARAGE"],"\z\addons\dayz_code\actions\virtualGarage\virtualGarage.sqf",_cursorTarget,3,false,true]; + }; + }; + } else { + player removeAction s_garage_dialog; + s_garage_dialog = -1; + }; + }; // ZSC if (Z_singleCurrency) then { @@ -1079,6 +1160,18 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis s_bank_dialog3 = -1; player removeAction s_player_checkWallet; s_player_checkWallet = -1; + player removeAction s_player_clothes; + s_player_clothes = -1; + player removeAction s_player_bury_human; + s_player_bury_human = -1; + player removeAction s_player_butcher_human; + s_player_butcher_human = -1; + player removeAction s_player_copyToKey; + s_player_copyToKey = -1; + player removeAction s_player_claimVehicle; + s_player_claimVehicle = -1; + player removeAction s_garage_dialog; + s_garage_dialog = -1; }; //Dog actions on player self @@ -1110,4 +1203,4 @@ if (_dogHandle > 0) then { }; //Monitor -player setVariable ["selfActions", diag_ticktime, false]; \ No newline at end of file +player setVariable ["selfActions", diag_ticktime, false]; diff --git a/SQF/dayz_code/compile/local_gutObject.sqf b/SQF/dayz_code/compile/local_gutObject.sqf index aad00420d..48eed429f 100644 --- a/SQF/dayz_code/compile/local_gutObject.sqf +++ b/SQF/dayz_code/compile/local_gutObject.sqf @@ -1,38 +1,43 @@ -private ["_amount","_animalbody","_rawfoodtype","_qty"]; +local _body = _this select 0; +local _qty = _this select 1; +local _rawfoodtype = ""; +local _bodyType = typeOf _body; +local _time = diag_tickTime; -_animalbody = _this select 0; -_qty = _this select 1; - -if (_animalbody isKindOf "zZombie_base") then { - _qty = 1; - _rawfoodtype = "ItemZombieParts"; -} else { - _rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> typeOf _animalbody >> "rawfoodtype"); +call { + if (_body isKindOf "zZombie_base") exitWith { + _qty = 1; + _rawfoodtype = "ItemZombieParts"; + }; + + if (_bodyType == "z_bloodsucker") exitWith { + _qty = 1; + _rawfoodtype = "ItemMutantHeart"; // toolbelt item + }; + // default is animal + _rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> _bodyType >> "rawfoodtype"); }; -if (local _animalbody) then { +if (local _body) then { for "_i" from 1 to _qty do { - _animalbody addMagazine _rawfoodtype; + if (_rawfoodtype == "ItemMutantHeart") then { + _body addWeapon _rawfoodtype; + } else { + _body addMagazine _rawfoodtype; + }; }; - if (typeOf _animalbody in ["Cock","Hen"]) then { - _amount = (floor (random 4)) + 2; + if (_bodyType in ["Cock","Hen"]) then { + local _amount = (floor (random 4)) + 2; for "_x" from 1 to _amount do { - _animalbody addMagazine "equip_feathers"; + _body addMagazine "equip_feathers"; }; }; - [time, _animalbody] spawn { - _timer = _this select 0; - _body = _this select 1; - _pos = getPosATL _body; - while {(count magazines _body > 0) && (time - _timer < 300)} do { - uiSleep 5; - }; - hideBody _body; - - uiSleep 10; - deleteVehicle _body; - true + while {((count magazines _body > 0) || (count weapons _body > 0)) && (diag_tickTime - _time < 300)} do { + uiSleep 5; }; + hideBody _body; + uiSleep 10; + deleteVehicle _body; }; diff --git a/SQF/dayz_code/compile/mutant_findTarget.sqf b/SQF/dayz_code/compile/mutant_findTarget.sqf new file mode 100644 index 000000000..a5dee71f2 --- /dev/null +++ b/SQF/dayz_code/compile/mutant_findTarget.sqf @@ -0,0 +1,29 @@ +/* + _localtargets and _remotetargets are set in player_zombieCheck. + The bloodsucker will move in the direction of the player assigned as target. + Players with a mutant heart on tool belt will not be targeted. +*/ + +local _mutant = _this; + +if (isNull _mutant) exitWith {objNull}; // Prevent errors if mutant is suddenly deleted + +local _localtargets = _mutant getVariable ["localtargets",[]]; +local _remotetargets = _mutant getVariable ["remotetargets",[]]; +local _targets = _localtargets + _remotetargets; + +local _target = objNull; +local _scandist = 200; + +{ + local _skip = (DZE_MutantHeartProtect && {_x hasWeapon "ItemMutantHeart"}); + if (!_skip) then { + local _dist = _x distance _mutant; + if (_dist < _scandist) then { + _target = _x; + _scandist = _dist; + }; + }; +} count _targets; + +_target \ No newline at end of file diff --git a/SQF/dayz_code/compile/mutant_generate.sqf b/SQF/dayz_code/compile/mutant_generate.sqf new file mode 100644 index 000000000..ca1278726 --- /dev/null +++ b/SQF/dayz_code/compile/mutant_generate.sqf @@ -0,0 +1,16 @@ +// Select random position between 50 and 100 meters away from the building. +local _pos = [_this, 50, 100, 1] call fn_selectRandomLocation; + +if (surfaceIsWater _pos) exitWith { diag_log "Mutant_Generate: Location is in water...abort"; }; + +// Create mutant +_agent = createAgent ["z_bloodsucker", _pos, [], 0, "NONE"]; +_agent setDir (random 360); +_agent setPosATL _pos; + +// Add to counts +dayz_spawnBloodsuckers = dayz_spawnBloodsuckers + 1; +dayz_CurrentNearBloodsuckers = dayz_CurrentNearBloodsuckers + 1; +dayz_currentGlobalBloodsuckers = dayz_currentGlobalBloodsuckers + 1; + +//diag_log format ["Bloodsucker Counts: Current local - %1, Current near - %2, Current global - %3",dayz_spawnBloodsuckers,dayz_CurrentNearBloodsuckers,dayz_currentGlobalBloodsuckers]; diff --git a/SQF/dayz_code/compile/player_alertZombies.sqf b/SQF/dayz_code/compile/player_alertZombies.sqf index 8a222e24e..38b1c8b15 100644 --- a/SQF/dayz_code/compile/player_alertZombies.sqf +++ b/SQF/dayz_code/compile/player_alertZombies.sqf @@ -1,23 +1,16 @@ -private ["_unit","_distance","_doRun","_pos","_listTalk","_zombie","_50","_localtargets","_remotetargets","_targets","_dis"]; - -_unit = _this select 0; -_distance = _this select 1; -_doRun = _this select 2; -_pos = _this select 3; - -_listTalk = _pos nearEntities ["zZombie_Base",_distance]; +local _unit = _this select 0; +local _distance = _this select 1; +local _doRun = _this select 2; +local _pos = _this select 3; { - _distance = _distance max floor(_distance*.9); - _dis = _x distance _unit; - _zombie = _x; - + local _dis = _x distance _unit; call { if (_dis < 51) exitwith { if (_doRun) then { - _localtargets = _x getVariable ["localtargets",[]]; - _remotetargets = _x getVariable ["remotetargets",[]]; - _targets = _localtargets + _remotetargets; + local _localtargets = _x getVariable ["localtargets",[]]; + local _remotetargets = _x getVariable ["remotetargets",[]]; + local _targets = _localtargets + _remotetargets; if (!(_unit in _targets)) then { if !(local _x) then { _remotetargets set [count _remotetargets,_unit]; @@ -28,16 +21,15 @@ _listTalk = _pos nearEntities ["zZombie_Base",_distance]; }; }; } else { - _zombie setVariable ["myDest",_pos,true]; + _x setVariable ["myDest",_pos,true]; }; }; if ((_dis > 50) && {_dis <= 71}) exitwith { - _50 = round(random 100); - if (_50 < 50) then { + if (random 100 < 50) then { if (_doRun) then { - _localtargets = _x getVariable ["localtargets",[]]; - _remotetargets = _x getVariable ["remotetargets",[]]; - _targets = _localtargets + _remotetargets; + local _localtargets = _x getVariable ["localtargets",[]]; + local _remotetargets = _x getVariable ["remotetargets",[]]; + local _targets = _localtargets + _remotetargets; if (!(_unit in _targets)) then { if !(local _x) then { _remotetargets set [count _remotetargets,_unit]; @@ -48,14 +40,14 @@ _listTalk = _pos nearEntities ["zZombie_Base",_distance]; }; }; } else { - _zombie setVariable ["myDest",_pos,true]; + _x setVariable ["myDest",_pos,true]; }; } else { - _zombie setVariable ["myDest",_pos,true]; + _x setVariable ["myDest",_pos,true]; }; }; if (_dis > 70) exitwith { - _zombie setVariable ["myDest",_pos,true]; + _x setVariable ["myDest",_pos,true]; }; }; -} count _listTalk; +} count (_pos nearEntities ["Zed_Base",_distance]); diff --git a/SQF/dayz_code/compile/player_forceSave.sqf b/SQF/dayz_code/compile/player_forceSave.sqf index 9cde166e9..eccc222d0 100644 --- a/SQF/dayz_code/compile/player_forceSave.sqf +++ b/SQF/dayz_code/compile/player_forceSave.sqf @@ -8,7 +8,7 @@ That will interrupt actions like shooting. For loops use player_regularSave but local _magazineArray = [] call player_countMagazines; -PVDZ_plr_Save = [player, if (player isKindOf "PZombie_VB") then {nil} else {_magazineArray},dayz_onBack,weapons player]; +PVDZ_plr_Save = [player, if (player isKindOf "PZombie_VB") then {nil} else {_magazineArray}]; publicVariableServer "PVDZ_plr_Save"; //diag_log format["Player_forceSave with magazines: %1",_magazineArray]; diff --git a/SQF/dayz_code/compile/player_gearSet.sqf b/SQF/dayz_code/compile/player_gearSet.sqf index 6c3386cd8..37930558d 100644 --- a/SQF/dayz_code/compile/player_gearSet.sqf +++ b/SQF/dayz_code/compile/player_gearSet.sqf @@ -5,6 +5,7 @@ if (count _inventory > 0) then { _mags = _inventory select 1; dayz_onBack = if (count _inventory > 2) then { _inventory select 2 } else { "" }; + player setVariable ["dayz_onBack",dayz_onBack,true]; //Add inventory { diff --git a/SQF/dayz_code/compile/player_humanityMorph.sqf b/SQF/dayz_code/compile/player_humanityMorph.sqf index 008a6f504..2d81df18e 100644 --- a/SQF/dayz_code/compile/player_humanityMorph.sqf +++ b/SQF/dayz_code/compile/player_humanityMorph.sqf @@ -28,6 +28,7 @@ local _ConfirmedBanditKills = player getVariable ["ConfirmedBanditKills",0]; local _friendlies = player getVariable ["friendlies",[]]; local _tagSetting = player getVariable ["DZE_display_name",false]; local _radiostate = player getVariable ["radiostate",false]; +local _dayz_onBack = player getVariable ["dayz_onBack",""]; local _coins = 0; local _bankCoins = 0; local _globalCoins = 0; @@ -97,6 +98,7 @@ player setVariable ["ConfirmedBanditKills",_ConfirmedBanditKills,true]; player setVariable ["friendlies",_friendlies,true]; player setVariable ["DZE_display_name",_tagSetting,true]; player setVariable ["radiostate",_radiostate]; +player setVariable ["dayz_onBack",_dayz_onBack,true]; if (Z_SingleCurrency) then { player setVariable ["cashMoney",_coins,true]; diff --git a/SQF/dayz_code/compile/player_mutantAttack.sqf b/SQF/dayz_code/compile/player_mutantAttack.sqf new file mode 100644 index 000000000..6394004dd --- /dev/null +++ b/SQF/dayz_code/compile/player_mutantAttack.sqf @@ -0,0 +1,76 @@ +/* + DayZ Epoch mutant attack script by JasonTM + Adapted from player_zombieAttack by facoptere + and Nightstalker melee attack effects by sumraknightstalkers.cz +*/ + +local _mutant = _this; +if (isNull _mutant) exitWith {}; // Prevent errors if mutant is deleted suddenly + +local _damage = 0.5 + random (1.2); // Not sure about this. Maybe bloodsuckers should cause more damage. +local _wound = ""; +local _dir = [_mutant,player] call BIS_Fnc_dirTo; +_mutant setDir _dir; + +if (r_player_blood < (r_player_bloodTotal * 0.8)) then { + local _cnt = count (DAYZ_woundHit select 1); + local _index = floor (random _cnt); + _index = (DAYZ_woundHit select 1) select _index; + _wound = (DAYZ_woundHit select 0) select _index; +} else { + local _cnt = count (DAYZ_woundHit_ok select 1); + local _index = floor (random _cnt); + _index = (DAYZ_woundHit_ok select 1) select _index; + _wound = (DAYZ_woundHit_ok select 0) select _index; +}; + +local _pos = getPosATL player; +local _nearPlayer = false; + +{ + if (isPlayer _x && _x != player && {_x distance _pos < 100}) exitWith {_nearPlayer = true;}; +} count playableUnits; + +// Select a random attack sound +_sound = ["bloodatt0","bloodatt1","bloodatt2","bloodatt3"] call BIS_fnc_selectRandom; + +// Broadcast hit noise and animation if a player is near +if (_nearPlayer) then { + [_mutant,_sound,0,false] call dayz_zombieSpeak; + //[objNull, _mutant, rplayMove, "AmelPercMstpSnonWnonDnon_amaterUder2"] call RE; + [nil, _mutant, rSwitchMove, "AmelPercMstpSnonWnonDnon_amaterUder2"] call RE; +} else { + [_mutant,_sound,0,true] call dayz_zombieSpeak; + //_mutant playMove "AmelPercMstpSnonWnonDnon_amaterUder2"; + _mutant switchMove "AmelPercMstpSnonWnonDnon_amaterUder2"; +}; + +uiSleep 0.3; // This sleep better coordinates the UI effects below with the animation and attack sound above. + +if (DZE_BloodsuckerScreenEffect) then {cutRSC ["mutant_attack","PLAIN"];}; // the cool red slash marks that show up on screen. +"dynamicBlur" ppEffectEnable true; +"dynamicBlur" ppEffectAdjust [2]; +"dynamicBlur" ppEffectCommit 0.1; + +_pp = ppEffectCreate ["colorCorrections", 1553]; +_pp ppEffectEnable true; +_pp ppEffectAdjust [1, 1, 0, [0.1, 0.0, 0.0, 1], [1.0, 0.5, 0.5, 0.1], [0.199, 0.587, 0.114, 0.0]]; +_pp ppEffectCommit 0.1; +uiSleep 0.1; +_pp ppEffectAdjust [1, 1, 0, [0.1, 0.0, 0.0, 0.5], [1.0, 0.5, 0.5, 0.1], [0.199, 0.587, 0.114, 0.0]]; +_pp ppEffectCommit 0.3; +uiSleep 0.3; +ppEffectDestroy _pp; + +[player, _wound, _damage, _mutant, "zombie"] call fnc_usec_damageHandler; + +uiSleep 0.2; + +if (_nearPlayer) then { + [nil, _mutant, rSWITCHMOVE, ""] call RE; +} else { + _mutant switchMove ""; +}; + +uiSleep 3; +"dynamicBlur" ppEffectEnable false; \ No newline at end of file diff --git a/SQF/dayz_code/compile/player_regularSave.sqf b/SQF/dayz_code/compile/player_regularSave.sqf index 09172e247..8aa0aae24 100644 --- a/SQF/dayz_code/compile/player_regularSave.sqf +++ b/SQF/dayz_code/compile/player_regularSave.sqf @@ -15,5 +15,5 @@ local _magazineArray = (magazines player) - ["CSGAS","Hatchet_Swing","Crowbar_Swing","Machete_Swing","Bat_Swing","BatBarbed_Swing","BatNails_Swing","Fishing_Swing","Sledge_Swing"]; -PVDZ_plr_Save = [player,_magazineArray,dayz_onBack,weapons player]; +PVDZ_plr_Save = [player,_magazineArray]; publicVariableServer "PVDZ_plr_Save"; \ No newline at end of file diff --git a/SQF/dayz_code/compile/player_spawnCheck.sqf b/SQF/dayz_code/compile/player_spawnCheck.sqf index 7cff6dea9..e6aed8be5 100644 --- a/SQF/dayz_code/compile/player_spawnCheck.sqf +++ b/SQF/dayz_code/compile/player_spawnCheck.sqf @@ -21,6 +21,22 @@ dayz_maxControlledZombies = dayz_maxLocalZombies; // This variable is also used // Current loot spawns dayz_currentWeaponHolders = count (_position nearObjects ["ReammoBox",_radius]); +// Current bloodsuckers +if (DZE_Bloodsuckers) then { + local _bloodsuckers = entities "z_bloodsucker"; + dayz_currentGlobalBloodsuckers = count _bloodsuckers; + dayz_CurrentNearBloodsuckers = 0; + dayz_spawnBloodsuckers = 0; + { + if ((_x distance _position) < _radius && {alive _x}) then { + if (local _x) then { + dayz_spawnBloodsuckers = dayz_spawnBloodsuckers + 1; + }; + dayz_CurrentNearBloodsuckers = dayz_CurrentNearBloodsuckers + 1; + }; + } count _bloodsuckers; +}; + // In vehicle check local _vehicle = vehicle player; local _inVehicle = (_vehicle != player); diff --git a/SQF/dayz_code/compile/player_zombieCheck.sqf b/SQF/dayz_code/compile/player_zombieCheck.sqf index 73f891fc7..b15d05ed0 100644 --- a/SQF/dayz_code/compile/player_zombieCheck.sqf +++ b/SQF/dayz_code/compile/player_zombieCheck.sqf @@ -1,139 +1,145 @@ -private ["_attacked","_chance","_near","_targeted","_localtargets","_remotetargets","_forcedSpeed","_vehicle","_refObj", -"_multiplier","_isAir","_hearingThreshold","_sightThreshold","_type","_dist","_attackDist", -"_targetedBySight","_targetedBySound","_targets","_last","_entHeight","_pHeight","_delta","_attackResult","_cantSee","_tPos","_zPos", -"_targetAngle","_inAngle","_lowBlood","_speedMin","_speedMax"]; +// Check for near zombies and mutants and attack player -_vehicle = vehicle player; -_refObj = driver _vehicle; -_attacked = false; // at least one Z attacked the player -_near = false; -//_multiplier = 1; -_isAir = _vehicle isKindOf "Air"; -_speedMin = DZE_ZombieSpeed select 0; -_speedMax = DZE_ZombieSpeed select 1; +local _vehicle = vehicle player; +local _inVehicle = _vehicle != player; +local _refObj = driver _vehicle; +local _attacked = false; // at least one Z attacked the player +local _isAir = _vehicle isKindOf "Air"; +local _speedMin = DZE_ZombieSpeed select 0; +local _speedMax = DZE_ZombieSpeed select 1; +local _cantSee = false; { - _forcedSpeed = if ((_speedMin != _speedMax) && {(_speedMin > 0) && (_speedMax > 0)}) then {((random (DZE_ZombieSpeed select 1)) max (DZE_ZombieSpeed select 0));} else {getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "forcedSpeed");}; - //_forcedSpeed = getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "forcedSpeed"); - //_hearingThreshold = getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "hearingThreshold"); - //_sightThreshold = getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "sightThreshold"); - - if !(typeOf _x == "swarm_newBase") then { - _type = "zombie"; - if (alive _x) then { - private ["_dist","_attackDist"]; - _dist = _x distance _refObj; - _group = _x; - _chance = 1; //0 / dayz_monitorPeriod; // Z verbosity - _targetedBySight = false; - _targetedBySound = false; - _localtargets = _group getVariable ["localtargets",[]]; - _remotetargets = _group getVariable ["remotetargets",[]]; - _targets = _localtargets + _remotetargets; - - if (_x distance player >= (dayz_areaAffect*2)) then { - if (speed _x < 4) then { - [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; - } else { - [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; - }; + local _isZombie = _x isKindOf "zZombie_base"; + local _isMutant = (DZE_Bloodsuckers && {typeOf _x == "z_bloodsucker"}); + local _forcedSpeed = if ((_speedMin != _speedMax) && {(_speedMin > 0) && (_speedMax > 0)}) then {((random (DZE_ZombieSpeed select 1)) max (DZE_ZombieSpeed select 0));} else {getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "forcedSpeed");}; + local _dist = _x distance _refObj; + local _chance = 1; //0 / dayz_monitorPeriod; // Z verbosity + local _targetedBySight = false; + local _targetedBySound = false; + local _localtargets = _x getVariable ["localtargets",[]]; + local _remotetargets = _x getVariable ["remotetargets",[]]; + local _targets = _localtargets + _remotetargets; + + if (_isMutant) then { + if (_dist <= 5) then { + local _skin = _x getVariable ["mutantSkin", "act_krovosos_new1"]; // Set textures locally on each client to prevent issues with RESec + _x setObjectTexture [0, format["\nst\ns_mutants\blood\%1.paa",_skin]]; + } else { + _x setObjectTexture [0, ""]; + local _sound = ["bloodgrowl0","bloodgrowl2","bloodgrowl3","bloodgrowl4","bloodforest1","bloodforest2","bloodforest3","bloodforest4"] call BIS_fnc_selectRandom; + [_x,_sound,(_chance + 4),false] call dayz_zombieSpeak; + }; + }; + + if (_isZombie) then { + if (_x distance _refObj >= (dayz_areaAffect*2)) then { + if (speed _x < 4) then { + [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; + } else { + [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; }; - - if (_x distance _refObj >= 3.3) then {_x setVariable ["speedLimit",_forcedSpeed,false];}; - //if (!local _x) then { - if (_refObj in _targets) then { - _last = _x getVariable ["lastAttack", 0]; - _entHeight = (getPosATL _x) select 2; - _pHeight = (getPosATL _refObj) select 2; - _delta = _pHeight - _entHeight; - _x setVariable ["speedLimit", 0, false]; - - if (_x distance _refObj <= 3) then { - //Force AI to Stand - _x setUnitPos "UP"; - if !(animationState _x == "ZombieFeed") then { - if (((diag_tickTime - _last) > 1.5) && ((_delta < 1.5) && (_delta > -1.5))) then { - _cantSee = [_x,_refObj] call dayz_losCheck; - if (!_cantSee) then { - _attackResult = [_x, _type] spawn player_zombieAttack; - _x setVariable ["lastAttack", diag_tickTime]; - }; + }; + if (_dist >= 3.3) then {_x setVariable ["speedLimit",_forcedSpeed,false];}; + }; + + if (_refObj in _targets) then { + if (_isZombie) then {_x setVariable ["speedLimit", 0, false];}; + + if (_dist <= 3) then { + //Force AI to Stand + _x setUnitPos "UP"; + if !(animationState _x == "ZombieFeed") then { + local _last = _x getVariable ["lastAttack", 0]; + local _entHeight = (getPosATL _x) select 2; + local _pHeight = (getPosATL _refObj) select 2; + local _delta = _pHeight - _entHeight; + if (((diag_tickTime - _last) > 1.5) && ((_delta < 1.5) && (_delta > -1.5))) then { + _cantSee = [_refObj,_x] call dayz_losCheck; + if (!_cantSee) then { + if (_isZombie) then { + [_x, "zombie"] spawn player_zombieAttack; + } else { + local _noAttack = (DZE_MutantHeartProtect && {_refObj hasWeapon "ItemMutantHeart"}); + if (!_noAttack && !_inVehicle) then { + _x spawn player_mutantAttack; }; }; - } else { - _x setVariable ["speedLimit", _forcedSpeed, false]; + _x setVariable ["lastAttack", diag_tickTime]; }; - _attacked = true; - } else { - _x setVariable ["speedLimit", _forcedSpeed, false]; }; - //}; - - //Block all target atteps while in a vehicle - if (!_isAir) then { - if !(_refObj in _targets) then { - //Noise Activation (zed is within players audial projection) - if (_dist < DAYZ_disAudial) then { - if (DAYZ_disAudial > 80) then { + }; + } else { + if (_isZombie) then {_x setVariable ["speedLimit", _forcedSpeed, false];}; + }; + _attacked = true; + } else { + if (_isZombie) then {_x setVariable ["speedLimit", _forcedSpeed, false];}; + }; + + //Block all target attempts while in an aircraft + if (!_isAir) then { + if !(_refObj in _targets) then { + //Noise Activation (zed is within players audial projection) + if (_dist < DAYZ_disAudial) then { + if (DAYZ_disAudial > 80) then { + _targetedBySound = true; + } else { + //if (DAYZ_disAudial > 6) then { + _chance = [_x,_dist,DAYZ_disAudial] call dayz_losChance; + //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); + if ((random 1) < _chance) then { + //make sure the player isnt behind a building or wall if target is in the open always target if player is making too much noise + _cantSee = [_refObj,_x] call dayz_losCheck; + if (!_cantSee) then { _targetedBySound = true; } else { - //if (DAYZ_disAudial > 6) then { - _chance = [_x,_dist,DAYZ_disAudial] call dayz_losChance; - //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); - if ((random 1) < _chance) then { - //make sure the player isnt behind a building or wall if target is in the open always target if player is making too much noise - _cantSee = [_refObj,_x] call dayz_losCheck; - if (!_cantSee) then { - _targetedBySound = true; - } else { - if (_dist < (DAYZ_disAudial / 2)) then {_targetedBySound = true;}; - }; - }; - //}; + if (_dist < (DAYZ_disAudial / 2)) then {_targetedBySound = true;}; }; }; - - //Sight Activation - if (_dist < DAYZ_disVisual ) then { - _chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; - if ((random 1) < _chance) then { - _tPos = getPosASL _vehicle; - _zPos = getPosASL _x; - _targetAngle = 30; - _inAngle = [_zPos,(direction _x),_targetAngle,_tPos] call fnc_inAngleSector; - if (_inAngle) then { - _cantSee = [_refObj,_x] call dayz_losCheck; - if (!_cantSee) then {_targetedBySight = true;}; - }; - }; - }; + //}; }; }; - if (_targetedBySight or _targetedBySound) then { - [_x, "spotted", 0, false] call dayz_zombieSpeak; - //diag_log format["Zombie: %1, Distance: %2, Target Reason: Sight-%3,%5/Sound-%4,%6",(typeof _x),_dist,_targetedBySight,_targetedBySound,DAYZ_disVisual,DAYZ_disAudial]; - - switch (local _x) do { - case false: { - _remotetargets set [count _remotetargets,_refObj]; - _x setVariable ["remotetargets",_remotetargets,true]; + //Sight Activation + if (_dist < DAYZ_disVisual) then { + _chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; + if ((random 1) < _chance) then { + local _tPos = getPosASL _vehicle; + local _zPos = getPosASL _x; + local _targetAngle = 30; + local _inAngle = [_zPos,(direction _x),_targetAngle,_tPos] call fnc_inAngleSector; + if (_inAngle) then { + _cantSee = [_refObj,_x] call dayz_losCheck; + if (!_cantSee) then {_targetedBySight = true;}; }; - case true: { - _localtargets set [count _localtargets,_refObj]; - _x setVariable ["localtargets",_localtargets,false]; - }; - }; + }; }; }; }; + + if (_targetedBySight || _targetedBySound) then { + local _sound = ["spotted","bloodgrowl1"] select _isMutant; + [_x, _sound, 0, false] call dayz_zombieSpeak; + //diag_log format["Zombie: %1, Distance: %2, Target Reason: Sight-%3,%5/Sound-%4,%6",(typeof _x),_dist,_targetedBySight,_targetedBySound,DAYZ_disVisual,DAYZ_disAudial]; + + if (local _x) then { + _localtargets set [count _localtargets,_refObj]; + _x setVariable ["localtargets",_localtargets,false]; + } else { + _remotetargets set [count _remotetargets,_refObj]; + _x setVariable ["remotetargets",_remotetargets,true]; + }; + }; + + if (_isMutant && {DZE_BloodsuckerDeleteNearTrader && isInTraderCity}) then {deleteVehicle _x}; // Delete bloodsucker if the player is in a trader city } forEach ((getPosATL _refObj) nearEntities ["Zed_Base",100]); if (_attacked) then { if (r_player_unconscious) then { [_refObj, "scream", 6, false] call dayz_zombieSpeak; } else { - _lowBlood = (r_player_blood / r_player_bloodTotal) < 0.5; + local _lowBlood = (r_player_blood / r_player_bloodTotal) < 0.5; if (diag_ticktime - dayz_panicCooldown > 9 && _lowBlood) then { //Prevents overlapping sounds (panic tracks are 4-9s, this script is called every 1s) //50% chance every 9s @@ -143,5 +149,5 @@ if (_attacked) then { }; }; -// return true if attacked or near. if so, player_monitor will perform its ridiculous 'while true' loop faster. -(_attacked OR _near) +// return true if attacked. if so, player_monitor will perform its ridiculous 'while true' loop faster. +_attacked diff --git a/SQF/dayz_code/config.cpp b/SQF/dayz_code/config.cpp index 50a6ab9f5..60dc4615a 100644 --- a/SQF/dayz_code/config.cpp +++ b/SQF/dayz_code/config.cpp @@ -129,6 +129,9 @@ class DefaultEventhandlers { #include "Configs\RscDisplay\doorManagement\doorManagement.hpp" #include "Configs\RscDisplay\doorManagement\doorAccess.hpp" #include "Configs\RscDisplay\zscDialogs.hpp" +#include "Configs\RscDisplay\remoteVehicle.hpp" +#include "Configs\RscDisplay\vehicleKeyChanger.hpp" +#include "Configs\RscDisplay\virtualGarage.hpp" //#include "Configs\RscDisplay\tradermenu.hpp" class CfgTasks diff --git a/SQF/dayz_code/configVariables.sqf b/SQF/dayz_code/configVariables.sqf index bba4f3b6d..9a87806f8 100644 --- a/SQF/dayz_code/configVariables.sqf +++ b/SQF/dayz_code/configVariables.sqf @@ -3,6 +3,86 @@ // To change a variable copy paste it in the mission init.sqf below the #include line. // Standard DayZ variables are found in dayz_code\init\variables.sqf. +// Both +dayz_infectiouswaterholes = true; //Enable infected waterholes +dayz_townGenerator = false; // Spawn vanilla map junk instead of Epoch DynamicDebris. Currently only compatible with Chernarus. Also enables comfrey plant spawner which negatively impacts performance. +dayz_townGeneratorBlackList = []; // If townGenerator is enabled it will not spawn junk within 150m of these positions. Example for Chernarus traders: [[4053,11668,0],[11463,11349,0],[6344,7806,0],[1606,7803,0],[12944,12766,0],[5075,9733,0],[12060,12638,0]] +DZE_HeliLift = true; // Enable Epoch heli lift system +DZE_GodModeBaseExclude = []; //Array of object class names excluded from the god mode bases feature +DZE_NoVehicleExplosions = false; //Disable vehicle explosions to prevent damage to objects by ramming. Doesn't work with amphibious pook which should not be used due to FPS issues. +DZE_SafeZoneZombieLoot = false; // Enable spawning of Zombies and loot in positions listed in DZE_SafeZonePosArray? +dayz_ForcefullmoonNights = false; // Forces night time to be full moon. +infectedWaterHoles = []; //Needed for non-cherno maps. +DZE_GodModeBase = false; // Disables damage handler from base objects so they can't be destroyed. +dayz_spawnselection = 0; //(Chernarus only) Turn on spawn selection 0 = random only spawns, 1 = spawn choice based on limits +dayz_classicBloodBagSystem = false; // disable blood types system and use the single classic ItemBloodbag +dayz_enableFlies = true; // Enable flies on dead bodies (negatively impacts FPS). + +// Death Messages +DZE_DeathMsgChat = "none"; //"none","global","side","system" Display death messages in selected chat channel. +DZE_DeathMsgDynamicText = false; // Display death messages as dynamicText in the top left with weapon icons. +DZE_DeathMsgRolling = false; // Display death messages as rolling messages in bottom center of screen. + +// ZSC +Z_SingleCurrency = false; // Enable single currency system. + +if (Z_SingleCurrency) then { + Z_globalBanking = false; // Enable global banking system. + Z_persistentMoney = false; // Enabling this stores currency to player_data instead of character_data. Currency transfers to a new character after death. For PVE servers only. Formerly called "GlobalMoney". + CurrencyName = "Coins"; // If using single currency this is the currency display name. + DZE_MoneyStorageClasses = ["VaultStorage","VaultStorage2","VaultStorageLocked","VaultStorage2Locked","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorage","LockboxStorage2","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","LockboxStorageWinter","LockboxStorageWinter2","TallSafe","TallSafeLocked"]; // If using single currency this is an array of object classes players can store coins in. E.g.: ["GunRack_DZ","WoodCrate_DZ"] + ZSC_VehicleMoneyStorage = true; // Allow players to store money in vehicles. If vehicles are destroyed the money is also destroyed. +}; + +Z_VehicleDistance = 40; // Max distance a vehicle can be sold or accessed from at a trader. + +// Vehicle Key Changer +DZE_VehicleKey_Changer = false; // Enable Vehicle Key Changer. Create or change the key for a vehicle. + +// Virtual Garage +DZE_Virtual_Garage = false; // Enable the Virtual Garage to store vehicles. + +// Plot Management and Plot for Life +DZE_permanentPlot = true; // Plot ownership saves after death. Enables Plot for Life by @RimBlock and Plot Management by @DevZupa. +DZE_isRemovable = ["Plastic_Pole_EP1_DZ"]; //Items that can be removed with a crowbar with no ownership or access required. To forbid base take overs remove plot pole from this list and add it to DZE_restrictRemoval. It is not necessary to add wrecks or items that inherit from 'BuiltItems' to this list. + +// Door Management +DZE_doorManagement = true; // Enable Door Management by @DevZupa. + +// Group System +dayz_groupSystem = false; // Enable group system + +// Bury and Butcher Bodies +DZE_Bury_Body = false; // Enable Bury Bodies +DZE_Butcher_Body = false; // Enable Butcher Bodies + +// Weather +DZE_Weather = 2; // Options: 1 - Summer Static, 2 - Summer Dynamic, 3 - Winter Static, 4 - Winter Dynamic. If static is selected, the weather settings will be set at server startup and not change. Weather settings can be adjusted with array DZE_WeatherVariables. + +// The settings in the array below may be adjusted as desired. The default settings are designed to maximize client and server performance. +// Having several features enabled at once might have adverse effects on client performance. For instance, you could have snowfall, ground fog, and breath fog threads all running at once. +DZE_WeatherVariables = [ + 15, // Minimum time in minutes for the weather to change. (default value: 15). + 30, // Maximum time in minutes for the weather to change. (default value: 30). + 0, // Minimum fog intensity (0 = no fog, 1 = maximum fog). (default value: 0). + .2, // Maximum fog intensity (0 = no fog, 1 = maximum fog). (default value: 0.8). + 0, // Minimum overcast intensity (0 = clear sky, 1 = completely overcast). (default value: 0). Note: Rain and snow will not occur when overcast is less than 0.70. + .6, // Maximum overcast intensity (0 = clear sky, 1 = completely overcast). (default value: 1). + 0, // Minimum rain intensity (0 = no rain, 1 = maximum rain). Overcast needs to be at least 70% for it to rain. + .6, // Maximum rain intensity (0 = no rain, 1 = maximum rain). Overcast needs to be at least 70% for it to rain. + 0, // Minimum wind strength (default value: 0). + 3, // Maximum wind strength (default value: 5). + .25, // Probability for wind to change when weather changes. (default value: .25). + 1, // Minimum snow intensity (0 = no snow, 1 = maximum snow). Overcast needs to be at least 75% for it to snow. + 1, // Maximum snow intensity (0 = no snow, 1 = maximum snow). Overcast needs to be at least 75% for it to snow. + .2,// Probability for a blizzard to occur when it is snowing. (0 = no blizzards, 1 = blizzard all the time). (default value: .2). + 10, // Blizzard interval in minutes. Set to zero to have the blizzard run for the whole interval, otherwise you can set a custom time interval for the blizzard. + 0, // Ground Fog Effects. Options: 0 - no ground fog, 1 - only at evening, night, and early morning, 2 - anytime, 3 - near cities and towns, at late evening, night, and early morning, 4 - near cities and towns, anytime. + 400, // Distance in meters from player to scan for buildings to spawn ground fog. By default, only the 15 nearest buildings will spawn ground fog. + false, // Allow ground fog when it's snowing or raining? + 2 // Winter Breath Fog Effects. Options: 0 - no breath fog, 1 - anytime, 2 - only when snowing or blizzard. Note: breath fog is only available with winter weather enabled. +]; + //Server if (isServer) then { DynamicVehicleDamageLow = 0; // Min damage random vehicles can spawn with @@ -23,6 +103,20 @@ if (isServer) then { // ZSC Z_globalBankingTraders = false; // Enable banking NPCs at trader cities. + + // Safe Zone Relocating + DZE_SafeZone_Relocate = false; //Enables relocating of vehicles left in Safe Zones over a server restart. + + if (DZE_VehicleKey_Changer) then { + vkc_clearAmmo = true; // Clear the ammo of vehicles after they have been rekeyed/claimed? (stops users getting a free rearm) + vkc_disableThermal = [""]; // Array of vehicle config classes as well as vehicle classnames to disable thermal on when being spawned. i.e: ["All","Land","Air","Ship","StaticWeapon","AH1Z","MTVR"]; + }; + + if (DZE_Virtual_Garage) then { + vg_clearAmmo = true; // Clear the ammo of vehicles spawned during the same restart they are stored? (stops users storing a vehicle for a free rearm) + vg_disableThermal = []; // Array of vehicle config classes as well as vehicle classnames to disable thermal on when being spawned. i.e: ["All","Land","Air","Ship","StaticWeapon","AH1Z","MTVR"]; + vg_sortColumn = 0; //0 or an out of range value sorts by the default column 'DisplayName', otherwise 1 = 'DateStored', 2 = 'id', 3 = 'Name' (of storing player), 4 = 'DateMaintained' + }; }; // Client @@ -145,89 +239,253 @@ if (!isDedicated) then { DZE_Bandit = -5000; // Defines the value at how much humanity the player is classed as a bandit. // ZSC - Z_showCurrencyUI = true; // Show the currency icon on the screen when Z_SingleCurrency is enabled. - Z_showBankUI = true; // Show the banking icon on the screen when Z_globalBanking is enabled. - ZSC_bankTraders = ["Functionary1_EP1"]; // Array of trader classnames that are available for banking (i.e Functionary1_EP1), do not use _DZ classes - they are used as player skins - ZSC_limitOnBank = true; // Have a limit on the bank? (i.e true or false) limits the global banking to the number below. - ZSC_bankObjects = [""]; // Array of objects that are available for banking i.e: ["Suitcase","Info_Board_EP1","Laptop_EP1","SatPhone"] - ZSC_maxBankMoney = 500000; // Default limit for bank objects. - ZSC_defaultStorageMultiplier = 200; // Default magazine count for bank objects that don't have storage slots i.e: ["Suitcase","Info_Board_EP1","Laptop_EP1","SatPhone"] - ZSC_MaxMoneyInStorageMultiplier = 5000; // Multiplier for how much money a bank object can hold, example: 200 magazine slots in the object (or the default value above ^^) multiplied by the 5000 multiplier is 1 million coin storage. (200 * 5000 = 1,000,000 coins) - ZSC_ZombieCoins = [false,[0,1000]]; // First value activate coins on zombies, second value from 0 - 1000 coins on each zombie. Coin for zombies are handled directly in check wallet. + if (Z_SingleCurrency) then { + Z_showCurrencyUI = true; // Show the currency icon on the screen when Z_SingleCurrency is enabled. + Z_showBankUI = true; // Show the banking icon on the screen when Z_globalBanking is enabled. + ZSC_bankTraders = ["Functionary1_EP1"]; // Array of trader classnames that are available for banking (i.e Functionary1_EP1), do not use _DZ classes - they are used as player skins + ZSC_limitOnBank = true; // Have a limit on the bank? (i.e true or false) limits the global banking to the number below. + ZSC_bankObjects = [""]; // Array of objects that are available for banking i.e: ["Suitcase","Info_Board_EP1","Laptop_EP1","SatPhone"] + ZSC_maxBankMoney = 500000; // Default limit for bank objects. + ZSC_defaultStorageMultiplier = 200; // Default magazine count for bank objects that don't have storage slots i.e: ["Suitcase","Info_Board_EP1","Laptop_EP1","SatPhone"] + ZSC_MaxMoneyInStorageMultiplier = 5000; // Multiplier for how much money a bank object can hold, example: 200 magazine slots in the object (or the default value above ^^) multiplied by the 5000 multiplier is 1 million coin storage. (200 * 5000 = 1,000,000 coins) + ZSC_ZombieCoins = [false,[0,1000]]; // First value activate coins on zombies, second value from 0 - 1000 coins on each zombie. Coin for zombies are handled directly in check wallet. + }; // Loot system dayz_toolBreaking = false; //Sledgehammer, crowbar and pickaxe have a chance to break when used. dayz_knifeDulling = false; // Enable knife dulling. Knives need to be sharpened after so many uses. dayz_matchboxCount = false; // Enable match stick count. After five uses matches run out and must be replaced. dayz_waterBottleBreaking = false; // Water bottles have a chance to break when boiling and require duct tape to fix + + // Bury and Butcher Bodies + if (DZE_Bury_Body) then { + DZE_Bury_Body_Value = 30;// Amount of humanity to gain for burying a body. + }; + if (DZE_Butcher_Body) then { + DZE_Butcher_Body_Value = -30;// Amount of humanity to lose for butchering a body. + }; + + // Take Clothes + DZE_Take_Clothes = false; // Allows to take the clothing from dead players and AIs + DZE_Disable_Take_Clothes = []; // Enter the skins you do not want to be allowed to be recovered from dead bodies. E.g.: DZE_Disable_Take_Clothes = ["Doctor_DZ","Assistant_DZ","Worker1_DZ"]; + + /* + DZE_CLICK_ACTIONS + This is where you register your right-click actions + FORMAT -- (no comma after last array entry) + [_classname,_text,_execute,_condition], + PARAMETERS + _classname : the name of the class to click on (example = "ItemBloodbag") + _text : the text for the option that is displayed when right clicking on the item (example = "Self Transfuse") + _execute : compiled code to execute when the option is selected (example = "execVM 'my\scripts\self_transfuse.sqf';") + _condition : compiled code evaluated to determine whether or not the option is displayed (example = {true}) + */ + + DZE_CLICK_ACTIONS = [ + /* ["ItemGPS",localize "STR_CL_CA_SCAN_NEARBY","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_ZOMBIE_COUNT = count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]); CA_MAN_COUNT = count ((position player) nearEntities ['CAManBase',CA_GPS_RANGE]); format[localize 'STR_CL_CA_SCAN',CA_GPS_RANGE,CA_MAN_COUNT - CA_ZOMBIE_COUNT,count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]),count ((position player) nearEntities ['allVehicles',CA_GPS_RANGE]) - CA_MAN_COUNT] call dayz_rollingMessages;","true"], + ["ItemGPS",localize "STR_CL_CA_RANGE_UP","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE + 100) min 2500; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"], + ["ItemGPS",localize "STR_CL_CA_RANGE_DOWN","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE - 100) max 1000; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"] + */ + ]; + + DZE_Remote_Vehicle = false; // Enable/Disable the Remote Vehicle options like ejecting players from a vehicle or lock/unlock the vehicle from the distance just by the key. + + if (DZE_Remote_Vehicle) then { + DZE_CLICK_ACTIONS = DZE_CLICK_ACTIONS + [ + ["ItemKey",localize "STR_CL_RV_CA_EJECT","spawn remoteVehicle;","true",1], + ["ItemKey",localize "STR_CL_RV_CA_ENGINE","spawn remoteVehicle;","true",2], + ["ItemKey",localize "STR_CL_RV_CA_UNLOCK","spawn remoteVehicle;","true",3], + ["ItemKey",localize "STR_CL_RV_CA_LOCK","spawn remoteVehicle;","true",4], + ["ItemKey",localize "STR_CL_RV_CA_LIGHTS","spawn remoteVehicle;","true",5] + ]; + }; + + DZE_LocateVehicle = false; // Enable/Disable the option to locate a vehicle from a key in the inventory with a rightclick on the GPS. + + if (DZE_LocateVehicle) then { + DZE_CLICK_ACTIONS = DZE_CLICK_ACTIONS + [ + ["ItemGPS",localize "STR_CL_LV_LOCATE_VEHICLES","[] spawn locateVehicle;","true"] + ]; + }; + + if (DZE_VehicleKey_Changer) then { + vkc_claimPrice = 1000; // Amount in worth for claiming a vehicle. See the top of this script for an explanation. + vkc_changePrice = 5000; // Amount in worth for changing the key for a vehicle. See the top of this script for an explanation. + }; + + if (DZE_Virtual_Garage) then { + vg_list = ["Plastic_Pole_EP1_DZ"]; // List of objects/traders that are allowed to interact with virtual garage. i.e: ["Plastic_Pole_EP1_DZ","Worker2"]; + vg_blackListed = []; // Array of vehicle config classes as well as vehicle classnames that are blacklisted from being stored, i.e ["All","Land","Air","Ship","StaticWeapon","AH1Z","MTVR"] + vg_heliPads = ["Helipad_Civil_DZ","Helipad_Rescue_DZ","Helipad_Army_DZ","Helipad_Cross_DZ","Helipad_ParkBorder_DZ"]; // Array of heli pad classnames + vg_store_keyless_vehicles = false; // Allow storing of keyless vehicle (map or mission spawned) + vg_removeKey = true; // Remove the key from the players inventory after storing vehicle? + vg_requireKey = true; // Require the player to have the key when storing a locked vehicle. + vg_storeWithGear = true; // Allow storing vehicles with gear? + vg_tiedToPole = true; // Tie the virtual garage to a local plot pole? If no plot pole is present (i.e a communal garage at a trader etc) the players UID will be used. + vg_pricePer = 100; // Price in worth to store a vehicle per gear item, use 0 if you want it to be free. + vg_maintainCost = 10000; //cost is 1000 per 10oz gold, gem cost is as defined in DZE_GemWorthArray; if you use ZSC then this is an amount of coins. This is a flate rate for all vehicles in the garage/per player depending on vg_tiedToPole + vg_price = [["Land",500],["Air",500],["Ship",500]]; + /* + vg_price can be an array of vehicle config classes as well as vehicle classnames, you need to put these in order of what you prefer to get checked first. + Price is in worth for briefcases or coins for gold based servers (10,000 worth is considered 1 briefcase, 100,000 coins is considered 1 briefcase) + + i.e: + vg_price = [["Land",500],["Air",300],["Ship",100]]; + vg_price = [["350z_red",200],["Land",500],["AH1Z",1000],["Air",300],["Ship",100]]; + */ + vg_limit = [["Land",5],["Air",5],["Ship",5]]; + /* + vg_limit can be an array of vehicle config classes and classnames to narrow down what players can store or it can be a numerical value for a total limit. + These can be classnames as well as config classnames, you need to put these in order of what you prefer to get checked first. + + i.e: + vg_limit = [["Land",5],["Air",3],["Ship",1]]; + vg_limit = [["350z_red",2],["Land",5],["AH1Z",1],["Air",3],["Ship",1]]; + vg_limit = 5; + */ + }; + + // Bloodsuckers + DZE_Bloodsuckers = false; // Enable bloodsucker spawning. + + if (DZE_Bloodsuckers) then { + DZE_BloodsuckerChance = .15; // Chance that a building will spawn a bloodsucker. Default .15 (15%) + DZE_BloodsuckerBuildings = ["Land_Hlidac_budka","Land_Mil_Guardhouse","Land_Mil_Barracks","Land_Mil_House","Land_Mil_Barracks_i","CrashSite_RU","CrashSite_US","CrashSite_EU","CrashSite_UN"]; // Bloodsuckers will spawn near these building classes. + DZE_BloodsuckersMaxGlobal = 15; // Maximum number of bloodsuckers allowed on the map at one time. + DZE_BloodsuckersMaxNear = 3; // Maximum number of bloodsuckers allowed in any 200 meter area. + DZE_BloodsuckersMaxLocal = 2; // Maximum number of bloodsuckers that can spawn per client. + DZE_BloodsuckerScreenEffect = true; // On screen slash marks when the bloodsuckers attack. + DZE_BloodsuckerDeleteNearTrader = true; // Deletes bloodsuckers when near trader cities. + DZE_MutantHeartProtect = true; // Disables targeting and attack if the player has a mutant heart in inventory. + }; + + // Garage Door Opener + DZE_GarageDoor_Opener = false; // Enables the option to open Garage Doors from the inside of a vehicle. + + if (DZE_GarageDoor_Opener) then { + DZE_GarageDoors = ["CinderWallDoorLocked_DZ","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ","Land_DZE_WoodGateLocked","CinderGateLocked_DZ","Land_DZE_WoodOpenTopGarageLocked","CinderGarageOpenTopLocked_DZ"]; // Array of Garage Doors that can be opened. + DZE_GarageDoor_Radius = 30; // Radius from where the Garage Doors can be opened. Higher values may negatively impact the performance + }; + + // Service Points for Refuel, Repair and Rearm + DZE_Service_Points = false; + + if (DZE_Service_Points) then { + // Valid vehicle config classes as an example: "Air", "AllVehicles", "All", "APC", "Bicycle", "Car", "Helicopter", "Land", "Motorcycle", "Plane", "Ship", "Tank" + DZE_SP_Classes = ["Map_A_FuelStation_Feed","Land_A_FuelStation_Feed","FuelPump_DZ"]; // service point classes, You can also use dayz_fuelpumparray by its self for all the default fuel pumps. + DZE_SP_MaxDistance = 50; // maximum distance from a service point for the options to be shown + + // Refuel Settings + DZE_SP_Refuel_Enable = true; // enable or disable the refuel option + if (DZE_SP_Refuel_Enable) then { + DZE_SP_Refuel_Costs = [ + //["Ship",localize "str_temp_param_disabled"], // All vehicles are disabled to refuel. + ["Land",localize "strwffree"], // All vehicles are free to refuel. + ["Air",1000] //1000 worth is 1 10oz gold for all air vehicles + ]; + DZE_SP_Refuel_UpdateInterval = 1; // update interval (in seconds) + DZE_SP_Refuel_Amount = 0.05; // amount of fuel to add with every update (in percent) + }; + + + // Repair Settings + DZE_SP_Repair_Enable = true; // enable or disable the repair option + if (DZE_SP_Repair_Enable) then { + DZE_SP_Repair_RepairTime = 2; // time needed to repair each damaged part (in seconds) + DZE_SP_Repair_Costs = [ + ["Air",4000], // 4000 worth is 4 10oz gold. + ["AllVehicles",2000] // 2000 worth is 2 10oz gold for all other vehicles + ]; + }; + + // Rearm Settings + DZE_SP_Rearm_Enable = true; // enable or disable the rearm option + if (DZE_SP_Rearm_Enable) then { + DZE_SP_Rearm_Defaultcost = 10000; // Default cost to rearm a weapon. (10000 worth == 1 briefcase) + DZE_SP_Rearm_MagazineCount = 2; // amount of magazines to be added to the vehicle weapon + DZE_SP_Rearm_Ignore = [(localize "str_dn_horn"),(localize "str_dn_laser_designator")]; // Array of weapon display names that are ignored in the rearm listing. + /* + DZE_SP_Rearm_Costs is an array based on the AMMO type. I.e M240, MK19, PKM, PKT, M134 etc. + You can disable certain ammo types from being able to be rearmed by making the price disabled text + example: ["M134",localize "str_temp_param_disabled"] + */ + DZE_SP_Rearm_Costs = [ + [(localize "str_mn_40rnd_grad"),localize "str_temp_param_disabled"], // BM-21 Grad is disabled (ammo is broken) + [(localize "str_dn_flarelauncher"),2000], // Flares + [(localize "str_ep1_dn_smokelauncher"),2000], // Smokes + [(localize "str_dn_pk"),5000], // PKM + [(localize "str_dn_pkt"),5000], // PKT + [(localize "str_sn_m134"),5000], // M134 + [(localize "str_dn_ags30"),5000], // AGS-30 + [(localize "str_dn_dshkm"),5000], // DSHKM + [(localize "str_DN_VIKHR_CCP"),5000], // Vikhr 9A4172 + [(localize "str_baf_baf_l94a10"),5000], // L94A1 Chain Gun + [(localize "str_baf_crv70"),5000], // CRV7 + [(localize "str_baf_ctws0"),5000], // CTWS + [(localize "str_baf_m621_manual0"),5000], // M621 + [(localize "str_dn_2a38m"),5000], // 2A38M Gun + [(localize "str_dn_2a42"),5000], // 2A42 + [(localize "str_dn_2a46m"),5000], // 2A46M Cannon + [(localize "str_dn_2a46m_rocket"),5000], // 9M119M Refleks rocket + [(localize "str_dn_2a70"),5000], // 2A70 100mm + [(localize "str_dn_2a70_rocket"),5000], // 9M117M1 Arkan + [(localize "str_dn_2a72"),5000], // 2A72 30mm + [(localize "str_dn_80mmlauncher_burst"),5000], // S-8 + [(localize "str_dn_9m311laucher"),5000], // Tunguska 9M311 + [(localize "str_dn_ags17"),5000], // AGS-17 + [(localize "str_dn_d81"),5000], // D-81 + [(localize "str_dn_dt_veh"),5000], // DT + [(localize "str_dn_hellfire"),5000], // AGM-114 Hellfire + [(localize "str_dn_kord"),5000], // KORD + [(localize "str_dn_m197"),5000], // M197 + [(localize "str_dn_m240"),5000], // M240 + [(localize "str_dn_m242"),5000], // M242 + [(localize "str_dn_m256"),5000], // M256 + [(localize "str_dn_sidewinderlaucher"),5000], // AIM-9L Sidewinder + [(localize "str_dn_zis_s_53"),5000], // ZiS-S-53 + [(localize "str_ep1_dn_57mmlauncher"),5000], // S-5 + [(localize "str_ep1_dn_azp85"),5000], // AZP-23 + [(localize "str_ep1_dn_ffarlauncher"),5000], // Hydra + [(localize "str_ep1_dn_m2"),5000], // M2 Machinegun + [(localize "str_ep1_dn_m230"),5000], // M230 + [(localize "str_ep1_dn_m32_ep1"),5000], // M32 + [(localize "str_ep1_dn_mk19"),5000], // Mk19 + [(localize "str_ep1_dn_yakb"),5000], // Yak-B + [(localize "str_mn_at2_mi24d"),5000], // Falanga 3M11 + [(localize "str_mn_at5_bmp2"),5000], // Konkurs 9M113 + [(localize "str_mn_stinger"),5000], // FIM-92F Stinger + [(localize "str_mn_12rnd_mlrs"),5000], // MLRS + [(localize "str_baf_baf_l2a10"),5000], // L111A1 + [(localize "STR_DN_D10_CCP"),5000], // D-10 + [(localize "str_dn_tow"),5000], // M220 TOW + [(localize "str_dn_zu23"),5000], // ZU-23 + [(localize "str_dn_kpvt"),5000], // KPVT + [(localize "str_dn_m3p"),5000], // M3P + [(localize "str_dn_spg9"),5000], // SPG-9 + [(localize "str_dn_gau8"),5000], // GAU-8 + [(localize "str_dn_maverick"),5000], // AGM-65 Maverick + [(localize "str_dn_gbu12"),5000], // GBU-12 + [(localize "str_dn_gau12"),5000], // GAU-12 + [(localize "STR_DN_KH29_CCP"),5000], // Kh-29L + [(localize "str_dn_r73"),5000], // R-73 + [(localize "str_mn_fab250"),5000], // FAB-250 + [(localize "str_dn_gsh301"),5000], // GSh-301 + [(localize "str_mn_23mm_gsh23l"),5000], // GSh-23L + [(localize "str_sn_grenade"),5000], // Grenade + [(localize "str_mn_at9_mi24p"),5000], // Ataka-V 9M120 + [(localize "str_mn_at6_mi24v"),5000], // Shturm 9K114 + + ["SGMT",5000], // SGMT no localization available + ["M68",5000], // M68 no localization available + ["GAU-22",5000], // GAU-22 no localization available + ["GSh-30",5000], // GSh-30 no localization available + ["M60",5000], // M60 no localization available + ["GSh-30K",5000] // GSh-30K no localization available + ]; + }; + }; }; -// Both -dayz_infectiouswaterholes = true; //Enable infected waterholes -dayz_townGenerator = false; // Spawn vanilla map junk instead of Epoch DynamicDebris. Currently only compatible with Chernarus. Also enables comfrey plant spawner which negatively impacts performance. -dayz_townGeneratorBlackList = []; // If townGenerator is enabled it will not spawn junk within 150m of these positions. Example for Chernarus traders: [[4053,11668,0],[11463,11349,0],[6344,7806,0],[1606,7803,0],[12944,12766,0],[5075,9733,0],[12060,12638,0]] -DZE_HeliLift = true; // Enable Epoch heli lift system -DZE_GodModeBaseExclude = []; //Array of object class names excluded from the god mode bases feature -DZE_NoVehicleExplosions = false; //Disable vehicle explosions to prevent damage to objects by ramming. Doesn't work with amphibious pook which should not be used due to FPS issues. -DZE_SafeZoneZombieLoot = false; // Enable spawning of Zombies and loot in positions listed in DZE_SafeZonePosArray? -dayz_ForcefullmoonNights = false; // Forces night time to be full moon. -infectedWaterHoles = []; //Needed for non-cherno maps. -DZE_GodModeBase = false; // Disables damage handler from base objects so they can't be destroyed. -dayz_spawnselection = 0; //(Chernarus only) Turn on spawn selection 0 = random only spawns, 1 = spawn choice based on limits -dayz_classicBloodBagSystem = false; // disable blood types system and use the single classic ItemBloodbag -dayz_enableFlies = true; // Enable flies on dead bodies (negatively impacts FPS). - -// Death Messages -DZE_DeathMsgChat = "none"; //"none","global","side","system" Display death messages in selected chat channel. -DZE_DeathMsgDynamicText = false; // Display death messages as dynamicText in the top left with weapon icons. -DZE_DeathMsgRolling = false; // Display death messages as rolling messages in bottom center of screen. - -// ZSC -Z_SingleCurrency = false; // Enable single currency system. -Z_globalBanking = false; // Enable global banking system. -Z_persistentMoney = false; // Enabling this stores currency to player_data instead of character_data. Currency transfers to a new character after death. For PVE servers only. Formerly called "GlobalMoney". -Z_VehicleDistance = 40; // Max distance a vehicle can be sold or accessed from at a trader. -CurrencyName = "Coins"; // If using single currency this is the currency display name. -DZE_MoneyStorageClasses = ["VaultStorage","VaultStorage2","VaultStorageLocked","VaultStorage2Locked","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorage","LockboxStorage2","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","LockboxStorageWinter","LockboxStorageWinter2","TallSafe","TallSafeLocked"]; // If using single currency this is an array of object classes players can store coins in. E.g.: ["GunRack_DZ","WoodCrate_DZ"] -ZSC_VehicleMoneyStorage = true; // Allow players to store money in vehicles. If vehicles are destroyed the money is also destroyed. - -// Plot Management and Plot for Life -DZE_permanentPlot = true; // Plot ownership saves after death. Enables Plot for Life by @RimBlock and Plot Management by @DevZupa. -DZE_isRemovable = ["Plastic_Pole_EP1_DZ"]; //Items that can be removed with a crowbar with no ownership or access required. To forbid base take overs remove plot pole from this list and add it to DZE_restrictRemoval. It is not necessary to add wrecks or items that inherit from 'BuiltItems' to this list. - -// Door Management -DZE_doorManagement = true; // Enable Door Management by @DevZupa. - -// Group System -dayz_groupSystem = false; // Enable group system - -// Weather -DZE_Weather = 2; // Options: 1 - Summer Static, 2 - Summer Dynamic, 3 - Winter Static, 4 - Winter Dynamic. If static is selected, the weather settings will be set at server startup and not change. Weather settings can be adjusted with array DZE_WeatherVariables. - -// The settings in the array below may be adjusted as desired. The default settings are designed to maximize client and server performance. -// Having several features enabled at once might have adverse effects on client performance. For instance, you could have snowfall, ground fog, and breath fog threads all running at once. -DZE_WeatherVariables = [ - 15, // Minimum time in minutes for the weather to change. (default value: 15). - 30, // Maximum time in minutes for the weather to change. (default value: 30). - 0, // Minimum fog intensity (0 = no fog, 1 = maximum fog). (default value: 0). - .2, // Maximum fog intensity (0 = no fog, 1 = maximum fog). (default value: 0.8). - 0, // Minimum overcast intensity (0 = clear sky, 1 = completely overcast). (default value: 0). Note: Rain and snow will not occur when overcast is less than 0.70. - .6, // Maximum overcast intensity (0 = clear sky, 1 = completely overcast). (default value: 1). - 0, // Minimum rain intensity (0 = no rain, 1 = maximum rain). Overcast needs to be at least 70% for it to rain. - .6, // Maximum rain intensity (0 = no rain, 1 = maximum rain). Overcast needs to be at least 70% for it to rain. - 0, // Minimum wind strength (default value: 0). - 3, // Maximum wind strength (default value: 5). - .25, // Probability for wind to change when weather changes. (default value: .25). - 1, // Minimum snow intensity (0 = no snow, 1 = maximum snow). Overcast needs to be at least 75% for it to snow. - 1, // Maximum snow intensity (0 = no snow, 1 = maximum snow). Overcast needs to be at least 75% for it to snow. - .2,// Probability for a blizzard to occur when it is snowing. (0 = no blizzards, 1 = blizzard all the time). (default value: .2). - 10, // Blizzard interval in minutes. Set to zero to have the blizzard run for the whole interval, otherwise you can set a custom time interval for the blizzard. - 0, // Ground Fog Effects. Options: 0 - no ground fog, 1 - only at evening, night, and early morning, 2 - anytime, 3 - near cities and towns, at late evening, night, and early morning, 4 - near cities and towns, anytime. - 400, // Distance in meters from player to scan for buildings to spawn ground fog. By default, only the 15 nearest buildings will spawn ground fog. - false, // Allow ground fog when it's snowing or raining? - 2 // Winter Breath Fog Effects. Options: 0 - no breath fog, 1 - anytime, 2 - only when snowing or blizzard. Note: breath fog is only available with winter weather enabled. -]; - /* Developers: @@ -236,4 +494,4 @@ DZE_WeatherVariables = [ Variables that are map specific or frequently changed should be included in init.sqf by default with a corresponding if(isNil)then{}; in variables.sqf. -*/ +*/ \ No newline at end of file diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Ammo/VehicleAmmo.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Ammo/VehicleAmmo.hpp index 296e8bcd5..25a0f0a05 100644 --- a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Ammo/VehicleAmmo.hpp +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Ammo/VehicleAmmo.hpp @@ -692,4 +692,11 @@ class IRStrobe { weight = 2; }; - +class 200Rnd_40mmHE_FV510 +{ + weight = 20; +}; +class 200Rnd_40mmSABOT_FV510 +{ + weight = 20; +}; \ No newline at end of file diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/Misc.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/Misc.hpp index f656a8164..6213a8336 100644 --- a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/Misc.hpp +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/Misc.hpp @@ -64,11 +64,6 @@ class deer_stand_kit weight = 25; }; -class m240_nest_kit -{ - weight = 125; -}; - class rusty_gate_kit { weight = 80; diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/StaticWeapons.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/StaticWeapons.hpp new file mode 100644 index 000000000..352399679 --- /dev/null +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/StaticWeapons.hpp @@ -0,0 +1,100 @@ +class m240_nest_kit +{ + weight = 125; +}; +class M2_MG_Static_kit +{ + weight = 45; +}; +class M2_TriPod_MG_Static_kit +{ + weight = 35; +}; +class DSHKM_MG_Static_kit +{ + weight = 45; +}; +class DSHKM_TriPod_MG_Static_kit +{ + weight = 35; +}; +class KORD_TriPod_MG_Static_kit +{ + weight = 35; +}; +class KORD_MG_Static_kit +{ + weight = 65; +}; +class L2A1_MG_Static_kit +{ + weight = 45; +}; +class L2A1_Tripod_MG_Static_kit +{ + weight = 30; +}; +class GMG_Tripod_MG_Static_kit +{ + weight = 30; +}; +class AGS30_GrenadeLauncher_Static_kit +{ + weight = 35; +}; +class MK19_TriPod_GrenadeLauncher_Static_kit +{ + weight = 35; +}; +class GPMG_TriPod_GrenadeLauncher_Static_kit +{ + weight = 35; +}; +class M119_Artillery_Static_kit +{ + weight = 280; +}; +class D30_Artillery_Static_kit +{ + weight = 380; +}; +class SearchLight_Static_kit +{ + weight = 25; +}; +class M252_Mortar_Static_kit +{ + weight = 30; +}; +class 2b14_82mm_Mortar_Static_kit +{ + weight = 30; +}; +class Metis_Launcher_Static_kit +{ + weight = 75; +}; +class SPG9_Launcher_Static_kit +{ + weight = 75; +}; +class Stinger_Tripod_Launcher_Static_kit +{ + weight = 30; +}; +class TOW_Tripod_Launcher_Static_kit +{ + weight = 30; +}; +class Rbs70_Launcher_Static_kit +{ + weight = 130; +}; +class Igla_AntiAir_Launcher_Static_kit +{ + weight = 120; +}; +class ZU23_AntiAir_Static_kit +{ + weight = 370; +}; \ No newline at end of file diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Items/Misc.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Items/Misc.hpp index eb43d9a47..fad483b92 100644 --- a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Items/Misc.hpp +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Items/Misc.hpp @@ -140,4 +140,60 @@ class ItemPlasticParts class ItemCeramicParts { weight = 3; +}; +class ItemWeaponPartsPistol +{ + weight = 4; +}; +class ItemWeaponPartsSMG +{ + weight = 5; +}; +class ItemWeaponPartsShotgun +{ + weight = 5; +}; +class ItemWeaponPartsRifle +{ + weight = 7; +}; +class ItemWeaponPartsSniperRilfe +{ + weight = 7.5; +}; +class ItemWeaponPartsMG +{ + weight = 9; +}; +class ItemWeaponPartsUnknown +{ + weight = 8.5; +}; +class ItemWeaponPartsBad +{ + weight = 8; +}; +class ItemWeaponPartsNormal +{ + weight = 9; +}; +class ItemWeaponPartsGood +{ + weight = 9.5; +}; +class ItemWeaponPartsExecellent +{ + weight = 10; +}; +class ItemGunPowderSmall +{ + weight = 2; +}; +class ItemGunPowder +{ + weight = 8; +}; +class ItemGunPowderBig +{ + weight = 16; }; \ No newline at end of file diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/R3F_CfgWeight.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/R3F_CfgWeight.hpp index 64abe8397..9d974e259 100644 --- a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/R3F_CfgWeight.hpp +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/R3F_CfgWeight.hpp @@ -34,6 +34,7 @@ class CfgWeight #include "Magazines\Buildings\Tent.hpp" #include "Magazines\Buildings\Misc.hpp" #include "Magazines\Buildings\TripWire.hpp" + #include "Magazines\Buildings\StaticWeapons.hpp" #include "Magazines\Consumables\Fish.hpp" #include "Magazines\Consumables\Meat.hpp" diff --git a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Weapons/Rifles.hpp b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Weapons/Rifles.hpp index d602e519f..4e62f7358 100644 --- a/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Weapons/Rifles.hpp +++ b/SQF/dayz_code/external/R3F_Realism/R3F_Weight/Weapons/Rifles.hpp @@ -2282,6 +2282,30 @@ class G3_DZ { weight = 6.1; }; +class G3A3_DZ +{ + weight = 6.1; +}; +class G3A3_CCO_DZ +{ + weight = 6.2; +}; +class G3A3_Holo_DZ +{ + weight = 6.2; +}; +class G3A3_ACOG_DZ +{ + weight = 6.3; +}; +class G3_SG1_DZ +{ + weight = 6.5; +}; +class G3_SG1_Bipod_DZ +{ + weight = 6.7; +}; class SCAR_H_AK_DZ { weight = 4.5; diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index cb0135c07..19f119700 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -112,7 +112,12 @@ if (!isDedicated) then { //ui player_toggleSoundMute = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_toggleSoundMute.sqf"; player_toggleStreamerMode = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_toggleStreamerMode.sqf"; - player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_selectSlot.sqf"; + if (!isNil "DZE_CLICK_ACTIONS" && {count DZE_CLICK_ACTIONS > 0}) then { + player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\Rightclicks\ui_selectSlot_addon.sqf"; + } else { + player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\Rightclicks\ui_selectSlot_vanilla.sqf"; + DZE_CLICK_ACTIONS = nil; + }; player_selectWeapon = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_selectWeapon.sqf"; player_markMap = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_markMap.sqf"; player_gearSet = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_gearSet.sqf"; @@ -193,6 +198,53 @@ if (!isDedicated) then { fnc_radioState = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\radioState.sqf"; // Toggle radio on and off fnc_localizeMessage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_localizeMessage.sqf"; fnc_remoteMessage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_remoteMessage.sqf"; + + if (DZE_Remote_Vehicle) then { + remoteVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remoteVehicle\remoteVehicle.sqf"; + rv_vehicleInfo = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remoteVehicle\vehicleInfo.sqf"; + }; + + if (DZE_LocateVehicle) then { + locateVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\locateVehicle.sqf"; + }; + + if (DZE_VehicleKey_Changer) then { + vkc_vehicleInfo = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\vkc\vehicleInfo.sqf"; + }; + + if (DZE_Virtual_Garage) then { + player_getVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\virtualGarage\player_getVehicle.sqf"; + player_removePad = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\virtualGarage\player_removePad.sqf"; + player_storeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\virtualGarage\player_storeVehicle.sqf"; + Player_MaintainVG = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\virtualGarage\player_MaintainVG.sqf"; + vehicleInfo = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\virtualGarage\vehicleInfo.sqf"; + vg_maintainSetText = { + disableSerialization; + waituntil {!isNull (findDisplay 2800)}; + _vgDisplCtl = (findDisplay 2800) displayCtrl 2854; + if (vg_maintainCost > 0) then { + _itemText = if (Z_SingleCurrency) then {CurrencyName} else {[vg_maintainCost,true] call z_calcCurrency}; + if (Z_SingleCurrency) then { + _vgDisplCtl ctrlSetText format["%1 (%2 %3)",localize "STR_CL_VG_MAINTAIN_GARAGE",vg_maintainCost,_itemText]; + } else { + _vgDisplCtl ctrlSetText format["%1 (%2)",localize "STR_CL_VG_MAINTAIN_GARAGE",_itemText]; + }; + } else { + _vgDisplCtl ctrlSetText format["%1 (%2)",localize "STR_CL_VG_MAINTAIN_GARAGE",localize "strwffree"]; + }; + }; + }; + + if (DZE_Service_Points) then { + execVM "\z\addons\dayz_code\actions\servicePoints\init.sqf"; + }; + + // Bloodsuckers + if (DZE_Bloodsuckers) then { + player_mutantAttack = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_mutantAttack.sqf"; + mutant_generate = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\mutant_generate.sqf"; + mutant_findTarget = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\mutant_findTarget.sqf"; + }; // Weather if (DZE_Weather in [3,4]) then { diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index f10291c80..6fe423ed9 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -1,7 +1,7 @@ /**************Variables Compiled on Both Client and Server**************/ Dayz_plants = ["Dayz_Plant1","Dayz_Plant2","Dayz_Plant3"]; -DayZ_SafeObjects = ["Base_Fire_DZ","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","VaultStorage2Locked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","WinterCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","WinterLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","GunRack2_DZ","FireBarrel_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","WoodenFence_1_foundation_DZ","WoodenFence_1_frame_DZ","WoodenFence_quaterpanel_DZ","WoodenFence_halfpanel_DZ","WoodenFence_thirdpanel_DZ","WoodenFence_1_DZ","WoodenFence_2_DZ","WoodenFence_3_DZ","WoodenFence_4_DZ","WoodenFence_5_DZ","WoodenFence_6_DZ","WoodenFence_7_DZ","MetalFence_1_foundation_DZ","MetalFence_1_frame_DZ","MetalFence_halfpanel_DZ","MetalFence_thirdpanel_DZ","MetalFence_1_DZ","MetalFence_2_DZ","MetalFence_3_DZ","MetalFence_4_DZ","MetalFence_5_DZ","MetalFence_6_DZ","MetalFence_7_DZ","WoodenGate_foundation_DZ","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ","WoodGateFrame_DZ","Land_DZE_WoodGate","Land_DZE_WoodGateLocked","CinderGateFrame_DZ","CinderGate_DZ","CinderGateLocked_DZ","Metal_Drawbridge_DZ","Metal_DrawbridgeLocked_DZ","WoodTriangleWall_DZ","WoodHandrail_DZ","WoodFloorStairs_DZ","WoodPillar_DZ","Land_DZE_WoodOpenTopGarageDoor","Land_DZE_WoodOpenTopGarageLocked","CinderGarageOpenTopFrame_DZ","CinderGarageOpenTop_DZ","CinderGarageOpenTopLocked_DZ","DoorFrame_DZ","Door_DZ","DoorLocked_DZ","CinderWallWindow_DZ","CinderWallWindowLocked_DZ","CinderDoorHatch_DZ","CinderDoorHatchLocked_DZ","MetalPillar_DZ","MetalFloor_Half_DZ","MetalFloor_Quarter_DZ","GlassFloor_DZ","Concrete_Bunker_DZ","Concrete_Bunker_Locked_DZ","TallSafeLocked","Advanced_WorkBench_DZ","CookTripod_DZ","Stoneoven_DZ","Commode_DZ","Wardrobe_DZ","Fridge_DZ","Washing_Machine_DZ","Server_Rack_DZ","ATM_DZ","Armchair_DZ","Sofa_DZ","Arcade_DZ","Vendmachine1_DZ","Vendmachine2_DZ","Notebook_DZ","Water_Pump_DZ","Greenhouse_DZ","Bed_DZ","Table_DZ","Office_Chair_DZ","MetalFloor4x_DZ","GlassFloor_Half_DZ","GlassFloor_Quarter_DZ","WoodFloor4x_DZ","WoodTriangleFloor_DZ","CinderWallHalf_Gap_DZ","TentStorageWinter","TentStorageWinter0","TentStorageWinter1","TentStorageWinter2","TentStorageWinter3","TentStorageWinter4","WinterDomeTentStorage","WinterDomeTentStorage0","WinterDomeTentStorage1","WinterDomeTentStorage2","WinterDomeTentStorage3","WinterDomeTentStorage4","VaultStorageBroken","VaultStorageBroken2","TallSafeBroken","LockboxStorageBroken","LockboxStorage2Broken","LockboxStorageWinterBroken","LockboxStorageWinter2Broken","StorageCrate_DZ","CamoStorageCrate_DZ","Garage_Green_DZ","Garage_White_DZ","Garage_Brown_DZ","Garage_Grey_DZ","Helipad_Civil_DZ","Helipad_Rescue_DZ","Helipad_Army_DZ","Helipad_Cross_DZ","Helipad_ParkBorder_DZ","CCTV_DZ"]; +DayZ_SafeObjects = ["Base_Fire_DZ","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","VaultStorage2Locked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","WinterCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","WinterLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","GunRack2_DZ","FireBarrel_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","WoodenFence_1_foundation_DZ","WoodenFence_1_frame_DZ","WoodenFence_quaterpanel_DZ","WoodenFence_halfpanel_DZ","WoodenFence_thirdpanel_DZ","WoodenFence_1_DZ","WoodenFence_2_DZ","WoodenFence_3_DZ","WoodenFence_4_DZ","WoodenFence_5_DZ","WoodenFence_6_DZ","WoodenFence_7_DZ","MetalFence_1_foundation_DZ","MetalFence_1_frame_DZ","MetalFence_halfpanel_DZ","MetalFence_thirdpanel_DZ","MetalFence_1_DZ","MetalFence_2_DZ","MetalFence_3_DZ","MetalFence_4_DZ","MetalFence_5_DZ","MetalFence_6_DZ","MetalFence_7_DZ","WoodenGate_foundation_DZ","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ","WoodGateFrame_DZ","Land_DZE_WoodGate","Land_DZE_WoodGateLocked","CinderGateFrame_DZ","CinderGate_DZ","CinderGateLocked_DZ","Metal_Drawbridge_DZ","Metal_DrawbridgeLocked_DZ","WoodTriangleWall_DZ","WoodHandrail_DZ","WoodFloorStairs_DZ","WoodPillar_DZ","Land_DZE_WoodOpenTopGarageDoor","Land_DZE_WoodOpenTopGarageLocked","CinderGarageOpenTopFrame_DZ","CinderGarageOpenTop_DZ","CinderGarageOpenTopLocked_DZ","DoorFrame_DZ","Door_DZ","DoorLocked_DZ","CinderWallWindow_DZ","CinderWallWindowLocked_DZ","CinderDoorHatch_DZ","CinderDoorHatchLocked_DZ","MetalPillar_DZ","MetalFloor_Half_DZ","MetalFloor_Quarter_DZ","GlassFloor_DZ","Concrete_Bunker_DZ","Concrete_Bunker_Locked_DZ","TallSafeLocked","Advanced_WorkBench_DZ","CookTripod_DZ","Stoneoven_DZ","Commode_DZ","Wardrobe_DZ","Fridge_DZ","Washing_Machine_DZ","Server_Rack_DZ","ATM_DZ","Armchair_DZ","Sofa_DZ","Arcade_DZ","Vendmachine1_DZ","Vendmachine2_DZ","Notebook_DZ","Water_Pump_DZ","Greenhouse_DZ","Bed_DZ","Table_DZ","Office_Chair_DZ","MetalFloor4x_DZ","GlassFloor_Half_DZ","GlassFloor_Quarter_DZ","WoodFloor4x_DZ","WoodTriangleFloor_DZ","CinderWallHalf_Gap_DZ","TentStorageWinter","TentStorageWinter0","TentStorageWinter1","TentStorageWinter2","TentStorageWinter3","TentStorageWinter4","WinterDomeTentStorage","WinterDomeTentStorage0","WinterDomeTentStorage1","WinterDomeTentStorage2","WinterDomeTentStorage3","WinterDomeTentStorage4","VaultStorageBroken","VaultStorageBroken2","TallSafeBroken","LockboxStorageBroken","LockboxStorage2Broken","LockboxStorageWinterBroken","LockboxStorageWinter2Broken","StorageCrate_DZ","CamoStorageCrate_DZ","Garage_Green_DZ","Garage_White_DZ","Garage_Brown_DZ","Garage_Grey_DZ","Helipad_Civil_DZ","Helipad_Rescue_DZ","Helipad_Army_DZ","Helipad_Cross_DZ","Helipad_ParkBorder_DZ","CCTV_DZ"]; DayZ_GearedObjects = ["Car","Helicopter","Motorcycle","Ship","TentStorage_base","StashSmall_base","StashMedium_base","Plane","Tank","VaultStorage","VaultStorage2","TallSafe","LockboxStorage","LockboxStorage2","LockboxStorageWinter","LockboxStorageWinter2","TentStorage","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","GunRack_DZ","GunRack2_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","Generator_DZ","Advanced_WorkBench_DZ","CookTripod_DZ","Stoneoven_DZ","Commode_DZ","Wardrobe_DZ","Fridge_DZ","Washing_Machine_DZ","Server_Rack_DZ","ATM_DZ","Armchair_DZ","Sofa_DZ","Arcade_DZ","Vendmachine1_DZ","Vendmachine2_DZ","VaultStorageBroken","VaultStorageBroken2","TallSafeBroken","LockboxStorageBroken","LockboxStorage2Broken","LockboxStorageWinterBroken","LockboxStorageWinter2Broken","StorageCrate_DZ","CamoStorageCrate_DZ"]; dayz_typedBags = ["bloodTester","bloodBagANEG","bloodBagAPOS","bloodBagBNEG","bloodBagBPOS","bloodBagABNEG","bloodBagABPOS","bloodBagONEG","bloodBagOPOS","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"]; dayz_plant = ["pumpkin.p3d","p_helianthus.p3d","p_fiberplant_ep1.p3d"]; @@ -24,6 +24,8 @@ DZE_LockedStorage = ["VaultStorageLocked","VaultStorage2Locked","LockboxStorageL DZE_UnLockedStorage = ["VaultStorage","VaultStorage2","LockboxStorage","LockboxStorage2","LockboxStorageWinter","LockboxStorageWinter2","TallSafe"]; DZE_isNewStorage = ["OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","GunRack_DZ","GunRack2_DZ","WoodCrate_DZ","WoodCrate2_DZ","Advanced_WorkBench_DZ","CookTripod_DZ","Stoneoven_DZ","Commode_DZ","Wardrobe_DZ","Fridge_DZ","Washing_Machine_DZ","Server_Rack_DZ","ATM_DZ","Armchair_DZ","Sofa_DZ","Arcade_DZ","Vendmachine1_DZ","Vendmachine2_DZ","StorageCrate_DZ","CamoStorageCrate_DZ"]; DZE_isWreck = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1","Rubbish2"]; +DZE_StaticWeapons = ["ZU23_AntiAir_Static_DZ","Igla_AntiAir_Launcher_Static_DZ","Rbs70_Launcher_Static_DZ","TOW_Tripod_Launcher_Static_DZ","Stinger_Tripod_Launcher_Static_DZ","SPG9_Launcher_Static_DZ","Metis_Launcher_Static_DZ","2b14_82mm_Mortar_Static_DZ","M252_Mortar_Static_DZ","SearchLight_Static_DZ","D30_Artillery_Static_DZ","M119_Artillery_Static_DZ","GPMG_TriPod_GrenadeLauncher_Static_DZ","MK19_TriPod_GrenadeLauncher_Static_DZ","AGS30_GrenadeLauncher_Static_DZ","GMG_Tripod_MG_Static_DZ","L2A1_Tripod_MG_Static_DZ","L2A1_MG_Static_DZ","KORD_MG_Static_DZ","KORD_Tripod_MG_Static_DZ","DSHKM_TriPod_MG_Static_DZ","DSHKM_MG_Static_DZ","M2_TriPod_MG_Static_DZ","M2_MG_Static_DZ","M240Nest_DZ"]; +DayZ_SafeObjects = DayZ_SafeObjects + DZE_StaticWeapons; respawn_west_original = getMarkerPos "respawn_west"; //Prevent problems caused by cheaters moving respawn_west marker with setMarkerPos or deleteMarker @@ -41,7 +43,6 @@ if (isServer) then { dayz_serverPUIDArray = []; dayz_serverClientKeys = []; dayz_traps = []; - dead_bodyCleanup = []; needUpdate_objects = []; dayz_choppedTrees = []; dayz_ghostPlayers = []; @@ -208,6 +209,14 @@ if (!isDedicated) then { s_bank_dialog2 = -1; s_bank_dialog3 = -1; s_player_checkWallet = -1; + s_player_clothes = -1; + s_player_gdoor_opener = []; + s_player_gdoor_opener_ctrl = -1; + s_player_bury_human = -1; + s_player_butcher_human = -1; + s_player_copyToKey = -1; + s_player_claimVehicle = -1; + s_garage_dialog = -1; }; call dayz_resetSelfActions; @@ -264,7 +273,7 @@ if (!isDedicated) then { Dayz_meatraw = ["FoodBeefRaw","FoodMuttonRaw","FoodChickenRaw","FoodRabbitRaw","FoodBaconRaw","FoodGoatRaw","FoodDogRaw","FishRawTrout","FishRawSeaBass","FishRawTuna","FoodPotatoRaw"]; Dayz_meatcooked = ["FoodBeefCooked","FoodMuttonCooked","FoodChickenCooked","FoodRabbitCooked","FoodBaconCooked","FoodGoatCooked","FoodDogCooked","FishCookedTrout","FishCookedSeaBass","FishCookedTuna","FoodPotatoBaked"]; boil_tin_cans = ["TrashTinCan","FoodCanGriffEmpty","FoodCanBadguyEmpty","FoodCanBoneboyEmpty","FoodCanCornEmpty","FoodCanCurgonEmpty","FoodCanDemonEmpty","FoodCanFraggleosEmpty","FoodCanHerpyEmpty","FoodCanDerpyEmpty","FoodCanOrlokEmpty","FoodCanPowellEmpty","FoodCanTylersEmpty","FoodCanUnlabeledEmpty","FoodCanRusUnlabeledEmpty","FoodCanRusStewEmpty","FoodCanRusPorkEmpty","FoodCanRusPeasEmpty","FoodCanRusMilkEmpty","FoodCanRusCornEmpty","ItemSodaEmpty","ItemSodaClaysEmpty","ItemSodaDrwasteEmpty","ItemSodaFrankaEmpty","ItemSodaGrapeDrinkEmpty","ItemSodaLemonadeEmpty","ItemSodaLirikEmpty","ItemSodaLvgEmpty","ItemSodaMtngreenEmpty","ItemSodaMzlyEmpty","ItemSodaPeppsyEmpty","ItemSodaR4z0rEmpty","ItemSodaRabbitEmpty","ItemSodaRocketFuelEmpty","ItemSodaSacriteEmpty","ItemSodaSherbetEmpty","ItemSodaSmashtEmpty","FoodCanPotatoesEmpty","FoodCanBeefEmpty"]; - MeleeWeapons = ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeBaseball","MeleeBaseBallBat","MeleeBaseBallBatBarbed","MeleeBaseBallBatNails","MeleeFishingPole","MeleeSledge"]; + MeleeWeapons = ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeBaseBallBat","MeleeBaseBallBatBarbed","MeleeBaseBallBatNails","MeleeFishingPole","MeleeSledge"]; MeleeMagazines = ["Hatchet_Swing","Crowbar_Swing","Machete_Swing","Bat_Swing","BatBarbed_Swing","BatNails_Swing","Fishing_Swing","Sledge_Swing"]; MeleeAmmo = ["Hatchet_Swing_Ammo","Crowbar_Swing_Ammo","Machete_Swing_Ammo","Bat_Swing_Ammo","BatBarbed_Swing_Ammo","BatNailed_Swing_Ammo","Fishing_Swing_Ammo","Sledge_Swing_Ammo","Chainsaw_Swing_Ammo"]; Dayz_Gutting = ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnife1","ItemKnifeBlunt"]; @@ -281,7 +290,7 @@ if (!isDedicated) then { DZE_LockboxesUnlocked = ["LockboxStorage","LockboxStorage2","LockboxStorageWinter","LockboxStorageWinter2"]; DZE_REPLACE_WEAPONS = [["Crossbow","DMR","M14_EP1","SVD","SVD_CAMO","M4SPR","VSS_vintorez"],["Crossbow_DZ","DMR_DZ","M14_CCO_DZ","SVD_PSO1_DZ","SVD_PSO1_Gh_DZ","M4SPR_DZE","VSS_vintorez_DZE"]]; DZE_replaceMagazines = [["vil_20Rnd_762x51_G3"],["vil_20Rnd_762x51_G3"]]; - DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Generator_DZ","DZ_buildables","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","WinterCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","WinterLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ","M240Nest_DZ","Notebook_DZ","Water_Pump_DZ","Greenhouse_DZ","Bed_DZ","Table_DZ","VaultStorageBroken","VaultStorageBroken2","TallSafeBroken","LockboxStorageBroken","LockboxStorage2Broken","LockboxStorageWinterBroken","LockboxStorageWinter2Broken","Garage_Green_DZ","Garage_White_DZ","Garage_Brown_DZ","Garage_Grey_DZ","Helipad_Civil_DZ","Helipad_Rescue_DZ","Helipad_Army_DZ","Helipad_Cross_DZ","Helipad_ParkBorder_DZ","CCTV_DZ"]; + DZE_maintainClasses = ["StaticWeapon","ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Generator_DZ","DZ_buildables","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","WinterCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","WinterLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ","M240Nest_DZ","Notebook_DZ","Water_Pump_DZ","Greenhouse_DZ","Bed_DZ","Table_DZ","VaultStorageBroken","VaultStorageBroken2","TallSafeBroken","LockboxStorageBroken","LockboxStorage2Broken","LockboxStorageWinterBroken","LockboxStorageWinter2Broken","Garage_Green_DZ","Garage_White_DZ","Garage_Brown_DZ","Garage_Grey_DZ","Helipad_Civil_DZ","Helipad_Rescue_DZ","Helipad_Army_DZ","Helipad_Cross_DZ","Helipad_ParkBorder_DZ","CCTV_DZ"]; DZE_fueltruckarray = ["UralRefuel_TK_EP1_DZ","UralRefuel_TK_EP1_DZE1","UralRefuel_TK_EP1_DZE2","UralRefuel_TK_EP1_DZE3","UralRefuel_TK_EP1_DZE4","MtvrRefuel_DES_EP1_DZ","MtvrRefuel_DES_EP1_DZE1","MtvrRefuel_DES_EP1_DZE2","MtvrRefuel_DES_EP1_DZE3","MtvrRefuel_DES_EP1_DZE4","V3S_Refuel_TK_GUE_EP1_DZ","V3S_Refuel_TK_GUE_EP1_DZE1","V3S_Refuel_TK_GUE_EP1_DZE2","V3S_Refuel_TK_GUE_EP1_DZE3","V3S_Refuel_TK_GUE_EP1_DZE4","MtvrRefuel_DZ","MtvrRefuel_DZE1","MtvrRefuel_DZE2","MtvrRefuel_DZE3","MtvrRefuel_DZE4","KamazRefuel_DZ","KamazRefuel_DZE1","KamazRefuel_DZE2","KamazRefuel_DZE3","KamazRefuel_DZE4","T810A_ACR_REFUEL_DES_DZE","T810A_ACR_REFUEL_DES_DZE1","T810A_ACR_REFUEL_DES_DZE2","T810A_ACR_REFUEL_DES_DZE3","T810A_ACR_REFUEL_DES_DZE4","T810A_ACR_REFUEL_DZE","T810A_ACR_REFUEL_DZE1","T810A_ACR_REFUEL_DZE2","T810A_ACR_REFUEL_DZE3","T810A_ACR_REFUEL_DZE4","UralRefuel_INS_DZE","UralRefuel_INS_DZE1","UralRefuel_INS_DZE2","UralRefuel_INS_DZE3","UralRefuel_INS_DZE4","UralRefuel_CDF_DZE","UralRefuel_CDF_DZE1","UralRefuel_CDF_DZE2","UralRefuel_CDF_DZE3","UralRefuel_CDF_DZE4"]; DZE_HeliAllowToTow = ["hilux1_civil_1_open","HMMWV_Base","Lada_base","Offroad_DSHKM_base","Pickup_PK_base","SkodaBase","tractor","VWGolf","Volha_TK_CIV_Base_EP1","S1203_TK_CIV_EP1","SUV_Base_EP1","ArmoredSUV_Base_PMC","UAZ_Base","LandRover_Base","Ship"]; DZE_isDestroyableStorage = ["OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","GunRack_DZ","GunRack2_DZ","WoodCrate_DZ","WoodCrate2_DZ","Advanced_WorkBench_DZ","CookTripod_DZ","Stoneoven_DZ","Commode_DZ","Wardrobe_DZ","Fridge_DZ","Washing_Machine_DZ","Server_Rack_DZ","ATM_DZ","Armchair_DZ","Sofa_DZ","Arcade_DZ","Vendmachine1_DZ","Vendmachine2_DZ","StorageCrate_DZ","CamoStorageCrate_DZ","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4"]; diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml index 4aa5f253d..ed11d1791 100644 --- a/SQF/dayz_code/stringtable.xml +++ b/SQF/dayz_code/stringtable.xml @@ -14281,6 +14281,10 @@ Infecté Infikovaný + + Bloodsucker + Кровосос + Viral Infected Infectado Viral @@ -18302,13 +18306,31 @@ - G3 + G3A1 Assault Rifle <br/>Caliber: 7.62x51mm Sturmgewehr <br/>Kaliber: 7.62x51mm Штурмовая винтовка<br/>Калибр: 7.62x51мм + + G3A3 + + + G3A3 CCO + + + G3A3 Holo + + + G3A3 ACOG + + + G3 SG1 + + + G3 SG1 Bipod + @@ -22463,6 +22485,11 @@ %1 a été vidé, les pièces de zombies sont maintenant sur la carcasse. %1 byl zničený, zombie díly jsou nyní na kostru. + + You have carved the heart of the %1 from it's chest. + Du hast das Herz des %1 aus seiner Brust herausgeschnitten. + Вы вырезали сердце %1 из его тела. + Tame Dog Hund zähmen @@ -25541,6 +25568,11 @@ Dépecer le zombie Vykuchat Zombie + + Butcher Bloodsucker + Bloodsucker ausnehmen + Разделать Кровососа + Open %1 %1 öffnen @@ -27337,6 +27369,16 @@ Zombiehaut in einem Sack. Кожа зомби в мешке. + + Mutant Heart + Mutantenherz + Сердце мутанта + + + The heart of a mutant. It is probably worth a lot. + Das Herz eines Mutanten. Es ist möglicherweise viel wert. + Сердце мутанта. Это, наверное, многого стоит. + Combination Lock Zahlenschloss @@ -32152,6 +32194,11 @@ Währung Валюта + + Heli Pads + Helipads + Вертолётные площадки + Trade %1 %2 for %3 %4 %1 %2 für %3 %4 handeln @@ -34274,6 +34321,119 @@ Eine Kiste mit Keramikteile. Ящик с керамическими частями. + + + Gun parts (Pistol) + Waffenteile (Pistole) + + + A pile of pistol gun parts. + Ein Haufen Waffenteile einer Pistole. + + + Gun parts (SMG) + Waffenteile (SMG) + + + A pile of smg gun parts. + Ein Haufen Waffenteile einer Maschinenpistole. + + + Gun parts (Shotgun) + Waffenteile (Schrotflinte) + + + A pile of shotgun gun parts. + Ein Haufen Waffenteile einer Schrotflinte. + + + Gun parts (Rifle) + Waffenteile (Gewehr) + + + A pile of rifle gun parts. + Ein Haufen Waffenteile eines Gewehrs. + + + Gun parts (Sniper Rifle) + Waffenteile (Scharfschützengewehr) + + + A pile of sniper rifle gun parts. + Ein Haufen Waffenteile eines Scharfschützengewehrs. + + + Gun parts (MG) + Waffenteile (MG) + + + A pile of mg gun parts. + Ein Haufen Waffenteile eines Maschinengewehrs. + + + Gun parts (Unknown) + Waffenteile (Unbekannt) + + + A pile of unknown gun parts in a good condition. + Ein Haufen unbekannter Waffenteile, in einem guten Zustand. + + + Gun parts (Bad) + Waffenteile (Schlecht) + + + A pile of old gun parts in a bad condition. + Ein Haufen alter Waffenteile in einem schlechten Zustand. + + + Gun parts (Average) + Waffenteile (Normal) + + + A pile of gun parts in an average condition. + Ein Haufen Waffenteile in einem durchschnittlichen Zustand. + + + Gun parts (Good) + Waffenteile (Gut) + + + A pile of gun parts in a good condition. + Ein Haufen Waffenteile, in einem guten Zustand. + + + Gun parts (Excellent) + Waffenteile (Exzellent) + + + A pile of gun parts in an excellent condition. + Ein Haufen Waffenteile, in einem exzellenten Zustand. + + + Gun Powder (Small) + Schießpulver (Klein) + + + A small can with gun powder. Used for crafting ammunation. + Eine kleine Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann. + + + Gun Powder + Schießpulver + + + A can with gun powder. Used for crafting ammunation. + Eine Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann. + + + Gun Powder (Big) + Schießpulver (Groß) + + + A big can with gun powder. Used for crafting ammunation. + Eine große Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann. + Slugs in a can Пули в банке diff --git a/SQF/dayz_code/system/mission/server_traders/caribou.sqf b/SQF/dayz_code/system/mission/server_traders/caribou.sqf index 17c579697..bd13f45ae 100644 --- a/SQF/dayz_code/system/mission/server_traders/caribou.sqf +++ b/SQF/dayz_code/system/mission/server_traders/caribou.sqf @@ -135,6 +135,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -142,6 +144,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/chernarus11.sqf b/SQF/dayz_code/system/mission/server_traders/chernarus11.sqf index 66d84566b..ca464d481 100644 --- a/SQF/dayz_code/system/mission/server_traders/chernarus11.sqf +++ b/SQF/dayz_code/system/mission/server_traders/chernarus11.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/chernarus17.sqf b/SQF/dayz_code/system/mission/server_traders/chernarus17.sqf index e9c4c6651..bfb679373 100644 --- a/SQF/dayz_code/system/mission/server_traders/chernarus17.sqf +++ b/SQF/dayz_code/system/mission/server_traders/chernarus17.sqf @@ -179,6 +179,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -186,6 +188,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/cmr_ovaron.sqf b/SQF/dayz_code/system/mission/server_traders/cmr_ovaron.sqf index 953c43b12..5cbec6619 100644 --- a/SQF/dayz_code/system/mission/server_traders/cmr_ovaron.sqf +++ b/SQF/dayz_code/system/mission/server_traders/cmr_ovaron.sqf @@ -138,6 +138,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -145,6 +147,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/fdf_isle1_a.sqf b/SQF/dayz_code/system/mission/server_traders/fdf_isle1_a.sqf index 4144b2b9f..02cb16dd1 100644 --- a/SQF/dayz_code/system/mission/server_traders/fdf_isle1_a.sqf +++ b/SQF/dayz_code/system/mission/server_traders/fdf_isle1_a.sqf @@ -128,6 +128,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -135,6 +137,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/isladuala.sqf b/SQF/dayz_code/system/mission/server_traders/isladuala.sqf index 5cbed648c..26ddd1ca5 100644 --- a/SQF/dayz_code/system/mission/server_traders/isladuala.sqf +++ b/SQF/dayz_code/system/mission/server_traders/isladuala.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/lingor.sqf b/SQF/dayz_code/system/mission/server_traders/lingor.sqf index ea6d2c4f3..4100fb270 100644 --- a/SQF/dayz_code/system/mission/server_traders/lingor.sqf +++ b/SQF/dayz_code/system/mission/server_traders/lingor.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/namalsk.sqf b/SQF/dayz_code/system/mission/server_traders/namalsk.sqf index 7b7eaec9e..e07c5383e 100644 --- a/SQF/dayz_code/system/mission/server_traders/namalsk.sqf +++ b/SQF/dayz_code/system/mission/server_traders/namalsk.sqf @@ -88,6 +88,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/napf.sqf b/SQF/dayz_code/system/mission/server_traders/napf.sqf index 205e7354f..42fdd81f7 100644 --- a/SQF/dayz_code/system/mission/server_traders/napf.sqf +++ b/SQF/dayz_code/system/mission/server_traders/napf.sqf @@ -179,6 +179,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -186,6 +188,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/panthera2.sqf b/SQF/dayz_code/system/mission/server_traders/panthera2.sqf index 212995906..4d3deb580 100644 --- a/SQF/dayz_code/system/mission/server_traders/panthera2.sqf +++ b/SQF/dayz_code/system/mission/server_traders/panthera2.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/sauerland.sqf b/SQF/dayz_code/system/mission/server_traders/sauerland.sqf index 15d7b389d..546421266 100644 --- a/SQF/dayz_code/system/mission/server_traders/sauerland.sqf +++ b/SQF/dayz_code/system/mission/server_traders/sauerland.sqf @@ -174,6 +174,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -181,6 +183,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/smd_sahrani_a2.sqf b/SQF/dayz_code/system/mission/server_traders/smd_sahrani_a2.sqf index 625d96e38..c1e450440 100644 --- a/SQF/dayz_code/system/mission/server_traders/smd_sahrani_a2.sqf +++ b/SQF/dayz_code/system/mission/server_traders/smd_sahrani_a2.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/takistan.sqf b/SQF/dayz_code/system/mission/server_traders/takistan.sqf index 7ab157516..fde29f9b3 100644 --- a/SQF/dayz_code/system/mission/server_traders/takistan.sqf +++ b/SQF/dayz_code/system/mission/server_traders/takistan.sqf @@ -167,6 +167,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -174,6 +176,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mission/server_traders/tavi.sqf b/SQF/dayz_code/system/mission/server_traders/tavi.sqf index 6f3b16d3c..a3ee4e652 100644 --- a/SQF/dayz_code/system/mission/server_traders/tavi.sqf +++ b/SQF/dayz_code/system/mission/server_traders/tavi.sqf @@ -181,6 +181,8 @@ menu_Profiteer2 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer2 select 0) set [count (menu_Profiteer2 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Wholesaler*********/ menu_Profiteer3 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_WHOLESALE",50]], @@ -188,6 +190,8 @@ menu_Profiteer3 = [ "neutral" ]; +if (DZE_Virtual_Garage) then {(menu_Profiteer3 select 0) set [count (menu_Profiteer3 select 0), [localize "STR_EPOCH_TRADER_CATEGORY_HELI_PADS",52]];}; + /***************Banker*********/ menu_Functionary1_EP1 = [ [[localize "STR_EPOCH_TRADER_CATEGORY_CURRENCY",51]], diff --git a/SQF/dayz_code/system/mutant_agent.fsm b/SQF/dayz_code/system/mutant_agent.fsm new file mode 100644 index 000000000..09c4deca8 --- /dev/null +++ b/SQF/dayz_code/system/mutant_agent.fsm @@ -0,0 +1,719 @@ +/*%FSM*/ +/*%FSM*/ +/* +item0[] = {"init",0,250,-400.000000,-250.000000,-300.000000,-200.000000,0.000000,"init"}; +item1[] = {"End",1,250,175.000000,-250.000000,275.000000,-200.000000,0.000000,"End"}; +item2[] = {"Not_Alive",4,218,25.000000,375.000000,125.000000,425.000000,5.000000,"Not" \n "Alive"}; +item3[] = {"Nobody_Near",4,218,25.000000,525.000000,125.000000,575.000000,6.000000,"Nobody" \n "Near"}; +item4[] = {"",7,210,-29.000042,396.000000,-20.999958,404.000000,0.000000,""}; +item5[] = {"",7,210,-29.000040,470.999939,-20.999960,479.000061,0.000000,""}; +item6[] = {"",7,210,-354.000031,121.000000,-346.000000,129.000000,0.000000,""}; +item7[] = {"UnitReady",4,218,-275.000000,275.000000,-175.000000,325.000000,5.000000,"UnitReady"}; +item8[] = {"Chase",2,250,-150.000000,375.000000,-50.000000,425.000000,0.000000,"Chase"}; +item9[] = {"",7,210,-29.000006,121.000000,-20.999994,129.000000,0.000000,""}; +item10[] = {"",7,210,-29.000008,221.000000,-20.999992,229.000015,0.000000,""}; +item11[] = {"No_Target",4,218,-400.000000,450.000000,-300.000000,500.000000,3.000000,"No" \n "Target"}; +item12[] = {"",7,210,-479.000000,471.000000,-471.000000,479.000000,0.000000,""}; +item13[] = {"",7,210,-729.000000,346.000000,-721.000000,354.000000,0.000000,""}; +item14[] = {"",7,210,221.000000,396.000000,229.000000,404.000000,0.000000,""}; +item15[] = {"",7,210,221.000000,471.000000,229.000000,479.000000,0.000000,""}; +item16[] = {"Cleanup_",2,250,175.000000,200.000000,275.000000,250.000000,0.000000,"Cleanup?"}; +item17[] = {"nobody_around",4,218,175.000000,-25.000000,275.000000,25.000000,0.000000,"nobody" \n "around"}; +item18[] = {"",7,210,-104.000023,471.000000,-95.999985,479.000000,0.000000,""}; +item19[] = {"cant_see",4,218,-275.000000,575.000000,-175.000000,625.000000,2.000000,"cant" \n "see"}; +item20[] = {"Finish_Move",2,250,-275.000000,650.000000,-175.000000,700.000000,0.000000,"Finish" \n "Move"}; +item21[] = {"finished",4,218,-425.000000,650.000000,-325.000000,700.000000,1.000000,"finished"}; +item22[] = {"",7,210,-479.000000,671.000000,-471.000000,679.000000,0.000000,""}; +item23[] = {"",7,210,-29.000002,671.000000,-20.999998,679.000000,0.000000,""}; +item24[] = {"Move",2,250,-650.000000,50.000000,-550.000000,100.000000,0.000000,"Move"}; +item25[] = {"someone_here",4,218,300.000000,200.000000,400.000000,250.000000,0.000000,"someone" \n "here"}; +item26[] = {"wait",2,250,300.000000,125.000000,400.000000,175.000000,0.000000,"wait"}; +item27[] = {"time_up",4,218,300.000000,-25.000000,400.000000,25.000000,0.000000,"time" \n "up"}; +item28[] = {"",7,210,346.000000,95.999992,354.000000,104.000000,0.000000,""}; +item29[] = {"",7,210,221.000000,96.000008,229.000000,103.999977,0.000000,""}; +item30[] = {"Time_Check",4,218,425.000000,125.000000,525.000000,175.000000,0.000000,"Time" \n "Check"}; +item31[] = {"",7,210,346.000000,-79.000000,354.000000,-71.000000,0.000000,""}; +item32[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; +item33[] = {"too_long",4,4314,-425.000000,725.000000,-325.000000,775.000000,0.000000,"too long"}; +item34[] = {"",7,210,-229.000000,746.000000,-221.000000,754.000000,0.000000,""}; +item35[] = {"",7,210,-479.000000,746.000000,-471.000000,754.000000,0.000000,""}; +item36[] = {"Reset_Targeting",2,250,-525.000000,325.000000,-425.000000,375.000000,0.000000,"Reset" \n "Targeting"}; +item37[] = {"deleted",4,218,425.000000,-25.000000,525.000000,25.000000,0.000000,"deleted"}; +item38[] = {"",7,210,471.000000,-79.000000,479.000000,-71.000000,0.000000,""}; +item39[] = {"",7,210,471.000000,95.999977,479.000000,104.000023,0.000000,""}; +item40[] = {"",7,210,-104.000000,596.000000,-95.999992,604.000000,0.000000,""}; +item41[] = {"Target_Dead",4,218,-275.000000,500.000000,-175.000000,550.000000,3.000000,"Target Dead"}; +item42[] = {"",7,210,-479.000000,521.000000,-471.000000,529.000000,0.000000,""}; +item43[] = {"TimeCheck",4,218,-150.000000,275.000000,-50.000000,325.000000,2.000000,"TimeCheck"}; +item44[] = {"No_Agent",4,218,25.000000,450.000000,125.000000,500.000000,5.000000,"No Agent"}; +item45[] = {"",7,210,221.000015,546.000061,229.000000,553.999939,0.000000,""}; +item46[] = {"",7,210,-29.000042,545.999939,-20.999958,554.000061,0.000000,""}; +item47[] = {"Ready",4,218,-400.000000,-125.000000,-300.000000,-75.000000,0.000000,"Ready"}; +item48[] = {"Loiter",2,250,-400.000000,25.000000,-300.000000,75.000000,0.000000,"Loiter"}; +item49[] = {"Time_Check",4,218,-275.000000,50.000000,-175.000000,100.000000,0.000000,"Time" \n "Check"}; +item50[] = {"MoveCompleted_",4,218,-525.000000,50.000000,-425.000000,100.000000,3.000000,"MoveCompleted "}; +item51[] = {"Failed_Move",4,218,-525.000000,100.000000,-425.000000,150.000000,3.000000,"Failed Move"}; +item52[] = {"Not_moving",4,218,-525.000000,0.000000,-425.000000,50.000000,1.000000,"Not moving"}; +item53[] = {"",7,210,-604.000000,-29.000000,-596.000000,-21.000000,0.000000,""}; +item54[] = {"player_check",4,218,-275.000000,0.000000,-175.000000,50.000000,2.000000,"player" \n "check"}; +item55[] = {"True",8,218,-525.000000,-50.000000,-425.000000,0.000000,0.000000,"True"}; +item56[] = {"",7,210,-729.000000,-129.000000,-721.000000,-121.000008,0.000000,""}; +item57[] = {"InRange",4,218,-275.000000,400.000000,-175.000000,450.000000,1.000000,"InRange"}; +item58[] = {"Attacking_Wait",2,250,-400.000000,375.000000,-300.000000,425.000000,0.000000,"Attacking Wait"}; +item59[] = {"NotInRange",4,218,-275.000000,350.000000,-175.000000,400.000000,1.000000,"NotInRange"}; +item60[] = {"TimeCheck",4,218,-400.000000,275.000000,-300.000000,325.000000,0.000000,"TimeCheck"}; +item61[] = {"Has_Target",4,218,-150.000000,200.000000,-50.000000,250.000000,0.000000,"Has" \n "Target"}; +item62[] = {"Reset_MoveTo",2,250,-275.000000,200.000000,-175.000000,250.000000,0.000000,"Reset MoveTo"}; +item63[] = {"",7,210,-479.000000,-129.000000,-471.000000,-121.000000,0.000000,""}; +item64[] = {"isDedicated",4,218,-125.000000,-250.000000,-25.000000,-200.000000,0.000000,"isDedicated"}; +link0[] = {0,47}; +link1[] = {0,64}; +link2[] = {2,14}; +link3[] = {3,45}; +link4[] = {4,2}; +link5[] = {4,5}; +link6[] = {5,44}; +link7[] = {5,46}; +link8[] = {6,9}; +link9[] = {7,8}; +link10[] = {8,4}; +link11[] = {8,18}; +link12[] = {8,43}; +link13[] = {8,57}; +link14[] = {9,10}; +link15[] = {10,4}; +link16[] = {10,61}; +link17[] = {11,12}; +link18[] = {12,36}; +link19[] = {13,56}; +link20[] = {14,16}; +link21[] = {15,14}; +link22[] = {16,25}; +link23[] = {16,29}; +link24[] = {17,32}; +link25[] = {18,11}; +link26[] = {18,40}; +link27[] = {18,41}; +link28[] = {19,20}; +link29[] = {20,21}; +link30[] = {20,23}; +link31[] = {20,34}; +link32[] = {21,22}; +link33[] = {22,42}; +link34[] = {23,46}; +link35[] = {24,53}; +link36[] = {25,26}; +link37[] = {26,28}; +link38[] = {26,30}; +link39[] = {27,31}; +link40[] = {28,27}; +link41[] = {28,29}; +link42[] = {28,39}; +link43[] = {29,17}; +link44[] = {30,26}; +link45[] = {31,32}; +link46[] = {32,1}; +link47[] = {33,35}; +link48[] = {34,33}; +link49[] = {35,22}; +link50[] = {36,13}; +link51[] = {37,38}; +link52[] = {38,31}; +link53[] = {39,37}; +link54[] = {40,19}; +link55[] = {41,42}; +link56[] = {42,12}; +link57[] = {43,8}; +link58[] = {44,15}; +link59[] = {45,15}; +link60[] = {46,3}; +link61[] = {47,48}; +link62[] = {48,6}; +link63[] = {48,49}; +link64[] = {48,50}; +link65[] = {48,51}; +link66[] = {48,52}; +link67[] = {48,54}; +link68[] = {49,48}; +link69[] = {50,24}; +link70[] = {51,24}; +link71[] = {52,24}; +link72[] = {53,55}; +link73[] = {54,48}; +link74[] = {55,48}; +link75[] = {56,63}; +link76[] = {57,58}; +link77[] = {58,59}; +link78[] = {58,60}; +link79[] = {59,8}; +link80[] = {60,58}; +link81[] = {61,62}; +link82[] = {62,7}; +link83[] = {63,55}; +link84[] = {64,1}; +globals[] = {25.000000,1,0,0,0,640,480,1,193,6316128,1,-736.296082,268.705750,907.675354,265.884705,1425,910,1}; +window[] = {2,-1,-1,-1,-1,883,182,1390,182,3,1443}; +*//*%FSM*/ +class FSM +{ + fsmName = "DZE Bloodsucker Agent"; + class States + { + /*%FSM*/ + class init + { + name = "init"; + init = /*%FSM*/"_agent = _this select 0;" \n + "_position = _agent modelToWorld [0,0,0];" \n + "" \n + "_secondHand = false;" \n + "" \n + "if (count _this > 1) then {" \n + " _secondHand = true;" \n + " diag_log (""Second Hand Bloodsucker Initialized: "" + str(_this));" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class isDedicated + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"isDedicated"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Ready + { + priority = 0.000000; + to="Loiter"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(!isNil 'dayz_clientPreload' && {dayz_clientPreload}) && !(isNull _agent)"/*%FSM*/; + action=/*%FSM*/"_myDest = [_agent,_position] call zombie_loiter;" \n + "" \n + "_agent disableAI ""FSM"";" \n + "_agent setBehaviour ""CARELESS"";" \n + "_agent setSpeedMode ""FULL"";" \n + "" \n + "// hint ""Bloodsucker has spawned"";" \n + "" \n + "_isSomeone = true;" \n + "" \n + "_target = objNull;" \n + "_targetPos = [];" \n + "_entityTime = diag_tickTime;" \n + "" \n + "// Select skin" \n + "_skin = [""act_krovosos_new1"",""act_krovosos_3"",""act_krovosos_2""] call BIS_fnc_selectRandom;" \n + "_agent setVariable [""mutantSkin"",_skin, false];" \n + "" \n + "// Announce presence" \n + "[_agent,""bloodgrowl1"",0,false] call dayz_zombieSpeak;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class End + { + name = "End"; + init = /*%FSM*/"if (!isDedicated) then {" \n + " if (!isNull _agent) then {" \n + " deleteVehicle _agent;" \n + " };" \n + "} else {" \n + " [_agent] call zombie_findOwner;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + }; + }; + /*%FSM*/ + /*%FSM*/ + class Chase + { + name = "Chase"; + init = /*%FSM*/"_timeN = diag_tickTime;" \n + "" \n + "_target = _agent call mutant_findTarget;" \n + "_targetPos = getPosATL _target;" \n + "_isAlive = alive _agent;" \n + "_isTargetAlive = alive _target;" \n + "" \n + "//Move to location" \n + "_agent moveTo _targetPos;" \n + "" \n + "//Check if LOS" \n + "if ((_agroCheck % 8) == 0) then {" \n + " _agroCheck = 0;" \n + " _cantSee = [_target,_agent] call dayz_losCheck;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Nobody_Near + { + priority = 6.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Not_Alive + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isAlive"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class No_Agent + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class No_Target + { + priority = 3.000000; + to="Reset_Targeting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _target) && ((diag_tickTime - _timeN) > 5)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Target_Dead + { + priority = 3.000000; + to="Reset_Targeting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isTargetAlive"/*%FSM*/; + action=/*%FSM*/"_timeN = diag_tickTime;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class cant_see + { + priority = 2.000000; + to="Finish_Move"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_cantSee"/*%FSM*/; + action=/*%FSM*/"// diag_log (""Mutant Cant See Target"");"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class TimeCheck + { + priority = 2.000000; + to="Chase"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _timeN) > 2" \n + ""/*%FSM*/; + action=/*%FSM*/"_agroCheck= _agroCheck + 1;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class InRange + { + priority = 1.000000; + to="Attacking_Wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_agent distance _targetPos < 3.1"/*%FSM*/; + action=/*%FSM*/"_agent stop true;" \n + "" \n + "_myDest = [ _agent modelToWorld [0,0,0]];" \n + "" \n + "_agent setVariable [""myDest"",(_agent modelToWorld [0,0,0])];" \n + "" \n + "_agroCheck= 0;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Cleanup_ + { + name = "Cleanup_"; + init = /*%FSM*/"_waitStart = diag_tickTime;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class nobody_around + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class someone_here + { + priority = 0.000000; + to="wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Finish_Move + { + name = "Finish_Move"; + init = /*%FSM*/"_timeN = diag_tickTime;" \n + "" \n + "_isSomeone = false;" \n + "{" \n + " if (isPlayer _x && {_x distance _agent < 300}) exitWith {_isSomeone = true;};" \n + "} count playableUnits;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Nobody_Near + { + priority = 6.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class finished + { + priority = 1.000000; + to="Reset_Targeting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_agent distance _targetPos < 3"/*%FSM*/; + action=/*%FSM*/"//diag_log (""Finished"");"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class too_long + { + priority = 0.000000; + to="Reset_Targeting"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _timeN) > 20"/*%FSM*/; + action=/*%FSM*/"//diag_log (""Mutant Cant See Timeout"");"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Move + { + name = "Move"; + init = /*%FSM*/"_myDest = [_agent,_position] call zombie_loiter;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class True + { + priority = 0.000000; + to="Loiter"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class wait + { + name = "wait"; + init = /*%FSM*/"_isSomeone = false;" \n + "{" \n + " if (isPlayer _x && {_x distance _agent < 300}) exitWith {_isSomeone = true;};" \n + "} count playableUnits;" \n + "" \n + "_timeN = diag_tickTime;" \n + "" \n + "//diag_log (""Waiting until players are not near to delete bloodsucker, or timeout"");"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class time_up + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _waitStart) > 300"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class nobody_around + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class deleted + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"isNull _agent;"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Time_Check + { + priority = 0.000000; + to="wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _timeN) > 30"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reset_Targeting + { + name = "Reset_Targeting"; + init = /*%FSM*/"//Lets move" \n + "_myDest = [_agent,_position] call zombie_loiter;" \n + "" \n + "// Reset Targets" \n + "_agent setVariable [""localtargets"", [], false];" \n + "_agent setVariable [""remotetargets"", [], true];" \n + "_target = objNull;" \n + "" \n + "// diag_log (""Mutant Targets Reset"");" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class True + { + priority = 0.000000; + to="Loiter"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Loiter + { + name = "Loiter"; + init = /*%FSM*/"_isAlive = alive _agent;" \n + "_timeN = diag_tickTime;" \n + "" \n + "//Look for target" \n + "_target = _agent call mutant_findTarget;" \n + "" \n + "if (_myDest distance (getposATL _agent) > 3) then {" \n + " _agent moveTo _myDest;" \n + "};"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Nobody_Near + { + priority = 6.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class No_Agent + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(isNull _agent)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Not_Alive + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isAlive"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Failed_Move + { + priority = 3.000000; + to="Move"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"moveToFailed _agent;"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class MoveCompleted_ + { + priority = 3.000000; + to="Move"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"moveToCompleted _agent;"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class player_check + { + priority = 2.000000; + to="Loiter"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _entityTime) > 30"/*%FSM*/; + action=/*%FSM*/"_entityTime = diag_tickTime;" \n + "" \n + "_isSomeone = false;" \n + "{" \n + " if (isPlayer _x && {_x distance _agent < 300}) exitWith {_isSomeone = true;};" \n + "} count playableUnits;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Not_moving + { + priority = 1.000000; + to="Move"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(Speed _agent == 0)" \n + ""/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Time_Check + { + priority = 0.000000; + to="Loiter"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(diag_tickTime - _timeN) > 1"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Has_Target + { + priority = 0.000000; + to="Reset_MoveTo"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _target)"/*%FSM*/; + action=/*%FSM*/"// diag_log ""Bloodsucker found target"";"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Attacking_Wait + { + name = "Attacking_Wait"; + init = /*%FSM*/"_targetPos = _target modelToWorld [0,-1,0];" \n + "" \n + "_timeN = diag_tickTime;" \n + ""/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class NotInRange + { + priority = 1.000000; + to="Chase"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_agent distance _targetPos > 3.1"/*%FSM*/; + action=/*%FSM*/"_agent stop false;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class TimeCheck + { + priority = 0.000000; + to="Attacking_Wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((diag_tickTime - _timeN) > 1)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + /*%FSM*/ + class Reset_MoveTo + { + name = "Reset_MoveTo"; + init = /*%FSM*/"_agent moveTo (_agent modelToWorld [0,0,0]);"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class UnitReady + { + priority = 5.000000; + to="Chase"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"unitReady _agent"/*%FSM*/; + action=/*%FSM*/"_myDest = [ _agent modelToWorld [0,0,0]];" \n + "_agent setVariable [""myDest"",(_agent modelToWorld [0,0,0])];" \n + "" \n + "//Lets see if we can get the AI to stop running away before heading to the player" \n + "_agent moveTo (_agent modelToWorld [0,0,0]);" \n + "" \n + "_agroCheck = 0;" \n + "_cantSee = false;"/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ + }; + initState="init"; + finalStates[] = + { + "End", + }; +}; +/*%FSM*/ \ No newline at end of file diff --git a/SQF/dayz_server/compile/garage/init.sqf b/SQF/dayz_server/compile/garage/init.sqf new file mode 100644 index 000000000..0ce53c169 --- /dev/null +++ b/SQF/dayz_server/compile/garage/init.sqf @@ -0,0 +1,54 @@ +server_queryVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\server_queryVehicle.sqf"; +server_spawnVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\server_spawnVehicle.sqf"; +server_storeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\server_storeVehicle.sqf"; +server_maintainGarage = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\server_maintainVehicles.sqf"; + +"PVDZE_queryVehicle" addPublicVariableEventHandler {(_this select 1) spawn server_queryVehicle}; +"PVDZE_spawnVehicle" addPublicVariableEventHandler {(_this select 1) spawn server_spawnVehicle}; +"PVDZE_storeVehicle" addPublicVariableEventHandler {(_this select 1) spawn server_storeVehicle}; +"PVDZE_maintainGarage" addPublicVariableEventHandler {(_this select 1) spawn server_maintainGarage}; + +// Thanks to icomrade/DayZ Epoch for this code: https://github.com/EpochModTeam/DayZ-Epoch/commit/8035df0ba0cd928b84085e288c5cb88260870a3e#diff-ad0636fc2328a27bd80bad9f46126307 +VG_RandomizeMyKey = { + _randomInput = toArray "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; + _return = []; + for "_i" from 0 to (_this) do { + _return set [count _return, (_randomInput call BIS_fnc_selectRandom)]; + }; + _return; +}; +vg_serverKey = toString (8 call VG_RandomizeMyKey); +vg_alreadySpawned = []; + +VG_ClearTurrets = { + //By denvdmj (probably, I found it on the biki) + private ["_weaponArray","_findRecurse","_class","_obj","_turret","_mags"]; + _obj = _this; + + _weaponArray = []; + _weaponArray set [count _weaponArray,[-1]]; + + _findRecurse = { + private ["_root", "_class", "_path", "_currentPath", "_thisThis"]; + _root = (_this select 0); + _path = +(_this select 1); + _thisThis = _this select 2; + for "_i" from 0 to count _root -1 do { + _class = _root select _i; + if (isClass _class) then { + _currentPath = _path + [_i]; + {_weaponArray set [count _weaponArray, _currentPath];} count getArray (_class >> "weapons"); + _class = _class >> "turrets"; + if (isClass _class) then {[_class, _currentPath, _thisThis] call _findRecurse;}; + }; + }; + }; + + [configFile >> "CfgVehicles" >> typeOf (_obj) >> "turrets", [], _this] call _findRecurse; + + { + _turret = _x; + _mags = _obj magazinesTurret _turret; + {_obj removeMagazinesTurret[_x,_turret];} count _mags; + } forEach _weaponArray; +}; diff --git a/SQF/dayz_server/compile/garage/server_maintainVehicles.sqf b/SQF/dayz_server/compile/garage/server_maintainVehicles.sqf new file mode 100644 index 000000000..f70711f6d --- /dev/null +++ b/SQF/dayz_server/compile/garage/server_maintainVehicles.sqf @@ -0,0 +1,9 @@ +private ["_player","_playerUID","_key","_message"]; +_player = _this select 0; +_playerUID = if (count _this > 1) then {_this select 1} else {getPlayerUID _player}; + +_key = format["CHILD:803:%1:",_playerUID]; +_key call server_hiveWrite; + +_message = format["GARAGE: %1 (%2) maintained vehicles linked to UID: %3 @%4 %5",if (alive _player) then {name _player} else {"DeadPlayer"},getPlayerUID _player,_playerUID,mapGridPosition _player,getPosATL _player]; +diag_log _message; diff --git a/SQF/dayz_server/compile/garage/server_queryVehicle.sqf b/SQF/dayz_server/compile/garage/server_queryVehicle.sqf new file mode 100644 index 000000000..9784acf9b --- /dev/null +++ b/SQF/dayz_server/compile/garage/server_queryVehicle.sqf @@ -0,0 +1,12 @@ +private ["_player","_query","_result","_clientID","_playerUID"]; + +_player = _this select 0; +_clientID = owner _player; +_playerUID = if (count _this > 1) then {_this select 1} else {getPlayerUID _player}; + +_key = format["CHILD:800:%1:%2:",_playerUID,vg_sortColumn]; +_result = _key call server_hiveReadWrite; + +PVDZE_queryVehicleResult = _result; + +if (!isNull _player) then {_clientID publicVariableClient "PVDZE_queryVehicleResult";}; diff --git a/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf new file mode 100644 index 000000000..df3919b7e --- /dev/null +++ b/SQF/dayz_server/compile/garage/server_spawnVehicle.sqf @@ -0,0 +1,112 @@ +private ["_isAir","_VG_ObjID","_characterID","_class","_clientID","_clrinit","_clrinit2","_colour","_colour2","_dam","_damage","_dir","_fuel","_hitpoints","_id","_inventory","_key","_location","_message","_object","_oid","_outcome","_player","_result","_selection","_serverKey","_uid","_worldSpace"]; + +_worldSpace = _this select 0; +_player = _this select 1; +_id = _this select 2; +_dir = _worldSpace select 0; +_location = _worldSpace select 1; +_worldSpace = [_dir,_location]; +_uid = _worldSpace call dayz_objectUID2; +_key = str formatText["CHILD:801:%1:%2:%3:",_id,_worldSpace,_uid]; + +_result = _key call server_hiveReadWrite; +_outcome = _result select 0; +if (_outcome != "PASS") exitWith {diag_log("HIVE VIRTUAL GARAGE SPAWN VEHICLE FAILED TO EXECUTE: " + _key);}; +_class = _result select 1; +_characterID = _result select 2; +_inventory = _result select 3; +_hitpoints = _result select 4; +_fuel = _result select 5; +_damage = _result select 6; +_colour = _result select 7; +_colour2 = _result select 8; +_serverKey = _result select 9; +_VG_ObjID = _result select 10; +_clientID = owner _player; + +if (_VG_ObjID in vg_alreadySpawned) exitWith { + diag_log format["VG ERROR: Vehicle with VGObjID = %1 has already been spawned and will not be spawned again. PlayerUID: %2", _VG_ObjID, (getPlayerUID _player)]; +}; + +_key = format["CHILD:388:%1:",_uid]; + +#ifdef OBJECT_DEBUG +diag_log ("HIVE: WRITE: "+ str(_key)); +#endif + +_result = _key call server_hiveReadWrite; +_outcome = _result select 0; + +if (_outcome != "PASS") then { + diag_log("CUSTOM: failed to get id for : " + str(_uid)); +} else { + _VG_ObjID = (toString (18 call VG_RandomizeMyKey)); //new ID + vg_alreadySpawned set [(count vg_alreadySpawned), _VG_ObjID]; + _oid = _result select 1; + + #ifdef OBJECT_DEBUG + diag_log("CUSTOM: Selected " + str(_oid)); + #endif + + _object = _class createVehicle _location; + if (surfaceIsWater _location && {({_x != _object} count (_location nearEntities ["Ship",8])) == 0}) then { + _object setPos _location; + }; + + _object addEventHandler ["HandleDamage",{false}]; + + clearWeaponCargoGlobal _object; + clearMagazineCargoGlobal _object; + if (vg_clearAmmo && {vg_serverKey == _serverKey}) then {_object call VG_ClearTurrets;}; + + _object setFuel _fuel; + _object setDamage _damage; + + [_inventory select 0,_inventory select 1,_inventory select 2,_object] call fn_addCargo; + + _object setVariable ["ObjectID", _oid, true]; + _object setVariable ["lastUpdate",diag_tickTime]; + _object setVariable ["VGObjectID",_VG_ObjID, false]; + + if (_colour != "0") then { + _object setVariable ["Colour",_colour,true]; + _clrinit = format ["#(argb,8,8,3)color(%1)",_colour]; + _object setVehicleInit "this setObjectTexture [0,"+str _clrinit+"];"; + }; + + if (_colour2 != "0") then { + _object setVariable ["Colour2",_colour2,true]; + _clrinit2 = format ["#(argb,8,8,3)color(%1)",_colour2]; + _object setVehicleInit "this setObjectTexture [1,"+str _clrinit2+"];"; + }; + + processInitCommands; + + _characterID = str(_characterID); + _object setVariable ["CharacterID", _characterID, true]; + + if (_characterID != "0" && !(_object isKindOf "Bicycle")) then {_object setVehicleLock "LOCKED";}; + _isAir = _object isKindOf "Air"; + + { + _selection = _x select 0; + _dam = _x select 1; + _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); + [_object,_selection,_dam] call fnc_veh_setFixServer; + } forEach _hitpoints; + + dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; + + _object call fnc_veh_ResetEH; + {if (_object isKindOf _x) exitWith {_object disableTIEquipment true;}} count vg_disableThermal; + + PVDZE_veh_Init = _object; + publicVariable "PVDZE_veh_Init"; + + PVDZE_spawnVehicleResult = _characterID; + + if (!isNull _player) then {_clientID publicVariableClient "PVDZE_spawnVehicleResult";}; + + _message = format["%1 (%2) retrieved %3 @%4 %5",if (alive _player) then {name _player} else {"DeadPlayer"},getPlayerUID _player,_class,mapGridPosition _player,getPosATL _player]; + diag_log _message; +}; diff --git a/SQF/dayz_server/compile/garage/server_storeVehicle.sqf b/SQF/dayz_server/compile/garage/server_storeVehicle.sqf new file mode 100644 index 000000000..3e969e079 --- /dev/null +++ b/SQF/dayz_server/compile/garage/server_storeVehicle.sqf @@ -0,0 +1,92 @@ +private ["_damageVeh","_VGobjID","_array","_backPack","_backPackCount","_charID","_class","_clientID","_colour","_colour2","_damage","_displayName","_fnc_sanitizeInput","_fuel","_gearCount","_hit","_hitpoints","_index","_inventory","_inventoryCount","_key","_magazine","_magazineCount","_message","_name","_objectID","_objectUID","_player","_playerUID","_selection","_vehicle","_weapons","_weaponsCount","_woGear"]; + +_vehicle = _this select 0; +_player = _this select 1; +_woGear = _this select 2; +_clientID = owner _player; +_playerUID = if (count _this > 3) then {_this select 3} else {getPlayerUID _player}; + +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter; +}; + +_fnc_sanitizeInput = { + private ["_input","_badChars"]; + + _input = _this; + _input = toArray (_input); + _badChars = [60,62,38,123,125,91,93,59,58,39,96,126,44,46,47,63,124,92,34]; + + { + _input = _input - [_x]; + } forEach _badChars; + + _input = toString (_input); + _input +}; + +_class = typeOf _vehicle; +_displayName = (getText(configFile >> "cfgVehicles" >> _class >> "displayName")) call _fnc_sanitizeInput; +_name = if (alive _player) then {(name _player) call _fnc_sanitizeInput;} else {"unknown player";}; + +_charID = _vehicle getVariable ["CharacterID","0"]; +_objectID = _vehicle getVariable ["ObjectID","0"]; +_objectUID = _vehicle getVariable ["ObjectUID","0"]; +_VGobjID = _vehicle getVariable ["VGObjectID","0"]; +if (_VGobjID == "0") then { + _VGobjID = (toString (18 call VG_RandomizeMyKey)); //normally spawned vehicle +} else { + _index = vg_alreadySpawned find _VGobjID; + if (_index >= 0) then { + vg_alreadySpawned = vg_alreadySpawned - [_VGobjID]; + } else { + diag_log format["VG Error: Could not find vehicle with VGobjUID = %1 in vg_alreadySpawned array (server_storeVehicle.sqf) - possible duplicate vehicle being stored. PlayerUID: %2", _VGobjID, (getPlayerUID _player)]; + }; +}; +_damageVeh = damage _vehicle; +_fuel = fuel _vehicle; +_colour = _vehicle getVariable ["Colour","0"]; +_colour2 = _vehicle getVariable ["Colour2","0"]; + +_array = []; +_inventory = [[[],[]],[[],[]],[[],[]]]; +_inventoryCount = [0,0,0]; + +if (isNil "_colour") then {_colour = "0";}; +if (isNil "_colour2") then {_colour2 = "0";}; + +_hitpoints = _vehicle call vehicle_getHitpoints; + +{ + _hit = [_vehicle,_x] call object_getHit; + _damage = _hit select 0; + _selection = getText (configFile >> "CfgVehicles" >> _class >> "HitPoints" >> _x >> "name"); + if (_damage > 0) then {_array set [count _array,[_selection,_damage]]}; +} count _hitpoints; + +if (!_woGear) then { + _weapons = getWeaponCargo _vehicle; + _magazine = getMagazineCargo _vehicle; + _backPack = getBackpackCargo _vehicle; + _weaponsCount = (_weapons select 1) call _gearCount; + _magazineCount = (_magazine select 1) call _gearCount; + _backPackCount = (_backPack select 1) call _gearCount; + _inventory = [_weapons, _magazine, _backPack]; + _inventoryCount = [_weaponsCount, _magazineCount, _backPackCount]; +}; + +_key = str formatText["CHILD:802:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:",_playerUID,_name,_displayName,_class,_charID,_inventory,_array,_fuel,_damageVeh,_colour,_colour2,vg_serverKey,_VGobjID,_inventoryCount]; +_key call server_hiveWrite; + +PVDZE_storeVehicleResult = true; + +[_objectID,_objectUID,_vehicle] call server_deleteObjDirect; +deleteVehicle _vehicle; + +if (!isNull _player) then {_clientID publicVariableClient "PVDZE_storeVehicleResult";}; + +_message = format["GARAGE: %1 (%2) stored %3 @%4 %5",_name,_playerUID,_class,mapGridPosition _player,getPosATL _player]; +diag_log _message; diff --git a/SQF/dayz_server/compile/server_playerDied.sqf b/SQF/dayz_server/compile/server_playerDied.sqf index 8fc0896c4..edad31b5a 100644 --- a/SQF/dayz_server/compile/server_playerDied.sqf +++ b/SQF/dayz_server/compile/server_playerDied.sqf @@ -85,5 +85,4 @@ if (_playerName != "unknown" || {_sourceName != "unknown"}) then { }; _newObject setDamage 1; -_newObject setOwner 0; -//dead_bodyCleanup set [count dead_bodyCleanup,_newObject]; +_newObject setOwner 0; \ No newline at end of file diff --git a/SQF/dayz_server/compile/server_playerSetup.sqf b/SQF/dayz_server/compile/server_playerSetup.sqf index 9f19e3278..44789b63e 100644 --- a/SQF/dayz_server/compile/server_playerSetup.sqf +++ b/SQF/dayz_server/compile/server_playerSetup.sqf @@ -239,7 +239,7 @@ _playerObj setVariable ["lastTime",diag_ticktime]; //set server-side inventory variable to monitor player gear if (count _inventory > 2) then { - _playerObj setVariable["ServerMagArray",[_inventory select 1,_inventory select 2,_inventory select 0], false]; + _playerObj setVariable["ServerMagArray",_inventory select 1, false]; }; //Record Player Login/LogOut diff --git a/SQF/dayz_server/compile/server_playerSync.sqf b/SQF/dayz_server/compile/server_playerSync.sqf index 90aeefb20..9bce701af 100644 --- a/SQF/dayz_server/compile/server_playerSync.sqf +++ b/SQF/dayz_server/compile/server_playerSync.sqf @@ -2,8 +2,7 @@ local _character = _this select 0; local _magazines = _this select 1; -local _dayz_onBack = _this select 2; -local _weaponsPlayer = _this select 3; +local _dayz_onBack = _character getVariable ["dayz_onBack",""]; local _characterID = _character getVariable ["characterID","0"]; local _playerUID = getPlayerUID _character; local _charPos = getPosATL _character; @@ -41,7 +40,7 @@ local _usec_Dead = _character getVariable ["USEC_isDead",false]; local _lastTime = _character getVariable ["lastTime",-1]; local _modelChk = _character getVariable ["model_CHK",""]; local _temp = round (_character getVariable ["temperature",100]); -local _lastMagazines = _character getVariable ["ServerMagArray",[[],"",[]]]; +local _lastMagazines = _character getVariable ["ServerMagArray",[]]; //Get difference between current stats and stats at last sync local _statsDiff = [_character,_playerUID] call server_getStatsDiff; _humanity = _statsDiff select 0; @@ -54,17 +53,12 @@ local _charPosLen = count _charPos; local _magTemp = []; if (!isNil "_magazines") then { - _playerGear = [_weaponsPlayer,_magazines,_dayz_onBack]; - _character setVariable["ServerMagArray",[_magazines,_dayz_onBack,_weaponsPlayer], false]; + _playerGear = [weapons _character,_magazines,_dayz_onBack]; + _character setVariable["ServerMagArray",_magazines, false]; } else { //check Magazines everytime they aren't sent by player_forceSave - _magTemp = (_lastMagazines select 0); - if (isNil "_dayz_onBack") then { - _dayz_onBack = _lastMagazines select 1; - }; - if (isNil "_weaponsPlayer") then { - _weaponsPlayer = _lastMagazines select 2; - }; + _magTemp = _lastMagazines; + if (count _magTemp > 0) then { _magazines = [(magazines _character),20] call array_reduceSize; { @@ -73,7 +67,7 @@ if (!isNil "_magazines") then { _class = _x select 0; }; if (_class in _magazines) then { - local _MatchedCount = {_compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp; + local _MatchedCount = {local _compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp; local _CountedActual = {_x == _class} count _magazines; if (_MatchedCount > _CountedActual) then { _magTemp set [_forEachIndex, "0"]; @@ -81,16 +75,15 @@ if (!isNil "_magazines") then { } else { _magTemp set [_forEachIndex, "0"]; }; - } forEach (_lastMagazines select 0); + } forEach _lastMagazines; _magazines = _magTemp - ["0"]; - _magazines = [_magazines,_dayz_onBack,_weaponsPlayer]; _character setVariable["ServerMagArray",_magazines, false]; - _playerGear = [_magazines select 2,_magazines select 0,_magazines select 1]; + _playerGear = [weapons _character,_magazines,_dayz_onBack]; } else { - _magazines = [_magTemp,_dayz_onBack,_weaponsPlayer]; + _magazines = _magTemp; }; _character setVariable["ServerMagArray",_magazines, false]; - _playerGear = [_magazines select 2,_magazines select 0,_magazines select 1]; + _playerGear = [weapons _character,_magazines,_dayz_onBack]; }; //Check if update is requested diff --git a/SQF/dayz_server/compile/server_publishVehicle3.sqf b/SQF/dayz_server/compile/server_publishVehicle3.sqf index d876457bb..9c83ebcfe 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3.sqf @@ -46,7 +46,7 @@ _magazines = getMagazineCargo _object; _backpacks = getBackpackCargo _object; _inv = [_weapons,_magazines,_backpacks]; -if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then { +if (Z_SingleCurrency && {ZSC_VehicleMoneyStorage}) then { _coins = _object getVariable ["cashMoney",0]; }; @@ -107,7 +107,7 @@ if (_outcome != "PASS") then { _object setVariable ["lastUpdate",diag_tickTime]; _object setVariable ["CharacterID", _characterID, true]; - if (Z_SingleCurrency && ZSC_VehicleMoneyStorage && {_coins > 0}) then { + if (Z_SingleCurrency && {ZSC_VehicleMoneyStorage && (_coins > 0)}) then { _object setVariable ["cashMoney",_coins,true]; }; diff --git a/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf new file mode 100644 index 000000000..0c0070fd1 --- /dev/null +++ b/SQF/dayz_server/compile/server_publishVehicle3_vkc.sqf @@ -0,0 +1,205 @@ +private ["_coins","_activatingPlayer","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected" +,"_characterID","_result","_outcome","_oid","_objectID","_objectUID","_newobject","_weapons","_magazines","_backpacks" +,"_clientKey","_exitReason","_playerUID","_isAir","_fuel","_selection","_dam","_hitpoints","_newHitpoints","_damage" +,"_hit","_inv","_action","_clearTurrets","_message"]; +#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" + +if (count _this < 6) exitWith { + diag_log "Server_PublishVehicle3 error: Wrong parameter format"; + dze_waiting = "fail"; + (owner (_this select 4)) publicVariableClient "dze_waiting"; +}; + +_object = _this select 0; +_worldspace = _this select 1; +_class = _this select 2; +_keySelected = _this select 3; +_activatingPlayer = _this select 4; +_clientKey = _this select 5; +_action = if (count _this > 6) then {_this select 6} else {""}; +_playerUID = getPlayerUID _activatingPlayer; +_characterID = _keySelected; + +_exitReason = [_this,"PublishVehicle3",(_worldspace select 1),_clientKey,_playerUID,_activatingPlayer] call server_verifySender; +if (_exitReason != "") exitWith { + diag_log _exitReason; + dze_waiting = "fail"; + (owner _activatingPlayer) publicVariableClient "dze_waiting"; +}; + +if (!(isClass(configFile >> "CfgVehicles" >> _class)) || isNull _object) exitWith { + diag_log ("HIVE-PublishVehicle3 Error: Vehicle does not exist: "+ str(_class)); + dze_waiting = "fail"; + (owner _activatingPlayer) publicVariableClient "dze_waiting"; +}; + +_objectID = _object getVariable ["ObjectID","0"]; +_objectUID = _object getVariable ["ObjectUID","0"]; +_location = [_object] call fnc_getPos; +_fuel = fuel _object; +_hitpoints = _object call vehicle_getHitpoints; +_newHitpoints = []; +_damage = damage _object; + +// add items from previous vehicle here +_weapons = getWeaponCargo _object; +_magazines = getMagazineCargo _object; +_backpacks = getBackpackCargo _object; +_inv = [_weapons,_magazines,_backpacks]; + +if (Z_SingleCurrency && {ZSC_VehicleMoneyStorage}) then { + _coins = _object getVariable ["cashMoney",0]; +}; + +{ + _hit = [_object,_x] call object_getHit; + if ((_hit select 0) > 0) then { + _newHitpoints set [count _newHitpoints,[(_hit select 1),(_hit select 0)]]; + } else { + _newHitpoints set [count _newHitpoints,[(_hit select 1),0]]; + }; +} count _hitpoints; + +#ifdef OBJECT_DEBUG +diag_log ("PUBLISH: Attempt " + str(_object)); +#endif + +_dir = _worldspace select 0; +_uid = _worldspace call dayz_objectUID2; + +_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, _damage , _characterID, _worldspace, _inv, _newHitpoints, _fuel,_uid]; +#ifdef OBJECT_DEBUG +diag_log ("HIVE: WRITE: "+ str(_key)); +#endif + +_key call server_hiveWrite; + +// GET DB ID +_key = format["CHILD:388:%1:",_uid]; +#ifdef OBJECT_DEBUG +diag_log ("HIVE: WRITE: "+ str(_key)); +#endif +_result = _key call server_hiveReadWrite; +_outcome = _result select 0; + +if (_outcome != "PASS") then { + diag_log("HIVE-pv3: failed to get id for : " + str(_uid)); + _key = format["CHILD:310:%1:",_uid]; + _key call server_hiveWrite; + dze_waiting = "fail"; + (owner _activatingPlayer) publicVariableClient "dze_waiting"; +} else { + _oid = _result select 1; + #ifdef OBJECT_DEBUG + diag_log("CUSTOM: Selected " + str(_oid)); + #endif + + _colour = _object getVariable ["Colour","0"]; + _colour2 = _object getVariable ["Colour2","0"]; + + deleteVehicle _object; + [_objectID,_objectUID,_object] call server_deleteObjDirect; + + uiSleep 3; + + _newobject = _class createVehicle [0,0,0]; + + // switch var to new vehicle at this point. + _object = _newobject; + + _object setVariable ["ObjectID", _oid, true]; + _object setVariable ["lastUpdate",diag_tickTime]; + _object setVariable ["CharacterID", _characterID, true]; + + if (Z_SingleCurrency && {ZSC_VehicleMoneyStorage && {_coins > 0}}) then { + _object setVariable ["cashMoney",_coins,true]; + }; + + dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; + + clearWeaponCargoGlobal _object; + clearMagazineCargoGlobal _object; + clearBackpackCargoGlobal _object; + + _object setDir _dir; + _object setPosATL _location; + _object setVectorUp surfaceNormal _location; + _object setDamage _damage; + + if (_colour != "0") then { + _object setVariable ["Colour",_colour,true]; + _clrinit = format ["#(argb,8,8,3)color(%1)",_colour]; + _object setVehicleInit "this setObjectTexture [0,"+str _clrinit+"];"; + }; + + if (_colour2 != "0") then { + _object setVariable ["Colour2",_colour2,true]; + _clrinit2 = format ["#(argb,8,8,3)color(%1)",_colour2]; + _object setVehicleInit "this setObjectTexture [1,"+str _clrinit2+"];"; + }; + + processInitCommands; + [_weapons,_magazines,_backpacks,_object] call fn_addCargo; + + _clearTurrets = { + //By denvdmj (probably, I found it on the biki) + private ["_weaponArray","_findRecurse","_class","_obj","_turret","_mags"]; + _obj = _this; + + _weaponArray = []; + _weaponArray set [count _weaponArray,[-1]]; + + _findRecurse = { + private ["_root", "_class", "_path", "_currentPath", "_thisThis"]; + _root = (_this select 0); + _path = +(_this select 1); + _thisThis = _this select 2; + for "_i" from 0 to count _root -1 do { + _class = _root select _i; + if (isClass _class) then { + _currentPath = _path + [_i]; + {_weaponArray set [count _weaponArray, _currentPath];} count getArray (_class >> "weapons"); + _class = _class >> "turrets"; + if (isClass _class) then {[_class, _currentPath, _thisThis] call _findRecurse;}; + }; + }; + }; + + [configFile >> "CfgVehicles" >> typeOf (_obj) >> "turrets", [], _this] call _findRecurse; + + { + _turret = _x; + _mags = _obj magazinesTurret _turret; + {_obj removeMagazinesTurret[_x,_turret];} count _mags; + } forEach _weaponArray; + }; + + _isAir = _object isKindOf "Air"; + { + _selection = _x select 0; + _dam = [_x select 1,(_x select 1) min 0.8] select (!_isAir && {_selection in dayZ_explosiveParts}); + _object setHit [_selection,_dam]; + } count _newHitpoints; + + _object setFuel _fuel; + + [_object,"all",true] call server_updateObject; + + _object call fnc_veh_ResetEH; + // for non JIP users this should make sure everyone has eventhandlers for vehicles. + PVDZE_veh_Init = _object; + publicVariable "PVDZE_veh_Init"; + + {if (_object isKindOf _x) exitWith {_object disableTIEquipment true;}} count vkc_disableThermal; + if (vkc_clearAmmo) then {_object call _clearTurrets;}; + + dze_waiting = "success"; + (owner _activatingPlayer) publicVariableClient "dze_waiting"; + + if (_action == "") then { + _message = format["PUBLISH: %1(%2) upgraded %3 with UID %4 @%5",(_activatingPlayer call fa_plr2str),_playerUID,_class,_uid,(_location call fa_coor2str)]; + } else { + _message = format["PUBLISH: %1(%2) %6 %3 with UID %4 @%5",(_activatingPlayer call fa_plr2str),_playerUID,_class,_uid,(_location call fa_coor2str),_action]; + }; + diag_log _message; +}; diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index 741f7d9ed..e87b4b23b 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -39,7 +39,11 @@ server_verifySender = compile preprocessFileLineNumbers "\z\addons\dayz_server\c server_swapObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_swapObject.sqf"; //Used to downgrade and upgrade Epoch buildables server_publishVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle.sqf"; //Used to spawn random vehicles by server server_publishVeh2 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle2.sqf"; //Used to purchase vehicles at traders -server_publishVeh3 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle3.sqf"; //Used for car upgrades +if (DZE_VehicleKey_Changer) then { + server_publishVeh3 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle3_vkc.sqf"; //Used for car upgrades +} else { + server_publishVeh3 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle3.sqf"; //Used for car upgrades +}; server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_tradeObject.sqf"; server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf"; server_maintainArea = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_maintainArea.sqf"; @@ -54,6 +58,10 @@ spawn_mineveins = compile preprocessFileLineNumbers "\z\addons\dayz_server\compi spawn_roadblocks = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_roadblocks.sqf"; spawn_vehicles = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_vehicles.sqf"; +if (DZE_Virtual_Garage) then { + call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\garage\init.sqf"; +}; + fnc_veh_setFixServer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_setFixServer.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles) server_medicalSync = { diff --git a/SQF/dayz_server/system/safeZoneRelocate.sqf b/SQF/dayz_server/system/safeZoneRelocate.sqf new file mode 100644 index 000000000..e3e7f0d99 --- /dev/null +++ b/SQF/dayz_server/system/safeZoneRelocate.sqf @@ -0,0 +1,39 @@ +/* + Safe Zone Relocate by salival (https://github.com/oiad) +*/ + +private ["_customPosition","_minDist","_maxDist","_maxDamage","_message","_nearVehicles","_objDist","_position","_safeZonePos","_safeZoneRadius","_useCustomPosition","_unlock"]; + +_useCustomPosition = false; // Enable a custom position to move vehicles to (i.e a junk yard) +_customPosition = [6942.64,15121.6,0]; // Position for vehicles to be moved to if _useCustomPosition = true; +_minDist = 5; // Minimum distance from the custom position to move vehicles to +_maxDist = 1000; // Maximum distance from the safe zone position to find a safe position or custom position for relocation, setting this too low can make vehicles spawn very close to other vehicles. +_objDist = 15; // Minimum distance from the safe position for relocation to the center of the nearest object. Specifying quite a large distance here will slow the function and might often fail to find a suitable position. +_unlock = false; // Unlock vehicle when moved from the safe zone? +_maxDamage = 0.75; // Vehicles above or equal to this amount of damage will be deleted + +{ + _safeZonePos = _x select 0; + _safeZoneRadius = _x select 1; + _nearVehicles = _safeZonePos nearEntities [["Air","LandVehicle","Ship"],_safeZoneRadius]; + { + if (damage _x >= _maxDamage) then { + _message = format ["[SAFEZONE] %1 was deleted from the server for being too damaged before relocate: @%2 %3",typeOf _x,mapGridPosition _x,getPosATL _x]; + diag_log _message; + [_x getVariable["ObjectID","0"],_x getVariable["ObjectUID","0"],_x] call server_deleteObjDirect; + deleteVehicle _x; + } else { + if (_useCustomPosition) then { + _position = [_customPosition,_minDist,_maxDist,_objDist,1,0,0,[]] call BIS_fnc_findSafePos; + } else { + _position = [_safeZonePos,(_safeZoneRadius + 50),_maxDist,_objDist,if (_x isKindOf "Ship") then {2} else {0},0,0,[],[_safeZonePos,_safeZonePos]] call BIS_fnc_findSafePos; + }; + _x setPos _position; + [_x,"position"] call server_updateObject; + if (_unlock && {locked _x}) then {_x setVehicleLock "UNLOCKED"}; + + _message = format ["[SAFEZONE] %1 was moved out of a safe zone to: @%2 %3",typeOf _x,mapGridPosition _position,_position]; + diag_log _message; + }; + } forEach _nearVehicles; +} forEach DZE_safeZonePosArray; diff --git a/SQF/dayz_server/system/scheduler/sched_corpses.sqf b/SQF/dayz_server/system/scheduler/sched_corpses.sqf index b40e7d698..a3e2d4c45 100644 --- a/SQF/dayz_server/system/scheduler/sched_corpses.sqf +++ b/SQF/dayz_server/system/scheduler/sched_corpses.sqf @@ -36,7 +36,7 @@ sched_corpses = { _addFlies = 0; { if (local _x && {_x isKindOf "CAManBase"}) then { - if (_x isKindOf "zZombie_Base") then { + if (_x isKindOf "zZombie_Base" || {typeOf _x == "z_bloodsucker"}) then { _x call sched_co_deleteVehicle; _delQtyZ = _delQtyZ + 1; } else { @@ -97,7 +97,7 @@ sched_corpses = { if (_onoff == 1) then { _sound = createSoundSource["Sound_Flies",getPosATL _x,[],0]; _sound attachTo [_x]; - _x setVariable ["sched_co_fliesSource", _sound]; + _x setVariable ["sched_co_fliesSource", _sound,[false,true] select (DZE_Bury_Body || DZE_Butcher_Body)]; //diag_log "create sound"; }; // broadcast flies status for everyone periodically, to update visible swarm diff --git a/SQF/dayz_server/system/scheduler/sched_init.sqf b/SQF/dayz_server/system/scheduler/sched_init.sqf index 1ced93f40..6e4b4d6b2 100644 --- a/SQF/dayz_server/system/scheduler/sched_init.sqf +++ b/SQF/dayz_server/system/scheduler/sched_init.sqf @@ -1,4 +1,4 @@ -#define PATH "z\addons\dayz_server\system\scheduler\" +#define PATH "\z\addons\dayz_server\system\scheduler\" call compile preprocessFileLineNumbers (PATH+"sched_corpses.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_lootpiles.sqf"); @@ -6,8 +6,11 @@ call compile preprocessFileLineNumbers (PATH+"sched_sync.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_safetyVehicle.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_event.sqf"); call compile preprocessFileLineNumbers (PATH+"sched_traps.sqf"); +if (DZE_Bury_Body || DZE_Butcher_Body) then { + call compile preprocessFileLineNumbers (PATH+"sched_lootCrates.sqf"); +}; -[ +local _list = [ // period offset code <-> ctx init code ->ctx [ 60, 0, sched_event, sched_event_init ], [ 60, 224, sched_corpses ], @@ -17,17 +20,12 @@ call compile preprocessFileLineNumbers (PATH+"sched_traps.sqf"); [ 120, 48, sched_safetyVehicle ], [ 360, 480, sched_fps ], [ 30, 60, sched_traps, sched_traps_init ] -] execFSM ("z\addons\dayz_code\system\scheduler\scheduler.fsm"); +]; -//diag_log [ __FILE__, "Scheduler started"]; +if (DZE_Bury_Body || DZE_Butcher_Body) then { + _list set [count _list, [ 60, 240, sched_lootCrates ]]; +}; +_list execFSM ("\z\addons\dayz_code\system\scheduler\scheduler.fsm"); - - -/* -// (see ViralZeds.hpp -> zombie_agent.fsm -> zombie_findOwner.sqf), called when a zombie becomes "local" to the server after the player disconnected -zombie_findOwner = { - (_this select 0) call fa_deleteVehicle; -}; -*/ - +//diag_log [ __FILE__, "Scheduler started"]; \ No newline at end of file diff --git a/SQF/dayz_server/system/scheduler/sched_lootCrates.sqf b/SQF/dayz_server/system/scheduler/sched_lootCrates.sqf new file mode 100644 index 000000000..09e1234ff --- /dev/null +++ b/SQF/dayz_server/system/scheduler/sched_lootCrates.sqf @@ -0,0 +1,38 @@ +#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" + +// Delete loot crates, graves and crosses after 25 minutes +sched_lootCrates = { + private ["_delQtyCrate","_crateTime","_objects","_crates","_graves","_cross"]; + + _delQtyCrate = 0; + #define CENTER getMarkerPos "center" + #define RADIUS ((getMarkerSize "center") select 1)*2 + + _crates = CENTER nearObjects ["DZ_AmmoBoxSmallUS",RADIUS]; + _graves = CENTER nearObjects ["Grave",RADIUS]; + _cross = CENTER nearObjects ["GraveCross1",RADIUS]; + + _objects = _crates + _graves + _cross; + + { + if (_x getVariable ["bury",false]) then { + _crateTime = _x getVariable ["sched_co_crateTime", -1]; + if (_crateTime == -1) exitWith { + _crateTime = diag_tickTime; + _x setVariable ["sched_co_crateTime", _crateTime]; + }; + if (diag_tickTime - _crateTime > 25*60) then { + _x call sched_co_deleteVehicle; + _delQtyCrate = _delQtyCrate + 1; + }; + }; + } forEach _objects; + +#ifdef SERVER_DEBUG + if (_delQtyCrate> 0) then { + diag_log format ["%1: Deleted %2 bury/butcher objects.",__FILE__,_delQtyCrate]; + }; +#endif + + objNull +}; \ No newline at end of file diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index 2fa703139..27342b672 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -102,7 +102,7 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { _damage = _x select 8; _storageMoney = _x select 9; - if ((_type isKindOf "AllVehicles")) then { + if ((_type isKindOf "AllVehicles") && !(_type isKindOf "StaticWeapon")) then { _VehicleQueue set [_vQty,_x]; _vQty = _vQty + 1; } else { @@ -341,7 +341,7 @@ if ((playersNumber west + playersNumber civilian) == 0) exitWith { // prevent immediate hive write when vehicle parts are set up _object setVariable ["lastUpdate",diag_ticktime]; _object setVariable ["ObjectID", _idKey, true]; - if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then { + if (Z_SingleCurrency && {ZSC_VehicleMoneyStorage}) then { _object setVariable ["cashMoney", _storageMoney, true]; }; @@ -466,4 +466,7 @@ if (_hiveLoaded) then { //Update gear last after all dynamic vehicles are created to save random loot to database (low priority) {[_x,"gear"] call server_updateObject} count _vehiclesToUpdate; }; + if (DZE_SafeZone_Relocate) then { + execVM "\z\addons\dayz_server\system\safeZoneRelocate.sqf"; + }; }; diff --git a/SQF/dayz_server/traders/caribou.sqf b/SQF/dayz_server/traders/caribou.sqf index a3ec74c17..b5c2e1281 100644 --- a/SQF/dayz_server/traders/caribou.sqf +++ b/SQF/dayz_server/traders/caribou.sqf @@ -45,7 +45,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Raven Rock ["Functionary1_EP1",[1386.9,6941.33,0],93], diff --git a/SQF/dayz_server/traders/chernarus11.sqf b/SQF/dayz_server/traders/chernarus11.sqf index dec75ad04..cf5d8991f 100644 --- a/SQF/dayz_server/traders/chernarus11.sqf +++ b/SQF/dayz_server/traders/chernarus11.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Stary ["Functionary1_EP1",[6324.71,7787,0],64], diff --git a/SQF/dayz_server/traders/chernarus17.sqf b/SQF/dayz_server/traders/chernarus17.sqf index 207ade6b3..20c522a87 100644 --- a/SQF/dayz_server/traders/chernarus17.sqf +++ b/SQF/dayz_server/traders/chernarus17.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Stary ["Functionary1_EP1",[6324.71,7787,0],64], diff --git a/SQF/dayz_server/traders/cmr_ovaron.sqf b/SQF/dayz_server/traders/cmr_ovaron.sqf index 8bfb90aee..7e1d397fd 100644 --- a/SQF/dayz_server/traders/cmr_ovaron.sqf +++ b/SQF/dayz_server/traders/cmr_ovaron.sqf @@ -48,7 +48,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Lissabon ["Functionary1_EP1",[4349.68,6725.49,0],179], diff --git a/SQF/dayz_server/traders/fdf_isle1_a.sqf b/SQF/dayz_server/traders/fdf_isle1_a.sqf index a97bb37f2..09d493495 100644 --- a/SQF/dayz_server/traders/fdf_isle1_a.sqf +++ b/SQF/dayz_server/traders/fdf_isle1_a.sqf @@ -44,7 +44,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Jesco ["Functionary1_EP1",[9662.23,10879.8,0],0], diff --git a/SQF/dayz_server/traders/isladuala.sqf b/SQF/dayz_server/traders/isladuala.sqf index 0a30b92f6..e5ed5fdd5 100644 --- a/SQF/dayz_server/traders/isladuala.sqf +++ b/SQF/dayz_server/traders/isladuala.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Camara ["Functionary1_EP1",[2001.31,1196.58,0],342], diff --git a/SQF/dayz_server/traders/lingor.sqf b/SQF/dayz_server/traders/lingor.sqf index f406bdf5f..7d700eb35 100644 --- a/SQF/dayz_server/traders/lingor.sqf +++ b/SQF/dayz_server/traders/lingor.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ ["Functionary1_EP1",[3020.2061,5945.2783,0.23],0], ["Functionary1_EP1",[4140.2051,1505.2682,2.3],55], diff --git a/SQF/dayz_server/traders/namalsk.sqf b/SQF/dayz_server/traders/namalsk.sqf index e4c4da940..6caa36097 100644 --- a/SQF/dayz_server/traders/namalsk.sqf +++ b/SQF/dayz_server/traders/namalsk.sqf @@ -28,7 +28,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Sebjan ["Functionary1_EP1",[6215.8,9177.55,0],133], diff --git a/SQF/dayz_server/traders/napf.sqf b/SQF/dayz_server/traders/napf.sqf index ced24a451..a558b6eeb 100644 --- a/SQF/dayz_server/traders/napf.sqf +++ b/SQF/dayz_server/traders/napf.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ ["Functionary1_EP1",[12399.83,5054.3413,0.2],52], ["Functionary1_EP1",[15529.827,13236.555,2.38],164], diff --git a/SQF/dayz_server/traders/panthera2.sqf b/SQF/dayz_server/traders/panthera2.sqf index 40c4b4a50..a1b5788ab 100644 --- a/SQF/dayz_server/traders/panthera2.sqf +++ b/SQF/dayz_server/traders/panthera2.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ ["Functionary1_EP1",[4770.4067,7482.2651,-1.7],0], ["Functionary1_EP1",[4431.1997,1616.5604,1.9],-85], diff --git a/SQF/dayz_server/traders/sauerland.sqf b/SQF/dayz_server/traders/sauerland.sqf index bb73ad3e5..81d9a1c47 100644 --- a/SQF/dayz_server/traders/sauerland.sqf +++ b/SQF/dayz_server/traders/sauerland.sqf @@ -58,7 +58,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Seedorf ["Functionary1_EP1",[15488.6,17014.2,0],172], diff --git a/SQF/dayz_server/traders/smd_sahrani_a2.sqf b/SQF/dayz_server/traders/smd_sahrani_a2.sqf index 7a12542d1..76374556e 100644 --- a/SQF/dayz_server/traders/smd_sahrani_a2.sqf +++ b/SQF/dayz_server/traders/smd_sahrani_a2.sqf @@ -60,7 +60,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Corazol ["Functionary1_EP1",[12552.1,8355.03,0],29], diff --git a/SQF/dayz_server/traders/takistan.sqf b/SQF/dayz_server/traders/takistan.sqf index 572559586..f3fb3b54c 100644 --- a/SQF/dayz_server/traders/takistan.sqf +++ b/SQF/dayz_server/traders/takistan.sqf @@ -56,7 +56,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ //Nur ["Functionary1_EP1",[1964.39,12575,0],200], diff --git a/SQF/dayz_server/traders/tavi.sqf b/SQF/dayz_server/traders/tavi.sqf index e3552b297..8ce73806d 100644 --- a/SQF/dayz_server/traders/tavi.sqf +++ b/SQF/dayz_server/traders/tavi.sqf @@ -80,7 +80,7 @@ ] call server_spawnTraders; // Bankers -if (Z_singleCurrency && Z_globalBanking && Z_globalBankingTraders) then { +if (Z_singleCurrency && {Z_globalBanking && Z_globalBankingTraders}) then { [ ["Functionary1_EP1",[5461.0132,8762.3438,0.056497198],52], ["Functionary1_EP1",[11026.932,842.23804,0.18712912],138.57352], diff --git a/SQF/dayz_sfx/CfgMusic.hpp b/SQF/dayz_sfx/CfgMusic.hpp index e6338ee41..8c5c105c3 100644 --- a/SQF/dayz_sfx/CfgMusic.hpp +++ b/SQF/dayz_sfx/CfgMusic.hpp @@ -10,12 +10,6 @@ class CfgMusic name = "DayZTrackDeath"; sound[] = {"\dayz_sfx\tracks\track_death_1.ogg", db+0, 1.0}; }; - class dayz_track_intro_1 - { - name = "DayZTrackIntro"; - sound[] = {"\dayz_sfx\tracks\track_intro_1.ogg", db+0, 1.0}; - duration = ; - }; class z_suspense_0 { name = ""; diff --git a/SQF/dayz_sfx/CfgSounds.hpp b/SQF/dayz_sfx/CfgSounds.hpp index fd3b516dc..fccdc2da7 100644 --- a/SQF/dayz_sfx/CfgSounds.hpp +++ b/SQF/dayz_sfx/CfgSounds.hpp @@ -9,11 +9,6 @@ class CfgSounds { sound[] = {"\dayz_sfx\effects\chopwood.ogg", 0.1, 1, 50}; titles[] = {}; }; - class z_minestone_0 { - name = ""; - sound[] = {"\dayz_sfx\effects\minestone.ogg", 0.1, 1, 50}; - titles[] = {}; - }; class heartbeat_1 { name = ""; sound[] = {"\dayz_sfx\effects\heartbeat_1",0.8,1,30}; @@ -841,4 +836,69 @@ class CfgSounds { sound[] = {"\dayz_sfx\effects\switch.ogg",0.5,1}; titles[] = {}; }; + class z_bloodatt0_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\attack_0.ogg",0.177828,1}; + titles[] = {}; + }; + class z_bloodatt1_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\attack_1.ogg",0.177828,1}; + titles[] = {}; + }; + class z_bloodatt2_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\attack_2.ogg",0.177828,1}; + titles[] = {}; + }; + class z_bloodatt3_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\attack_3.ogg",0.177828,1}; + titles[] = {}; + }; + class z_bloodgrowl0_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\distant_growl_0.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodgrowl1_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\distant_growl_1.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodgrowl2_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\distant_growl_2.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodgrowl3_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\distant_growl_3.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodgrowl4_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\distant_growl_4.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodforest1_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\forest_hidden_1.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodforest2_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\forest_hidden_2.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodforest3_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\forest_hidden_3.ogg",0.25118899,1}; + titles[] = {}; + }; + class z_bloodforest4_0 { + name = ""; + sound[] = {"\dayz_sfx\bloodsucker\forest_hidden_4.ogg",0.25118899,1}; + titles[] = {}; + }; }; diff --git a/SQF/dayz_sfx/bloodsucker/attack_0.ogg b/SQF/dayz_sfx/bloodsucker/attack_0.ogg new file mode 100644 index 000000000..296c47745 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/attack_0.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/attack_1.ogg b/SQF/dayz_sfx/bloodsucker/attack_1.ogg new file mode 100644 index 000000000..a8b6b8eca Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/attack_1.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/attack_2.ogg b/SQF/dayz_sfx/bloodsucker/attack_2.ogg new file mode 100644 index 000000000..8e0dbb930 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/attack_2.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/attack_3.ogg b/SQF/dayz_sfx/bloodsucker/attack_3.ogg new file mode 100644 index 000000000..06fd4163a Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/attack_3.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/distant_growl_0.ogg b/SQF/dayz_sfx/bloodsucker/distant_growl_0.ogg new file mode 100644 index 000000000..5e13b69f1 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/distant_growl_0.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/distant_growl_1.ogg b/SQF/dayz_sfx/bloodsucker/distant_growl_1.ogg new file mode 100644 index 000000000..b4ff7de31 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/distant_growl_1.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/distant_growl_2.ogg b/SQF/dayz_sfx/bloodsucker/distant_growl_2.ogg new file mode 100644 index 000000000..8f643dbc4 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/distant_growl_2.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/distant_growl_3.ogg b/SQF/dayz_sfx/bloodsucker/distant_growl_3.ogg new file mode 100644 index 000000000..903ce159e Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/distant_growl_3.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/distant_growl_4.ogg b/SQF/dayz_sfx/bloodsucker/distant_growl_4.ogg new file mode 100644 index 000000000..0215d8ad9 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/distant_growl_4.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/forest_hidden_1.ogg b/SQF/dayz_sfx/bloodsucker/forest_hidden_1.ogg new file mode 100644 index 000000000..8a83653e5 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/forest_hidden_1.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/forest_hidden_2.ogg b/SQF/dayz_sfx/bloodsucker/forest_hidden_2.ogg new file mode 100644 index 000000000..0215d8ad9 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/forest_hidden_2.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/forest_hidden_3.ogg b/SQF/dayz_sfx/bloodsucker/forest_hidden_3.ogg new file mode 100644 index 000000000..0bc0874ff Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/forest_hidden_3.ogg differ diff --git a/SQF/dayz_sfx/bloodsucker/forest_hidden_4.ogg b/SQF/dayz_sfx/bloodsucker/forest_hidden_4.ogg new file mode 100644 index 000000000..7f889a360 Binary files /dev/null and b/SQF/dayz_sfx/bloodsucker/forest_hidden_4.ogg differ diff --git a/Server Files/DZE_Server_Config/BattlEye/createvehicle.txt b/Server Files/DZE_Server_Config/BattlEye/createvehicle.txt index 4e3c8ae05..d46db7f7b 100644 --- a/Server Files/DZE_Server_Config/BattlEye/createvehicle.txt +++ b/Server Files/DZE_Server_Config/BattlEye/createvehicle.txt @@ -1,14 +1,14 @@ //new -5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|Stash(Small|Medium)(|[1-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !TentStorage !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE" !="Fin" !="Pastor" !_DZE[12]$ !"TallSafe" +5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|Stash(Small|Medium)(|[1-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !TentStorage !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE" !="Fin" !="Pastor" !_DZE[12]$ !"TallSafe" !=GraveCross1 5 SeaGull //set to its own line so we know which kick we have here with out looking in the logs -1 ^DZ_ !=DZ_(British_ACU|Czech_Vest_Pouch|(TK_Assault_Pack|Patrol_Pack|Assault_Pack|ALICE_Pack|CivilBackpack|Backpack|LargeGunBag|GunBag)_EP1) !=DZ_((AmmoBox|ExplosiveBox)(RU|US)|MedBox|CardboardBox) -1 ^z_ !=z_((|new_)villager[1234]|(|new_)worker[1234]|teacher|hunter|suit[1-6]|soldier(|_pilot|_heavy)|policeman(|2)|doctor|priest) !=z_(citizen[1-4]|profiteer[1-4]|rocker[1-4]|lumberjack[1-4]|hunter[2345]|assistant|pilot|takistani[1-6]) !z_soldier_(usmc|fr|cdf|ru|gue|ins|tk|cz|un|ger|baf|pmc|acr) !=z_(dealer|gardener|mafiaboss|postman[1-4]|prisoner[1-3]|firefighter[1-5]|civilian([1-9]|1[0-5])) +1 ^DZ_ !=DZ_(British_ACU|Czech_Vest_Pouch|(TK_Assault_Pack|Patrol_Pack|Assault_Pack|ALICE_Pack|CivilBackpack|Backpack|LargeGunBag|GunBag)_EP1) !=DZ_((AmmoBox|ExplosiveBox)(RU|US)|MedBox|CardboardBox) !DZ_AmmoBox +1 ^z_ !=z_((|new_)villager[1234]|(|new_)worker[1234]|teacher|hunter|suit[1-6]|soldier(|_pilot|_heavy)|policeman(|2)|doctor|priest) !=z_(citizen[1-4]|profiteer[1-4]|rocker[1-4]|lumberjack[1-4]|hunter[2345]|assistant|pilot|takistani[1-6]) !z_soldier_(usmc|fr|cdf|ru|gue|ins|tk|cz|un|ger|baf|pmc|acr) !=z_(dealer|gardener|mafiaboss|postman[1-4]|prisoner[1-3]|firefighter[1-5]|civilian([1-9]|1[0-5])) !=z_bloodsucker 1 ^WeaponHolder !=WeaponHolder !WeaponHolder_part !=WeaponHolder_(Item(DomeTent|CamoNet|Crowbar|Fuelcan|Hatchet|Jerrycan|Tent)|Melee(BaseBallBat(|Nails)|BatBarbed|Machete)) !=WeaponHolder_Part(Engine|Fueltank|Generic|Glass|VRotor|Wheel) !=WeaponHolder_Item(WorkBench|MetalSheet|ConcreteBlock|RSJ|Pickaxe|Generator) -1 Box !=(DZ_((AmmoBox|ExplosiveBox)(RU|US)|MedBox|CardboardBox)|Item(Match|Tool)box|equip_pvc_box|DebugBoxPlayer_DZ|WeaponHolder_ItemLockbox) !=LockboxStorage(Locked|WinterLocked|2Locked|Winter2Locked) +1 Box !=(DZ_((AmmoBox|ExplosiveBox)(RU|US)|MedBox|CardboardBox)|Item(Match|Tool)box|equip_pvc_box|DebugBoxPlayer_DZ|WeaponHolder_ItemLockbox) !=LockboxStorage(Locked|WinterLocked|2Locked|Winter2Locked) !DZ_AmmoBox 1 ^Smoke !=SmokeShell(|Red|Green|Yellow) !=SmokeLauncherAmmo 1 ^Chem !=Chem(Green|Red|Blue) 1 ^._40mm !=(G_40mm_HE|G_40mm_Smoke|F_40mm_White|F_40mm_Green) -1 _DZ$ !=(BanditW?[12]|Camo1|Sniper1W?|Soldier1|SurvivorW?([123]|desert|pink|combat|urban|winter)|Blood_Trail)_DZ !=(Land_Fire|Sandbag1|Hedgehog|BearTrap|CamoNet|GrenadeHandTimedWest|flamable)_DZ !=(Priest|Doctor|Assistant|Worker[134]|Soldier_(Crew|TL|Sniper|Bodyguard_AA12)_PMC)_DZ !=((Functionary1|Haris_Press|Pilot|US_Soldier)_EP1|Reporter|MafiaBoss|Dealer)_DZ !=pz_(policeman|suit[12]|worker[123]|doctor|teacher|hunter|villager[123]|priest)_DZ !=(GUE_Soldier_(MG|Sniper|Crew|CO|2)|Apo_Rifleman_0[1-6])_DZ !=(UN_CDF_Soldier(_Guard)?_EP1|BAF_Soldier_(Officer|N)_MTP|Nac_Soldier|Tamika)_DZ !=GhillieFull_(Desert0[1-8]|Snow0[1-5]|Urban01|Wood(0[1-9]|1[1-6]))_DZ !=SG_GRU_(TL|Scout|Sniper|Spotter|Assaultman|Medic|Marksman|Operator|MG)(|_W|_D)_DZ !=(Firefighter([1-5]|_Officer[12])|Postman[1-4]|SchoolTeacher|Civilian([1-9]|1[0-4]))_DZ !=((Drake|Graves)_Light|GUE_Commander|Hunter|Gardener|RUS_(Soldier1|Commander))_DZ !=(RU_(Soldier(|_Officer|_Crew)|Policeman2?)|Ins_(Soldier_(2|GL|Crew)|Commander))_DZ !=(MVD_Soldier|CDF_Soldier|Prisoner[123]|Rocker[1-4]|BusinessMan|Rocket)_DZ !=(INS_(Lopotev|Soldier_(AR|CO)|Bardak|Worker2)|USMC_Soldier_(Officer|MG|Pilot))_DZ !=FR_(TL|R|Marksman|Assault_R|OHara|Rodriguez|Sapper)_DZ !=TK_(Special_Forces_MG|Soldier_Sniper|Commander|GUE_Soldier|CIV_Takistani0[1346]|INS_(Soldier(_AR)?|Warlord))_EP1_DZ !=gsc_(military_helmet_|military_head_)(|wdl|grey)_DZ !=gsc_(scientist[12](_head)?|cloth_loner_head)_DZ !=gsc_eco_stalker_(mask|head)_(camo|neutral|head|fred|duty)_DZ !=CZ_(Soldier_(805|Crew|Officer|Recon|Spec([123]|_Demo)|Sniper|Light)(|_Wdl|_Dst)|Soldier805_DES)_ACR_DZ !=CZ_(Special_Forces_GL_DES|Soldier_Sniper|Soldier_SL_DES)_EP1_DZ !=GER_Soldier(_TL)?_EP1(|_des|_wdl)_DZ !=(Plastic_Pole_EP1|Generator|Server_Rack|FuelPump|FireBarrel|GunRack|GunRack2|WoodCrate|WoodCrate2|WorkBench)_DZ !_Preview_DZ !=CamoWinter(1|2|1W|2W)_DZ !=HookerW(1-5)_DZ !=TK_INS_Soldier_EP(1-3)_DZ !=CinderGarageOpenTop(|Frame|Locked)_DZ !=CinderWall(Doorway|Door|DoorLocked|Window|Half)_DZ !=Wood(Ramp|Floor(|Stairs|Half|Quarter|4x)|TriangleFloor|Large(Wall(|Door|Win))|Small(Wall(|Third|Win|Door))|TriangleWall|GateFrame|Stairs(|Rails|Sans)|Ladder|Handrail|Pillar)_DZ !=MetalFloor(|_Half|_Quarter|4x)_DZ !=GlassFloor(|_Half|_Quarter)_DZ !=(DesertLarge|Desert|Winter|WinterLarge|Forest|ForestLarge)CamoNet_DZ !WoodenFence_ !MetalFence_ +1 _DZ$ !=(BanditW?[12]|Camo1|Sniper1W?|Soldier1|SurvivorW?([123]|desert|pink|combat|urban|winter)|Blood_Trail)_DZ !=(Land_Fire|Sandbag1|Hedgehog|BearTrap|CamoNet|GrenadeHandTimedWest|flamable)_DZ !=(Priest|Doctor|Assistant|Worker[134]|Soldier_(Crew|TL|Sniper|Bodyguard_AA12)_PMC)_DZ !=((Functionary1|Haris_Press|Pilot|US_Soldier)_EP1|Reporter|MafiaBoss|Dealer)_DZ !=pz_(policeman|suit[12]|worker[123]|doctor|teacher|hunter|villager[123]|priest)_DZ !=(GUE_Soldier_(MG|Sniper|Crew|CO|2)|Apo_Rifleman_0[1-6])_DZ !=(UN_CDF_Soldier(_Guard)?_EP1|BAF_Soldier_(Officer|N)_MTP|Nac_Soldier|Tamika)_DZ !=GhillieFull_(Desert0[1-8]|Snow0[1-5]|Urban01|Wood(0[1-9]|1[1-6]))_DZ !=SG_GRU_(TL|Scout|Sniper|Spotter|Assaultman|Medic|Marksman|Operator|MG)(|_W|_D)_DZ !=(Firefighter([1-5]|_Officer[12])|Postman[1-4]|SchoolTeacher|Civilian([1-9]|1[0-4]))_DZ !=((Drake|Graves)_Light|GUE_Commander|Hunter|Gardener|RUS_(Soldier1|Commander))_DZ !=(RU_(Soldier(|_Officer|_Crew)|Policeman2?)|Ins_(Soldier_(2|GL|Crew)|Commander))_DZ !=(MVD_Soldier|CDF_Soldier|Prisoner[123]|Rocker[1-4]|BusinessMan|Rocket)_DZ !=(INS_(Lopotev|Soldier_(AR|CO)|Bardak|Worker2)|USMC_Soldier_(Officer|MG|Pilot))_DZ !=FR_(TL|R|Marksman|Assault_R|OHara|Rodriguez|Sapper)_DZ !=TK_(Special_Forces_MG|Soldier_Sniper|Commander|GUE_Soldier|CIV_Takistani0[1346]|INS_(Soldier(_AR)?|Warlord))_EP1_DZ !=gsc_(military_helmet_|military_head_)(|wdl|grey)_DZ !=gsc_(scientist[12](_head)?|cloth_loner_head)_DZ !=gsc_eco_stalker_(mask|head)_(camo|neutral|head|fred|duty)_DZ !=CZ_(Soldier_(805|Crew|Officer|Recon|Spec([123]|_Demo)|Sniper|Light)(|_Wdl|_Dst)|Soldier805_DES)_ACR_DZ !=CZ_(Special_Forces_GL_DES|Soldier_Sniper|Soldier_SL_DES)_EP1_DZ !=GER_Soldier(_TL)?_EP1(|_des|_wdl)_DZ !=(Plastic_Pole_EP1|Generator|Server_Rack|FuelPump|FireBarrel|GunRack|GunRack2|WoodCrate|WoodCrate2|WorkBench)_DZ !_Preview_DZ !=CamoWinter(1|2|1W|2W)_DZ !=HookerW(1-5)_DZ !=TK_INS_Soldier_EP(1-3)_DZ !=CinderGarageOpenTop(|Frame|Locked)_DZ !=CinderWall(Doorway|Door|DoorLocked|Window|Half)_DZ !=Wood(Ramp|Floor(|Stairs|Half|Quarter|4x)|TriangleFloor|Large(Wall(|Door|Win))|Small(Wall(|Third|Win|Door))|TriangleWall|GateFrame|Stairs(|Rails|Sans)|Ladder|Handrail|Pillar)_DZ !=MetalFloor(|_Half|_Quarter|4x)_DZ !=GlassFloor(|_Half|_Quarter)_DZ !=(DesertLarge|Desert|Winter|WinterLarge|Forest|ForestLarge)CamoNet_DZ !WoodenFence_ !MetalFence_ !Helipad_ 1 ^Trap Trap(_Cans|Tripwire(Flare|Grenade|Smoke)|BearTrap(Smoke|Flare)) 1=(SmallSecondary|HelicopterExplo(Small|Big)) // log explosions (optional) 1=(PipeBomb|Grenade(_|HandTimed)(West|East)) // log grenades (optional) diff --git a/Server Files/DZE_Server_Config/BattlEye/publicvariable.txt b/Server Files/DZE_Server_Config/BattlEye/publicvariable.txt index 6b8afe5a6..1a2430279 100644 --- a/Server Files/DZE_Server_Config/BattlEye/publicvariable.txt +++ b/Server Files/DZE_Server_Config/BattlEye/publicvariable.txt @@ -1,5 +1,5 @@ //new -5 !=remEx(Field|FP) !=(PVCDZ_obj_GutBody|BIS_effects_gepv) !=PVDZ_(hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove|Delete)|Server(_Simulation|StoreVar|_UpdateGroup)) !=PVDZ_(playerMedicalSync|groupInvite|send|sec_atp) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Swap|Trade)|maintainArea|PingSend|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ)) !=SK_changeCode +5 !=remEx(Field|FP) !=(PVCDZ_obj_GutBody|BIS_effects_gepv) !=PVDZ_(hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove|Delete)|Server(_Simulation|StoreVar|_UpdateGroup)) !=PVDZ_(playerMedicalSync|groupInvite|send|sec_atp) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Swap|Trade)|maintainArea|PingSend|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ)) !=SK_changeCode !=PVDZE_(query|store|spawn)Vehicle !=PVDZE_maintainGarage 1=BIS_effects_gepv|PVDZ_(hlt_Bleed|obj_Delete|obj_Destroy|obj_Publish|plr_Death|plr_LoginRecord|sec_atp|send) 1=PVDZ_veh_(Save|SF) 1=PVDZE_obj_Swap diff --git a/Server Files/DZE_Server_Config/BattlEye/scripts.txt b/Server Files/DZE_Server_Config/BattlEye/scripts.txt index fd094b5af..a20d157dc 100644 --- a/Server Files/DZE_Server_Config/BattlEye/scripts.txt +++ b/Server Files/DZE_Server_Config/BattlEye/scripts.txt @@ -1,90 +1,90 @@ //new2 -5 addAction !", \"\\z\\addons\\dayz_code\\" !=" = -1;\n};\nif (_s1 > 0) then {\ns_player_toggleSnap = player addaction [format[\"\" + \"Snap: %1\" +\"\",snapAc" !="-1;\n};\n\nif (_s1 > 0) then {\ns_player_toggleVector = player addaction [format[\"\" + localize \"STR_EPOCH_ACTIO" !"\"addAction\", " !"raddAction" -5 addBackpack !"addBackpackCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} count _objWpnTypes;" !"addBackpack _item;\n};\n};\nformat[localize \"str_c" !"case 3: {_holder addBackpackCargoGlobal [_item,_amount];};\n};\n\n\n" !"}) then {\n_newUnit addBackpack _newBackpackType;\n\nd" !"addBackpack _backpackType; \ndayz_myBackpack = unitBackpack player;\n\n\n\n_backpackWpnT" !"};\n} count _wpns;\n\nif (_bcpk != \"\") then {\nplayer addBackpack" !"1 == \"trade_backpacks\") then {\nDZE_myVehicle addBackpack" !"7 addBackpackCargoGlobal [_create,_qty];\n};\nif (surfaceIsWater" !"case 5: {_item addBackpackCargoGlobal [_itemOut,_countOut]}; \n};\n} else" !="m (2 + 1)];\n};\n};\n\nif (_type == 5) exitWith {\n_container addBackpackCargoGlobal [_item, 1];\n};\n};\n} count ([_group, _count] cal" !="5) exitWith {\nif (isNull unitBackpack _unit) then {\n_unit addBackpack _item;\n};\n};\n};\n} foreach ([_group, _count] call dz_fn_loo" !="al [_itemOut,_countOut]};\nif (_type == 5) exitwith {_item addBackpackCargoGlobal [_itemOut,_countOut]}; \n};\n} else {\n_item addMa" -5 addMagazine !raddMagazine !"\"addMagazine\", " !"if (isClass (configfile >> \"cfgmagazines\" >> (_item))) then {_unit addMagazine _item;};\n};\n};\n};\n};" !"_vehicle addMagazineTurret [_ammo,_turret];\nplayer removeMagazine" !"if (dayz_actionInProgress) exitWith {" !"addMagazine _x;\n};\n} foreach _items;\nformat[loc" !"addMagazine \"ItemAntibiotic\" + str(_remain" !"sumeDrop\") == 0) then\n{\nplayer addMagazine" !"ion) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon _item;\n};\ncase \"CfgMagazines\":\n{\nplayer addMagazine" !"addMagazine [\"12Rnd_Quiver_Wood\",_qty_quiv" !" >> \"containerEmpty\")" !"plant) select 1;\n{\n_item addMagazine" !"addMagazineCargoGlobal [_itemtodrop,1];\n\nformat[localize \"str_f" !"addMagazine _attachment;\n\n\n(findDisplay 10" !"addMagazine getText (configFile >> \"CfgMagazines\" >> _x >> _water" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazine" !"do {\n_animalbody addMagazine _rawfoodtype" !"addMagazine _item;\n};\n};\n_idc = _idc" !"_newUnit addMagazine [_x select 0,_x select 1]" !"addMagazine _x } count MeleeMagazines;\n} e" !"_meleeNum < 1) then {\nplayer addMagazine" !"addMagazine _qtyRemaining;\n};\n};\ntrue" !"bag\";\n};\n};\n(_this select 0) addMagazine" !"addMagazine \"wholeBloodBagBNEG\";\n};\n};" !"_qty > 0) then {\n_firePlace addMagazine" !"ONEG\" }; \n};\ndayz_myBackpack addMagazine" !"addMagazine _x;\n_countmags = _countmags +1;\n};\n} count _gmag" !"E\"];\n_lootpile addMagazineCargoGlobal [\"TrapBear\", 1]" !"With\n{\nplayer addMagazine (_this select 1" !"lder addMagazineCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n};\n} co" !"soldItem\"];\n{\n_object addMagazine" !"systemChat localize \"STR_EPOCH_TRADE_" !"if (_silver_1oz > 0) then {\nif (_silver_1oz == 1) then {\nplayer addMagazine" !="Random;\n} else {\n_item = \"ItemBloodbag\";\n};\n};\n_container addMagazineCargoGlobal [_item, 1];\n};\n\nif (_type == 2) exitWith {\n_c" !="electRandom;\n} else {\n_item = \"ItemBloodbag\";\n};\n};\n_unit addMagazine _item;\n};\n\nif (_type == 2) exitWith {\n_unit addWeapon _i" !="];\n\ncall {\nif (_humanityBody >= DZE_Hero) exitwith {_body addMagazine \"ItemDogTagHero\";};\nif (_humanityBody <= DZE_Bandit) exitw" !="_vehicle = \"WeaponHolder\" createVehicle [0,0,0];\n_vehicle addMagazineCargoGlobal [_item, 1];\n\nif (_isWater) then { \n_fixWaterSp" !"eep 3;\n_finished = true;\n};\n\nif (!_finished) then {\n_unit addMagazine _bagUsed;\n_msg = \"str_actions_medical_transfusion_interrup" -5 addWeapon !raddWeapon !"\"addWeapon\", " !"if (isClass (configfile >> \"cfgweapons\" >> (_item))) then {_unit addWeapon _item;}\nelse" !",0]] call dayz_NutritionSystem;\n" !"Remove) == 1}) then {\nplayer addWeapon _create;" !"Display 0;\n\n\nif (_weaponInUse) then\n{\n_muz" !"failChance) then {\nswitch (_selection) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon" !"addWeapon _fixedItem;\nformat[localize \"str_f" !"_wepcounts = (getWeaponCargo _plant) select 1;\n{\n_item addWeapon" !"addWeapon _repair;\n} else {\n\n[_repair" !"player addWeapon dayz_onBack] select 0;\n};\n\n" !"player addWeapon _addWeapon;\n\nif (vehicle player != player) then {\n_display = find" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazineCargoGlobal [_item,_amount];};\ncase 2: {_holder addWeapon" !"l fn_chance) then {\nplayer removeWeapon _x;\nplayer addWeapon _rem" !"else {\n_body addWeapon dayz_onBack;\n};\n};\n\n\n_infect" !"\" >> _x)) then {\nplayer addWeapon _x;\n};\n} count _wpns;\n};" !"lder addWeaponCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} co" !"WpnQtys = [];\nif (count _backpackWpn > 0) then {\n_backpackWpnTypes = _backpackWpn sel" !"addWeapon (\"Item\"+str(_remain)+\"Matchbox" !"{\nswitch (_x select 0) do\n{\ncase 2:\n{\n(_this select 0) addWeapon" !"addWeaponCargoGlobal [_bcpkWpn, 1];\n};\n};\n};\n};" !"s;\n};\n\n\nplayer addWeapon \"Loot" !"With\n{\nplayer addWeapon (_this select 1" !"\") then {\n_newUnit addWeapon _secweapon;\n};\n\n" !"soldItem\"];\n{\n_object addWeapon" !"then {\nsystemChat format[localize \"STR_EPOCH_" !"DuplicateTool;\n} else {\nplayer addWeapon" !="al [_item, 1];\n};\n\nif (_type == 2) exitWith {\n_container addWeaponCargoGlobal [_item, 1];\n\n_magazines = getArray (configFile >" !=" addMagazine _item;\n};\n\nif (_type == 2) exitWith {\n_unit addWeapon _item;\n};\n\nif (_type == 5) exitWith {\nif (isNull unitBackp" !="ile >> \"CfgWeapons\" >> _x >> \"type\") == 256) then {\nplayer addWeapon _x;\n} else {\n_x call player_addDuplicateTool;\n};\n};\n} count" !="\n_vehicle = \"WeaponHolder\" createVehicle [0,0,0];\n_vehicle addWeaponCargoGlobal [_item, 1];\n\nif (_isWater) then { \n_fixWaterSpa" -5 allDead !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" -5 allGroups !"publicVariableServer \"PVDZ_Server_UpdateGroup\";\n};\n} count allGroups;" -5 allMissionObjects !"[_x,2,0,false,false] spawn BIS_Effects_Burn;\n};\n} count allMissionObjects \"SpawnableWreck\";" -5 allowDammage -5 allUnits !"} count allUnits;\nlbSort _playerList;" !"if (getPlayerUID _x == _this) exitWith {\n_player = _x;\n};\n} count allUnits;" !"owner _x publicVariableClient \"PVDZ_groupInvite\";\n};\n} count allUnits;" !=" select 1 != 0}) exitWith {\n_targeted = true;\n};\n};\n} count allUnits;\nif (_targeted) exitWith {localize \"str_player_fail_wear4\" " -5 attachTo !"(_variation * 2)) - _variation)];\n_bolt attachTo [_hitObject,_val,_hitMemoryPt];" !"player playActionNow \"PutDown\";\nuiSleep 2;\n_flare attachTo [player,[0,0,0],\"granat2\"];" !"tchmove \"ainjpfalmstpsnonwrfldnon_carried_still\";\n_dragee attachto [_unit,[-0.2, 0.2, 0]];" !"_source setDropInterval 0.02;\n_point attachTo [_unit,_modelPos,_wound];" !" attachto [_v,[0,0,0],\"destructionEffect" !"publicVariable \"PVDZ_drg_RaDrag\";\n\n_dragee attachto [_unit,[0.1, 1.01, 0]];" !="_l1 attachTo [_lh,[0,0,0],\"light\"];" !"_objectHelper attachTo [player,_offset];" !"_object attachTo [player,_offset];\n\n_position = getPosATL _object;" !="_vehicle attachTo [_liftHeli,[0,0,-7]];" !="_obj attachTo [_axis];" !"_objectSnapGizmo attachTo [_object,[_x select 0,_x select 1,_x select 2]];" !="_vehicle attachTo [_towTruck,[1.3,-2,2.3]];" !"localize \"STR_EPOCH_ACTIONS_ATTACHTOHELI\"," !=" (getDir _object);\n_objectHelper setPosATL _newPos;\n_object attachTo [_objectHelper];\n_x setobjecttexture [0,\"#(argb,8,8,3)color" !"rInput false; disableUserInput false;\nuiSleep .5;\n\n\n_dragee attachto [_medic,[0.1, 1.01, 0]];\n\n\nPVDZ_send = [_dragee,\"DragPlayer" !="cts, 3];\nif (count _dropObjects > 0) exitWith {};\n\n\n_dragee attachto [_medic,[0.1, 1.01, 0]];\n\n\nPVDZ_send = [_dragee,\"CarryPlaye" -5 bankMoney !=" [\"globalMoney\", _globalCoins, true];\nplayer setVariable [\"bankMoney\", _bankCoins, true];\n};\ndayz_musicH = [] spawn player_music" !="]];\nctrlSetText [23002,format[\"%1 %2\",player getVariable [\"bankMoney\",0] call BIS_fnc_numberText,CurrencyName]];\n};\n\nATMDialogWi" !="ariable [\"cashMoney\",0];\n_bankCoins = player getVariable [\"bankMoney\",0];\n_globalCoins = player getVariable [\"globalMoney\",0];\n}" !=" \nZSC_limitOnBank = true; \nZSC_bankObjects = [\"\"]; \nZSC_maxBankMoney = 500000; \nZSC_defaultStorageMultiplier = 200; \nZSC_MaxMone" !="Z_showBankUI) then {\nlocal _bankAmt = player getVariable [\"bankMoney\",0];\n_string = _string + format [\"%1 > \"" !="wCurrencyUI) then {\nlocal _cashAmt = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_string = for" !=" = [false, [], [], [], 0];\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n\nif (Z_Single" -5 clearMagazineCargo !="ddWeaponCargo\", \n\"addMagazine\", \n\"addMagazineCargo\", \n\"clearMagazineCargo\",\n\"clearWeaponCargo\",\n\"endMission\",\n\"failMission\",\n\"ti" !="rclearMagazineCargo = 'clearMagazineCargo'" !="rclearMagazineCargocode = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands + 'clearMagazineCargo.sqf')" !=", \"addWeaponCargo\", \"addWPCur\", \"animate\", \"callVar\", \"clearMagazineCargo\", \"clearWeaponCargo\", \"createDiaryRecord\", \"createMark" !="rclearMagazineCargocode={diag_log(\"WARNING illegal RE rclearMagazineCargocode with args:\"+str(_this));};" !="eeSpace select 5;\n_normalWeaps = _freeSpace select 6;\n\nclearMagazineCargoGlobal _object;\nclearWeaponCargoGlobal _object;\n\n_retur" !=" {\n_bpMags = (getMagazineCargo (unitbackpack player));\nclearMagazineCargoGlobal (unitbackpack player);\n\n{\n_count = ((_bpMags sel" !="o {\n\n_ok = false;\n_mags = getMagazineCargo _firePlace;\nclearMagazineCargoGlobal _firePlace;\n\n_fuel = [\"PartWoodPile\",\"ItemLog\",\"" -5 clearWeaponCargo !="Magazine\", \n\"addMagazineCargo\", \n\"clearMagazineCargo\",\n\"clearWeaponCargo\",\n\"endMission\",\n\"failMission\",\n\"titleCut\", \n\"titleText\"" !="rclearWeaponCargo = 'clearWeaponCargo'" !="rclearWeaponCargocode = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands + 'clearWeaponCargo.sqf')" !="addWPCur\", \"animate\", \"callVar\", \"clearMagazineCargo\", \"clearWeaponCargo\", \"createDiaryRecord\", \"createMarkerLocal\", \"createSimp" !="rclearWeaponCargocode={diag_log(\"WARNING illegal RE rclearWeaponCargocode with args:\"+str(_this));};" !="_freeSpace select 6;\n\nclearMagazineCargoGlobal _object;\nclearWeaponCargoGlobal _object;\n\n_returnVar = [];\n_returnMag = [];\n_retu" -5 clearBackpackCargo -5 closeDisplay !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {" +1 addAction !", \"\\z\\addons\\dayz_code\\" !=" = -1;\n};\nif (_s1 > 0) then {\ns_player_toggleSnap = player addaction [format[\"\" + \"Snap: %1\" +\"\",snapAc" !="-1;\n};\n\nif (_s1 > 0) then {\ns_player_toggleVector = player addaction [format[\"\" + localize \"STR_EPOCH_ACTIO" !"\"addAction\", " !"raddAction" !="_costs] call _fnc_actionTitle;\nSP_refuel_action = _vehicle addAction [_actionTitle,_folder + \"servicePointActions.sqf\",[\"refuel\"" +1 addBackpack !"addBackpackCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} count _objWpnTypes;" !"addBackpack _item;\n};\n};\nformat[localize \"str_c" !"case 3: {_holder addBackpackCargoGlobal [_item,_amount];};\n};\n\n\n" !"}) then {\n_newUnit addBackpack _newBackpackType;\n\nd" !"addBackpack _backpackType; \ndayz_myBackpack = unitBackpack player;\n\n\n\n_backpackWpnT" !"};\n} count _wpns;\n\nif (_bcpk != \"\") then {\nplayer addBackpack" !"1 == \"trade_backpacks\") then {\nDZE_myVehicle addBackpack" !"7 addBackpackCargoGlobal [_create,_qty];\n};\nif (surfaceIsWater" !"case 5: {_item addBackpackCargoGlobal [_itemOut,_countOut]}; \n};\n} else" !="m (2 + 1)];\n};\n};\n\nif (_type == 5) exitWith {\n_container addBackpackCargoGlobal [_item, 1];\n};\n};\n} count ([_group, _count] cal" !="5) exitWith {\nif (isNull unitBackpack _unit) then {\n_unit addBackpack _item;\n};\n};\n};\n} foreach ([_group, _count] call dz_fn_loo" !="al [_itemOut,_countOut]};\nif (_type == 5) exitwith {_item addBackpackCargoGlobal [_itemOut,_countOut]}; \n};\n} else {\n_item addMa" !="forEachIndex]} forEach (_backPackMag select 0);};\n\n_crate addBackpackCargoGlobal [_backPack,1];\n};\n\n_sound = _corpse getVariable" +1 addMagazine !raddMagazine !"\"addMagazine\", " !"if (isClass (configfile >> \"cfgmagazines\" >> (_item))) then {_unit addMagazine _item;};\n};\n};\n};\n};" !"_vehicle addMagazineTurret [_ammo,_turret];\nplayer removeMagazine" !"if (dayz_actionInProgress) exitWith {" !"addMagazine _x;\n};\n} foreach _items;\nformat[loc" !"addMagazine \"ItemAntibiotic\" + str(_remain" !"sumeDrop\") == 0) then\n{\nplayer addMagazine" !"ion) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon _item;\n};\ncase \"CfgMagazines\":\n{\nplayer addMagazine" !"addMagazine [\"12Rnd_Quiver_Wood\",_qty_quiv" !" >> \"containerEmpty\")" !"plant) select 1;\n{\n_item addMagazine" !"addMagazineCargoGlobal [_itemtodrop,1];\n\nformat[localize \"str_f" !"addMagazine _attachment;\n\n\n(findDisplay 10" !"addMagazine getText (configFile >> \"CfgMagazines\" >> _x >> _water" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazine" !"addMagazine _item;\n};\n};\n_idc = _idc" !"_newUnit addMagazine [_x select 0,_x select 1]" !"addMagazine _x } count MeleeMagazines;\n} e" !"_meleeNum < 1) then {\nplayer addMagazine" !"addMagazine _qtyRemaining;\n};\n};\ntrue" !"bag\";\n};\n};\n(_this select 0) addMagazine" !"addMagazine \"wholeBloodBagBNEG\";\n};\n};" !"_qty > 0) then {\n_firePlace addMagazine" !"ONEG\" }; \n};\ndayz_myBackpack addMagazine" !"addMagazine _x;\n_countmags = _countmags +1;\n};\n} count _gmag" !"E\"];\n_lootpile addMagazineCargoGlobal [\"TrapBear\", 1]" !"With\n{\nplayer addMagazine (_this select 1" !"lder addMagazineCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n};\n} co" !"soldItem\"];\n{\n_object addMagazine" !"systemChat localize \"STR_EPOCH_TRADE_" !"if (_silver_1oz > 0) then {\nif (_silver_1oz == 1) then {\nplayer addMagazine" !="Random;\n} else {\n_item = \"ItemBloodbag\";\n};\n};\n_container addMagazineCargoGlobal [_item, 1];\n};\n\nif (_type == 2) exitWith {\n_c" !="electRandom;\n} else {\n_item = \"ItemBloodbag\";\n};\n};\n_unit addMagazine _item;\n};\n\nif (_type == 2) exitWith {\n_unit addWeapon _i" !="];\n\ncall {\nif (_humanityBody >= DZE_Hero) exitwith {_body addMagazine \"ItemDogTagHero\";};\nif (_humanityBody <= DZE_Bandit) exitw" !="_vehicle = \"WeaponHolder\" createVehicle [0,0,0];\n_vehicle addMagazineCargoGlobal [_item, 1];\n\nif (_isWater) then { \n_fixWaterSp" !"eep 3;\n_finished = true;\n};\n\nif (!_finished) then {\n_unit addMagazine _bagUsed;\n_msg = \"str_actions_medical_transfusion_interrup" !="art\") then {\n_body addWeapon _rawfoodtype;\n} else {\n_body addMagazine _rawfoodtype;\n};\n};\n\nif (_bodyType in [\"Cock\",\"Hen\"]) then" +1 addWeapon !raddWeapon !"\"addWeapon\", " !"if (isClass (configfile >> \"cfgweapons\" >> (_item))) then {_unit addWeapon _item;}\nelse" !",0]] call dayz_NutritionSystem;\n" !"Remove) == 1}) then {\nplayer addWeapon _create;" !"Display 0;\n\n\nif (_weaponInUse) then\n{\n_muz" !"failChance) then {\nswitch (_selection) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon" !"addWeapon _fixedItem;\nformat[localize \"str_f" !"_wepcounts = (getWeaponCargo _plant) select 1;\n{\n_item addWeapon" !"addWeapon _repair;\n} else {\n\n[_repair" !"player addWeapon dayz_onBack] select 0;\n};\n\n" !"player addWeapon _addWeapon;\n\nif (vehicle player != player) then {\n_display = find" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazineCargoGlobal [_item,_amount];};\ncase 2: {_holder addWeapon" !"l fn_chance) then {\nplayer removeWeapon _x;\nplayer addWeapon _rem" !"else {\n_body addWeapon dayz_onBack;\n};\n};\n\n\n_infect" !"\" >> _x)) then {\nplayer addWeapon _x;\n};\n} count _wpns;\n};" !"lder addWeaponCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} co" !"WpnQtys = [];\nif (count _backpackWpn > 0) then {\n_backpackWpnTypes = _backpackWpn sel" !"addWeapon (\"Item\"+str(_remain)+\"Matchbox" !"{\nswitch (_x select 0) do\n{\ncase 2:\n{\n(_this select 0) addWeapon" !"addWeaponCargoGlobal [_bcpkWpn, 1];\n};\n};\n};\n};" !"s;\n};\n\n\nplayer addWeapon \"Loot" !"With\n{\nplayer addWeapon (_this select 1" !"\") then {\n_newUnit addWeapon _secweapon;\n};\n\n" !"soldItem\"];\n{\n_object addWeapon" !"then {\nsystemChat format[localize \"STR_EPOCH_" !"DuplicateTool;\n} else {\nplayer addWeapon" !="al [_item, 1];\n};\n\nif (_type == 2) exitWith {\n_container addWeaponCargoGlobal [_item, 1];\n\n_magazines = getArray (configFile >" !=" addMagazine _item;\n};\n\nif (_type == 2) exitWith {\n_unit addWeapon _item;\n};\n\nif (_type == 5) exitWith {\nif (isNull unitBackp" !="ile >> \"CfgWeapons\" >> _x >> \"type\") == 256) then {\nplayer addWeapon _x;\n} else {\n_x call player_addDuplicateTool;\n};\n};\n} count" !="\n_vehicle = \"WeaponHolder\" createVehicle [0,0,0];\n_vehicle addWeaponCargoGlobal [_item, 1];\n\nif (_isWater) then { \n_fixWaterSpa" !="do {_vehicle addMagazineTurret [_ammo,_turret];};\n_vehicle addWeaponTurret [\"CMFlareLauncher\",_turret];\n} else {\n{_vehicle remov" !="ect 2];\n_cross setVariable [\"bury\",true,true];\n};\n\n{_crate addWeaponCargoGlobal [_x,1]} forEach weapons _corpse;\n{_crate addMaga" !="y do {\nif (_rawfoodtype == \"ItemMutantHeart\") then {\n_body addWeapon _rawfoodtype;\n} else {\n_body addMagazine _rawfoodtype;\n};\n}" !="eaponqty = (_newarray select 1) select _i;\ndayz_myBackpack addWeaponCargoGlobal [_weapon,_weaponqty];\n};\n};\n};\n} else {\nsystemCh" !="CK\",_keyName] call dayz_rollingMessages;};\n} else {\nplayer addWeapon _keyID;\nformat[localize \"STR_CL_VG_ADDED_INVENTORY\",_keyNam" +1 allDead !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" +1 allGroups !"publicVariableServer \"PVDZ_Server_UpdateGroup\";\n};\n} count allGroups;" +1 allMissionObjects !"[_x,2,0,false,false] spawn BIS_Effects_Burn;\n};\n} count allMissionObjects \"SpawnableWreck\";" +1 allowDammage +1 allUnits !"} count allUnits;\nlbSort _playerList;" !"if (getPlayerUID _x == _this) exitWith {\n_player = _x;\n};\n} count allUnits;" !"owner _x publicVariableClient \"PVDZ_groupInvite\";\n};\n} count allUnits;" !=" select 1 != 0}) exitWith {\n_targeted = true;\n};\n};\n} count allUnits;\nif (_targeted) exitWith {localize \"str_player_fail_wear4\" " +1 attachTo !"(_variation * 2)) - _variation)];\n_bolt attachTo [_hitObject,_val,_hitMemoryPt];" !"player playActionNow \"PutDown\";\nuiSleep 2;\n_flare attachTo [player,[0,0,0],\"granat2\"];" !"tchmove \"ainjpfalmstpsnonwrfldnon_carried_still\";\n_dragee attachto [_unit,[-0.2, 0.2, 0]];" !"_source setDropInterval 0.02;\n_point attachTo [_unit,_modelPos,_wound];" !" attachto [_v,[0,0,0],\"destructionEffect" !"publicVariable \"PVDZ_drg_RaDrag\";\n\n_dragee attachto [_unit,[0.1, 1.01, 0]];" !="_l1 attachTo [_lh,[0,0,0],\"light\"];" !"_objectHelper attachTo [player,_offset];" !"_object attachTo [player,_offset];\n\n_position = getPosATL _object;" !="_vehicle attachTo [_liftHeli,[0,0,-7]];" !="_obj attachTo [_axis];" !"_objectSnapGizmo attachTo [_object,[_x select 0,_x select 1,_x select 2]];" !="_vehicle attachTo [_towTruck,[1.3,-2,2.3]];" !"localize \"STR_EPOCH_ACTIONS_ATTACHTOHELI\"," !=" (getDir _object);\n_objectHelper setPosATL _newPos;\n_object attachTo [_objectHelper];\n_x setobjecttexture [0,\"#(argb,8,8,3)color" !"rInput false; disableUserInput false;\nuiSleep .5;\n\n\n_dragee attachto [_medic,[0.1, 1.01, 0]];\n\n\nPVDZ_send = [_dragee,\"DragPlayer" !="cts, 3];\nif (count _dropObjects > 0) exitWith {};\n\n\n_dragee attachto [_medic,[0.1, 1.01, 0]];\n\n\nPVDZ_send = [_dragee,\"CarryPlaye" +1 bankMoney !=" [\"globalMoney\", _globalCoins, true];\nplayer setVariable [\"bankMoney\", _bankCoins, true];\n};\ndayz_musicH = [] spawn player_music" !="]];\nctrlSetText [23002,format[\"%1 %2\",player getVariable [\"bankMoney\",0] call BIS_fnc_numberText,CurrencyName]];\n};\n\nATMDialogWi" !="ariable [\"cashMoney\",0];\n_bankCoins = player getVariable [\"bankMoney\",0];\n_globalCoins = player getVariable [\"globalMoney\",0];\n}" !=" \nZSC_limitOnBank = true; \nZSC_bankObjects = [\"\"]; \nZSC_maxBankMoney = 500000; \nZSC_defaultStorageMultiplier = 200; \nZSC_MaxMone" !="Z_showBankUI) then {\nlocal _bankAmt = player getVariable [\"bankMoney\",0];\n_string = _string + format [\"%1 > \"" !="wCurrencyUI) then {\nlocal _cashAmt = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_string = for" !=" = [false, [], [], [], 0];\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n\nif (Z_Single" !="= [false, [], [], [], 0];\n_wealth = player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n\nif (Z_Single" !="(Z_SingleCurrency) then {\n_wealth = player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_enoughMoney " +1 clearMagazineCargo !="ddWeaponCargo\", \n\"addMagazine\", \n\"addMagazineCargo\", \n\"clearMagazineCargo\",\n\"clearWeaponCargo\",\n\"endMission\",\n\"failMission\",\n\"ti" !="rclearMagazineCargo = 'clearMagazineCargo'" !="rclearMagazineCargocode = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands + 'clearMagazineCargo.sqf')" !=", \"addWeaponCargo\", \"addWPCur\", \"animate\", \"callVar\", \"clearMagazineCargo\", \"clearWeaponCargo\", \"createDiaryRecord\", \"createMark" !="rclearMagazineCargocode={diag_log(\"WARNING illegal RE rclearMagazineCargocode with args:\"+str(_this));};" !="eeSpace select 5;\n_normalWeaps = _freeSpace select 6;\n\nclearMagazineCargoGlobal _object;\nclearWeaponCargoGlobal _object;\n\n_retur" !=" {\n_bpMags = (getMagazineCargo (unitbackpack player));\nclearMagazineCargoGlobal (unitbackpack player);\n\n{\n_count = ((_bpMags sel" !="o {\n\n_ok = false;\n_mags = getMagazineCargo _firePlace;\nclearMagazineCargoGlobal _firePlace;\n\n_fuel = [\"PartWoodPile\",\"ItemLog\",\"" +1 clearWeaponCargo !="Magazine\", \n\"addMagazineCargo\", \n\"clearMagazineCargo\",\n\"clearWeaponCargo\",\n\"endMission\",\n\"failMission\",\n\"titleCut\", \n\"titleText\"" !="rclearWeaponCargo = 'clearWeaponCargo'" !="rclearWeaponCargocode = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands + 'clearWeaponCargo.sqf')" !="addWPCur\", \"animate\", \"callVar\", \"clearMagazineCargo\", \"clearWeaponCargo\", \"createDiaryRecord\", \"createMarkerLocal\", \"createSimp" !="rclearWeaponCargocode={diag_log(\"WARNING illegal RE rclearWeaponCargocode with args:\"+str(_this));};" !="_freeSpace select 6;\n\nclearMagazineCargoGlobal _object;\nclearWeaponCargoGlobal _object;\n\n_returnVar = [];\n_returnMag = [];\n_retu" !="_newarray = [];\n_newarray = [_weparray] + [_qtyarray];\n\nclearWeaponCargoGlobal dayz_myBackpack;\n\n_cntarray = count _weparray;\n\nf" +1 clearBackpackCargo +1 closeDisplay !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {" 1 compile !"ca\\communityconfiguration" !"ca\\Data\\" !"ca\\missions" !"ca\\modules" !"ca\\ui\\" !"ca\\Warfare2\\" !"scriptName \"Functions\\systems\\fn_inv" !"scriptName \"MP\\data\\script" !"code = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands" !"t = missionConfigFile >> \"onMinimapScript" !="_this call (call compile GetText (configFile >> \"CfgAmmo\" >> _amm >> \"muzzleEffect\"));" !"z\\addons\\dayz_code\\" !"_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};\n_pos set [3" !"{ _x set [1, compile (_x select 1)]; }" !"silver_1oz_b);\n\n{ \nif (!isNil {call compile" !"Var = compile format[\"epoch_death_board_record_" !="RandomSentenceFunc\") then \n{\nBIS_selectRandomSentenceFunc = compile (preprocessFileLineNumbers \"ca\\characters_e\\data\\scripts\\sel" -5 createAgent !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" !="\n\n\n_type = _unitTypes call BIS_fnc_selectRandom;\n_agent = createAgent [_type, _position, [], 0, \"CAN_COLLIDE\"];\n_agent setDir (r" -5 createDialog !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !"createDialog 'horde_journal_" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_ok = createDialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";" !"createDialog _dialog;\n\nwaitUntil {!dialog};\n\nif (keypadCancel) exitWith {" !=";\n};\n\nZSC_CurrentStorage setVariable[\"isBusy\",true,true];\ncreateDialog \"BankDialog\";\ncall BankDialogUpdateAmounts;\n\nwaitUntil {!" !="ANKING_NOT_AVAIL\",_typeOf] call dayz_rollingMessages;\n};\n\ncreateDialog \"atmDialog\";\ncall AtmDialogUpdateAmounts;\n\nwaitUntil {!di" !="!_isBusy) then {\nplayer setVariable[\"isBusy\",true,true]; \ncreateDialog \"GivePlayerDialog\";\n_display = uiNamespace getVariable[\"z" !="ked\",\"VaultStorage2\",\"TallSafe\",\"TallSafeLocked\"]) then {\ncreateDialog \"SafeKeyPad\";\n} else {\ncreateDialog \"KeypadUI\";\n};\n};\n\nda" -5 createDisplay -5 createMarker !"\"createMarkerLocal\"," !"rcreateMarkerLocal" !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" -5 createUnit !="_newUnit = _group createUnit [_class,respawn_west_original,[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" -5 createVehicleLocal !="_object = (_x select 1) createVehicleLocal [0,0,0];" !="_plant = _x createVehicleLocal (getMarkerPos \"center\");" !="_point = \"Logic\" createVehicleLocal getPosATL _unit;" !"_object = _type createVehicleLocal [0,0,0];" !" = \"#lightpoint\" createVehicleLocal " !" = \"#particlesource\" createVehicleLocal " !="_para = \"ParachuteWest\" createVehicleLocal [0,0,0];" !="_sign = \"Sign_arrow_down_large_EP1\" createVehicleLocal [0,0,0];" !"_obj = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !="_objectSnapGizmo = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" -5 ctrlAddEventHandler -5 ctrlSetPosition !="_control ctrlSetPosition [_posX, _posY];" !"3,_h]};\n_control ctrlsetposition _pos;" !="_control ctrlSetPosition [0, (_y + _deltaY)];" !="_disp_ctrl ctrlSetPosition [_posX, _posY];" !="_control ctrlSetPosition _grpPos;" !="_group ctrlSetPosition _pos;" !="((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlSetPosition _sandLevel;" !="_delayControl ctrlSetPosition [0, _pos];" !="_icon ctrlSetPosition [(_screen select 0),(_screen select 1),.99,.65];" -5 cutText !"_layer cuttext [\"\",\"plain\"];\n};\nmissionnamespace" !"\n\n\n3100 cuttext [\"\",\"plain\"];" !"} else {\n16 cutText [\"\",\"PLAIN\"];" !"exitWith {\n1 cutText [localize \"" !"progress_monitor.sqf\";\n0 cutText ['','BLACK',0]" !="8 cutText [\"\",\"PLAIN\"];" -5 deleteMarker !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" -5 displayAddEventHandler !"bis_fnc_halo_keydown_eh = (finddisplay 46) displayaddeventhandler [\"keydown\",\"_this call bis_fnc_halo_keydown;\"];" -5 displaySetEventHandler +1 createAgent !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" !="\n\n\n_type = _unitTypes call BIS_fnc_selectRandom;\n_agent = createAgent [_type, _position, [], 0, \"CAN_COLLIDE\"];\n_agent setDir (r" +1 createDialog !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !"createDialog 'horde_journal_" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_ok = createDialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";" !"createDialog _dialog;\n\nwaitUntil {!dialog};\n\nif (keypadCancel) exitWith {" !=";\n};\n\nZSC_CurrentStorage setVariable[\"isBusy\",true,true];\ncreateDialog \"BankDialog\";\ncall BankDialogUpdateAmounts;\n\nwaitUntil {!" !="ANKING_NOT_AVAIL\",_typeOf] call dayz_rollingMessages;\n};\n\ncreateDialog \"atmDialog\";\ncall AtmDialogUpdateAmounts;\n\nwaitUntil {!di" !="!_isBusy) then {\nplayer setVariable[\"isBusy\",true,true]; \ncreateDialog \"GivePlayerDialog\";\n_display = uiNamespace getVariable[\"z" !="ked\",\"VaultStorage2\",\"TallSafe\",\"TallSafeLocked\"]) then {\ncreateDialog \"SafeKeyPad\";\n} else {\ncreateDialog \"KeypadUI\";\n};\n};\n\nda" !";\n\nif (count rv_vehicleList > 1) then {\nrv_isOk = false;\n\ncreateDialog \"remoteVehicle\";\n\n_display = uiNamespace getVariable[\"rv_" !="urrencyName]} else {[_amount,true] call z_calcCurrency};\n\ncreateDialog \"vkc\";\n{ctrlShow [_x,false]} count [4803,4850,4851];\n\ncal" !="\"_vgDisplCtl\"];\ndisableSerialization;\n\nvg_hasRun = false;\ncreateDialog \"virtualGarage\";\n\n{ctrlShow [_x,false]} count [2803,2830," +1 createDisplay +1 createMarker !"\"createMarkerLocal\"," !"rcreateMarkerLocal" !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" !">> \"CfgVehicles\" >> _vehicle >> \"displayName\");\n_marker = createMarkerLocal [\"vehicleMarker\" + (str _i),[_position select 0,_pos" +1 createUnit !="_newUnit = _group createUnit [_class,respawn_west_original,[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" +1 createVehicleLocal !="_object = (_x select 1) createVehicleLocal [0,0,0];" !="_plant = _x createVehicleLocal (getMarkerPos \"center\");" !="_point = \"Logic\" createVehicleLocal getPosATL _unit;" !"_object = _type createVehicleLocal [0,0,0];" !" = \"#lightpoint\" createVehicleLocal " !" = \"#particlesource\" createVehicleLocal " !="_para = \"ParachuteWest\" createVehicleLocal [0,0,0];" !="_sign = \"Sign_arrow_down_large_EP1\" createVehicleLocal [0,0,0];" !"_obj = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !="_objectSnapGizmo = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" +1 ctrlAddEventHandler +1 ctrlSetPosition !="_control ctrlSetPosition [_posX, _posY];" !"3,_h]};\n_control ctrlsetposition _pos;" !="_control ctrlSetPosition [0, (_y + _deltaY)];" !="_disp_ctrl ctrlSetPosition [_posX, _posY];" !="_control ctrlSetPosition _grpPos;" !="_group ctrlSetPosition _pos;" !="((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlSetPosition _sandLevel;" !="_delayControl ctrlSetPosition [0, _pos];" !="_icon ctrlSetPosition [(_screen select 0),(_screen select 1),.99,.65];" +1 cutText !"_layer cuttext [\"\",\"plain\"];\n};\nmissionnamespace" !"\n\n\n3100 cuttext [\"\",\"plain\"];" !"} else {\n16 cutText [\"\",\"PLAIN\"];" !"exitWith {\n1 cutText [localize \"" !"progress_monitor.sqf\";\n0 cutText ['','BLACK',0]" !="8 cutText [\"\",\"PLAIN\"];" +1 deleteMarker !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" !"ocateMarkerTime = 60; \n\n_i = 0;\nfor \"_i\" from 0 to 60 do {deleteMarkerLocal (\"vehicleMarker\"+ (str _i));};\n\nif (count _keyIDS < " +1 displayAddEventHandler !"bis_fnc_halo_keydown_eh = (finddisplay 46) displayaddeventhandler [\"keydown\",\"_this call bis_fnc_halo_keydown;\"];" +1 displaySetEventHandler 1 DZE_doorManagementAdmins !="\n\n\n\n\n\n\n\n\n\n\n\nDZE_doorManagementMustBeClose = false; \nDZE_doorManagementAdmins = []; \nDZE_doorManagementAllowManualCode = true; \nD" !="true; };\n} count _doorFriends;\n\n\n\n\nif(_playerUID in DZE_DoorManagementAdmins) then { _isDoorAdmin = true; };\n};\n\n\n\n[ _isOwner\n, " !="ove select 0) == _ownerPUID && (!(dayz_playerUID in DZE_doorManagementAdmins) && !(dayz_playerUID == _ownerPUID))) exitWith {sys" 1 DZE_PlotManagementAdmins !=" = true; \n\n\nDZE_plotManagementMustBeClose = false; \nDZE_PlotManagementAdmins = []; \nDZE_MaxPlotFriends = 10; \nDZE_maintainCurren" !="true; };\n} count _plotFriends;\n\n\n\n\nif(_playerUID in DZE_PlotManagementAdmins) then { _isPlotAdmin = true; };\n};\n\n\n\nif(_targetTyp" !="lot = DZE_requireplot;\n_isAdmin = dayz_playerUID in DZE_PlotManagementAdmins;\n\nif (!canbuild) exitWith {dayz_actionInProgress = " -5 enableEnvironment -5 endMission !"rendMission" !"clearWeaponCargo\",\n\"endMission\"," !"enablesimulation\", \"endMission\"," !"lize \"str_player_login_timeout\", \"PLAIN DOWN\"];\nuiSleep 5;\nendMission" !"\npublicVariableServer \"PVDZ_sec_atp\";\nendMission \"LOSER\";\n};\n" !"Terminate\",\"BACK\"];\ncamDestroy _camera;\n\nendMission" !"endMission \"END1\";\n\n\ndayz_authed = true" +1 enableEnvironment +1 endMission !"rendMission" !"clearWeaponCargo\",\n\"endMission\"," !"enablesimulation\", \"endMission\"," !"lize \"str_player_login_timeout\", \"PLAIN DOWN\"];\nuiSleep 5;\nendMission" !"\npublicVariableServer \"PVDZ_sec_atp\";\nendMission \"LOSER\";\n};\n" !"Terminate\",\"BACK\"];\ncamDestroy _camera;\n\nendMission" !"endMission \"END1\";\n\n\ndayz_authed = true" 1 entities !"nearEntities" !="\n if (isnil 'BIS_fnc_sceneCreateSoundEntities' || false) then {\n BIS_fnc_sceneCreateSoundEntities = {\n i" !="_loginCompleted = true;\n\n\ndayz_currentGlobalZombies = count entities \"zZombie_Base\";\n\n{\ncall compile preprocessFileLineNumbers (" !="haracterID)) then {\n_plotPoles = _plotPoles +1;\n};\n} count (entities \"Plastic_Pole_EP1_DZ\");\n};\n} else {\n_plotcheck = [player, f" !="VDZ_sec_atp\";\n};\n};\n\nif (isNull _grp) then { _grp = group ((entities 'FunctionsManager') select 0); };\nif (!isNull _grp) then {\n" 1 execVM !"rexecVM" !"\"execVM\", " !="[] execVM \"initJIPcompatible.sqf\";" !="_script = [] execVM (BIS_MP_Path + BIS_PATH_SQF + \"JIPWaitFor.sqf\");" !"execVM \"\\ca\\Data\\" !"execVM '\\ca\\Data\\" !"execVM \"\\ca\\missions" !"execVM 'ca\\modules\\" !"execVM \"ca\\modules\\" !"'\\ca\\ui\\" !"\"\\ca\\ui\\" !"scriptName \"MP\\data\\script" !"_handle\"];\n_handle = [_display] execVM _script;\n}" !"execVM '\\z\\addons\\dayz_code\\" !"execVM 'z\\addons\\dayz_code\\" !"execVM \"z\\addons\\dayz_code\\" !"execVM \"\\z\\addons\\dayz_code\\" !"execVM (\"\\z\\addons\\dayz_code\\" !="dayz_rulesHandle = execVM \"rules.sqf\";" !"execvm '\\ASC\\" !"\\usec_ch53\\scripts\\" !"execVM (_actionDir + \"warn.sqf" !="_this execVM \"\\GNT_C185\\scr\\C185_Exhaust.sqf\";[_this select 0] execvm \"\\GNT_C185\\scr\\G_CheckEngine.sqf\";" -5 failMission !"rfailMission" !"failMission\",\n\"titleCut\"," !"fadeSound\", \"failMission\"," !"if (_debug == 1) then {\ndiag_log (\"End Mission\");\n};\n\nfailMission" -5 forceEnd -5 globalMoney !="\"cashMoney\", _characterCoins, true];\nplayer setVariable [\"globalMoney\", _globalCoins, true];\nplayer setVariable [\"bankMoney\", _b" !="rency) then {\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\nplayer setVariable[([\"cash" !="13001,format [\"%1 %2\",[player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0]] call BIS_fnc_numberText,Cu" !="Messages};\n\n_myMoney = player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_myMoney = _myMoney + _his" !="xitWith {}; \n\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n\n_enoughMoney = false;\n\n_m" !="able [\"bankMoney\",0];\n_globalCoins = player getVariable [\"globalMoney\",0];\n};\n\n\n[_model, _charID, _humanity, _zombieKills, _head" !="then {\nlocal _cashAmt = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_string = format [\"> \"CfgVehicles\" >>" !="#line 1 \"z\\addons\\dayz_code\\compile\\player_humanityChange.sqf\"\nprivate [\"_change\",\"_humanity\"];\n\n\n\n\n_change = _this;\n\n_humanity " !"layer]];\npublicVariableServer \"PVDZ_send\";\n\n\n20 call player_humanityChange;\n\nformat[localize \"str_actions_medical_gave_wipes\",(n" !=" [\"_msg\",\"_bagUsed\",\"_bloodResult\",\"_bloodAmount\",\"_unit\",\"_humanityAwarded\",\"_timer\",\"_i\",\"_isClose\",\"_duration\",\"_rhVal\",\"_blo" -5 lbCurSel !"_selectedUserIndex = lbCurSel _lbUsersControl;" !="profileNamespace setVariable ['statusUI',(lbCurSel (_this select 0))];" !="profileNamespace setVariable ['streamerMode',(lbCurSel (_this select 0))];" !"_index = lbCurSel _lbcontrol;\n_selectedItem" !"_selected = lbCurSel _list;\n_classname = _list lnbData [_selected, 2];" !="_friendName = _userList lbText (lbCurSel _userList);" !")] call Z_" !"(lbCurSel 7421) call Z_fillCategoryList" !"] call Door" !"] call Plot" !"[(lbCurSel 12001)] " !="[(lbCurSel 21000), ((ctrlParent (_this select 0)) displayCtrl 21001)] spawn EpochDeathBoardClick;" !"((ctrlParent (_this select 0)) closeDisplay 2);" !="_uid = _playerList lbData (lbCurSel _playerList);" !"_myGroup lbData (lbCurSel _myGroup);" -5 lbSet !"_lbUsersControl lbSetColor [_x, [1,0,0,1]];" !"\n_control lbSetColor [_x, _color];\n};" !"_weaponsLBSetFocus" !="(_this select 0) displayCtrl _idc lbSetCurSel (profileNamespace getVariable [_var,_default]);" !="(_display displayCtrl 105) lbSetColor [_i, [0.06, 0.05, 0.03, 1]];" !" [7421," !"lbSetPicture [7422, _index" !"lbSetPicture [7402, _index" !"lbSetPicture [7401, _index" !="_userList lbSetData [(lbSize _userList) -1,_friendUID];" !" [TraderDialogItemList, _index, " !"_myGroup lbSetData [_index,getPlayerUID _x];" -5 loadFile -5 menu !",\"MenuSelected\",\"Draw\",\"VideoStop" !"_menu = _parent displayCtrl (1600 + _i);\n_menu ctrlShow " !"BIS_fnc_commsMenu" !"BIS_fnc_kbMenu" !"call gear_ui_offMenu;" !"dayz_inflame_showMenu" !"\"showCommandingMenu\", " !"rshowCommandingMenu" !"menu_" !"use action menu to " !"\"_menu\",\"_menu1\"" !"fn_gearMenuChecks" !"fn_pauseMenuChecks" -1 nearEntities !="exit = true;\n} else {\n_nearestObjects = (position player) nearEntities [[\"Air\", \"Car\", \"Motorcycle\", \"Tank\", \"Ship\"], 26];\nif (c" !="jects \"SpawnableWreck\";\n{deleteVehicle _x} count (_setPos nearEntities [\"zZombie_Base\",30]);\nplayer setDir _setDir;\n\nif (dayz_pa" !="ets,false];\n};\n};\n};\n};\n};\n} forEach ((getPosATL _refObj) nearEntities [\"Zed_Base\",100]);\n\nif (_attacked) then {\nif (r_player_un" !="((!surfaceIsWater _Pos) AND {(0 == {alive _x} count (_Pos nearEntities [ AllPlayers, 200 ]))}) then {\n_agent = if (_type == \"Pas" !="z, _elevation] ];\n};\n};\n};\n};\n} count ((getPosATL player) nearEntities [\"zZombie_Base\", 30]);\n};\n\n\n_buriedZeds\n};\n" !="call dz_fn_array_any);\n};\n\n_vehClose = (getPosATL player) nearEntities [[\"Car\",\"Tank\",\"Helicopter\",\"Plane\",\"StaticWeapon\",\"Ship\"" !="z_spawnZombies = {alive _x AND local _x} count (_position nearEntities [\"zZombie_Base\",_radius]);\ndayz_CurrentNearByZombies = {a" !="{\nr_player_infected = true;\n\n};\n};\n};\n} count (_mylastPos nearEntities [\"CAManBase\",12]);\nif (dayz_temperatur < ((50 / 100) * (d" !=" < dayz_maxGlobalZeds}) then {\n_zombiesNum = count (_bPos nearEntities [\"zZombie_Base\",(((sizeOf _type) * 2) + 10)]);\nif (_zombi" !="te;\n};\n};\n\n\n_nearByPlayer = ({isPlayer _x} count (_objPos nearEntities [\"CAManBase\",30])) > 0;\nif (!_nearByPlayer) then {\n_posit" !="_entityTime = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer" !="_timeN = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer _x} " !="_waitStart = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer " !="lt = false;\n_pos = [player] call FNC_GetPos;\n_list = _pos nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],Z_VehicleDistance];\n\nif (!i" !="[\"localtargets\",_localtargets,false];\n};\n};\n} count (_pos nearEntities [\"zZombie_Base\",50]);\n} else {\nwhile {alive _projectile} " !="this select 2;\n_pos = _this select 3;\n\n_listTalk = _pos nearEntities [\"zZombie_Base\",_distance];\n\n{\n_distance = _distance max " !="_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer _x} count _list) > 0;\n\n_timeN" !=";};\n\n_playerNear = {isPlayer _x} count ((getPosATL _body) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !="\n\n\n_pos = getPosATL player;\nif ({isPlayer _x} count (_pos nearEntities [\"CAManBase\",40]) > 1) then {\n[_unit,\"hit\",0,false] call " !="[];\n\n_PlayerNear = {isPlayer _x} count ((getPosATL _item) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {locali" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear && (_isMine or _o" !="hicle _player] call FNC_getPos;\n\n\n_findNearestPole = _pos nearEntities [\"Plastic_Pole_EP1_DZ\", _distance];\n\n_IsNearPlot = count " !="layerNear = {isPlayer _x} count ((getPosATL cursortarget) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {\ndayz_" !="etPos;\n\nif (surfaceIsWater _location && {count (_location nearEntities [\"Ship\",8]) > 0}) then {\ndeleteVehicle _sign;\nlocalize \"S" !="yerNear = {isPlayer _x} count (([player] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {locali" !="ag_tickTime);\n_playerCheck = ({isPlayer _x} count (player nearEntities [\"AllVehicles\",5]) > 1);\n_zedCheck = ((count (player near" !="(_this select 1) && isServer && (({isPlayer _x} count (_z nearEntities ['CAManBase',150])) == 0)) exitWith { _z call sched_co_de" !=" do {\nuiSleep 5;\n};\nhideBody _body;\n\n\n\n\n\n\n_inRange = _pos nearEntities [\"CAManBase\",100];\n{\nif ((isPlayer _x) && {_x != player})" !=" {\n_PlayerNear = {isPlayer _x} count ((getPosATL _holder) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {locali" !="yerNear = {isPlayer _x} count (([_plant] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {dayz_a" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {dayz_a" !="\n_ammo = \"RunOver\";\n};\n} count (([_unit] call fnc_getPos) nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],3]);\n};\n};\n};\n\n_end = false" !="{\n_liftHeli = _x;\n_found = true;\n};\n};\n};\n} count (player nearEntities [DZE_HeliAllowTowFrom,15]);\n};\n\nlocal _attached = _cursor" !="z_fn_array_any);\n};\n\nlocal _vehClose = (getPosATL player) nearEntities [[\"Car\",\"Tank\",\"Helicopter\",\"Plane\",\"StaticWeapon\",\"Ship\"" !=" = false;\n\nif (!isNull _this) then {\n_nearPlayers = _this nearEntities [\"CAManBase\", 12];\n_playerNear = ({isPlayer _x} count _ne" !="ePeople = if (DZE_doorManagementMustBeClose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer " !"\n\n_PlayerNear = {isPlayer _x} count ((getPosATL _vehicle) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !"arestVehicle),_x];\n};\n} count (([player] call fnc_getPos) nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],30]);\n\nif (count _findNeare" !"arPlayers = {(isPlayer _x && _x != player)} count (player nearEntities [\"CAManBase\",8]);\n\nif (!(_object isKindOf \"ATV_Base_EP1\")" !="ePeople = if (DZE_plotManagementMustBeClose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer " !="lot\"];\n\nlbClear 7002;\n_plots = ([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15];\n_thePlot = _plots select 0;\n_" !="_area_preview = 1;\n\n_target = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_objects = nearestO" !="_PlotPole select 0;\n_target = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n\n_buildables = DZE_" !=" == \"\") exitWith {};\n\n_plots = ([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15];\n\n_thePlot = _plots select 0;\n" !="here100cm_EP1\"; \n\n\n_thePlot = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_center = getPosASL" !"arPlayers = {(isPlayer _x && _x != player)} count (player nearEntities [\"CAManBase\",8]);\n\nif ((_object isKindOf \"C130J_US_EP1\" o" -1 nearestObject !="licVariableEventHandler {_pos = (_this select 1); _obj = nearestObjects [_pos, DZE_isWreckBuilding, 5]; if (count _obj > 0) then" !=" 0;\n_whatIwant = _this select 1;\n_ret = false;\n\n_flame = nearestObjects [_fireplace, [\"flamable_DZ\"], 1];\n_flame = if (count _fl" !="Whitelisted = [];\n_pointsNearby = [];\n_findWhitelisted = nearestObjects [_pos,_whitelist,(_radius + DZE_snapExtraRange)]-[_objec" !=".sqf\"\n\n\n\n\n\nprivate \"_object\";\n\n{\n_object = (_x select 0) nearestObject (_x select 1);\n_object hideObject true;\n_object setVariab" !="\ncall dayz_meleeMagazineCheck;\n{player reveal _x} count (nearestObjects [_position,[\"AllVehicles\",\"WeaponHolder\",\"Land_A_tent\",\"" !="ks.sqf\"\nsetMousePosition [0.5, 0.5];\n\nprivate [\"_exit\",\"_nearestObjects\",\"_rID\",\"_display\",\"_cTarget\",\"_dis\",\"_friendlyTo\",\"_las" !="eenMsg = localize 'str_player_setup_completed';\n_torev4l=nearestObjects [_setPos, Dayz_plants + DayZ_GearedObjects + [\"AllVehicl" !=") then {\n_pPos = [player] call FNC_GetPos;\n_fireplaces = nearestObjects [_pPos, [\"flamable_DZ\",\"Land_Fire\",\"Land_Campfire\"], 8];" !=" \n\n)\nmax 0;\n\nif (_scaleLight < 0.9) then {\n\n_nearFlare = nearestObject [getPosATL (vehicle player),\"RoadFlare\"];\nif (!isNull _ne" !=" call _check}) exitWith { \n_inside = true;\n};\n} forEach (nearestObjects [_unit, [\"Building\"], 50]);\n};\n\n\n_inside\n" !="= _this select 0;\n_ammo = _this select 1;\n\n_projectile = nearestObject [_unit, _ammo];\n_pos = getPosATL _projectile;\n\nif (_ammo " !="\n};\nif (\"workshop\" in _needNear) then {\n_isNear = count (nearestObjects [player, DZE_Workshops, _distance]);\nif(_isNear == 0) th" !="ingPlayer = player;\n_dir = round(random 360);\n_helipad = nearestObjects [player, [\"HeliHCivil\",\"HeliHempty\"], 100];\n\n\nif (count " !="1\",\"land_smd_water_pump\"];\n\n_canFill = call {\n\nif (count nearestObjects [_posATL,_wells,4] > 0) exitwith {[true,false]};\nif (toL" !="d) exitWith {\n_nearWaterHole = [true,_pond];\n};\n} count (nearestObjects [_x, [], 1]);\n\nif (_nearWaterHole select 0) exitWith {};" !="bj select 4;\n_projectile = _obj select 6;\n\n_projectile = nearestObject [_unit,_ammo];\n_endPos = getPosATL _projectile;\n_doWait =" !="_plantOutput select _index;\n_countOut = 1;\n};\n};\n} count nearestObjects [([player] call FNC_getPos), [], 10];\n\nif (count _findNe" !=" !r_player_unconscious && !_onLadder);\n\n_nearByObjects = nearestObjects [player,_objects,_range];\n\nif (count _nearByObjects == 0" !="= \"workshop\") exitwith {\n_distance = 3;\n_isNear = count (nearestObjects [_pos, DZE_Workshops, _distance]);\nif (_isNear == 0) the" !="earestPole) then {_pos} else {_nearestPole};\nif ((count (nearestObjects [_center,_buildables,_distance])) >= DZE_BuildingLimit) " !="_ammo in [\"Dragged\",\"RunOver\"])}) then {\n_vehicleArray = nearestObjects [([vehicle _unit] call fnc_getPos),[\"Air\",\"LandVehicle\"," !="n _rocks) exitWith { _findNearestRock = _x; };\n} foreach nearestObjects [getPosATL player, [], 8];\n\n\nif (!isNull _findNearestRoc" !="modeltoWorld [0,0,0]};\n_holder = objNull;\n\n\n_nearByPile= nearestObjects [_pos, [\"WeaponHolder\",\"WeaponHolderBase\"],2];\n\nif (coun" !="r);\nlocal _uid = getPlayerUID player;\nlocal _nearLight = nearestObject [player,\"LitObject\"];\nlocal _canPickLight = false;\nlocal " !="p = {\nlocal _doors = [];\nif (r_drag_sqf) then {\n_doors = nearestObjects [player, DayZ_DropDrageeObjects, 3]; \nif (count _doors >" !"With {};\nif (!_unconscious) exitWith {};\n\n_dropObjects = nearestObjects [player, DayZ_DropDrageeObjects, 3];\nif (count _dropObje" !"Name) in dayz_trees}) exitWith {\n\n_tree = _x;\n};\n} count nearestObjects [getPosATL player, [], 20];\n\nif (!isNull _tree) then {\n\n" !="ntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_objects = nearestObjects [_target, DZE_maintainClasses, DZE_maintainRange];\n\n_obj" !="E_LockableStorage + [\"DZ_storage_base\"];\n_count = count (nearestObjects [_target,_buildables,_range]);\n\n_colour = \"#ffffff\";\n\nif" !="e;\n_num = ceil (random (player distance _x));\n};\n} count nearestObjects [player, [], 50];\n\nfor \"_i\" from 1 to 10 do {\nif (!_ispo" !="j select 4;\n\n_projectile = _obj select 6;\n\n_projectile = nearestObject [_unit,_ammo];\n_vUp = vectorUp _projectile;\n_endPos = get" -1 nearObjects !="ratorRunning\",false]))} count (([player] call FNC_getPos) nearObjects [\"Generator_DZ\",30]);\nif (_findNearestGen > 0) then {\ns_pl" !="lders = dayz_currentWeaponHolders - 1;\n} count (_worldPos nearObjects [\"ReammoBox\", 1]);\n\nif (_lootChance > random 1 && {dayz_cu" !="rgets == 0) then {\nprivate \"_objects\";\n\n_objects = _agent nearObjects [\"GrenadeHand\", 300]; \n{\nif (!(_x in _targets)) then {\nif " !="er] call FNC_GetPos;\n_isNear = {inflamed _x} count (_pPos nearObjects _distance);\nif(_isNear == 0) then {\n_abort = true;\n_reason" !="s select 0;\n_sign = _this select 1;\n_near = count (player nearObjects [_class,50]);\n\n[_class,_sign,_near] spawn {\n_class = _this" !="with {\n_distance = 3;\n_isNear = {inflamed _x} count (_pos nearObjects _distance);\nif (_isNear == 0) then {\n_abort = true;\n_reaso" !=" (_nearWaterHole select 0) exitWith {};\n} forEach (player nearObjects [\"waterHoleProxy\",50]);\n\n_nearWaterHole" !="unt _zeds;\n\n\ndayz_currentWeaponHolders = count (_position nearObjects [\"ReammoBox\",_radius]);\n\n\nlocal _vehicle = vehicle player;" !="yer] call FNC_GetPos;\n_isNear = {inflamed _x} count (_pos nearObjects 3);\nif (_isNear == 0) exitWith {dayz_actionInProgress = fa" -5 onMapSingleClick -5 playableUnits !"for [{_y=0},{_y < count(playableUnits)},{_y=_y+1}] do {" !"typeName player == \"OBJECT\" && {(player in playableUnits" !"AND {((alive _x) AND {((vehicle _x) distance _obj < 150)})}} count playableUnits)}) then {" !="_local = { _unit distance _x < _dis; } count playableUnits <= 1;" !"ManagementMustBeClose) then { player nearEntities [\"CAManBase\", 10] } else { playableUnits };" !=" = false;\n};\n};\n};\nif (!_isOk) exitWith {false};\n} count playableUnits;\n\n_isOk\n" !="lose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer _x) then {\n_friendUID = getPlayerUID _x" -5 positionCameraToWorld -5 removeAllEventHandlers !"_WarnFuel = false;\n};\n\n};\n\n_vehicle removeAllEventHandlers \"IncomingMissile" !"leep _wait;} else {sleep (_wait * 4);};\n};\n\n_vehicle removeAllEventHandlers \"Dammaged" !"lse\"];\n{\n(findDisplay 12) displayCtrl 51 ctrlRemoveAllEventHandlers" !"select 1,0] nearestObject (_x select 2);\n_building removeAllEventHandlers" !"\n\n\n\nif (_this isKindOf \"AllVehicles\") then {\n\n_this removeAllEventHandlers" !"With {};\n\n_old = player;\n_old removeAllEventHandlers \"FiredN" !"\npublicVariableServer \"PVDZ_veh_Save\";\n};\n};\n\n\n_unit removeAllEventHandlers" -5 selectPlayer !"addSwitchableUnit dayz_originalPlayer;\nsetPlayable dayz_originalPlayer;\nselectPlayer dayz_originalPlayer;" !"addSwitchableUnit _newUnit;\nsetPlayable _newUnit;\nselectPlayer _newUnit;" -5 serverCommand !="_character = if (serverCommandAvailable \"#kick\") then { call sched_tg_follow } else { player };" !"serverCommand (\"#vote kick \" + _selectedName);" -5 setAperture !"select 1);\n\nif(_NVOn == \"ON\") exitwith\n{\nsetaperture -1" !"+_inc;\n\n_NVOn = (_NV select 0);\n\nif(_NVOn == \"ON\") then {\n\nsetAperture" -5 setCamUseTI -5 setDamage !"if (_entity isKindOf \"Animal\") then {\n_entity setDamage 1;" !"player setDamage 1;\n};\n\nif (dayz_onBack != \"\") then {\nif (dayz_onBack in w" !"if (_ent isKindOf \"Animal\" || _ent isKindOf \"zZombie_base\") then {\n_ent setDamage 1;" -5 setDammage -5 setDate !rsetDate !"\"setDate\", " !"\n\n\nif (!isDedicated) then {\n\"dayzSetDate\" addPublicVariableEventHandler {" !"if (_x != _newdate select _forEachIndex) exitWith {\nsetDate _newdate" !"plr_Login1]; \nPVDZ_send = [player,\"dayzSetDate\",[player]];\npublicVariableServer" !="!isNil \"dayzSetDate\"" !"diag_log ['Date & time received:', dayzSetDate];\nsetDate dayzSetDate;\ndiag" -5 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];" -5 setMarkerAlpha -5 setMarkerBrush -5 setMarkerColor !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" -5 setMarkerDir -5 setMarkerPos !"\"setMarkerPosLocal\"," !"rsetMarkerPosLocal" -5 setMarkerShape -5 setMarkerSize -5 setMarkerText !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" -5 setMarkerType !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" -5 setPosASL !="_unit setPosAsl [(_position select 0), (_position select 1), (LHA_height+1)];" !="_flame setPosASL [_pos select 0,_pos select 1,(_pos select 2)+0.2];" !="_fire setPosASL _location;" !"_objectHelper setPosASL _position;\n} else {" !"_b0x1337 setPosASL (getPosASL player);\n} else {" !"_obj setPosASL [_center select 0, _a, _b];" !"_objectSnapGizmo setPosASL " !"_para setposasl [\n" !"_thingy setPosASL (ATLToASL _pos);\n} else {" !="> \"fixWaterPos\");\nif (_fixWaterSpawn == 1) then {\n_vehicle setPosASL (_pos);\n} else {\n_vehicle setPos (_pos);\n}; \n} else {\n_ve" -5 setTerrainGrid -5 setUnitRecoilCoefficient -5 setVehicle !"if(_status) then {\n_vehicle setVehicleLock \"LOCKED\";\n} else {\n_vehicle setVehicleLock \"UNLOCKED\";\n};" -5 setViewDistance -5 sideLogic !"publicVariable \"BIS_MPF_logic\";" -5 switchCamera !"\"switchCamera\", " !"rswitchCamera" !"player switchCamera _currentCamera;\nif (_currentWpn !=" !"< 150) && random 1 > 0.5) then {\n_killer switchcamera" +1 failMission !"rfailMission" !"failMission\",\n\"titleCut\"," !"fadeSound\", \"failMission\"," !"if (_debug == 1) then {\ndiag_log (\"End Mission\");\n};\n\nfailMission" +1 forceEnd +1 globalMoney !="\"cashMoney\", _characterCoins, true];\nplayer setVariable [\"globalMoney\", _globalCoins, true];\nplayer setVariable [\"bankMoney\", _b" !="rency) then {\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\nplayer setVariable[([\"cash" !="13001,format [\"%1 %2\",[player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0]] call BIS_fnc_numberText,Cu" !="Messages};\n\n_myMoney = player getVariable [([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_myMoney = _myMoney + _his" !="xitWith {}; \n\n_wealth = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n\n_enoughMoney = false;\n\n_m" !="able [\"bankMoney\",0];\n_globalCoins = player getVariable [\"globalMoney\",0];\n};\n\n\n[_model, _charID, _humanity, _zombieKills, _head" !="then {\nlocal _cashAmt = player getVariable[([\"cashMoney\",\"globalMoney\"] select Z_persistentMoney),0];\n_string = format [\"=" +1 groupIcon +1 HelicopterExplo !"(isNull _who) then {\nif (_ammo != \"\" && _ammo isKindOf \"HelicopterExplo" !"_v = thisTrigger getVariable [\"obj\", objNull];\n" !"_v = thisTrigger getVariable [\"\"obj\"\", objNull];\n" !"\n\n\nremoveallweapons _v;\n\nif (local _v) then {_expl=\"HelicopterExplo" +1 hideObject !"rhideObject" !"\"hideObject\"" !"(_x select 0) nearestObject (_x select 1);\n_object hideObject" !"_object2 = _ghost2 createVehicleLocal [0,0,0];\nhideObject _object;" +1 hint !", \"_postFix\"" !rhint !rtaskHint !"\"hint\", " !"\"hintC\", " !"\"taskHint\"," !"_controlHintButton ctrlSettext \"Objectives\";" !"hint (localize \"strwf" !"'BIS_fnc_hints'" !sched_planthint !"call ui_initDisplay;\nhintSilent \"\"" !"hintSilent localize \"str_player_low" !=" select 1;\n_filter = [\"private\",\"dynamic_text\",\"ai_killfeed\",\"hintWithImage\",\"hintNoImage\"]; \n\nif (typeName _message == \"TEXT\") " !="vars select 7) \n] spawn BIS_fnc_dynamicText;\n};\nif (_type == \"hintWithImage\") exitWith {hint parseText format[\"> \"CfgVehicles\" >>" !="#line 1 \"z\\addons\\dayz_code\\compile\\player_humanityChange.sqf\"\nprivate [\"_change\",\"_humanity\"];\n\n\n\n\n_change = _this;\n\n_humanity " !"layer]];\npublicVariableServer \"PVDZ_send\";\n\n\n20 call player_humanityChange;\n\nformat[localize \"str_actions_medical_gave_wipes\",(n" !=" [\"_msg\",\"_bagUsed\",\"_bloodResult\",\"_bloodAmount\",\"_unit\",\"_humanityAwarded\",\"_timer\",\"_i\",\"_isClose\",\"_duration\",\"_rhVal\",\"_blo" !="#line 1 \"z\\addons\\dayz_code\\compile\\player_humanityMorph.sqf\"\ncloseDialog 0;\nlocal _charID = _this select 1;\nlocal _model = _thi" !="ody_Value} else {DZE_Butcher_Body_Value};\n_gain call player_humanityChange;\n\ndayz_actionInProgress = false;\n" !="l fn_dynamicTool;\n\ncall {\nif (_isZombie) exitWith {\n\nlocal _humanity = player getVariable [\"humanity\",0];\nplayer setVariable [\"h" +1 lbCurSel !"_selectedUserIndex = lbCurSel _lbUsersControl;" !="profileNamespace setVariable ['statusUI',(lbCurSel (_this select 0))];" !="profileNamespace setVariable ['streamerMode',(lbCurSel (_this select 0))];" !"_index = lbCurSel _lbcontrol;\n_selectedItem" !"_selected = lbCurSel _list;\n_classname = _list lnbData [_selected, 2];" !="_friendName = _userList lbText (lbCurSel _userList);" !")] call Z_" !"(lbCurSel 7421) call Z_fillCategoryList" !"] call Door" !"] call Plot" !"[(lbCurSel 12001)] " !="[(lbCurSel 21000), ((ctrlParent (_this select 0)) displayCtrl 21001)] spawn EpochDeathBoardClick;" !"((ctrlParent (_this select 0)) closeDisplay 2);" !="_uid = _playerList lbData (lbCurSel _playerList);" !"_myGroup lbData (lbCurSel _myGroup);" !="vkc_charID = (vkc_keyList select 0) select (lbCurSel 4802);vkc_keyName = (vkc_keyList select 1) select (lbCurSel 4802);" !="2800) displayCtrl 2802);\n\n_vehicle = vg_vehicleList select (lbCurSel _control);\n_typeOf = typeOf _vehicle;\n_isLimitArray = typeN" !="Dialog 0;\n_vehicle = (call compile format[\"%1\",lbData[2802,(lbCurSel 2802)]]);\n\nif (vg_removeKey && {_vehicle select 3 != 0} && " +1 lbSet !"_lbUsersControl lbSetColor [_x, [1,0,0,1]];" !"\n_control lbSetColor [_x, _color];\n};" !"_weaponsLBSetFocus" !="(_this select 0) displayCtrl _idc lbSetCurSel (profileNamespace getVariable [_var,_default]);" !="(_display displayCtrl 105) lbSetColor [_i, [0.06, 0.05, 0.03, 1]];" !" [7421," !"lbSetPicture [7422, _index" !"lbSetPicture [7402, _index" !"lbSetPicture [7401, _index" !="_userList lbSetData [(lbSize _userList) -1,_friendUID];" !" [TraderDialogItemList, _index, " !"_myGroup lbSetData [_index,getPlayerUID _x];" !"ive DZE_myVehicle} && {DZE_myVehicle == _x}) then {\n_control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]];\n};\n} count rv_vehicl" !="bAdd ((vkc_keyList select 1) select _forEachIndex);\n_control lbSetPicture [_index,getText(configFile >> \"CfgWeapons\" >> ((vkc_ke" !=" 1) >> \"displayName\");\n_control lbAdd _displayName;\n_control lbSetData [(lbSize _control)-1,str(_x)];\nvg_vehicleList set [count " +1 loadFile +1 menu !",\"MenuSelected\",\"Draw\",\"VideoStop" !"_menu = _parent displayCtrl (1600 + _i);\n_menu ctrlShow " !"BIS_fnc_commsMenu" !"BIS_fnc_kbMenu" !"call gear_ui_offMenu;" !"dayz_inflame_showMenu" !"\"showCommandingMenu\", " !"rshowCommandingMenu" !"menu_" !"use action menu to " !"\"_menu\",\"_menu1\"" !"fn_gearMenuChecks" !"fn_pauseMenuChecks" +1 nearEntities !="exit = true;\n} else {\n_nearestObjects = (position player) nearEntities [[\"Air\", \"Car\", \"Motorcycle\", \"Tank\", \"Ship\"], 26];\nif (c" !="jects \"SpawnableWreck\";\n{deleteVehicle _x} count (_setPos nearEntities [\"zZombie_Base\",30]);\nplayer setDir _setDir;\n\nif (dayz_pa" !="((!surfaceIsWater _Pos) AND {(0 == {alive _x} count (_Pos nearEntities [ AllPlayers, 200 ]))}) then {\n_agent = if (_type == \"Pas" !="z, _elevation] ];\n};\n};\n};\n};\n} count ((getPosATL player) nearEntities [\"zZombie_Base\", 30]);\n};\n\n\n_buriedZeds\n};\n" !="call dz_fn_array_any);\n};\n\n_vehClose = (getPosATL player) nearEntities [[\"Car\",\"Tank\",\"Helicopter\",\"Plane\",\"StaticWeapon\",\"Ship\"" !="z_spawnZombies = {alive _x AND local _x} count (_position nearEntities [\"zZombie_Base\",_radius]);\ndayz_CurrentNearByZombies = {a" !="{\nr_player_infected = true;\n\n};\n};\n};\n} count (_mylastPos nearEntities [\"CAManBase\",12]);\nif (dayz_temperatur < ((50 / 100) * (d" !=" < dayz_maxGlobalZeds}) then {\n_zombiesNum = count (_bPos nearEntities [\"zZombie_Base\",(((sizeOf _type) * 2) + 10)]);\nif (_zombi" !="te;\n};\n};\n\n\n_nearByPlayer = ({isPlayer _x} count (_objPos nearEntities [\"CAManBase\",30])) > 0;\nif (!_nearByPlayer) then {\n_posit" !="_entityTime = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer" !="_timeN = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer _x} " !="_waitStart = diag_tickTime;\n\n_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer " !="lt = false;\n_pos = [player] call FNC_GetPos;\n_list = _pos nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],Z_VehicleDistance];\n\nif (!i" !="[\"localtargets\",_localtargets,false];\n};\n};\n} count (_pos nearEntities [\"zZombie_Base\",50]);\n} else {\nwhile {alive _projectile} " !="this select 2;\n_pos = _this select 3;\n\n_listTalk = _pos nearEntities [\"zZombie_Base\",_distance];\n\n{\n_distance = _distance max " !="_list = (getposATL _agent) nearEntities [[\"CAManBase\",\"AllVehicles\"],300];\n_isSomeone = ({isPlayer _x} count _list) > 0;\n\n_timeN" !=";};\n\n_playerNear = {isPlayer _x} count ((getPosATL _body) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !="\n\n\n_pos = getPosATL player;\nif ({isPlayer _x} count (_pos nearEntities [\"CAManBase\",40]) > 1) then {\n[_unit,\"hit\",0,false] call " !="[];\n\n_PlayerNear = {isPlayer _x} count ((getPosATL _item) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {locali" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear && (_isMine or _o" !="hicle _player] call FNC_getPos;\n\n\n_findNearestPole = _pos nearEntities [\"Plastic_Pole_EP1_DZ\", _distance];\n\n_IsNearPlot = count " !="layerNear = {isPlayer _x} count ((getPosATL cursortarget) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {\ndayz_" !="etPos;\n\nif (surfaceIsWater _location && {count (_location nearEntities [\"Ship\",8]) > 0}) then {\ndeleteVehicle _sign;\nlocalize \"S" !="yerNear = {isPlayer _x} count (([player] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {locali" !="ag_tickTime);\n_playerCheck = ({isPlayer _x} count (player nearEntities [\"AllVehicles\",5]) > 1);\n_zedCheck = ((count (player near" !="(_this select 1) && isServer && (({isPlayer _x} count (_z nearEntities ['CAManBase',150])) == 0)) exitWith { _z call sched_co_de" !=" do {\nuiSleep 5;\n};\nhideBody _body;\n\n\n\n\n\n\n_inRange = _pos nearEntities [\"CAManBase\",100];\n{\nif ((isPlayer _x) && {_x != player})" !=" {\n_PlayerNear = {isPlayer _x} count ((getPosATL _holder) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {locali" !="yerNear = {isPlayer _x} count (([_plant] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {dayz_a" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 12]) > 1;\nif (_playerNear) exitWith {dayz_a" !="\n_ammo = \"RunOver\";\n};\n} count (([_unit] call fnc_getPos) nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],3]);\n};\n};\n};\n\n_end = false" !="{\n_liftHeli = _x;\n_found = true;\n};\n};\n};\n} count (player nearEntities [DZE_HeliAllowTowFrom,15]);\n};\n\nlocal _attached = _cursor" !="z_fn_array_any);\n};\n\nlocal _vehClose = (getPosATL player) nearEntities [[\"Car\",\"Tank\",\"Helicopter\",\"Plane\",\"StaticWeapon\",\"Ship\"" !=" = false;\n\nif (!isNull _this) then {\n_nearPlayers = _this nearEntities [\"CAManBase\", 12];\n_playerNear = ({isPlayer _x} count _ne" !="ePeople = if (DZE_doorManagementMustBeClose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer " !"\n\n_PlayerNear = {isPlayer _x} count ((getPosATL _vehicle) nearEntities [\"CAManBase\", 12]) > 1;\nif (_PlayerNear) exitWith {" !="layerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !"arestVehicle),_x];\n};\n} count (([player] call fnc_getPos) nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],30]);\n\nif (count _findNeare" !"arPlayers = {(isPlayer _x && _x != player)} count (player nearEntities [\"CAManBase\",8]);\n\nif (!(_object isKindOf \"ATV_Base_EP1\")" !="ePeople = if (DZE_plotManagementMustBeClose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer " !="lot\"];\n\nlbClear 7002;\n_plots = ([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15];\n_thePlot = _plots select 0;\n_" !="_area_preview = 1;\n\n_target = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_objects = nearestO" !="_PlotPole select 0;\n_target = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n\n_buildables = DZE_" !=" == \"\") exitWith {};\n\n_plots = ([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15];\n\n_thePlot = _plots select 0;\n" !="here100cm_EP1\"; \n\n\n_thePlot = (([player] call FNC_getPos) nearEntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_center = getPosASL" !"arPlayers = {(isPlayer _x && _x != player)} count (player nearEntities [\"CAManBase\",8]);\n\nif ((_object isKindOf \"C130J_US_EP1\" o" !="RANGE = 1500;};CA_ZOMBIE_COUNT = count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]); CA_MAN_COUNT = count ((po" !"ayerNear = {isPlayer _x} count (([_body] call FNC_GetPos) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !="\n_x setVariable [\"myDest\",_pos,true];\n};\n};\n} count (_pos nearEntities [\"Zed_Base\",_distance]);\n" !=" then {deleteVehicle _x}; \n} forEach ((getPosATL _refObj) nearEntities [\"Zed_Base\",100]);\n\nif (_attacked) then {\nif (r_player_un" !="erNear = {isPlayer _x} count (([_corpse] call FNC_GetPos) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {dayz_a" !="ss = false;}; \nif ({isPlayer _x} count ((getPosATL _body) nearEntities [\"CAManBase\", 12]) > 1) exitWith {dayz_actionInProgress =" !="{isPlayer _x} count (([vkc_cursorTarget] call FNC_GetPos) nearEntities [\"CAManBase\", 10]) > 1;\nif (_playerNear) exitWith {call _" !="esult = nil;\n\n_localVehicles = ([player] call FNC_getPos) nearEntities [[\"Air\",\"LandVehicle\",\"Ship\"],Z_VehicleDistance];\n_heliPa" !="ation;\n\nif (surfaceIsWater _location && {count (_location nearEntities [\"Ship\",8]) > 0}) then {\ndeleteVehicle _sign;\nlocalize \"S" +1 nearestObject !="licVariableEventHandler {_pos = (_this select 1); _obj = nearestObjects [_pos, DZE_isWreckBuilding, 5]; if (count _obj > 0) then" !=" 0;\n_whatIwant = _this select 1;\n_ret = false;\n\n_flame = nearestObjects [_fireplace, [\"flamable_DZ\"], 1];\n_flame = if (count _fl" !="Whitelisted = [];\n_pointsNearby = [];\n_findWhitelisted = nearestObjects [_pos,_whitelist,(_radius + DZE_snapExtraRange)]-[_objec" !=".sqf\"\n\n\n\n\n\nprivate \"_object\";\n\n{\n_object = (_x select 0) nearestObject (_x select 1);\n_object hideObject true;\n_object setVariab" !="\ncall dayz_meleeMagazineCheck;\n{player reveal _x} count (nearestObjects [_position,[\"AllVehicles\",\"WeaponHolder\",\"Land_A_tent\",\"" !="ks.sqf\"\nsetMousePosition [0.5, 0.5];\n\nprivate [\"_exit\",\"_nearestObjects\",\"_rID\",\"_display\",\"_cTarget\",\"_dis\",\"_friendlyTo\",\"_las" !="eenMsg = localize 'str_player_setup_completed';\n_torev4l=nearestObjects [_setPos, Dayz_plants + DayZ_GearedObjects + [\"AllVehicl" !=") then {\n_pPos = [player] call FNC_GetPos;\n_fireplaces = nearestObjects [_pPos, [\"flamable_DZ\",\"Land_Fire\",\"Land_Campfire\"], 8];" !=" \n\n)\nmax 0;\n\nif (_scaleLight < 0.9) then {\n\n_nearFlare = nearestObject [getPosATL (vehicle player),\"RoadFlare\"];\nif (!isNull _ne" !=" call _check}) exitWith { \n_inside = true;\n};\n} forEach (nearestObjects [_unit, [\"Building\"], 50]);\n};\n\n\n_inside\n" !="= _this select 0;\n_ammo = _this select 1;\n\n_projectile = nearestObject [_unit, _ammo];\n_pos = getPosATL _projectile;\n\nif (_ammo " !="\n};\nif (\"workshop\" in _needNear) then {\n_isNear = count (nearestObjects [player, DZE_Workshops, _distance]);\nif(_isNear == 0) th" !="ingPlayer = player;\n_dir = round(random 360);\n_helipad = nearestObjects [player, [\"HeliHCivil\",\"HeliHempty\"], 100];\n\n\nif (count " !="1\",\"land_smd_water_pump\"];\n\n_canFill = call {\n\nif (count nearestObjects [_posATL,_wells,4] > 0) exitwith {[true,false]};\nif (toL" !="d) exitWith {\n_nearWaterHole = [true,_pond];\n};\n} count (nearestObjects [_x, [], 1]);\n\nif (_nearWaterHole select 0) exitWith {};" !="bj select 4;\n_projectile = _obj select 6;\n\n_projectile = nearestObject [_unit,_ammo];\n_endPos = getPosATL _projectile;\n_doWait =" !="_plantOutput select _index;\n_countOut = 1;\n};\n};\n} count nearestObjects [([player] call FNC_getPos), [], 10];\n\nif (count _findNe" !=" !r_player_unconscious && !_onLadder);\n\n_nearByObjects = nearestObjects [player,_objects,_range];\n\nif (count _nearByObjects == 0" !="= \"workshop\") exitwith {\n_distance = 3;\n_isNear = count (nearestObjects [_pos, DZE_Workshops, _distance]);\nif (_isNear == 0) the" !="earestPole) then {_pos} else {_nearestPole};\nif ((count (nearestObjects [_center,_buildables,_distance])) >= DZE_BuildingLimit) " !="_ammo in [\"Dragged\",\"RunOver\"])}) then {\n_vehicleArray = nearestObjects [([vehicle _unit] call fnc_getPos),[\"Air\",\"LandVehicle\"," !="n _rocks) exitWith { _findNearestRock = _x; };\n} foreach nearestObjects [getPosATL player, [], 8];\n\n\nif (!isNull _findNearestRoc" !="modeltoWorld [0,0,0]};\n_holder = objNull;\n\n\n_nearByPile= nearestObjects [_pos, [\"WeaponHolder\",\"WeaponHolderBase\"],2];\n\nif (coun" !="r);\nlocal _uid = getPlayerUID player;\nlocal _nearLight = nearestObject [player,\"LitObject\"];\nlocal _canPickLight = false;\nlocal " !="p = {\nlocal _doors = [];\nif (r_drag_sqf) then {\n_doors = nearestObjects [player, DayZ_DropDrageeObjects, 3]; \nif (count _doors >" !"With {};\nif (!_unconscious) exitWith {};\n\n_dropObjects = nearestObjects [player, DayZ_DropDrageeObjects, 3];\nif (count _dropObje" !"Name) in dayz_trees}) exitWith {\n\n_tree = _x;\n};\n} count nearestObjects [getPosATL player, [], 20];\n\nif (!isNull _tree) then {\n\n" !="ntities [\"Plastic_Pole_EP1_DZ\",15]) select 0;\n_objects = nearestObjects [_target, DZE_maintainClasses, DZE_maintainRange];\n\n_obj" !="E_LockableStorage + [\"DZ_storage_base\"];\n_count = count (nearestObjects [_target,_buildables,_range]);\n\n_colour = \"#ffffff\";\n\nif" !="e;\n_num = ceil (random (player distance _x));\n};\n} count nearestObjects [player, [], 50];\n\nfor \"_i\" from 1 to 10 do {\nif (!_ispo" !="j select 4;\n\n_projectile = _obj select 6;\n\n_projectile = nearestObject [_unit,_ammo];\n_vUp = vectorUp _projectile;\n_endPos = get" !="player;\nif (_vehicle != player) then {\n_servicePoints = (nearestObjects [getPosATL _vehicle,DZE_SP_Classes,DZE_SP_MaxDistance]) " !="ir\",\"LandVehicle\",\"Ship\"],Z_VehicleDistance];\n_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {playe" !="ts;\n_isNearPlot = (_plotCheck select 1) > 0;\n\n_heliPad = nearestObjects [if (_isNearPlot) then {_plotCheck select 2} else {playe" !="ocalize \"STR_CL_VG_HELIPAD_REMOVED\",typeOf _x];\n} count (nearestObjects [_plotCheck select 2,vg_heliPads,Z_VehicleDistance]);\n} " +1 nearObjects !="ratorRunning\",false]))} count (([player] call FNC_getPos) nearObjects [\"Generator_DZ\",30]);\nif (_findNearestGen > 0) then {\ns_pl" !="lders = dayz_currentWeaponHolders - 1;\n} count (_worldPos nearObjects [\"ReammoBox\", 1]);\n\nif (_lootChance > random 1 && {dayz_cu" !="rgets == 0) then {\nprivate \"_objects\";\n\n_objects = _agent nearObjects [\"GrenadeHand\", 300]; \n{\nif (!(_x in _targets)) then {\nif " !="er] call FNC_GetPos;\n_isNear = {inflamed _x} count (_pPos nearObjects _distance);\nif(_isNear == 0) then {\n_abort = true;\n_reason" !="s select 0;\n_sign = _this select 1;\n_near = count (player nearObjects [_class,50]);\n\n[_class,_sign,_near] spawn {\n_class = _this" !="with {\n_distance = 3;\n_isNear = {inflamed _x} count (_pos nearObjects _distance);\nif (_isNear == 0) then {\n_abort = true;\n_reaso" !=" (_nearWaterHole select 0) exitWith {};\n} forEach (player nearObjects [\"waterHoleProxy\",50]);\n\n_nearWaterHole" !="yer] call FNC_GetPos;\n_isNear = {inflamed _x} count (_pos nearObjects 3);\nif (_isNear == 0) exitWith {dayz_actionInProgress = fa" !="unt _zeds;\n\n\ndayz_currentWeaponHolders = count (_position nearObjects [\"ReammoBox\",_radius]);\n\n\nif (DZE_Bloodsuckers) then {\nloc" +1 onMapSingleClick +1 playableUnits !"for [{_y=0},{_y < count(playableUnits)},{_y=_y+1}] do {" !"typeName player == \"OBJECT\" && {(player in playableUnits" !"AND {((alive _x) AND {((vehicle _x) distance _obj < 150)})}} count playableUnits)}) then {" !="_local = { _unit distance _x < _dis; } count playableUnits <= 1;" !"ManagementMustBeClose) then { player nearEntities [\"CAManBase\", 10] } else { playableUnits };" !=" = false;\n};\n};\n};\nif (!_isOk) exitWith {false};\n} count playableUnits;\n\n_isOk\n" !="lose) then {player nearEntities [\"CAManBase\", 12]} else {playableUnits};\n\n{\nif (isPlayer _x) then {\n_friendUID = getPlayerUID _x" +1 positionCameraToWorld +1 removeAllEventHandlers !"_WarnFuel = false;\n};\n\n};\n\n_vehicle removeAllEventHandlers \"IncomingMissile" !"leep _wait;} else {sleep (_wait * 4);};\n};\n\n_vehicle removeAllEventHandlers \"Dammaged" !"lse\"];\n{\n(findDisplay 12) displayCtrl 51 ctrlRemoveAllEventHandlers" !"select 1,0] nearestObject (_x select 2);\n_building removeAllEventHandlers" !"\n\n\n\nif (_this isKindOf \"AllVehicles\") then {\n\n_this removeAllEventHandlers" !"\npublicVariableServer \"PVDZ_veh_Save\";\n};\n};\n\n\n_unit removeAllEventHandlers" !="r == _model) exitWith {};\n\nlocal _old = player;\n_old removeAllEventHandlers \"FiredNear\";\n_old removeAllEventHandlers \"HandleDama" +1 selectPlayer !"addSwitchableUnit dayz_originalPlayer;\nsetPlayable dayz_originalPlayer;\nselectPlayer dayz_originalPlayer;" !"addSwitchableUnit _newUnit;\nsetPlayable _newUnit;\nselectPlayer _newUnit;" +1 serverCommand !="_character = if (serverCommandAvailable \"#kick\") then { call sched_tg_follow } else { player };" !"serverCommand (\"#vote kick \" + _selectedName);" +1 setAperture !"select 1);\n\nif(_NVOn == \"ON\") exitwith\n{\nsetaperture -1" !"+_inc;\n\n_NVOn = (_NV select 0);\n\nif(_NVOn == \"ON\") then {\n\nsetAperture" +1 setCamUseTI +1 setDamage !"if (_entity isKindOf \"Animal\") then {\n_entity setDamage 1;" !"player setDamage 1;\n};\n\nif (dayz_onBack != \"\") then {\nif (dayz_onBack in w" !"if (_ent isKindOf \"Animal\" || _ent isKindOf \"zZombie_base\") then {\n_ent setDamage 1;" !="Server \"PVDZ_veh_Save\";\n\nif (_allRepaired) then {\n_vehicle setDamage 0;\n_vehicle setVelocity [0,0,1];\n[format[localize \"STR_CL_S" +1 setDammage +1 setDate !rsetDate !"\"setDate\", " !"\n\n\nif (!isDedicated) then {\n\"dayzSetDate\" addPublicVariableEventHandler {" !"if (_x != _newdate select _forEachIndex) exitWith {\nsetDate _newdate" !"plr_Login1]; \nPVDZ_send = [player,\"dayzSetDate\",[player]];\npublicVariableServer" !="!isNil \"dayzSetDate\"" !"diag_log ['Date & time received:', dayzSetDate];\nsetDate dayzSetDate;\ndiag" +1 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];" !="];\n};\n\n_menu ctrlSetText format[_type,_name];\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n_i = _i + 1;\n};\n_pos set [3,_h" !="];\n};\n\n_menu ctrlSetText format[_type,_name];\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n_i = _i + 1;\n};\n\nlocal _isKey " +1 setMarkerAlpha +1 setMarkerBrush +1 setMarkerColor !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !"eLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0" +1 setMarkerDir +1 setMarkerPos !"\"setMarkerPosLocal\"," !"rsetMarkerPosLocal" +1 setMarkerShape !"tr _i),[_position select 0,_position select 1]];\n_marker setMarkerShapeLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker s" +1 setMarkerSize !"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0];\n_marker setMarkerTextLocal format [\"%1\"," +1 setMarkerText !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !"rOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0];\n_marker setMarkerTextLocal format [\"%1\",_name];\nsystemChat format[localize \"STR" +1 setMarkerType !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !" select 1]];\n_marker setMarkerShapeLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_m" +1 setPosASL !="_unit setPosAsl [(_position select 0), (_position select 1), (LHA_height+1)];" !="_flame setPosASL [_pos select 0,_pos select 1,(_pos select 2)+0.2];" !="_fire setPosASL _location;" !"_objectHelper setPosASL _position;\n} else {" !"_b0x1337 setPosASL (getPosASL player);\n} else {" !"_obj setPosASL [_center select 0, _a, _b];" !"_objectSnapGizmo setPosASL " !"_para setposasl [\n" !"_thingy setPosASL (ATLToASL _pos);\n} else {" !="> \"fixWaterPos\");\nif (_fixWaterSpawn == 1) then {\n_vehicle setPosASL (_pos);\n} else {\n_vehicle setPos (_pos);\n}; \n} else {\n_ve" +1 setTerrainGrid +1 setUnitRecoilCoefficient +1 setVehicle !"if(_status) then {\n_vehicle setVehicleLock \"LOCKED\";\n} else {\n_vehicle setVehicleLock \"UNLOCKED\";\n};" !="stentMoney),(_wealth - _amount),true];};\n\nvkc_cursorTarget setVehicleLock \"LOCKED\";\nplayer playActionNow \"Medic\";\n\n_position = [" +1 setViewDistance +1 sideLogic !"publicVariable \"BIS_MPF_logic\";" +1 switchCamera !"\"switchCamera\", " !"rswitchCamera" !"player switchCamera _currentCamera;\nif (_currentWpn !=" !"< 150) && random 1 > 0.5) then {\n_killer switchcamera" 1 systemChat !="systemChat format[localize \"str_missing_to_do_this\", _x];" !"systemChat (localize " !"systemChat format[localize \"STR_EPOCH_" !"systemChat localize \"STR_EPOCH_" !"case \"system\": {systemChat _message;};" !"systemchat localize \"STR_CRAFTING_NEEDED_ITEMS\";" !"systemChat format[localize \"STR_CL_" !"systemChat localize \"STR_CL_" !=") then {\nif (player getVariable[\"radiostate\",true]) then {\nsystemChat (\"[RADIO] \" + _message);\nplaySound \"Radio_Message_Sound\";\n" !"systemChat localize \"str_cursorTargetNotFound\"" -5 title !"titleCut [\"\", \"BLACK " !"\"titleCut\", " !"\"titleText\"" !="rtitleCut = 'titleCut'" !"rtitleCutc" !="rtitleText = 'titleText'" !"rtitleTextc" !"(_missionTextListPath >> \"titles\")" !"(_display displayCtrl _titleIDC) ctrlShow false;" !"titleText [format[localize \"str_return_lobby\", _x" !",\"_titleText\"" !"localize 'STR_UI_GENDER_TITLE';\n_timeNem" !="scriptName \"MP\\data\\scriptCommands\\titleText.sqf\";" !_fillTradeTitle !_bldTxtStringTitle !"localize \"str_halo_altitude_speed" -5 toString !"_animCheck = toString ([(_animStateArray select 0),(_animStateArray select 1)" !="_skinToModel = toString (_finalArray);" !="{_textArrayTemp = _textArrayTemp + [tostring [_x]]} foreach _line;" !="_cmpt = toString _cmpt;" !="_objName = toLower(toString(_objName));" !"if (toString _hayArr != _needle) then {" !="_type = toString _typeA;" !="_anim4 = toString _anim4;" !"{(count _stance>17)}) then {toString [_stance select 17]}" !"BIS_fnc_timeToString" !"02, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];" !="s = true;\n\n_array = toArray (animationState player);\n_str = toString [_array select 5,_array select 6,_array select 7];\n_anim = " !=" _input - [_x];\n} forEach _badChars;\n\n_input = parseNumber (toString (_input));\n_input\n};\n\nBankDialogUpdateAmounts = {\nprivate [" -5 worldTo !="_relPos = _building worldToModel _point;" !"_w2m = _x worldToModel (getPosATL player);\n_bb = (boundingbox _x) select 1;" !="_h = _offset + ((_o worldToModel (getPosATL _o)) select 2);" !"_pos set [2,(_pos select 2) + 1.5];\n_screen = worldToScreen _pos;\n_text = composeText [image" !="\n_pos = _this select 1; \n_offset = 1; \n\n_relPos = _building worldToModel _pos;\n_boundingBox = boundingBox _building;\n\n_min = _bo" +1 title !"titleCut [\"\", \"BLACK " !"\"titleCut\", " !"\"titleText\"" !="rtitleCut = 'titleCut'" !"rtitleCutc" !="rtitleText = 'titleText'" !"rtitleTextc" !"(_missionTextListPath >> \"titles\")" !"(_display displayCtrl _titleIDC) ctrlShow false;" !"titleText [format[localize \"str_return_lobby\", _x" !",\"_titleText\"" !"localize 'STR_UI_GENDER_TITLE';\n_timeNem" !="scriptName \"MP\\data\\scriptCommands\\titleText.sqf\";" !_fillTradeTitle !_bldTxtStringTitle !"localize \"str_halo_altitude_speed" !"play displayCtrl 8801 ctrlSetText(format[localize \"STR_CL_RV_TITLE\",_keyDisplay]);\n\n_control = ((findDisplay 8800) displayCtrl 8" !="f\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nprivate [\"_folder\",\"_actionTitleFormat\",\"_actionCostsFormat\",\"_message\",\"_messageShown\",\"_last" +1 toString !"_animCheck = toString ([(_animStateArray select 0),(_animStateArray select 1)" !="_skinToModel = toString (_finalArray);" !="{_textArrayTemp = _textArrayTemp + [tostring [_x]]} foreach _line;" !="_cmpt = toString _cmpt;" !="_objName = toLower(toString(_objName));" !"if (toString _hayArr != _needle) then {" !="_type = toString _typeA;" !="_anim4 = toString _anim4;" !"{(count _stance>17)}) then {toString [_stance select 17]}" !"BIS_fnc_timeToString" !"02, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];" !="s = true;\n\n_array = toArray (animationState player);\n_str = toString [_array select 5,_array select 6,_array select 7];\n_anim = " !=" _input - [_x];\n} forEach _badChars;\n\n_input = parseNumber (toString (_input));\n_input\n};\n\nBankDialogUpdateAmounts = {\nprivate [" +1 worldTo !="_relPos = _building worldToModel _point;" !"_w2m = _x worldToModel (getPosATL player);\n_bb = (boundingbox _x) select 1;" !="_h = _offset + ((_o worldToModel (getPosATL _o)) select 2);" !"_pos set [2,(_pos select 2) + 1.5];\n_screen = worldToScreen _pos;\n_text = composeText [image" !="\n_pos = _this select 1; \n_offset = 1; \n\n_relPos = _building worldToModel _pos;\n_boundingBox = boundingBox _building;\n\n_min = _bo" //The best use of this file is filtering commonly used scripting commands, because they are always the same when compiled and executed. See: https://community.bistudio.com/wiki/Category:Scripting_Commands_ArmA2 diff --git a/Server Files/DZE_Server_Config/HiveExt.ini b/Server Files/DZE_Server_Config/HiveExt.ini index 59681b3df..64e5c70b0 100644 --- a/Server Files/DZE_Server_Config/HiveExt.ini +++ b/Server Files/DZE_Server_Config/HiveExt.ini @@ -72,6 +72,18 @@ Password = ChangeMe ;Do not use double quotation marks, only use single quotation marks ['] ;MaintenanceObjects = 'Land_DZE_GarageWoodDoorLocked','Land_DZE_LargeWoodDoorLocked','Land_DZE_WoodDoorLocked','CinderWallDoorLocked_DZ','CinderWallDoorSmallLocked_DZ','Plastic_Pole_EP1_DZ' + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Virtual Garage Addition ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Table name for the virtual garage data to be stored in, default table is 'garage' +;VGTable = garage +; Days for a stored vehicle to be cleaned up after, if set to -1 this feature is disabled. Default 35 days +;CleanupVehStoredDays = 35 +; Log object cleanup DELETE statements (per object), including virtual garage. Default is false +;LogObjectCleanup = false + + ;If using OFFICIAL hive, the settings in this section have no effect, it will manage objects on its own [ObjectDB] ;Setting this to true separates the Object fetches from the Character fetches diff --git a/Server Files/SQL/epoch.sql b/Server Files/SQL/epoch.sql index b1951a9c5..2091cc94c 100644 --- a/Server Files/SQL/epoch.sql +++ b/Server Files/SQL/epoch.sql @@ -1,9 +1,8 @@ /* - DayZ Epoch 1.0.7 + DayZ Epoch 1.0.7.1 ONLY RUN THIS FILE IF CREATING A NEW DATABASE. - EXISTING 1051 DATABASES SHOULD USE 1.0.6_UPDATES.SQL INSTEAD AND THEN RUN 1.0.6.2_UPDATES.SQL. - EXISTING 1061 DATABASES SHOULD USE 1.0.6.2_UPDATES.SQL INSTEAD. + EXISTING 1.0.7 DATABASES SHOULD USE update epoch 1.0.7 to 1.0.7.1.sql INSTEAD. */ SET FOREIGN_KEY_CHECKS=0; @@ -108,6 +107,36 @@ CREATE TABLE IF NOT EXISTS `Player_LOGIN` ( -- Records of player_login -- ---------------------------- +-- ---------------------------- +-- Table structure for `garage` +-- ---------------------------- + +CREATE TABLE IF NOT EXISTS `garage` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `PlayerUID` varchar(20) NOT NULL DEFAULT '0', + `Name` varchar(50) NOT NULL DEFAULT '', + `DisplayName` varchar(50) NOT NULL DEFAULT '', + `Classname` varchar(50) DEFAULT NULL, + `Datestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `DateStored` varchar(10) NOT NULL DEFAULT 'old', + `DateMaintained` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `CharacterID` bigint(20) unsigned NOT NULL DEFAULT '0', + `StorageCounts` varchar(30) NOT NULL DEFAULT '[0,0,0]', + `Inventory` mediumtext, + `Hitpoints` mediumtext, + `Fuel` double(13,5) NOT NULL DEFAULT '1.00000', + `Damage` double(13,5) NOT NULL DEFAULT '0.00000', + `Colour` varchar(50) NOT NULL, + `Colour2` varchar(50) NOT NULL, + `serverKey` varchar(10) NOT NULL DEFAULT 'old', + `ObjUID` varchar(20) NOT NULL DEFAULT 'old', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of garage +-- ---------------------------- + /* THIS PROCEDURE IS REQUIRED FOR 1062 AND RETURNS THE OBJECT ID MUCH MORE EFFICENTLY THAN THE METHOD IN 1061 SQF */ diff --git a/Server Files/SQL/update epoch 1.0.7 to 1.0.7.1.sql b/Server Files/SQL/update epoch 1.0.7 to 1.0.7.1.sql index c21c3ee04..9379f0aa7 100644 --- a/Server Files/SQL/update epoch 1.0.7 to 1.0.7.1.sql +++ b/Server Files/SQL/update epoch 1.0.7 to 1.0.7.1.sql @@ -2,3 +2,25 @@ UPDATE character_data SET Backpack = REPLACE(Backpack, '"Skin_gsc_cloth_loner_he UPDATE character_data SET Inventory = REPLACE(Inventory, '"Skin_gsc_cloth_loner_head_DZ"', '"Skin_Survivor2_DZ"') WHERE INSTR(Inventory, '"Skin_gsc_cloth_loner_head_DZ"') > 0; UPDATE object_data SET Inventory = REPLACE(Inventory, '"Skin_gsc_cloth_loner_head_DZ"', '"Skin_Survivor2_DZ"') WHERE INSTR(Inventory, '"Skin_gsc_cloth_loner_head_DZ"') > 0; UPDATE character_data SET Model = "Survivor2_DZ" WHERE Model = "gsc_cloth_loner_head_DZ"; + +CREATE TABLE IF NOT EXISTS `garage` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `PlayerUID` varchar(20) NOT NULL DEFAULT '0', + `Name` varchar(50) NOT NULL DEFAULT '', + `DisplayName` varchar(50) NOT NULL DEFAULT '', + `Classname` varchar(50) DEFAULT NULL, + `Datestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `DateStored` varchar(10) NOT NULL DEFAULT 'old', + `DateMaintained` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `CharacterID` bigint(20) unsigned NOT NULL DEFAULT '0', + `StorageCounts` varchar(30) NOT NULL DEFAULT '[0,0,0]', + `Inventory` mediumtext, + `Hitpoints` mediumtext, + `Fuel` double(13,5) NOT NULL DEFAULT '1.00000', + `Damage` double(13,5) NOT NULL DEFAULT '0.00000', + `Colour` varchar(50) NOT NULL, + `Colour2` varchar(50) NOT NULL, + `serverKey` varchar(10) NOT NULL DEFAULT 'old', + `ObjUID` varchar(20) NOT NULL DEFAULT 'old', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; \ No newline at end of file