Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Community Reputation

20 Excellent


About domcho

  • Rank

Contact Methods

  • Skype
  • Youtube
  • Steam url id

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Triggers that have a trigger owner with activation "Whole Group"/"Group Leader"/"Any Group Member" don't work properly outside the editor. Try this: Place a group consisting of 3 or more units. Set the 2nd highest ranking unit to be the player (you'll have to kill the squad leader and take command). Create 3 triggers and set the group leader to be the trigger owner. First trigger: Trigger name: Trig1 Activation: Whole Group, Present On activation: player sideChat "Trig1 - Whole Group"; Second trigger: Trigger name: Trig2 Activation: Group Leader, Present On activation: player sideChat "Trig2 - Group Leader"; Third trigger: Trigger name: Trig3 Activation Any Group Member, Present On Activation: player sideChat "Trig3 - Any Group Member"; Start the mission, kill the group leader, when you take command move into the trigger zones. The triggers will work properly even though the trigger owner is dead. Trigger ownership transferred from dead unit to another squad member properly. Now go back in the editor, export the mission to Singleplayer, open it from there and try the same thing again - the triggers will not fire. Trigger ownership did not transfer at all. You can further test this using the triggerAttachedVehicle command. Give the group leader a variable name. For example "a1". Place 4 triggers. You can make them repeatable if you want. First trigger: Trigger text: trig1 owner Activation: Radio Alpha On activation: hint (str (triggerAttachedVehicle trig1)); Second trigger: Trigger text: trig2 owner Activation: Radio Bravo On activation: hint (str (triggerAttachedVehicle trig2)); Third trigger: Trigger text: trig3 owner Activation: Radio Charlie On activation: hint (str (triggerAttachedVehicle trig3)); Fourth trigger: Trigger text: trig4 owner Activation: Radio Delta On activation: hint (str (triggerAttachedVehicle trig4)); Also create another trigger, name it trig4, set the trigger owner to the group leader and set activation to "Owner Only". When you test this in the editor, only trig4 should show you the name of the unit - a1. The other 3 triggers should display <NULL-object>. Export the mission to Singleplayer (restart ArmA 3 before doing that if the mission is loaded into memory or it will not be overwritten properly, i.e. the .pbo file won't be deleted / overwritten). Now when you (re)start the mission in singleplayer, run the radio triggers - all of them will show a1 as the owner of the triggers. Even if the unit is dead it will still show a1 and the triggers won't work. This is also the case for multiplayer exported missions.
  2. domcho

    Cold War Rearmed III

    Ambush SP mission is still bugged, last time I played it was almost a year ago and the tanks weren't attacking Houdan, but now the Ural that's supposed to reinforce Houdan before the tanks get sent didn't arrive. I traveled to Dourdan only to see the squad that's supposed to board it stay in Wedge formation lying on the ground looking at me and not firing. I opened the mission in the editor, to me everything looks fine in terms of triggers and code. My only guess is that maybe the mission somehow breaks if the player loads a save and plays the mission from it? In my case I got killed once as I was entering Houdan so I loaded a savegame and continued from there. I have no clue. I also had problems with ХЭВИ-МЕТАЛ not ending, but after reloading the savegame that occurs before Le Moule and redoing the final part of the mission again, it ended. I assume it could've been a lonely soldier hiding somewhere in a bush although I did scour the area and even sent crewman on foot as bait, but found nobody. EDIT: I figured out what's causing the issue in 02 Ambush. It's the triggers that have units as owners for Alpha squad. If unit named a2 dies before reaching the trigger zone, the trigger won't fire and the Ural will not move in. If a1 (Alpha squad leader) dies all triggers owned by him won't fire either - like the trigger that calls the tanks to move into Houdan. It seems to be an ArmA 3 bug, see this post: BUG: Trigger owner for grouped unit in missions outside the editor
  3. Condition: ({_x in thisList} count units groupName) > 0 On Activation: {_x setDamage 1} forEach (units groupName select {(alive _x) AND (_x in thisList)}) However, you'll need to set the trigger interval to 0, otherwise if the first unit from the group enters the trigger area, he'll die but if the 2nd and 3d unit enter the trigger area before the trigger does it's condition check again, they won't die. This is for "Present" activation type for a repeatable trigger.
  4. Trigger ownership of a group member unit seems to transfer to another group member when the previous owner gets killed. However, that doesn't seem to be the case if the trigger owner doesn't exist, after mission start, in the first place. For example: You have a squad of playable units, squad leader is owner of the trigger. The trigger has activation: whole group and ends the mission. In the multiplayer lobby no player picks the squad leader playable unit and it's AI is disabled -> the unit will not exist, and the trigger will not work. The ownership of the trigger will not be transferred to the next group member, and thus the mission will not end. This is similar to another multiplayer problem where you had to initialize the group variable name inside every playable unit's initialization field (in a group that consists of player/playable units only). Doing it for just one playable group member could leave a window for problems, where again, no player picks that unit and it's AI is disabled, leading to the group variable name not being initialized. Thankfully, in ArmA 3 this could be solved by typing the variable name inside the group entity in the EDEN editor. Non-existing trigger owner could also be problematic in singleplayer if the group member who is trigger owner has probability of presence <100% and/or his condition of presence could return false. You can try it yourself: create a group of 2 units, set the player to be the 2nd unit (i.e. to not be the group leader), set the group leader's probability of presence to 0%, create a trigger, set the owner to be the group leader, activation any group member or whole group, on activation display a hint with hint "Trigger activated". Walk into the trigger area. You can also try it in multiplayer, just make the group leader playable, go into the multiplayer mission lobby, pick the slot for the 2nd unit and disable the group leader's AI so he doesn't spawn. The trigger will not fire. To circumvent this problem, don't give the trigger an owner in such scenarios. Instead give your group a variable name through the group entity and use the trigger's condition field to do checks: Any group member: ({vehicle _x in thisList} count units groupName) > 0 Whole group: ({vehicle _x in thisList} count units groupName) == ({alive _x} count units groupName) Group leader: vehicle (leader groupName) in thisList vehicle _x in thisList count units alive leader If anyone has better suggestions, feel free to post them.
  5. I managed to figure it out. For some weird reason a group occupying populated vehicle(s) placed in the editor seem to initialize properly only in singleplayer. In multiplayer they initialize properly only for the server (host). For the clients, the groups appear to be empty which is why checking for the amount of alive units of that group will return 0 for clients. To solve my issue, since I am playing Operation Flashpoint v1.96 I placed a Game Logic object in my mission and named it "server". Then I changed my first trigger to this: Condition: (({alive _x} count units apcGrp == 0) AND ({alive _x} count units tankGrp == 0)) AND local server Activation: deadAttackers = true; publicVariable "deadAttackers" Since Game Logics are always local to the server/player host this trigger will only fire for the player host in multiplayer. Then with publicVariable command I can change "deadAttackers" value for the clients as well, so that the next trigger will work for both the host and the clients. If you are playing ArmA: Cold War Assault (or in other words Operation Flashpoint version 1.99) instead of placing Game Logic, you can use the command isServer which has been backported into ArmA:CWA. These two particular topics were helpful: Multiplayer Scripting A view on (Multiplayer) Scripting, by Sickboy
  6. My mission works correctly in singleplayer, but in multiplayer it only works properly for the host. For some weird reason the end trigger gets executed prematurely for the non-host player(s). My first trigger: Condition: ({alive _x} count units apcGrp == 0) AND ({alive _x} count units tankGrp == 0) Activation: deadAttackers = true 2nd trigger (5 seconds delay): Condition: deadAttackers Activation: "2" objStatus "DONE"; hint "Objective completed"; end1 = true 3rd trigger (12 seconds delay) that ends the mission with End1 Condition: end1 apcGrp consists of 2 M113s, tankGrp consists of 1 M1A1 (squad leader) and 2 M60 tanks. For some reason the condition of the first trigger always returns true for the non-host player(s) at the very start of the game. Putting deadAttackers = false; in the init.sqs did not solve the issue. The missions just ends for the non-host player(s) with the 2nd objective completed. Any ideas? Could it be that because the units that are being checked if they are alive are crew members inside vehicles and are somehow local to the host? So the host sees them as alive but the other players don't? To me it seems like a weird bug.
  7. My scripting skills for multiplayer aren't the best, but I assume something like: {_x inArea thisTrigger} count (allPlayers - entities "HeadlessClient_F") == count (allPlayers - entities "HeadlessClient_F")
  8. I think that's to be expected. The trigger condition checks for living players inside the trigger area. Since there was only 1 player alive and everybody else was dead, the trigger condition was fulfilled once he entered it.
  9. From what I tested, it doesn't work with onPlayerKilled.sqf, nor with event handlers. The debriefing won't show, you'll get the default player death camera and effects with the menu. You can't prevent default game behavior after player death (in singleplayer) unless you use playerKilledScript.sqs, or overwrite the default respawn template "None" in the description.ext like I did. With this method, user input gets disabled until mission ends (I can't re-enable it with disableUserInput false), but the game continues to run normally without showing the menu and death camera effect, and I can use endMission command in the script to end the mission with the desired ending. It's just that BIS_fnc_endMission doesn't work in this case, I am forced to use endMission, which is why I am looking for a workaround.
  10. For problem 1 check There is a small typo in the script, it should be if (_projectile isKindOf "DemoCharge_Remote_Ammo" or _projectile isKindOf "SatchelCharge_Remote_Ammo") Problem 2 - need more information. What doesn't trigger? The task doesn't appear? The trigger doesn't run when players reach the exfill point? What exactly are you trying to do, and have already tried? Problem 4 - I am not 100% sure, but I think initPlayerLocal.sqf is only used for multiplayer?
  11. I'm trying to create a singleplayer mission and a multiplayer co-op variant of it where the player(s) has/have to get killed and receive a different debriefing based on a condition. I've had partial success by either using playerKilledScript.sqs or by overwriting the None class in CfgRespawnTemplates in the description.ext: class CfgRespawnTemplates { class None { onPlayerKilled = "scripts\playerKilled.sqf"; }; }; and in the script file: if (task1F) then { endMission "END3"; } else { endMission "END1"; }; However, I want to use BIS_fnc_endMission instead of the old endMission, and it will not work. endMission works in both playerKilledScript.sqs and in an overwritten respawn template using a script to handle player death, but BIS_fnc_endMission is bugged. For example: if (task1F) then { ["end3", false, 5, true, true] call BIS_fnc_endMission; } else { ["end1", true] call BIS_fnc_endMission; }; the fading effects and music of BIS_fnc_endMission are played but there is no debriefing screen nor does the game end. The default fade effect only plays for a second. User input is disabled and I have to kill the game process and restart the game. Is there some other way I can prevent the default death screen to appear and instead force the mission to display the debriefing with the proper end? For multiplayer: I know you can overwrite the default "loser" debriefing but that doesn't help as I want to keep it in case all players die in a firefight, and have a custom debriefing if the players die from a script command (task1F = true; allPlayers setDamage 1 -> display custom debriefing). I am also aware that I have to remoteExec my commands for multiplayer, but for now I want to get this to work in singleplayer first.
  12. I'm not sure the code in your while loop is correct. Try removing the forEach allPlayers block.The nearestObject syntax also seems wrong - I don't think you can pass an array of object types, only single object type. Try something like this: _nearIED1 = nearestObject [player, "IEDUrbanSmall_Remote_Ammo"]; _nearIED2 = nearestObject [player, "IEDLandSmall_Remote_Ammo"]; _nearIED3 = nearestObject [player, "IEDUrbanBig_Remote_Ammo"]; _nearIED4 = nearestObject [player, "IEDLandBig_Remote_Ammo"]; if (alive _nearIED1 AND player distance _nearIED1 < 5) then { *code to detonate _nearIED1* }; if (alive _nearIED2 AND player distance _nearIED2 < 5) then { *code to detonate _nearIED2* }; if (alive _nearIED3 AND player distance _nearIED3 < 5) then { *code to detonate _nearIED3* }; if (alive _nearIED4 AND player distance _nearIED4 < 5) then { *code to detonate _nearIED4* }; I haven't tested this, nor do I know how it will behave in multiplayer.
  13. Would event handler "Hit" be a valid substitute for "HandleDamage" here? I remember using Hit back in Operation Flashpoint. But reading the wiki page you linked, it seems HandleDamage has more parameters and thus opens up more possibilities? Anyway, this is perfect, thanks a lot!
  14. How do you check a group to see if any of the group members match a condition in general? For example, how would you make the game display a hint that a soldier from a group has been injured, but do it only once until that soldier is healed and wait until he is damaged again to display the hint? I tried this: {if (damage _x >= 0.1) then { hint ("Soldier " + name _x + " is injured!");};} forEach units myGroup; However there are multiple problems with this - the code loops through the whole group every time and only displays the highest indexed soldier of the group in the hint. It doesn't disregard already injured soldiers that were displayed on the hint. Another problem is that this can't be used in a trigger, unless, I assume, it is put in an endless loop and the trigger is fired once at the beginning of the game. I was looking for a way to do it with using a condition in the trigger's condition field and then using the activation box, but I guess it's not possible? Other than that how would you do a one time check for any unit in a group matching a condition?