Jump to content

[WIP] Potential Uniform/Vest Glitch Fix


Grahame

Recommended Posts

UPDATED CheckUniformVest.sqf with the excellent recommendations from @He-Man

Here is a suggestion to solve the issue of ARMA3's uniform and vest glitches that can result in a player logging in without one or both anymore, despite the fact that they never noticed that they had vanished when they were last on. The script needs some eyes on it and testing, though I have verified that it runs without errors. 

Open your epoch_server_settings.pbo. Create a file called CheckUniformVest.sqf in the EpochEvents folder with the following contents:

UniformVestCheck =
{
	if (typeOf player == "VirtualMan_EPOCH") exitWith {};
	params ["_uniform", "_vest"];
	if (!(uniform player isEqualTo _uniform) || !(vest player isEqualTo _vest)) then
	{
		player setunitloadout (getunitloadout player);
		//["The server had to replace your uniform as it was bugged", 5] call Epoch_message;
	};
};

publicVariable "UniformVestCheck";

{
	if (alive _x) then {
		if (uniform _x == "" || vest _x == "") then {
			if !(getPlayerUID _x isEqualTo "") then {
				[uniform _x, vest _x] remoteExecCall ["UniformVestCheck", owner _x];
			};
		};
	};
} forEach allPlayers;

Uncomment the Epoch_message lines if you want the afflicted players to know that they have been fixed.

RePBO epoch_server_settings.pbo and upload to @EpochHive/addons on your server.

Open @EpochHive/epochconfig.hpp on your server and add the following line to the events[] array:

    { 30, "CheckUniformVest", 0 , 1, -1, {} ,{"VR"}},

Add !"UniformVestCheck" to your BattlEye publicvariable.txt filter and reload the BE scripts.

That's it. Let me know of any issues.

Link to comment
Share on other sites

You could reduce a bit performance with this:
 

{
	if (alive _x) then {
		if (uniform _x == "" || vest _x == "") then {
			if !(getPlayerUID _x isEqualTo "") then {
				[uniform _x, vest _x] remoteExecCall ["UniformVestCheck", owner _x];
			};
		};
	};
} forEach allPlayers;

Then you only push it, if the player really has no visible uniform / vest for the Server.

 

Another really helpfull (new) command is "getunitloadout" and "setunitloadout".

UniformVestCheck =
{
	if (typeOf player == "VirtualMan_EPOCH") exitWith {};
	params ["_uniform", "_vest"];
	if (!(uniform player isEqualTo _uniform) || !(vest player isEqualTo _vest)) then
	{
		player setunitloadout (getunitloadout player);
		//["The server had to replace your uniform as it was bugged", 5] call Epoch_message;
	};
};

Then the player will just completely reload his loadout...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...