mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
Merge branch 'master' of https://github.com/EpochModTeam/DayZ-Epoch
This commit is contained in:
@@ -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
|
||||
[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
|
||||
169
Documents/CHANGE LOG 1.0.7.txt
Normal file
169
Documents/CHANGE LOG 1.0.7.txt
Normal file
@@ -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
|
||||
107
README.md
107
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
|
||||
|
||||
527
SQF/dayz_code/Configs/CfgMagazines/Buildings/StaticWeapons.hpp
Normal file
527
SQF/dayz_code/Configs/CfgMagazines/Buildings/StaticWeapons.hpp
Normal file
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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"
|
||||
};
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -9,4 +9,9 @@ class 7Rnd_50AE_Deagle: CA_Magazine
|
||||
ammo = "B_357mag_Ball";
|
||||
count = 7;
|
||||
initSpeed = 400;
|
||||
|
||||
class ItemActions
|
||||
{
|
||||
COMBINE_MAG
|
||||
};
|
||||
};
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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"};};
|
||||
|
||||
@@ -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"};};
|
||||
};
|
||||
@@ -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"};};
|
||||
|
||||
@@ -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"};};
|
||||
};
|
||||
@@ -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";
|
||||
};
|
||||
|
||||
288
SQF/dayz_code/Configs/CfgVehicles/Buildables/StaticWeapons.hpp
Normal file
288
SQF/dayz_code/Configs/CfgVehicles/Buildables/StaticWeapons.hpp
Normal file
@@ -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}};
|
||||
};
|
||||
@@ -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"
|
||||
|
||||
134
SQF/dayz_code/Configs/CfgVehicles/Zeds/Bloodsuckers.hpp
Normal file
134
SQF/dayz_code/Configs/CfgVehicles/Zeds/Bloodsuckers.hpp
Normal file
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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"
|
||||
};
|
||||
@@ -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 {};
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
@@ -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 {};
|
||||
};
|
||||
@@ -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"};
|
||||
};
|
||||
};
|
||||
};
|
||||
7
SQF/dayz_code/Configs/CfgWeapons/Tools/MutantHeart.hpp
Normal file
7
SQF/dayz_code/Configs/CfgWeapons/Tools/MutantHeart.hpp
Normal file
@@ -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;
|
||||
};
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
304
SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp
Normal file
304
SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
315
SQF/dayz_code/Configs/RscDisplay/vehicleKeyChanger.hpp
Normal file
315
SQF/dayz_code/Configs/RscDisplay/vehicleKeyChanger.hpp
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
367
SQF/dayz_code/Configs/RscDisplay/virtualGarage.hpp
Normal file
367
SQF/dayz_code/Configs/RscDisplay/virtualGarage.hpp
Normal file
@@ -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);
|
||||
};
|
||||
};
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
85
SQF/dayz_code/actions/buryActions.sqf
Normal file
85
SQF/dayz_code/actions/buryActions.sqf
Normal file
@@ -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;
|
||||
70
SQF/dayz_code/actions/garageDoorOpener.sqf
Normal file
70
SQF/dayz_code/actions/garageDoorOpener.sqf
Normal file
@@ -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;
|
||||
@@ -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;
|
||||
57
SQF/dayz_code/actions/locateVehicle.sqf
Normal file
57
SQF/dayz_code/actions/locateVehicle.sqf
Normal file
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
};
|
||||
|
||||
@@ -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 "";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
152
SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf
Normal file
152
SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf
Normal file
@@ -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;
|
||||
54
SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf
Normal file
54
SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf
Normal file
@@ -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 [
|
||||
"<img image='%1' size='3' align='center'/><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%2: </t><t color='#ffffff' size='0.7'>%3</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%4: </t><t color='#ffffff' size='0.7'>%5</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%6: </t><t color='#ffffff' size='0.7'><img image='%7'/> %13/%10 <img image='%8'/> %14/%11 <img image='%9'/> %15/%12</t><br />",
|
||||
_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];
|
||||
@@ -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 "";};
|
||||
};
|
||||
|
||||
176
SQF/dayz_code/actions/servicePoints/init.sqf
Normal file
176
SQF/dayz_code/actions/servicePoints/init.sqf
Normal file
@@ -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;
|
||||
};
|
||||
143
SQF/dayz_code/actions/servicePoints/servicePointActions.sqf
Normal file
143
SQF/dayz_code/actions/servicePoints/servicePointActions.sqf
Normal file
@@ -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];
|
||||
};
|
||||
};
|
||||
45
SQF/dayz_code/actions/takeClothes.sqf
Normal file
45
SQF/dayz_code/actions/takeClothes.sqf
Normal file
@@ -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;
|
||||
42
SQF/dayz_code/actions/virtualGarage/player_MaintainVG.sqf
Normal file
42
SQF/dayz_code/actions/virtualGarage/player_MaintainVG.sqf
Normal file
@@ -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;
|
||||
};
|
||||
69
SQF/dayz_code/actions/virtualGarage/player_getVehicle.sqf
Normal file
69
SQF/dayz_code/actions/virtualGarage/player_getVehicle.sqf
Normal file
@@ -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;
|
||||
24
SQF/dayz_code/actions/virtualGarage/player_removePad.sqf
Normal file
24
SQF/dayz_code/actions/virtualGarage/player_removePad.sqf
Normal file
@@ -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";
|
||||
};
|
||||
209
SQF/dayz_code/actions/virtualGarage/player_storeVehicle.sqf
Normal file
209
SQF/dayz_code/actions/virtualGarage/player_storeVehicle.sqf
Normal file
@@ -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];
|
||||
};
|
||||
};
|
||||
110
SQF/dayz_code/actions/virtualGarage/vehicleInfo.sqf
Normal file
110
SQF/dayz_code/actions/virtualGarage/vehicleInfo.sqf
Normal file
@@ -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 [
|
||||
"<img image='%1' size='3' align='center'/><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%2: </t><t color='#ffffff' size='0.7'>%3</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%4: </t><t color='#ffffff' size='0.7'>%5</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%6: </t><t color='#ffffff' size='0.7'><img image='%7'/> %13/%10 <img image='%8'/> %14/%11 <img image='%9'/> %15/%12</t><br />",
|
||||
_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 ["<t color='#33BFFF' size='0.7'>%1: </t><t color='#ffffff' size='0.7'>%2</t><br />",localize "STR_CL_VG_PRICE",_price];};
|
||||
if (!_localVehicle) then {
|
||||
if (_DateStored != "old") then {
|
||||
_formattedText = _formattedText + format ["<t color='#33BFFF' size='0.7'>%1: </t><t color='#ffffff' size='0.7'>%2</t><br />",localize "STR_CL_VG_STOREDATE",_DateStored];
|
||||
if (_MaintainDays >= 0) then {
|
||||
_formattedText = _formattedText + format ["<t color='#33BFFF' size='0.7'>%1: </t><t color='#ffffff' size='0.7'>%2</t><br /><t color='#33BFFF' size='0.7'>%3: </t><t color='#ffffff' size='0.7'>%4</t><br />",localize "STR_CL_VG_MAINTAINDATE",_DateMaintained,localize "STR_CL_VG_MAINTAININTERVAL",_MaintainDays];
|
||||
};
|
||||
} else {
|
||||
_formattedText = _formattedText + format ["<t color='#33BFFF' size='0.7'>%1: </t><t color='#ffffff' size='0.7'>%2</t><br />",localize "STR_CL_VG_STOREDATE",localize "STR_CL_VG_STOREDATE_INVALID"];
|
||||
};
|
||||
};
|
||||
|
||||
((findDisplay 2800) displayCtrl 2803) ctrlSetStructuredText parseText _formattedText;
|
||||
|
||||
ctrlShow [2803,true];
|
||||
ctrlShow [2830,true];
|
||||
64
SQF/dayz_code/actions/virtualGarage/virtualGarage.sqf
Normal file
64
SQF/dayz_code/actions/virtualGarage/virtualGarage.sqf
Normal file
@@ -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"]];
|
||||
68
SQF/dayz_code/actions/vkc/vehicleInfo.sqf
Normal file
68
SQF/dayz_code/actions/vkc/vehicleInfo.sqf
Normal file
@@ -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 [
|
||||
"<img image='%1' size='3' align='center'/><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%2: </t><t color='#ffffff' size='0.7'>%3</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%4: </t><t color='#ffffff' size='0.7'>%5</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>%6: </t><t color='#ffffff' size='0.7'><img image='%7'/> %13/%10 <img image='%8'/> %14/%11 <img image='%9'/> %15/%12</t><br />" +
|
||||
"<t color='#33BFFF' size='0.7'>Price to %16: </t><t color='#ffffff' size='0.7'>%17</t><br />",
|
||||
_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];
|
||||
175
SQF/dayz_code/actions/vkc/vehicleKeyChanger.sqf
Normal file
175
SQF/dayz_code/actions/vkc/vehicleKeyChanger.sqf
Normal file
@@ -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;
|
||||
105
SQF/dayz_code/compile/Rightclicks/ui_selectSlot_addon.sqf
Normal file
105
SQF/dayz_code/compile/Rightclicks/ui_selectSlot_addon.sqf
Normal file
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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["<t color='#0059FF'>%1</t>",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];
|
||||
player setVariable ["selfActions", diag_ticktime, false];
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
29
SQF/dayz_code/compile/mutant_findTarget.sqf
Normal file
29
SQF/dayz_code/compile/mutant_findTarget.sqf
Normal file
@@ -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
|
||||
16
SQF/dayz_code/compile/mutant_generate.sqf
Normal file
16
SQF/dayz_code/compile/mutant_generate.sqf
Normal file
@@ -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];
|
||||
@@ -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]);
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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];
|
||||
|
||||
76
SQF/dayz_code/compile/player_mutantAttack.sqf
Normal file
76
SQF/dayz_code/compile/player_mutantAttack.sqf
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
DayZ Epoch mutant attack script by JasonTM
|
||||
Adapted from player_zombieAttack by facoptere
|
||||
and Nightstalker melee attack effects by sumrak<at>nightstalkers.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;
|
||||
@@ -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";
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
*/
|
||||
@@ -692,4 +692,11 @@ class IRStrobe
|
||||
{
|
||||
weight = 2;
|
||||
};
|
||||
|
||||
class 200Rnd_40mmHE_FV510
|
||||
{
|
||||
weight = 20;
|
||||
};
|
||||
class 200Rnd_40mmSABOT_FV510
|
||||
{
|
||||
weight = 20;
|
||||
};
|
||||
@@ -64,11 +64,6 @@ class deer_stand_kit
|
||||
weight = 25;
|
||||
};
|
||||
|
||||
class m240_nest_kit
|
||||
{
|
||||
weight = 125;
|
||||
};
|
||||
|
||||
class rusty_gate_kit
|
||||
{
|
||||
weight = 80;
|
||||
|
||||
100
SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/StaticWeapons.hpp
vendored
Normal file
100
SQF/dayz_code/external/R3F_Realism/R3F_Weight/Magazines/Buildings/StaticWeapons.hpp
vendored
Normal file
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"];
|
||||
|
||||
@@ -14281,6 +14281,10 @@
|
||||
<French>Infecté</French>
|
||||
<Czech>Infikovaný</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ZNAME_BLOODSUCKER">
|
||||
<English>Bloodsucker</English>
|
||||
<Russian>Кровосос</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ZNAME_INFECTEDVIRAL">
|
||||
<English>Viral Infected</English>
|
||||
<Spanish>Infectado Viral</Spanish>
|
||||
@@ -18302,13 +18306,31 @@
|
||||
|
||||
<!-- G3 -->
|
||||
<Key ID="STR_DZ_WPN_G3_NAME">
|
||||
<English>G3</English>
|
||||
<English>G3A1</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3_DESC">
|
||||
<English>Assault Rifle <br/>Caliber: 7.62x51mm</English>
|
||||
<German>Sturmgewehr <br/>Kaliber: 7.62x51mm</German>
|
||||
<Russian>Штурмовая винтовка<br/>Калибр: 7.62x51мм</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3A3_NAME">
|
||||
<English>G3A3</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3A3_CCO_NAME">
|
||||
<English>G3A3 CCO</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3A3_HOLO_NAME">
|
||||
<English>G3A3 Holo</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3A3_ACOG_NAME">
|
||||
<English>G3A3 ACOG</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3_SG1_NAME">
|
||||
<English>G3 SG1</English>
|
||||
</Key>
|
||||
<Key ID="STR_DZ_WPN_G3_SG1_BIPOD_NAME">
|
||||
<English>G3 SG1 Bipod</English>
|
||||
</Key>
|
||||
|
||||
<!-- MAT 49 -->
|
||||
<Key ID="STR_DZ_WPN_MAT49_NAME">
|
||||
@@ -22463,6 +22485,11 @@
|
||||
<French>%1 a été vidé, les pièces de zombies sont maintenant sur la carcasse.</French>
|
||||
<Czech>%1 byl zničený, zombie díly jsou nyní na kostru.</Czech>
|
||||
</Key>
|
||||
<Key ID="str_success_gutted_mutant">
|
||||
<English>You have carved the heart of the %1 from it's chest.</English>
|
||||
<German>Du hast das Herz des %1 aus seiner Brust herausgeschnitten.</German>
|
||||
<Russian>Вы вырезали сердце %1 из его тела.</Russian>
|
||||
</Key>
|
||||
<Key ID="str_actions_tamedog">
|
||||
<English>Tame Dog</English>
|
||||
<German>Hund zähmen</German>
|
||||
@@ -25541,6 +25568,11 @@
|
||||
<French>Dépecer le zombie</French>
|
||||
<Czech>Vykuchat Zombie</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_ACTIONS_GUTBLOOD">
|
||||
<English>Butcher Bloodsucker</English>
|
||||
<German>Bloodsucker ausnehmen</German>
|
||||
<Russian>Разделать Кровососа</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_ACTIONS_OPEN">
|
||||
<English>Open %1</English>
|
||||
<German>%1 öffnen</German>
|
||||
@@ -27337,6 +27369,16 @@
|
||||
<German>Zombiehaut in einem Sack.</German>
|
||||
<Russian>Кожа зомби в мешке.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_MUTANT_HEART">
|
||||
<English>Mutant Heart</English>
|
||||
<German>Mutantenherz</German>
|
||||
<Russian>Сердце мутанта</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_MUTANT_HEART_DESC">
|
||||
<English>The heart of a mutant. It is probably worth a lot.</English>
|
||||
<German>Das Herz eines Mutanten. Es ist möglicherweise viel wert.</German>
|
||||
<Russian>Сердце мутанта. Это, наверное, многого стоит.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_COMBINATIONLOCK">
|
||||
<English>Combination Lock</English>
|
||||
<German>Zahlenschloss</German>
|
||||
@@ -32152,6 +32194,11 @@
|
||||
<German>Währung</German>
|
||||
<Russian>Валюта</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_TRADER_CATEGORY_HELI_PADS">
|
||||
<English>Heli Pads</English>
|
||||
<German>Helipads</German>
|
||||
<Russian>Вертолётные площадки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_TRADER_CATEGORY_TRADE_ITEMS">
|
||||
<English>Trade %1 %2 for %3 %4</English>
|
||||
<German>%1 %2 für %3 %4 handeln</German>
|
||||
@@ -34274,6 +34321,119 @@
|
||||
<German>Eine Kiste mit Keramikteile.</German>
|
||||
<Russian>Ящик с керамическими частями.</Russian>
|
||||
</Key>
|
||||
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_PISTOL">
|
||||
<English>Gun parts (Pistol)</English>
|
||||
<German>Waffenteile (Pistole)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_PISTOL_DESC">
|
||||
<English>A pile of pistol gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile einer Pistole.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SMG">
|
||||
<English>Gun parts (SMG)</English>
|
||||
<German>Waffenteile (SMG)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SMG_DESC">
|
||||
<English>A pile of smg gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile einer Maschinenpistole.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SHOTGUN">
|
||||
<English>Gun parts (Shotgun)</English>
|
||||
<German>Waffenteile (Schrotflinte)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SHOTGUN_DESC">
|
||||
<English>A pile of shotgun gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile einer Schrotflinte.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_RIFLE">
|
||||
<English>Gun parts (Rifle)</English>
|
||||
<German>Waffenteile (Gewehr)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_RIFLE_DESC">
|
||||
<English>A pile of rifle gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile eines Gewehrs.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SNIPERRIFLE">
|
||||
<English>Gun parts (Sniper Rifle)</English>
|
||||
<German>Waffenteile (Scharfschützengewehr)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_SNIPERRIFLE_DESC">
|
||||
<English>A pile of sniper rifle gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile eines Scharfschützengewehrs.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_MG">
|
||||
<English>Gun parts (MG)</English>
|
||||
<German>Waffenteile (MG)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_MG_DESC">
|
||||
<English>A pile of mg gun parts.</English>
|
||||
<German>Ein Haufen Waffenteile eines Maschinengewehrs.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_UNKNOWN">
|
||||
<English>Gun parts (Unknown)</English>
|
||||
<German>Waffenteile (Unbekannt)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_UNKNOWN">
|
||||
<English>A pile of unknown gun parts in a good condition.</English>
|
||||
<German>Ein Haufen unbekannter Waffenteile, in einem guten Zustand.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_BAD">
|
||||
<English>Gun parts (Bad)</English>
|
||||
<German>Waffenteile (Schlecht)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_BAD_DESC">
|
||||
<English>A pile of old gun parts in a bad condition.</English>
|
||||
<German>Ein Haufen alter Waffenteile in einem schlechten Zustand.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_NORMAL">
|
||||
<English>Gun parts (Average)</English>
|
||||
<German>Waffenteile (Normal)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_NORMAL_DESC">
|
||||
<English>A pile of gun parts in an average condition.</English>
|
||||
<German>Ein Haufen Waffenteile in einem durchschnittlichen Zustand.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_GOOD">
|
||||
<English>Gun parts (Good)</English>
|
||||
<German>Waffenteile (Gut)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_GOOD_DESC">
|
||||
<English>A pile of gun parts in a good condition.</English>
|
||||
<German>Ein Haufen Waffenteile, in einem guten Zustand.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_EXCELLENT">
|
||||
<English>Gun parts (Excellent)</English>
|
||||
<German>Waffenteile (Exzellent)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_WEAPON_PARTS_EXCELLENT_DESC">
|
||||
<English>A pile of gun parts in an excellent condition.</English>
|
||||
<German>Ein Haufen Waffenteile, in einem exzellenten Zustand.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER_SMALL">
|
||||
<English>Gun Powder (Small)</English>
|
||||
<German>Schießpulver (Klein)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER_SMALL_DESC">
|
||||
<English>A small can with gun powder. Used for crafting ammunation.</English>
|
||||
<German>Eine kleine Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER">
|
||||
<English>Gun Powder</English>
|
||||
<German>Schießpulver</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER_DESC">
|
||||
<English>A can with gun powder. Used for crafting ammunation.</English>
|
||||
<German>Eine Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER_BIG">
|
||||
<English>Gun Powder (Big)</English>
|
||||
<German>Schießpulver (Groß)</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_GUN_POWDER_BIG_DESC">
|
||||
<English>A big can with gun powder. Used for crafting ammunation.</English>
|
||||
<German>Eine große Dose mit Schießpulver, welche für die Herstellung von Munition genutzt werden kann.</German>
|
||||
</Key>
|
||||
<Key ID="STR_EPOCH_SLUGS_IN_A_CAN">
|
||||
<English>Slugs in a can</English>
|
||||
<Russian>Пули в банке</Russian>
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
@@ -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]],
|
||||
|
||||
719
SQF/dayz_code/system/mutant_agent.fsm
Normal file
719
SQF/dayz_code/system/mutant_agent.fsm
Normal file
@@ -0,0 +1,719 @@
|
||||
/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DZE Bloodsucker Agent">*/
|
||||
/*%FSM<HEAD>*/
|
||||
/*
|
||||
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</HEAD>*/
|
||||
class FSM
|
||||
{
|
||||
fsmName = "DZE Bloodsucker Agent";
|
||||
class States
|
||||
{
|
||||
/*%FSM<STATE "init">*/
|
||||
class init
|
||||
{
|
||||
name = "init";
|
||||
init = /*%FSM<STATEINIT""">*/"_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</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "isDedicated">*/
|
||||
class isDedicated
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="End";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"isDedicated"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Ready">*/
|
||||
class Ready
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Loiter";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(!isNil 'dayz_clientPreload' && {dayz_clientPreload}) && !(isNull _agent)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_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</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "End">*/
|
||||
class End
|
||||
{
|
||||
name = "End";
|
||||
init = /*%FSM<STATEINIT""">*/"if (!isDedicated) then {" \n
|
||||
" if (!isNull _agent) then {" \n
|
||||
" deleteVehicle _agent;" \n
|
||||
" };" \n
|
||||
"} else {" \n
|
||||
" [_agent] call zombie_findOwner;" \n
|
||||
"};"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Chase">*/
|
||||
class Chase
|
||||
{
|
||||
name = "Chase";
|
||||
init = /*%FSM<STATEINIT""">*/"_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</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "Nobody_Near">*/
|
||||
class Nobody_Near
|
||||
{
|
||||
priority = 6.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Not_Alive">*/
|
||||
class Not_Alive
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isAlive"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "No_Agent">*/
|
||||
class No_Agent
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(isNull _agent)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "No_Target">*/
|
||||
class No_Target
|
||||
{
|
||||
priority = 3.000000;
|
||||
to="Reset_Targeting";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(isNull _target) && ((diag_tickTime - _timeN) > 5)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Target_Dead">*/
|
||||
class Target_Dead
|
||||
{
|
||||
priority = 3.000000;
|
||||
to="Reset_Targeting";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isTargetAlive"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_timeN = diag_tickTime;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "cant_see">*/
|
||||
class cant_see
|
||||
{
|
||||
priority = 2.000000;
|
||||
to="Finish_Move";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_cantSee"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"// diag_log (""Mutant Cant See Target"");"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "TimeCheck">*/
|
||||
class TimeCheck
|
||||
{
|
||||
priority = 2.000000;
|
||||
to="Chase";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _timeN) > 2" \n
|
||||
""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_agroCheck= _agroCheck + 1;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "InRange">*/
|
||||
class InRange
|
||||
{
|
||||
priority = 1.000000;
|
||||
to="Attacking_Wait";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_agent distance _targetPos < 3.1"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_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</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Cleanup_">*/
|
||||
class Cleanup_
|
||||
{
|
||||
name = "Cleanup_";
|
||||
init = /*%FSM<STATEINIT""">*/"_waitStart = diag_tickTime;"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "nobody_around">*/
|
||||
class nobody_around
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="End";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "someone_here">*/
|
||||
class someone_here
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="wait";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Finish_Move">*/
|
||||
class Finish_Move
|
||||
{
|
||||
name = "Finish_Move";
|
||||
init = /*%FSM<STATEINIT""">*/"_timeN = diag_tickTime;" \n
|
||||
"" \n
|
||||
"_isSomeone = false;" \n
|
||||
"{" \n
|
||||
" if (isPlayer _x && {_x distance _agent < 300}) exitWith {_isSomeone = true;};" \n
|
||||
"} count playableUnits;"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "Nobody_Near">*/
|
||||
class Nobody_Near
|
||||
{
|
||||
priority = 6.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "finished">*/
|
||||
class finished
|
||||
{
|
||||
priority = 1.000000;
|
||||
to="Reset_Targeting";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_agent distance _targetPos < 3"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"//diag_log (""Finished"");"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "too_long">*/
|
||||
class too_long
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Reset_Targeting";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _timeN) > 20"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"//diag_log (""Mutant Cant See Timeout"");"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Move">*/
|
||||
class Move
|
||||
{
|
||||
name = "Move";
|
||||
init = /*%FSM<STATEINIT""">*/"_myDest = [_agent,_position] call zombie_loiter;"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "True">*/
|
||||
class True
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Loiter";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "wait">*/
|
||||
class wait
|
||||
{
|
||||
name = "wait";
|
||||
init = /*%FSM<STATEINIT""">*/"_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</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "time_up">*/
|
||||
class time_up
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="End";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _waitStart) > 300"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "nobody_around">*/
|
||||
class nobody_around
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="End";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "deleted">*/
|
||||
class deleted
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="End";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"isNull _agent;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Time_Check">*/
|
||||
class Time_Check
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="wait";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _timeN) > 30"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Reset_Targeting">*/
|
||||
class Reset_Targeting
|
||||
{
|
||||
name = "Reset_Targeting";
|
||||
init = /*%FSM<STATEINIT""">*/"//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</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "True">*/
|
||||
class True
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Loiter";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Loiter">*/
|
||||
class Loiter
|
||||
{
|
||||
name = "Loiter";
|
||||
init = /*%FSM<STATEINIT""">*/"_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</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "Nobody_Near">*/
|
||||
class Nobody_Near
|
||||
{
|
||||
priority = 6.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isSomeone"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "No_Agent">*/
|
||||
class No_Agent
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(isNull _agent)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Not_Alive">*/
|
||||
class Not_Alive
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="Cleanup_";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!_isAlive"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Failed_Move">*/
|
||||
class Failed_Move
|
||||
{
|
||||
priority = 3.000000;
|
||||
to="Move";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"moveToFailed _agent;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "MoveCompleted_">*/
|
||||
class MoveCompleted_
|
||||
{
|
||||
priority = 3.000000;
|
||||
to="Move";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"moveToCompleted _agent;"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "player_check">*/
|
||||
class player_check
|
||||
{
|
||||
priority = 2.000000;
|
||||
to="Loiter";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _entityTime) > 30"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_entityTime = diag_tickTime;" \n
|
||||
"" \n
|
||||
"_isSomeone = false;" \n
|
||||
"{" \n
|
||||
" if (isPlayer _x && {_x distance _agent < 300}) exitWith {_isSomeone = true;};" \n
|
||||
"} count playableUnits;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Not_moving">*/
|
||||
class Not_moving
|
||||
{
|
||||
priority = 1.000000;
|
||||
to="Move";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(Speed _agent == 0)" \n
|
||||
""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Time_Check">*/
|
||||
class Time_Check
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Loiter";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _timeN) > 1"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "Has_Target">*/
|
||||
class Has_Target
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Reset_MoveTo";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"!(isNull _target)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"// diag_log ""Bloodsucker found target"";"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Attacking_Wait">*/
|
||||
class Attacking_Wait
|
||||
{
|
||||
name = "Attacking_Wait";
|
||||
init = /*%FSM<STATEINIT""">*/"_targetPos = _target modelToWorld [0,-1,0];" \n
|
||||
"" \n
|
||||
"_timeN = diag_tickTime;" \n
|
||||
""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "NotInRange">*/
|
||||
class NotInRange
|
||||
{
|
||||
priority = 1.000000;
|
||||
to="Chase";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"_agent distance _targetPos > 3.1"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_agent stop false;"/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
/*%FSM<LINK "TimeCheck">*/
|
||||
class TimeCheck
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="Attacking_Wait";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _timeN) > 1)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Reset_MoveTo">*/
|
||||
class Reset_MoveTo
|
||||
{
|
||||
name = "Reset_MoveTo";
|
||||
init = /*%FSM<STATEINIT""">*/"_agent moveTo (_agent modelToWorld [0,0,0]);"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "UnitReady">*/
|
||||
class UnitReady
|
||||
{
|
||||
priority = 5.000000;
|
||||
to="Chase";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"unitReady _agent"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/"_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</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
};
|
||||
initState="init";
|
||||
finalStates[] =
|
||||
{
|
||||
"End",
|
||||
};
|
||||
};
|
||||
/*%FSM</COMPILE>*/
|
||||
54
SQF/dayz_server/compile/garage/init.sqf
Normal file
54
SQF/dayz_server/compile/garage/init.sqf
Normal file
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
12
SQF/dayz_server/compile/garage/server_queryVehicle.sqf
Normal file
12
SQF/dayz_server/compile/garage/server_queryVehicle.sqf
Normal file
@@ -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";};
|
||||
112
SQF/dayz_server/compile/garage/server_spawnVehicle.sqf
Normal file
112
SQF/dayz_server/compile/garage/server_spawnVehicle.sqf
Normal file
@@ -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;
|
||||
};
|
||||
92
SQF/dayz_server/compile/garage/server_storeVehicle.sqf
Normal file
92
SQF/dayz_server/compile/garage/server_storeVehicle.sqf
Normal file
@@ -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;
|
||||
@@ -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;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user