Jump to content

Search the Community

Showing results for tags 'Scripting'.



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
    • 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 Server tweaks
  • Exilemod (Unofficial)'s Promotion
  • Exilemod (Unofficial)'s Maps - Mission Files
  • TKO's Weferlingen
  • TKO's Chernarus
  • TKO's Livonia
  • TKO's Rules
  • TKO's Changelog
  • TKO's Help
  • TKO's What we Need
  • TKO's Virolahti
  • 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

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 317 results

  1. Hi everyone, Need help with this script. I create a marker who spawn on tanks placed in Zeus on the map call T1, T2 etc... This marker could be dynamic. I mean its move with the tanks and show on the map, with a bliking effect only when the player will be at a defined distance. So I try this, but the marker don't move with the tank. I try to use setPos getPos player, to attach markers to tanks but nothing. The Marker will be create correctly, could see on the map, but didn't move with de tank... _tank = ["T1", "T2", "T3", "T4", "T5"]; while {((!alive _tank) && (player distance _tank < 1000))} do { (_marker1 = createMarker ["mark1", _tank]; _marker1 setMarkerShape "Ellypse"; _marker1 setMarkersize [500, 500]; _marker1 setMarkerColor "ColorRed"; mark1 attachTo [_tank]; ["mark1", 3, 50] spawn BIS_fnc_blinkMarker; }; Somebody could help me?
  2. Hello, I'm currently trying to write a script that creates a trigger via the radio Alpha channel and that can be activated by the player. The trigger statemesnts should set another unit (hunter1) into a combatmode Red and also have a line of sideChat from the player. Here is what I have so far _trig1 = createTrigger ["EmptyDetector", [0,0,0]]; _trig1 setTriggerArea [0, 0, 0, false]; _trig1 setTriggerActivation ["ALPHA", "present", false]; _trig1 setTriggerText "Sniper Cover - Geronimo"; _trig1 setTriggerStatements [ "this", "hunter1 setcombatmode "RED"", "player sidechat "OPEN UP!" ]; }; I keep getting an error message saying I'm missing a "]" but I cant for the life of me figure it out. Any help would be greatly appreciated. Thanks in advance, Denzo
  3. I was trying to use some trigger to refuel/repair/rearm ground vehicles, heli and jets but when i reach the trigger, an error appears "scriptname.sqf not found" I already did the Scripts folder in the mpmissions folder, etc... I'm new at these script things, someone can help me with this? I just want to choose a place in my missions tô refuel/rearm/repair my vehicles
  4. So I'm currently trying to make a mission like that from Ace Combat's multiplayer where each team is trying to take out the other's ground or sea assets first while in aircraft. Currently I'm just using a sector control game mode that works fine just using modules. What I've done is make it so dying and respawing for players doesn't take away tickets and the cap area is a tiny area in the middle of the map which players will ignore (this is a private multiplayer things so we just agree to ignore it) Now the point of the question. There is also a bunch of AI trucks driving around, when one of them dies I want it to take a specific number of tickets away from the side it belonged too. Therefore, destroying all of Opfor's teams AI trucks would mean they have no tickets and Blufor Would win. Is there something I could stick in the AI trucks "Init" in the editor that would just remove a number of sector control tickets for it's side die upon death?
  5. Looking to make AI fire on random preset markers. I have ripped and tinkered with some bits and pieces of code. Most come from GOM's posts and replies. Here is what I've come up with: [] Spawn { while {true} do { _arty = mortar1; _target = ["target1","target2","target3"] call BIS_fnc_selectRandom; _artyAmmo = getArtilleryAmmo [_arty] select 0; _artyETA = _arty getArtilleryETA [getPosATL _target, _artyAmmo]; _inRange = (getPosATL _target) inRangeOfArtillery [[_arty], _artyAmmo]; systemchat format ["In range: %1",_inRange]; if (_artyETA > 0 AND _inRange) then { systemchat "Cleared to fire!"; systemchat format ["Impact ETA: %1s",_artyETA]; _arty commandArtilleryFire [getPosATL _target, _artyAmmo, 5]; sleep 45; } }}; But as far as I can tell, the target cannot be randomly selected. This bit here seems to break it: _target = ["target1","target2","target3"] call BIS_fnc_selectRandom; It works to fire on one position with it as this: _target = target1; The artillery fires nicely with the Do While loop and the sleep x; bit. But one other issue is that arty doesn't start firing until the sleep x time has passed. Which is a small issue in itself. Even with sleep being at the end of the code, it waits the full amount of time before firing. I thought these scripts ran top to bottom. TL;DR: Code works only for single target. I want to fire 5 shots, then pick another random preset target (target1,target2,target3,etc.) then fire 5 more with a sleep delay between barrages. Huge bonus: If someone can post a separate bit of code to fire on players current position. Once it fires, I just want it to hit where it was supposed to. As if players are running from the arty fire and if they stay still, RIP. I looked into getRelPos for players, but had no luck. Just errors.
  6. I've just begun modding in Arma 3, after someone approached me and asked me to help him with modding in a beret that didn't exist anywhere on the workshop yet, I did everything as he asked me to and followed closely Arma 3's limitations (10k triangles at most, no smooth shading, all triangles, taken from https://community.bistudio.com/wiki/Arma_3_Modding_Characters). I used Blender to model the beret and managed to export it into a P3D file, then I exported its texture in a PAA file, then I created its icon and saved it as a PAA file, too. The problems began with the config file. I used a tutorial for a steel tube (https://www.youtube.com/watch?v=hxiwU94zwjg&) first, and actually spawned it in the game, it appeared in my inventory, but it didn't exist once I dropped it onto the ground, I thought that's just because I didn't add a line to the config, I don't think it's important so I ignored it Then I found an actual config file for a headgear (from https://community.bistudio.com/wiki/Arma_3_Characters_And_Gear_Encoding_Guide#Headgear_configuration) and I thought if I just changed up some things it'd work good enough. After I was done modifying that config file and got the mod working the game wouldn't let me spawn the beret in. I didn't get any debug messages, nothing. The beret just wouldn't spawn in my inventory, as if it didn't exist in the first place. Now I know this is a long post, but I feel like I needed explained my whole "adventure", so that maybe someone gets an idea of what the problem might be. Here's the mod file if you want to check it out https://github.com/Kalimedes/Mod
  7. Hello. I am working on a little mission that uses a varible that i have called _time to randomly select a number from the array for a timer with the sleep command in a script. but right before the sleep i have a hint format command to tell the player. Code: _time = [45, 60, 120] call BIS_fnc_selectRandom; hint format ["All freandly units are KIA. Next avalible unit in: %1 seconds!", _time]; This is going to be a mission for more then 1 person and i haven't found out how to use this on a global stage and i can't seem to get it working with the call BIS_fnc_MP command. Any ideas?
  8. Hello, I've been thinking about a possible MOD for Arma 3 that could really produce some butt-clenching, heart pounding, gameplay moments. It's heavily inspired on the Battle Royale mod which is dying out sadly, and there's some MMO elements in them too. Anyways, I've made a small presentation that explains the idea better: https://docs.google.com/presentation/d/1LYfntb3MyRWQUp3Eyju9cyEopTPzSF_dRzpS99TxcvE/edit?usp=sharing I'm no developer, my goal with this post is to just 'test the water' and see if there is some interest in a game mod like this. Secondly if someone can enlighten me on how much work creating a minimal viable prototype of this MOD would take, or point me in the general direction of someone that can help me get this going, that would also be greatly appreciated. Thank you! best regards
  9. Hi, I just want to open this post for people who want to test with the New Rewrite of ACE Medical. It is a very simple script that can help you understand the states in which the new medical system alternates. I hope you find it useful. init.sqf addMissionEventHandler ["Draw3D", { { _unit = _x; if (!(isNil "_unit") AND ((side _unit) == west OR (side _unit) == civilian))then{ _pos = ASLToAGL getPosASL _unit; _headPos = [_pos select 0, _pos select 1, (_pos select 2) + 1.2]; _heartRate = _unit getVariable ["ace_medical_heartrate", 00]; _bloodPressure = _unit getVariable ["ace_medical_bloodpressure", [00,00]]; _bloodVolume = _unit getVariable ["ace_medical_bloodvolume", 00]; _Text = format ["HR: %1 | BP: %2 | BV: %3",_heartRate toFixed 1,_bloodPressure,_bloodVolume toFixed 1]; drawIcon3D ["", [1, 1, 1,1], _headPos, 0, 0, 0, _Text, 2, 0.03, "PuristaBold"]; _headPos = [_pos select 0, _pos select 1, (_pos select 2) + 0.5]; _state = _unit getVariable ["cba_statemachine_state0",""]; _text = ""; if(_state == "cardiacarrest")then{ _text = format["cardiacarrest (%1 s)", (_unit getVariable ["ace_medical_statemachine_cardiacarresttimeleft",0]) toFixed 1]; }else{ _text = _state; }; drawIcon3D ["", [0.1, 0.45, 1,1], _headPos, 0, 0, 0, _text , 2, 0.03, "PuristaBold"]; }; } forEach allUnits; }]; Spyke
  10. Original post: "Is there any way to make backpacks accessable only when they are on ground or by other players using 'Open Backpack' action? The goal is to make player drop the backpack to get access in its inventory and so make them more realistic." UPDATE 15th Sept. -18: An addon version made! Script provided by @pierremgi PBO provided by @HazJ Download: https://hazjohnson.com/ArmA/@realisticBackpacks.zip Addon is now signed with key and bikey.
  11. Hello, My goal is to spawn a suicide truck ( _shilux ) by script, and have it explode when it reaches the location ( rock1 ). wave4_p1.sqf _shilux = createvehicle ["B_mas_cars_Hilux_Unarmed", getMarkerPos "espawn", [], 30]; sleep 4; _grp1 = createGroup east; "CUP_I_TK_GUE_Soldier" createUnit [getMarkerPos "espawn", _grp1, "this moveindriver _shilux", 0.5]; sleep 3; _wp1 = _grp1 addWaypoint [getPos rock1, 0]; _wp1 setWaypointType "MOVE"; _wp1 setWaypointSpeed "FULL"; _wp1 setWaypointCombatMode "BLUE"; _wp1 setWaypointBehaviour "CARELESS"; sleep 4; _strigger = createTrigger ["EmptyDetector", getPos rock1, true]; _strigger setTriggerArea [0,0,0, false]; _strigger setTriggerActivation ["EAST", "PRESENT", false]; _strigger setTriggerStatements ["_shilux distance rock1 <30", "_bomb = 'M_Mo_82mm_AT_LG' createvehicle (getpos _shilux)", "hint 'Trigger off'"]; My success with this is limited; The truck follows the waypoint to rock, but does not explode. The truck just sits there waiting What am I missing here? Any help would be greatly appreciated, thanks
  12. Hi fellas, I've been scratching my head over these for a while now and not getting any closer to figuring out what's going on. I've tried the Discord a few times, but I think these questions may be a bit lengthy for that and haven't gotten any responses! Situation: finalising adding pylons and associated scripting for our modpack's helicopters, and these differ from vanilla helos in that: a) they may have both a pilot and gunner controlling pylon weapons simultaneously (rather than all pylons controlled by one or other), and b) who controls each particular pylon varies between different presets of the same vehicle. First issue: a "SAFE" weapon that we include as the first weapon for all vehicles vanishes ONLY IF the pylon loadout is altered in the mission editor. So, we have fairly standard SAFE weapon added as the initial weapon for both pilot and gunner. The weapon is defined with a magazine name that doesn't exist, and when we specify the magazines[] for the vehicle we just include nothing - so the players see a read "SAFE" weapon with no rounds that they have to swap off to actually fire anything. Having added pylons to the helicopters, these still work just fine upon loading into a mission. HOWEVER, if I alter the pylon loadout in the editor at all (via the vehicle's attributes pane, and simply swapping one ammo-type for another ammo-type for the same weapon for the pilot, for instance), then both the pilot and the gunner don't have the SAFE weapon show up any more - their initial weapon is the next in the list/first pylon, and cycling through all weapons reveal it's missing. Has anyone else experienced this, or have an idea what might be causing it? I've checked other mods out and they don't seem to encounter the issue, but I can't spot anything in their configs that reveals an obvious difference. The only workaround I can think of is to rip all weapons off on spawn and then re-add them as well as the static weapons/magazines as part of the init... but this is obviously not a great solution and also runs into the second issue. Second issue: I cannot find a reliable method via scripting to determine which seat controls which pylon station. As an example, if the vehicle's default loadout has the pilot controlling two wingtip stations and the gunner controlling two inboard stations, then if this is changed in the editor so that actually they've swapped so the pilot controls the inboard stations and the gunner the wingtip stations then I can't see any way to find this information out. As I'm trying to finalise the in-mission rearming GUI for pylons, this means that currently I have to try and guess who controls which pylon initially (to pre-set the ownership options on loading the GUI) and then store that in a custom variable after this to facilitate behaviour for the rest of the mission. It also means that I can't accurately workaround the first issue by removing and re-adding weapons/magazines due to not know the actual order to reattach them in to retain all the same animation/behaviour. It also means that the guessing function is a bloody awful nest of loops and array comparisons, with lots of checks to ensure the totals match after each step etc. Is anyone able to offer insight into either of these points? If more convenient, I'm available to chat via Discord or TS - just let me know ☺️
  13. Hi Guys, I'm having trouble with the second part of my script , I'm hoping someone with more scripting knowledge could give me a hand with this. My overall goal is to place random markers on the map which will spawn in the objects that I defined in my script. So my problem comes when a crate is spawned, no loot is being added to it. I believe its from the addweaponCargo and addItemCargo.... Here is my script : _RdmMapPos = [] call BIS_fnc_randomPos; for "_i" from 1 to selectRandom [8, 13, 15, 18, 20] do { _RdmMapPos = [] call BIS_fnc_randomPos; _mkrstr = createMarker [str _RdmMapPos, _RdmMapPos]; _mkrstr setmarkerShape "ICON"; _mkrstr setmarkerType "mil_marker"; _mkrstr setMarkerSize [1, 1]; }; { _mkrType = getMarkerType _x; switch (_mkrType) do { case "mil_marker" : { _object = selectRandom ["B_Quadbike_01_F", "Land_WoodenCrate_01_F"]; createVehicle [_object, getMarkerPos _x, [], 0, "CAN_COLLIDE"]; }; }; } forEach allMapMarkers; { _crateArray = ["Land_WoodenCrate_01_F"]; _gunsArray = ["hgun_P07_F","hgun_ACPC2_snds_F","hgun_P07_F"]; _ItemsArray = ["rvg_plasticBottle", "rvg_plasticBottlePurified", "rvg_canOpener", "rvg_spirit", "rvg_franta", "rvg_beans", "rvg_bacon", "rvg_milk", "rvg_rice", "rvg_plasticBottleEmpty", "rvg_canteenEmpty", "rvg_plasticBottle", "rvg_plasticBottlePurified", "rvg_spirit", "rvg_franta", "rvg_beans", "rvg_bacon", "rvg_milk", "rvg_rice", "rvg_money", "rvg_money", "rvg_money", "rvg_money" ]; _crateArray addWeaponCargo [selectRandom _gunsArray, round(random 2)]; _crateArray addItemCargo [selectrandom _ItemsArray, round(random 2)]; }; Cheers in advance.
  14. I am currently setting up a campaign in the Eden editor where the intro has you in a slave state area. There are some "decorations" that are basically armed units patting down civs, aiming guns at them, ect. The point of these is to show you are in a slave state, but I wanted you to get shot for interfering if you got too close. I thought the simplest way would be to set the player to OPFOR so they get shot if they try walking near the area, but now I can't figure out how to script a way to change their side, can someone help me?
  15. So I have a little problem here. I want that a zombie from the ravage adddon doesnt move. However I cant do it I tried: zombie disableAI "MOVE"; zombie enableSimulation false; doStop zombie; zombie disableAI "MOVE"; in combination with zombie disableAI "TARGET" and zombie disableAI "AUTOTARGET"; zombie disableAI "FSM"; zombie disableAI "AUTOCOMBAT"; zomibe disableAI "PATH"; and a combination of this all together but nothing worked. Anyone got a idea how I can make him stop moving?
  16. MGI ADVANCED MODULES Hi all, Here is an addon for mission makers. If you need to easily spawn some factions, some civilian life or just add randomized weapons loot in houses... If you want an advanced AI heal & revive, for SP or MP mission, able to heal players or bros.. If you want a transport support on any vehicle... A vehicle respawn system with crew, waypoints, loadouts, addActions, arsenal.... Friendly kill sanction... AI cannons able to fire HE shells on infantry... Some generators able to switch on/off a district... or adapt silencers to combat behavior... or perhaps a simple tool for reading all map object classes/display names/p3d model names... Other tools like tire puncture on barbed wires? ... And of course, MP compatible, favorite mods compatible... Here you are. https://steamcommunity.com/sharedfiles/filedetails/?id=1682280809 Adapt silencers to stealth/combat situation No video SP/MP compatible - all mods Advanced patrols (spawning factions on locations/areas, patrolling then split for defending/attacking) See video SP/MP compatible - all mods Advanced transport See video SP/MP compatible - all mods AI can respawn No video SP/MP compatible - all mods Civilian life See video SP/MP compatible - some known mods Drop vehicle instead of crate See video SP/MP compatible - all mods Enhanced Turrets No video SP/MP compatible - all mods (so far. feedback welcome) Flip overturned vehicle No video SP/MP compatible _ all mods HALO jump No video SP/MP compatible - all mods Heal & revive see video SP/MP compatible - check for mods... Modded units are not a problem. But some mods like ACE have their own scripts and could be incompatible. Furthermore, I scripted for some conditions about the presence of FirstAidKit and MediKit. This module is complex enough. I didn't grab into mods for exotic classes of items (and I will not). Of course, you can choose to skip these conditions. Kill punishment See video SP/MP compatible -all mods Loot weapons & items in houses See video SP/MP compatible - some mods (CUP UNSUNG IFA3 RHS R3F) Marker to Task See video SP/MP compatible - all mods Respawn vehicles No video (see an old one about script to have an idea) SP/MP compatible - all mods Important note: This module uses EH handleDamage. This EH doesn't work if you apply something like: testedVehicle setDamage 1 from console. The script needs some hits on parts (updating vehicle data before destruction). So, crew and waypoints will be respawned after a current kill/disabled vehicle in game. SP simple respawn No video Single Player only Switch ambient lights See video SP/MP compatible - all mods so far... Tire puncture No video SP/MP compatible - some mods Touch of class! See video SP/MP compatible - all mods Wear what you want No video SP / MP compatible - all mods (not all. Some weird mods don't have true uniforms but some skinned units... Nothing to do with that) One man tank No video SP/MP compatible - all mods with Tanks or APCs Prisoners See video SP/MP compatible (not fully tested in MP) - all mods so far Have fun! Pierre MGI
  17. Next to already revealed an known https://community.bistudio.com/wiki/Category:Arma_3:_New_Scripting_Commands_List There are more script commands now :) + fixed http://feedback.arma3.com/view.php?id=12324 + only discussion related to new or changed Arma 3 Beta/Dev Scripting allowed
  18. Hi! I want to make 2 west respawn modules with one infantry group to respawn at each location. How do I tie 1 group to 1 respawn marker so that group will always respawn at that marker? Like module/marker: "respawn_west", "respawn_west_1" and group: "aiGroup", "aiGroup_1" Thanks!
  19. Description: This is a GUI that allows the person who executed the script to add/assign or remove/unassign Zeus to any specified player(s). Downloads & More Information: GitHub: link Pastebin: link * No download required! Video: link Steam Guide: link Curator Creator Version 1.0: (Check the GitHub for the latest version) comment "Script Title: Curator Creator (Create and Assign New Zeuses). < Current Version: 1.0 > "; comment "Credits: Created by J [WoLF] and M9-SD. "; comment "Description: - Creates new unique zeus module for specified players. - Assigns unique Zeus module to specified clients. - Automatically updates zeus interface with new objects. - Re-assigns zeus to player every respawn. - Re-assigns zeus to player upon reconnecting to the session. - JIP (join-in-progress) compatible. "; comment "Usage: - Copy entire script. Paste in debug console. - Execute on local client. - Exit the pause menu if open. - Wait for GUI to appear. - Select recipients of the Zeus Interface. - Choose to remove or add interface. - The selected players will now either be assigned or unassigned their unique Zeus module. "; comment "Distribution: - You may share this script with anyone you want. - Don't give this to trolls, please. - Give credit where it is due. - Enjoy :) "; [] spawn { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; systemChat "[JAM] >>> Zeus Helper >>> Initializing Curator Creator..."; JAM_fnc_createAndAssignZeus = { if (typeOf getAssignedCuratorLogic player != "") then { comment "do nothing"; systemChat "[JAM] >>> Zeus Helper >>> You already have a zeus interface."; } else { JAM_fnc_createAssignCurator = { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _myPlayer = _this # 0; _myCuratorPlayer = _myPlayer; JAM_addZeus_UID = getPlayerUID _myPlayer; JAM_addZeus_superCuratorVar = ("JAM_" + JAM_addZeus_UID + "_superCurator"); JAM_addZeus_superCuratorPlayerAttributesVar = ("JAM_" + JAM_addZeus_UID + "_superCuratorPlayerAttributes"); _JAM_my_curatorInitText = ("" + "if (isNil """ + JAM_addZeus_superCuratorVar + """) then {" + JAM_addZeus_superCuratorVar + " = JAM_superCurator_group createUnit ['ModuleCurator_F', [0, 90, 90],[],0.5,'NONE'];" + JAM_addZeus_superCuratorVar + " setVehicleVarName '" + JAM_addZeus_superCuratorVar + "';" + JAM_addZeus_superCuratorVar + " setVariable ['text','" + JAM_addZeus_superCuratorVar + "'];" + JAM_addZeus_superCuratorVar + " setVariable ['Addons',3,true];" + JAM_addZeus_superCuratorVar + " setVariable ['owner','objnull'];" + JAM_addZeus_superCuratorVar + " setVariable ['vehicleinit',"" _this setVariable ['Addons',3,true]; _this setVariable ['owner','objnull']; ""];" + "unassignCurator " + JAM_addZeus_superCuratorVar + ";" + "objnull assignCurator " + JAM_addZeus_superCuratorVar + ";" + JAM_addZeus_superCuratorPlayerAttributesVar + " = JAM_superCurator_group createUnit ['ModuleCuratorSetAttributesPlayer_F', [2, 91, 91],[],0.5,'NONE'];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['curator','" + JAM_addZeus_superCuratorVar + "'];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['unitpos',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['fuel',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['respawnposition',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['respawnvehicle',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['skill',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['rank',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['damage',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['exec',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['lock',true];" + JAM_addZeus_superCuratorPlayerAttributesVar + " setVariable ['vehicleinit',"" _this setVariable ['curator','" + JAM_addZeus_superCuratorVar + "']; _this setVariable ['unitpos',true]; _this setVariable ['fuel',true]; _this setVariable ['respawnposition',true]; _this setVariable ['respawnvehicle',true]; _this setVariable ['skill',true]; _this setVariable ['rank',true]; _this setVariable ['damage',true]; _this setVariable ['exec',true]; _this setVariable ['lock',true]; ""];" + "[" + JAM_addZeus_superCuratorVar + ",[-2,-1,0,1]] spawn BIS_fnc_setCuratorVisionModes;" + "JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects = true;" + "[] spawn {while {(JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects" + ")} do { if ( ((getAssignedCuratorUnit " + JAM_addZeus_superCuratorVar + ") != objNull) && (alive (getAssignedCuratorUnit " + JAM_addZeus_superCuratorVar + "))) then { " + JAM_addZeus_superCuratorVar + " addCuratorEditableObjects [([] call JAM_fnc_getEditableObjects),true]; }; sleep 30;}; };" + "}; " + ""); [_JAM_my_curatorInitText,{ _initText = _this; _initCode = compile _initText; if (isNil "JAM_blacklistedObjectsArray_01") then { JAM_blacklistedObjectsArray_01 = [ "ModuleCurator_F", "ModuleCuratorSetCamera_F", "Logic", "ModuleHQ_F", "VirtualCurator_F", "ModuleCuratorSetModuleCosts_F", "ModuleCuratorAddPoints_F", "ModuleCuratorSetObjectCosts_F", "ModuleCuratorSetCosts_F", "ModuleCuratorSetCoefs_F", "ModuleCuratorSetDefaultCosts_F", "ModuleCuratorAddEditingAreaPlayers_F", "ModuleMPTypeGameMaster_F", "ModuleRadioChannelCreate_F", "ModuleCuratorSetAttributesPlayer_F" ]; }; if (isNil "JAM_fnc_getEditableObjects") then { JAM_fnc_getEditableObjects = { _allObjs = allMissionObjects 'all'; _editableObjs = []; { if ( ( not ( ( typeOf _x ) in JAM_blacklistedObjectsArray_01 ) ) && ( not ( _x isKindOf "Logic" ) ) ) then { _editableObjs pushBackUnique _x; }; } forEach _allObjs; _editableObjs; }; }; if (isNil "JAM_superCurator_group") then { JAM_superCurator_group = createGroup sideLogic; }; [] spawn _initCode; }] remoteExec ['spawn',2]; comment "JIP"; [[JAM_addZeus_UID,JAM_addZeus_superCuratorVar], { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _curatorUID = _this # 0; _curatorVarStr = _this # 1; if (getPlayerUID player == _curatorUID) then { _curatorPlayer = player; JAM_my_curatorInitText = ("" + "waitUntil {(not isNil """ + _curatorVarStr + """)}; " + "_curatorVar = " + _curatorVarStr + "; " + "_curatorPlayer = _this select 0; " + "[_curatorVar,_curatorPlayer] spawn { _curatorVar = _this # 0; _curatorPlayer = _this # 1; while {((getAssignedCuratorLogic _curatorPlayer) != _curatorVar)} do { unassignCurator _curatorVar; objnull assignCurator _curatorVar; unassignCurator _curatorVar; _curatorPlayer assignCurator _curatorVar; sleep 3.5; }; };" + "JAM_" + _curatorUID + "_updateSuperCuratorEditableObjects = true;" + "_curatorPlayer = _this select 0; '[JAM] >>> Zeus Helper >>> You were given Zeus interface. To open, press [Y].' remoteExec ['systemChat', _curatorPlayer];" + ""); [[JAM_my_curatorInitText,_curatorPlayer],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; comment "re-assign upon death/respawn"; JAM_keepGivingMeZeus = true; if (!isNil "JAM_EH_autoReassignCuratorUponDeath") then { player removeEventHandler ["Respawn",JAM_EH_autoReassignCuratorUponDeath]; }; waitUntil {(alive _curatorPlayer)}; JAM_EH_autoReassignCuratorUponDeath = player addEventHandler ["Respawn",{ if (JAM_keepGivingMeZeus) then { [] spawn { waitUntil {(alive player)}; sleep 3.5; [[JAM_my_curatorInitText,player],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; }; }; }]; }; }] remoteExec ['spawn',0,JAM_addZeus_superCuratorVar]; }; _target = player; [_target] spawn JAM_fnc_createAssignCurator; }; }; JAM_fnc_deleteAndUnassignZeus = { if (typeOf getAssignedCuratorLogic player == "") then { comment "do nothing"; systemChat "[JAM] >>> Zeus Helper >>> You already do not have a zeus interface."; } else { JAM_fnc_deleteUnassignCurator = { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _myPlayer = _this # 0; _myCuratorPlayer = _myPlayer; JAM_addZeus_UID = getPlayerUID _myPlayer; JAM_addZeus_superCuratorVar = ("JAM_" + JAM_addZeus_UID + "_superCurator"); JAM_addZeus_superCuratorPlayerAttributesVar = ("JAM_" + JAM_addZeus_UID + "_superCuratorPlayerAttributes"); _JAM_my_curatorInitText = ("" + "if (!isNil """ + JAM_addZeus_superCuratorVar + """) then {" + "JAM_" + JAM_addZeus_UID + "_updateSuperCuratorEditableObjects = false;" + "unassignCurator " + JAM_addZeus_superCuratorVar + ";" + "objnull assignCurator " + JAM_addZeus_superCuratorVar + ";" + "unassignCurator " + JAM_addZeus_superCuratorVar + "; sleep 0.1;" + "comment 'deleteVehicle " + JAM_addZeus_superCuratorVar + ";';" + "};" + "if (!isNil """ + JAM_addZeus_superCuratorPlayerAttributesVar + """) then {" + "comment 'deleteVehicle " + JAM_addZeus_superCuratorPlayerAttributesVar + ";';" + "};" + ""); [_JAM_my_curatorInitText,{ _initText = _this; _initCode = compile _initText; [] spawn _initCode; }] remoteExec ['spawn',2]; comment "remove JIP"; [[JAM_addZeus_UID,JAM_addZeus_superCuratorVar], { comment "-----------------------------------------------"; if (!hasInterface) exitWith {}; waitUntil { !isNil { player } && { !isNull player } }; waitUntil { !isNull (findDisplay 46) }; comment "-----------------------------------------------"; _curatorUID = _this # 0; _curatorVarStr = _this # 1; if (getPlayerUID player == _curatorUID) then { _curatorPlayer = player; JAM_my_curatorInitText = ("" + "_curatorPlayer = _this select 0; '[JAM] >>> Zeus Helper >>> Zeus Interface was removed from your client.' remoteExec ['systemChat', _curatorPlayer];" + ""); [[JAM_my_curatorInitText,_curatorPlayer],{ _initText = _this # 0; _curatorPlayer = _this # 1; _initCode = compile _initText; [_curatorPlayer] spawn _initCode; }] remoteExec ['spawn',2]; JAM_keepGivingMeZeus = false; [] spawn { if (not (isNull (findDisplay 312))) then { (findDisplay 312) closeDisplay 0; }; waitUntil {(not (isNull (findDisplay 312)))}; if (not JAM_keepGivingMeZeus) then { if (not (isNull (findDisplay 312))) then { (findDisplay 312) closeDisplay 0; }; }; }; if (!isNil "JAM_EH_autoReassignCuratorUponDeath") then { player removeEventHandler ["Respawn",JAM_EH_autoReassignCuratorUponDeath]; }; }; }] remoteExec ['spawn',0]; [[],{}] remoteExec ['spawn',0,JAM_addZeus_superCuratorVar]; }; _target = player; [_target] spawn JAM_fnc_deleteUnassignCurator; }; }; JAM_curator_recipients = []; comment "check if player is Zeus"; if (isNil "JAM_fnc_getDisplay46or312") then { JAM_fnc_getDisplay46or312 = { comment "default"; _displayNumber = 46; if ((isNull (findDisplay 312)) && (not isNull (findDisplay 46))) then { _displayNumber = 46; }; if (not isNull (findDisplay 312)) then { _displayNumber = 312; }; comment "return value (display number)"; _displayNumber }; }; comment " - Define critical variables. > JAM_txtSizeNum > JAM_txtSizeStr "; JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; with uiNamespace do { JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; }; with missionNamespace do { JAM_txtSizeNum = 0.5 * safezoneH; JAM_txtSizeStr = str JAM_txtSizeNum; }; comment " ...Variables Defined. "; JAM_open_selectJAMZeusRecipients = { JAM_curator_recipients = []; _centerScreenPos = [0.494844 * safezoneW + safezoneX,0.489 * safezoneH + safezoneY,0.004125 * safezoneW,0.0055 * safezoneH]; disableSerialization; d_selectJAMZeusRecipients = (findDisplay ([] call JAM_fnc_getDisplay46or312)) createDisplay "RscDisplayEmpty"; showChat true; _ctrl_selectJAMZeusRecipientsTitle = d_selectJAMZeusRecipients ctrlCreate ["RscStructuredText", -1]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + (str (JAM_txtSizeNum * 0.8)) + "'>ZEUS HELPER >>> CURATOR CREATOR<br/><t size='" + (str (JAM_txtSizeNum * 0.7)) + "'>(Create and Assign New Zeuses)<t/>"); _ctrl_selectJAMZeusRecipientsTitle ctrlSetBackgroundColor [0,0,0,0.77]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetPosition _centerScreenPos; _ctrl_selectJAMZeusRecipientsTitle ctrlSetFade 1; _ctrl_selectJAMZeusRecipientsTitle ctrlCommit 0; _ctrl_selectJAMZeusRecipientsTitle ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.313 * safezoneH + safezoneY,0.128906 * safezoneW,0.033 * safezoneH]; _ctrl_selectJAMZeusRecipientsTitle ctrlSetFade 0; _ctrl_selectJAMZeusRecipientsTitle ctrlCommit 0.5; ctrl_sJr_PlayerList = d_selectJAMZeusRecipients ctrlCreate ["RscListBox", -1]; { _pL_index = ctrl_sJr_PlayerList lbAdd name _x; } forEach allPlayers; ctrl_sJr_PlayerList ctrlSetPosition _centerScreenPos; ctrl_sJr_PlayerList ctrlSetFade 1; ctrl_sJr_PlayerList ctrlCommit 0; ctrl_sJr_PlayerList ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.061875 * safezoneW,0.22 * safezoneH]; ctrl_sJr_PlayerList ctrlSetFade 0; ctrl_sJr_PlayerList ctrlCommit 0.5; ctrl_sJr_recipientList = d_selectJAMZeusRecipients ctrlCreate ["RscListBox", -1]; ctrl_sJr_recipientList ctrlSetPosition _centerScreenPos; ctrl_sJr_recipientList ctrlSetFade 1; ctrl_sJr_recipientList ctrlCommit 0; ctrl_sJr_recipientList ctrlSetPosition [0.494844 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.061875 * safezoneW,0.22 * safezoneH]; ctrl_sJr_recipientList ctrlSetFade 0; ctrl_sJr_recipientList ctrlCommit 0.5; _ctrl_cancel = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_cancel ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>CLOSE<t/>"); _ctrl_cancel ctrlSetTooltip "Cancel the script and close this menu."; _ctrl_cancel ctrladdEventHandler ["ButtonClick",{ d_selectJAMZeusRecipients closeDisplay 0; JAM_curator_recipients = []; }]; _ctrl_cancel ctrlSetFade 1; _ctrl_cancel ctrlSetPosition _centerScreenPos; _ctrl_cancel ctrlCommit 0; _ctrl_cancel ctrlSetPosition [0.469063 * safezoneW + safezoneX,0.698 * safezoneH + safezoneY, 0.0464063 * safezoneW,0.022 * safezoneH]; _ctrl_cancel ctrlSetFade 0; _ctrl_cancel ctrlCommit 0.5; _ctrl_removeJAMZeusbutton = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_removeJAMZeusbutton ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>---------REMOVE ZEUS---------<t/>"); _ctrl_removeJAMZeusbutton ctrlSetTooltip "Delete and unassign unique zeus module for each player on the right-hand list."; _ctrl_removeJAMZeusbutton ctrlSetBackgroundColor [0.5,0.2,0,0.6]; _ctrl_removeJAMZeusbutton ctrladdEventHandler ["ButtonClick",{ if (count JAM_curator_recipients != 0) then { d_selectJAMZeusRecipients closeDisplay 0; { _recipientName = _x; systemChat ("[JAM] >>> Zeus Helper >>> Removing Zeus from " + (_recipientName) + "..."); { if ((name _x) == (_recipientName)) then { [JAM_fnc_deleteAndUnassignZeus,{ _code = _this; [] spawn _code; }] remoteExec ['spawn',_x]; }; } forEach allPlayers; } forEach JAM_curator_recipients; comment "[] call JAM_init;"; } else { hint "[JAM] : ERROR : You have not selected any players; Array is empty."; systemChat "[JAM] : ERROR : You have not selected any players; Array is empty."; }; }]; _ctrl_removeJAMZeusbutton ctrlSetPosition _centerScreenPos; _ctrl_removeJAMZeusbutton ctrlSetFade 1; _ctrl_removeJAMZeusbutton ctrlCommit 0; _ctrl_removeJAMZeusbutton ctrlSetPosition [0.432969 * safezoneW + safezoneX,0.654 * safezoneH + safezoneY,0.118594 * safezoneW,0.033 * safezoneH]; _ctrl_removeJAMZeusbutton ctrlSetFade 0; _ctrl_removeJAMZeusbutton ctrlCommit 0.5; _ctrl_addBtn = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_addBtn ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>Add<t/>"); _ctrl_addBtn ctrlSetTooltip "Add selected player to the target list."; _ctrl_addBtn ctrlSetBackgroundColor [-1,0.5,-1,0.6]; _ctrl_addBtn ctrladdEventHandler ["ButtonClick",{ _selectedItem = lbCurSel ctrl_sJr_PlayerList; _playerName = ctrl_sJr_PlayerList lbText _selectedItem; if (JAM_curator_recipients find _playerName == -1) then { JAM_curator_recipients pushBackUnique _playerName; ctrl_sJr_recipientList lbAdd _playerName; }; }]; _ctrl_addBtn ctrlSetPosition _centerScreenPos; _ctrl_addBtn ctrlSetFade 1; _ctrl_addBtn ctrlCommit 0; _ctrl_addBtn ctrlSetPosition [0.427812 * safezoneW + safezoneX,0.357 * safezoneH + safezoneY,0.061875 * safezoneW,0.022 * safezoneH]; _ctrl_addBtn ctrlSetFade 0; _ctrl_addBtn ctrlCommit 0.5; _ctrl_removeBtn = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_removeBtn ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>Remove<t/>"); _ctrl_removeBtn ctrlSetTooltip "Remove selected player from the target list."; _ctrl_removeBtn ctrlSetBackgroundColor [0.5,-1,-1,0.6]; _ctrl_removeBtn ctrladdEventHandler ["ButtonClick",{ _selectedItem = lbCurSel ctrl_sJr_recipientList; _playerName = ctrl_sJr_recipientList lbText _selectedItem; if (JAM_curator_recipients find _playerName > -1) then { _idx = JAM_curator_recipients find _playerName; JAM_curator_recipients deleteAt _idx; ctrl_sJr_recipientList lbDelete _selectedItem; }; }]; _ctrl_removeBtn ctrlSetPosition _centerScreenPos; _ctrl_removeBtn ctrlSetFade 1; _ctrl_removeBtn ctrlCommit 0; _ctrl_removeBtn ctrlSetPosition [0.494844 * safezoneW + safezoneX,0.357 * safezoneH + safezoneY,0.061875 * safezoneW,0.022 * safezoneH]; _ctrl_removeBtn ctrlSetFade 0; _ctrl_removeBtn ctrlCommit 0.5; _ctrl_giveJAMZeusbutton = d_selectJAMZeusRecipients ctrlCreate ["RscButtonMenu", -1]; _ctrl_giveJAMZeusbutton ctrlSetStructuredText parseText ("<t valign='middle' align='center' size='" + JAM_txtSizeStr + "'>------------GIVE ZEUS------------<t/>"); _ctrl_giveJAMZeusbutton ctrlSetTooltip "Create and assign unique zeus module for each player on the right-hand list."; _ctrl_giveJAMZeusbutton ctrlSetBackgroundColor [-1,-1,0.4,0.6]; _ctrl_giveJAMZeusbutton ctrladdEventHandler ["ButtonClick",{ if (count JAM_curator_recipients != 0) then { d_selectJAMZeusRecipients closeDisplay 0; comment "[] call JAM_init;"; { _recipientName = _x; systemChat ("[JAM] >>> Zeus Helper >>> Giving Zeus to " + (_recipientName) + "..."); { if ((name _x) == (_recipientName)) then { [JAM_fnc_createAndAssignZeus,{ _code = _this; [] spawn _code; }] remoteExec ['spawn',_x]; }; } forEach allPlayers; } forEach JAM_curator_recipients; } else { hint "[JAM] : ERROR : You have not selected any players; Array is empty."; systemChat "[JAM] : ERROR : You have not selected any players; Array is empty."; }; }]; _ctrl_giveJAMZeusbutton ctrlSetFade 1; _ctrl_giveJAMZeusbutton ctrlSetPosition _centerScreenPos; _ctrl_giveJAMZeusbutton ctrlCommit 0; _ctrl_giveJAMZeusbutton ctrlSetPosition [0.432969 * safezoneW + safezoneX,0.61 * safezoneH + safezoneY,0.118594 * safezoneW,0.033 * safezoneH]; _ctrl_giveJAMZeusbutton ctrlSetFade 0; _ctrl_giveJAMZeusbutton ctrlCommit 0.5; systemChat "[JAM] >>> Zeus Helper >>> Select players to give or remove Zeus Interface."; }; comment "close debug console"; if ( not (isNull (findDisplay 49)) ) then { (findDisplay 49) closeDisplay 0; }; waitUntil { isNull (findDisplay 49) }; sleep 0.1; systemChat "[JAM] >>> Zeus Helper >>> Spawning GUI..."; [] spawn JAM_open_selectJAMZeusRecipients; }; - Feel free to give me some feedback on this script, as I am sure there are some bugs to be reported with it, and I would like to improve it however I can. I might make an alternate version where it doesn't auto-add objects to the Zeus interface every 30 seconds.
  20. I need a easier way to spawn random units instead of individually pulling all classes from the in game editor and pasting it while adding quotations and commas like this: ["B_mas_med_Army_ENG_F", "B_mas_med_Army_EXP_F", "B_mas_med_Army_GL_F",]. I want to use a script that when called it will pull a random unit from a given side of a given type (infantry, land, air) and spawn them in a group. The group will be filled with random units. I also want it to pull units from mods that I download. I dont want to have to keep updating the script every time I download another unit mod. The mod MMC sandbox has no problem in doing this but I dont know how they did it.
  21. Greetings! Long time lurker, first time poster. I've tried my best to research and resolve this myself, but I'm completely at a loss right now. What am I trying to do? I'm making a sector control mission with AI support. The idea is that the AI will check an array of enemy-held sectors, then assign a waypoint to attack accordingly. For example: No enemy sectors? Defend the nearest friendly sector. (BIS_fnc_taskDefend) One enemy sector? Assign a waypoint to attack it. Two or more enemy sectors? Pick one from the closest two and assign a waypoint to attack. AI units invoke the script using a normal execVM command when they spawn: [this] execVM "scripts\ai\sectorTacticInfantry.sqf"; What's the issue? The script throws up multiple "undefined variable" errors, but I can't understand why as they've already been defined. For whatever reason, it's like the private variables are not being passed on to the code blocks below. Here's the script so you can take a look yourselves. I should point out that the "all_sectors" global variable is an array containing the sector module names (S1, S2, S3 etc.) defined in initServer.sqf. systemChat "DEBUG: Starting sector tactic."; [] spawn {while {true} do { _unit = (_this select 0); _grp = group (_this select 0); _grp_side = side (_this select 0); _enemy_sectors = []; _friendly_sectors = []; scopeName "start"; // Update arrays of sector ownership. { if !((_x getVariable "owner") == _grp_side) then { [_enemy_sectors, _x] call BIS_fnc_arrayPush; }; } forEach all_sectors; { if ((_x getVariable "owner") == _grp_side) then { [_friendly_sectors, _x] call BIS_fnc_arrayPush; }; } forEach all_sectors; if (count _enemy_sectors == 0) then {breakTo "noEnemySectors"}; if (count _enemy_sectors == 1) then {breakTo "oneEnemySector"}; if (count _enemy_sectors > 1) then {breakTo "multipleEnemySectors"}; while {true} do { scopeName "noEnemySectors"; // There's no enemy sectors. _grp = group (_this select 0); _grp call CBA_fnc_clearWaypoints; _nearest_friendly_sector = [_friendly_sectors, _grp] call BIS_fnc_nearestPosition; [_grp, _nearest_friendly_sector] call CBA_fnc_taskDefend; breakTo "defendLoop"; }; while {true} do { scopeName "oneEnemySectors"; // There's one enemy sector. grp call CBA_fnc_clearWaypoints; _target_sector = (enemy_sectors select 0); [_grp, _target_sector] call CBA_fnc_addWaypoint; breakTo "attackLoop"; }; while {true} do { scopeName "multipleEnemySectors"; // There's more than one enemy sector. _grp call CBA_fnc_clearWaypoints; _sortedenemy_sectors = [_enemy_sectors, [], { _unit distance _x }, "ASCEND"] call BIS_fnc_sortBy; _closestenemy_sectors = []; [_closestenemy_sectors, (_sortedenemy_sectors select 0)] call BIS_fnc_arrayPush; [_closestenemy_sectors, (_sortedenemy_sectors select 1)] call BIS_fnc_arrayPush; _target_sector = (selectRandom _closestenemy_sectors); [_grp, _target_sector] call CBA_fnc_addWaypoint; breakTo "attackLoop"; }; while {true} do { scopeName "defendLoop"; // Keep defending the point until an enemy takes a sector. _enemy_sectors = []; { if !((_x getVariable "owner") == _grp_side) then { [_enemy_sectors, _x] call BIS_fnc_arrayPush; }; } forEach all_sectors; if (count _enemy_sectors > 1) then {breakTo "start"}; sleep 1; }; while {true} do { scopeName "attackLoop"; // Keep attacking the point until it's ours. if ((_target_sector getVariable "owner") == _grp_side) then {breakTo "start"}; sleep 1; }; }; }; This is my most desperate hour. Help me, Obi-Wan Kenobi BIS Forums. You're my only hope. Thanks in advance, Mr Elusive
  22. Hey folks, I am currently developing a Coast Guard Addon for Arma 3. I already modded a Coast Guard Faction and Uniforms as well as Boats and a Helicopter, and now I want to add some special Objects. A rescue basket and a life raft. I am pretty good at making 3d Models of technical objects so that was no challenge. However I am not really good at scripting configs for Arma 3 and working with the Object Builder. So I could use your help. Here is a model of the rescue basket I made https://steamcommunity.com/sharedfiles/filedetails/?id=1862964052 I was able to implement it into Arma but I need to add some features and solve some problems with your help. Features I have to add: -basket floats on water (implemented) -basket can be slingloaded to a helicopter (implemented) -basket has 2 passenger "seats" one for the survivor sitting in the basket and one for the rescue swimmer hanging on the side of the basket (implemented) -basket has strobelights for night operation (not really implemented) -lights can be toggled Problems: -basket is static, it won't fall down if placed in the air (fixed) -i dont know how to get textures on the basket (worked around) -basket doesnt move if a vehicle crashed into it (fixed) -crew view position is not where its supposed to be -sling loading behaves odd -light sources don't relly emit light to the environment Basically I want the basket to be a Boat which can't be driven because it has no motor. This is the current config of the basket class cfgPatches { class Rescue_Basket { units[] = {"Rescue_Basket"}; weapons[] = {}; requiredVersion = 0.1 requiredAddons[] = {}; }; class Life_Raft_8 { units[] = {"Life_Raft_8"}; weapons[] = {}; requiredVersion = 0.1 requiredAddons[] = {}; }; }; class CfgVehicles { class Boat_F; class Rescue_Basket : Boat_F { side = 1; scope = 2; faction = "Coast Guard"; model = "\Coast-Guard-Objects\Basket.p3d"; slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"}; displayName = "Rettungskorb"; }; class Life_Raft_8 : Boat_F { side = 1; scope = 2; faction = "Coast Guard"; model = "\Coast-Guard-Objects\LifeRaft8.p3d"; slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"}; displayName = "Rettungsinsel (8 Personen)"; }; };
  23. Hello, I have been trying to mod a drone from the contact campaign to have a extra weapon added to it. This was easy enough and is working well. I have got it to the point where the PKP will also dissapear when the drone is put into transport mode and reappear when placed down. The problem i am facing is that i cannot get the cosmetic PKP ontop to follow the gun barrel of the Contact drone correctly. Please see the vid below for the issue. Basically it does not seem to be referencing correctly to the barrel of the gun. I am not entirely sure where to go from this point to fix the issue. The main code for the weapon attachment is being executed as a sqf: Wep1 setDamage 1; Wep1 attachTo [Drone1,[0,0.05,0.05],"arm3"]; while {true} do { _dir = (drone1 weaponDirection currentWeapon drone1); Wep1 setVectorDirAndUp [[(_dir select 0)+0.7,(_dir select 1) +0.7,(_dir select 2) + 1],[1,-0.002,0]]; sleep 0.01; _countAlive = {alive _x} count (crew drone1); if (_countAlive==0) then { Wep1 hideObject true; } else { Wep1 hideObject false; } }; The drone is executing this code to change the weapon it is using (Variable name = Drone1): this removeWeapon "DeminingDisruptor_01_F"; this removeWeapon "Laserdesignator_mounted"; this addWeapon "CUP_Vhmg_PKT_veh"; this addMagazine "cup_100Rnd_TE1_Green_Tracer_762x54_PKT_M"; this addMagazine "cup_100Rnd_TE1_Green_Tracer_762x54_PKT_M"; this addMagazine "cup_100Rnd_TE1_Green_Tracer_762x54_PKT_M"; this addMagazine "cup_100Rnd_TE1_Green_Tracer_762x54_PKT_M"; this addMagazine "cup_100Rnd_TE1_Green_Tracer_762x54_PKT_M"; this addWeapon "Laserdesignator_mounted"; this addMagazine "Laserbatteries"; The weapon (PKM) is executing (Variable Name = Wep1): execVM "Weapon1.sqf"; Part of the issue is that the weapon its self spawns sideways so it requires corrections to be added to the weapon to keep it facing the correct direction. For setVector direct and up these were [[-0,0.002,1],[1,-0.002,0]] originally before the values that you saw in the code above were found through trial and error. It is also attached to the arm 3 of the drone as i cannot find the refrence for the gun its self. Top red triangle. The weapon its self is just executing the .SQF and the drone only has the scripting for changing the weapons and ammo in it. PKP is from CUP along with scripted weapon being used for the drone. Will have same issues with vanallia assets though. However it will work with any weapon prop as they all spawn in sideways. If anyone has any ideas on how to correct this it would be appreciated. I can also send over the mission file is needed. Thanks in advance.
  24. While I am no beginner at programming in general, I am relatively new to SQF scripting for Arma 3. After 1000 hours I decided to finally toy around with the scripting side of things and I've already completely broken my first script. I apologize for any mistakes I may have made in advance, I am really new to this and I need some help solving this problem. At the moment the script is executing, however, it is not displaying the kills in the chat as it should be. I am realizing more and more that the YouTube video I learned this from is very inaccurate and riddled with errors. ----------initClient.sqf---------- // Executes all client scripts remotely and globally (with restrictions to client only if set in the script itself). [] remoteExec ["killFeedClient", 0]; ----------initServer.sqf---------- // Executes all client scripts remotely and server-sided. [] remoteExec ["killFeedServer", 2]; ----------killFeedClient.sqf---------- // Creates "killFeedClient" function to be executed in "initClient.sqf." killFeedClient = { { // Adding an event handler for the "Killed" action to every unit. _x addEventHandler ["Killed", { // Initializes all of the variables used in the formatting of the kill-feed statement. _unit = (_this select 0); _killedBy = (_this select 1); // Organizing and grouping all of the variables into a single array. deathInfo = [_unitName, _killedBy]; // Creating the "killFeedUpdate" public variable event handler. publicVariableServer "killFeedUpdate"; }]; } forEach allUnits; }; ----------killFeedServer.sqf---------- // Creates "killFeedServer" function to be executed in "initServer.sqf." killFeedServer = { // Only runs this script if the machine executing it is the server. if (isServer) then { // Listens for updates from the "killFeedUpdate" public variable event handler. "killFeedUpdate" addPublicVariableEventHandler { // Initalizes "_deathInfo" private array and sets it's value from the previously mentioned event handler. private "_deathInfo"; _deathInfo = (_this select 1); // If you are confused by why we used 1 and not 0 refer to "addPublicVariableEventHandler" documentation on the wiki. // Extracts each variable from the "_deathInfo" private array. _unit = (_deathInfo select 0); _killedBy = (_deathInfo select 1); // Grabs some more data by passing the previously mentioned variables through a variety of functions. _unitName = name _unit; _killedByName = name _killedBy; _distance = _unit distance _killedBy; // Formats the kill-feed statement to be displayed in the game chat. _killFeedStatement = format ["%1 was killed by %2. (%3m)", _unitName, _killedByName, _distance]; // Displays the kill-feed statement in the game chat as if it were being called in by the killer. _killedBy globalChat _killFeedStatement; }; }; };
  25. Now before anyone says it, I realize that this forum is dedicated to Arma 3 and usually does not support any 3rd party addons, mods, plugins, etc., however, I believe that as CBA is such a big part of SQF scripting that I feel as if I need to learn to use it. I have tried to use the official CBA documentation on their GitHub, but if I am being completely honest, it is genuinely quite confusing and difficult for me to wrap my head around. I have some prior programming and scripting experience in languages such as C++, Javascript, Python, and a few others, yet this seems more complicated than anything I'm used to. I guess I should get to the point and ask my question. Is there any YouTube videos or written guides that can explain these CBA features to a beginner in both SQF and CBA? Any and all responses are greatly appreciated, as always! 😊
×