Taylor Norris 2 Posted January 14 Howdy fellers, got some info to dump on y'all. Hope it helps you create your own single player Old Man style scenario. Happy New Year. Thanks to these fine gentlemen HERE and HERE for being the Giants whose shoulders I am not worthy to stand. The only reason I could get the rest of this info out here. I won't cover QRF or checkpoints other than to add that in the configuration of a checkpoint I use an invisible arrow found in the Helper section of props, not a marker. Set the Z coordinate to 1 so your vehicle body intersects with the invisible object. Synopsis: The main things I have discovered and want to share are: You need more than just the Description.ext with common_descriptions in your mission folder, details below. You need to have every rest and merchant object/unit in a layer and called by a sector for it to work 100% of the time. You need to name every merchant unit and box, and I figured out how to get around the inventory check against the prices_definitions array so you can have any items show up in market. I found out how to work the insurgent modules to a good degree, I can't figure some things out and it might be hit and miss but if you follow my directions you should be able to have the ambient "Support L'ensemble" missions come through, and you will be able to send an attack team from your phone. And see the insurgent app details. Also I found some helpful commands regarding the disguise system, and other useful tidbits. Step 1: Create new mission, save as (any name), open scenario folder, create new text document, copy the code below into it, save as "Description.ext" #include <\a3\Missions_F_Oldman\Systems\commonDescription.inc> Step 2: Create another new text document, copy the following code, save as "OMMissionSetup.sqf". Return to mission, place non-area trigger in mission (in condition field: BIS_MissoinInitDone )( in onActivation field: execvm "OMMissionSetup.sqf"; ) #include "\a3\Missions_F_Oldman\Campaign\Missions\Oldman.tanoa\init_reputation_actions.sqf" #include "\a3\Missions_F_Oldman\Campaign\Missions\Oldman.tanoa\init_threatInfo.sqf" #include "\a3\Missions_F_Oldman\Campaign\Missions\Oldman.tanoa\init_systemExec.sqf" #include "\a3\missions_f_oldman\campaign\missions\oldman.tanoa\init_eventhandlers.sqf" #include "\a3\missions_f_oldman\systems\ui\centerdot\initcenterdot.sqf" #include "\a3\missions_f_oldman\campaign\missions\oldman.tanoa\init_variables.sqf" Step 3: Place OM Init module anywhere, set east and independent aim controls in this module. Place player unit (civilian) and place any single Blu unit. Set Blu unit probability of presence to 0 (zero). Group the player to the Blu unit (from player to Blu so player joins Blu side). ***Make sure the player has a radio equipped*** in the inventory, as you need it for Insurgent modules functionality. From here, you should save the mission and enter it to test. You should have the Old Man loading screen come up, enter the mission and when you open the map you should see the phone ui. You should also see the center dot like in the OM mission. Go back to the 3DEN editor. Step 4: Place the following OM Modules anywhere on the map: Fast Travel, Smart marker (no changes needed), action queue (no changes needed), economy (set attributes as you desire), radio (set to off if need be, but the module stops error codes when sectors load vehicles), relationship (east) AND relationship (independent, set threat and enemy values high so they don't get angry at you easily, but not so high they don't mind you shooting them), reputation (module needs to be synced to relationship (independent) module for functionality. NOTE: set reputation as -1 to begin, when you go from level -1 to 0 rep you will gain access to the insurgent phone app whereas if you start from rep 0 to 1 you will skip over the app activation, and when you get to rep1 you can call in an attack from your phone, like in OM mission. You can raise it manually with ( ["REPUTATION_POSITIVE_BONUS_GREAT"] call BIS_fnc_OM_addReputationManualy; )That's supposed to be 1 L in the code.) Step 5: Place OM rest point module, place any object you want to rest at (found some items don't work like Global Mob bed, but GM couch worked. Experiment), sync rest object to module, place the rest object into a layer (rest1 for example) and place a sector (owner:none or independent, layer:rest1) make sure that sector is calling that layer. You should now be able to sleep at that object. Easy as that. You can have more than just the rest object in the layer too. Place a Fast Travel Location module nearby and sync it to the rest1 sector to be able to fast travel when you click on the rest marker from another fast travel zone. -Now place an OM market module, a single unit (indep or civ), and any box. Set merchants combat mode to CARELESS. Sync the market module to the unit and to the box. Name the unit and the box (I use m1 and b1), and put them into a layer (merch1) and have a sector (owner:none or independent, layer: merch1). Now, to avoid odd teleporting behavior from the box, we place an OM init script module, sync it to the box, and in the init script module field write( _this enablesimulation false; _this hideobject true; ). The unit should now be a merchant when you approach him in mission. But, the contents of the box are checked against a Prices and probabilities list, if you are using base game and apex stuff no problem, if you are using items and weapons not supported (like CUP or CSLA) they won't show in the merchant's inventory. -To work around this, do the same setup as above. Now, place another box down(we will refer to it as new box), fill it with any and all of the items you want to be sold in the market, and put the new box into a layer called by a sector that will be spawned by the player before he meets a merchant. Place a OM init script module, sync it to the new box, and in the field write ( _this enablesimulation false; _this hideobject true; contentmerchant = itemcargo _this + weaponcargo _this + magazinecargo _this; ) We have just made the new box invisable and inaccessable, created a variable( contentmerchant) with an array of items and weapons and magazines from the new box. Now place an area trigger centered on your merchant, set the size to 5 x 5, set activation to player present, and in the onActivation field write ( {b1 additemcargo [_x, 1]} foreach contentmerchant; ) replace b1 with whatever you called your merchants box, not the new box. Now, when you approach the merchant, his inventory will update with all items you put in the new box. A bit of a workaround, but it's worth it to be able to sell specific items. -for some reason, the rest point and market modules do not want to work unless the units\objects are in a layer and called by a sector. But with this setup, every rest point and market should work every time. Step 6: (Insurgency Modules) place OM insurgent team module (place anywhere, it is necessary that in the Dependencies field of this module you fill in ["BIS_MissionInitDone"] ), next place a group of rebels nearby and sync all units of group to the module. It will scan and delete these units. These unit templates will be passed to the insurgent camp positions and used in the groups when you call in an attack from phone. Place OM Insurgent agent module (place anywhere no changes needed, but you can set attributes as you desire), place another group of rebels and sync these to the insurgent agent module. It will scan and delete them at mission start just like team module, I think it has to do with the units for ambient support missions. Now for the camp positions module: -wherever you want the location of the camp, place a sector calling a layer (independent owned, layer: camp1), now place a group of rebs and put them where you want them located in the camp. Ungroup the units so they are each individually grouped to themselves. Now make a new layer out of the units, and name it camp1 (or whatever you named the layer in the sector) so the sector will handle the spawns. Next, place a camp position module next to each of the units in the layer, sync each unit to it's own camp position module, and sync all camp position modules to the sector. -repeat process for each camp location around the map. Make sure to use unique names for each layer (camp1, camp1objects, camp2, camp2objects, etc) -I have no clue how to set a whiteboard or other object to use the "send team from camp" ability, but you can call an insurgent team from your phone when you have high enough reputation, and if you are standing in the sector modules' area handling the insurgent camp positions, they will actually leave that specific camp to assault the area you designated. If you call from outside of the sector module area of a camp, they will not leave any camp specifically but instead a group will spawn at the location of the support starting position module of whatever sector you are targeting. (you must sync a support starting position module to all sectors you plan to have "can be attacked" checkmarked on. location of module designates the spot they will spawn for that sector.) -When you add the flavor objects or units to the camp, place them in their own layer (camp1objects), create another sector (owner: independent, layer: camp1objects) to handle the spawns, because the sector handling the insurgent camp spawn positions modules will NOT spawn other objects or units even if they are in the same layer as the units synced to insurgent camp position modules. Every insurgent camp should have at least 2 sectors, one that only handles the units synced to the campposition modules, and the other that handles all objects and vehicles and any units you don't want to leave when you activate that camp. -Agent function (ambient Support L'ensemble quests) use a mixed bag of units you sync to the agent or team module (not sure) and Syndikat units, I have not found a way to change that. If you can figure out how to make it so only certain units are used that would rock. So, if you are going to have an OM style mission in CSLA or SPE, for now you will want to either deactivate the function of it in the attributes of the Agent module or accept that some guys will look out of place. -You must select a map marker when calling in an attack from your phone. You can use a player created map marker to send a team. When you make the call, you must wait 12 seconds for Samjo to send you a text asking for you to select target and size of group. It was awkward at first for me and I didn't know why it wasn't working, then I remembered that there is supposed to be a dropped call that the player makes that would normally happen and I might not be patient enough so I waited and got a text from samjo to open the map and select the target. It's awkwardly long though without the outbound call, if someone can figure out how to get that to activate that'd be cool. -The insurgent team function (call to send attack) is only available when you have a good enough reputation with Independent, and you need a radio equipped. You can raise it manually with ( ["REPUTATION_POSITIVE_BONUS_GREAT"] call BIS_fnc_OM_addReputationManualy; ) That's supposed to be 1 L. It should bring you up about one reputation level each time it is called. as stated earlier, I would set it to -1 to start with. When you reach level 0 for the first time in game, the insurgent app activates. It will not do this if you start at rep 0. Same for the insurgent call function at level 1. You can start at level 1, but it will not be activated nor the app because you need for it to "flag" that you've gotten to that level before activating. So starting at -1 and adding reputation manually will give the desired effect of activating the insurgent app when you reach level 0, activating the insurgent call when you reach level 1, and from there it only cuts the price at the markets when you get to level 3. once the player gets the call from Samjo about being able to make the call to request insurgent teams, you really don't need to add more reputation. Step 7: If you want targets for the Insurgency Agent module (support L'ensemble task), then when you place an enemy sector down, make sure it can be attacked (checkbox located in sector module attributes). You can only call in Insurgent teams over the phone to attack sectors (can't call them to middle of nowhere). To select a sector on the map (as they are not marked when in game) you'll need a marker near where the sector is. Either place one when you are in game (double click on map) before you make the call to Samjo for an attack, or arrange to have an intel pickup place a smartmarker. -it seems to look like Opfor is supposed to be the default badguy, as when you set up a blufor sector with blu units and set it to be attacked (like I did when testing in SPE), it doesn't register (at least for me) to send an ambient support quest (maybe I didn't wait long enoug). You can still send a team from a camp over the phone, but when they get there they won't do any shooting, even if you have Blufor and Independent set as enemies in the general settings of the mission. This is because the Old Man init changes that attribute, so you'll have to play with the setfriend command after the mission init is done (can put this code in the onActivation field of the same trigger that calls "OMMissionSetup.sqf"): (0 is enemy, 1 is friend) here id an example of what I put in my SPE testing civilian setFriend [west,1]; civilian setFriend [resistance,1]; west setFriend [east,0]; west setFriend [resistance,0]; east setFriend [west,0]; east setFriend [resistance,1]; resistance setFriend [west,0]; resistance setFriend [east,1]; Step 8: Sectors can be synced with civilian presence module (the one with area) to handle civ spawning. Just set up civ modules (presence module, spawnpoints and positions in presence area), sync presence area module to sector you want to handle it and bingo bango bongo. Too many of these modules can severly impact load time. Note, DO NOT OVERLAP SECTORS EVER, even if they are handling layers they will still disrupt another sectors functions. If you are using 2 sectors to handle spawning in a local area (for example the insurgent camps modules. Good practice to prioritize the insurgent camp sector area, as the area of this sector module is used to determine if the player is in a camp and able to send this specific camp to a position, or if the player is outside of the area of any camp and therefore will use spawning at supportstartpos method Step 9: Helpful stuff I found out: show a subtitle : ["_speaker", "_words"] call BIS_fnc_showsubtitles; change players clothing status : BIS_isWearingCSATHelmet = BOOL; BIS_isWearingCSATUniform = BOOL; BIS_isWearingNeutralUniform = BOOL; BIS_isWearingSuspiciousVest = BOOL; BIS_isWearingIDAPUniform = BOOL; BIS_isWearingWorkerUniform = BOOL; BIS_isWearingUndercoverFacewear = BOOL; BIS_isWearingCompleteUniform = BOOL; BIS_isWearingSuspiciousHeadgear = BOOL; if you want to escort an AI use : [unit] call BIS_fnc_escortAIHoldAction; if you want to enable the insurgent app without changing rep : ["Syndikatinfo", true] call BIS_fnc_OM_phone_enablebutton; to add an amount of money to the player (not sure how to add a notification yet) : [1,[amount]] call BIS_fnc_OM_ModuleEconomy; create dynamic persistant clash zones with the OM Patrol Area module. Set up one for opfor and one for independent, then overlap them anyhow you want. The patrol area module doesn't have any restrictions on overlapping other patrol modules or sectors. The groups synced to it must be foot patrols. check out the BIS_fnc_ambientanimcombat page on the wiki for animations that units can play and still go into combat. Put this command into the OM init script module synced to the units you want to animate. [_this, "STRING"] call BIS_fnc_ambientanimcombat; Step 10: Hopefully you can learn to use the modules better than I have explained here. Together with the other Old Man guide out on the steam page, and the info on the BI wiki regarding old man systems, this should give you plenty of functionality to make it worth creating a mission using these and other systems combined (HC, Support, Zues et al) Thank you for taking the time to read this. - T Also, here is a link to a steam workshop composition I made with working Old Man module setup. Just follow directions on the composition description. 2 Share this post Link to post Share on other sites
SeelieKnight 2 Posted January 27 As luck would have it, I just started trying to use the Old Man modules to make a semi-story-driven sandbox type mission, and this was really helpful in getting things up and running. I also started digging through the Old Man files to see if I can tweak some things (most everything interesting seems to be in "your install directory"\Arma 3\Expansion\Addons\missions_f_oldman.pbo). I'll try to update this comment with things as I find them but here's what I have so far: Setting up tweaks to default Old Man systems Reveal hidden contents Make another sqf file (same way you made OMMissionSetup.sqf). I named mine "OMMissionTweaks.sqf". In the same trigger where you call OMMissionSetup, add another line to call OMMissionTweaks (execvm "OMMissionTweaks.sqf";). At the tope of the file put the line: waitUntil {player getVariable ["BIS_OM_ShowCenterDot",false]}; This will ensure none of the tweaks happen until after all the systems are initialized. Note: none of this will work if you put into OMMissionSetup, it has to be a separate file Getting Rid of the Default Contacts Reveal hidden contents If you don't want to have the Contacts for Keystone, Arthur, and Drabek, add the following code into OMMissionTweaks.sqf: //Remove Old Man Contacts BIS_OM_contactsPool = []; BIS_OM_contactsLog = ""; player setDiaryRecordText [["Contacts", BIS_OM_phone_section_contacts], ["Contacts", BIS_OM_contactsLog]]; Next I'd like to see if I can add modded uniforms to the civilian list and also change the name of the insurgents to something other than L'Ensemble. 1 Share this post Link to post Share on other sites