@@ -243,11 +243,11 @@ function getRankClass(paygrade) {
return 'enlisted';
} else if (paygrade.startsWith('WO')) {
return 'warrant';
- } else if (paygrade.startsWith('O') ||
- paygrade.startsWith('1') ||
- paygrade.startsWith('2') ||
- paygrade.startsWith('C') ||
- paygrade.startsWith('M')) {
+ } else if (paygrade.startsWith('O') ||
+ paygrade.startsWith('1') ||
+ paygrade.startsWith('2') ||
+ paygrade.startsWith('C') ||
+ paygrade.startsWith('M')) {
return 'officer';
} else {
return 'enlisted'; // Default
@@ -269,13 +269,13 @@ function getRankClass(paygrade) {
function updatePaygrade(uid, isPromotion) {
const player = adminData.players.find(p => p.uid === uid);
if (!player) return;
-
+
// Use the paygrades from the configuration
const paygrades = Object.keys(adminData.paydayAmounts);
paygrades.sort((a, b) => adminData.paydayAmounts[a] - adminData.paydayAmounts[b]); // Sort by payment amount
-
+
const currentIndex = paygrades.indexOf(player.paygrade);
-
+
let newPaygrade;
if (isPromotion && currentIndex < paygrades.length - 1) {
newPaygrade = paygrades[currentIndex + 1];
@@ -284,14 +284,14 @@ function updatePaygrade(uid, isPromotion) {
} else {
return; // Can't promote/demote further
}
-
+
const message = {
event: "UPDATE::PAYGRADE",
data: [uid, newPaygrade]
};
-
+
A3API.SendAlert(JSON.stringify(message));
-
+
// Optimistic update
player.paygrade = newPaygrade;
updatePlayerList();
@@ -346,7 +346,7 @@ function giveAllMoney() {
}
A3API.SendAlert(JSON.stringify(message));
-
+
// Request updated player data after giving money to all players
setTimeout(requestPlayerData, 500); // Short delay to allow server processing
}
@@ -374,7 +374,7 @@ function handleTransferFunds(condition, amount, uid) {
event: "HANDLE::TRANSFER",
data: [condition, amount, uid]
};
-
+
A3API.SendAlert(JSON.stringify(message));
// Optimistic update
@@ -428,7 +428,7 @@ function sendPlayerMessage() {
event: "SEND::MESSAGE",
data: [selectedPlayerId, message]
};
-
+
A3API.SendAlert(JSON.stringify(messageData));
closeMessageModal();
}
@@ -444,7 +444,7 @@ function broadcastMessage() {
event: "BROADCAST::MESSAGE",
data: ["", message]
};
-
+
A3API.SendAlert(JSON.stringify(messageData));
document.getElementById('broadcastMessage').value = '';
}
@@ -466,7 +466,7 @@ function Payday() {
};
A3API.SendAlert(JSON.stringify(message));
-
+
// Request updated player data after payday
setTimeout(requestPlayerData, 500); // Short delay to allow server processing
}
diff --git a/addons/bank/XEH_postInit.sqf b/addons/bank/XEH_postInit.sqf
index ce7c0a8..42d51ce 100644
--- a/addons/bank/XEH_postInit.sqf
+++ b/addons/bank/XEH_postInit.sqf
@@ -5,7 +5,8 @@
}, {
private _bank = GETVAR(player,FORGE_Bank,0);
private _cash = GETVAR(player,FORGE_Cash,0);
+ private _rating = GETVAR(player,FORGE_Rating,0);
private _uid = getPlayerUID player;
- ["forge_server_bank_handleEvents", ["BANK::HANDLE::PLAYER::LOAD", [_uid, _bank, _cash]]] call CFUNC(serverEvent);
+ ["forge_server_bank_handleEvents", ["BANK::HANDLE::PLAYER::LOAD", [_uid, _bank, _cash, _rating]]] call CFUNC(serverEvent);
}] call CFUNC(waitUntilAndExecute);
\ No newline at end of file
diff --git a/addons/bank/XEH_postInit_client.sqf b/addons/bank/XEH_postInit_client.sqf
index 6986511..c985178 100644
--- a/addons/bank/XEH_postInit_client.sqf
+++ b/addons/bank/XEH_postInit_client.sqf
@@ -3,7 +3,7 @@
[QGVAR(handleEvents), {
params ["_control", "_isConfirmDialog", "_message"];
- diag_log text format ["[FORGE::Client::Bank::XEH_postInit] Received event: '%1'", _message];
+ diag_log text format ["[FORGE::Client::Bank::XEH_postInit::handleEvents] Received event: '%1'", _message];
_message = fromJSON _message;
private _event = _message get "event";
@@ -15,11 +15,11 @@
private _playerList = [];
{
- private _player = _x;
- private _uid = getPlayerUID _player;
- private _name = name _player;
- private _funds = GETVAR(_player,FORGE_Bank,0); //TODO: Implement funds from server
- private _cash = GETVAR(_player,FORGE_Cash,0); //TODO: Implement cash from server
+ private _uid = getPlayerUID _x;
+ private _name = name _x;
+ private _funds = GETVAR(_x,FORGE_Bank,0); //TODO: Implement funds from server
+ private _cash = GETVAR(_x,FORGE_Cash,0); //TODO: Implement cash from server
+
private _playerInfo = createHashMapFromArray [
["uid", _uid],
["name", _name],
@@ -35,52 +35,63 @@
};
case "REQUEST::PLAYER::FUNDS": {
private _playerData = createHashMap;
- private _uid = getPlayerUID player;
- private _balance = GETVAR(_player,FORGE_Bank,0); //TODO: Implement balance from server
- private _cash = GETVAR(_player,FORGE_Cash,0); //TODO: Implement cash from server
+ private _balance = GETVAR(player,FORGE_Bank,0); //TODO: Implement balance from server
+ private _cash = GETVAR(player,FORGE_Cash,0); //TODO: Implement cash from server
+
+ private _payMultiplier = "MULTIPLYR" call BFUNC(getParamValue);
+ private _rating = rating player; //TODO: Implement rating from server
+ private _pending = _rating * _payMultiplier; //TODO: Implement pending from server
+
private _playerData = createHashMapFromArray [
["balance", _balance],
- ["cash", _cash]
+ ["cash", _cash],
+ ["pending", _pending]
];
_control ctrlWebBrowserAction ["ExecJS", format ["handlePlayerFundsRequest(%1)", (toJSON _playerData)]];
};
case "REQUEST::TRANSACTION::HISTORY": {
- private _uid = getPlayerUID player;
private _history = []; //TODO: Implement history from server
private _historyData = createHashMapFromArray [["history", _history]];
_control ctrlWebBrowserAction ["ExecJS", format ["handleTransactionHistoryRequest(%1)", (toJSON _historyData)]];
};
case "DEPOSIT::FUNDS": {
- _data params ["_amount"];
+ _data params [["_amount", 0, [0]]];
if (_amount <= 0) exitWith { systemChat "Invalid amount, must be greater than 0!"; false };
-
["forge_server_bank_handleEvents", ["BANK::DEPOSIT", [getPlayerUID player, _amount]]] call CFUNC(serverEvent);
true
};
- case "WITHDRAW::FUNDS": {
- _data params ["_amount"];
+ case "SUBMIT::TIMESHEET": {
+ private _rating = rating player;
+ private _uid = getPlayerUID player;
- if (_amount <= 0) exitWith { systemChat "Invalid amount, must be greater than 0!"; false };
+ ["forge_server_bank_handleEvents", ["BANK::SUBMIT::TIMESHEET", [_uid, _rating]]] call CFUNC(serverEvent);
- ["forge_server_bank_handleEvents", ["BANK::WITHDRAW", [getPlayerUID player, _amount]]] call CFUNC(serverEvent);
+ player addRating -_rating;
true
};
case "TRANSFER::FUNDS": {
- _data params ["_amount", "_toUid"];
+ _data params [["_uid", "", [""]], ["_amount", 0, [0]]];
- if ((_amount <= 0) || {_toUid isEqualTo ""}) exitWith { systemChat "Invalid UID or amount, UID cannot be empty and amount must be greater than 0!"; false };
+ if ({_uid isEqualTo ""} || _amount <= 0) exitWith { systemChat "Invalid UID or amount, UID cannot be empty and amount must be greater than 0!"; false };
+ ["forge_server_bank_handleEvents", ["BANK::TRANSFER", [getPlayerUID player, _uid, _amount]]] call CFUNC(serverEvent);
- ["forge_server_bank_handleEvents", ["BANK::TRANSFER", [getPlayerUID player, _toUid, _amount]]] call CFUNC(serverEvent);
+ true
+ };
+ case "WITHDRAW::FUNDS": {
+ _data params [["_amount", 0, [0]]];
+
+ if (_amount <= 0) exitWith { systemChat "Invalid amount, amount must be greater than 0!"; false };
+ ["forge_server_bank_handleEvents", ["BANK::WITHDRAW", [getPlayerUID player, _amount]]] call CFUNC(serverEvent);
true
};
default {
- diag_log format ["[FORGE::Client::Bank::XEH_postInit] Unhandled event: %1", _event];
+ diag_log format ["[FORGE::Client::Bank::XEH_postInit::handleEvents] Unhandled event: %1", _event];
};
};
}] call CFUNC(addEventHandler);
\ No newline at end of file
diff --git a/addons/bank/functions/fnc_deposit.sqf b/addons/bank/functions/fnc_deposit.sqf
index 43bc4bb..d311687 100644
--- a/addons/bank/functions/fnc_deposit.sqf
+++ b/addons/bank/functions/fnc_deposit.sqf
@@ -17,13 +17,11 @@
*/
private _amount = parseNumber (ctrlText IDC_AMOUNTINPUT);
-private _uid = getPlayerUID player;
private _messageData = createHashMapFromArray [
["event", "DEPOSIT::FUNDS"],
["data", createHashMapFromArray [
- ["amount", _amount],
- ["uid", _uid]
+ ["amount", _amount]
]]
];
diff --git a/addons/bank/functions/fnc_submit.sqf b/addons/bank/functions/fnc_submit.sqf
index 07bcd79..d9d44c7 100644
--- a/addons/bank/functions/fnc_submit.sqf
+++ b/addons/bank/functions/fnc_submit.sqf
@@ -19,19 +19,24 @@
* Public: Yes
*/
-private _bank = GETVAR(player,FORGE_Bank,0); //TODO: Implement balance from server
private _payMultiplyer = "MULTIPLYR" call BFUNC(getParamValue);
private _plyscore = rating player; //TODO: Implement rating from server
private _multiplyer = _plyscore * _payMultiplyer;
_bank = _bank + _multiplyer;
-player addRating - _plyscore;
-SETPVAR(player,FORGE_Bank,_bank);
-SETPVAR(player,FORGE_Rating,0);
-
-[] call FUNC(refresh);
-
private _formattedRating = _bank call EFUNC(misc,formatNumber);
+private _messageData = createHashMapFromArray [
+ ["event", "SUBMIT::TIMESHEET"],
+ ["data", []]
+];
-[format ["Timesheet submitted! Received $%1 based on rating of %2", _formattedRating, _plyscore], "info", 3, "right"] call EFUNC(misc,notify);
\ No newline at end of file
+private _response = ["forge_client_bank_handleEvents", (toJSON _messageData)] call CFUNC(localEvent);
+
+if (_response) then {
+ [format ["Submitted timesheet! Received $%1 based on rating of %2", _formattedRating, _plyscore], "info", 3, "right"] call EFUNC(misc,notify);
+} else {
+ [format ["Timesheet submission failed"], "warning", 3, "right"] call EFUNC(misc,notify);
+};
+
+[] call FUNC(refresh);
\ No newline at end of file
diff --git a/addons/bank/functions/fnc_transfer.sqf b/addons/bank/functions/fnc_transfer.sqf
index 4a5218d..6147b35 100644
--- a/addons/bank/functions/fnc_transfer.sqf
+++ b/addons/bank/functions/fnc_transfer.sqf
@@ -24,15 +24,12 @@ private _amount = parseNumber (ctrlText _input);
private _selectedTarget = lbCurSel _dropdown;
private _selectedTargetData = _dropdown lbData _selectedTarget;
private _target = objectFromNetId _selectedTargetData;
-
-private _fromUid = getPlayerUID player;
-private _toUid = getPlayerUID _target;
+private _uid = getPlayerUID _target;
private _messageData = createHashMapFromArray [
["event", "TRANSFER::FUNDS"],
["data", createHashMapFromArray [
- ["fromUid", _fromUid],
- ["toUid", _toUid],
+ ["uid", _uid],
["amount", _amount]
]]
];
diff --git a/addons/bank/ui/_site/index.html b/addons/bank/ui/_site/index.html
index a598662..bf22de0 100644
--- a/addons/bank/ui/_site/index.html
+++ b/addons/bank/ui/_site/index.html
@@ -1,5 +1,6 @@
+
Submit Timesheet
-
-
-
-
-
@@ -109,4 +107,5 @@
-
+
+