
All checks were successful
Build / Build (push) Successful in 26s
This commit refactors how organization funds and reputation are handled, updates task completion logic to use the new organization functions, and modifies player saving to include organization data. Additionally, it introduces string serialization/deserialization and fixes a player save loop. * **Organization Funds and Reputation:** Replaces direct server calls for handling funds and reputation with calls to the new organization functions (`EFUNC(org,addFunds)` and `EFUNC(org,addReputation)`). This centralizes fund and reputation management within the organization store. * **Task Completion Logic:** Updates task completion functions (`fnc_destroy.sqf`, `fnc_attack.sqf`, `fnc_hostage.sqf`, `fnc_hvt.sqf`, `fnc_defuse.sqf`) to use the new organization functions for adding funds and reputation upon task success or failure. Also adds notifications to inform the player of reputation and fund changes. * **Player Saving:** Modifies the player saving function (`fnc_playerDBSave.sqf`) to include the player's organization ID in the saved data. * **String Serialization/Deserialization:** Adds `serializeString` and `deserializeString` PREP macros to `XEH_PREP.hpp` and uses them in `fnc_handleOrgLoad.sqf` and `fnc_create.sqf` to handle special characters in organization and member names. * **Player Save Loop Fix:** Removes unnecessary brackets from the `call FUNC(playerDBSave)` in `fnc_playerSaveLoop.sqf`. * **Organization Purchase Verification:** Adds organization ownership verification to `fnc_handlePurchase.sqf` to ensure only the owner can make purchases using organization funds. * **Player Initialization:** Updates `fnc_initPlayer.sqf` to retrieve and set the player's organization upon initialization.
126 lines
4.4 KiB
Markdown
126 lines
4.4 KiB
Markdown
# Player Organization Module
|
|
|
|
## Overview
|
|
|
|
The Player Organization Module provides a comprehensive system for managing player-created organizations in Arma 3. This module enables players to create, join, and manage organizations with features including member management, asset tracking, financial operations, and reputation systems.
|
|
|
|
## Features
|
|
|
|
- **Organization Creation & Management**: Create and disband organizations with customizable names
|
|
- **Member Management**: Add, remove, and manage organization members with different roles
|
|
- **Asset Tracking**: Register and manage organization-owned assets (vehicles, buildings, etc.)
|
|
- **Financial System**: Track organization funds with deposit and withdrawal capabilities
|
|
- **Reputation System**: Manage organization reputation that can influence gameplay mechanics
|
|
- **Database Integration**: Persistent storage using ArmaDragonflyClient for reliable data management
|
|
- **User-Friendly Notifications**: Visual feedback for all organization operations
|
|
|
|
## Usage
|
|
|
|
### Creating an Organization
|
|
|
|
```sqf
|
|
// Create a new organization with default funds and reputation
|
|
[getPlayerUID player, "My Organization"] call forge_client_org_fnc_create;
|
|
|
|
// Create an organization with custom initial funds and reputation
|
|
[getPlayerUID player, "Elite Squad", 5000, 100] call forge_client_org_fnc_create;
|
|
```
|
|
|
|
### Managing Members
|
|
|
|
```sqf
|
|
// Add a member to your organization
|
|
["76561198012345678", "John Doe"] call forge_client_org_fnc_addMember;
|
|
|
|
// Remove a member from your organization
|
|
["76561198012345678"] call forge_client_org_fnc_removeMember;
|
|
|
|
// Leave an organization (for members)
|
|
[] call forge_client_org_fnc_leave;
|
|
```
|
|
|
|
### Managing Assets
|
|
|
|
```sqf
|
|
// Add a vehicle to organization assets
|
|
["vehicle", "B_MRAP_01_F"] call forge_client_org_fnc_addAsset;
|
|
|
|
// Add a vehicle with custom properties
|
|
private _properties = createHashMap;
|
|
_properties set ["color", "red"];
|
|
_properties set ["plate", "ORG-001"];
|
|
["vehicle", "B_MRAP_01_F", _properties] call forge_client_org_fnc_addAsset;
|
|
|
|
// Remove an asset from the organization
|
|
["vehicle", "B_MRAP_01_F_1234567890"] call forge_client_org_fnc_removeAsset;
|
|
```
|
|
|
|
### Financial Operations
|
|
|
|
```sqf
|
|
// Add funds to organization account
|
|
[1000] call forge_client_org_fnc_addFunds;
|
|
|
|
// Remove funds from organization account
|
|
[-500] call forge_client_org_fnc_addFunds;
|
|
```
|
|
|
|
### Reputation Management
|
|
|
|
```sqf
|
|
// Increase organization reputation
|
|
[10] call forge_client_org_fnc_addReputation;
|
|
|
|
// Decrease organization reputation
|
|
[-5] call forge_client_org_fnc_addReputation;
|
|
```
|
|
|
|
### Disbanding an Organization
|
|
|
|
```sqf
|
|
// Permanently delete the organization (owner only)
|
|
[] call forge_client_org_fnc_disband;
|
|
```
|
|
|
|
## Technical Architecture
|
|
|
|
The module is built around a central organization store interface that provides a clean API for all organization operations. This interface handles data validation, database persistence, and user feedback.
|
|
|
|
### Core Components
|
|
|
|
- **Organization Store**: Central interface for all organization operations
|
|
- **Database Integration**: Persistent storage using ArmaDragonflyClient
|
|
- **User Notifications**: Visual feedback system for all operations
|
|
- **Data Validation**: Comprehensive input validation to ensure data integrity
|
|
|
|
### Data Structure
|
|
|
|
Organizations are stored as structured hashmaps with the following key components:
|
|
|
|
- **Basic Information**: ID, name, owner, creation date
|
|
- **Members**: List of members with roles and join dates
|
|
- **Assets**: Categorized inventory of organization-owned assets
|
|
- **Finances**: Current funds and transaction history
|
|
- **Reputation**: Current reputation score and history
|
|
- **Logs**: Comprehensive activity logs for auditing
|
|
|
|
## Integration with Other Systems
|
|
|
|
The organization module is designed to integrate with other game systems:
|
|
|
|
- **Vehicle Garage**: Register organization-owned vehicles
|
|
- **Property System**: Manage organization-owned buildings and territories
|
|
- **Mission System**: Organization-specific missions and objectives
|
|
- **Economy System**: Organization financial operations and investments
|
|
|
|
## Developer Notes
|
|
|
|
- All organization operations are performed through the organization store interface
|
|
- The store is initialized automatically when needed via `verifyOrgStore`
|
|
- Database operations are asynchronous and use callback functions
|
|
- User feedback is provided through the notification system
|
|
- Error handling is comprehensive with appropriate user feedback
|
|
|
|
---
|
|
|
|
*Developed by J. Schmidt* |