After long server uptime and hundreds of different players that went through the server server, it starts to spawn bugged unremovable player units at spawn and respawn positions. Appearance of these bugged units is complete mystery for us and it seems to be happening absolutely randomly. Here are some of our observations and experiments:
- Interesingly there is always just a single bugged unit at initial spawn spot (the one where unit is placed in editor) and several bugged units at respawn points ("respawn_west", "respawn_east", "respawn_guer" markers).
Always just 1 unit as initial spawn point: http://img.ii4.ru/images/2014/02/23/468481_2014_02_17_00016.jpg
Multiple units at respawn points: http://img.ii4.ru/images/2014/02/23/468482_2014_02_17_00015.jpg
- These bugged units constantly spam "Client: Object XXX (type YYY) not found." messages in server and client RPTs. Here is a proof:
netId command called on bugged unit: http://img.ii4.ru/images/2014/02/11/464654_2014_02_11_00007.jpg and we had hundreds of "2014/02/11, 17:47:48 Client: Object 2:2703 (type Type_116) not found." messages in server RPT
- Sometimes these bugged units have uniforms, vests and even backpacks. Our mission never spawns vests or backpacks on newly spawned players or anywhere later in the mission, the only way how you can get these items is to find them in mission environment and equip them through Inventory screen (no addBackpack, addVest command calls on player ever in the mission).
Backpack 1: http://img.ii4.ru/images/2014/02/23/468471_2014_02_17_00031.jpg
Backpack 2: http://img.ii4.ru/images/2014/02/23/468475_2014_02_17_00032.jpg
Backpack 3: http://img.ii4.ru/images/2014/02/23/468477_2014_02_17_00037.jpg
Vest: http://img.ii4.ru/images/2014/02/23/468478_2014_02_17_00034.jpg
(These backpacks never added to AI units either, they are only spawned into weapon holders or crates)
- We tried calling different commands on these units and here are results:
_unit in allUnits => false
_unit in playableUnits => false
_unit in (allMissionObjects "") => true
typeOf _unit => "C_Man_1" (class that we use for all player units)
str _unit => "blufor32" (vehicle name set in editor, each playable unit has unique vehicle name for each player)
name _unit => "Error: No unit"
group _unit => grpNull ("<NULL-group>")
side _unit => CIV (players can only play as BLUFOR, OPFOR and Independent in the mission. Their playable units are civilians though.)
uniform _unit => "" (Even though units appear to have uniform on them which is probably just their config model)
weapons _unit => []
setVariable\getVariable => Units properly store variables assigned to them
deleteVehicle _unit (from client) => Nothing happens
deleteVehicle _unit (from server) => Nothing happens
_unit setDamage 1 => Nothing happens
alive _unit => true
isPlayer _unit => false
getPlayerUID _unit => ""
backpack\vest => Returns backpack or vest if bugged unit has any
netid _unit => Returns their netid, always starts with 2:xxx
selectPlayer _unit => Nothing happens
_unit setPos\ATL\ASL => Nothing happens
_unit attachTo [...] => Properly attaches
owner _unit (from server) => 0 (Like on any preplaced objects like trees, rocks, etc.)
Some details about mission:
- selectPlayer\setPlayable command is never used
- Player has "Respawn", "Killed", "Fired" and "HandleDamage" event handlers attached to him on client side after they are initialized (waitUntil {player == player})
- Units init lines are empty
- Respawn settings from description.ext:
respawn="BASE";
respawnDelay=5;
disabledAI=1;
More info
Apparently these bugged units are not present on the server as
{typeOf _x == "C_Man_1" && alive _x && !isPlayer _x} count (allMissionObjects "") returns number of these bugged units on client while on server it always returns 0. This might mean that these bugged units are simply not included in allMissionObjects search though.