Page MenuHomeFeedback Tracker

addUniform is NOT Global
Closed, ResolvedPublic

Description

Observed:
addUniform is local only
removeUniform is GLOBAL as expected.

Expected:
addUniform should be Global for mp
removeUniform should be Global and it is.
{F22483} {F22484} {F22485} {F22486} {F22487}

Details

Legacy ID
1755213907
Severity
None
Resolution
Fixed
Reproducibility
Always
Category
Scripting
Additional Information

The following commands that were tested on Version: 1.03.110902

addHeadgear => Global
addVest => Global
addBackpack => Global
removeHeadgear => Global
removeVest => Global
removeBackpack => Global
removeUniform => Global
addUniform => local

Event Timeline

ViperMaul edited Steps To Reproduce. (Show Details)Oct 8 2013, 9:36 PM
ViperMaul edited Additional Information. (Show Details)
ViperMaul set Category to Scripting.
ViperMaul set Reproducibility to Always.
ViperMaul set Severity to None.
ViperMaul set Resolution to Fixed.
ViperMaul set Legacy ID to 1755213907.May 7 2016, 5:05 PM

I've just tested dev 902 and this is the result:

addUniform => Local
removeUniform => Global

addVest => Global
removeVest => Global

addBackpack => Local
removeBackpack => Local

addHeadgear => Global
removeHeadgear => Global

addGoggles => Global
removeGoggles => Global

Quite confusing TBH

Gekkibi added a subscriber: Gekkibi.May 7 2016, 5:05 PM

oh wow, this explains couple of problems some have experienced! x)

@KillZone,
I thought about contacting you before this bug report.
Our test results only differs with the backpacks, aside from the fact, that I didn't test the googles.
Actually your test results make more sense when I work with my addon.

How did you do your tests?

Here is what I did...

All on the same box,
Dedicated Server + 2 Clients.
Client A used the Debug Console. Execute the commands in appropriate order.
Client B monitored the result. Client B was in his own group.

I observed the Backpack removed from the Client A player on both clients.
I observed the Backpack added to the Client A player on both clients.
I then believed the both backpack commands where Global.

Since we both used the same Dev Branch version, again I ask how did you do your tests?

I ran all commands on a dedicated server and monitored the effect on my client.

Would this explain addUniform not working in multiplier even when put in unit inits?

R4IDER added a subscriber: R4IDER.May 7 2016, 5:05 PM
R4IDER added a comment.Nov 5 2013, 1:10 PM

I am having a problem which could be related to this. I have setup my missions so that players select their kit from a selection menu when scrolling on a supply box. Everything works fine but if any player rejoins the game or connects late it makes every player currently connected lose their vest item and sometimes even their helmet. If you go and select your kit again its fine and you won't lose it again.

I am using this for example to give the various roles their gear.

player addheadgear _plhelm;
player adduniform _pluniform;
player addvest _plvest;

Tachi added a comment.Nov 17 2013, 6:00 PM

What about addPrimaryWeaponItem? I think it's buggy too, not always global

NOON added a subscriber: NOON.May 7 2016, 5:05 PM
NOON added a comment.Nov 18 2013, 8:02 PM

"What about addPrimaryWeaponItem? I think it's buggy too, not always global"

No, should work fine.

This is a big problem for a milsim clan because we have standardized loadouts / uniforms and we're unable to do this unless we make sure nobody joins the server mid-operation. But, we also have a training server where there's going to be a lot of people joining and leaving.

When you modify a unit's loadout at all, and someone joins the server (doesn't matter if it's dedicated or not) one of two things will happen.

1: Uniform is removed
or
2: All gear that the player picked up during the mission will be removed and set back to what was initially put onto the player.
I haven't had this problem when we run the VAS or Virtual Ammobox System script, and I've torn that open and I can't find anything in there that would work around this.

I've noticed that if I modify only the gear and not the uniform this is what happens.

ClientA - rifleman... changed headgear, goggles, and vest.
ClientB - rifleman... changed headgear, goggles, vest and uniform.

both clients have same loadouts (excluding uniform, but both uniforms are BluFor)
Server launched, mission starts

ClientC joins midgame. Same loadout as ClientB.

ClientA - loses everything he picked up after initial start, and loadout is reverted back to what he started with (the gear that I put in)
ClientB - same as ClientA, except uniform disappears completely.

I have -showAllScriptErrors running on my launch parameters and I don't get any error messages when this happens.

Would love to have this fixed

I have -showAllScriptErrors

I think it's -showScriptErrors

Apparently resolved in 1.06. Can anyone confirm?

I've worked on this task for more than a week, so be patient, it is no as so easy ;-)

Gibbo added a comment.Nov 22 2013, 2:39 PM

Its not resolved in 1.0.6. That much I can confirm. It's extremely annoying so I really wish it can be fixed somehow.

Here are the preconditions for the bug to appear in our world:

  • Game is hosted either by dedicated server or local server
  • Loadout scripts are used where it first removes and then adds uniforms to players
  • At least two human players joins the server, either in spawn or in game (doesnt matter)

What happens is:

  • Player A joins server with AI friendlies, everything looks fine
  • Player B joins server
  • Player A looses uniform, and sometimes player B as well
  • Player C joins and spawns mid-game
  • Player A and B looses their uniform

Its really bizarre and no workaround seems to fix it. Believe me, I have tried everything in the book.

The only "workaround" we have for now is to put Virtual Ammoboxes at all respawn points where ppl can pick up their pants so they dont run around looking silly.

well some changes have been made in the network code since DEV. 112751 and will be distributed into Steam next week. My work on network code continue

Thank you Japapa. Your work is appreciated.

Gibbo: Can you try your repro against the new DEV build and give me a feedback?

Jpapapatrmtara: Yes certainly, I will give it a go and report back within 24hrs or something. Very interesting. Thank you for all your efforts trying to fix this.

Gibbo added a comment.Nov 27 2013, 6:42 PM

I have tested the dev branch now with a fellow soldier and here's the report:

Setup:
Dev branch v112828
Dedicated Server
2 human players

Same preconditions and test procedure as in my initial post.

Sorry to report it but the result is the same. The bug remains and it behaves exactly the same.

We tested this with 2-3 guys on a dedicated server, with the following simple instructions into the init field of the unit:

removeUniform unitName;
sleep 1;
unitName addUniform classname;

Without sleep 1, it fails systematically for all players.
With sleep 1, it works sometimes and fails sometimes randomly for a given player joining the server.

This looks like a problem of data synchronisation through the network.
Hope it helps.

sleep cannot be used in init field, it fails with error. Not saying you're lying but obviously you're doing something wrong.

well.. I see.. it is really broken :-( now I'm having a not so funny vision.. a vision in which I will work even over the weekend.. again :-)

In fact a run a script witch contains these instructions through execVM into the unit field of the unit.

Also have a look here:
http://forums.bistudio.com/showthread.php?167860-Added-Uniform-Disappears-in-Multiplayer&p=2557447&viewfull=1#post2557447

Gibbo added a comment.Nov 28 2013, 2:53 PM

FWIW, I now use precompiled functions to do the loadouts. There is also a delay between players joining and the scripts running and between dropping weapons and uniforms and adding uniforms back. I also extend effort to ensure addUniform is run on the server via BIS_fnc_MP. Not sure if this makes sense. Im not a haxor on Arma script, but I think I have tried every permutation possible. All from just using init line scripts to do drop/add to what I just described.

Previously we used to drop not just our pants but also backpacks and ammo. At least now we are limited to loosing pants. There is no consistent behavoir. Sometimes when I join, both me and other human players loose their uniform. Sometimes I can keep mine but not the others and the other way around.

But I would agree that it feels like a synchronization issue in network code.

Can someone give me(upload here) a repro mission like it was described here http://feedback.arma3.com/view.php?id=15298#c60801

Concrete:
"Loadout scripts are used where it first removes and then adds uniforms to players"

It would be a big help for my debug purposes and your tests ;-)

Gibbo added a comment.Dec 3 2013, 12:23 PM

I uploaded a sample mission with a few attempted workarounds as you will see. Nevertheless, the problem is 100% reproducable when you are at least 2 human players. It happens when you exit/re-enter the mission or die and respawn.

Gibbo: thanks gibbo..

Gibbo added a comment.Dec 3 2013, 12:29 PM

2013-12-02_00010.jpg. So here we are, enjoying the moon-light and waiting to blow something up. Me in my fancy uniform and my squad leader in his undies... Not a pretty sight.

Any updates so far?

I just tried myself: An uniform added locally won't be transmitted over the network in my test. Also, if "addUniform" gets executed on the dedicated server, everyone (even the player itself) sees the soldier naked. This means, addUniform's internal "removeUniform" gets transmitted over the network, but the new uniform won't.

So use BIS_fnc_MP to broadcast addUniform? It'd be nice for this to be global. That way, I can stop listening to how it's a bug instead of a minor inconvenience.

How would you possibly pass the reference of the current player (variable player) to BIS_fnc_MP?

Arctor added a subscriber: Arctor.May 7 2016, 5:05 PM

It's weird, I can get every AI dressed in MP by using a while-loop in a BIS_fnc_MP function. The condition for the while is the unit not having a Uniform. It works, all units have a uniform. Yet once the unit has the Uniform and the script moves on to adding the Vest, the Uniform disappears again.

At this point the script moves to adding ammo and such and finds not enough room.

Summary: Even with the BIS_fnc_MP workaround I can only dress them in either Uniforms OR Vests. Units can't wear Uniform + Vest at the same time in dedicated server.

Edit: Got the workaround working. Trick is to keep checking on all machines (BIS_fnc_MP if you run your gear-script dedi-only) wether the unit has the right uniform and addUniform it. It takes about 300 cycles before it 'sticks' and results in a small period of glitching (losing/regaining uniforms) for AI units just after they spawn.

Edit2: A little tip is to not add any items/ammo to the uniform and save it for last (to make sure AI don't lose any ammo that was in their uniform during this 'glitching period')

It is a bug and its a major inconvenience. It makes no sense whatsoever that removeUniform is distributed but addUniform is not. Broadcasting through BIS_fnc_MP does not solve the problem. From what I can tell the sychronization problem is also not limited to only uniforms.

"From what I can tell the sychronization problem is also not limited to only uniforms."

This indeed seems to be the underlying issue. Allow me to quote the most frequent errors from local-rpt:

LODShape::AddLoadHandler: Handler not present in shape [a3\weapons_f\empty.p3d]

soldier[B_recon_LAT_F]:Some of magazines weren't stored in soldier Vest or Uniform?

Client: Object 2:11326 (type Type_85) not found.

And, maybe you know this strange one:

c:\w\c_branch\poseidon\futura\lib\network\networks erver.cpp ClearNetServer:NOT IMPLEMENTED - briefing!

Just to be sure everything is listed.

Why its still not fixed? Its a pretty important feature for the community

Probably because it is not an easy fix. Problems with distributed code is usually hard to both diagnose and verify. Im sure BI puts effort into this. Actually, im not that sure but I do have confidence.

Why not use the same logic as addVest does for addUniform and addBackpack? IMHO this is actually just the same...

It does bug when you use adduniform with a uniform from a different side. If you use adduniform with a uniform of the same side of your class it does work globally.

Tachi added a comment.Jan 22 2014, 2:30 AM

No, it does not work

Test by yourself with BLUFOR players, name one p1 then add triggers with :
if (player==p1) then {p1 adduniform "U_B_GhillieSuit";};
and another trigger with
if (player==p1) then {p1 adduniform "U_NikosBody";};

When someone launch one of these trigger they will run only on locally P1, notice that P1 is switched to Ghilie suit for everybody connected fine.
Then use the second trigger, notice that only p1 locally see himself as Niko, other still see him with its previous uniform.
(IE only uniform from same side are allowed on character hence broadcasted MP wise even if locally you can enforce an uniform from another side)

Gibbo added a comment.Jan 22 2014, 8:24 AM

The side of the uniform does not have any relevance accordingly to my tests. It simply does not work.

Any news from the developers on this being fixed? It's really annoying.

This also happens to AI characters, not limited to just players.

Gibbo added a comment.Feb 8 2014, 12:47 PM

I don't think they can fix it with a reasonable effort because the code is a total mess.. Otherwise it would have been fixed already. Also, evolving the SP experience (that nobody cares about) has a higher priority than fixing broken things. So it may just take a couple of months or years, who knows.

^^^ Being all negative about it sure is not helping.

Gibbo added a comment.Feb 8 2014, 1:41 PM

Youre right, being all positive is sure going to help. [Issue submitted: 2013-10-08 21:36]. Like they are making us a favor by fixing this malfunction.. At least my patience has run out, mainly due to the lack of feedback.

This helps and no enemy was wearing Underwear,
but it works only when it runs more then 3 rounds on each Client and server!!

It looks like there was an Errorlogentry for each enemy unit???
Testet in MP; "adduniform" to Players and AI!!

RUNS ON EVERY MACHINE!!!

~ 30 spawned OPFOR Soldiers + 3 OPFOR Human Player

Script Runtime 18sec from hint to hint!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

private ["_uni","_end","_num"];
_uni = 0;
_end = 0;
_num = 0;
pubcust = 1;
publicvariable "pubcust";
sleep 6;
Hint "start";
//sleep 20;
waitUntil{pubcust == 1};
while {pubcust == 1} do
{

Schütze,Teamleader,Truppführer "O_Soldier_SL_F" und "O_Soldier_TL_F"
{if ((( _x isKindOf "O_Soldier_SL_F" ) OR ( _x isKindOf "O_recon_F" ) OR ( _x isKindOf "O_crew_F" ) OR ( _x isKindOf "O_Soldier_TL_F" ) OR (_x isKindOf "O_Soldier_F") OR ( _x isKindOf "O_recon_TL_F" ) OR ( _x isKindOf "O_soldierU_F" ) OR ( _x isKindOf "O_soldierU_TL_F" ) OR ( _x isKindOf "O_SoldierU_SL_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Automatik-Schütze "O_Soldier_AR_F"
{if ((( _x isKindOf "O_Soldier_AR_F" ) OR ( _x isKindOf "O_Soldier_lite_F" )OR ( _x isKindOf "O_soldierU_AR_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Zweiter - Automatik-Schütze "O_Soldier_AAR_F"
{if ((( _x isKindOf "O_Soldier_AAR_F" ) OR ( _x isKindOf "O_Soldier_A_F" ) OR ( _x isKindOf "O_Soldier_AAT_F" ) OR ( _x isKindOf "O_soldierU_AAR_F" ) OR ( _x isKindOf "O_soldierU_AAT_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Sanitäter "O_medic_F"
{if ((( _x isKindOf "O_medic_F" ) OR ( _x isKindOf "O_recon_medic_F" ) OR ( _x isKindOf "O_soldierU_medic_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Marksman or Sniper "O_spotter_F" and "O_sniper_F"
{if ((( _x isKindOf "O_spotter_F" ) OR ( _x isKindOf "O_sniper_F" ) OR ( _x isKindOf "O_soldier_M_F" ) OR ( _x isKindOf "O_recon_M_F" ) OR ( _x isKindOf "O_soldierU_A_F" ) OR ( _x isKindOf "O_soldierU_M_F" )) AND NOT (uniform _x == "U_I_CombatUniform_shortsleeve")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_shortsleeve")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_shortsleeve";
if (uniform _x == "U_I_CombatUniform_shortsleeve") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Grenadier "O_Soldier_GL_F"
{if ((( _x isKindOf "O_Soldier_GL_F" ) OR ( _x isKindOf "O_recon_LAT_F" ) OR ( _x isKindOf "O_soldierU_LAT_F" ) OR ( _x isKindOf "O_SoldierU_GL_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

AT Schütze "O_Soldier_LAT_F" und "O_Soldier_AT_F"
{if ((( _x isKindOf "O_Soldier_LAT_F" ) OR ( _x isKindOf "O_Soldier_AT_F" ) OR ( _x isKindOf "O_soldierU_AT_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

AA Schütze "O_Soldier_AA_F"
{if ((( _x isKindOf "O_Soldier_AA_F" ) OR ( _x isKindOf "O_Soldier_AAA_F" ) OR ( _x isKindOf "O_soldierU_AA_F" ) OR ( _x isKindOf "O_soldierU_AAA_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Repair and Explosive
{if ((( _x isKindOf "O_soldier_repair_F" ) OR ( _x isKindOf "O_soldier_exp_F" ) OR (_x isKindOf "O_engineer_F") OR ( _x isKindOf "O_recon_exp_F" ) OR ( _x isKindOf "O_soldierU_exp_F" ) OR ( _x isKindOf "O_soldierU_repair_F" ) OR ( _x isKindOf "O_engineer_U_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Piloten und Crew
{if ((( _x isKindOf "O_Pilot_F" ) OR ( _x isKindOf "O_helicrew_F" ) OR ( _x isKindOf "O_helipilot_F" )) AND NOT (uniform _x == "U_I_HeliPilotCoveralls")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_HeliPilotCoveralls")) then {
removeUniform _x;
_x addUniform "U_I_HeliPilotCoveralls";
if (uniform _x == "U_I_HeliPilotCoveralls") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Mörser und MG Teams
{if ((( _x isKindOf "O_support_AMort_F" ) OR ( _x isKindOf "O_support_AMG_F" ) OR ( _x isKindOf "O_support_MG_F" ) OR ( _x isKindOf "O_support_GMG_F" ) OR ( _x isKindOf "O_support_Mort_F" )) AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {
removeUniform _x;
_x addUniform "U_I_CombatUniform_tshirt";
if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Offiziere
{if (( _x isKindOf "O_officer_F" ) AND NOT (uniform _x == "U_I_OfficerUniform")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_I_OfficerUniform")) then {
removeUniform _x;
_x addUniform "U_I_OfficerUniform";
if (uniform _x == "U_I_OfficerUniform") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

Specialists
{if ((( _x isKindOf "O_recon_JTAC_F" ) OR ( _x isKindOf "O_soldier_PG_F" ) OR (_x isKindOf "O_soldier_UAV_F")) AND NOT (uniform _x == "U_OG_Guerilla1_1")) then {
_uni = 0;
if (isServer) then {removeUniform _x};
while {_uni == 0} do {if (!(uniform _x == "U_OG_Guerilla1_1")) then {
removeUniform _x;
_x addUniform "U_OG_Guerilla1_1";
if (uniform _x == "U_OG_Guerilla1_1") then {_uni = 1};};};
};} forEach allunits;
_num = _num + 1;

if (_num > 48) then {Hint "Fertig";pubcust = 0;};
sleep 5;
};

Hint "Fertig";
exit;

Logfile entry for this activity:
Server: Object 3:879 not found (message 110)
Server: Object 3:878 not found (message 110)
Server: Object 3:883 not found (message 110)
Server: Object 3:880 not found (message 110)
Server: Object 3:881 not found (message 110)
Server: Object 3:882 not found (message 110)
Server: Object 3:884 not found (message 110)
Server: Object 3:885 not found (message 110)
Server: Object 3:886 not found (message 110)
Server: Object 3:889 not found (message 85)
Server: Object 3:890 not found (message 110)
Server: Object 3:888 not found (message 85)
Server: Object 3:894 not found (message 110)
Server: Object 3:895 not found (message 85)
Server: Object 3:893 not found (message 85)
Server: Object 3:887 not found (message 110)
Server: Object 3:892 not found (message 85)
Server: Object 3:891 not found (message 110)
Server: Object 3:899 not found (message 85)
Server: Object 3:898 not found (message 85)
Server: Object 3:897 not found (message 85)
Server: Object 3:896 not found (message 85)
Server: Object 3:900 not found (message 110)
Server: Object 3:901 not found (message 85)
Error: Object(3 : 895) not found
Error: Object(3 : 899) not found
Error: Object(3 : 898) not found
Error: Object(3 : 897) not found
Error: Object(3 : 901) not found
Server: Object 3:888 not found (message 110)
Server: Object 3:920 not found (message 110)
Server: Object 3:910 not found (message 85)
Server: Object 3:911 not found (message 110)
Server: Object 3:912 not found (message 110)
Server: Object 3:913 not found (message 110)
Server: Object 3:914 not found (message 110)
Server: Object 3:915 not found (message 110)
Server: Object 3:916 not found (message 110)
Server: Object 3:917 not found (message 110)
Server: Object 3:918 not found (message 110)
Server: Object 3:919 not found (message 110)
Server: Object 3:921 not found (message 110)
Server: Object 3:909 not found (message 110)
Server: Object 3:924 not found (message 85)
Server: Object 3:927 not found (message 85)
Server: Object 3:923 not found (message 85)
Server: Object 3:922 not found (message 110)
Server: Object 3:926 not found (message 110)
Server: Object 3:925 not found (message 110)
Server: Object 3:930 not found (message 85)
Server: Object 3:929 not found (message 110)
Server: Object 3:928 not found (message 110)
Server: Object 3:931 not found (message 110)
Error: Object(3 : 924) not found
Error: Object(3 : 923) not found
Error: Object(3 : 927) not found
Error: Object(3 : 930) not found
Ref to nonnetwork object Agent 0x7b792040
Ref to nonnetwork object Agent 0x7b792040

The Global exec. of "adduniform" without "removeuniform" first, removes the uniform as well. When you execute it twice, it will add the uniform on all clients.

the twice issue maybe?
1 Player = 2 exec./ 2 Player = 4 exec./...6/8/10...

there is no 1/3/5/7...possible exept Server lose one (in the logfile)???

Hope i could help...

its a network lottery and the winner is ?? NAKED! ...Oops ;)

There are several ways leading to Rome...
First is, to realize a "closing Container syncronize" [every add or remove will open the container, but only the CargoGlobal command will publish it]!
Second way is, no Container slot can be filled, when it´s not empty [remove allways local!]

It can not work when remove and add are global both! a Global remove makes no sense either! a container which is empty, is empty!
You try to predefine container loadouts, then you have recognized that you need a removeGlobal...LOL

A glas of water, is, when it is half filled with water, a halffull glas of water. But you can´t buy halffull glasses of water. XD

_pos = position _unit;
_unit attachto [_wardrobe,[0,0,1]];
_wardrobe enableSimulationGlobal false;
_unit addUniform "U_I_CombatUniform_tshirt";
_wardrobe enableSimulationGlobal true;
sleep 1;
detach _unit;
_unit setpos _pos;

can anyone confirm that this works? I can´t test it MP at the Moment, but it seems to do what it should do...

Still broken. This is really strange case, why addVest works and addUniform doesn't?

tyl3r99 added a subscriber: tyl3r99.May 7 2016, 5:05 PM

hope they fix this soon... :(

gdscei added a comment.May 1 2014, 1:30 PM

Any update on this?

I thought this might get fixed with #18408, but this issue still occurs.

Example scenario:

  • Player spawns in mission with certain uniform and items in uniform
  • addUniform is used from client (player)
  • On server, uniformItems still returns items that were in previous uniform, and not the items that are in the currently equipped uniform.

The addUniform or removeUniform has been never executet by a trigger or a script.
The restricted Uniforms change to underwear and the allowed Uniforms change into default.

onPlayerconnect start script on server.This is filtering the clientid for the Jiped Player and send two Variables (V) to him. Now a repeatable trigger with:

cond:
!(isServer)&&(V1 == 1)

onAct:
V1=0;removeGoggles V2;removeallweapons V2;removeAllItemsWithMagazines V2;removeBackpack V2;removeHeadgear V2;V2 addheadgear "H_Beret_grn";V2 unassignItem "NVGoggles";V2 removeItem "NVGoggles";V2 addweapon "Rangefinder";V2 assignitem "Rangefinder";

onDeact:
nothing

that happen:

http://feedback.arma3.com/file_download.php?file_id=8264&type=bug

Cheers
Cyborg

PS: we dont forget that ;)

OOOOkay ;)
I am absolutly sure now.
This bug has nothing to do with addUniform!
it only occurs when Player wear restricted Uniforms!
And it happen when another Player Join in.
There is another special effect with headgears but thats not a bug, thats a feature^^

No problem with non restricted Vanilla Uniforms!
Only tested for Blufor.

Cheers
Cyborg

..........OMG....!?!

the restriction is LOCAL! When addUniform overwrite the (please dont wear this)the player wears clothes, he should not wear.
Thats ok on his PC... but the addUniform can not overwrite the (please dont wear this) on other client PC´s.

The Server (Host Pc Player) will be reseted to the default Unit Uniform, and not to Underwear?! Why that.... grrr

ideas?

Come on , this must be solvable.

Cyborg, the part after your "OMG" is exactly why this ticket exists. As you said, addUniform only changes clothing locally, not globally.. as this ticket's name is (addUniform is not global)

Chillax people, the grand master of 0s and 1s japapatramtara is on the case right now!

That sounds promising KK ;)

DEV. 124329

should be fixed

will be distributed tomorrow(probably ;-) )

Woo! Thanks japa :)
Will make sure to try it out when it gets there.

I've tested it on today's DEV (124337). It's working good now (both on mission start and JIP, for both the uniform and uniform items), thanks for the fix japapatramtara!

Maybe you missunderstood me.
I did not say addUniform was only local.
It works fine ;)
It doesn´t work with faction locked Uniforms, and thats not the same!
On the client PC where it is executed, it will overwrite the restriction.
On other client PC´s the restriction is blocking the execution of adduniform.

thats what i am saying.

Cheers Cyborg

Cyborg, can you try this again in the devbranch? It should have been fixed, and it works for me.

my statements relate only to the non-developer version. I think Japapatramtara will have no problems to check whether it works or not.

make a mission place two Opfor O_Soldier_F. (named "one" and "two")
three playable civilians. Host/Client/Client
start a server let clients join and open devcon.

type: ^one adduniform "U_I_CombatUniform_tshirt"^ (without^)
look what happen (local/global/Server).
type: ^removeuniform two; two adduniform "U_I_CombatUniform_tshirt"^
look what happen (local/global/Server).

restart mission

type: ^{if ((_x isKindOf "O_Soldier_F") AND NOT (uniform _x == "U_I_CombatUniform_tshirt")) then {_uni = 0;while {_uni == 0} do {if (!(uniform _x == "U_I_CombatUniform_tshirt")) then {removeUniform _x;_x addUniform "U_I_CombatUniform_tshirt";if (uniform _x == "U_I_CombatUniform_tshirt") then {_uni = 1};};};};} forEach allunits;^

look what happen (local/global/Server).

if everything is fine, you will see it ;)

cheers Cyborg

PS: restart mission each time you test (local/global/server) and make sure every client and server was in Game and not at desktop with minimized Arma!!

Arma3 will not execute scripts or triggers when it is minimized....(thats a problem... some of my friends for ex. hate long flights and spend their time at Youtube during the journey. I told them to turn off electronical devices, but...^^ lol

or test JIP here:

http://feedback.arma3.com/file_download.php?file_id=8337&type=bug

try locked or unlocked Uniforms and let the last client JIP.

There are some JIP problems with addUniform now.

If I add uniform to server unit from my client, it changes on both my client and the server

If I then log out and log back in, on my client the server unit will be wearing original uniform while server will report new uniform. What is really weird is when I query uniform of the server unit on my client it will return ""

addVest works as intended though, go figure.

A note to japapatramtara:

Pilot uniform U_B_HeliPilotCoveralls in fact works fine with JIP, U_I_CombatUniform_tshirt uniform fails.

DEV. 12493
[FIXED] - addUniform doesn't check uniform allowance

DEV. 127033
two new scripting commands were introduced - addBackpackGlobal and removeBackpackGlobal

will be distributed tomorrow

To summarise:

addUniform is global now, global argument global effect. There are restricted uniforms that cannot be added with addUniform, those can be checked with isUniformAllowed command. Any uniform can be added with forceAddUniform that is also global.

As far as the ticket title goes, this is resolved.

Additionally old arma 2 commands addBackpack, removeBackpack that take local argument appear to be inconsistent with add/removeUniform and add/removeVest commands, which are completely global. So not to break backwards compatibility, addBackpackGlobal and removeBackpackGlobal are added, which are, well, global.

Therefore marking this ticket resolved.

Have any of you had issues with addWeaponGlobal not having a counterpart with the associated weaponitems? If I add addWeaponGlobal to server only code and have BE filters to kick for addWeaponGlobal the clients are fine. However I have found no way around having addPrimaryWeaponItem, addSecondaryWeaponItem and addHandgunItem only being able to be run on clients. While this is a small issue it means only having part of the toolkit necessary to restrict unwanted items client side. I didn't want to start another report since this one had similar issues but will if killzone feels it's out of scope.

Just tested, seems addPrimaryWeaponItem, addPrimaryWeaponItem, addHandgunItem are not global. Lets see if the codelord himself can fix this :)

http://feedback.arma3.com/view.php?id=21025

Mass-closing all resolved issues not updated in the last month.

Please PM me in BI Forums (http://forums.bistudio.com/member.php?55374-Fireball) if you feel your bug was closed in error.