Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Everything posted by terox

  1. 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
  2. [Tutorial] Server bandwidth & Optimisation Last updated: 21st April 2014 Updated to this post: This is new content In its current state, (UNTIL THIS LINE HAS BEEN REMOVED) this is more of a discussion that a tutorial . As the feedback comes in I am hoping to change this thread into a full tutorial much in the same way as I did for the dedicated server tutorial BIS are working on network optimisation at the moment, I will try to keep this tutorial updated as and when that content is made public Important... If you see information within this post that is innacurate, please let me know ASAP so I can edit it CONTENTS (not yet implemented) A little introduction first I am not an IT technician, but have been running Gaming servers for OFP & ArmA series for over 10 years now and I am still confronted with Dedicated Server documentation that doesn’t fully explain the setup. I have read many posts and seen many examples of Configs and have yet to see any consistency with the values defined. My intention with this thread is to compile a more detailed description of the relationships, values and settings required to achieve optimisation for the following variables as defined in the Arma3.cfg's MinBandwidth MaxBandwidth MaxMsgSend MaxSizeGuaranteed MaxSizeNonguaranteed MinErrorToSend MinErrorToSendNear maxPacketSize My first aim is to discuss the various elements required to achieve optimisation and compile a list of unanswered queries that we can direct to BIS devs for more information. To achieve this, I am going to open up a thread about each setting, so they can be discussed separately and then use this thread as the central repository for the information that is forthcoming and accepted as being correct. The end aim is to Create a definitive tutorial with a set of formulae to calculate the required values Possibly Build a benchmark testing mission that can be run and used for comparison purposes from 1 server to another Define typical settings for common hardware setups and typical datacentre/home connections TO DO THIS I NEED YOUR help, advice and knowledge to put this baby to bed once and for all Could you please add whatever information, conclusions or information you can to the following relevant threads SEPERATE DISCUSSION THREADS All about MinBandwidth All about MaxBandwidth All about MaxMsgSend All about MaxSizeGuaranteed All about MaxSizeNonguaranteed All about MinErrorToSend All about MinErrorToSendNear All about maxPacketSize anything else belongs in this thread Quote from Dwarden in reference to this area of Server administration I have No idea what this will be Useful Links: BIS WIKI: basic.cfg Wiki: Talk-basic.cfg Useful Tools Arma-Server-Monitor TERMINOLOGY Bits v Bytes Data size is normally defined in bits Data transfer is normally defined in Bytes Unless otherwise defined, the bandwidth setting values are shown in Bytes 1 bit is either a "0" or a "1" (On or Off switch to a computer) 1 byte = 8 bits ( an array of eight 0's and 1's) There is a difference between **bps and ** Bps bps: bits \ second Bps: Bytes \ second It is very important when reading information about bandwidth transfers and connection speeds that you can differentiate between these two values (bits or bytes) Comparison Chart 10 Mbit connection : = 1.31072 Megabytes\second = 1310720 bytes\second 100 Mbit connection: = 12.5 Megabytes\second = 13107200 bytes\second 1 GBit connection: = 128 Megabytes\second = 134217728 bytes\second Frames v Simulation cycles The client machine measures the speed of the simulation in Frames per second (Basically how many pictures are recreated on the screen every second) The server however does not run any graphics, so it has a unit of measurement of Simulation cycles per second The maximum the server is allowed to run at is 50 Simulation cycles per second regardless of hardware For ease of understanding I will refer to this as "Server FPS" The actual Server FPS is dependant on The number of players connected The number of scripts running and the weight those scripts are placing on the cpu The number of AI that are in the mission The hardware capabilities, CPU,RAM Hard drive I/O and bandwidth settings The state of play (Combat causes greater load than non combat stages of the mission) For each Server Simulation cycle, apart from ctually running the simulation, the engine attempts to check the status of objects in the mission, compares that to the previous check and updates according to the minerrorsend, sending the required data to the clients in "packets" of data and also receiving data back from them. If there are too many checks to be done or it cannot send the data out quickly enough or receive the data quickly enough, the FPS will reduce. If it reduces below 20, the clients will start to notice a deterioration in gameplay, (especially in coops where the AI will be effected) At an FPS of around 15 the server is deemed overloaded At an FPS of 10 the mission no longer becomes playable You should typically be aiming to achieve a minimum of 25 to 30 FPS The aim of optimising your server is to try and maintain as high an FPS as possible. To do this you need to take into account the following Your hardware limitations How many virtual servers you will be running consecutively on the same box Your bandwidth limitations (Connectivity) How many players each server will host for The type of Missions you will be playing (Coop, PvP) The weight of the scripting HARDWARE CPU ArmA3 is heavily dependant on CPU. The faster the CPU the better However each ArmA3server.exe instance currently only uses 2 cores. One of those cores being used for A.I (There is a methodology that utilises something called "Headless Client" which is basically a Client (Installed on the server or other machine) that connects to the server and runs AI. This is a method to utilise more cores and thus allow more A.I per mission) RAM Each server instance needs between ? and ? ram CASE STUDY This is an example of useage (Do not use the settings as guidelines, they have clearly not been optimised, however this particular server runs very stably with little if any desync but was running at 7-8 FPS) The server is set to run 40 players and the mission in use was Invade & Annex v2.86 (Not sure if the server had 32 +/- 2 connected to it) A3 Version was Type: Public Alpha Development Version: 0.61.106371 Also running were at least 2 other servers (Mix between A2 and A3) Windows 2012 Hardware: CPU: Dual Xeon X5570 (Quad core 2.93ghz) RAM: 24Gb HD's: SATA 6Gb enterprise drives Connectivity: 1 GBit Bandwith: The resulting values were seen data out: Typically 6000 TO 7000 kbps data in: Typically 400 to 700+ Kbps RAM: 1526MB CPU : 13% Player individual bandwidth ranged from 150 to 6000 THE SETTINGS 1) maxPacketSize For now check this link Discussion Thread: All about maxPacketSize What the BIKI states Important For the greater majority of us, this value should not be touched If you are thinking about playing with this setting, to put your mind to rest and to prevent you altering this value unnecessarily, carry out the following test as described in this little tutorial http://help.expedient.net/broadband/mtu_ping_test.shtml If the resulting MTU value calculated by the test is higher than the default maxPacketSizevalue, then leave well alone What we known Default value: 1400 bytes Typical MTU for a server when following the above linked tutorial is 1500 Too big a value is likely to cause lag and desync The value should be the same no matter How many players the server hosts for, How many virtual Arma 3 server you run on the same box Whether you run PVP or COOP What you are trying to achieve Defining the maximum size without causing loss of packets, lag or desync Too big a value is likely to cause lag and desync How to test Use the tutorial above to check your MTU MaxMsgSend For now check this link All about MaxMsgSend What the BIKI states What we known Default value: 128 Messages\Client Maxmessagesend = maximum amount of messages that can be sent per simulation cycle per client The maximum number of simulation cycles per second is 50 This however will not be the typically actual number of simulation cycles when the mission is running which will be more likely in the region of 25 to 30 To best achieve the correct value, you will first need to obtain your actual transfer rates How best to achieve this? This is the best information i could find http://forum.ovh.co.uk/showthread.php?t=1897 It basically states not to use Online speed testing sites because they use web browsers and that has a definte effect on the values you will get It basically states to download a large file from somewhere and monitor the transfer rate on your backend What I assume (Something is wrong here) So...... if MaxMsgSend=128 and the server FPS is at 30, the server will send out a maximum 30*128=3840 messages per second per client Using the MaxPacketSize default of 1400 bytes, this will equate to a data transfer rate of 3840*1400=5376000 bytes\second or 5.126953125MBps (Per client ?) Compare this to your servers connectivity, typical example being a 100MBit connection, with a data transfer rate theoretically available as 100 Mbit connection: = 12.5 Megabytes\second = 13107200 bytes\second You have enough bandwidth left for 1 more player(If only running 1 A3 server on the box) (This has got to be wrong ?) 7831200 Bytes\second 7.3 Megabytes per second What we need to know: What value if any, does it default too, if the entered value is unacceptable? Would this value vary dependant on the number Virtual A3 servers you are running Would this value vary for PVP and CooP servers Would this value vary depending on the number of players the server supports How would you stress test or test this in a Benchmark mission scenario? What else ? Calculation Formulae (Not yet defined) MaxSizeGuaranteed For now check this link All about MaxSizeGuaranteed MaxSizeNonGuaranteed For now check this link All about MaxSizeNonguaranteed MaxBandwidth For now check this link All about MaxBandwidth MinBandwidth For now check this link All about MinBandwidth MinErrorToSend For now check this link All about MinErrorToSend MinErrorToSendNear For now check this link All about MinErrorToSendNear
  3. Purpose of this thread List all known admin commands Verify any issues with the commands Update the Tutorial thread with this information Create a wish list which we can then put forward to BIS via tickets I will update this initial post via changelogs as I am continuing to do with the tutorial thread BIS WIKI Reference: In Game Admin commands How to issue a server admin command Open the ingame chatbox Type in the command Enter NB>> When logging in as admin, do this in vehicle chat, just in case you make a typo PRE-REQUISITS Create an empty "ban.txt" file and save it to your root arma3 install SERVER ADMIN COMMAND LIST (Known to work, (highlighted in Green)) Not working: (Highlighted in red) Untested (Highlighted in black) SERVER MANAGEMENT #login < password > : Admin login #logout : Admin logout #lock : Lock server (Auto unlocks at end of mission) #unlock : Unlocks server #missions : Stops mission, reloads mission list #reassign : Moves all players from their unit selection slots back into the lobby #restart : returns the mission to the unit selection screen, with all players in their slots and restarts the mission #shutdown: shuts the server down #Init : Reloads file defined by -config command line parameter PLAYER MANAGEMENT #userlist : Displays the list of users on the server (use pgup to scroll up) #kick < Server Player ID > (First entry for a player using #userlist) #kick < nickName > (Second entry for a player using #userlist #kick < Player UID > (Third entry for a player using #userlist) #exec kick < Server Player ID > (First entry for a player using #userlist) #exec kick < nickName > (Second entry for a player using #userlist #exec kick < Player UID > (Third entry for a player using #userlist) #exec ban < Server Player ID > (First entry for a player using #userlist) #exec ban < nickName > (Second entry for a player using #userlist #exec ban < Player UID > (Third entry for a player using #userlist) DEBUGGING #monitor 10 : Activates the server monitor which reports Bandwidth and memory useage Every * seconds via chat window) #monitor 0 : Deactivates the server monitor #debug off : Deactivates debugging #debug 30 : Debug reporting interval (Default is 10 seconds #debug von #debug console #debug checkFile expansion\Dta\ui.pbo #debug userSent <username> #debug userInfo <username> #debug userQueue <username> #debug JIPQueue <username> #debug totalSent 10 Changelog Nil
  4. 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
  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 __________________________________________ (Date: 22/3/2022) Updated link was http now https
  6. Apologies for bad link, now updated ands working, see first post fore dl link
  7. 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
  8. 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
  9. 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
  10. 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 .
  11. 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
  12. 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.
  13. 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.
  14. 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
  15. terox


    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
  16. 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
  17. 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
  18. I use https://firedaemon.com
  19. 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
  20. @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.
  21. 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 __________________________________________
  22. 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
  23. 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
  24. 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
  25. 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