123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- Player_SCFramework.SQF
-
- Player-side global variables, functions, and eventhandlers for BDC's Client ID's Framework
-
- Written for A3 by ^bdc May 2017
- */
- if (!hasInterface || isServer) exitWith {}; // player clients only
- SCFramework_ClientID = nil; // This global variable may be referenced by any other script if needed for owner/clientID purposes
- // Eventhandler that sent from server when initial eventhandler below is called by player client machine
- "SCFramework_PlayerSendClientID" addPublicVariableEventHandler {
- _Array = _this select 1;
- _SentUID = _Array select 0;
- _SentClientID = _Array select 1;
- if (getPlayerUID player == _SentUID) then {
- SCFramework_ClientID = _SentClientID; // This global variable may be referenced by any other script if needed
- diag_log format["(SCFramework) Response received from server. My Client ID: %1",SCFramework_ClientID];
- };
- };
- // Response from server for on-the-fly ServerFPSReport
- "SCFramework_ServerFPSResponse" addPublicVariableEventHandler {
- if (ServerFPSReport_Enabled) then {
- _Array = _this select 1;
- ServerFPSReport_Received = ServerFPSReport_Received + [_Array];
- };
- };
- // Display event handler that captures keystroke to fire up ServerFPSReport
- BDC_SCFramework_ServerFPSReportKeystroke = {
- // Passed Args
- _dikCode = _this select 1;
- _shiftState = _this select 2;
- _ctrlState = _this select 3;
- _altState = _this select 4;
- _handled = false;
- // Server FPS Report (Configured keystroke) (SCFramework)
- if (_dikCode == (BDC_SCFramework_ServerFPSReport_KeyCodes select 0) && !_shiftState && !_ctrlState && !_altState) then {
- if (ServerFPSReport_Enabled) then {
- hintSilent "";
- ServerFPSReport_Enabled = false;
- cutText ["Server FPS Reporting DISABLED.", "PLAIN DOWN"];
- } else {
- ServerFPSReport_Enabled = true;
- [] spawn SCFramework_DisplayFPSReport;
- cutText ["Server FPS Reporting ENABLED.", "PLAIN DOWN"];
- };
- _handled = true;
- };
- if (_dikCode == (0x3C) && !_shiftState && !_ctrlState && !_altState) then {
- if (BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Enable) then {
- BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Enable = false;
- cutText ["Automatic Transferrence of Zeus-spawned AI DISABLED.", "PLAIN DOWN"];
- } else {
- BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Enable = true;
- cutText ["Automatic Transferrence of Zeus-spawned AI ENABLED.", "PLAIN DOWN"];
- if (!BDC_SCFramework_TransferZeusOwnedAI_InitialEnable) then {
- BDC_SCFramework_TransferZeusOwnedAI_InitialEnable = true;
- [] spawn BDC_SCFramework_TransferZeusOwnedAI;
- };
- };
- };
- //diag_log format["keystroke EH TEST - dikcode %1 shiftstate %2 ctrlstate %3 altstate %4 handled %5",_dikCode,_shiftState,_ctrlState,_altSTate,_handled];
- _handled
- };
- diag_log format["(SCFramework) Player Client: Global variables reset and eventhandlers/functions loaded."];
- BDC_SCFramework_TransferZeusOwnedAI = {
- // Check if Zeus operator owns spawned-in AI
- diag_log format["(SCFramework) Starting TransferZeusOwnedAI monitor."];
- while {true} do {
- _PlayerGroup = group player;
- {
- _Group = _x;
- _ZeusFlagged = false;
- _ZeusFlagged = _Group getVariable ["ZeusFlagged",false];
- if (local _Group && (_PlayerGroup != _Group) && (!_ZeusFlagged) && BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Enable) then { // We'll skip checking the group that we're in; otherwise it'll spam the server
- if (count units _Group > 0) then {
- if (BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_FlagOffloadedGroups) then {
- _Group setVariable ["ZeusFlagged",true,true]; // If enabled, only allow this group to automatically move to server once if it is moved back to a Zeus Op
- };
- SCFramework_ResetGroupOwnership = _Group;
- publicVariableServer "SCFramework_ResetGroupOwnership";
- if (BDC_SCFramework_DetailedLogging) then {
- diag_log format["(SCFramework) Transferring locally-owned AI group %1 to server.",_Group];
- };
- };
- };
- } forEach allGroups;
- sleep BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Frequency;
- };
- };
- // Check if admin for Server FPS report
- waitUntil {!isNull player};
- sleep 3;
- if ((getPlayerUID player) in BDC_SCFramework_ServerFPSReport_AdminUIDList) then {
- Fnc_ServerFPSReport = compile preProcessFileLineNumbers "SCFramework\Fnc_ServerFPSReport.SQF";
- [] spawn Fnc_ServerFPSReport;
- player addEventHandler ["Respawn",{ [] spawn Fnc_ServerFPSReport; }];
- BDC_SCFramework_ServerFPSReport_KeyboardPress = (findDisplay 46) displayAddEventHandler ["KeyDown","_this call BDC_SCFramework_ServerFPSReportKeystroke"];
- diag_log format["(SCFramework) Admin eventhandlers added. Press the F1 key to access the Server FPS report."];
- };
- // Automatic transfer of Zeus-owned AI
- if (BDC_SCFramework_HCOffloading_AutomaticOffLoading_TransferZeusOperatorAI_Enable) then {
- [] spawn BDC_SCFramework_TransferZeusOwnedAI;
- BDC_SCFramework_TransferZeusOwnedAI_InitialEnable = true;
- } else {
- BDC_SCFramework_TransferZeusOwnedAI_InitialEnable = false;
- };
|