Some remarks:
- You should avoid such code in the init field of a playable unit. Each JIP will run that and override your states like setCaptive or disableAI "move"!, unless you specify it's for server only.
Yes, JIP reads and runs all codes in description.ext but also mission.sqm where all your init fields are, and each time a code is made of global Effect commands EG, it overrides the value everywhere.
- on the other hand, addAction doesn't have sense on dedicated server (no interface), and furthermore, this command is not respawn persistent.
I suggest you to use:
initServer.sqf for codes which have to run at the start of the mission, regardless of the players' join in. It's roughly the same as if (isServer) then {...} in the init.sqf. The best place for init states of units before then become players.
init.sqf for codes which have to run for every PC (server + clients), with the same behaviour as all init fields of objects, common triggers... A good place for some common functions, global variables initialization (if no need to update them with publicVariable)
initPlayerLocal.sqf for all stuff in regard with JIP, without messing with the other players' status: specific loadout...
onPlayerRespawn.sqf for all non persistent stuff at respawn. Some EH are, addAction aren't.
For addAction, this specific command can have it's own powerful conditions, so you can write it:
- in init.sqf (run at every JIP but addAction is not multiplicated as far as filtered by its own condition),
- or in initPlayerLocal.sqf, the safest place.
Don't forget to place it also in onPlayerRespawn.sqf (or in an equivalent
event Handler Respawn)