Announcement

Collapse
No announcement yet.

Development of new Mission Template for ACE - Discussion

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Development of new Mission Template for ACE - Discussion

    Wanted to give you guys an idea of what I'm working on for a template.

    In addition to setting up a standard set of ACE settings (which is far more complex that I'd even assumed it was), I'm also trying to create a framework that will easily allow mission makers to pick and choose which optional items need to be enabled.

    For example, your mission is a an escape scenario and your players won't have access to the Blufor tracking system (or have map markers). You can easily change a line in the initPlayerLocal.sqf to enable or disable this option. You don't need to know how to script it.

    Here is the draft file thus far...

    Code:
    //initPlayerLocal.sqf 
    //this is designed so you can change what you want to use in your mission by changing the values at the top of the file
    
    //hedghogs localized, class based bis arsenal on some objects
    // set the line below to true to use it and add the boxes you want the arsenal to the array
    _useClassBasedArsenal = true;
    _objectsForClassBasedArsenal = [classBasedBox]; //add more boxes to this array if you need
    
    //ACE interaction options
    //reset tfr programming on self interaction
    _enableResetTFR = true;
    //add an option to get SR radio from self (radio bug work around where radios disappear in arsenal!)
    _enableSelfRadioGetOption = true;
    //put view distance dialog on ACE self Menu
    _enableViewDistance = true;
    
    //add get TFR Short & Long radios to listed objects
    _enableGetSROnObjects = true;
    _enableGetLROnObjects = true;
    _objectsForRadios = [radioBox,supplyRepairTruck]; //objects you place in editor
    
    //enable teleport to SL
    _enableTeleportToSL = true;
    
    //enable zues access for Pathfinders
    //must have zeus game master modules named: zeus & zeus1
    _enablePFZeus = true;
    
    //enable hedgehogs blufor tracker map markers
    _enableMapMarkers = true;
    
    
    
    //***********************************************************************************************************************************
    
    //***********************************************************************************************************************************
    //DO NOT EDIT BELOW THIS LINE unless you know what your doing
    
    ["InitializePlayer", [player, true]] call BIS_fnc_dynamicGroups;
    _TGbrief = []execVM "TGbriefing.sqf";
    _missionBriefing = []execVM "briefing.sqf";
    playerSpawns = 0;
    
    //wait until player is boots on ground
    sleep 1;
    
    //ACE self interaction items
    //Reset TFR
    if (_enableResetTFR) then {
        _action = ["tg_radioSelfAction", "Reset TFR", "", {[] spawn TG_fnc_reprogramRadios;}, {true}] call ace_interact_menu_fnc_createAction;
        [player, 1, ["ACE_SelfActions", "ACE_Equipment"], _action] call ace_interact_menu_fnc_addActionToObject;
    };
    //Get TFR self action
    if (_enableSelfRadioGetOption) then {
        _action = ["tg_getRadioSelfAction", "Get TFR SR", "", {[player, player] spawn TG_fnc_getShortRadio;}, {true}] call ace_interact_menu_fnc_createAction;
        [player, 1, ["ACE_SelfActions", "ACE_Equipment"], _action] call ace_interact_menu_fnc_addActionToObject;
    };
    //View Distance action
    if (_enableViewDistance) then {
        _action3 = ["tg_chvd", "View Distance", "", {chvd = [] spawn CHVD_fnc_openDialog;}, {true}] call ace_interact_menu_fnc_createAction;
        [player, 1, ["ACE_SelfActions"], _action3] call ace_interact_menu_fnc_addActionToObject;
    };
    
    //ACE other interaction items
    {
        if (_enableGetSROnObjects) then {
            _action1 = ["tg_radiosSRAction", "Get SR", "", {[_x, player] spawn TG_fnc_getShortRadio;}, {true}] call ace_interact_menu_fnc_createAction;
            [_x, 0, ["ACE_MainActions"], _action1] call ace_interact_menu_fnc_addActionToObject;
        };
        if (_enableGetLROnObjects) then {
            _action2 = ["tg_radiosLRAction", "Get LR", "", {[_x, player] spawn TG_fnc_getLongRadio;}, {true}] call ace_interact_menu_fnc_createAction;
            [_x, 0, ["ACE_MainActions"], _action2] call ace_interact_menu_fnc_addActionToObject;
        };
    } forEach _objectsForRadios;
    
    //hedghogs localized class based arsenal
    if (_useClassBasedArsenal) then {
        {
            [classBasedBox, player] call TG_fnc_ammo;
        } forEach _objectsForClassBasedArsenal;
    };
    
    //TFAR settings
    [nil, player] spawn TG_fnc_getShortRadio;//add short range for all
    player setVariable ["tf_globalVolume", 0.8];
    //reprogramRadios when SR is issued
    ["TGRadioID", "OnRadiosReceived", {[radioBox, player] spawn TG_fnc_reprogramRadios; systemChat "A new radio has been issued...";}, player] call TFAR_fnc_addEventHandler;
    
    //reprogram radio notifications when ACE arsenal is closed
    ["ace_arsenal_displayClosed",{systemChat "Check your radio programming!!";}] call CBA_fnc_addEventHandler;
    ["ace_arsenal_displayOpened",{systemChat "Welcome to the TG Arsenal.";}] call CBA_fnc_addEventHandler;
    //BIS arsenal reprogram long range radio notification
    [ missionNamespace, "arsenalClosed",{systemChat "Check your radio programming!!";}] call BIS_fnc_addScriptedEventHandler;
    
    //Teleport To Squad Leader
    if (_enableTeleportToSL) then {
        [] spawn TG_fnc_teleportToSL;
    };
    
    //Pathfinder Zeus Access
    if (_enablePFZeus) then {
        call TG_fnc_zeusAddAction;
    };
    
    //Player Blufor Tracker by hedgehog
    if (_enableMapMarkers) then {
        [] spawn TG_fnc_squadUI;
    };
    Now, I'm still working on cleaning up a few things then I'm going to run it all past our GO and some of you on the Projects Team...to make sure we get this right.

    I know it's a pain to be half way through creating a mission and the framework you are working with updates!!
    |TG189| Unkl
    ArmA 3 Admin
    189th Infantry Brigade Member
    SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
    "Tactics in action can not exist if there is no action." - Scout

  • #2
    FYI, I've also use the same format above for the initServer.sqf for all the relevant options.
    |TG189| Unkl
    ArmA 3 Admin
    189th Infantry Brigade Member
    SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
    "Tactics in action can not exist if there is no action." - Scout

    Comment


    • #3
      Gotta say, This is pretty cool setup. Making mission making easy. Kudos kudos.

      I would add comment on boolean values true and false being the available values. Also would give examples of array members being added instead of one member lists in comments of course. Multiline comments would work pretty well I think. That way those who use it have a reference.

      Also I guess I should comment up the class based arsenal and bring up the configuration variables to the top for easier editing. Loving it Unkl

      Comment


      • #4
        Originally posted by hedgehog View Post
        Gotta say, This is pretty cool setup. Making mission making easy. Kudos kudos.

        I would add comment on boolean values true and false being the available values. Also would give examples of array members being added instead of one member lists in comments of course. Multiline comments would work pretty well I think. That way those who use it have a reference.

        Also I guess I should comment up the class based arsenal and bring up the configuration variables to the top for easier editing. Loving it Unkl
        The more comments the better, don't be afraid to write a paragraph and just comment out each line. In my programs for work, I comment the hell out of my scripts or I'll forget it all.

        Current ARMA Development Project: No Current Project

        "An infantryman needs a leader to be the standard against which he can judge all soldiers."

        Friend of |TG| Chief

        Comment


        • #5
          One of the notes I left on my whiteboard this am was to convert the comment titles to all caps so I will add more examples to help new mission makers out.

          On another note, been thinking that I'm not going to put in any pre-built task or objective logic. My experience is that any scripts that are supposed to help require that you know a lot to make them work anyway. I just find it easier to build my mission tasks and mission ending states as required.

          I will only add one pre-built end condition for a mission time out. I'll do a pre-built 3 life respawn limit (that is two respawns).

          I've also included my own vehicle respawn script that works only when a vehicle is destroyed and you can set the time it takes to respawn a vehicle per each vehicle. This script will take an inventory of all the items you have added to it's inventory and when the vehicle respawns it is:
          • filled with the same stuff, and
          • is named the same as your original vehicle name (scripts will still reference the new object!)

          |TG189| Unkl
          ArmA 3 Admin
          189th Infantry Brigade Member
          SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
          "Tactics in action can not exist if there is no action." - Scout

          Comment


          • #6
            I did a lot of work on the Task Force Radio scripts this morning. One of the things I wanted to address is that sometimes you only want to program only your short or long range radio. Sometimes you want to do both. Previously the settings were in 4 separate scripts and if (I don't know why anyone would) a mission maker would want custom frequencies then all those files needed to be looked at.

            I've consolidated them into one fn_reprogramRadios.sqf script to make any editing easier. I've also created parameters for which radios are requesting to be programmed and whether or not a delay is needed. A delay is only needed when you are first given a new radio. Your client then queries the server for the global settings for your side and gets a unique id for your radio. This needs to happen before the frequencies can be set by the script.

            However, when you want to reprogram your existing radio...there is no reason to wait the additional six seconds and now the script will move along faster when requested.

            Here is a heads up for you coders on the new way to invoke the function and it's parameters.

            Usage:
            [<short>, //boolean where true means to reprogram the players short range and false means to leave the short range as is
            <long>, //boolean where true means to reprogram the players active long range radio or false is not
            <wait> //boolean where a wait of 6 seconds is required before reprogramming is completed
            ] spawn TG_fnc_reprogramRadios;

            For example we want to reprogram the vehicle radio but have set custom settings on our short range we don't want to lose. First the player will enter the vehicle and then set the vehicle radio to be the active long range. Then use the ACE menu and choose "Reset LR". This will execute:

            Code:
            [false, true, false] spawn TG_fnc_reprogramRadios;

            Next I am still working on putting all these functions under the ACE Self Interaction menu, under Equipment and then under TG Radios:
            • Reset Radios
            • Reset SR
            • Reset LR
            • Get SR (only needed because players are losing their short range in the arsenal sometimes)
            However, I have not been able to create a new sub-menu under Equipment yet. At least I've only tried my first attempt...next is to get into the documentation a bit more and do some more experimenting.

            https://ace3mod.com/wiki/framework/i...framework.html
            |TG189| Unkl
            ArmA 3 Admin
            189th Infantry Brigade Member
            SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
            "Tactics in action can not exist if there is no action." - Scout

            Comment


            • #7
              - TFR Ace actions are all done.
              - New FARP script in final debugging.
              - Gear saving completed using easy options in initPlayerLocal.sqf.
              - Contingencies for respawnOnStart are set up and easy


              To do:
              - Edit ACE Arsenal script to make easy to edit
              - Complete comments in initServer.sqf
              - Test all available options to see how it breaks
              - Test and test again

              Sent from my SM-A530W using Tapatalk

              |TG189| Unkl
              ArmA 3 Admin
              189th Infantry Brigade Member
              SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
              "Tactics in action can not exist if there is no action." - Scout

              Comment


              • #8
                So there has been a lot of updates on this topic within our new #missiondev and the forum updates have been slow in coming.

                So I am nearly completed the big picture stuff. I'm still going to remove the ambient air traffic from the Asset Marker script so it is a fully separate file that you can toggle from the initServer.sqf. The TgAceArsenal script also needs to be formatted to it is easier to work with. After that I want to share the template with a select few mission makers and the admin team to use and test out the features to make sure there is no unforseen bug in the works before we distribute it fully.

                During this next period I'm going to be writing documentation on how to use the Template in the editor and port it over to a new map for your scenarios. I'll be creating a series of video guides for this which will be broken down into small bite sized chunks to help new mission makers get going. There is a lot of work to do on this but once the basics are up, the testing should be completed.

                My guess is it should be ready within 1 week from today. But, that is just a guess as I still need the go ahead from the rest of the admin team on that.

                What I don't want to do is have to update the template every week. That is not fair to those who are in the middle of creating a scenario using it.

                Here is the big picture of what the features are:

                Mission Template Features
                INITSERVER.SQF
                Scripted ACE Arsenal Option
                Asset Markers
                Toggle Civilian Occupation System
                Mission Timer (required)
                Set Refuel Vics (if using FARP)
                Toggle Ambient Flyby

                INITPLAYER.SQF
                Scripted Class Based BIS Arsenal
                Control of ACE Interaction Items
                • Reset TFR Frequncies
                • View Distance
                • Get Radio Objects
                Set Backpack Radio model for mission
                Toggle Teleport to SL
                Toggle Pathfinder Zeus Access
                Toggle Player Map Marker System
                Set per Player Respawn Tickets
                FARP Easy Repair Settings
                Toggle Restoring Loadout as at Death Upon Respawn
                Handling respawnOnStart options

                FUNCTIONS
                Client Functions
                • getShortRadio
                • getLongRadio
                • teleportToSL
                • reprogramRadios
                • squadUI (player map markers)
                • ammo (class based arsenal)
                • farpAction

                Server Functions
                • vehicleRespawn (add code to init of vic)
                • assetMarkers
                • ambientFlyBy
                • zeusAddAction (Pathfinder access)
                • civilianKilled (event handler broken)
                • TGAceArsenal
                • missionTimer
                • ifAllPlayerDead (will end mission if all players are dead and have no respawns left)

                EXAMPLE MISSION
                Includes Required Addon Settings
                Basic Player Organization and Loadouts
                Examples of both Scripted Arsenal Options
                Example of Support Vehicle Options
                Pre-made FARP
                Briefing Template (briefing.sqf)
                TG Info In-Game Billboards
                TG Info Briefing (full primer ect...)
                TG Info Map Markers
                Commented description.ext options
                Last edited by Unkl; 09-17-2018, 07:07 PM.
                |TG189| Unkl
                ArmA 3 Admin
                189th Infantry Brigade Member
                SUBMIT A RIBBON NOMINATION OR CONTACT AN ARMA ADMIN
                "Tactics in action can not exist if there is no action." - Scout

                Comment


                • #9
                  Let me know if you need help with comments, I am happy to flesh them out if you want to just leave small blurbs. I enjoy that kind of thing.


                  Current ARMA Development Project: No Current Project

                  "An infantryman needs a leader to be the standard against which he can judge all soldiers."

                  Friend of |TG| Chief

                  Comment

                  Connect

                  Collapse

                  TeamSpeak 3 Server

                  Collapse

                  Twitter Feed

                  Collapse

                  Working...
                  X