Jump to content

DnA

BI Developer
  • Content Count

    2324
  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by DnA

  1. There is no easy official method of doing that (yet?), but if you're into scripting you might find the following information useful: _mySOM getVariable "secOpScopes"; This will retrieve the list of currently active SecOps from the SOM in an Array. It returns the scopes, which are objects that contain all information / variables about a SecOp instance. _mySecOpScope setVariable ["decision", _myDecision] Once you have the SecOp scope you can set the decision to be accepted. Accepted values for decision are: 0 - accepted 1 - not accepted 2 - timeout
  2. I did add this recently, but I'm not sure if it's in 1.02 ... it can be tried. The settings array should accept 3 additional parameters: spacing between SecOps in seconds (Scalar), random activation threshold (Scalar between 0 and 1) and SecOp spawning distances (Array of 2 Scalars: minimum and maximum distance in meters).
  3. The ones I listed are pretty much all of them for now :) You cannot use the settings variable again after the start. However, try updating the pool variable manually: (player getVariable "mainScope") setVariable ["pool", ["ambush", "destroy"]];
  4. To activate a specific SecOp, use the following: ["ambush", true, player] call BIS_SOM_requestSecOpFunc; The first parameter is the name of the SecOp as String (examples: "ambush", "attack_location", "trap", "rescue", "patrol", "escort", "defend_location", "destroy", "search" ... basically the class names in CfgSecOps). The second parameter determines the priority of the request as a Boolean. true starts the SecOp right away, false adds it to the queue for later. The third parameter is a reference to the SOM as Object.
  5. This module probably does not do everything that you may expect it to do, like automatically removing dead bodies. Trashing content is done on a case-by-case basis. One example we use it for: after a SecOp is finished, we trash all content created for this SecOp. Since we don't want the player to stand in a base and have it be instantly removed, the Garbage Collector is used to remove it after a while and after the player moved away. The SecOps module itself tracks the content it creates and passes it on to the GC.
  6. An awesome piece of work! Well done and thanks for your excellent contributions to this community :)
  7. FSM's are quite convenient as a visual way of scripting. Most FSM's are used for conversation flow ... like: when someone is asked A, then respond B, etc. Yet other FSM's are used to visualize anything else with a flow, like the flow of a mission / scenario.
  8. If you use the BIS_fnc_taskDefend function for a certain group, then units in this group will look around for static defenses and man them, as well as patrol the area. Did I mention that I'll be putting up a tutorial on making new compositions shortly? These are registered in config and can be released as add-ons quite easily :)
  9. One perhaps handy method: create a marker test with some position and direction, then instead of _pos and random 360, use: markerPos "test" and markerDir "test" :)
  10. This is definately not a feature and I doubt it's broken, because that would mean pretty much none of the scripts in the game would work. The old SQS was line-based, but SQF is not. If you have a case where this is not true, please present it to us :)
  11. //Spawns the object composition defined by class name "FuelDump1_US" on position _pos on a random angle. private ["_newObjs"]; _newObjs = [_pos, random 360, "FuelDump1_US"] call (compile (preprocessFileLineNumbers "ca\modules\dyno\data\scripts\objectMapper.sqf")); //Spawns a random composition from the library matching tags "usmc" and "medium" on position _pos on a random angle. _newObjs = [_pos, (random 360), ["usmc", "medium"]] call (compile (preprocessFileLineNumbers "ca\modules\dyno\data\scripts\objectMapper.sqf")); More info forthcoming in the BiKi :)
  12. The Dynamic Object Compositions are not exclusive to the 3D editor. They are simply a module (DynO). There is a library of such templates. You can spawn any template, anywhere, on any angle. Or you can spawn a specific template. Or you can pass some tags like "usmc", "tent", "medium" and it will spawn a random template matching those tags. Or ... :) I've opened a BiKi page on it, now I just need to fill it.
  13. Unfortunately we found some issues with the Communications menu and MP, therefore it sometimes isn't possible to make a SecOp decision. We hope to have fixed this and it should be in an upcoming patch.
  14. The function's return value is the group that was created. With that returned group you can find all units inside, including the leader. In the sample below the variable _group will receive the newly created group. private ["_group"]; _group = [getMarkerPos "markername", west, 8,[], ["CORPORAL", "PRIVATE"],[0.3,0.6,0.3]] call BIS_fnc_spawnGroup;
  15. LOL, yeah sorry, H.Q. is a bit selfish that way ;) Try to execute in a script after the SOM has started: //Gives one: ["tactical_airstrike", player] call BIS_SOM_addSupportRequestFunc; //Gives one of each: [["transport", "supply_drop", "tactical_airstrike", "artillery_barrage"], player] call BIS_SOM_addSupportRequestFunc; //Gives 2 random supports: [2, player] call BIS_SOM_addSupportRequestFunc; Oh and SOM stands for Secondary Operations Manager.
  16. That's right, between starting and ending such a loading screen you cannot use any suspending of scripts (sleep, waitUntil). These commands were introduced to allow some heavy systems to initialize quickly without script limits. You can do pretty much anything in the scripts, but not use delays.
  17. Yes, I'm afraid only one ACM per group is currently allowed. The second one is ignored. The only way to have different settings for different factions currently would be to create a custom pool of group classes. The ACM pulls its groups from CfgGroups, which is the same place the mission editor loads its groups from when you use F2 to place one. In these groups a value is defined (rarity) which controls how likely that group is. By default the ACM uses the entire set of groups. You can create a custom list by using the functions listed earlier, but you would have to know the class names ... again: more info on the way.
  18. Quick note: I've added the ability to alter the minimum and maximum distance SecOps are generated at and the frequency of starting random SecOps. Look for this in an upcoming (after 1.01) patch. What is already possible: without modifying the core SOM scripts (not recommended), you can create new SecOps in some add-on and define them in CfgSecOps. The SOM will automatically be able to use them. Eventually there could be a long list of community SecOps if anybody likes making them :) Worry not, documentation is coming.
  19. Yes, but be quick, because you only have 0.5 seconds to synchronize this way ... after that the ACM will evaluate which group is synced to it. Thanks for the assistance trini ;)
  20. Nope, it definately will not delete units when they get close and you will be attacked by spawned enemies. Looking at it that way maybe ambient isn't the best description. When we wanted ambient war sounds in the game, we didn't want to simply add some ambient pre-recorded sounds like certain other games do; we wanted actual combat :D
  21. Please try: [["USMC"], BIS_ACM] call BIS_ACM_setFactionsFunc; The list of factions should be an Array of Strings :)
  22. I'll get some sample missions for this module and other modules as soon as I can, but I also have other tasks to attend to :) Another hint for experienced scripters: modules need a little time to initialize (this can be super fast, but it's still several milliseconds after the mission starts). It is therefore wise to query whether the module is done initializing and then start changing settings in a script. You may check Boolean variable initDone in the ACM to do that. waitUntil {!isNil {myFirstACM getVariable "initDone"}}; waitUntil {myFirstACM getVariable "initDone"};
  23. Have you tried the Armory? (Waffenkammer I believe in German) ;) Or the fourth template (04: Combat).
  24. Yes :) The SecOps template (04: Combat) uses this concept. The SOM tracks completed / failed SecOps in an internal variable history (Array: Scalar | completed, Scalar | failed). So let's say your SOM is myFirstSOM, you can make your trigger check for: ((myFirstSOM getVariable "history") select 0) == 5
  25. This means markers you created in a mission and trashed. Trashing means you have to register stuff you want garbage collected by calling the BIS_GC_trashItFunc function. The garbage collector then tries to remove the content after a while, like when you are not in the vicinity. The garbage collector is capable of moving a light speed and it's not an actual garbage truck with crew which is collecting trash in Chernarus ... although that would also be rather cool ;) :p
×