Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Everything posted by Melody_Mike

  1. Heya! I'm a little confused. It seems the control structures go in this order: Startup Terminal ---> Start Killhouse (repeatable) Shutdown Terminal <---> Startup Terminal In which case, you could just add a removeAction line at the end of your KillHouseControl script for the Startup and Shutdown actions. In this case, Start Killhouse seems more like Reset Killhouse. It doesn't look like you need anymore addActions, just one more line of code to remove the action from the menu after it's completed. Or am I missing something?
  2. Hey again! That is tied to an individual player's difficulty setting. This is set in their Arma 3 profile. In other words; the effect is local to the player. If you want to mark units for other players, then you can use a custom mod that someone's made: https://steamcommunity.com/sharedfiles/filedetails/?id=2057294714 Enjoy!
  3. Ah bub, there's lots of ways to solve your problem. If all you want is them to stick to roads, then you can use https://community.bistudio.com/wiki/setWaypointBehaviour to "SAFE". AI will stick to roads, unless they spot an enemy. This can be set in the editor without using any scripts, by changing either group properties or waypoint properties. See https://community.bistudio.com/wiki/AI_Behaviour for background. If you want a script to automate the spawning of these groups and the assignment of waypoints, then you could modify one of several existing scripts. Engima's Traffic Script: -Springs to mind. But there's should also be other examples that won't even need modifying.
  4. @JohnKalo Thanks for the suggestion! However , it seems that the script, and the given example, use an external camera to make (quite awesome) panning, zooming, and establishing shots. That this script exists is a bit puzzling for me, because https://community.bistudio.com/wiki/camPrepareTarget and the related commands are reasonably straightforward to use. Even in multiplayer, you can simply execute the camera moves locally. But my problem is in creating a first person camera, where the player is doing an animation (walking, then interacting), and the player is temporarily prevented from making inputs. Do you know a script for that, a youtube tutorial, or a user mission?
  5. Appreciate the answer. ^ This is exactly why I asked the question . I realize that you coded this, along with others, a while ago. But it would help if you could give pointers why you chose the CBA versions of those functions, so I can maybe skip certain bits by replacing them with vanilla commands. The CBA documentation on the website is a bit cryptic, and doesn't always explicitly state the differences between CBA and vanilla functions. Thank you for the permission. I will not release the modified version in any way, but simply post it in this forum. And if anyone objects to my attempt at recreating CBA functions, they can of course object and contact me as well. I just want to keep things transparent. This is all just a self imposed coding exercise for me, really. Thanks again.
  6. Dear Tinter (and modders). Firstly, I will join the others in saying this is a very elegant script that saves lots of performance and mission development time(!). I've tested it with several missions in different towns, and the performance impact is quite acceptable. I had a question, all the same. Is there a to remove the CBA dependency of the script? I took a dive into the script and it seems you use the following functions: CBA_fnc_createNamespace CBA_fnc_players CBA_fnc_addEventHandler CBA_fnc_execNextFrame CBA_fnc_waitAndExecute CBA_fnc_globalEvent I suppose my question is two-fold: 1) Firstly, many of these functions (eg createNameSpace) have a vanilla equivalent; why did you use the CBA versions? 2) And secondly, would you mind if I created an alternate script that loaded these functions during mission startup, thereby removing the mod dependency? I am aware this could be seen as a step backwards in terms of performance (no caching of functions before mission start), and compatibility (no updates of CBA). And, that I am technically reverse engineering the hard work of CBA (who I will obviously credit in FULL). I don't want to step on any toes. But, because I work exclusively with public servers that have zero mod dependencies, I have a strong incentive to remove dependencies from missions.
  7. Melody_Mike

    Exile Mod: Burning Barrel

    Hi @oj.stefan! Welcome to our lovely forums! Does https://community.bistudio.com/wiki/deleteVehicle in the debug console not work? You can get the barrel's object name using https://community.bistudio.com/wiki/cursorObject . PS. make sure you are the server admin obviously :] .
  8. Melody_Mike

    Changing the color of the sky

    Hi @Ltn_D_Hicks ! Welcome to the forums! (Glad you survived that chestburster on Fury 161 !) To address your question: CfgWorlds is a class that's defined in the config for a terrain, not a mission. These classes are set when Arma 3 loads its modules, eg, you need to create and load a specific mod .pbo to make changes to it. An example of custom weather effects would be the Sullen Skies mod(s): https://www.armaholic.com/page.php?id=33050 Download and unpack it to see how it works. Seeing as you didn't mention needing a specific mod when playing the mission, I am guessing the creator/Zeus just set the weather to zero overcast without change for the mission. You can do this in the editor, under the menu "Intel". Or, you can change it during the mission in the debug console with: https://community.bistudio.com/wiki/setOvercast Good luck!
  9. @JohnKalo There exists a command to create rolling text: https://community.bistudio.com/wiki/BIS_fnc_dynamicText But of course, a video would give you complete control. Happy editing! Would love to try out your mission :D!
  10. @semedar Hey bub. Arma 3 's TexView and the Image2Paa converter program work with 8 bit RGBA .png images. These have an alpha (transparency) layer. I use GiMP to save them in the appropriate format. Good luck!
  11. Hello everyone. This question is somewhat open-ended, because I am not sure what is possible with the engine and its mission scripting limitations. Aim: To create humanitarian player roles in a coop mission (think Red Cross or OPCW personnel). They would have a specific skill, and would be ignored by enemy AI. They would have the *option* of picking up a weapon, but with penalties and loss of neutrality. What I know: Setting the unit neutral ( setCaptive ). Checking for weapons ( hasWeapon ). What I am not sure about: Restricting the inventory and actions. One method would be checking and removing items from inventory in a loop. This seems wasteful and frustrating for players who pick things up and find items disappearing. A better method would be to remove the option of picking up certain items in the first place. However, as I found out with googling, removeAction only removes previously added actions, not game default ones (such as picking up weapons). I am also unsure how to restrict the carry capacity of certain players. The following page seems to address it, but I don't understand what the class CfgInventoryGlobalVariable is and where it is defined for individual players: https://community.bistudio.com/wiki/Arma_3_Stamina . It seems setUnitTrait is also an option, but I am not sure how it works. Third, it would probably be immersive to prevent humanitarian players from aiming down sights/zoom in order to further discourage shooting. Can this key or command be disabled in any way? Many thanks for suggestions!
  12. Melody_Mike

    Humanitarian players

    Fair enough :]. I should have made explicit that the idea of combining hasWeapon and setCaptive in the initPlayerLocal.sqf had already occurred to me. Would you take offense if I de-PBO'd your mission and took a look at how you scripted those warnings? In my intended mission, "regular" soldier players will have to cooperate with humanitarian players to complete objectives. I am afraid that the humanitarian players would get bored if they were completely ignored by the enemy. But perhaps I just need to create appropriate hazards, such as mines or using LAMBS AI script for RPG's to allow more explosives, so as to make it dangerous for non-combatants. Do you have any experience in customizing stamina for each player?
  13. Melody_Mike

    [RELEASE] Intrusion

    Hi Engima, I enjoy any game mode that enforces cooperative teamwork, and doesn't rely on the instability that external mods bring. As far as I am concerned, it's the best way to enjoy Arma with friends! Kudos for including tutorial documentation within the mission. Having tested this mission by myself in a locally hosted game, however, I had a few questions: - As the only player, there were no other AI players. Nor did I see the option of filling in blank slots with AI in role selection. Will this be included in a future update to allow Singleplayer/Coop play? - Playing as the Brigade leader, I gave my team (and another player; my laptop client) orders to "ATTACK" (both move and destroy). Although my client player moved to the created task, and destroyed other vehicles at that location, the task never completed. Note that there were no enemy players/AI. Are there specific conditions to Brigade made tasks that need fulfilling? - How exactly do specific teams gain their weapons? It's a fantastic idea, that I couldn't get to work. For example: when selecting the mortar team, where do the mortars (backpacks) appear? Because it wasn't in any vehicle or crate at the team location, nor base. How does this mechanic work? - Is there any way to increase the factory resource gain beyond point control? Having captured all the locations, it took another 18 minutes to generate a vehicle, with my office resources having unlocked everything else. Or, are the factory/office resource locations randomized every match? Or, can vehicles be manually spawned via a specific menu? Keep up the fantastic work sir!
  14. Hi Donpachiyarou! Welcome to the forums. Eventhandlers are unfortunately not 100% reliable in multiplayer situations, and they can eat up a lot of processing. Add to that the complexity of the damage system in Arma, and you are in for a lot of coding. I think the simplest solution is to enable increased health in the server difficulty settings, and to force all the enemy units to carry the Stinger 9mm SMG. It should take at least 5 shots to take down a player with that combination. PS Good choice with the Domination gametype. I find it's the best way to introduce Arma to casual players. I would start the scenario once though, and change some of the mission parameters (in the role selection screen; top right) to your liking.
  15. Melody_Mike

    Farooq's Revive 1.5a

    This is not giving me any clues to help. What *exactly* are you expecting it to do, that it is not, or: what exactly is not working? What have you tried to fix it? What happened then?
  16. Hey there! For starters: this is a great idea, that is well executed (without mods)! I don't think I have encountered any bugs with the script itself. However, I do have two feedback points a) Your test mission, as of now (vDogPatrolv15.VR), has an external mod dependency on. I am pretty sure it's because you had DynaSound loaded when you were editing it, and the mission file accidentally got "contaminated". Note for players: you can easily remove this from the mission.sqm file using a text editor. b) Even with the single victim in the test mission, the ONE victim sound ("aaaaaahhhhH!!") very quickly got on my nerves. I will happily supply you with several short .ogg "ahs" and grunts so you can mix up the sounds a little. Again, fantastic script, and I will use it with pleasure! Game on, sir!
  17. Hey! For the casual person browsing this thread: when I was figuring this out myself, I just created an array with all of the civilians and had the eventhandler compare the _victim to the array. Note that that in my case, my code creates a punishment that temporarily blurs the players screen. Obviously you can add GrumpyOldMan's counter and mission fail trigger as well in the "punishment code" bit. // Civ punishment script: local blur // Define civs civslist = ["C_man_1", "C_man_1_1_F", "C_man_1_2_F", "C_man_1_3_F", "C_man_polo_1_F", "C_man_polo_1_F_afro", "C_man_polo_1_F_euro", "C_man_polo_1_F_asia", "C_man_polo_2_F", "C_man_polo_2_F_afro", "C_man_polo_2_F_euro", "C_man_polo_2_F_asia", "C_man_polo_3_F", "C_man_polo_3_F_afro", "C_man_polo_3_F_euro", "C_man_polo_3_F_asia", "C_man_polo_4_F", "C_man_polo_4_F_afro", "C_man_polo_4_F_euro", "C_man_polo_4_F_asia", "C_man_polo_5_F", "C_man_polo_5_F_afro", "C_man_polo_5_F_euro", "C_man_polo_5_F_asia", "C_man_polo_6_F", "C_man_polo_6_F_afro", "C_man_polo_6_F_euro", "C_man_polo_6_F_asia", "C_man_p_fugitive_F", "C_man_p_fugitive_F_afro", "C_man_p_fugitive_F_euro", "C_man_p_fugitive_F_asia", "C_man_p_beggar_F", "C_man_p_beggar_F_afro", "C_man_p_beggar_F_euro", "C_man_p_beggar_F_asia", "C_man_w_worker_F", "C_scientist_F", "C_man_hunter_1_F", "C_man_p_shorts_1_F", "C_man_p_shorts_1_F_afro", "C_man_p_shorts_1_F_euro", "C_man_p_shorts_1_F_asia", "C_man_shorts_1_F", "C_man_shorts_1_F_afro", "C_man_shorts_1_F_euro", "C_man_shorts_1_F_asia", "C_man_shorts_2_F", "C_man_shorts_2_F_afro", "C_man_shorts_2_F_euro", "C_man_shorts_2_F_asia", "C_man_shorts_3_F", "C_man_shorts_3_F_afro", "C_man_shorts_3_F_euro", "C_man_shorts_3_F_asia", "C_man_shorts_4_F", "C_man_shorts_4_F_afro", "C_man_shorts_4_F_euro", "C_man_shorts_4_F_asia", "C_journalist_F", "C_Orestes", "C_Nikos", "C_Nikos_aged"]; addMissionEventHandler ["EntityKilled", { params ["_victim","_killer","_instigator"]; if (isNull _instigator) then {_instigator = UAVControl vehicle _killer select 0}; if (isNull _instigator) then {_instigator = _killer}; if ((typeOf _victim) in civsList) then { // Punishment Code ["DynamicBlur", 400, [20]] spawn { params ["_name", "_priority", "_effect", "_handle"]; while { _handle = ppEffectCreate [_name, _priority]; _handle < 0 } do { _priority = _priority + 1; }; _handle ppEffectEnable true; _handle ppEffectAdjust _effect; _handle ppEffectCommit 5; waitUntil {ppEffectCommitted _handle}; ["<t color='#ff0000' size = '.8'>Warning!<br />No civilian kills.</t>",-1,-1,4,1,0,789] spawn BIS_fnc_dynamicText; uisleep 5; _handle ppEffectAdjust [0]; _handle ppEffectCommit 2; _handle ppEffectEnable false; ppEffectDestroy _handle; }; ; }; }]; You can place this in initplayerlocal (for the punishment) or init if you want GrumpyOldMan's counter to work. I'd like to add that this array does not include civilians that are spawned by the "Civilian Presence" Modules. These have their own classnames. I don't know the multiplayer performance, so I just excluded those names from the _civslist array. (PS pretty sure I screwed up the indentation..shouldn't make a difference)
  18. Melody_Mike

    Exec an earthquake globally

    @JGames Family Cool! What fixed it? I'd love to know, for future projects with global execution of external scripts on dedicated servers.
  19. I haven't tested this myself, but- https://community.bistudio.com/wiki/getMarkerPos ^ Doesn't the syntax of getMarkerPos allow for Z coordinates, by setting PreserveElevation to false? Otherwise you can simply do getPos on an object (character, chair, hat) you place, that has everything in its special attributes unchecked (no simulation, invisible, no damage). Makes positioning a bit simpler in the editor.
  20. Melody_Mike

    Zone Protection

    Hi Guys. Since I cannot find a decent summary of the modules in the Biki nor Steam nor forums, I have done some experimentation. Zone Protection Module: How? Create module. Synch it to an AREA logic entity. Then, synch the AREA logic entity with a trigger area. Set trigger attributes as necessary (activated by whom, what size, conditions..). Effect? As described, is supposed to prevent players from entering area. If a player activates the trigger, they will get a repeating private radio message saying "What the hell, I shouldn't be here". That is it (as far I can tell). Zone Restriction Module: How? Create Module. Synch it to a specified player or group. Also synch module to trigger. (Note: you probably also want to choose "Inverse Border" in the attributes, unless you want player to stay within trigger area) Effect? Will first warn players with radio message, then kill players that enter the area by spawning APERS mines at their feet after specified time. Happy mission making!
  21. Hi @SirBa5terD, Welcome to the forums! You are biting off a LOT with this project. You can more or less make this. But you will become an absolute scripting wizard when(?!) you succeed. I will discuss each bullet point: 2. You can display a picture ( .paa format) 360 pixels wide with the <img... > syntax in the regular briefing. See: https://community.bistudio.com/wiki/Arma_3_Briefing If you want a larger picture, then the engine will not always fit it within the briefing screen. Then you will have to use <execute expression ...> to open your picture up with a custom dialogue box. See: 3. You normally can't really type during missions. To enable this, you would have to program a custom GUI, and have it create (and format) diary entries with the text that the player inputs. See the "Custom Briefing Editor" picture example from the Biki: https://community.bistudio.com/wiki/Arma:_GUI_Configuration It would be extremely cool if you got this to work. But you will find it very challenging.
  22. Hey fellow forumgoers! People have been very helpful. I try to give some back to the newer forum members, but I notice that my lack of programming experience is really biting me. This feature I am designing was sort of meant to practice the basics. It also, believe it or not, will be included in a mission. Aim: Basically, to recreate an object that does this- https://www.youtube.com/watch?v=6ZeD5BrQYXo Only instead of telling the time, it tells how much is left of a timer. Example: 12:57 will be read out as " one - two - five - seven ". The setup is simple. Some recorded sounds for the numbers 1 through 10. A timer countdown script. A function to couple the four digits to four sounds being played. A " clock " object. And an addaction on the clock object to execute the coupling function. The sounds work great (.ogg format). I can play them using " Say3D " without problems. The timer script, very simply, starts counting down when it is started via execVM: timer = 58; // length of timer while {timer > 0} do { timer = timer - 1; sleep 1; }; An ingame object named " clock " will get an addaction in its init: this addAction [(""<t color='#FFFFFF'>"" + (""Switch on Clock"") + ""</t>""),{[clock,timer] call MeM_fnc_ClockSpeak;},"""",1,true,true,"""",""(_target distance _this) < 3""]; But I am stuck on the most difficult part, which is the function (fn_ClockSpeak) that parses the time into four digits, couples each digit with the correct sound file, then plays them correctly in order. This is what I came up with: private ["_clock", "_time"]; _clock = [_this, 0, objNull, [objNull]] call BIS_fnc_param; _time = [_this, 1, 0, [0]] call BIS_fnc_param; _timestring = [((_time)/60)+.01,"HH:MM"] call BIS_fnc_timetostring; _firstnum = _timestring select [0,1] ; _secondnum = _timestring select [1,1] ; _thirdnum = _timestring select [3,1] ; _fourthnum = _timestring select [4,1] ; //hintC format ["Time is %1 %2 : %3 %4", _firstnum, _secondnum, _thirdnum, _fourthnum]; // Testing parsing { if (_x isequalto "1") then {_clock say3D ["01", 70, 1];} ; if (_x isequalto "2") then {_clock say3D ["02", 70, 1];} ; if (_x isequalto "3") then {_clock say3D ["03", 70, 1];} ; if (_x isequalto "4") then {_clock say3D ["04", 70, 1];} ; if (_x isequalto "5") then {_clock say3D ["05", 70, 1];} ; if (_x isequalto "6") then {_clock say3D ["06", 70, 1];} ; if (_x isequalto "7") then {_clock say3D ["07", 70, 1];} ; if (_x isequalto "8") then {_clock say3D ["08", 70, 1];} ; if (_x isequalto "9") then {_clock say3D ["09", 70, 1];} ; if (_x isequalto "0") then {_clock say3D ["00", 70, 1];} ; sleep 5; } forEach [ _firstnum, _secondnum, _thirdnum, _fourthnum] ; Notice that I commented out a hintC. This was to check that the parsing of _num 's went correctly, which it did. My idea was to have a series of " if () " statements match the digit to playing the correct audio file, for each digit, with a pause in between digits. Seemed reasonably straightforward to me. But no audio is played with this script. The game doesn't give an error, so I don't know what I'm missing. My guess is that the _x is out of scope. Anyone have any ideas?
  23. Melody_Mike

    Speaking Clock

    Also thanks! I had to add a ; to the end of " _clock say3D [_x, 70, 1] ". But this also works fine. Unfortunately the sleep seems necessary to prevent the sounds from playing simultaneously. A few questions. What does adding "0" + do to the variable? How much difference can I expect between client "time" and "serverTime" with, let's say, an hour gameplay of 10 players without mods? And does it generate a lot of network traffic to base the timer on "serverTime" for each client?
  24. Melody_Mike

    Speaking Clock

    Holy cow! That was it. I have edited the script to its correct form. Thank you !
  25. Hey bub, I admit I don't have experience with the Sector Modules. But I am still confused by your wording. What does "neutralize" mean, in your case? To which side do sectors go to when civilians enter them? First thing I can think of, is to enter some code in the blank field of the civilian presence module, that executes upon unit creation: this setCaptive true; But I admit I am shooting in the dark here.