Feint 137 Posted April 8, 2013 (edited) "MH-9 Door Control" FOR ARMA 3: ALPHA VERSION 1.0 CREATED BY FEINT Contacts: ================= Website: http://www.jonhillenbrand.com Facebook: http://fb.com/feintgames/ Required game: Arma3: Alpha (dev) ================= Tested with Arma 3: Alpha version 0.53.103507 (I think - it's hard to read) Required addons: ================= none Description: ================= This is a pair of scripts which will enable the following: Adds doors to MH-9 Adds ability to open and close doors individually Demonstrate how to use a single script for 8 separate actions This is purely an example set of scripts to help teach people some basic scripting on animations and to add some functionality to the built in MH-9 that didn't exist in Arma 3 Alpha. I hope someone finds it useful. I've added annotations to the scripts where I thought it would be most useful in order to show what is going on. I know over the years that I've looked at other people's scripting to figure out how to do things. So this is just me giving back to the community as much as possible. I hope you enjoy it. Example mission included. Installation: ================= Copy and past the mission into your missions folder. Open in the editor and enjoy. Credits: ================= Feint and the Biki Disclaimer/License: ================= By use of this addon, you agree to the following: You are using these files at your own risk. Author(s) of those files are not liable for any damage or loss of data caused by use of these files. Usage of these files is prohibited for any commercial purposes. VIDEO: ================= Here is a video with a WIP version of these doors DOWNLOAD HERE: MH-9_DOOR_CONTROL.rar MIRRORS: MH-9 Door Control [ALPHA] v1.0 Edited April 8, 2013 by Feint ADDED MIRROR INFO 1 Share this post Link to post Share on other sites
tholozor 18 Posted April 8, 2013 Nice, big plus for the civil variants! Share this post Link to post Share on other sites
Meatball0311 79 Posted April 8, 2013 Nice! Thanks for the contribution! Share this post Link to post Share on other sites
Guest Posted April 8, 2013 Thank you very much for informing us about the release :cool: Release frontpaged on the Armaholic homepage. MH-9 Door Control [ALPHA] v1.0 Share this post Link to post Share on other sites
RitchieS 1 Posted April 8, 2013 Thank you soo much for this, I've been working with the editor for about 2 or 3 weeks or so now, and im starting to get the hang of it now. This will help me to understand the scripting a lot better, so I'm thanking you greatly for this post :) Thanks for sharing your Help and Knowledge towards the community! Share this post Link to post Share on other sites
kremator 1065 Posted April 8, 2013 Feint, this is really good mate ! Share this post Link to post Share on other sites
Feint 137 Posted April 8, 2013 Thank you soo much for this, I've been working with the editor for about 2 or 3 weeks or so now, and im starting to get the hang of it now. This will help me to understand the scripting a lot better, so I'm thanking you greatly for this post :) Thanks for sharing your Help and Knowledge towards the community! No problem. Happy to help people just starting out. If you have any questions about what I've done, please feel free to ask in this thread or PM me. Share this post Link to post Share on other sites
(st6)predator 0 Posted April 8, 2013 HI First i have to say that i am not familiar with scripting and so on. So i have a little Question. It is not possible to create a pho-File that allows to use the Addon on Stratis and other Maps without having to load a Mission? Kind Regards (ST6)Predator Share this post Link to post Share on other sites
Feint 137 Posted April 8, 2013 HIFirst i have to say that i am not familiar with scripting and so on. So i have a little Question. It is not possible to create a pho-File that allows to use the Addon on Stratis and other Maps without having to load a Mission? Kind Regards (ST6)Predator I am not familiar with how .pho files function, but what your asking is a little strange to me and might be beyond the scope of this thread. This thread is mainly meant to show what can be done within the editor along with a few scripts. I've not created a new addon, i.e. a new standalone vehicle with opening doors. The scripts available in the download will show how to use content that is already available in the games files, and with a little creative wrangling, you can add new functionality to the game that wasn't there before. Does that make sense? Of course, I could have made a new config with this functionality built in and released it as an addon so people could just place the new helicopter with opening and closing doors already built in, but then it wouldn't be as easy for people to learn. I think .pho files are something new to me and maybe new to Arma editing in general. If you know how to do it, by all means I would post your findings in a new thread. Sounds interesting. Share this post Link to post Share on other sites
Messiah 2 Posted April 8, 2013 All addons (and original content for that matter) are in pbo file format, they have been since OFP :) Esssentially you've added the user interaction to open and close the doors, which can also be achieved via a small config addon by the addition of the following: https://community.bistudio.com/wiki/UserActions (This isn't to detract from your excellent work at all, Feint, just pointing out that the utility could be achieved in addon form as well, but I understand and applaud your approach to doing it via scripts and the editor to let people look and learn) Share this post Link to post Share on other sites
Feint 137 Posted April 10, 2013 (edited) All addons (and original content for that matter) are in pbo file format, they have been since OFP :) Esssentially you've added the user interaction to open and close the doors, which can also be achieved via a small config addon by the addition of the following:https://community.bistudio.com/wiki/UserActions ST6Predator wrote .pho, not pbo. But now I'm realizing that it was a typo on his/her part. So yeah. By the way, I know what pbos are as I've authored many addons for many years (see sig). LOL Either way, thanks for posting that link. I think that will also help people come to grips with this stuff. :) Edited April 10, 2013 by Feint Share this post Link to post Share on other sites
Messiah 2 Posted April 10, 2013 Hah, didn't notice that, read it as pbo :P Share this post Link to post Share on other sites
jgbtl292 0 Posted April 10, 2013 mh doors - nice to have.... the problem is need it you ? when all can go in go out when the door is closed :( ? nice feature, only in out when doors are open this is what i will see in arma 3. i deed no new in out animation - the function alone is nice Share this post Link to post Share on other sites
seamusgod 1 Posted April 11, 2013 yeah i'd be better if there was added functionality where you couldn't exit unless you opened the door first. Share this post Link to post Share on other sites
Messiah 2 Posted April 11, 2013 The useraction can just as easily be tied to locking and unlocking the vehicle at the same time as opening the doors. Use some imagination, that's the point of these open source scripts. Share this post Link to post Share on other sites
kremator 1065 Posted April 11, 2013 Now instead of the script just being for choppers, how about it 'recognising' the vehicle and number of doors that CAN animate, then adding the action to the vehicle? What do you think Feint? Share this post Link to post Share on other sites
Feint 137 Posted April 12, 2013 Now instead of the script just being for choppers, how about it 'recognising' the vehicle and number of doors that CAN animate, then adding the action to the vehicle? What do you think Feint? I think there's a lot that can be done with getText but I'm not a big expert on that. Part of the problem is that there are no standardized names for doors like "Door0","door1", etc. All of the door names are proprietary to that particular class of vehicle. Maybe someone smarter than I could write a script to use getText to find anything that can be animated in a model, but to have that happen automatically depending on the vehicle is beyond my skills. I'm not sure that's even possible, but I won't go so far as to say it's impossible as this engine is pretty flexible. Share this post Link to post Share on other sites
seamusgod 1 Posted April 12, 2013 The useraction can just as easily be tied to locking and unlocking the vehicle at the same time as opening the doors. Use some imagination, that's the point of these open source scripts. imagination doesn't make things happen, effort and work makes it happen. you should show more respect to a guy who provided this mod free for you. Share this post Link to post Share on other sites
Messiah 2 Posted April 12, 2013 imagination doesn't make things happen, effort and work makes it happen. you should show more respect to a guy who provided this mod free for you. I was talking to you - instead of being spoon fed everything, why not use some of your effort and work and try doing it yourself? Share this post Link to post Share on other sites
adanteh 58 Posted April 20, 2013 (edited) I was changing the script a bit to disable the bench seats (Just by locking them) and making every door lock/unlock the seat it's next to, however I can't figure out how to lock the copilot seat. Any idea? I tried to figure it out by using player moveInTurret / moveInGunner / moveInCargo but I can't figure out which seat is the gunner seat. Could anyone example of how I go about figuring out which seats a vehicle has (Like if I'm in a certain seat that I type a command / execute a script to display the seat I'm in in the text area or so, or even something that just gives me a list of all available seats in a vehicle I already did the following to lock the benches _targetChoppa lockCargo [2, true];_targetChoppa lockCargo [3, true]; _targetChoppa lockCargo [4, true]; _targetChoppa lockCargo [5, true]; Edit: Another question: Right now I can always get out even though the door right next to the seat I'm in is locked. Is it possible to remove the get out function if the door right next to you is closed? I know I can do it by locking the entire vehicle, but I'm curious if you can do it this way. I'd love having to open/close doors before getting in and out first. @Feint. How did you figure out how which doors the MH-9 has? I'm curious about opening / closing doors of vehicles also. Do I need to use one of the tools from BI for this? Edited April 20, 2013 by Adanteh Share this post Link to post Share on other sites
Feint 137 Posted April 20, 2013 I was changing the script a bit to disable the bench seats (Just by locking them) and making every door lock/unlock the seat it's next to, however I can't figure out how to lock the copilot seat. Any idea?I tried to figure it out by using player moveInTurret / moveInGunner / moveInCargo but I can't figure out which seat is the gunner seat. Could anyone example of how I go about figuring out which seats a vehicle has (Like if I'm in a certain seat that I type a command / execute a script to display the seat I'm in in the text area or so, or even something that just gives me a list of all available seats in a vehicle I assume you already tried _targetChoppa lockCargo [1, true]; to try and lock that front right passenger seat, right? And you already tried lockTurret, right? Hmm. I wonder if there's a way to just remove the action so that it's not possible to even try to get in. If it's possible to find the action ID for that gunner seat, then you could just remove it. But I don't know how to do that. Edit: Another question: Right now I can always get out even though the door right next to the seat I'm in is locked. Is it possible to remove the get out function if the door right next to you is closed? I know I can do it by locking the entire vehicle, but I'm curious if you can do it this way. I'd love having to open/close doors before getting in and out first. Good question. I don't know off the top of my head. If you want it to happen automatically (like when you hit the GetOut key), I'd explore using an eventhandler with that specific aircraft to run a script that opens the door when you get out. It would look something like this: [color=#000000][font=sans-serif]_helicoptername [/font][/color][b]addEventHandler [getOut, "pathToGetOutDoorFile.sqf"]; [/b] And then pathToGetOutDoorFile.sqf: // insert your private line here // GET THE STUFF PASSED TO THIS SCRIPT FROM THE EVENT HANDLER _vehicle = _this select 0; _position = _this select 1; _unit = _this select 2; // FIND THE DOOR THAT SHOULD OPEN [color=#000000][font=sans-serif]"driver", "gunner", "commander" or "cargo"[/font][/color] if (_position == "driver") then { _vehicle animateDoor [(WHATEVER THE DRIVERS DOOR IS),1]; }; if (_position == "gunner") then { _vehicle animateDoor [(WHATEVER THE GUNNER DOOR IS),1]; }; // ETC. Unfortunately, I would guess that the timing might be off with the door opening too slowly for the unit exiting the vehicle. So I would add this to the script and see if it works: // CHECK IF THE DOOR IS NOT OPEN YET while {!(animationState nameOfDoor == 1)} do { _unit switchMove "nameOfHelicopterDriverOrCargoAnimation"; sleep 0.1; }; Of course, all of this might just be a fools errand if BI implements a special getOut move for helicopters with doors. I'm not sure how it works in TOH, but it would be worthwhile to use Eliteness (see below) to explore how those people get in and out of helicopters. Maybe the getOut action in TOH has a check to see if the helicopter has doors and if so to animate those doors and to wait until that animation is finished. @Feint. How did you figure out how which doors the MH-9 has? I'm curious about opening / closing doors of vehicles also. Do I need to use one of the tools from BI for this? I used an amazing program called Eliteness to unpbo the pbos and then to look at the animation names. You can grab Eliteness and depbo (which it needs to function) here: https://dev-heaven.net/projects/mikero-pbodll/files I also found this in the TOH forums which describes all of the animations available for their helicopters: http://forums.bistudio.com/showthread.php?127119-Doors-Off Side note: Has anyone tried animateDoor instead of animate for the doors? I haven't tried it yet and am wondering what the difference is. Maybe the door knob rotates before and after the door moves if you use animateDoor. Share this post Link to post Share on other sites
adanteh 58 Posted April 20, 2013 (edited) I assume you already tried _targetChoppa lockCargo [1, true]; to try and lock that front right passenger seat, right? And you already tried lockTurret, right? Hmm. I wonder if there's a way to just remove the action so that it's not possible to even try to get in. If it's possible to find the action ID for that gunner seat, then you could just remove it. But I don't know how to do that. Yes. Cargo spot number 0 is for the left rear seat and cargo spot number 1 is for the right rear seat. I tried lockTurret and lockGunner and lockCommander and also tried going higher with lockCargo, but no luck. I was trying to find the location with player moveIn<whatever> but no luck with any of that. I got eliteness to work (Was using an old version which crashed with new depbo) and it says there is getin_cargo to getin_cargo6, getin_pilot and getin_turret. I'm guessing get in turret should work fine. Good question. I don't know off the top of my head. If you want it to happen automatically (like when you hit the GetOut key), I'd explore using an eventhandler with that specific aircraft to run a script that opens the door when you get out. It would look something like this: [color=#000000][font=sans-serif]_helicoptername [/font][/color][b]addEventHandler [getOut, "pathToGetOutDoorFile.sqf"]; [/b] And then pathToGetOutDoorFile.sqf: // insert your private line here // GET THE STUFF PASSED TO THIS SCRIPT FROM THE EVENT HANDLER _vehicle = _this select 0; _position = _this select 1; _unit = _this select 2; // FIND THE DOOR THAT SHOULD OPEN [color=#000000][font=sans-serif]"driver", "gunner", "commander" or "cargo"[/font][/color] if (_position == "driver") then { _vehicle animateDoor [(WHATEVER THE DRIVERS DOOR IS),1]; }; if (_position == "gunner") then { _vehicle animateDoor [(WHATEVER THE GUNNER DOOR IS),1]; }; // ETC. Unfortunately, I would guess that the timing might be off with the door opening too slowly for the unit exiting the vehicle. So I would add this to the script and see if it works: // CHECK IF THE DOOR IS NOT OPEN YET while {!(animationState nameOfDoor == 1)} do { _unit switchMove "nameOfHelicopterDriverOrCargoAnimation"; sleep 0.1; }; Thanks a lot for the quick response. I'll see if I can get this to work as I want it. Where exactly did you find the animations using Eliteness though or did you use the post from DnA for that? _______________________ EDIT _______________________ I just failed with the Turret formatting. Put the following in one of the watch fields assignedVehicleRole player which gave me a nice return of ["turret", [0]]; I added it to the closing of the right front door _targetChoppa lockTurret [[0], true]; and then the false to the opening and it works fine now. Still pretty weird, seeing all possible positions should be closed when doors are closed (All the bench positions are by default locked and can't be opened) and I'm still able to get out. Would it be possible to do a check if all doors are closed and then lock the complete vehicle if that is the case? Or do I lose the ability to open the doors again then? Thanks for the help. This is the very first scripting I'm doing and really have no idea what I'm doing. Any recommend reads to actually know how to make things? I really have no idea what all the variable names, defines and private things and so are for. Edited April 20, 2013 by Adanteh Share this post Link to post Share on other sites
Feint 137 Posted April 25, 2013 Where exactly did you find the animations using Eliteness though or did you use the post from DnA for that? Would it be possible to do a check if all doors are closed and then lock the complete vehicle if that is the case? Or do I lose the ability to open the doors again then? Thanks for the help. This is the very first scripting I'm doing and really have no idea what I'm doing. Any recommend reads to actually know how to make things? I really have no idea what all the variable names, defines and private things and so are for. I found the animation names in the config for the helicopter. Eliteness will let you look at the config if you double click on it. Sometimes when I want to search a config but I'm in Eliteness (which doesn't have a search function), I'll copy and paste the config into a text editor and do my searching that way. It really speeds things up. If the vehicle is locked, I would guess that you can still get out, but you can't get in. But I haven't tested this. I'd just keep pecking at it and test a lot. That's what I do. Recommendations on where to go to learn this stuff? My first recommendation would be to download and use Squint. It's helped me more than any reference. Second, I'd just keep looking at what other people are doing and using Eliteness to look at how they've coded things. I'd alos keep that BI Wiki close at hand. There are also tutorials on YouTube and scattered all over the place that might help with some of the basics. But really, for me it's been trial and error. There's still a lot for me to learn, especially when it comes to multiplayer coding, locality, public variables, and all of that complicated stuff. Share this post Link to post Share on other sites
kremator 1065 Posted April 25, 2013 Have you seen the script by BlenderRus Feint that allows get in actions from above? Thought about that using your neat scripts ? Share this post Link to post Share on other sites