Jump to content

Search the Community

Showing results for tags 'bug'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • BOHEMIA INTERACTIVE
    • BOHEMIA INTERACTIVE - NEWS
    • BOHEMIA INTERACTIVE - JOBS
    • BOHEMIA INTERACTIVE - GENERAL
  • FEATURED GAMES
    • Arma Reforger
    • Vigor
    • DAYZ
    • ARMA 3
    • ARMA 2
    • YLANDS
  • MOBILE GAMES
    • ARMA MOBILE OPS
    • MINIDAYZ
    • ARMA TACTICS
    • ARMA 2 FIRING RANGE
  • BI MILITARY GAMES FORUMS
  • BOHEMIA INCUBATOR
    • PROJECT LUCIE
  • OTHER BOHEMIA GAMES
    • ARGO
    • TAKE ON MARS
    • TAKE ON HELICOPTERS
    • CARRIER COMMAND: GAEA MISSION
    • ARMA: ARMED ASSAULT / COMBAT OPERATIONS
    • ARMA: COLD WAR ASSAULT / OPERATION FLASHPOINT
    • IRON FRONT: LIBERATION 1944
    • BACK CATALOGUE
  • OFFTOPIC
    • OFFTOPIC
  • Die Hard OFP Lovers' Club's Topics
  • ArmA Toolmakers's Releases
  • ArmA Toolmakers's General
  • Japan in Arma's Topics
  • Arma 3 Photography Club's Discussions
  • The Order Of the Wolfs- Unit's Topics
  • 4th Infantry Brigade's Recruitment
  • 11th Marine Expeditionary Unit OFFICIAL | 11th MEU(SOC)'s 11th MEU(SOC) Recruitment Status - OPEN
  • Legion latina semper fi's New Server Legion latina next wick
  • Legion latina semper fi's https://www.facebook.com/groups/legionlatinasemperfidelis/
  • Legion latina semper fi's Server VPN LEGION LATINA SEMPER FI
  • Team Nederland's Welkom bij ons club
  • Team Nederland's Facebook
  • [H.S.O.] Hellenic Special Operations's Infos
  • BI Forum Ravage Club's Forum Topics
  • Exilemod (Unofficial)'s General Discussion
  • Exilemod (Unofficial)'s Scripts
  • Exilemod (Unofficial)'s Addons
  • Exilemod (Unofficial)'s Problems & Bugs
  • Exilemod (Unofficial)'s Exilemod Tweaks
  • Exilemod (Unofficial)'s Promotion
  • Exilemod (Unofficial)'s Maps - Mission Files
  • TKO's Weferlingen
  • TKO's Green Sea
  • TKO's Rules
  • TKO's Changelog
  • TKO's Help
  • TKO's What we Need
  • TKO's Cam Lao Nam
  • MSOF A3 Wasteland's Server Game Play Features
  • MSOF A3 Wasteland's Problems & Bugs
  • MSOF A3 Wasteland's Maps in Rotation
  • SOS GAMING's Server
  • SOS GAMING's News on Server
  • SOS GAMING's Regeln / Rules
  • SOS GAMING's Ghost-Town-Team
  • SOS GAMING's Steuerung / Keys
  • SOS GAMING's Div. Infos
  • SOS GAMING's Small Talk
  • NAMC's Topics
  • NTC's New Members
  • NTC's Enlisted Members
  • The STATE's Topics
  • CREATEANDGENERATION's Intoduction
  • CREATEANDGENERATION's HAVEN EMPIRE (NEW CREATORS COMMUNITY)
  • HavenEmpire Gaming community's HavenEmpire Gaming community
  • Polska_Rodzina's Polska_Rodzina-ARGO
  • Carrier command tips and tricks's Tips and tricks
  • Carrier command tips and tricks's Talk about carrier command
  • ItzChaos's Community's Socials
  • Photography club of Arma 3's Epic photos
  • Photography club of Arma 3's Team pics
  • Photography club of Arma 3's Vehicle pics
  • Photography club of Arma 3's Other
  • Spartan Gamers DayZ's Baneados del Servidor
  • Warriors Waging War's Vigor
  • Tales of the Republic's Republic News
  • Operazioni Arma Italia's CHI SIAMO
  • [GER] HUSKY-GAMING.CC / Roleplay at its best!'s Starte deine Reise noch heute!
  • empire brotherhood occult +2349082603448's empire money +2349082603448
  • NET88's Twitter

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Yahoo


Jabber (xmpp)


Skype


Biography


Twitter


Google+


Youtube


Vimeo


Xfire


Steam url id


Raptr


MySpace


Linkedin


Tumblr


Flickr


XBOX Live


PlayStation PSN


Origin


PlayFire


SoundCloud


Pinterest


Reddit


Twitch.Tv


Ustream.Tv


Duxter


Instagram


Location


Interests


Interests


Occupation

Found 318 results

  1. Hello guys, my System: I7 2600k @4,0Ghz OC | MSI-P67A-GD65 | 8800GTX Old Gpu i already bought new one! (GTX 770) | Scythe Mugen 4 Tower Kühler | 2x8 GB 1333mhz | SanDisk SSD 128GB | 1000GB Seagate Desktop HDD This is my new System and i got a new SSD, i had arma 3 und my old pc on the HDD its working fine without freezing. Windows 7 and Arma 3 installed on SSD. My Problem is if i go on the map after 2 seconds my game with sound freeze for like 4 seconds, exactly the same if i press escape and go again on the map. What i did for the "Fix" remove dll allcuator, remove performance client, remove Startupparameters, remove all settings like exthreads in the luncher, did not fix it. btw sry for my bad english Video how it looks like: recorded with Fraps and msi Afterburner/rivaTuner: I think its the gpu, and if i look up in the sky my game also freeze. Please help me D: ~Fabian
  2. The image say it well hahahaha. This was a mission for the Large Rover, but... OMG... this experiment is impossible to acomplish due the cilinder area is really lower than the position of the tool.
  3. I am absolutely loving MiniDayZ, specially single player (Not many play multiplayer) however it is a bit annoying how I have to start over every time I close the window because when I try "Save and Close" I get the saving 1.. 2.. 3.. 4.. 5.. And when the countdown ends, I either get a message saying "Could not save, check internet" or My character just gets stuck kneeling down with the "Exiting" sign above him. Could it have to do with the fact that I have a crappy 2009 mac?
  4. Maybe I found a good way to reproduce the Arma3 3FPS bug. Set resolution down to 1080p (in my case i usually use 1440p)Set all Settings to low. then set everything up too ultra(except textures let them be low) arma will start to go from 900mb vram(low settings) up to 1.1gbvram(ultra ones), now set the resolution up to 1440p(1920x1200) arma uses 1,2gb vram. set supersampling to 200% arma now takes huge 2.2gb vram. finally set textures to ultra. arma now gets blackscreen ( i alwas get this one after 3 fps bug) check out logfile now: DX11 error : CreateTexture failed : E_OUTOFMEMORY, like everytime i crash after 3fps bug. additonal strange stuff in log: 16:46:04 Virtual memory total 4095 MiB (4294836224 B) 16:46:04 Virtual memory free 106 MiB (111935488 B) 16:46:04 Physical memory free 7690 MiB (8064290816 B) 16:46:04 Page file free 8919 MiB (9352835072 B) 16:46:04 Process working set 2993 MiB (3138584576 B) 16:46:04 Process page file used 3416 MiB (3582570496 B) so why it is strange? cuz i'm using a gtx 1070 with 8gb vram, and even windows added another 8gb optional dedicated ram of my 16gb ram to it so it can use up to 16gb of vram, arma it self uses its max of 3gb ram if in need + pagefile. so it seems the bug is caused by an dx 11 driver level issues if i'm right? tested this procedure on a modded mp server to reach the stress level of the game easier, but the behavour should be same like without mods because of the vram issues of 4gb max. btw added you, so we maybe find an easy way to share the .rpt files that may help you to investigate the issue. // issue is same with and without profiling.exe Additional info about my complete sys: win 10 x64 i7 6700 gtx1070 @ 8gb gddr5 (samsung vram) 16gb ddr4 @2166 265gb ssd (pagefile used by os) 1tb hdd /pagefile used by os) rpt log when crash is starting: then some time everything was fine again(report of bug and bug ended 15:57:28, but then blackscreen(16:15:50) while .rpt was saying: hope this can somehow be fixed soon, because i think this still can happen in 64bit version that is developed. if devs need full report logs or other details, just give me feedback and i will do my best to help.
  5. mon respawn est gérer par : respawn = "BASE"; respawndelay = 10; J'ai aussi le module de 1er soin de l'editeur. j'ai un problème, lorsque je respawn car j'ai été "oneshot" (tir a la tête ou par un explosif..bref), je peut respawn et retourner sur le terrain et tout ce passe bien. MAIS si je suis blesser (au sol en attente d’être soigner,module de 1er soin) et que je clic sur "réaparition", là les IA ne me verront même plus et ne me tirs plus dessus quand je vais vers eux. Voila, merci d'avance pour vos réponse. Si un jour mon problème est régler j'aimerais implémenter dans ma mission le fait de pouvoir ajouter des soldat a mon escouade ingame grâce a un menu. un peu comme dans EVO RED mais sans avoir a payer. En espérant qu'il y'a des français ici..
  6. Last night we found a bug with a machine gun fixed without AI was moving and shooting! link: https://youtu.be/vncdpMBRdSs
  7. Text chat (player text messages, system messages, et cetera) disappear upon entering the Splendid Camera. Exiting the camera does not resolve the issue; aborting to the lobby and rejoining the mission will restore text chat. Steps to reproduce: Start up and join a dedicated server. Login as the admin. Hit escape and enter the Splendid Camera. Notice that text chat is no longer visible in-game. Text chat should still be visible to other clients, and will appear in the server and RCon logs. Abort to lobby and rejoin. Text chat should be visible again. Game version: 1.58.135742
  8. I couldnt get the signup email from the phabricator feedback channel so I post this here. Let me know if its a duplicate. Tested on 1.62 with no mods. Didnt try previous versions so not sure if its a regression. I spotted this at the industrial complex at GORI, also featured in the campaign as one of the bases. GR053179 Position yourself such that you view the same image as the picture. Stand next to the bunker door, then look backwards. The terrain might disappear. http://imgur.com/aiUlHKx
  9. Hi guys, first of all I know this has probably been reported before, but I am having major issues as the topic title suggests. I have been playing arma for about 2 years and after taking a 3month break I came back (didn't take note of any updates as good guy Steam autoInstalls them all) and I noticed that the nights are very very dark and my chemlights almost have no effect anymore. Can you please point me to a thread where this discussion is ongoing so that I can see if there are any solutions to my problems? Kind regards, Soul Independent for life
  10. So I ran into an issue a while ago, where I'd be trying to use my flight stick (First my Logitech Extreme 3D Pro, Now my Thrustmaster HOTAS X) in a jet or helicopter, but when I pushed my throttle all the way forward, nothing would happen. After extensive Google searches on this issue, I saw that most people had a problem with the throttle being split between thrust and brake, but nothing about my specific issue, which brings me here. At first, I would only have to hold the Shift key for a few seconds to get the plane going, after which it was fine, but now as soon as I let go of Shift, I just slow down. I think that some power is being applied by the throttle, but it never goes to 100% (or when I hear that whoosh sound that you get when flying normally at full throttle). I checked in the controller settings, played with deadzones, sensitivity, and all that but nothing so far has worked. And the reading on that screen registers the throttle at 100, it's just that the game doesn't. Any help at all with this issue will be appreciated, because my forte is flying (and I'm not good at anything else in the game).
  11. Hi, I have some malfunction with my joystick : T-Flight hotas X by Thrustmaster (just for arma 3, not in DCS or FSX), when i press escape, open map or back office, etc... , the throttle value change to 0% but my physical throttle joystick is up to 100%. I have this problem with planes and helicopter with and without mods. I test with differents sensitivity and dead zone.
  12. i ve 2 groups with 3 waypoints for each of them placed at 2D editor. there r 2 move waypoints and the last is a cycle waypoint to let em walk along the waypoints continuously. I ve synced every pair of waypoints each other. wp 1 of group 1 is synced with wp 1 of group 2 wp 2 of group 1 is synced with wp 2 of group 2 wp 3 of group 1 is synced with wp 3 of group 2 my thougts were that the group which is faster waits for the slower group on each waypoint. that works for the first and second waypoint but at the third (cycle) waypoint the faster group isnt waiting but running to wp 1 and waiting there until the slower group is at wp 1. I just need a confirmation for that behaviour to know if thats normal that syncing of cycle waypoints seems to be senseless... thx alot. EDIT after some more testing I noticed that cycle waypoints dont execute the "On Activation" field. I entered a systemChat in it which works if its a move waypoint but not if its a cycle waypoint. Is that intended or a bug?
  13. Hey guys, i m spawning a hunter with this code: { // for each vehicle _vec = createVehicle [(_x select 0), [0, 0, 0], [], 0, "NONE"]; _vec setPosASL ((_x select 1) vectorAdd [0,0,1]); } forEach _all_vec_info; the problem is that neither me as player nor any AI can turn the engine on and drive it. I dont understand it. If I test it then I see the hunter spawning, geting in it and try to move forward with "W" but nothing happens. I can change the front wheel direction but the engine is not turning on. I tried to choose "Engine On" from action menu. The engine sign in the hud is switching to white shortly and instantly switchs to grey. Idk what is causing that strange behavior. any help woul be appreciated. EDIT: I tested it with a Quad with the same result. I tested if there is fuel in it and the fuel value is nearly 1 I tested to add the vec to my group with debug console with following command: (group player) addVehicle (vehicle player); same strange result.... Testing environment is preview in 2D editor stable branch (not dev). After Fiddis post I testet do disable and enable Simulation via debug console ... doesnt help. tryteyker requested structure of _all_vec_info. it looks like this if 3 vehicles r stored in it: [[type, pos, vectorDir , ... ], [type, pos, vectorDir , ... ], [type, pos, vectorDir , ...]]
  14. Hello. I have been having an error ever since workshop modding came out where I cannot access any of my workshop mods at all, whether through the launcher or by moving them into the directory so I can control them manually. Steam frequently updates and downloads workshop content as necessary, but there is no way for me to use it and it is incredibly frustrating. For more info, I had my Arma directory located on my C: Drive but got a new HD and decided to port it to my E: as mod content was taking up so much space. I have re-installed numerous times, to no avail. Please let me know if I can fix this, or there is a steam issue.
  15. Fellow members, I am working on a tweaked realism version of the beautiful mod GWAR3 made by GossamerSolid. I noticed after patch 1.54 the attachment purchasing is broken. I am still investigating this issue but maybe someone here more experienced can point me to the right direction. Sorry for the long ass code but I want to avoid giving too few info. The attachment part is processed in line 502. Thank you for your time. disableSerialization; _display = _this select 0; //Block UI for network call _netBlockBGCTRL = _display displayCtrl 1110; _netBlockBGCTRL ctrlShow true; _netBlockTextCTRL = _display displayCtrl 1111; _netBlockTextCTRL ctrlShow true; //Vars GW_PUREQUIP_CHANGEDCATEGORY = false; GW_PUREQUIP_PRIMARYLISTCHANGED = false; GW_PUREQUIP_CONTAINERCHANGED = false; GW_PUREQUIP_PURCHASEEQUIPMENT = false; GW_PUREQUIP_REDRAWINV = false; GW_PUREQUIP_RECALC_TOTAL = false; GW_PUREQUIP_RECALC_MASS = false; GW_PUREQUIP_LOADTEMPLATE = false; GW_PUREQUIP_GETTEMPLATES = false; GW_PUREQUIP_UPDATETEMPLATE = false; GW_PUREQUIP_DELETETEMPLATE = false; GW_PUREQUIP_SAVENEWTEMPLATE = false; GW_PUREQUIP_CONTAINERSEL = -1; GW_PUREQUIP_TOTALCOST = 0; GW_PUREQUIP_MAINLIST = []; GW_PUREQUIP_SECONDLIST = []; GW_PUREQUIP_ATTACHLIST = []; GW_PUREQUIP_CURRENTTEMPLATE = []; GW_PUREQUIP_TYPE_ITEM = 131072; GW_PUREQUIP_UNIFORM_CURR = 0; GW_PUREQUIP_UNIFORM_MAX = 0; GW_PUREQUIP_VEST_CURR = 0; GW_PUREQUIP_VEST_MAX = 0; GW_PUREQUIP_BACKPACK_CURR = 0; GW_PUREQUIP_BACKPACK_MAX = 0; //Redraw template inventory fnc_purequip_redrawInventory = { private["_parentDisplay"]; disableSerialization; _parentDisplay = _this select 0; _uniformCTRL = _parentDisplay displayCtrl 1200; _vestCTRL = _parentDisplay displayCtrl 1201; _backpackCTRL = _parentDisplay displayCtrl 1202; _headgearCTRL = _parentDisplay displayCtrl 1203; _faceCTRL = _parentDisplay displayCtrl 1204; _nvgCTRL = _parentDisplay displayCtrl 1205; _binocsCTRL = _parentDisplay displayCtrl 1206; _mapCTRL = _parentDisplay displayCtrl 1222; _gpsCTRL = _parentDisplay displayCtrl 1223; _radioCTRL = _parentDisplay displayCtrl 1224; _compassCTRL = _parentDisplay displayCtrl 1225; _watchCTRL = _parentDisplay displayCtrl 1226; _primaryCTRL = _parentDisplay displayCtrl 1207; _primaryMuzCTRL = _parentDisplay displayCtrl 1210; _primarySideCTRL = _parentDisplay displayCtrl 1211; _primaryTopCTRL = _parentDisplay displayCtrl 1208; _primaryBipodCTRL = _parentDisplay displayCtrl 1209; _secondaryCTRL = _parentDisplay displayCtrl 1212; _secondaryMuzCTRL = _parentDisplay displayCtrl 1213; _secondarySideCTRL = _parentDisplay displayCtrl 1214; _secondaryTopCTRL = _parentDisplay displayCtrl 1215; _secondaryBipodCTRL = _parentDisplay displayCtrl 1216; _handgunCTRL = _parentDisplay displayCtrl 1217; _handgunMuzCTRL = _parentDisplay displayCtrl 1218; _handgunSideCTRL = _parentDisplay displayCtrl 1219; _handgunTopCTRL = _parentDisplay displayCtrl 1220; _handgunBipodCTRL = _parentDisplay displayCtrl 1221; _removeUniformCTRL = _parentDisplay displayCtrl 1606; _removeVestCTRL = _parentDisplay displayCtrl 1607; _removeBackpackCTRL = _parentDisplay displayCtrl 1608; //Uniform _uniformPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_uniform_gs.paa"; _uniformTT = "No Uniform"; _uniformClass = (GW_PUREQUIP_CURRENTTEMPLATE select 4) select 0; if (_uniformClass != "") then { _uniformPic = getText (configFile >> "CfgWeapons" >> _uniformClass >> "Picture"); _uniformTT = getText (configFile >> "CfgWeapons" >> _uniformClass >> "DisplayName"); _itemIndex = [_uniformClass, 0, GW_EQUIP_UNIFORMS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_uniformTT = _uniformTT + format[" - $%1",(GW_EQUIP_UNIFORMS select _itemIndex) select 1]}; _removeUniformCTRL ctrlShow true; } else {_removeUniformCTRL ctrlShow false}; _uniformCTRL ctrlSetText _uniformPic; _uniformCTRL ctrlSetTooltip _uniformTT; //Vest _vestPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_vest_gs.paa"; _vestTT = "No Vest"; _vestClass = (GW_PUREQUIP_CURRENTTEMPLATE select 5) select 0; if (_vestClass != "") then { _vestPic = getText (configFile >> "CfgWeapons" >> _vestClass >> "Picture"); _vestTT = getText (configFile >> "CfgWeapons" >> _vestClass >> "DisplayName"); _itemIndex = [_vestClass, 0, GW_EQUIP_VESTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_vestTT = _vestTT + format[" - $%1",(GW_EQUIP_VESTS select _itemIndex) select 1]}; _removeVestCTRL ctrlShow true; } else {_removeVestCTRL ctrlShow false}; _vestCTRL ctrlSetText _vestPic; _vestCTRL ctrlSetTooltip _vestTT; //Backpack _backpackPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_backpack_gs.paa"; _backpackTT = "No Backpack"; _backClass = (GW_PUREQUIP_CURRENTTEMPLATE select 6) select 0; if (_backClass != "") then { _backpackPic = getText (configFile >> "CfgVehicles" >> _backClass >> "Picture"); _backpackTT = getText (configFile >> "CfgVehicles" >> _backClass >> "DisplayName"); _itemIndex = [_backClass, 0, GW_EQUIP_BACKPACKS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_backpackTT = _backpackTT + format[" - $%1",(GW_EQUIP_BACKPACKS select _itemIndex) select 1]}; _removeBackpackCTRL ctrlShow true; } else {_removeBackpackCTRL ctrlShow false}; _backpackCTRL ctrlSetText _backpackPic; _backpackCTRL ctrlSetTooltip _backpackTT; //Headgear _headgearPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_helmet_gs.paa"; _headgearTT = "No Headgear"; _headClass = GW_PUREQUIP_CURRENTTEMPLATE select 0; if (_headClass != "") then { _headgearPic = getText (configFile >> "CfgWeapons" >> _headClass >> "Picture"); _headgearTT = getText (configFile >> "CfgWeapons" >> _headClass >> "DisplayName"); _itemIndex = [_headClass, 0, GW_EQUIP_HEADGEAR] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_headgearTT = _headgearTT + format[" - $%1",(GW_EQUIP_HEADGEAR select _itemIndex) select 1]}; }; _headgearCTRL ctrlSetText _headgearPic; _headgearCTRL ctrlSetTooltip _headgearTT; //Facewear _facePic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_glasses_gs.paa"; _faceTT = "No Facewear"; _faceClass = GW_PUREQUIP_CURRENTTEMPLATE select 1; if (_faceClass != "") then { _facePic = getText (configFile >> "CfgGlasses" >> _faceClass >> "Picture"); _faceTT = getText (configFile >> "CfgGlasses" >> _faceClass >> "DisplayName"); _itemIndex = [_faceClass, 0, GW_EQUIP_FACEWEAR] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_faceTT = _faceTT + format[" - $%1",(GW_EQUIP_FACEWEAR select _itemIndex) select 1]}; }; _faceCTRL ctrlSetText _facePic; _faceCTRL ctrlSetTooltip _faceTT; //NVG _nvgPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_nvg_gs.paa"; _nvgTT = "No Head Mounted Display"; _nvgClass = GW_PUREQUIP_CURRENTTEMPLATE select 3; if (_nvgClass != "") then { _nvgPic = getText (configFile >> "CfgWeapons" >> _nvgClass >> "Picture"); _nvgTT = getText (configFile >> "CfgWeapons" >> _nvgClass >> "DisplayName"); _itemIndex = [_nvgClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_nvgTT = _nvgTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _nvgCTRL ctrlSetText _nvgPic; _nvgCTRL ctrlSetTooltip _nvgTT; //Binoculars _binocsPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_binocular_gs.paa"; _binocsTT = "No Binocular"; _binocClass = GW_PUREQUIP_CURRENTTEMPLATE select 2; if (_binocClass != "") then { _binocsPic = getText (configFile >> "CfgWeapons" >> _binocClass >> "Picture"); _binocsTT = getText (configFile >> "CfgWeapons" >> _binocClass >> "DisplayName"); _itemIndex = [_binocClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_binocsTT = _binocsTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _binocsCTRL ctrlSetText _binocsPic; _binocsCTRL ctrlSetTooltip _binocsTT; //Map _mapPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_map_gs.paa"; _mapTT = "No Map"; _mapClass = (GW_PUREQUIP_CURRENTTEMPLATE select 10) select 2; if (_mapClass != "") then { _mapPic = getText (configFile >> "CfgWeapons" >> _mapClass >> "Picture"); _mapTT = getText (configFile >> "CfgWeapons" >> _mapClass >> "DisplayName"); _itemIndex = [_mapClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_mapTT = _mapTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _mapCTRL ctrlSetText _mapPic; _mapCTRL ctrlSetTooltip _mapTT; //GPS _gpsPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_gps_gs.paa"; _gpsTT = "No GPS"; _gpsClass = (GW_PUREQUIP_CURRENTTEMPLATE select 10) select 1; if (_gpsClass != "") then { _gpsPic = getText (configFile >> "CfgWeapons" >> _gpsClass >> "Picture"); _gpsTT = getText (configFile >> "CfgWeapons" >> _gpsClass >> "DisplayName"); _itemIndex = [_gpsClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_gpsTT = _gpsTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _gpsCTRL ctrlSetText _gpsPic; _gpsCTRL ctrlSetTooltip _gpsTT; //Radio _radioPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_radio_gs.paa"; _radioTT = "No Radio"; _radioClass = (GW_PUREQUIP_CURRENTTEMPLATE select 10) select 3; if (_radioClass != "") then { _radioPic = getText (configFile >> "CfgWeapons" >> _radioClass >> "Picture"); _radioTT = getText (configFile >> "CfgWeapons" >> _radioClass >> "DisplayName"); _itemIndex = [_radioClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_radioTT = _radioTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _radioCTRL ctrlSetText _radioPic; _radioCTRL ctrlSetTooltip _radioTT; //Compass _compassPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_compass_gs.paa"; _compassTT = "No Compass"; _compassClass = (GW_PUREQUIP_CURRENTTEMPLATE select 10) select 0; if (_compassClass != "") then { _compassPic = getText (configFile >> "CfgWeapons" >> _compassClass >> "Picture"); _compassTT = getText (configFile >> "CfgWeapons" >> _compassClass >> "DisplayName"); _itemIndex = [_compassClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_compassTT = _compassTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _compassCTRL ctrlSetText _compassPic; _compassCTRL ctrlSetTooltip _compassTT; //Watch _watchPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_watch_gs.paa"; _watchTT = "No Watch"; _watchClass = (GW_PUREQUIP_CURRENTTEMPLATE select 10) select 4; if (_watchClass != "") then { _watchPic = getText (configFile >> "CfgWeapons" >> _watchClass >> "Picture"); _watchTT = getText (configFile >> "CfgWeapons" >> _watchClass >> "DisplayName"); _itemIndex = [_watchClass, 0, GW_EQUIP_OTHERS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_watchTT = _watchTT + format[" - $%1",(GW_EQUIP_OTHERS select _itemIndex) select 1]}; }; _watchCTRL ctrlSetText _watchPic; _watchCTRL ctrlSetTooltip _watchTT; //Primary Weapon _primaryPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_primary_gs.paa"; _primaryTT = "No Primary Weapon"; _primaryMuzPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_muzzle_gs.paa"; _primaryMuzTT = "No Muzzle Attachment"; _primarySidePic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_side_gs.paa"; _primarySideTT = "No Side Attachment"; _primaryTopPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_top_gs.paa"; _primaryTopTT = "No Optic Attachment"; _primaryBipodPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_bipod_gs.paa"; _primaryBipodTT = "No Bipod Attachment"; _primaryClass = (GW_PUREQUIP_CURRENTTEMPLATE select 7) select 0; if (_primaryClass != "") then { _primaryPic = getText (configFile >> "CfgWeapons" >> _primaryClass >> "Picture"); _primaryTT = getText (configFile >> "CfgWeapons" >> _primaryClass >> "DisplayName"); _itemIndex = [_primaryClass, 0, GW_EQUIP_WEAP_PRIMARY] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_primaryTT = _primaryTT + format[" - $%1",(GW_EQUIP_WEAP_PRIMARY select _itemIndex) select 1]}; _primaryAttach = (GW_PUREQUIP_CURRENTTEMPLATE select 7) select 1; if (_primaryAttach select 0 != "") then { _primaryMuzPic = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 0) >> "Picture"); _primaryMuzTT = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 0) >> "DisplayName"); _itemIndex = [(_primaryAttach select 0), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_primaryMuzTT = _primaryMuzTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if (_primaryAttach select 1 != "") then { _primarySidePic = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 1) >> "Picture"); _primarySideTT = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 1) >> "DisplayName"); _itemIndex = [(_primaryAttach select 1), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_primarySideTT = _primarySideTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if (_primaryAttach select 2 != "") then { _primaryTopPic = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 2) >> "Picture"); _primaryTopTT = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 2) >> "DisplayName"); _itemIndex = [(_primaryAttach select 2), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_primaryTopTT = _primaryTopTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_primaryAttach select 3) != "") then { _primaryBipodPic = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 3) >> "Picture"); _primaryBipodTT = getText (configFile >> "CfgWeapons" >> (_primaryAttach select 3) >> "DisplayName"); _itemIndex = [(_primaryAttach select 3), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_primaryBipodTT = _primaryBipodTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; }; _primaryCTRL ctrlSetText _primaryPic; _primaryCTRL ctrlSetTooltip _primaryTT; _primaryMuzCTRL ctrlSetText _primaryMuzPic; _primaryMuzCTRL ctrlSetTooltip _primaryMuzTT; _primarySideCTRL ctrlSetText _primarySidePic; _primarySideCTRL ctrlSetTooltip _primarySideTT; _primaryTopCTRL ctrlSetText _primaryTopPic; _primaryTopCTRL ctrlSetTooltip _primaryTopTT; _primaryBipodCTRL ctrlSetText _primaryBipodPic; _primaryBipodCTRL ctrlSetTooltip _primaryBipodTT; //Secondary Weapon _secondaryPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_secondary_gs.paa"; _secondaryTT = "No Secondary Weapon"; _secondaryMuzPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_muzzle_gs.paa"; _secondaryMuzTT = "No Muzzle Attachment"; _secondarySidePic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_side_gs.paa"; _secondarySideTT = "No Side Attachment"; _secondaryTopPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_top_gs.paa"; _secondaryTopTT = "No Optic Attachment"; _secondaryBipodPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_bipod_gs.paa"; _secondaryBipodTT = "No Bipod Attachment"; _secondaryClass = (GW_PUREQUIP_CURRENTTEMPLATE select 8) select 0; if (_secondaryClass != "") then { _secondaryPic = getText (configFile >> "CfgWeapons" >> _secondaryClass >> "Picture"); _secondaryTT = getText (configFile >> "CfgWeapons" >> _secondaryClass >> "DisplayName"); _itemIndex = [_secondaryClass, 0, GW_EQUIP_WEAP_SECONDARY] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_secondaryTT = _secondaryTT + format[" - $%1",(GW_EQUIP_WEAP_SECONDARY select _itemIndex) select 1]}; _secondaryAttach = (GW_PUREQUIP_CURRENTTEMPLATE select 8) select 1; if ((_secondaryAttach select 0) != "") then { _secondaryMuzPic = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 0) >> "Picture"); _secondaryMuzTT = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 0) >> "DisplayName"); _itemIndex = [(_secondaryAttach select 0), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_secondaryMuzTT = _secondaryMuzTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_secondaryAttach select 1) != "") then { _secondarySidePic = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 1) >> "Picture"); _secondarySideTT = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 1) >> "DisplayName"); _itemIndex = [(_secondaryAttach select 1), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_secondarySideTT = _secondarySideTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_secondaryAttach select 2) != "") then { _secondaryTopPic = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 2) >> "Picture"); _secondaryTopTT = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 2) >> "DisplayName"); _itemIndex = [(_secondaryAttach select 2), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_secondaryTopTT = _secondaryTopTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_secondaryAttach select 3) != "") then { _secondaryBipodPic = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 3) >> "Picture"); _secondaryBipodTT = getText (configFile >> "CfgWeapons" >> (_secondaryAttach select 3) >> "DisplayName"); _itemIndex = [(_secondaryAttach select 3), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_secondaryBipodTT = _secondaryBipodTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; }; _secondaryCTRL ctrlSetText _secondaryPic; _secondaryCTRL ctrlSetTooltip _secondaryTT; _secondaryMuzCTRL ctrlSetText _secondaryMuzPic; _secondaryMuzCTRL ctrlSetTooltip _secondaryMuzTT; _secondarySideCTRL ctrlSetText _secondarySidePic; _secondarySideCTRL ctrlSetTooltip _secondarySideTT; _secondaryTopCTRL ctrlSetText _secondaryTopPic; _secondaryTopCTRL ctrlSetTooltip _secondaryTopTT; _secondaryBipodCTRL ctrlSetText _secondaryBipodPic; _secondaryBipodCTRL ctrlSetTooltip _secondaryBipodTT; //Handgun _handgunPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_hgun_gs.paa"; _handgunTT = "No Handgun"; _handgunMuzPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_muzzle_gs.paa"; _handgunMuzTT = "No Muzzle Attachment"; _handgunSidePic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_side_gs.paa"; _handgunSideTT = "No Side Attachment"; _handgunTopPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_top_gs.paa"; _handgunTopTT = "No Optic Attachment"; _handgunBipodPic = "\A3\ui_f\data\gui\Rsc\RscDisplayGear\ui_gear_bipod_gs.paa"; _handgunBipodTT = "No Bipod Attachment"; _handgunClass = (GW_PUREQUIP_CURRENTTEMPLATE select 9) select 0; if (_handgunClass != "") then { _handgunPic = getText (configFile >> "CfgWeapons" >> _handgunClass >> "Picture"); _handgunTT = getText (configFile >> "CfgWeapons" >> _handgunClass >> "DisplayName"); _itemIndex = [_handgunClass, 0, GW_EQUIP_WEAP_SIDEARM] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_handgunTT = _handgunTT + format[" - $%1",(GW_EQUIP_WEAP_SIDEARM select _itemIndex) select 1]}; _handgunAttach = (GW_PUREQUIP_CURRENTTEMPLATE select 9) select 1; if ((_handgunAttach select 0) != "") then { _handgunMuzPic = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 0) >> "Picture"); _handgunMuzTT = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 0) >> "DisplayName"); _itemIndex = [(_handgunAttach select 0), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_handgunMuzTT = _handgunMuzTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_handgunAttach select 1) != "") then { _handgunSidePic = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 1) >> "Picture"); _handgunSideTT = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 1) >> "DisplayName"); _itemIndex = [(_handgunAttach select 1), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_handgunSideTT = _handgunSideTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_handgunAttach select 2) != "") then { _handgunTopPic = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 2) >> "Picture"); _handgunTopTT = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 2) >> "DisplayName"); _itemIndex = [(_handgunAttach select 2), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_handgunTopTT = _handgunTopTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; if ((_handgunAttach select 3) != "") then { _handgunBipodPic = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 3) >> "Picture"); _handgunBipodTT = getText (configFile >> "CfgWeapons" >> (_handgunAttach select 3) >> "DisplayName"); _itemIndex = [(_handgunAttach select 3), 0, GW_EQUIP_ATTACHMENTS] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then {_handgunBipodTT = _handgunBipodTT + format[" - $%1",(GW_EQUIP_ATTACHMENTS select _itemIndex) select 1]}; }; }; _handgunCTRL ctrlSetText _handgunPic; _handgunCTRL ctrlSetTooltip _handgunTT; _handgunMuzCTRL ctrlSetText _handgunMuzPic; _handgunMuzCTRL ctrlSetTooltip _handgunMuzTT; _handgunSideCTRL ctrlSetText _handgunSidePic; _handgunSideCTRL ctrlSetTooltip _handgunSideTT; _handgunTopCTRL ctrlSetText _handgunTopPic; _handgunTopCTRL ctrlSetTooltip _handgunTopTT; _handgunBipodCTRL ctrlSetText _handgunBipodPic; _handgunBipodCTRL ctrlSetTooltip _handgunBipodTT; }; //Populate list depending on category selected fnc_purequip_populateGearList = { private["_categoryIndex","_parentDisp","_equipPopulateNetCall","_equipPopulateNetCall"]; disableSerialization; _categoryIndex = _this select 0; _parentDisp = _this select 1; //Clear lists lbClear 1500; lbClear 1501; lbClear 1505; GW_PUREQUIP_SECONDLIST = []; GW_PUREQUIP_ATTACHLIST = []; //What array should we work with GW_PUREQUIP_MAINLIST = Call Compile Format["GW_PUREQUIP_%1",lbData[2100, _categoryIndex]]; //Populate the main list { lbAdd [1500, format["$%1 - %2",_x select 1,(getText (configFile >> (_x select 3) >> (_x select 0) >> "DisplayName"))]]; lbSetPicture [1500, _forEachIndex, (getText (configFile >> (_x select 3) >> (_x select 0) >> "Picture"))]; lbSetData [1500, _forEachIndex, (_x select 0)]; } forEach GW_PUREQUIP_MAINLIST; if ((count GW_PUREQUIP_MAINLIST) > 0) then {lbSetCurSel [1500, 0]}; //If a primary entry is selected, attempt to populate related magazines if ((lbCurSel 1500) > -1) then {GW_PUREQUIP_PRIMARYLISTCHANGED = true}; }; //Populate the magazine list depending on what weapon is selected fnc_purequip_populateMagazineList = { private["_currentSelectedPrimary","_weapClassname","_configMagsArray"]; _currentSelectedPrimary = _this select 0; //Clear list lbClear 1501; //Figure out what classname of weapon is selected in the main list _weapClassname = (GW_PUREQUIP_MAINLIST select _currentSelectedPrimary) select 0; //Get a list of magazines the gun can use from the config (Safe to hardcode CfgWeapons) _configMagsArray = GetArray (configFile >> "CfgWeapons" >> _weapClassname >> "magazines"); _allConfigMagsArray = _configMagsArray; //Check for magazines under muzzles _muzzlesCfg = GetArray (configFile >> "CfgWeapons" >> _weapClassname >> "muzzles"); _muzzleMags = []; { if (_x != "this") then { _muzMagList = GetArray (configFile >> "CfgWeapons" >> _weapClassname >> _x >> "magazines"); _allConfigMagsArray = [_allConfigMagsArray, _muzMagList] Call fnc_shr_mergeArrays; }; } forEach _muzzlesCfg; //Parse out magazines list GW_PUREQUIP_SECONDLIST = []; { _cfgMagsClass = _x; { if ((_x select 0) == _cfgMagsClass) exitWith {GW_PUREQUIP_SECONDLIST set [count GW_PUREQUIP_SECONDLIST, _x]}; } forEach GW_PUREQUIP_MAGAZINES; } forEach _allConfigMagsArray; //Populate the second list { lbAdd [1501, format["$%1 - %2",_x select 1,(getText (configFile >> (_x select 3) >> (_x select 0) >> "DisplayName"))]]; lbSetPicture [1501, _forEachIndex, (getText (configFile >> (_x select 3) >> (_x select 0) >> "Picture"))]; lbSetData [1501, _forEachIndex, (_x select 0)]; } forEach GW_PUREQUIP_SECONDLIST; }; //Populate attachments list depending on what weapon is selected fnc_purequip_populateAttachmentList = { private["_currentSelectedPrimary","_weapClassname","_configCows","_configMuzzle","_configPointer","_configAttach"]; _currentSelectedPrimary = _this select 0; //Clear list lbClear 1505; //Figure out what classname of weapon is selected in the main list _weapClassname = (GW_PUREQUIP_MAINLIST select _currentSelectedPrimary) select 0; _configAttach = []; { configProperties [ configFile >> "CfgWeapons" >> _weapClassname >> "WeaponSlotsInfo" >> _x >> "compatibleItems", "_configAttach pushBack (configName _x)", true ]; } forEach ["CowsSlot", "MuzzleSlot", "PointerSlot", "UnderBarrelSlot"]; //Parse out attachments list GW_PUREQUIP_ATTACHLIST = []; { _cfgAttachClass = _x; { if ((_x select 0) == _cfgAttachClass) exitWith {GW_PUREQUIP_ATTACHLIST set [count GW_PUREQUIP_ATTACHLIST, _x]}; } forEach GW_PUREQUIP_ATTACHMENTS; } forEach _configAttach; //Populate the attachment list { lbAdd [1505, format["$%1 - %2",_x select 1,(getText (configFile >> (_x select 3) >> (_x select 0) >> "DisplayName"))]]; lbSetPicture [1505, _forEachIndex, (getText (configFile >> (_x select 3) >> (_x select 0) >> "Picture"))]; lbSetData [1505, _forEachIndex, (_x select 0)]; } forEach GW_PUREQUIP_ATTACHLIST; }; //Populate inventory container list fnc_purequip_populateContainerList = { private["_containerIndex","_containerContents"]; _containerIndex = _this select 0; //Clear list lbClear 1504; _containerContents = (GW_PUREQUIP_CURRENTTEMPLATE select _containerIndex) select 1; { _classname = _x; _cfgClass = _x Call fnc_shr_getEquipCfgClass; //Get the price of the item (we don't know what category it's in, so unfortunately we need to search the entire equipment array) _price = 0; _classNameIndex = [_classname, 0, GW_PUREQUIP_FULLLIST] Call fnc_shr_arrayGetIndex; if (_classNameIndex != -1) then {_price = (GW_PUREQUIP_FULLLIST select _classNameIndex) select 1}; _displayString = format["$%1 - %2",_price,(getText (configFile >> _cfgClass >> _classname >> "DisplayName"))]; lbAdd [1504, _displayString]; lbSetTooltip [1504, _forEachIndex, _displayString]; lbSetPicture [1504, _forEachIndex, (getText (configFile >> _cfgClass >> _classname >> "Picture"))]; } forEach _containerContents; }; //Can an item fit in a specified container fnc_purequip_canFitInContainer = { private["_itemClass","_container","_cfgClass","_canFit","_classType","_allowedSlots"]; _itemClass = _this select 0; _container = _this select 1; _canFit = false; //Make sure the container actually exists in the template if (_container != "") then { if (_container == "Uniform") then {if (((GW_PUREQUIP_CURRENTTEMPLATE select 4) select 0) != "") then {_canFit = true}}; if (_container == "Vest") then {if (((GW_PUREQUIP_CURRENTTEMPLATE select 5) select 0) != "") then {_canFit = true}}; if (_container == "Backpack") then {if (((GW_PUREQUIP_CURRENTTEMPLATE select 6) select 0) != "") then {_canFit = true}}; }; //Check if the item can fit inside the container if (_itemClass != "" && _canFit) then { _cfgClass = _itemClass Call fnc_shr_getEquipCfgClass; if (_cfgClass == "CfgWeapons") then { _classType = getNumber(configFile >> _cfgClass >> _itemClass >> "type"); if (_classType == GW_PUREQUIP_TYPE_ITEM) then { _configsProperties = []; configProperties [configFile >> _cfgClass >> _itemClass >> "ItemInfo", "_configsProperties pushBack (configName _x); true", true]; if ("allowedSlots" in _configsProperties) then { _allowedSlots = getArray(configFile >> _cfgClass >> _itemClass >> "ItemInfo" >> "allowedSlots"); if ((_container == "Uniform") && (801 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Vest") && (701 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Backpack") && (901 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; } else { _canFit = true; }; } else { _allowedSlots = getArray(configFile >> _cfgClass >> _itemClass >> "WeaponSlotsInfo" >> "allowedSlots"); if ((_container == "Uniform") && (801 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Vest") && (701 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Backpack") && (901 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; }; }; if (_cfgClass == "CfgGlasses") then {_canFit = true}; if (_cfgClass == "CfgMagazines") then { _allowedSlots = getArray(configFile >> _cfgClass >> _itemClass >> "allowedSlots"); if (count _allowedSlots == 0) then { _canFit = true; } else { if ((_container == "Uniform") && (801 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Vest") && (701 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; if ((_container == "Backpack") && (901 in _allowedSlots)) then {_canFit = true} else {_canFit = false}; }; }; }; _canFit }; //Get item's mass fnc_purequip_getItemMass = { private["_mass","_cfgClass","_classType"]; _mass = 0; if (_this != "") then { _cfgClass = _this Call fnc_shr_getEquipCfgClass; if (_cfgClass == "CfgWeapons") then { _classType = getNumber(configFile >> _cfgClass >> _this >> "type"); _mass = if (_classType == GW_PUREQUIP_TYPE_ITEM) then {getNumber(configFile >> _cfgClass >> _this >> "ItemInfo" >> "mass")} else {getNumber(configFile >> _cfgClass >> _this >> "WeaponSlotsInfo" >> "mass")}; } else { _mass = getNumber(configFile >> _cfgClass >> _this >> "mass"); }; }; _mass }; //Get a specific container's current mass fnc_purequip_getContainerCurrentMass = { private["_currentMass","_containerArray","_itemMass"]; _currentMass = 0; _containerArray = []; if (_this == "Uniform" && (((GW_PUREQUIP_CURRENTTEMPLATE select 4) select 0) != "")) then { _containerArray = ((GW_PUREQUIP_CURRENTTEMPLATE select 4) select 1); }; if (_this == "Vest" && (((GW_PUREQUIP_CURRENTTEMPLATE select 5) select 0) != "")) then { _containerArray = ((GW_PUREQUIP_CURRENTTEMPLATE select 5) select 1); }; if (_this == "Backpack" && (((GW_PUREQUIP_CURRENTTEMPLATE select 6) select 0) != "")) then { _containerArray = ((GW_PUREQUIP_CURRENTTEMPLATE select 6) select 1); }; //Go through container's contents { _itemMass = _x Call fnc_purequip_getItemMass; _currentMass = _currentMass + _itemMass; } forEach _containerArray; _currentMass }; //Get a specific container's max mass fnc_purequip_getContainerMaxMass = { private["_maxMass","_cfgClass","_containerClass"]; _maxMass = 0; _containerClassName = ""; if (_this == "Uniform") then {_containerClassName = (GW_PUREQUIP_CURRENTTEMPLATE select 4) select 0}; if (_this == "Vest") then {_containerClassName = (GW_PUREQUIP_CURRENTTEMPLATE select 5) select 0}; if (_this == "Backpack") then {_containerClassName = (GW_PUREQUIP_CURRENTTEMPLATE select 6) select 0}; if (_containerClassName != "") then { _cfgClass = _containerClassName Call fnc_shr_getEquipCfgClass; if (_cfgClass == "CfgVehicles") then { _maxMass = getNumber(configFile >> "CfgVehicles" >> _containerClassName >> "maximumLoad"); }; if (_cfgClass == "CfgWeapons") then { _containerClass = getText(configFile >> "CfgWeapons" >> _containerClassName >> "ItemInfo" >> "containerClass"); _maxMass = getNumber(configFile >> "CfgVehicles" >> _containerClass >> "maximumLoad"); }; }; _maxMass }; //Update all container's masses fnc_purequip_updateMasses = { private["_parentDisp"]; disableSerialization; _parentDisp = _this select 0; GW_PUREQUIP_UNIFORM_CURR = "Uniform" Call fnc_purequip_getContainerCurrentMass; GW_PUREQUIP_UNIFORM_MAX = "Uniform" Call fnc_purequip_getContainerMaxMass; _BGUniformMassCtrl = _parentDisp displayCtrl 1102; _BarUniformMassCtrl = _parentDisp displayCtrl 1105; if (GW_PUREQUIP_UNIFORM_MAX == 0) then { _BGUniformMassCtrl ctrlShow false; _BarUniformMassCtrl ctrlShow false; } else { _BGUniformMassCtrl ctrlShow true; _BarUniformMassCtrl ctrlShow true; _BGUniformMassMaxWidth = (CtrlPosition _BGUniformMassCtrl select 2) - 0.02; _BarUniformMassCurPos = CtrlPosition _BarUniformMassCtrl; _BarUniformMassCurPos set [2, _BGUniformMassMaxWidth * (GW_PUREQUIP_UNIFORM_CURR / GW_PUREQUIP_UNIFORM_MAX)]; _BarUniformMassCtrl CtrlSetPosition _BarUniformMassCurPos; _BarUniformMassCtrl CtrlCommit 0; }; GW_PUREQUIP_VEST_CURR = "Vest" Call fnc_purequip_getContainerCurrentMass; GW_PUREQUIP_VEST_MAX = "Vest" Call fnc_purequip_getContainerMaxMass; _BGVestMassCtrl = _parentDisp displayCtrl 1103; _BarVestMassCtrl = _parentDisp displayCtrl 1106; if (GW_PUREQUIP_VEST_MAX == 0) then { _BGVestMassCtrl ctrlShow false; _BarVestMassCtrl ctrlShow false; } else { _BGVestMassCtrl ctrlShow true; _BarVestMassCtrl ctrlShow true; _BGVestMassMaxWidth = (CtrlPosition _BGVestMassCtrl select 2) - 0.02; _BarVestMassCurPos = CtrlPosition _BarVestMassCtrl; _BarVestMassCurPos set [2, _BGVestMassMaxWidth * (GW_PUREQUIP_VEST_CURR / GW_PUREQUIP_VEST_MAX)]; _BarVestMassCtrl CtrlSetPosition _BarVestMassCurPos; _BarVestMassCtrl CtrlCommit 0; }; GW_PUREQUIP_BACKPACK_CURR = "Backpack" Call fnc_purequip_getContainerCurrentMass; GW_PUREQUIP_BACKPACK_MAX = "Backpack" Call fnc_purequip_getContainerMaxMass; _BGBackpackMassCtrl = _parentDisp displayCtrl 1104; _BarBackpackMassCtrl = _parentDisp displayCtrl 1107; if (GW_PUREQUIP_BACKPACK_MAX == 0) then { _BGBackpackMassCtrl ctrlShow false; _BarBackpackMassCtrl ctrlShow false; } else { _BGBackpackMassCtrl ctrlShow true; _BarBackpackMassCtrl ctrlShow true; _BGBackpackMassMaxWidth = (CtrlPosition _BGBackpackMassCtrl select 2) - 0.02; _BarBackpackMassCurPos = CtrlPosition _BarBackpackMassCtrl; _BarBackpackMassCurPos set [2, _BGBackpackMassMaxWidth * (GW_PUREQUIP_BACKPACK_CURR / GW_PUREQUIP_BACKPACK_MAX)]; _BarBackpackMassCtrl CtrlSetPosition _BarBackpackMassCurPos; _BarBackpackMassCtrl CtrlCommit 0; }; }; //Get the value of the current template fnc_purequip_updateCost = { private["_parentDisp","_totalCost"]; disableSerialization; _parentDisp = _this select 0; _equipArray = _this select 1; _totalCost = 0; //Get the value of the current template _templateCost = GW_PUREQUIP_CURRENTTEMPLATE Call fnc_shr_getEquipmentCost; //Get the value of what's on the player _playerEquip = player Call fnc_shr_getEquipArray; _playerCost = _playerEquip Call fnc_shr_getEquipmentCost; //Difference between them (Can't refund, $0 is minimum) _totalCost = (_templateCost - _playerCost) max 0; _textColor = if (_totalCost <= GW_CVAR_MONEY) then {"#269024"} else {"#c75454"}; if (_totalCost <= GW_CVAR_MONEY) then {ctrlEnable [1604, true]} else {ctrlEnable [1604, true]}; _totalCostCTRL = _parentDisp displayCtrl 1109; _totalCostCTRL ctrlSetStructuredText (parseText format ["Total Cost of Equipment: <t color='%1'>$%2</t>",_textColor, _totalCost]); GW_PUREQUIP_TOTALCOST = _totalCost; }; //Remove item from equipment fnc_purequip_removeItem = { private["_itemSlotArray","_invQuery","_preSaveArray","_innerPreSaveArray"]; _itemSlotArray = _this; _invQuery = ""; //Helmet, Facewear, Binocs, NVGs if (count _itemSlotArray == 1) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE; _preSaveArray set [_itemSlotArray select 0, ""]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; }; //Primary Weapon, Secondary Weapon, Sidearm or Assigned Items if (count _itemSlotArray == 2) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE select (_itemSlotArray select 0); _preSaveArray set [_itemSlotArray select 1, ""]; //Removed weapon, be sure to remove attachments as well if (((_itemSlotArray select 0) == 7) || ((_itemSlotArray select 0) == 8) || ((_itemSlotArray select 0) == 9)) then { if ((_preSaveArray select 0) == "") then {_preSaveArray set [1, ["","","",""]]}; }; GW_PUREQUIP_CURRENTTEMPLATE set [_itemSlotArray select 0, _preSaveArray]; }; //Weapon Attachments if (count _itemSlotArray == 3) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE select (_itemSlotArray select 0); _innerPreSaveArray = _preSaveArray select (_itemSlotArray select 1); _innerPreSaveArray set [_itemSlotArray select 2, ""]; _preSaveArray set [(_itemSlotArray select 1), _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE set [_itemSlotArray select 0, _preSaveArray]; }; //Call for update of inv GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_REDRAWINV = true; }; //Remove a given index from the selected container fnc_purequip_removeContainerItem = { private["_itemIndex","_refresh","_preSaveArray","_innerPreSaveArray","_item"]; _itemIndex = _this select 0; _refresh = _this select 1; //Don't do anything if there's no container selected (shouldn't ever happen) if (GW_PUREQUIP_CONTAINERSEL == -1) exitWith {}; //Remove specified item _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE select GW_PUREQUIP_CONTAINERSEL; _innerPreSaveArray = _preSaveArray select 1; _innerPreSaveArray set [_itemIndex, "REMOVE"]; _innerPreSaveArray = _innerPreSaveArray - ["REMOVE"]; _preSaveArray set [1, _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE set [GW_PUREQUIP_CONTAINERSEL, _preSaveArray]; //Call for update of inv (Set this to false if emptying entire container, then redraw once at end) if (_refresh) then { GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_RECALC_MASS = true; _containerPop = [GW_PUREQUIP_CONTAINERSEL] Spawn fnc_purequip_populateContainerList; waitUntil {scriptDone _containerPop}; }; }; //Remove container fnc_purequip_removeContainer = { private["_containerIndex", "_preSaveArray"]; _containerIndex = _this select 0; _preSaveArray =+ (GW_PUREQUIP_CURRENTTEMPLATE select _containerIndex); if (_preSaveArray select 0 != "") then { //If the container previously selected matches our removed one, update container selected logic if (GW_PUREQUIP_CONTAINERSEL == _containerIndex) then {GW_PUREQUIP_CONTAINERSEL = -1; GW_PUREQUIP_CONTAINERCHANGED = true}; //Update template _preSaveArray set [0, ""]; _preSaveArray set [1, []]; GW_PUREQUIP_CURRENTTEMPLATE set [_containerIndex, _preSaveArray]; //Request redraw GW_PUREQUIP_REDRAWINV = true; GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_RECALC_MASS = true; }; }; //Empty container fnc_purequip_emptyContainer = { private["_containerIndex"]; _containerIndex = _this select 0; //Update template _preSaveArray =+ (GW_PUREQUIP_CURRENTTEMPLATE select _containerIndex); _preSaveArray set [1, []]; GW_PUREQUIP_CURRENTTEMPLATE set [_containerIndex, _preSaveArray]; //Request redraw GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_RECALC_MASS = true; _containerPop = [GW_PUREQUIP_CONTAINERSEL] Spawn fnc_purequip_populateContainerList; waitUntil {scriptDone _containerPop}; }; //Can an attachment work on the weapon fnc_purequip_attachmentFits = { private["_attachClass","_weaponClass","_configAttach","_newAttachClasses","_oldAttachClasses"]; _attachClass = _this select 0; _weaponClass = _this select 1; _attachmentFits = false; _configAttach = []; { configProperties [ configFile >> "CfgWeapons" >> _weaponClass >> "WeaponSlotsInfo" >> _x >> "compatibleItems", "_configAttach pushBack (configName _x)", true ]; } forEach ["CowsSlot", "MuzzleSlot", "PointerSlot", "UnderBarrelSlot"]; //Search for our attachment { if (_x == _attachClass) exitWith {_attachmentFits = true}; } forEach _configAttach; _attachmentFits }; //Add item to template fnc_purequip_addItem = { private["_ctrl","_clickIndex","_itemIndex","_itemSlotArray","_itemClassName","_itemSlotArray"]; disableSerialization; _ctrl = _this select 0; _clickIndex = _this select 1; _itemIndex = [(lbData[_ctrl, _clickIndex]), 0, GW_PUREQUIP_FULLLIST] Call fnc_shr_arrayGetIndex; if (_itemIndex != -1) then { _itemClassName = (GW_PUREQUIP_FULLLIST select _itemIndex) select 0; _itemSlotArray = (GW_PUREQUIP_FULLLIST select _itemIndex) select 4; //Helmet, Facewear, Binocs, NVGs if ((count _itemSlotArray) == 1) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE; //Equipable item if ((_itemSlotArray select 0) != -1) then { if ((_preSaveArray select (_itemSlotArray select 0)) == "") then { _preSaveArray set [_itemSlotArray select 0, _itemClassName]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; } else { if (GW_PUREQUIP_CONTAINERSEL != -1) then { _containerName = ""; _containerMassCurrent = 0; _containerMassMax = 0; if (GW_PUREQUIP_CONTAINERSEL == 4) then {_containerName = "Uniform"; _containerMassCurrent = GW_PUREQUIP_UNIFORM_CURR; _containerMassMax = GW_PUREQUIP_UNIFORM_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 5) then {_containerName = "Vest"; _containerMassCurrent = GW_PUREQUIP_VEST_CURR; _containerMassMax = GW_PUREQUIP_VEST_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 6) then {_containerName = "Backpack"; _containerMassCurrent = GW_PUREQUIP_BACKPACK_CURR; _containerMassMax = GW_PUREQUIP_BACKPACK_MAX}; _canFit = [_itemClassName, _containerName] Call fnc_purequip_canFitInContainer; if (_canFit) then { _itemMass = _itemClassName Call fnc_purequip_getItemMass; if ((_containerMassCurrent + _itemMass) <= _containerMassMax) then { _innerPreSaveArray = _preSaveArray select GW_PUREQUIP_CONTAINERSEL; _innerSubPreSaveArray = _innerPreSaveArray select 1; _innerSubPreSaveArray pushBack _itemClassName; _innerPreSaveArray set [1, _innerSubPreSaveArray]; _preSaveArray set [GW_PUREQUIP_CONTAINERSEL, _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; GW_PUREQUIP_CONTAINERCHANGED = true; }; }; }; }; } else //Only fits in a container { if (GW_PUREQUIP_CONTAINERSEL != -1) then { _containerName = ""; _containerMassCurrent = 0; _containerMassMax = 0; if (GW_PUREQUIP_CONTAINERSEL == 4) then {_containerName = "Uniform"; _containerMassCurrent = GW_PUREQUIP_UNIFORM_CURR; _containerMassMax = GW_PUREQUIP_UNIFORM_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 5) then {_containerName = "Vest"; _containerMassCurrent = GW_PUREQUIP_VEST_CURR; _containerMassMax = GW_PUREQUIP_VEST_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 6) then {_containerName = "Backpack"; _containerMassCurrent = GW_PUREQUIP_BACKPACK_CURR; _containerMassMax = GW_PUREQUIP_BACKPACK_MAX}; _canFit = [_itemClassName, _containerName] Call fnc_purequip_canFitInContainer; if (_canFit) then { _itemMass = _itemClassName Call fnc_purequip_getItemMass; if ((_containerMassCurrent + _itemMass) <= _containerMassMax) then { _innerPreSaveArray = _preSaveArray select GW_PUREQUIP_CONTAINERSEL; _innerSubPreSaveArray = _innerPreSaveArray select 1; _innerSubPreSaveArray pushBack _itemClassName; _innerPreSaveArray set [1, _innerSubPreSaveArray]; _preSaveArray set [GW_PUREQUIP_CONTAINERSEL, _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; GW_PUREQUIP_CONTAINERCHANGED = true; }; }; }; }; }; //Primary Weapon, Secondary Weapon, Sidearm or Assigned Items if ((count _itemSlotArray) == 2) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE select (_itemSlotArray select 0); //No current item if ((_preSaveArray select (_itemSlotArray select 1)) == "") then { _preSaveArray set [(_itemSlotArray select 1), _itemClassName]; GW_PUREQUIP_CURRENTTEMPLATE set [(_itemSlotArray select 0), _preSaveArray]; } else //Current item is already populated, try to put in container { if (GW_PUREQUIP_CONTAINERSEL != -1) then { _containerName = ""; _containerMassCurrent = 0; _containerMassMax = 0; if (GW_PUREQUIP_CONTAINERSEL == 4) then {_containerName = "Uniform"; _containerMassCurrent = GW_PUREQUIP_UNIFORM_CURR; _containerMassMax = GW_PUREQUIP_UNIFORM_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 5) then {_containerName = "Vest"; _containerMassCurrent = GW_PUREQUIP_VEST_CURR; _containerMassMax = GW_PUREQUIP_VEST_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 6) then {_containerName = "Backpack"; _containerMassCurrent = GW_PUREQUIP_BACKPACK_CURR; _containerMassMax = GW_PUREQUIP_BACKPACK_MAX}; _canFit = [_itemClassName, _containerName] Call fnc_purequip_canFitInContainer; if (_canFit) then { _itemMass = _itemClassName Call fnc_purequip_getItemMass; if ((_containerMassCurrent + _itemMass) <= _containerMassMax) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE; _innerPreSaveArray = _preSaveArray select GW_PUREQUIP_CONTAINERSEL; _innerSubPreSaveArray = _innerPreSaveArray select 1; _innerSubPreSaveArray pushBack _itemClassName; _innerPreSaveArray set [1, _innerSubPreSaveArray]; _preSaveArray set [GW_PUREQUIP_CONTAINERSEL, _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; GW_PUREQUIP_CONTAINERCHANGED = true; }; }; }; }; }; //Weapon Attachments if (count _itemSlotArray == 3) then { _equipSlot = (_itemSlotArray select 0); _preSaveIndex = -1; if (typeName _equipSlot == "ARRAY") then { _gunIndex = 7; if ((lbCurSel 2100) == 1) then {_gunIndex = 8}; if ((lbCurSel 2100) == 2) then {_gunIndex = 9}; if (_gunIndex in _equipSlot) then { _preSaveIndex = _gunIndex; }; } else { _preSaveIndex = _equipSlot; }; _preSaveArray = []; _gunClass = ""; _attachmentSlot = ""; _attachmentFits = false; //If we found a suitable slot to equip if (_preSaveIndex != -1) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE select _preSaveIndex; //Does it fit on the weapon? _gunClass = (_preSaveArray select 0); _attachmentSlot = ((_preSaveArray select (_itemSlotArray select 1)) select (_itemSlotArray select 2)); _attachmentFits = if (_gunClass != "") then {[_itemClassName, _gunClass] Call fnc_purequip_attachmentFits} else {false}; }; //Has a weapon for the attachment type if (_gunClass != "" && _attachmentSlot == "" && _attachmentFits) then { _innerPreSaveArray = _preSaveArray select (_itemSlotArray select 1); _innerPreSaveArray set [(_itemSlotArray select 2), _itemClassName]; _preSaveArray set [(_itemSlotArray select 1), _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE set [_preSaveIndex, _preSaveArray]; } else //Current item is already populated, try to put in container { if (GW_PUREQUIP_CONTAINERSEL != -1) then { _containerName = ""; _containerMassCurrent = 0; _containerMassMax = 0; if (GW_PUREQUIP_CONTAINERSEL == 4) then {_containerName = "Uniform"; _containerMassCurrent = GW_PUREQUIP_UNIFORM_CURR; _containerMassMax = GW_PUREQUIP_UNIFORM_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 5) then {_containerName = "Vest"; _containerMassCurrent = GW_PUREQUIP_VEST_CURR; _containerMassMax = GW_PUREQUIP_VEST_MAX}; if (GW_PUREQUIP_CONTAINERSEL == 6) then {_containerName = "Backpack"; _containerMassCurrent = GW_PUREQUIP_BACKPACK_CURR; _containerMassMax = GW_PUREQUIP_BACKPACK_MAX}; _canFit = [_itemClassName, _containerName] Call fnc_purequip_canFitInContainer; if (_canFit) then { _itemMass = _itemClassName Call fnc_purequip_getItemMass; if ((_containerMassCurrent + _itemMass) <= _containerMassMax) then { _preSaveArray =+ GW_PUREQUIP_CURRENTTEMPLATE; _innerPreSaveArray = _preSaveArray select GW_PUREQUIP_CONTAINERSEL; _innerSubPreSaveArray = _innerPreSaveArray select 1; _innerSubPreSaveArray pushBack _itemClassName; _innerPreSaveArray set [1, _innerSubPreSaveArray]; _preSaveArray set [GW_PUREQUIP_CONTAINERSEL, _innerPreSaveArray]; GW_PUREQUIP_CURRENTTEMPLATE = _preSaveArray; GW_PUREQUIP_CONTAINERCHANGED = true; }; }; }; }; }; //Request redraw GW_PUREQUIP_REDRAWINV = true; GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_RECALC_MASS = true; }; }; //Purchase current template of gear fnc_purequip_purchaseGear = { GW_PUREQUIP_BUYNETCALLRETURN = ["GW_NETCALL_WAITING"]; _buyNetCall = ["equipment","buy",[(getPlayerUID player), GW_PUREQUIP_CURRENTTEMPLATE, false, true], "GW_PUREQUIP_BUYNETCALLRETURN"] Spawn fnc_clt_requestServerExec; waitUntil {scriptDone _buyNetCall}; if (!(GW_PUREQUIP_BUYNETCALLRETURN select 0)) then { playSound "UIFail"; systemChat format ["Unable to purchase gear - %1",(GW_PUREQUIP_BUYNETCALLRETURN select 1)]; } else { playSound "UISuccess"; //Update last purchased template GW_CVAR_TEMPLATES set [0, ["Last Purchased", false, GW_PUREQUIP_CURRENTTEMPLATE, true, (GW_PUREQUIP_BUYNETCALLRETURN select 1)]]; //Equip the player _unitEquipScript = [player, GW_PUREQUIP_CURRENTTEMPLATE] spawn fnc_shr_equipUnit; waitUntil{scriptDone _unitEquipScript}; GW_PUREQUIP_RECALC_TOTAL = true; }; }; //Populate Templates List (Don't get array from server) fnc_purequip_populateTemplates = { private["_parentDisp"]; disableSerialization; _parentDisp = _this select 0; //Populate the list lbClear 1502; { lbAdd [1502, format["%1",(_x select 0)]]; if (_x select 1) then {lbSetColor [1502, _forEachIndex, [0,0.7490,1,1]]}; } forEach GW_CVAR_TEMPLATES; }; //Load template fnc_purequip_loadTemplate = { private["_index","_templateSelected"]; _index = lbCurSel 1502; if (_index != -1) then { _templateSelected = GW_CVAR_TEMPLATES select _index; GW_PUREQUIP_CURRENTTEMPLATE =+ _templateSelected select 2; GW_PUREQUIP_REDRAWINV = true; GW_PUREQUIP_RECALC_TOTAL = true; GW_PUREQUIP_RECALC_MASS = true; GW_PUREQUIP_CONTAINERCHANGED = true; }; }; //Save new template fnc_purequip_saveNewTemplate = { private["_parentDisp"]; disableSerialization; _parentDisp = _this select 0; //Get name of template _templateNameCTRL = _parentDisp displayCtrl 1400; _templateName = ctrlText _templateNameCTRL; if (_templateName != "") then { GW_PUREQUIP_TEMPLATE_ADD = ["GW_NETCALL_WAITING"]; _templateNetCall = ["equipment","templatenew",[(getPlayerUID player), _templateName, GW_PUREQUIP_CURRENTTEMPLATE],"GW_PUREQUIP_TEMPLATE_ADD"] Spawn fnc_clt_requestServerExec; waitUntil {scriptDone _templateNetCall}; if (!(GW_PUREQUIP_TEMPLATE_ADD select 0)) then { playSound "UIFail"; systemChat format ["Unable to save new template - %1",(GW_PUREQUIP_TEMPLATE_ADD select 1)]; } else { playSound "UISuccess"; lbAdd [1502, format["%1",_templateName]]; lbSetColor [1502, ((lbSize 1500) - 1), [0,0.7490,1,1]]; GW_CVAR_TEMPLATES pushBack [_templateName, true, GW_PUREQUIP_CURRENTTEMPLATE, true, (GW_PUREQUIP_TEMPLATE_ADD select 1)]; _templateNameCTRL ctrlSetText ""; }; } else { systemChat "Templates must have a unique name"; playSound "UIFail"; }; }; //Update template fnc_purequip_updateTemplate = { private["_parentDisp"]; disableSerialization; _parentDisp = _this select 0; //Get name of template _templateName = if ((lbCurSel 1502) != -1) then {(GW_CVAR_TEMPLATES select (lbCurSel 1502)) select 0} else {""}; _canModify = if ((lbCurSel 1502) != -1) then {(GW_CVAR_TEMPLATES select (lbCurSel 1502)) select 1} else {false}; if (_templateName != "" && _canModify) then { GW_PUREQUIP_TEMPLATE_UPDATE = ["GW_NETCALL_WAITING"]; _templateNetCall = ["equipment","templateupdate",[(getPlayerUID player), _templateName, GW_PUREQUIP_CURRENTTEMPLATE],"GW_PUREQUIP_TEMPLATE_UPDATE"] Spawn fnc_clt_requestServerExec; waitUntil {scriptDone _templateNetCall}; if (!(GW_PUREQUIP_TEMPLATE_UPDATE select 0)) then { playSound "UIFail"; systemChat format ["Unable to update template - %1",(GW_PUREQUIP_TEMPLATE_UPDATE select 1)]; } else { playSound "UISuccess"; GW_CVAR_TEMPLATES set[(lbCurSel 1502), [_templateName, true, GW_PUREQUIP_CURRENTTEMPLATE, true, (GW_PUREQUIP_TEMPLATE_UPDATE select 1)]]; }; } else { if (_templateName == "") then {systemChat "No template selected to delete"}; if (!_canModify) then {systemChat "You can only modify templates you made"}; playSound "UIFail"; }; }; //Delete template fnc_purequip_deleteTemplate = { private["_parentDisp"]; disableSerialization; _parentDisp = _this select 0; //Get name of template _templateName = if ((lbCurSel 1502) != -1) then {(GW_CVAR_TEMPLATES select (lbCurSel 1502)) select 0} else {""}; _canModify = if ((lbCurSel 1502) != -1) then {(GW_CVAR_TEMPLATES select (lbCurSel 1502)) select 1} else {false}; if (_templateName != "" && _canModify) then { GW_PUREQUIP_TEMPLATE_DELETE = ["GW_NETCALL_WAITING"]; _templateNetCall = ["equipment","templatedelete",[(getPlayerUID player), _templateName],"GW_PUREQUIP_TEMPLATE_DELETE"] Spawn fnc_clt_requestServerExec; waitUntil {scriptDone _templateNetCall}; if (!(GW_PUREQUIP_TEMPLATE_DELETE select 0)) then { playSound "UIFail"; systemChat format ["Unable to delete template - %1",(GW_PUREQUIP_TEMPLATE_DELETE select 1)]; } else { playSound "UISuccess"; lbDelete [1502, (lbCurSel 1502)]; GW_CVAR_TEMPLATES deleteAt ((lbCurSel 1502) + 1); }; } else { if (_templateName == "") then {systemChat "No template selected to delete"}; if (!_canModify) then {systemChat "You can only modify templates you made"}; playSound "UIFail"; }; }; //Button should be hidden by default _emptyContainerCTRL = _display displayCtrl 1609; _emptyContainerCTRL ctrlShow false; //Fill the purchase categories combobox with all the categories lbClear 2100; lbAdd [2100, "Primary Weapons"]; lbSetData [2100, 0, "WEAP_PRIMARY"]; lbAdd [2100, "Secondary Weapons"]; lbSetData [2100, 1, "WEAP_SECONDARY"]; lbAdd [2100, "Sidearms"]; lbSetData [2100, 2, "WEAP_SIDEARM"]; lbAdd [2100, "Ammo & Ordnance"]; lbSetData [2100, 3, "MAGAZINES"]; lbAdd [2100, "Attachments"]; lbSetData [2100, 4, "ATTACHMENTS"]; lbAdd [2100, "Headgear"]; lbSetData [2100, 5, "HEADGEAR"]; lbAdd [2100, "Vests"]; lbSetData [2100, 6, "VESTS"]; lbAdd [2100, "Uniforms"]; lbSetData [2100, 7, "UNIFORMS"]; lbAdd [2100, "Backpacks"]; lbSetData [2100, 8, "BACKPACKS"]; lbAdd [2100, "Facewear"]; lbSetData [2100, 9, "FACEWEAR"]; lbAdd [2100, "Other Items"]; lbSetData [2100, 10, "OTHERS"]; //First template shown should be what the player currently has equipped GW_PUREQUIP_CURRENTTEMPLATE = [player, true] Call fnc_shr_getEquipArray; //Select primary weapons by default lbSetCurSel [2100, 0]; GW_PUREQUIP_CHANGEDCATEGORY = true; //Need to draw the inventory _redrawUI = [_display] Spawn fnc_purequip_redrawInventory; _recalcPrice = [_display] Spawn fnc_purequip_updateCost; _recalcMass = [_display] Spawn fnc_purequip_updateMasses; _templatePop = [_display] Spawn fnc_purequip_populateTemplates; //Unblock UI for network call _netBlockBGCTRL = _display displayCtrl 1110; _netBlockBGCTRL ctrlShow false; _netBlockTextCTRL = _display displayCtrl 1111; _netBlockTextCTRL ctrlShow false; //Main Updater while {dialog} do { //If player dies, close dialog if (!alive player) exitWith {closeDialog 60003}; //Disable/Enable purchase button depending on if there are enemies near the player _hostiles = [GW_CVAR_SIDE, (getPosATL player), 100] Call fnc_shr_getHostilesInArea; if (_hostiles == 0) then {(_display displayCtrl 1604) ctrlEnable true} else {(_display displayCtrl 1604) ctrlEnable false}; //User selected to load a template if (GW_PUREQUIP_LOADTEMPLATE) then { GW_PUREQUIP_LOADTEMPLATE = false; _templateLoad = [] Spawn fnc_purequip_loadTemplate; waitUntil {scriptDone _templateLoad}; }; //User selected purchase equipment if (GW_PUREQUIP_PURCHASEEQUIPMENT) then { GW_PUREQUIP_PURCHASEEQUIPMENT = false; _gearPurchase = [] Spawn fnc_purequip_purchaseGear; waitUntil {scriptDone _gearPurchase}; }; //Changed category (Need to halt execution to make sure it's done populating) if (GW_PUREQUIP_CHANGEDCATEGORY) then { GW_PUREQUIP_CHANGEDCATEGORY = false; _gearPopulate = [(lbCurSel 2100), _display] Spawn fnc_purequip_populateGearList; waitUntil {scriptDone _gearPopulate}; }; //Recalc Total of Template if (GW_PUREQUIP_RECALC_TOTAL) then { GW_PUREQUIP_RECALC_TOTAL = false; _recalcPrice = [_display] Spawn fnc_purequip_updateCost; waitUntil {scriptDone _recalcPrice}; }; //Figure out mass of containers if (GW_PUREQUIP_RECALC_MASS) then { GW_PUREQUIP_RECALC_MASS = false; _recalcMass = [_display] Spawn fnc_purequip_updateMasses; waitUntil {scriptDone _recalcMass}; }; //Changed primary selection (Only need to do this if we're on the weapons categories) if (GW_PUREQUIP_PRIMARYLISTCHANGED) then { GW_PUREQUIP_PRIMARYLISTCHANGED = false; _categorySelected = lbCurSel 2100; if (_categorySelected == 0 || _categorySelected == 1 || _categorySelected == 2) then { _currentSelectedPrimary = lbCurSel 1500; if (_currentSelectedPrimary != -1) then { //Make sure our selected index is a valid index within the new category if ((lbSize 1500) > _currentSelectedPrimary) then { _magsPopulate = [_currentSelectedPrimary] Spawn fnc_purequip_populateMagazineList; _attachPopulate = [_currentSelectedPrimary] Spawn fnc_purequip_populateAttachmentList; waitUntil {scriptDone _magsPopulate && scriptDone _attachPopulate}; } else { //If there's at least 1 weapon in there, select that one if ((lbSize 1500) > 0) then { lbSetCurSel [1500, 0]; _magsPopulate = [0] Spawn fnc_purequip_populateMagazineList; _attachPopulate = [0] Spawn fnc_purequip_populateAttachmentList; waitUntil {scriptDone _magsPopulate && scriptDone _attachPopulate}; } } }; }; }; //Container Changed if (GW_PUREQUIP_CONTAINERCHANGED) then { GW_PUREQUIP_CONTAINERCHANGED = false; if (GW_PUREQUIP_CONTAINERSEL != -1) then { _containerClass = (GW_PUREQUIP_CURRENTTEMPLATE select GW_PUREQUIP_CONTAINERSEL) select 0; if (_containerClass != "") then { _containerPop = [GW_PUREQUIP_CONTAINERSEL] Spawn fnc_purequip_populateContainerList; waitUntil {scriptDone _containerPop}; } else { GW_PUREQUIP_CONTAINERSEL = -1; }; }; //Update container text if (GW_PUREQUIP_CONTAINERSEL == -1) then { lbClear 1504; _containerTextCTRL = _display displayCtrl 1108; _containerTextCTRL ctrlSetStructuredText (parseText format ["No Container Selected"]); _emptyContainerCTRL = _display displayCtrl 1609; _emptyContainerCTRL ctrlShow false; } else { _containerText = ""; if (GW_PUREQUIP_CONTAINERSEL == 4) then {_containerText = "Uniform"}; if (GW_PUREQUIP_CONTAINERSEL == 5) then {_containerText = "Vest"}; if (GW_PUREQUIP_CONTAINERSEL == 6) then {_containerText = "Backpack"}; _containerTextCTRL = _display displayCtrl 1108; _containerTextCTRL ctrlSetStructuredText (parseText format ["Contents of %1",_containerText]); _emptyContainerCTRL = _display displayCtrl 1609; _emptyContainerCTRL ctrlShow true; }; }; //Redraw requested if (GW_PUREQUIP_REDRAWINV) then { GW_PUREQUIP_REDRAWINV = false; _redrawUI = [_display] Spawn fnc_purequip_redrawInventory; waitUntil {scriptDone _redrawUI}; }; //Update selected template if (GW_PUREQUIP_UPDATETEMPLATE) then { GW_PUREQUIP_UPDATETEMPLATE = false; _templateUpdate = [_display] Spawn fnc_purequip_updateTemplate; waitUntil {scriptDone _templateUpdate}; }; //Delete selected template if (GW_PUREQUIP_DELETETEMPLATE) then { GW_PUREQUIP_DELETETEMPLATE = false; _templateDelete = [_display] Spawn fnc_purequip_deleteTemplate; waitUntil {scriptDone _templateDelete}; }; //Save new template if (GW_PUREQUIP_SAVENEWTEMPLATE) then { GW_PUREQUIP_SAVENEWTEMPLATE = false; _templateSaveNew = [_display] Spawn fnc_purequip_saveNewTemplate; waitUntil {scriptDone _templateSaveNew}; }; uiSleep 0.1; };
  16. Currently i'm playing the preventive diplomacy mission from the arma3 campaign. After loading a usersave or autosave file, the mission immediately fails because of friendly fire. I had never shoot before of other teammates or allied troops. Bug/error discovered yesterday, 2016-05-01, dev build no. 1.59.135790 / Win 10 I will test it again, today with dev build no. 1.59.135811.. will keep you up to date!
  17. When you walk on top of a burning campfire, there are those red borders that appear around the screen. They stay on permanently after walking away, even if you get treated or call "player setDamage 0" http://i.imgur.com/5tZIiNG.png The associated PP effect is "BIS_HitCC"
  18. Wanted to report a bug for 1.58.135656 New syntax for https://community.bistudio.com/wiki/cutRscis not compatible with BIS functions. The actual problem lies in BIS_fnc_rscLayer not taking any layers used with "string" cutRsc into account. As an example I'll use BIS_fnc_showNotification, because it's a function a lot of people use, but this problem will happen anywhere where BIS_fnc_rscLayer is used. Using BIS_fnc_showNotification the following code inside it is used (Linke 91 and 92) ("RscNotification_1" call bis_fnc_rscLayer), ("RscNotification_2" call bis_fnc_rscLayer) There return 6 and 7 respectively. Now in my case when I use testVar = "FRL_mainUI_cooldownLayer" cutRsc ["FRL_mainUI_RscCooldown", "PLAIN", 0, true]; testVar turns into 7 as well. This means that the same layer is used, where obviously it shouldn't be. In BIS_fnc_showNotification line 107 (_layers select _layerID) cutrsc ["RscNotification","plain"]; will use the layer that is already used by my custom Rsc and thus closing it and replacing it with the BIS notification instead. tl;dr: BIS_fnc_rscLayer and new syntax for cutRsc don't work together
  19. So a couple months ago, I noticed a peculiar (idk glitch?) Bug. When you are Running/Jogging in Arma 3 your stamina always depletes right? This is the intention of the stamina system. What is WEIRD though, is if you enter this particular stance and jog, you regen stamina as if you were walking/standing. I will post some images of a breakdown to how to do it below so you can see what I am talking about. I've never really noticed anyone else in arma using this so maybe it just hasn't surfaced popularly yet, or in fact, it is intended. GUIDE BELOW Let me know if anyone else has encountered this or finds it odd. I'm curious. :) As a basic breakdown (Don't worry video provided) I'll describe the specific stance and under which conditions it works and how to use it to your advantage. -To achieve your inner marathon champion be sure to be standing normally. Now it wont be immediately apparent, but pressing your C key will toggle you in and out of (For lack of a better phrase) what I would call Combat Running and Relaxed Running. As far as I have discovered this ONLY works in relaxed running. So be sure to do some stretching and medium jogging. After you're good and comfortable go ahead and proceed! Double tapping Left Control will enter you into a more relaxed stance. (Of course in preparation for all that good hustling to the objective) After being as relaxed as you can use your movement keys W and A to run AND regenerate stamina Here is a video demonstrating the technique. Simple Example of using running technique If you don't quite catch what is happening in the last ~10 seconds of the video - watch the stamina bar and how each direction I move USES Stamina EXCEPT for in that particular movement formation. You should only need to use this technique intermittently. Only for 15-30 seconds depending on how much stamina you need. Wrapping UpNow I know this "tutorial" breaks it down in a very simple and out of drill situation, BUT getting comfortable with this method is extremely helpful (Especially for those of you carrying 30-35 kg) and quicker than you might think. TL/DR Essentially all you have to do is left CTRL twice, Press C, and start moving with W and A so you run diagonally Left and regen stamina. CONS: - Makes running tactically a bit wonky (You're basically jogging at an angle) (Please for the sake of squad mates Do NOT prioritize this over anything essential to unit cohesion, communication and combat effectiveness.) - Makes looking around a bit off center - General formation, running, and positioning disarray can happen easily if you aren't aware of what direction you are moving (because from my experience it is easy to misguide your direction) - Can only be done standing - Can only be done with your gun DOWN leaving you less able to quickly react PROS: - FREE Stamina! - Overall Mobility enhancement - Works on ALL terrain EXCEPT for Inclines greater than roughly 45 degrees BUT WAIT it still doesn't drain stamina: It simply stops regen until you get to more level ground. There's my quick guide on how to help manage stamina. Hope everyone finds this helpful!
  20. Last version (1.56) we have detected next bug (steps to reproduce): 0. Get primary weapon to your hands 1. toggle combat-walk 2. lower your weapon 3. you will be move silent without sound (your soldier is playing animation - moving and carry weapon with one hand) Bugs: 1) silent moving 2) where you push SPRINT key from these state - you will be play healing soldier animation and slow down the speed. === In version 1.58 we have detected new bug (steps to reproduce): 0. Get the primary weapon in your hands 1. Sit down with X key 2. Use CTRL+S to get down your stand (down-sit) or CTRL+W to get your stand up (up-sit) 3. Use B key to get binoculars From 3rd person you will take binoculars, that will be removed from your hands - you will be see through empty hands. From first person your soldier will play animation "seriosly wounded carrying" i think or something - they wont get the binoculars and trying to brake-dancing. Where you try to get binoculars in down-stand/up-stand OR down-prone/up-prone - all will be ok, the soldier first make his stand normal, after that get binoculars. === Need to fix these 2 bugs.
  21. hi @ all Since a pretty long time i got a bug in Arma that drives me mad. In our community, we play a lot coop missions with a zeus as missionmaster. In the beginning when i play as zeus, everything works fine. I can place all the units and modules, no problem. But after a while (let it be 2-3 hours after missionstart), my zeus seems to get fcked up. The units that i place are invisible to the players, I cant call firesupport anymore and also the modules arent working. When this happens, I have to completely close Arma and start it again. After that, everything works fine again. Yes, we are usig mods, but every other zeus-player in our community have the same mods but not such problems as I. I did a reinstall of Arma with no positive result. Anyone got an idea what it could be? Thanks! Greetings, befubo
  22. So with the release of 1.58 to Arma 3, I have noticed that some sound bugs regarding the aircraft and potentially some of the other vehicles. When I get inside, for example the Wipeout, the engines sound very very quiet especially from 3rd person and also in 1st person. I did some more tests where I spawned a unit on the ground and I listened to the jet fly by. The jet was very quiet as well as it flew by. I did this test with all of the other jets and I came up with the same results. However, I'm not sure if this bug translates to any other vehicles. Otherwise, I absolutely love the new update with the additions to Eden and the switching weapons while moving, and I can't wait to see more out of Apex when it comes out!
  23. OBS: If the player uses team switch to switch away from a soldier unit that is in a modified stance, the now AI controlled unit becomes stuck in the modified stance. This can create undesired results such as AI being unable to move, unable to stop, unable to interact with objects or vehicles, able to run underwater etc. EXP: AI controlled units should be able to recover from a modified stance and behave normally. REPRO: 1. In 2D mission editor, place any soldier as the player. Place another nearby subordinate unit, set to playable. 2. Preview mission. 3. Team switch to unit 2. 4. Modify your stance (Ctrl+W or Ctrl+S) to any non standard stance 5. Team switch to unit 1. 6. Order unit 2 to move to some destination. Observe results. 7. Order unit 2 to switch to another stance, and move. Observe results. 7. Repeat test, leaving unit 2 in other modified stance. If left in prone low, AI is unable to move. If left prone left/right or prone upright, AI is able to move, but only if they want to be prone. If left in crouch low, AI will be able to move unless they want to be crouched. If they want to be prone, AI will be unable to stop moving. etc, etc Tested in Stable 1.58.135656
  24. Hello there, I have just discoevered, that if I use my arraow keys to navigate though the additional startup parameters section in the launcher, that the text jumps up and down. I recorded the bug with this little gif here: http://i.imgur.com/D25a5Ag.gifv To reproduce: Open the Launcher -> go to parameters -> type somehting into the last input field there, and restart the launcher. Then go right and left with the arrow keys, the text will bump up and down Regards Arkensor
×