Skip to content

Commit

Permalink
Merge pull request #154 from IrLED/HC-validation
Browse files Browse the repository at this point in the history
Headless client validations
  • Loading branch information
IrLED committed Dec 11, 2017
2 parents 4b046c3 + 392ff92 commit b3e9ea8
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 17 deletions.
1 change: 1 addition & 0 deletions AntistasiOfficial.Altis/initPlayerLocal.sqf
Expand Up @@ -70,6 +70,7 @@ disableUserInput false;
//Give default civilian gear
player setUnitLoadout (getUnitLoadout (configFile >> "CfgVehicles" >> "C_man_polo_1_F"));
player forceAddUniform (selectRandom civUniforms);
removeGoggles player;
player addWeapon "ItemRadio";
player addWeapon "ItemGPS";
player addWeapon "Binocular";
Expand Down
2 changes: 1 addition & 1 deletion AntistasiOfficial.Altis/mission.sqm
Expand Up @@ -127,7 +127,7 @@ class Mission
{
class Intel
{
briefingName="[SP/CO] - Antistasi Altis Blufor 1.7.18";
briefingName="[SP/CO] - Antistasi Altis Blufor 1.7.18 - hcfix2";
overviewText="Build FIA Army from scratch and defeat the AAF and CSAT forces in a whole map Dynamic Mission.";
resistanceWest=0;
resistanceEast=1;
Expand Down
15 changes: 10 additions & 5 deletions AntistasiOfficial.Altis/workers/fn_initWorker.sqf
Expand Up @@ -15,10 +15,15 @@
#define DEBUG_MODE_FULL
#include "script_component.hpp"

if !(isNil "headlessInit") exitWith {};
if !(isNil "AS_workerInit") exitWith {};
if (!hasInterface && !isDedicated) then {
INFO_1("Headless client initialization. ownerID: %1", clientOwner);
LOG("Sending registration info to the server");
[clientOwner] remoteExec ["AS_fnc_registerWorker", 2];
[] spawn {
waitUntil {!isNull player};
waitUntil {sleep 1; !isNil "AS_workerServer"};
LOG_1("allPlayers: %1", allPlayers);
INFO_1("Headless client initialization. ownerID: %1", clientOwner);
LOG("Sending registration info to the server");
[clientOwner] remoteExec ["AS_fnc_registerWorker", 2];
};
};
headlessInit = 1;
AS_workerInit = 1;
10 changes: 9 additions & 1 deletion AntistasiOfficial.Altis/workers/fn_initWorkerServer.sqf
Expand Up @@ -16,4 +16,12 @@

workerArray = [2];
addMissionEventHandler ["PlayerDisconnected",{[_this select 4] call AS_fnc_unregisterWorker;}];
INFO("WorkerServer init done");
[] spawn {
LOG("Waiting for allPlayers !isEqualTo []");
waitUntil {sleep 1; !(allPlayers isEqualTo []);};
LOG("SUCCESS allPlayers !isEqualTo []");
AS_workerServer=true;
publicVariable "AS_workerServer";
LOG("AS_workerServer set");
};
INFO("WorkerServer init done");
26 changes: 16 additions & 10 deletions AntistasiOfficial.Altis/workers/fn_registerWorker.sqf
Expand Up @@ -16,14 +16,20 @@
#include "script_component.hpp"

if !isServer exitWith {};
params["_id"];
INFO_1("Registartion request received. ID: %1", _id);
//validation
if ({owner _x == _id;}count allPlayers != 1) exitWith {ERROR_1("Validation failed, no entity with id:%1 found", _id);};
INFO("Validation passed");
//registartion
workerArray pushBackUnique _id;
_this spawn{
params["_id"];
INFO_1("Registartion request received. ID: %1", _id);
//validation
private _time = diag_tickTime + 300;
waitUntil{sleep 1; ({owner _x == _id;}count allPlayers == 1) OR diag_tickTime > _time}; //300sec timeout for sync issues
LOG_1("AllPlayers: %1", allPlayers);
LOG_1("Count of ids: %1", {owner _x == _id;}count allPlayers);
if ({owner _x == _id;}count allPlayers != 1) exitWith {ERROR_1("Validation failed, no entity with id:%1 found", _id);};
INFO("Validation passed");
//registartion
workerArray pushBackUnique _id;

//custom post-registartion execution
private _workerInitialization ={INFO("[SERVER] Registartion successful.");};
[_workerInitialization] remoteExec ["call", _id];
//custom post-registartion execution
private _workerInitialization ={INFO("[SERVER] Registartion successful.");};
[_workerInitialization] remoteExec ["call", _id];
};
1 change: 1 addition & 0 deletions AntistasiOfficial.Altis/workers/fn_unregisterWorker.sqf
Expand Up @@ -17,5 +17,6 @@

if !isServer exitWith {};
params["_id"];
if !(_id in workerArray) exitWith {};
INFO_1("Deregistartion request received. ID: %1", _id);
workerArray = workerArray - [_id];

0 comments on commit b3e9ea8

Please sign in to comment.