The briefing should work quite normally, but you need to add waituntil-part to briefing.sqf:
Init.sqf:
_nul = [] execVM "briefing.sqf";
Briefing.sqf:
waitUntil {!isNull player};
task2 = player createSimpleTask [Localize "STR_T2H"];
task2 setSimpleTaskDescription [Localize "STR_T2", Localize "STR_T2H", Localize "STR_T2W"];
task2 setSimpleTaskDestination (getmarkerpos "UNm");
...
For "Join in Progress"-players you update the current task status(es) and add new tasks with:
Init.sqf
_nul = [] execVM "briefing.sqf";
if (isnil("Var2")) then {Var2=false;};
if (isnil("Var3")) then {Var3=false;};
if (isnil("VarOBJ2")) then {VarOBJ2 = 0;};
if (isnil("VarOBJ3")) then {VarOBJ3 = -1;};
if (local server) then {} else {_nul = [] execVM "History.sqf";};
History.sqf:
waitUntil {!isNull player};
//-1 not made, 0 created, 1 finished, 2 assigned, 3 failed
if (VarOBJ2==-1) then {};
if (VarOBJ2==0) then {};
if (VarOBJ2==1) then {task2 settaskstate "SUCCEEDED";};
if (VarOBJ2==2) then {player setCurrentTask task2;};
if (VarOBJ2==3) then {};
if (VarOBJ3==-1) then {};
if (VarOBJ3==0) then {
task3 = player createSimpleTask [Localize "STR_T3H"];
task3 setSimpleTaskDescription [Localize "STR_T3", Localize "STR_T3H", Localize "STR_T3W"];
task3 setSimpleTaskDestination (getmarkerpos "AAm");
player setCurrentTask task3;
};
if (VarOBJ3==1) then {
task3 = player createSimpleTask [Localize "STR_T3H"];
task3 setSimpleTaskDescription [Localize "STR_T3", Localize "STR_T3H", Localize "STR_T3W"];
task3 setSimpleTaskDestination (getmarkerpos "AAm");
task3 settaskstate "SUCCEEDED";
};
if (VarOBJ3==2) then {};
if (VarOBJ3==3) then {};
First you need server logic placed on map. Then use publicVariables that are changed by server. E.g. when task is done:
A script for server to run (condition local server && this - e.g. "this" from seized area):
Var3=true; publicVariable "Var3";
VarOBJ3=0; publicVariable "VarOBJ3";
task3 = player createSimpleTask [Localize "STR_T3H"];
task3 setSimpleTaskDescription [Localize "STR_T3", Localize "STR_T3H", Localize "STR_T3W"];
task3 setSimpleTaskDestination (getmarkerpos "AAm");
player setCurrentTask task3;
sleep 5;
Var3=false; publicVariable "Var3";
For clients already in server a separate script (condition !(local server) && Var3):
task3 = player createSimpleTask [Localize "STR_T3H"];
task3 setSimpleTaskDescription [Localize "STR_T3", Localize "STR_T3H", Localize "STR_T3W"];
task3 setSimpleTaskDestination (getmarkerpos "AAm");
player setCurrentTask task3;
With VarOBJ3=true; publicVariable "VarOBJ3" then JIP-player have updated task data too.