client/addons/init/functions/fnc_handlePlayerLoad.sqf
Jacob Schmidt 90476345db feat: Enhance admin and bank systems with event handling and UI improvements
This commit introduces significant updates to the admin and bank systems, focusing on improved event handling and user interface enhancements. Key changes include:

- Refactored event handling for player data requests, paygrade updates, and message broadcasting in the admin panel.
- Implemented new event types for handling player funds and transaction history in the bank system.
- Updated JavaScript functions for better interaction with the web-based UI, including dynamic data requests and improved user feedback.
- Removed deprecated functions and streamlined code for better maintainability.

These enhancements aim to provide a more efficient and user-friendly experience for administrators and players alike.
2025-05-10 17:50:11 -05:00

114 lines
4.2 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Author: IDSolutions
* Handle player load from DB.
*
* Arguments:
* 0: Data from key <ARRAY|STRING|NUMBER|BOOL> (default: [])
*
* Return Value:
* None
*
* Example:
* [[_data]] call forge_client_init_fnc_handlePlayerLoad (Server or Singleplayer Only)
* [[_data]] remoteExecCall ["forge_client_init_fnc_handlePlayerLoad", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
private _data = _this;
private _defaultEmail = "unknown@spearnet.mil";
private _defaultPhoneNumber = "unknown";
if (_data isEqualTo [""]) then {
2 cutText ["No Save Found!", "PLAIN DOWN", 1];
[player] spawn EFUNC(player,firstLogin);
} else {
[format ["Welcome back %1. Your persistent locker, bank, cash and profile have been loaded.", name player], "blue-grey", 5] call EFUNC(misc,notify);
for "_i" from 0 to (count _data - 1) step 2 do {
private _key = _data select _i;
private _value = _data select (_i + 1);
if (_value isEqualType []) then {
_value = _value select 0;
};
switch (_key) do {
case "reputation": {
SETPVAR(player,Reputation,_value);
player addRating _value;
};
case "loadout": {
SETPVAR(player,Loadout,_value);
player setUnitLoadout _value;
};
case "direction": {
SETPVAR(player,Direction,_value);
player setDir _value;
};
case "cash": {
SETPVAR(player,FORGE_Cash,_value);
};
case "bank": {
SETPVAR(player,FORGE_Bank,_value);
};
case "armory_unlocks": {
SETPVAR(player,Armory_Unlocks,_value);
};
case "garage_unlocks": {
SETPVAR(player,Garage_Unlocks,_value);
};
case "locker": {
SETPVAR(player,FORGE_Locker,_value);
};
case "garage": {
SETPVAR(player,FORGE_Garage,_value);
};
case "email": {
SETPVAR(player,FORGE_Email,_value);
};
case "number": {
SETPVAR(player,FORGE_Phone_Number,_value);
};
case "paygrade": {
SETPVAR(player,FORGE_PayGrade,_value);
};
case "organization": {
SETPVAR(player,FORGE_Organization,_value);
};
case "stance": {
SETPVAR(player,Stance,_value);
player playAction _value;
};
case "holster": {
SETPVAR(player,FORGE_Holster_Weapon,_value);
if (_value) then {
[player] call AFUNC(weaponselect,putWeaponAway);
};
};
case "position": {
SETPVAR(player,Position,_value);
player setPosASL _value;
private _pAlt = ((getPosATLVisual player) select 2);
private _pVelZ = ((velocity player) select 2);
if (_pAlt > 5 && _pVelZ < 0) then {
player setVelocity [0, 0, 0];
player setPosATL [((getPosATLVisual player) select 0), ((getPosATLVisual player) select 1), 1];
hint "You logged off mid air. You were moved to a safe position on the ground.";
};
};
};
};
if (needReload player == 1) then { reload player };
SETPVAR(player,value_loadDone,true);
// ["listrng", GETVAR(player,FORGE_Email,_defaultEmail), "", -1, [], "forge_client_phone_fnc_addOfflineEmail", true] spawn dragonfly_db_fnc_addTask;
["listrng", GETVAR(player,FORGE_Email,_defaultEmail), "", -1, [], "forge_client_phone_fnc_addOfflineEmail", true, netId player] remoteExec ["dragonfly_db_fnc_addTask", 2, false];
// ["listrng", GETVAR(player,FORGE_Phone_Number,_defaultPhoneNumber), "", -1, [], "forge_client_phone_fnc_addOfflineMsg", true] spawn dragonfly_db_fnc_addTask;
["listrng", GETVAR(player,FORGE_Phone_Number,_defaultPhoneNumber), "", -1, [], "forge_client_phone_fnc_addOfflineMsg", true, netId player] remoteExec ["dragonfly_db_fnc_addTask", 2, false];
};