• Announcements

    • Flosstradamus

      Official Discord   03/15/17

      https://discord.gg/FMkqWpF Click the link above and join our Official Discord!  Chat with developers and get quicker support!
    • Vishpala

      New XM8 Discord Bot   05/15/17

      Our new XM8 Discord Bot will send you notifications about events happening in-game, even if you are not online!  Read about it on the Devblog:  
    • Vishpala

      Server Files Updated   09/16/17

      Published new server files today. No client update needed. There is no need to update your server files if you do not have any issues with your current setup. This fixes an issue where loot customization would not work. Also, some simulation issues were addressed. Nothing major in this mini patch.   http://www.exilemod.com/downloads/
    • WolfkillArcadia

      Exile Escape!   09/17/17

      Do you want to play Exile Escape? Do you want to host Exile Escape? Check out the post here for more information!  


  • Content count

  • Joined

  • Last visited

Community Reputation

48 Good


About BlackheartsGaming

  • Rank

Personal Information

  1. Just FYI, you can simplify this by adding the code to: ExileServer_object_vehicle_carefulCreateVehicle.sqf. Both the non-persistent and the persistent vehicle scripts call this script to create the vehicle. This makes it so you only have to override one file. If you only want it for one or the other, add it to the appropriate script.
  2. The Exile_Item_Safekit is the item class, if you wanted to add tabs to an existing constructed safe it would be Exile_Container_Safe.
  3. Revert the code in ExileServer_util_getFragKiller.sqf to: //if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then //{ // _player = _killer; //} //else //{ // _sessionID = _killer getVariable ["ExileSessionID", -1]; // if !(_sessionID isEqualTo -1) then // { // _player = _sessionID call ExileServer_system_session_getPlayerObject; // }; //}; if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then { _player = _killer; } else { _uid = getPlayerUID _killer; { if ((getPlayerUID _x) isEqualTo _uid) exitWith { _player = _x; }; } forEach allPlayers; }; See if this fixes the issue and report back so the Devs can have a deeper look.
  4. I've tested this more here is what I found. Using the default code in ExileServer_util_getFragKiller, the _player variable returned when the killing player is in an armed vehicle (tested with default armed Exile cars and the Huey), is _killingPlayer: <NULL-object>" which results in the code 4, NPC. Reverting the code (ExileServer_util_getFragKiller.sqf) back to 1.0.2, the killing player is reported properly. This only happens when a player kills another player from an armed vehicle. Player kills with weapons are not effected.
  5. No I am not. I am using extended stats logging (I cannot find the original post to credit the author). Here is my MPKilled file. I'll highlight the lines that are different from the default exile file for you. I'm outputting the variable for _killingPlayer to the log file now to try and see if this isn't getting set properly and then returning code 4. I'll do some more data gathering for you. Thanks!
  6. Getting reports by players that the server is reporting that players their kills are sometimes being reported as killed by NPC and they are not getting the proper perks. In researching the issue, I noticed changes to the onMPKilled event handler assigned to player objects. Most notably the change to ExileServer_util_getFragKiller. New code: if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then { _player = _killer; } else { _sessionID = _killer getVariable ["ExileSessionID", -1]; if !(_sessionID isEqualTo -1) then { _player = _sessionID call ExileServer_system_session_getPlayerObject; }; }; Previous Code: if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then { _player = _killer; } else { _uid = getPlayerUID _killer; { if ((getPlayerUID _x) isEqualTo _uid) exitWith { _player = _x; }; } forEach allPlayers; }; For some reason the call to this function isn't returning that the killing player is in fact a player and then throws exception 4 in ExileServer_util_getFragType: if (isNull _killingPlayer) then { throw 4; }; For logging and statistic purposes I export every player kill to a database table and it's being reported properly, but I am not using the above code to determine that. format["insertPlayerHistory:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11", getPlayerUID _victim, name _victim, _victimPosition select 0, _victimPosition select 1, _victimPosition select 2, _kName, _kUID, _kDistance, _killerPosition select 0, _killerPosition select 1, _killerPosition select 2] call ExileServer_system_database_query_fireAndForget; _kName, and _KUID are derived from variable that are set higher in the file. This was from an advanced logging mod that someone else wrote (my apologies for not crediting them here). _kName = name _killer; _kUID = getPlayerUID _killer; Anyone else received any complaints? I'll keep doing some more troubleshooting and testing and report back.
  7. @Eichi Confirms what I suspected, but without any official documentation, I could only speculate. I was already headed down the path of swapping out the Exile simulation with the new Dynamic Simulation to test if it would provide better performance. It's hard to tell right now with only 1 or 2 players in the dev server however. In reading the Dynamic Simulation documentation, they are some things that need to be addressed and as you stated will (hopefully) be improved in the future. Thanks for the explanation. I really appreciate your time.
  8. @Eichi I was mistaken about your workaround making is so the simulation was enabled all the time. Your fix, simply switched on global simulation when the object was spawned. The simulation monitor then shuts it off. I misread the code. We have over 10000 base parts on the server and yes 700 of them are doors, gates or hatches. Further testing revealed they are being properly handled by the simulation manager code. There isn't any good documentation on EnableSimulationGlobal and how this impacts server performance. If we were to leave simulation on these on all the time wouldn't that have a negative impact on server performance? Again, I don't fully understand the concept, but know you did this for a good reason. Enlighten me o great Arma Script God.
  9. The more I stare at this, the more I think I may have spoken to soon. The workaround for the Exile base objects with doors isn't actually adding to the number of simulated objects. It only turns on globalsimulation when the object is spawned into the world during the load from constructions routine. EnableSimulationGlobal is set to true when the object is spawned and matches a certain class. It's then handed off to the simulation monitor and if no players are near it, it then shuts off the simulation. I'll keep at it, if nothing else I am learning new things.
  10. Here is a snippet of code you can use to see how many vehicles (objects) have simulation turned on in your server. I use Infistar, so open up the debug panel with the F3 key. Paste this in the panel and execute it server side. Open your server report and look for the output. 16:05:17 "ObjectsSimEnabled: 105" 16:05:17 "ObjectsSimdisabled: 2010"
  11. Throwing more CPU or Ram at the issue isn't going to help. The problem was introduced in 1.68 and has to do with something that has changed in the GlobalSimulation of objects with doors that are loaded into the world after the server starts up. Objects in the mission sqm don't exhibit this behavior. To improve performance in Arma3, the Exile devs created a toggle simulation system that disables globalsimulation on any vehicle (remember everything in Arma3 is a vehicle, even buildings) that is not crewed, or a player is not within 250 meters of. This frees up the arma3 engine to not have to perform calculations on objects that aren't being interacted with. Exile Devs, or other developers, please point out anything inaccurate in that statement. I'm testing a new approach to this using Dynamic Simulation, so far it looks promising as a "better" solution, but I'm a bit out of my comfort zone with this level of scripting. I will report my results when I feel a little more comfortable posting the alternative workaround. I don't want to cause more headaches for the devs by putting something out there that's just totally wrong and will cripple servers even more. Thanks for what you do Dev team.
  12. Just poking around and found this. https://community.bistudio.com/wiki/Arma_3_Dynamic_Simulation#Global_system_settings Is BI trying to finally make a stab at performance?
  13. Does arma_load.dll need to be updated as well? Call extension 'ARMA_LOAD' could not be found.
  14. Any chance you could provide a simple example for us inquiring minds?
  15. This is possible, but you would need to write it yourself with Visual Studio .NET. You could use the BattleNet C# library to write an app to monitor the RCON console for chat, parse it and then write it to a Mysql database. @maca134 used this libaray to create MBRcon as a nice replacement for BEC. https://github.com/maca134/MBCon https://github.com/marceldev89/BattleNET