I think I had an epiphany ... at least until the next BI or BE change.
Since serverCommand doesn't work any more, no direct script kicking of an HC that gets itself in the wrong slot.
But maybe we can use BattleEye script scanning to do the job by intentionally having a wrongly slotted HC run/compile a script that has forbidden code.
So, in BE scripts.txt add:
5 "I_AM_A_BAD_HC_IN_WRONG_SLOT"
or if you want no logging of the kick:
4 "I_AM_A_BAD_HC_IN_WRONG_SLOT"
(sorry, too lazy to put it in the new regex format)
then early in the mission init.sqf (or some place a HC would run when connected or mission starts):
if ((!isDedicated) && (!hasInterface)) then {
call compile preprocessFileLineNumbers "<path and filename to badHC.sqf>" };
and in the badHC.sqf file put:
private ["_something"];
waitUntil {!isNull player;};
if !( side player == civilian ) then {
_something = "I_AM_A_BAD_HC_IN_WRONG_SLOT"; };
I am hoping this will simply continue to kick a HC over and over until it gets itself into the right slot.
Obviously if BE is turned off, this will not work.
My proposal relies on the assumption that a standard player client parsing the init.sqf file will not meet the (!isDedicated)&&(!hasInterface) condition and will therefore not even bother to compile the badHC.sqf script (not really sure what triggers BE, parsing, compiling, calling/spawning/Exec'ing, etc....)