Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Posts posted by terox

  1. I have no idea why i received a notification for this thread today, which was from way back last year but I did

    Shameful thread replies from some of you.

    I didn't read all of it so might not have grasped the full story.


    From what I can gather from your question.

    Basically anything #included from the description.ext or any config file in any addon is run before anything else so it doesn't make any difference to performance of the mission other than load time of the mission which unless its thousands and thousands of lines of config will be insignificant.

     All this code is run before even 'preinit' code. Well before the mission starts, before the mission.sqm, before any preinit code.



    You can actually #include anything.***  .hpp .h or.someweirdextensionname so its not the extension you use but where it is called from that defines how it is run


    .sqf speed depends on the quality of the code and whether is is precompiled once and saved into memory as a function before it is called or whether is is run say from the init.sqf tree where is is compiled and run every time it is called.

    Is there a difference between spawning a precompiled function (Useful if that function has a sleep command)  or calling? (I dont know)



    EDIT. I just realised i replied earlier in this thread on page 2

  2. Not within the engine itself

    You could write a powershell script that is run as part of your start up procedure. It could search for an entry in your server.rpt file for a diag_log entry  which defines the mission name or some token string that you could use to work from.


    For example, the first entry in  a pre init function

      diag_log text "!!**!!";
      diag_log text format["|=========================  %1. %2 =========================|", missionName, worldName]; // stamp mission name to .rpt
      diag_log text "";


    So reading from the end of the file backwards until it finds the token searchable string eg "!!**!!"  and then read the line after to compare with a list you have or something like a label "MISSION_A"  which you can then replace the old config file with a newly created one with  the correct cycle list you need

    and then start the server.


    You would have to take into consideration things like dealing with older rpt files, mission filename changes etc



    Code something like a switch

    string = switch(Tokenname)
              "class Missions 
                   class Mission01 { template = Mymission1.Altis; difficulty = "veteran"; class Params {}; }; 
                   class Mission02 { template = Mymission2.Altis; difficulty = "veteran"; class Params {}; };
              "class Missions 
                   class Mission02 { template = Mymission2.Altis; difficulty = "veteran"; class Params {}; }; 
                   class Mission01 { template = Mymission1.Altis; difficulty = "veteran"; class Params {}; };
    New-Item D:\somepath\server.cfg

    or have a set of configs already written but with .txt  extension and rename the extension or copy and rename the required .txt file as the new server.cfg


  3. On 11/17/2020 at 6:12 AM, n0sferatoo said:


    How can I disable Lambs Danger on specific unit/vehicle in 3D editor?


    On 11/17/2020 at 9:48 AM, [VW]Wrath said:

    There is an option in the units attributes to disable lambs I believe. I don't think it's there in a vehicles atteibutes but it should be under lambs settings in an infantry units.



    So in a scenario where this is run as a serverside mod only, is there a setvariable commands available for example ' Group this setvariable ["LDFSM",FALSE];  'that a mission developer could place in the groups init field to stop the group from running the fsm for specific groups. (Would also help during dynamic group creation as well)



    Apart from that, this is a pretty good improvement to the standard BIS FSM. So thank you for that.

    • Like 1

  4. the order of placement in the description.ext does not make a difference

    Having the incorrectly defined class header at most throws up an error in the rpt file

    You can completely delete that header class with no effect on the mission

    NOTE: Header class can also be defined in the mission editor under the "Attributes/Multiplayer" tab


    If your server is having issues loading so that you cannot connect based on player slots, first thing I would do is remove all of the custom missions from your mpmissions folder on the server to some temporary folder (NOT A SUB FOLDER OF MPMISSIONS)

    Then try loading a BIS mission


    If that fixes it add a selection of missions at a time un til you narrow the issue down to a batch/single mission/

    If you cannot connect with no custom missions loaded, then its a server configuration issue.

  5. there are 2 places that define how many players can join the server/mission. The description.ext is not one of them.

    The class header in the description.ext is afaik only used to display information on the server browser.

    So the actual number of players allowed to join the server/mission is defined in:

    1. The mission.sqm (Mission editor) and is based on the number of playable units you have defined in each unit you placed on the map
    2. In your server config defined by  "MaxPlayers"


    The description.ext should be placed in the root of the mission folder, same location as the mission.sqm

  6. you mean create a virtual link to a different none root file structure, if so



    if you mean define the mods the server will run then -mod= just like on the client, or -servermod= for serverside only mods

    afaik, and I dont do this, you can have the server subscribe to  steam mod collections. I would imagine this auto updates then

    I prefer manually controlling content on the server, or rather via a complex set of updating scripts based on a master mod install

  7. you will need to learn about locality, which is basically where code needs to be run relative to the objects it is referencing

    The command ref defines where code should be run, eg locally to the object only or on any machine, server only etc

    You will also need to learn about the various switches that can be used to filter where the code is run, such as  





    This is a steep learning curve until you grasp the concept and start understanding locality issues

    • Thanks 1

  8. V.02 (Date: 24/5/2020)

    Removed the requirement to #include "Txu_Info\CfgBaseDefines.hpp"

    This file has been completely removed.

    The default Gui class bases are no longer inherited from, this makes it much easier to import this into existing missions that define their own GUI Base classes

    and should not conflict with any existing Gui definitions


    • Like 1

  9. Have i seen scripting errors in rpt files ? Yes.

    Have i seen that error? No

    Where is it, ? Don't know do a mass search for a string in the mission file. _OldCompat.

    Addon scripts are failing because i presume you are calling them incorrectly, syntax errors, missing ";" at end of lines etc



    0 spawn compile preprocessFileLin

    Looking at the rpt am assuming somewhere you are trying to add an  Eachframe missioneventHandler

    • Like 1

  10. I have a neat little system that opens external links from your mission briefings page.

    Most important use I can think of and is working.

    Teamspeak AutoJoinServer

    1. Click on link to join teamspeak.
    2. Starts up their teamspeak app if it is not already running
    3. Auto joins them to your teamspeak server
    4. Adds a bookmark to their TS client


    Can also be used to

    1. link to your addons or community page
    2. Direct link to a download such as a clientside pack



    Only drawback it has to be inserted into a mission, there is no way to auto inject the code as it uses config classes defined in the description.ext

    ENJOY !!

  11. What is this.

    Example MP  mission that has 4 working configurable clickable buttons in the briefing.

    Purely VANILLA, no addons

    These buttons can be configured to

    • Open an external web page in your default browser
    • Start and connect a client to your Teamspeak server ( If they have Teamspeak installed )
    • Download a file
    • And most likely also allow you to link to your discord channel (not tested)


    No issues found while running with an anti virus and doesn't interrupt Arma

    (Tested in full screen mode with multiple monitors)






    Download Example mission and source code

    Following download has  a working packed (pbo) mission file

    and the source files


    (see changelog)


    The example mission will (If you click the links)

    (Please don't spam them)

    Allow you to

    • Join my teamspeak server
    • Open up the teamspeak client download page
    • Open up our website front page
    • Download our clientside addon pack



    1) Copy the TXU_Info folder into the root of your unpacked mission folder

    2) Add the following lines to your Description.EXT


    #include "Txu_Info\CfgControls.hpp"
    class cfgFunctions
    	#include "Txu_Info\cfgfunctions.hpp"


    If your CfgFunctions class already exists then just copy the "#include" line as seen above

    3) Open  the TXU_info\CfgControls.hpp

    Edit the txt= and url= entries for the 4 button classes in there

    and your done.


    Also if your mission doesn't have a briefing like for example OPEX, you can comment out the 

    TXU_INFO_FrameEHId = addMissionEventHandler ["EachFrame",{[] call TXU_INFO_fbriefingEH}];



    //TXU_INFO_FrameEHId = addMissionEventHandler ["EachFrame",{[] call TXU_INFO_fbriefingEH}];


    so that it doesnt attempt to display in the initial briefing screen



    You can ad parameters to your Teamspeak URL

    For example, automatically add a bookmark to the players Teamspeak Client as well as passwords, default channels etc


    Complete format:

    • ts3server://ts9.teamspeak.cc?port=9987
    • &nickname=UserNickname
    • &password=serverPassword
    • &channel=MyDefaultChannel
    • &channelpassword=defaultChannelPassword
    • &token=TokenKey
    • &addbookmark=SomeBookmarkText

    Parameters are optional. In most cases, specifying the host and port should be sufficient. Nicknames usually should not be specified, leave this to be configured by the users in the client. So a common URL would look like this: ts3server://ts9.teamspeak.cc?port=9987

    Or simplified if only the port is given: ts3server://ts9.teamspeak.cc:9987



    The orginal concept and a working example was by Larrow
    His original post 
    He is the one that deserves the credit for this.

    His original version only had 1 button and wasn't available in the initial briefing screen.

    My version has 4 buttons (I cant see you needing more than 3 really)



    The system uses classes to create buttons that are defined in the Description.ext environment.

    This is the only way I can see to pass an external  URL link.

    For that reason it cannot be injected into the client using a serverside addon.

    So the only way to get this to work is as part of the mission file.

    That's a lot of editing for server admins and their mission devs



    If someone better at coding than me wants to rip this and optimise it more, feel free, I'll happily update the example mission and re update it.


    ENJOY !



    V.01 (Date: 18/5/2020)

    File: TXU_info\f\fmapEH.sqf Line 20

    Changed from    






    V.02 (Date: 24/5/2020)

    Removed the requirement to #include "Txu_Info\CfgBaseDefines.hpp"

    This file has been completely removed.

    The default Gui class bases are no longer inherited from, this makes it much easier to import this into existing missions that define their own GUI Base classes

    and should not conflict with any existing Gui definitions



     (Date: 22/3/2022) Updated link was http now https





    • Like 4
    • Thanks 3

  12. Great Find, thank you Larrow.

    If you use missioneventhandler oneachframe, this will allow the link to work in the initial briefing, not after the mission has started


    Am dabbling with this and have success passing an auto start teamspeak and link to my teamspeak button

    Need to remove the oneachframe EH after succesfully adding the button and some more tweaking




    Now have a working example for easy integration into your missions..




  13. 1 hour ago, usamarine6600 said:

    a3_exile_occupation\scripts\occupationLog.sqf..., line 10



    so at either line 9 or 10 in that script a value is being expected for a variable that has not yet been defined

    so something like

    _a = _b;

    and _b has not been defined so _a has no value


    You may be better asking the question in the scripting forums or on the exile mission thread

    • Like 1

  14. There isn't much of a pvp scene anymore, at least not in the sense of anything like the old cft, c&h leagues that used to be run during OFP times.

    You will be able to find the odd king of the hill style server but afaik I have none to recommend that I think are run well

    Even the milsim side of things isn't as strong as it used to be, there is a lot more casual game styles like Altis life and other stuff i never even look at.

    If you want good coop there are still a lot of decent communities around and the game engine itself is way better that OFP with the exception of the AI not following orders to the letter like they used too.

    The latest island Livonia that BIS released is by far their best yet, and the previous jungle one Tanoa is also very very good, so I would recommend the DLC's just for that.

    Teamspeak is still the most popular comms system for milsim, with some communities trying to do it on  Discord.


    Hope that gives you an idea what to expect

  15. Bug report v1.9

    File:  Units\UnitClasses.sqf

    Line: 475

    Var name should be a3e_arr_ComCenDefence_lightArmorClasses




    This is the var for the next DLC if then statement


    so getting undefined var error and no marshalls spawning etc


    a3e_arr_ComCenDefence_heavyArmorClasses = [
        if(Param_UseDLCTanks==1) then {
            a3e_arr_ComCenDefence_lightArmorClasses pushback "B_AFV_Wheeled_01_cannon_F";