Jump to content

terox

Member
  • Content Count

    2415
  • Joined

  • Last visited

  • Medals

Everything posted by terox

  1. It was suggested by Tankbuster that the following may be of use to you. Zeu Debugging Tutorial & Foundation Template Last updated 17th September 2014 Introduction Everyone that writes code suffers from bugs and we all get frustrated trying to trace the cause. This tutorial is an attempt to walk you through some methods to achieve that. I have also attached a Foundation template that has a debugging system implemented. More on that later. You may find the following tools and bookmarks useful, these are all essential to developing missions and am sure most of you have these or similar alternatives Preparation How do I know I have an error in the first place? There are 3 areas where you can capture errors Ingame, where you dont see the effect you are expecting A black dialog pop up box Rpt file -ShowScriptErrors You need to add -ShowScriptErrors to your command line startup params. This will enable the popup black dialog box if a scripting error occurs. RPT File This is the basic logging file that arma3 dumps too. It is full of spam from B.I, however the more you read it the more familiar you get with their spam, which makes it easier to filter out the rubbish. Any popup messages that -showscripterrors displays are always dumped to the rpt file By default, your RPT file can be found in Windows 7 & 8 Users: c:\Users\Your Username\AppData\Local\Arma 3\You may need to enable hiddenfiles to see this folder If a -profile is set, then the RPT will be created there instead Tools & Reference material Script editors Poseidon Script editorPBO Tools Mikero's Eliteness3.17.0.11.Installer.exe or any later released versionBookmarks Add these links to your Bookmarks, you will constantly need to refer to them while coding your ArmA 3 Projects Arma 3: Scripting Commands A3 Scripting Commands by Functionality Arma 3: Event Handlers Arma 3: Event Scripts Arma 3: User Interface event handlers Arma 3: Code Optimisation BIS Official List of Arma 3 Classnames Zeu A3 classnames List BIS Functions Library (Arma_3) Killzone Kids scripting tutorial blog (Arma_3) Zeu Foundation Template ZEU Foundation Template Tutorial The art of debugging is being able to track down the reason why a piece of code isn't working as intended. Why do they happen in the first place? Types Of Error Syntax error: you made a spelling, grammar or typing mistake Logic error: You made an assumption that wasnt correct Locality error: You ran code on the wrong node (Server, client etc) Timing error: You expected something to have hapened that hasnt occurred yet LOGICAL ERROR You assumed something was in a particular state when in fact it wasn't Dont assume anything is in a certain state, check it first before using it Real World Silly example. Don't assume a door is open, It can have other states, e.g: It could be closed It could be closed & Locked It could be in an interim state between open and closed It could not exist In the real world, your brain would have processed all of this, even to the point where you would have tried the door handle if it were closed to see if it was locked (Common sense (assumptions) cannot exist in the realms of programming, only definite states can exist. (On. Off or Doesnt exist) Coding example if (Isnil "MyVariable")then{MyVariable = 0}else{MyVariable = MyVariable + 1};if Myvariable does not exist, then define it as having a value of 0. if it does exist, add 1 to it LOCALITY ERROR This is where you need knowledge on the engine's idiosyncrasies. Only experience will get you there Some code has to be run local (on the same machine) where the object is local too Some code can be run remotely, eg from a different machine the object is local too If it can be run remotely and you need to just run it on 1 machine, ideally the server Otherwise for 10 players + 1 server you would be sending 11*10 sets of instructions over the network instead of just 10 In a lot of cases, the BIS Wiki has small icons at the top of each page for the comref entries These will give you information on where code should be run for that command AL: Arguments of this scripting command have to be local to the client the command is executed on AG: Arguments of this scripting command don't have to be local to the client the command is executed on EL: Effects of this scripting command are NOT broadcast over the network and happen only on trhe computer where executed EG: Effects of this scripting command are broadcast over the network and happen on every computer in the network Lets take a look at this example addWeapon AL: Arguments of this scripting command have to be local to the client the command is executed on EG: Effects of this scripting command are broadcast over the network and happen on every computer in the network The arguments for this command are 1) The unit or vehicle (Object) that we are going to add a weapon to 2) The classname of the weapon (A "string") that we are going to add We need to run the code on the machine where the unit is local to. When we do run the code correctly, every machine will see that unit with that weapon TIMING ERROR If some code requires other code to have defined something and that code hasnt run, an error will occur. Example, the paramsarray is defined on the server before preinit whereas the paramsarray is defined on the client a few milliseconds after preinit has terminated Therefore you cannot run any code requiring paramsarray on the client until post-init (I'll explain the timings more clearly later) SYNTAX ERROR This can be the most frustrating of issues, searching for a missing semi colon or terminating bracket etc This can be reduced by good formatting of your code or using a good text editor that highlights paired brackets etc I personally use Poseidon, there are plenty of alternatives All these errors can be debugged using very simple lines of code which rely on just TWO commands diag_log systemChat There are others, but they all have some form of issue which reduces their effectiveness, so for simplicity, lets stick with these two How To Debug Lets use the following code example throughout the rest of this tutorial The issue is we don't know if the player is being setcaptive False. Sometimes we think he is but sometimes he never is?. And i'm new to scripting so i don't really understand this command. // INIT.SQF Player setcaptive TRUE; [20] execVM "Myscript.sqf"; // MYSCRIPT.SQF _myvariable = _this select 0; //(this should be the number 20) _myNewvariable= _myvariable + 5; //(this should be the number 25) _object = Leader (group Player); waituntil {alive player && Player distance _object < _myNewvariable}; Player setCaptive FALSE; In all the following walk through's I will give examples for both systemchat and diag_log No.1 Prove the script is running We do this by adding code that will give us a visual indication that the script is running // MYSCRIPT systemchat "DEBUG: AT START OF SCRIPT"; // This will dump text to the screen diag_log text "DEBUG: AT START OF SCRIPT"; // This will dump text to the rpt file _myvariable = _this select 0; //(this should be the number 20) _myNewvariable= _myvariable + 5; //(this should be the number 25) _object = Leader (group Player); waituntil {alive player && Player distance _Object < _myNewvariable}; Player setCaptive FALSE; systemchat "DEBUG: AT END OF SCRIPT"; // This will dump text to the screen diag_log text "DEBUG: AT END OF SCRIPT"; // This will dump text to the rpt file If you see "DEBUG: AT START OF SCRIPT" on screen, or in the .rpt file, you know the script starts If you see "DEBUG: AT END OF SCRIPT" on screen, or in the .rpt file, you know the code has been run and has got to the end of the script There is an issue when using systemchat, or any other chat, side, global etc. This being that any code that is run at pre-Init or before Time == 0 (A little on this later) will not dump any chat messages to the screen. To work around this problem, we need to "spawn" this code as in the example below [] spawn {sleep 3; systemchat "DEBUG: AT THIS POINT";};You should then see this 3 seconds after you launch the mission from briefing No.2 Return some variable values We now know the script is running, but something is amiss. Sometimes we see the "DEBUG: AT END OF SCRIPT POINT" immediately, sometimes we dont see it at all. Perhaps the group leader is too close, maybe the distance measurement is wrong ? Okay, so lets see what values we actually have So we would now use a format command, as in the example below // MYSCRIPT _myvariable = _this select 0; //(this should be the number 20) _myNewvariable= _myvariable + 5; //(this should be the number 25) _object = Leader (group Player); waituntil {alive player && Player distance _Object < _myNewvariable}; Player setCaptive FALSE; systemchat format ["myvariable has a value of %1 ----- MyNewvariable has a value of %2",_myvariable,_myNewvariable]; diag_log text format ["myvariable has a value of %1 ----- MyNewvariable has a value of %2",_myvariable,_myNewvariable]; We could have used seperate lines to return each variable value, in this example we just combined them into 1 systemchat or diag_log First time we run it, we got the text on screen , it stated myvariable has a value of 20 ----- MyNewvariable has a value of 25 That seems correct, however the second time we run the mission, we didn't see any text on screen or in the .rpt file So whats going on ? No.3 Testing a condition Could it be the condition, waituntil {alive player && Player distance _Object < _myNewvariable}; how do we test it When you evaluate a condition that is correctly written it will return TRUE or FALSE. Anything else is wrong We can see this value the same way we return any other value using a format command // MYSCRIPT _myvariable = _this select 0; //(this should be the number 20) _myNewvariable= _myvariable + 5; //(this should be the number 25) _object = Leader (group Player); systemchat format ["The condition returns: %1",(alive player && Player distance _Object < _myNewvariable)]; diag_log text format ["The condition returns: %1",(alive player && Player distance _Object < _myNewvariable)]; waituntil {alive player && Player distance _Object < _myNewvariable}; Player setCaptive FALSE;Good, at least we get a "The condition returns: FALSE" in the .rpt and on screen when we test Oh, next time we run it, it returns TRUE, why are we getting these inconsistencies Well, we have proved. 1) The script runs every time 2) The distance values are correct 3) The condition seems to be working, but not as expected The only value we havent checked is the _object, so lets check that No.4 Checking for the type of variable We can check what value a variable has, we can also check what type of variable it is using the typeName command Maybe the object isn't an object, maybe its something else, array, side string and therefore we cant get a distance measurement I am also getting desperate now, so i'll return all the values just to make sure and heavily debug this script. No matter what, now i should see where the error is (Diag_log code omitted for clarity) // MYSCRIPT systemchat "DEBUG: AT START OF SCRIPT"; _myvariable = _this select 0; //(this should be the number 20) _myNewvariable= _myvariable + 5; //(this should be the number 25) _object = Leader (group Player); systemchat format ["myvariable is Type %1, Value %2", typename _myvariable, _myvariable]; systemchat format ["myNewvariable is Type %1, Value %2", typename _myNewvariable, _myNewvariable]; systemchat format ["Object is Type %1, Name %2", typename _object, name _object]; systemchat format ["The condition returns: %1",(alive player && Player distance _Object < _myNewvariable)]; diag_log text format ["The condition BEFORE returns: %1",(alive player && Player distance _Object < _myNewvariable)]; waituntil {alive player && Player distance _Object < _myNewvariable}; diag_log text format ["The condition AFTER returns: %1",(alive player && Player distance _Object < _myNewvariable)]; Player setCaptive FALSE; systemchat format ["Am I captive %1", captive player]; systemchat "DEBUG: AT END OF SCRIPT"; I run the mission, first time goes okay, I wait for the group leader to arrive and all works as expected I run it again and i get the following debug information immediately Ah now i see the problem. , I am the leader of myself and therefore all the conditions are being met immediately. I Need to stop disabling AI when i test Flow of code (Timing) In order to understand any timing errors you need to understand the order in which code is run. Here it is, hopefully simply explained. When a mission is selected and started by the admin, the following events occur in the numbered order A lot of A3 mission devs refer to Time 0 as a key point when discussing at what point code is being run So I shall comment using Time<0, Time==0 or Time>0 to clarify what they mean by this 1) Config stage Addon configs, Description.ext and any #includes will be run at this point 2) Pre init stage (Time < 0) This is run after the description.ext has loaded, players have slotted up and the admin has hit continue (This is initiated from the cfgFunctions class as defined in the description.ext. It automatically runs any function that has a preinit=1 tag Typically only 1 function should have this. This should be the keystone that pre initialises all required Global variables and functions for all later run code Any functions that are called from Unit, vehicle and object init fields in the mission editor (Mission.sqm)should be declared at this point so that they are defined ready for use. 3) Mission.sqm (Time < 0) Any code in the init field of units, objects vehicles is now being processed, starting with the first East unit you placed in the editor 4) Post Mission.sqm (Time == 0) Any code spawned, execvm from Preinit is now being processed and will run its entirety or will halt when it comes across anySleep Waintuntil{} command (Where the condition is not TRUE) B.I's Init.sqf will also run at this point and halt at any code with sleep or waituntil (if the waituntil condition is not true). 5) Briefing is loaded (Time == 0) 6) Admin starts the mission (Time > 0) 7) Post INIT (Time > 0) Any code that has halted waiting for a condition to become true or a sleep will now continue to run. From now until the end of the mission, any code you have will run under the following condition For every frame every script that is running will run for a maximum of 3 milliseconds If it hasn't completed by that time, it will halt until the next frame and then continue to run for a further 3 milliseconds It will continue to do this until it terminates A Little about code optimisation Some general rules: 1) If a script is being called more than once a) compile preprocessfilelineumbers the function at pre init stage B) Then either 1) call it every time you want it to run (If it doesn't contain any sleep or waituntil commands) 2) Spawn it every time you want it to run (If it DOES contain any sleep or waituntil commands) if you use Execvm for this code, every time it is run, it compiles first then processes the code If you call precompiled code, it simply just processes from code stored in ram which is much faster 2) If a script is only being called once, then you could execVM, spawn or call it (There probably isn't much difference) if you precompiled then called code that is only being run once, then you can redefine the function as =nil; to remove it from memory We can only assume that execvm code is removed from memory by the RV engine after it has run 3) try to avoid loops, especially long ones (3 milisecond rule) 4) Use eventhandlers to reduce the requirement for loops 5) Try wherever possible to call or spawn a function instead of execVM or spawn a script 6) Keep the total run time of a function below 3 milliseconds wherever possible Dont be too concerned if the code runs longer than 3ms, its just a best practice to try and avoid, which is not always possible 7) Dont be concerned about the length of time preinit takes, it is after all preinit and not mission real time and anything you can prepare here is good for later If you haven't fallen asleep reading this yet, there's something a little extra to help you Zeus Foundation template What is it ? Its a foundation template that would be a good starting point for anyone designing their own template for whatever mission you may want to develop Its basically a structured system for running code It has the following functionality Structure to thread (route-filter) code to the appropriate node, eg server, headless client, player, jip etc Ability to mass Debug user defined "systems" or "modules" Defines some basic switching variables for usage in your code So if you want to have only a JIP player run specific code, there is a structure within this template to place that code. Every script is heavily commented, so it shouldn't take long to figure out what does what Debug System The debug variables are defined in the Description.ext in the Txu_Debug class This can easily be switched to a .sqf file, such as the pre init. I just defined it here because this is part of a template I am developing where all configuration is done on #include.hpp files (Use a copy of the "script_template.sqf" for any new scripts you create, editing any necessary content). At the start of each script two variables need to be defined, _sy and _sc _sy defines the "System/module" that the script is part of. It is used as an identifier and as a filter for the debugging output _sc is a name for the script, typically this would be the actual file name less the ".sqf" and is used as an identifier in the debug log If debugging is enabled and the "System/module" is being monitored, the following will be logged Script start any variables passed to the script any user defined variables you wish to monitor the end of the script diag tick time, recorded This is the value that comes after the "@" symbol in the debug logs Where the log is sent is user defined and can be either RPT file via diag_log Systemchat both What system are being logged/debugged is defined by the strings listed in the Txu_DebugSys array For example, in this template you have What this means is that any script with an _sy variable equal to anything in the Txu_DebugSys will log data to the Txu_DebugLog output As it is set now,This will output data from every system that this foundation template has. Rather than delete a system from this array, simply comment it out. The rpt file is by far the best logging system, allowing you to also browse the server log if you have access to it. It also provides a permanent record of data flow and returned values etc The systemchat is good for live monitoring (Open up the in-game chat by typing "/" and key "PAGEUP" to scroll through previous messages) Mission Code flow for this template This is an example of the mission code flow for the Foundation template I linked too in this thread It is a cleaned up version of the debug log dumps to the rpt file, showing the start and end of each script in the order in which they are run The value given after the "@" symbol is the diag_ticktime I have added comments with the tag #****** which explains at what point in the code flow we are at ### PRE INIT STARTING "|========================= ZEU_FOUNDATION_TEMPLATE_2014.Stratis =========================|" "------ CORE ------ fn_pre_Init ------> START : @ 4439.49" "------ RESPAWN ------ fget_RespawnType ------> START : @ 4439.49" "------ RESPAWN ------ fget_RespawnType ------> END : @ 4439.49" "------ CORE ------ init_Modules ------> START : @ 4439.49" "------ EXAMPLE ------ init_fnc ------> START : @ 4439.49" "------ EXAMPLE ------ init_fnc ------> END : @ 4439.49" "------ CORE ------ init_Modules ------> END : @ 4439.49" "------ CORE ------ fn_pre_Init ------> END : @ 4439.49" ### MISSION.SQM IS RUNNING any code run from the unit's init field will be shown here ### POST MISSION.SQM (TIME == 0) "------ PARAMS ------ fprocess_params ------> START : @ 4439.84" "------ PARAMS ------ fset_params ------> START : @ 4439.84" "------ PARAMS ------ fset_params ------> END : @ 4439.84" "------ PARAMS ------ fprocess_params ------> END : @ 4439.84" "------ CORE ------ init_common ------> START : @ 4439.84" "------ CORE ------ init_common ------> END : @ 4439.84" "------ CORE ------ init_Server ------> START : @ 4440.69" "------ CORE ------ init_Server ------> END : @ 4440.69" "------ CORE ------ init_Client ------> START : @ 4440.69" "------ CORE ------ init_Client ------> END : @ 4440.69" "------ EXAMPLE ------ init_Common ------> START: @ 4441.03" "------ EXAMPLE ------ init_Common ------> END : @ 4441.03" "------ CORE ------ BIS Init.sqf ------> START : @ 4441.07" "------ CORE ------ BIS Init.sqf ------> END : @ 4441.07" "------ EXAMPLE ------ init_Server ------> START: @ 4441.08" "------ EXAMPLE ------ init_Server ------> END : @ 4441.08" "------ EXAMPLE ------ init_Client ------> START: @ 4441.08" "------ EXAMPLE ------ init_Client ------> END : @ 4441.08" ### BRIEFING IS LOADED RPT Dump in full Here is the full rpt file less BI spam showing additiona variables being returned "|========================= ZEU_FOUNDATION_TEMPLATE_2014.Stratis =========================|" "------ CORE ------ fn_pre_Init ------> START : @ 4439.49" IsDedicated: false IsServer true HasInterface true IsMultiplayer true Txu_Client true Txu_HC false Isnull Player true Txu Debug System : ENABLED Txu Debug Logging: ["PARAMS","RESPAWN","EXAMPLE","CORE"] "------ RESPAWN ------ fget_RespawnType ------> START : @ 4439.49" "------ RESPAWN ------ fget_RespawnType ------> END : @ 4439.49" "------ CORE ------ init_Modules ------> START : @ 4439.49" "------ EXAMPLE ------ init_fnc ------> START : @ 4439.49" "------ EXAMPLE ------ init_fnc ------> END : @ 4439.49" "------ CORE ------ init_Modules ------> END : @ 4439.49" "------ CORE ------ fn_pre_Init ------> END : @ 4439.49" "------ PARAMS ------ fprocess_params ------> START : @ 4439.84" " PARAMS \ fprocess_params......" " --> ParamsArray : [-100,450]" "------ PARAMS ------ fset_params ------> START : @ 4439.84" "------ PARAMS ------ fset_params ------> DATE Option selected : @ 4439.84" " PARAMS \ fset_params......" " --> Hour selected : 4" " --> Minute selected : 50" "------ PARAMS ------ fset_params ------> END : @ 4439.84" " PARAMS \ fprocess_params......" " --> ParamCompile : ['DATE',450]call Txu_Core_FsetParams" "------ PARAMS ------ fprocess_params ------> END : @ 4439.84" "------ CORE ------ init_common ------> START : @ 4439.84" " CORE \ init_common......" " --> Txu_PREInit : true" " --> Txu_client : true" " --> Txu_HC : false" " --> Txu_JIP : false" " --> IsDedicated : false" " --> IsServer : true" " --> HasInterface : true" " --> IsMultiplayer : true" " --> IsNull Player : false" " --> Txu_MPINIT : true" "------ CORE ------ init_common ------> END : @ 4439.84" "------ CORE ------ init_Server ------> START : @ 4440.69" "------ CORE ------ init_Server ------> END : @ 4440.69" "------ CORE ------ init_Client ------> START : @ 4440.69" "------ CORE ------ init_Client ------> END : @ 4440.69" "------ EXAMPLE ------ init_Common ------> START : @ 4441.03" "------ EXAMPLE ------ init_Common ------> END : @ 4441.03" "------ CORE ------ BIS Init.sqf ------> START : @ 4441.07" "------ CORE ------ BIS Init.sqf ------> END : @ 4441.07" "------ EXAMPLE ------ init_Server ------> START : @ 4441.08" "------ EXAMPLE ------ init_Server ------> END : @ 4441.08" "------ EXAMPLE ------ init_Client ------> START : @ 4441.08" "------ EXAMPLE ------ init_Client ------> END : @ 4441.08" Changelog v1.1: 17th September 2014Added a link to Killzone kid's Scripting Tutorial Blog Added instructions for -showscripterrors Added information on where to find the RPT file
  2. zeu_tkLog AUTHOR : Terox (terox_@hotmail.com) ADDON REQUIREMENTS : None INSTALLATION : SERVER ONLYClients should not have this file, it will not run on their machines, hence no Bikey If you do not have any mod folders already in use on your server, use the one that is provided in the download and run the following command line argument -servermod=@zeu Alternatively, copy the zeu_tkLog.pbo found in @zeu/addons into an already existing mod_folder/addons on the server FUNCTION : This addon logs PLAYER team kill events on the server's rpt file and dumps information about the event on the clients screenThe code the clients require is passed to the clients by the server when the mission starts, or to JIP players when they join LimitationsThis works of an Mpkilled event handler, so for missions that use "revive" SYSTEMS, where the players aren't actually killed, it will not trigger These revive systems tend to use a hit event handler to trigger an unconscious state. Ideally, if you want to implement a team kill system for these, you would be better editing the revive scripts inside the missions Example of the details logged .RPT FILE (For a killer who is on foot) For a killer who was in a vehicle It returns any driver, gunner or commander, as in the example below ONSCREEN (For a killer who is on foot) For a killer who was in a vehicle It returns any driver, gunner or commander, as in the example below Download: http://zeus-community.net/important/hosted/zeu_tklog.zip Changelog v1.0 released 7th Apriil 2016 v1.2 released 15th April 2016 Fixed Linux issue cfg functions preprocess failing on Linux server
  3. CONTENTS Setting up your server What you need how you do it Links Information useful Tools Useful Addons Selecting between Stable & Dev Builds, full or Dedi package installs Port Forwarding Battleye Configuration Location of files Server Admin Commands Running Dedicated Server and client on same machine Running multiple servers on one machine Re-locating MpMissions Bandwidth Optimisation Trouble Shooting & Help Best way to use this thread Live chat help What cannot be done Known Issues Example files CONFIG_Vanilla.cfg Arma3.cfg .Arma3Profile Advanced configuration -profiles AutoServer_Restart.bat File Firedeamon Addons and Mods Basic introduction Installation Miscellaneous Downloading & Addon Management Changelog The tutorial is intended for the lowest level of knowledge and skill, I make no apologies to those who think it is patronising. if you do, why are you reading a tutorial :j: LAST UPDATED: Thursday 21st March 2017 up too and including this post ************************************************************************************ IMPORTANT UPDATE (16th March 2017) arma3server_x64.exe 64 (Released 16th March 2017) 1) Update your firewall rules to include the 64 bit binary 2) BattleEye changes 64 bit binary runs the beserver_x64.dll It also needs a BEServer_x64.cfg (Which is simply a renamed copy of your BEServer.cfg If you run an addon server and are having issues, then try running the 32 bit arma3server.exe until the addon makers have fixed their content ************************************************************************************ SETTING UP YOUR SERVER What you need 1 Standalone Windows server (2008 or later) (Sound and GPU not required) 1 Steam Account Ownership of ArmA3 No longer required if installing the server using the the Dedicated server package. (Required for Headless client or full client install) According to this THIS POST you can run the ArmA3server on Win2003 now This is how you do it. Take note. There are additions within these instructions that you may not need, if you only intend running 1 instance of an Arma3 server on your machine However, adding these superfluous commands and content will not be detrimental to single instance servers Directory paths are all customisable but for the sake of this tutorial, all file examples and command lines used will be consistent with the tutorial instructions Login as Administrator: (You will need to run Arma3server.exe as "Administrator" or "System". Battleye requires it.) Install the latest version of DirectX Recommended to install install the 32 & 64-bit 2013 VC++ redist from https://www.microsoft.com/en-GB/download/details.aspx?id=40784 Create the following empty directories D:\Apps\Steam D:\Games\ArmA3\A3Master D:\Games\ArmA3\A3Files Download steamcmd.exe unpack it and save it to your targetted Steam install directory (E.g D:\Apps\Steam) Run the steamcmd.exe. (This will download and install the required steam files to your custom steam directory) Create an ArmA3_Steam_updater.cmd file, (Example shown below) and save it to D:\Games\ArmA3\A3Files Run the ArmA3_Steam_updater.cmd file Just after logging into Steam, the console window will hang and ask for a validation key Steam will have automatically sent you an email with this validation code, which you then need to input at the command prompt The Update console window should then continue to run and install ArmA3 ((DEV or STABLE) version to the target directory as defined in the .cmd file) eg (D:\Games\ArmA3\A3Master) Create a shortcut for the ArmA3Server_x64.exe on the server desktop Add the following parameters to the Target Line in the shortcut tab of the newly created desktop shortcut -port=2302 (Required if running multiple server instances) "-profiles=d:\Games\Arma3\A3Master" -config=CONFIG_Vanilla.cfg -world=empty -mod= -mod= (Exaclty as it looks, an empty mod parameter so it looks something similar to the following "D:\Games\Arma3\A3Master\arma3server_x64.exe" "-profiles=d:\Games\Arma3\A3Master" -port=2302 -config=CONFIG_Vanilla.cfg -world=empty -mod= Add firewall rules for the UDP ports (See below for -Port information) Add firewall rule for the arma3server_x64.exe Create a simple Notepad document called "CONFIG_vanilla.cfg" and save it to the root folder of your ArmA3 install on the server D:\Games\ArmA3\A3Master (See below for ".cfg" content) Then start up your shortcut, check the server runs. (You will see a console pop up in your desktop after a few seconds) Close the console window down, then you will need to edit the following files which will have been created D:\Games\Arma3\A3Master\Users\Adminstrator\Administrator.Arma3Profile D:\Games\Arma3\A3Master\Users\Administrator\Arma3.cfg These files contain minimal content, and require a lot of editing, so to make this easier, there are example files listed below which you can copy n paste from Restart the server Start up your client Arma3 (Running the same branch as the server, (eg Stable or DEV) and you should then be able to see your server in the server browser (Filters are available to reduce the server list) Login to your server using the password you defined in CONFIG_Vanilla.cfg by typing "/" to open the chat window and then type (#login ADMINPASSWORD followed by enter Once logged in you will be presented with a mission list, select one of the missions to start the game Prove the stability of your server by running BIS missions initially before you start adding user made content You should now have successfully installed and be running a stable "Vanilla" (Default) server You can then set up Battleye, The ArmA3 anti cheat system (See the Battleye Configuration section below) *** SUPPORTING INFORMATION *** USEFUL LINKS, TOOLS & ADDONS Open the spoiler for more info TICKETS RAISED that need your Vote SELECTING DEVELOPMENT OR STABLE BUILD Open the spoiler for more info PORT FORWARDING (ArmA3) (Firewalls) Open the spoiler for more info BATTLEYE CONFIGURATION Open the spoiler for more info LOCATION OF FILES (When setting parameters) Open the spoiler for more info SERVER ADMIN COMMANDS Open the spoiler for more info RUNNING DEDICATED SERVER & CLIENT ON SAME MACHINE If you have followed these instructions, the only known issue, is to make sure you start the server up before you start the steam client Failing to do this causes steam port issues and your client wont be able to connect to the server RUNNING MULTIPLE SERVERS ON SAME MACHINE Open the spoiler for more info RE-LOCATING MPmIssions (For example to a dropbox) Open the spoiler for more info BANDWIDTH OPTIMISATION Open the spoiler for more info TROUBLE SHOOTING Open the spoiler for more info EXAMPLE FILES Arma3_Steam_Updater.cmd CONFIG_Vanilla.cfg ****.Arma3Profile Important to note, the defaul;t B.I classes, Regular, veteran cannot be edited, so if you want to run an edited version, then edit the custom class and run that The following config is set to do just that Arma3.cfg ADVANCED CONFIGURATION -Profiles Open the spoiler for more info AUTO SERVER RESTART .BAT File Open the spoiler for more info Firedeamon Open the spoiler for more info ADDONS & MODS BASIC EXPLANATION Open the spoiler for more info WHITE-LISTING / BLACK-LISTING (How does it work) Open the spoiler for more info ADDON SIGNING Open the spoiler for more info INSTALLATION Open the spoiler for more info MISCELLANEOUS Open the spoiler for more info DOWNLOADING & ADDON MANAGEMENT Open the spoiler for more info CHANGELOG Open the spoiler for more info
  4. Zeu_ServerSkill SINGLE PLAYER or SERVER-SIDE Requirement : Latest CBA MULTIPLAYER CLIENT-SIDE Requirement : Nothing LATEST VERSION : v1.05 10th July 2013 NB>> Delete both the testing mission and the addon before installing this new version Recommended Skill Matrix June 28th 2013 (Use the default setting _option=[3,3];) In a multiplayer environment, this addon runs on the server and remotely injects the required code onto the client. This addon will also work in a single player environment, the requirements are the same as for the server This addon effects Editor placed A,I Respawning A.I A.I Created dynamically via scripts Both Serverside and Clientside A.I This may also be useful for headless clients. There are no keys or Bisigns available for it as they are not needed. Players will not need nor should have this addon as it will have no effect unless they host a client-server Why do you need it Currently the Precision and Skill values in the .Arma3Profile when edited have no effect. (This is why the AI are currently so lethal on most servers) This add-on addresses that issue and also adds more fine tuning adjustments for the following skill attributes "aimingspeed" "aimingaccuracy" "aimingshake" "spotdistance" "spottime" "commanding" "courage" "endurance" "reloadSpeed" "general" Configuration is done via a file in the userconfig folder so all you need to do to change any settings, is turn the server off, edit the userconfig file and restart the server. There is no need to break into the addon and start editing internal files In addition to selecting your preferred skill matrix, you can also 1) Define if the client skill will also be altered, (Which is enabled by default) 2) Define if the new skill values are written to the server's .rpt file. (Disabled by default) 3) Define whether the addon is disabled or not (Enabled by default) Test Mission I have also included a small test mission which can be used to verify the AI skill settings for both the server AI and the client AI and the respawning effect LINKS Download It here CREDITS Big thanks to the following for their research on the skill matrix and making it available for use KYUSS, Pavel, Valery, Onkel Bo Changelog v1.02 Added randomisation tolerances Added support for respawning A.I Added single Player support v1.03 Added support for A.I created on the fly via scripts Edited default randomisation and skill settings Further optimisation to the code v1.04 Fixed: Code error causing the addon not to run correctly v1.05 Has been slightly optimised for network traffic Has timing changes to stop any issues with variables been called upon that haven't been received over the network Has a belt and braces system for making sure all A.I are effected The test mission used to verify the installation has been edited and renamed to Zeu_Serverskill_verification.Stratis.pbo. Delete the older version The userconfig remains the same The readme has been revamped, hopefully will be easier for some tom understand the userconfig In addition for those that want to invest some time developing a set of values for the matrix, I have also included the mission i use to test and investigate the values (The docs folder has more information on this) Please note earlier versions of the testing mission to verify installation are not compatible with this version, so please remove the following files before installing this version ArmA3\MpMissions\Zeu_Serverskill_testmission.Stratis.pbo ArmA3\Addons\zeu_ServerSkills.pbo W.I.P This is still W.I.P. fine tuning is continuous, however i am very busy at the moment .
  5. 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 LATEST VERSION Download Example mission and source code Following download has a working packed (pbo) mission file and the source files Txu_InfoLinks.zip (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 INSERTING INTO MISSION 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}]; e.g. //TXU_INFO_FrameEHId = addMissionEventHandler ["EachFrame",{[] call TXU_INFO_fbriefingEH}]; so that it doesnt attempt to display in the initial briefing screen ADVANCED EDITING 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 CREDITS The orginal concept and a working example was by Larrow His original post https://forums.bohemia.net/forums/topic/169501-link-to-website-in-briefing/?do=findComment&comment=3277456 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) LIMITATIONS 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 FUTURE DEVELOPMENT 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 ! CHANGELOG V.01 (Date: 18/5/2020) File: TXU_info\f\fmapEH.sqf Line 20 Changed from if(TXU_INFO_ButtonAdded)exitwith{}; to if(TXU_INFO_ButtonAdded1)exitwith{}; __________________________________________ 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 __________________________________________
  6. 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) { "MISSION_A": { "class Missions { class Mission01 { template = Mymission1.Altis; difficulty = "veteran"; class Params {}; }; class Mission02 { template = Mymission2.Altis; difficulty = "veteran"; class Params {}; }; };" } "MISSION_B": { "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
  7. 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.
  8. 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.
  9. 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: 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 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
  10. terox

    VET_Unflipping

    can be done easily in the debug console Vehiclevar setpos getpos vehiclevar or if you want to add the capability of an engineer addaction using cursorobject
  11. Tutorial: Debugging a server issue This is based on having already installed the dedicated server package or the full client install on your server Have already proved a vanilla install at some stage in the past and the server has been running and hosting missions. if you need help setting up a server, use the following ArmA3 Dedicated Server Tutorial LAST UPDATED: Sunday 7th September 2014 up too and including this post Note to Experienced admins If you see any flaws in the debugging logic, or you have any additional snippets of information to add, please do so. It will be much appreciated What you will need a) Admin Access to the server backend, eg RDP access B) Familiarity with file locations, especially the .rpt file .RPT File locations Wherever you set your -profile to be or C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Arma 3 C:\Users\Administrator\AppData\Local\Arma 3 C:\Users\Username\AppData\Local\Arma 3 ********************************************************************************************************************* INFORMATION YOU NEED TO PROVIDE If you have been linked to this tutorial to give information and data to help solve your issue, this is the information you should provide Restart the server, (load the mission if you can) then copy your newly created *.rpt file (IN ITS ENTIRETY) to pastebin Copy your server config file (Delete your passwords) to your post \ thread and wrap it in a spoiler Copy the bandwidth settings (Users\Username\arma.cfg)to your post \ thread and wrap it in a spoiler tag Give a brief description of your server setup (Colocated, rented, home based etc Give a brief description of the hardware and o/s it is running on Give as much detail as possible on what issue you have and what debugging steps you have already taken to try and solve it and then we actually have some information we can work with to try and help you out ********************************************************************************************************************* ISSUE: Server isnt starting How to logically progress to find the issue STAGE 1: PREPARATION Take the server instance back to a clean vanilla install Create a desktop shortcut on the server that runs pure vanilla , nothing else Typically this will look something like -port=2302 "-profiles=d:\Games\A3\A3ServerNo1" -config=Config_Vanilla.cfg -exthreads=1 -mod= Take note of the empty -mod param, this is important Move the contents of your MpMissions folder to a backup folder (NOT a subfolder of your MpMissions) Move the contents of your keys folder to a backup folder (except the a3.bikey) EDIT the config_vanilla.cfg or whatever you have called the server config file Comment out the Mission cycle class completely Temporarily Disable BattleEye (Avoids any BE issues with the client on connect) Temporarily disable verify signatures (Avoids any addon issues with the client on connect) Add a temporary password so only you can connect to the server delete or clear out our .rpt files. (Lets start of clean) Run your steam updater and verify the game cache (You could delete the folder that looks something like "5d173415bc27ec53aaa2c78445046a1dcb3c69e3" this will remove the steam logs that define the version installed etc causing a complete re-install and overwrite) STAGE 2: INITIAL BOOT UP Start your server from the desktop shortcut you created. Wait for it to show up on the Steam browser list Login as the only client and try starting one of the B.I hard coded missions What should happen You should see the console window popup as the server starts (See example output below) You should see a newly created rpt file, leave it a minute before you open it up, to give it the time for a fully booted the server to finish writing to this log. A good clean vanilla install .rpt file should look similar to the Example RPT file listed below (before any players attempt to connect) and you should be able to see the server in the steam server browser (eventually) Login and start a mission If FAIL Reinstall ArmA3 on the server (Dedi package or full client install) ? You have omitted to do something previously stated in this tutorial Check the .rpt file again for any obvious issues (It will now be a much bigger file with a lot of spam entries to read through) IF SUCCESS: goto STAGE 3 STAGE 3: BIKEY DEBUGGING Issues with .bikeys can cause the server not to fully load or start Symptom: The server will hang just as it starts to contact Steam. The last RPT entry will be (Thanks to Killswitch) Move the backed up Bikeys to the root keys folder Delete your rpt file. (Not necessary but can avoid confusion when you start losing focus due to frustration) Restart the server using the desktop shortcut Check the .rpt file (for existence and content) Login as the only client and try starting one of the B.I hard coded missions IF FAIL: Remove the bikeys, repeat Stage 3 but only add a few bikeys at a time, continue doing this until you find the bikey that is causing the issue. Check the .rpt file again for any obvious issues (It will now be a much bigger file with a lot of spam entries to read through) IF SUCCESS: goto Stage 4 STAGE 4: MpMissions DEBUGGING The Mission.sqm, Description.ext and any files #included from the description.ext are read by the server when the first player connects after a server restart. if there are any critical errors in these files, then the server will not allow you to fully connect. It may be possible to see these errors in the rpt file, as the server should write to the .rpt when you connect. You will typically get this issue after restarting the server, where you haven't changed any server files, command lines, addons etc. A mission that has been recently uploaded could be causing this issue. To prove/disprove Move all the backed up MpMissions back into your server install MpMissions Delete your .rpt file Restart the server using the desktop shortcut Check the .rpt file (for existence and content) wait for it to be seen in the steam browser Login as the only client and try starting one of the B.I hard coded missions IF FAIL: Remove the MPMissions, repeat Stage 4 but only add a few mission.pbo's at a time (Take note it is most likely going to be one of the newest uploaded missions to then server). Check the .rpt file again for any obvious issues (It will now be a much bigger file with a lot of spam entries to read through) IF SUCCESS: go to Stage 5 STAGE 5: SERVER.CFG (Config_Vanilla.cfg) DEBUGGING The only issue I am aware of in this file that stops the server from fully loading, is the mission cycle class If the file name listed is not exactly the same as the file name on the server, it will cause the server to hang on an island loading screen This is why in Stage 1: PREPARATION, you should have commented this cycle class out Uncomment the Mission Cycle class in the above mentioned file Delete your .rpt file Restart the server using the desktop shortcut Check the .rpt file (for existence and content) wait for it to be seen in the steam browser Login as the only client and try starting one of the B.I hard coded missions IF FAIL: Check the syntax of the mission cycle class and any mission files listed in there. IF SUCCESS: go to Stage 6 STAGE 6: ADDON DEBUGGING Be aware that some addons also utilise a userconfig folder, so make sure where ever these are needed that they are present, otherwise the server wont fully boot Issues here should be fairly easy to see in the rpt file. Edit the desktop shortcut to run all the -mod folders that you were initially running Delete your .rpt file Restart the server using the desktop shortcut Check the .rpt file (for existence and content) wait for it to be seen in the steam browser Login as the only client and try starting one of the B.I hard coded missions IF FAIL: Repeat Stage 6, but edit the -mod line in the desktop shortcut to load less mod folders, repeat until you find the @mod folder with the issue Take note, some addons have dependancy on others, so make sure you load the required dependancy addons. Start with @CBA_A3 if you run that mod folder and work from there Check the .rpt file again for any obvious issues (It will now be a much bigger file with a lot of spam entries to read through) IF SUCCESS: go to STAGE 7 STAGE 7: LAUNCHER DEBUGGING So far you have proven That a vanilla install is working The Bikeys are all okay (from a server launch viewpoint) MpMissions are all okay (from a server launch viewpoint) @Mod folders are all okay (from a server launch viewpoint) Typically servers can be launched - run from various applications, such as TADST, Firedeamon, some Hosting company GUI Debugging these issues is beyond the scope of this tutorial, however, if you have managed to reach this stage successfully, then only the launcher can be at fault and you will need to contact the host or ask a question on the TADST thread. I can give some Firedeamon support here. IF SUCCESS: go to STAGE 8 STAGE 8: Set everything back to how you want it Re-Enable BattleEye Re-Enable verify signatures Change the temporary login password back to the default one you use and then reconnect as you did before ISSUE: CLIENT CANNOT CONNECT Work In Progress Basically this will either be an addon issue (Bikey-Bisign mismatch, I have found a fair few bikey issues not matching to bisigns over the last few months) a BattleEye issue (Ping limiter set perhaps or just a bad connection to the A3 host or BE server a ban issue, check BE bans.txt and your root ban.txt a connection issue a Temporary issue, DNS etc or BE server down Client-server version mismatch EXAMPLE FILES Successfully Fully loaded vanilla server Console Window 15:46:01 Dedicated host created. 15:46:07 BattleEye Server: Initialized (v1.194) 15:46:07 Host identity created. 15:46:07 Game Port: 2502, Steam Query Port: 2503 Successfully Fully loaded vanilla server RPT file This is what you should see before any players have attempted to connect Branch: Stable Version: 1.28.127008 Dated 7th September 2014 ===================================================================== == D:\Games\A3\A3ServerTest\arma3server.exe == "D:\Games\A3\A3ServerTest\arma3server.exe" -port=2502 "-profiles=d:\Games\A3\A3ServerTest" -config=Config_Vanilla.cfg -exthreads=1 -enableHT -mod= Original output filename: Arma3Retail_Server Exe timestamp: 2014/09/02 11:16:17 Current time: 2014/09/07 15:30:38 Type: Public Branch: Stable Version: 1.28.127008 Allocator: D:\Games\A3\A3ServerTest\dll\tbb4malloc_bi.dll ===================================================================== ManagerConfig() AppId parsing successful. Using appId=107410 Updating base class ->Base, by a3\dubbing_radio_f\config.bin/CfgHQIdentities/PAPA_BEAR/ Updating base class ->Base, by a3\dubbing_radio_f\config.bin/CfgHQIdentities/AirBase/ Updating base class RscShortcutButton->RscButton, by a3\editor_f\config.bin/RscDisplayEditObject/Controls/B_OK/ Updating base class RscSliderH->RscXSliderH, by a3\editor_f\config.bin/RscDisplayEditObject/Slider/ Updating base class RscText->RscPicture, by a3\editor_f\config.bin/RscDisplayEditObject/Preview/ Updating base class RscShortcutButton->RscButton, by a3\editor_f\config.bin/RscDisplayMissionLoad/Controls/B_OK/ Updating base class RscShortcutButton->RscButton, by a3\editor_f\config.bin/RscDisplayMissionSave/Controls/B_OK/ Updating base class ->RscControlsGroup, by a3\ui_f\config.bin/RscControlsGroupNoScrollbars/ Updating base class ->RscControlsGroup, by a3\ui_f\config.bin/RscControlsGroupNoHScrollbars/ Updating base class ->RscControlsGroup, by a3\ui_f\config.bin/RscControlsGroupNoVScrollbars/ Updating base class ->RscText, by a3\ui_f\config.bin/RscLine/ Updating base class ->RscActiveText, by a3\ui_f\config.bin/RscActivePicture/ Updating base class ->RscButton, by a3\ui_f\config.bin/RscButtonTextOnly/ Updating base class ->RscShortcutButton, by a3\ui_f\config.bin/RscShortcutButtonMain/ Updating base class ->RscShortcutButton, by a3\ui_f\config.bin/RscButtonEditor/ Updating base class ->RscShortcutButton, by a3\ui_f\config.bin/RscIGUIShortcutButton/ Updating base class ->RscShortcutButton, by a3\ui_f\config.bin/RscGearShortcutButton/ Updating base class ->RscShortcutButton, by a3\ui_f\config.bin/RscButtonMenu/ Updating base class ->RscButtonMenu, by a3\ui_f\config.bin/RscButtonMenuOK/ Updating base class ->RscButtonMenu, by a3\ui_f\config.bin/RscButtonMenuCancel/ Updating base class ->RscButtonMenu, by a3\ui_f\config.bin/RscButtonMenuSteam/ Updating base class ->RscText, by a3\ui_f\config.bin/RscLoadingText/ Updating base class ->RscListBox, by a3\ui_f\config.bin/RscIGUIListBox/ Updating base class ->RscListNBox, by a3\ui_f\config.bin/RscIGUIListNBox/ Updating base class ->RscText, by a3\ui_f\config.bin/RscBackground/ Updating base class ->RscText, by a3\ui_f\config.bin/RscBackgroundGUI/ Updating base class ->RscPicture, by a3\ui_f\config.bin/RscBackgroundGUILeft/ Updating base class ->RscPicture, by a3\ui_f\config.bin/RscBackgroundGUIRight/ Updating base class ->RscPicture, by a3\ui_f\config.bin/RscBackgroundGUIBottom/ Updating base class ->RscText, by a3\ui_f\config.bin/RscBackgroundGUITop/ Updating base class ->RscText, by a3\ui_f\config.bin/RscBackgroundGUIDark/ Updating base class ->RscPictureKeepAspect, by a3\ui_f\config.bin/RscBackgroundLogo/ Updating base class ->RscMapControl, by a3\ui_f\config.bin/RscMapControlEmpty/ Updating base class ->RscPicture, by a3\ui_f\config.bin/CA_Mainback/ Updating base class ->CA_Mainback, by a3\ui_f\config.bin/CA_Back/ Updating base class ->CA_Mainback, by a3\ui_f\config.bin/CA_Title_Back/ Updating base class ->CA_Mainback, by a3\ui_f\config.bin/CA_Black_Back/ Updating base class ->RscTitle, by a3\ui_f\config.bin/CA_Title/ Updating base class ->RscPictureKeepAspect, by a3\ui_f\config.bin/CA_Logo/ Updating base class ->CA_Logo, by a3\ui_f\config.bin/CA_Logo_Small/ Updating base class ->RscButton, by a3\ui_f\config.bin/CA_RscButton/ Updating base class ->CA_RscButton, by a3\ui_f\config.bin/CA_RscButton_dialog/ Updating base class ->RscActiveText, by a3\ui_f\config.bin/CA_Ok/ Updating base class ->RscText, by a3\ui_f\config.bin/CA_Ok_image/ Updating base class ->RscText, by a3\ui_f\config.bin/CA_Ok_image2/ Updating base class ->RscText, by a3\ui_f\config.bin/CA_Ok_text/ Updating base class ->RscPicture, by a3\ui_f\config.bin/RscVignette/ Updating base class ->RscControlsGroupNoScrollbars, by a3\ui_f\config.bin/RscMapControlTooltip/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayDebug/Controls/B_OK/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayDebug/Controls/B_Cancel/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayDebug/Controls/B_Clear/ Updating base class ->RscText, by a3\ui_f\config.bin/RscDisplayCapture/controls/TimeLines/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayCapture/controls/ButtonAverages/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayCapture/controls/ButtonSavePreviousData/ Updating base class RscShortcutButton->RscButtonMenu, by a3\ui_f\config.bin/RscDisplayCapture/controls/ButtonPreviousData/ Updating base class RscControlsGroup->RscControlsGroupNoHScrollbars, by a3\ui_f\config.bin/RscDisplayMain/controls/ModIcons/ Updating base class RscPicture->RscPictureKeepAspect, by a3\ui_f\config.bin/RscDisplayMain/IconPicture/ Updating base class IconPicture->RscPictureKeepAspect, by a3\ui_f\config.bin/RscDisplayMain/DlcOwnedIconPicture/ Updating base class IconPicture->RscPictureKeepAspect, by a3\ui_f\config.bin/RscDisplayMain/DlcIconPicture/ Updating base class RscListBox->RscCombo, by a3\ui_f\config.bin/RscDisplayCustomizeController/Steepness/ Updating base class ->RscStandardDisplay, by a3\ui_f\config.bin/RscDisplayControlSchemes/ Updating base class ButtonOK->RscButtonMenuCancel, by a3\ui_f\config.bin/RscDisplayControlSchemes/controls/ButtonCancel/ Updating base class RscButton->RscButtonMenuOK, by a3\ui_f\config.bin/RscDisplayControlSchemes/controls/ButtonOK/ Updating base class RscPicture->RscPictureKeepAspect, by a3\ui_f\config.bin/RscDisplayFileSelectImage/controls/OverviewPicture/ Updating base class RscShortcutButton->RscButtonMenuCancel, by a3\ui_f\config.bin/RscDisplayFieldManual/controls/ButtonCancel/ Cannot delete class B_KickOff, it is referenced somewhere (used as a base class probably). Updating base class RscButton->RscButtonMenuCancel, by a3\ui_f\config.bin/RscDisplayPublishMission/controls/ButtonCancel/ Updating base class RscShortcutButton->RscButtonMenuOK, by a3\ui_f\config.bin/RscDisplayPublishMissionSelectTags/controls/ButtonOK/ Updating base class ButtonOK->RscButtonMenuCancel, by a3\ui_f\config.bin/RscDisplayPublishMissionSelectTags/controls/ButtonCancel/ Updating base class ->RscSubmenu, by a3\ui_f\config.bin/RscMainMenu/ Cannot update non class from class a3\ui_f\config.bin/RscCallSupport/Items/ Cannot update non class from class a3\ui_f\config.bin/RscRadio/Items/ Updating base class ->None, by a3\characters_f\heads\config.bin/CfgGlasses/G_Diving/ Updating base class Optics_Commander_02->Optics_Armored, by a3\armor_f_epb\apc_tracked_03\config.bin/Optics_Commander_03/ Initializing Steam Manager ManagerConfig() unable to load subscribed content list. list will be updated from steam unable to load published content list. list will be updated from steam unable to load cached items meta info. save and update functionality will be broken Steam Manager initialized. ==== Loaded addons ==== dta\bin.pbo - unknown dta\core.pbo - 72362 dta\languagecore_f.pbo - 73106 D:\Games\A3\A3ServerTest\kart\addons\anims_f_kart.ebo - 68104 D:\Games\A3\A3ServerTest\kart\addons\characters_f_kart.ebo - 69654 D:\Games\A3\A3ServerTest\kart\addons\data_f_kart.ebo - 68542 D:\Games\A3\A3ServerTest\kart\addons\languagemissions_f_kart.ebo - 71194 D:\Games\A3\A3ServerTest\kart\addons\language_f_kart.ebo - 71194 D:\Games\A3\A3ServerTest\kart\addons\missions_f_kart.ebo - 72076 D:\Games\A3\A3ServerTest\kart\addons\missions_f_kart_data.ebo - 68567 D:\Games\A3\A3ServerTest\kart\addons\modules_f_kart.ebo - 68506 D:\Games\A3\A3ServerTest\kart\addons\modules_f_kart_data.ebo - 68104 D:\Games\A3\A3ServerTest\kart\addons\soft_f_kart.ebo - 71931 D:\Games\A3\A3ServerTest\kart\addons\sounds_f_kart.ebo - 69963 D:\Games\A3\A3ServerTest\kart\addons\structures_f_kart.ebo - 71528 D:\Games\A3\A3ServerTest\kart\addons\ui_f_kart.ebo - 68104 D:\Games\A3\A3ServerTest\kart\addons\weapons_f_kart.ebo - 69840 D:\Games\A3\A3ServerTest\curator\addons\data_f_curator.pbo - 69630 D:\Games\A3\A3ServerTest\curator\addons\functions_f_curator.pbo - 70878 D:\Games\A3\A3ServerTest\curator\addons\language_f_curator.pbo - 69026 D:\Games\A3\A3ServerTest\curator\addons\missions_f_curator.pbo - 72076 D:\Games\A3\A3ServerTest\curator\addons\modules_f_curator.pbo - 70910 D:\Games\A3\A3ServerTest\curator\addons\ui_f_curator.pbo - 71182 addons\a3.pbo - unknown addons\air_f.pbo - 72106 addons\air_f_beta.pbo - 72362 addons\air_f_epb.pbo - 72121 addons\air_f_epc.pbo - 72244 addons\air_f_gamma.pbo - 72106 addons\animals_f.pbo - 70922 addons\animals_f_beta.pbo - 69641 addons\anims_f.pbo - 71962 addons\anims_f_bootcamp.pbo - 72244 addons\anims_f_data.pbo - 67148 addons\anims_f_epa.pbo - 70151 addons\anims_f_epc.pbo - 64977 addons\armor_f.pbo - 66875 addons\armor_f_beta.pbo - 72238 addons\armor_f_epb.pbo - 71158 addons\armor_f_epc.pbo - 67549 addons\armor_f_gamma.pbo - 71553 addons\baseconfig_f.pbo - 43414 addons\boat_f.pbo - 71876 addons\boat_f_beta.pbo - 71271 addons\boat_f_epc.pbo - 69978 addons\boat_f_gamma.pbo - 69978 addons\cargoposes_f.pbo - 71528 addons\characters_f.pbo - 72192 addons\characters_f_beta.pbo - 72235 addons\characters_f_bootcamp.pbo - 71769 addons\characters_f_epa.pbo - 72109 addons\characters_f_epb.pbo - 72109 addons\characters_f_epc.pbo - 71967 addons\characters_f_gamma.pbo - 67255 addons\data_f.pbo - 72243 addons\data_f_bootcamp.pbo - 70358 addons\drones_f.pbo - 71840 addons\dubbing_f.pbo - 55351 addons\dubbing_f_beta.pbo - 55170 addons\dubbing_f_bootcamp.pbo - 70741 addons\dubbing_f_epa.pbo - 64461 addons\dubbing_f_epb.pbo - 64461 addons\dubbing_f_epc.pbo - 71948 addons\dubbing_f_gamma.pbo - 55217 addons\dubbing_radio_f.pbo - 70403 addons\dubbing_radio_f_data.pbo - 70088 addons\editor_f.pbo - 70677 addons\functions_f.pbo - 72089 addons\functions_f_bootcamp.pbo - 71974 addons\functions_f_epa.pbo - 69421 addons\functions_f_epc.pbo - 63816 addons\languagemissions_f.pbo - 70504 addons\languagemissions_f_beta.pbo - 67088 addons\languagemissions_f_bootcamp.pbo - 71374 addons\languagemissions_f_epa.pbo - 72010 addons\languagemissions_f_epb.pbo - 69398 addons\languagemissions_f_epc.pbo - 69398 addons\languagemissions_f_gamma.pbo - 67088 addons\language_f.pbo - 72031 addons\language_f_beta.pbo - 72141 addons\language_f_bootcamp.pbo - 71964 addons\language_f_epa.pbo - 67088 addons\language_f_epb.pbo - 70677 addons\language_f_epc.pbo - 72010 addons\language_f_gamma.pbo - 70557 addons\map_altis.pbo - 72244 addons\map_altis_data.pbo - 68681 addons\map_altis_data_layers.pbo - 64204 addons\map_altis_data_layers_00_00.pbo - 64204 addons\map_altis_data_layers_00_01.pbo - 64204 addons\map_altis_data_layers_01_00.pbo - 64204 addons\map_altis_data_layers_01_01.pbo - 64204 addons\map_altis_scenes_f.pbo - 63714 addons\map_data.pbo - 70871 addons\map_stratis.pbo - 72244 addons\map_stratis_data.pbo - 60227 addons\map_stratis_data_layers.pbo - 60227 addons\map_stratis_scenes_f.pbo - 69675 addons\map_vr.pbo - 70890 addons\map_vr_scenes_f.pbo - 70385 addons\misc_f.pbo - 67166 addons\missions_f.pbo - 72113 addons\missions_f_beta.pbo - 72076 addons\missions_f_beta_data.pbo - 62070 addons\missions_f_beta_video.pbo - 49010 addons\missions_f_bootcamp.pbo - 72076 addons\missions_f_bootcamp_data.pbo - 71826 addons\missions_f_bootcamp_video.pbo - 70504 addons\missions_f_data.pbo - 62070 addons\missions_f_epa.pbo - 72184 addons\missions_f_epa_data.pbo - 66883 addons\missions_f_epa_video.pbo - 58252 addons\missions_f_epb.pbo - 72076 addons\missions_f_epb_data.pbo - 66883 addons\missions_f_epb_video.pbo - 61701 addons\missions_f_epc.pbo - 72076 addons\missions_f_epc_data.pbo - 65195 addons\missions_f_epc_video.pbo - 65113 addons\missions_f_gamma.pbo - 72076 addons\missions_f_gamma_data.pbo - 55501 addons\missions_f_gamma_video.pbo - 52884 addons\missions_f_video.pbo - 52434 addons\modules_f.pbo - 72498 addons\modules_f_beta.pbo - 68461 addons\modules_f_beta_data.pbo - 56247 addons\modules_f_bootcamp.pbo - 72049 addons\modules_f_data.pbo - 69859 addons\modules_f_epb.pbo - 66731 addons\music_f.pbo - 69026 addons\music_f_bootcamp.pbo - 69633 addons\music_f_bootcamp_music.pbo - 69256 addons\music_f_epa.pbo - 62941 addons\music_f_epa_music.pbo - 62070 addons\music_f_epb.pbo - 62941 addons\music_f_epb_music.pbo - 62070 addons\music_f_epc.pbo - 65137 addons\music_f_epc_music.pbo - 65137 addons\music_f_music.pbo - 62070 addons\plants_f.pbo - 68746 addons\roads_f.pbo - 71662 addons\rocks_f.pbo - 68633 addons\signs_f.pbo - 71037 addons\soft_f.pbo - 72200 addons\soft_f_beta.pbo - 71840 addons\soft_f_bootcamp.pbo - 72200 addons\soft_f_epc.pbo - 71840 addons\soft_f_gamma.pbo - 72200 addons\sounds_f.pbo - 72216 addons\sounds_f_bootcamp.pbo - 71314 addons\sounds_f_epb.pbo - 71327 addons\sounds_f_epc.pbo - 71976 addons\sounds_f_vehicles.pbo - 71928 addons\sounds_f_weapons.pbo - 72253 addons\static_f.pbo - 71927 addons\static_f_beta.pbo - 69740 addons\static_f_gamma.pbo - 71864 addons\structures_f.pbo - 72229 addons\structures_f_bootcamp.pbo - 72304 addons\structures_f_data.pbo - 72305 addons\structures_f_epa.pbo - 71528 addons\structures_f_epb.pbo - 71781 addons\structures_f_epc.pbo - 72203 addons\structures_f_households.pbo - 72229 addons\structures_f_ind.pbo - 72229 addons\structures_f_mil.pbo - 72229 addons\structures_f_wrecks.pbo - 71528 addons\uifonts_f.pbo - 62497 addons\uifonts_f_data.pbo - 62497 addons\ui_f.pbo - 72099 addons\ui_f_bootcamp.pbo - 71374 addons\ui_f_data.pbo - 72099 addons\weapons_f.pbo - 72240 addons\weapons_f_beta.pbo - 71831 addons\weapons_f_bootcamp.pbo - 71871 addons\weapons_f_epa.pbo - 71913 addons\weapons_f_epb.pbo - 69062 addons\weapons_f_epc.pbo - 68963 addons\weapons_f_gamma.pbo - 69142 ======================= PhysX3 SDK Init started ... PhysX3 SDK Init ended. Initializing Steam server - Game Port: 2502, Steam Query Port: 2503 Connected to Steam servers Changelog v1.0: Initial release 7th Sept 2014
  12. terox

    Character running in jerks

    Its called warping, basically the client and server aren't syncing quickly enough, update packets are being lost. This is likely to be down to a network issue, slow serverside cps(FPS), poor bandwidth
  13. you mean create a virtual link to a different none root file structure, if so https://ss64.com/nt/mklink.html 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
  14. I use https://firedaemon.com
  15. 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 Isdedicated IsServer HasInterface This is a steep learning curve until you grasp the concept and start understanding locality issues
  16. @Tankbuster there is a comref specifically for youtube mate if that is all you want to do.. https://community.bistudio.com/wiki/openYoutubeVideo You could add an "execute expression" line direct into your briefing I haven't tried a youtube url link in this system but from what I am seeing, anything that can be opened via a url link will work with this.
  17. 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 __________________________________________
  18. terox

    Open Weblink on button

    This is your answer.... Inspired by larrows post All kudos and credit goes to him. I just improved on his original concept
  19. So in your root Arma3 root server install, where all the arma3**.exe's are, you should have a folder called userconfig In that folder should be a file called cba_settings.sqf. so path would be arma3\userconfig\cba_settings.sqf This is the content in ours.. https://pastebin.com/xSqiBECW Your home local server will have this file, just copy it over to the server
  20. 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 also 0 spawn compile preprocessFileLin Looking at the rpt am assuming somewhere you are trying to add an Eachframe missioneventHandler
  21. rpt lines 1255 to 1295 shows error in code difference between local host and dedi server are 1) use of code such as if(HasInterface) ...... and not assuming possibility of IsServer IsDedicated and then of course the localised setup compared to the dedi environment
  22. 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 Click on link to join teamspeak. Starts up their teamspeak app if it is not already running Auto joins them to your teamspeak server Adds a bookmark to their TS client Can also be used to link to your addons or community page 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 !!
  23. 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 EDIT. Now have a working example for easy integration into your missions..
  24. terox

    Server error code

    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
  25. 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
×