Implemented features: - High-performance Rust extension with Redis persistence - Actor/player management with loadout, position, and state tracking - Banking system with deposit, withdraw, and transfer operations - Physical and virtual garage/locker systems for vehicle and equipment storage - Organization management with member tracking and permissions - Client-side UI with React-like state management - Server-side event-driven architecture with CBA Events - Security: Self-transfer prevention at multiple layers - Logging system with per-module log files - ICOM module for inter-server communication Co-Authored-By: Warp <agent@warp.dev>
180 lines
7.6 KiB
HTML
180 lines
7.6 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Banking Services</title>
|
|
<!-- <script src="store.js"></script> -->
|
|
<!-- <link rel="stylesheet" href="bank.css" /> -->
|
|
<!--
|
|
Dynamic Resource Loading
|
|
The following script loads CSS and JavaScript files dynamically using the A3API
|
|
This approach is used instead of static HTML imports to work with Arma 3's file system
|
|
-->
|
|
<script>
|
|
Promise.all([
|
|
A3API.RequestFile(
|
|
"forge\\forge_client\\addons\\bank\\ui\\_site\\bank.css",
|
|
),
|
|
A3API.RequestFile(
|
|
"forge\\forge_client\\addons\\bank\\ui\\_site\\store.js",
|
|
),
|
|
A3API.RequestFile(
|
|
"forge\\forge_client\\addons\\bank\\ui\\_site\\bank.js",
|
|
),
|
|
]).then(([css, storeJs, bankJs]) => {
|
|
const style = document.createElement("style");
|
|
style.textContent = css;
|
|
document.head.appendChild(style);
|
|
|
|
const store = document.createElement("script");
|
|
store.text = storeJs;
|
|
document.head.appendChild(store);
|
|
|
|
const bank = document.createElement("script");
|
|
bank.text = bankJs;
|
|
document.head.appendChild(bank);
|
|
});
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="bank-container">
|
|
<!-- Header Section -->
|
|
<div class="bank-header">
|
|
<div class="bank-logo">
|
|
<!-- <img class="logo-icon" src="public/fdic.png" alt="Bank Logo" width="50"> -->
|
|
</div>
|
|
<div class="bank-info">
|
|
<h1 class="bank-title">Banking Services</h1>
|
|
<p class="bank-subtitle">Secure Financial Management</p>
|
|
</div>
|
|
<div class="header-actions">
|
|
<button class="action-btn close-btn">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Main Content -->
|
|
<div class="bank-content">
|
|
<!-- Left Panel - Accounts -->
|
|
<div class="bank-panel">
|
|
<div class="panel-header">
|
|
<h2 class="panel-title">Your Accounts</h2>
|
|
</div>
|
|
<div class="panel-content">
|
|
<!-- Cash Account -->
|
|
<div class="account-card">
|
|
<div class="account-header">
|
|
<div class="account-info">
|
|
<span class="account-name">Cash</span>
|
|
<span class="account-type">Physical Currency</span>
|
|
</div>
|
|
</div>
|
|
<div class="account-balance">
|
|
<span class="balance-label">Available</span>
|
|
<span class="balance-amount">$2,500</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Bank Account -->
|
|
<div class="account-card">
|
|
<div class="account-header">
|
|
<div class="account-info">
|
|
<span class="account-name">Bank Account</span>
|
|
<span class="account-type">Savings • Protected</span>
|
|
</div>
|
|
</div>
|
|
<div class="account-balance">
|
|
<span class="balance-label">Available</span>
|
|
<span class="balance-amount">$45,750</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Organization Account -->
|
|
<div class="account-card">
|
|
<div class="account-header">
|
|
<div class="account-info">
|
|
<span class="account-name">Organization</span>
|
|
<span class="account-type">Shared • View Only</span>
|
|
</div>
|
|
</div>
|
|
<div class="account-balance">
|
|
<span class="balance-label">Available</span>
|
|
<span class="balance-amount">$125,000</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Center Panel - Actions -->
|
|
<div class="bank-panel panel-main">
|
|
<div class="panel-header">
|
|
<h2 class="panel-title">Quick Actions</h2>
|
|
</div>
|
|
<div class="panel-content">
|
|
<!-- Transfer Form -->
|
|
<div class="action-section">
|
|
<h3 class="section-title">Transfer Funds</h3>
|
|
<div class="transfer-form">
|
|
<div class="form-group">
|
|
<label class="form-label">From</label>
|
|
<select class="form-select" id="transferFrom">
|
|
<option value="bank" selected>Bank Account</option>
|
|
<option value="cash">Cash</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Amount</label>
|
|
<input type="number" class="form-input" id="amount" placeholder="0.00" min="0"
|
|
step="0.01">
|
|
</div>
|
|
<div class="form-group" id="playerIdGroup" style="display: none;">
|
|
<label class="form-label">Select Player</label>
|
|
<select class="form-select" id="playerId">
|
|
<option value="" disabled selected>Select a player...</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quick Actions -->
|
|
<div class="action-section">
|
|
<h3 class="section-title">Quick Access</h3>
|
|
<div class="quick-actions">
|
|
<button class="quick-action-btn" data-action="deposit-amount">
|
|
<span class="quick-action-label">Deposit</span>
|
|
</button>
|
|
<button class="quick-action-btn" data-action="deposit">
|
|
<span class="quick-action-label">Deposit All Cash</span>
|
|
</button>
|
|
<button class="quick-action-btn" data-action="withdraw">
|
|
<span class="quick-action-label">Withdraw</span>
|
|
</button>
|
|
<button class="quick-action-btn" id="transferBtn">
|
|
<span class="quick-action-label">Transfer Funds</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Right Panel - Recent Transactions -->
|
|
<div class="bank-panel">
|
|
<div class="panel-header">
|
|
<h2 class="panel-title">Recent Transactions</h2>
|
|
</div>
|
|
<div class="panel-content">
|
|
<div class="transaction-list">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- <script src="bank.js"></script> -->
|
|
</body>
|
|
|
|
</html>
|