A modular framework and equipment pack for Arma 3.
Advanced Equipment Revamped (AE3) delivers a functional terminal laptop running ArmaOS and a range of connected equipment such as generators, batteries, flash drives, solar panels, and interactable objects. It is designed as a complete mod, ready to use in missions and scenarios while also providing APIs for developers.
AE3 is both a gameplay mod and a framework. Players can interact with fully functional laptops, manage power systems, operate equipment, and access data through an in-game terminal interface. Developers can extend AE3 through its API.
AE3 provides six major systems:
- Unix-like shell interface with familiar commands (ls, cd, cat, mkdir, rm, mv, cp, etc.)
- Extensible command system - easily add custom OS commands
- 28+ built-in commands for filesystem, power, and system management
- Retro terminal designs - ArmaOS, C64, Apple II, Amber themes
- 9 keyboard layouts - AR, DE, FR, HE, HU, IT, RU, TR, US
- UI-on-Texture rendering - network-optimized terminal display
- Command history and autocomplete
- Shell script execution with
.shfiles
- Hierarchical directory structure stored in object variables
- Unix-style permissions - read, write, execute per owner/everyone
- Mount/unmount support for USB drives and remote filesystems
- Complete file operations - create, delete, move, copy, read, write
- Ownership and permission management with
chowncommand - Path resolution system with absolute and relative paths
- Encrypted file support - Caesar and Columnar cipher algorithms
- Battery simulation - capacity in Wh, charge/discharge cycles
- Power generators - fuel-powered with consumption tracking
- Solar panels - dynamic output based on sun position and panel orientation
- Power connections - link devices to power sources
- Consumption tracking - per-device power requirements
- Standby modes - reduced power consumption when idle
- CBA-configurable costs - customize power consumption per operation
- Interaction menus - laptop access, power connections, equipment management
- Animated interactions - laptop lid opening/closing, desk drawers
- Cargo system integration - portable equipment with custom names
- Progress bars - for generator startup/shutdown
- Mutex system (
AE3_computer_mutex) - prevents concurrent terminal access
- Zeus filesystem browser - graphical file/directory management
- Zeus modules - Add User, Add File, Add Directory, Add Games, Add Security Commands
- 3DEN modules - mission editor integration for device setup
- Asset attributes interface - power state, battery/fuel levels, IP address
- Real-time status updates - live monitoring of device states
- Remote variable sync -
sendVarToRemote/getRemoteVarfor cross-client state management - UI-on-Texture optimization - transmits raw STRING data, renders locally
- Network-safe serialization - never transmits TEXT type over network
- Player range detection - efficient UI updates for nearby players only
- Locality-aware operations - server/client execution control
- Terminal Laptop (ArmaOS) — core interactive computer.
- Flash Drive — removable storage.
- Solar Power Generator — clean energy source.
- Fuel/Electric Generators — primary power supply.
- Battery Units — charge and discharge dynamically.
- Interactable Lights & Lamps — power-sensitive illumination.
AE3 provides a rich API for building mods utilizing the armaOS Terminal:
Create, manage, and manipulate virtual filesystems on in-game objects:
// Initialize filesystem on a laptop
[_laptop] call AE3_filesystem_fnc_initFilesystem;
// Create a file with permissions
[
[], // Pointer
_laptop getVariable "AE3_filesystem", // Filesystem
"/home/user/data.txt", // Path
"Secret data", // Content
"user", // User
"user", // Owner
[[true, true, true], [true, false, false]] // Permissions
] call AE3_filesystem_fnc_createFile;
// Move files
[[], _filesystem, "/home/user/data.txt", "/tmp/data.txt", "user", false] call AE3_filesystem_fnc_mvObj;
// Mount USB drive
[[], _filesystem, _usbFilesystem, "/mnt/usb0", "user"] call AE3_filesystem_fnc_mount;Key Functions:
createFile,createDir- Create filesystem objectsdelObj,mvObj- Delete and move objectsmount,unmount- External filesystem mountinghasPermission- Permission validationresolvePntr- Path resolutionwriteToFile,getFile- File I/O
Add custom OS commands and control terminal behavior:
// Add a custom OS command
[
_computer,
"mycommand", // Command name
{
params ["_computer", "_args", "_username"];
// Command implementation
[[["Command output"]]];
},
"My custom command description"
] call AE3_armaos_fnc_computer_addCustomCommand;
// Initialize computer with commands and users
[_laptop, ["root"], ["SecurePass123"], ["/root"]] call AE3_armaos_fnc_computer_initWithCommands;
// Add games (Snake)
[_computer, true] call AE3_armaos_fnc_computer_addGames;
// Add security tools (crypto/crack)
[_computer, true, true] call AE3_armaos_fnc_computer_addSecurityCommands;
// Terminal output
[_computer, _username, [[["Success!", "#00ff00"]]]] call AE3_armaos_fnc_shell_stdout;Built-in Commands:
- File ops:
ls,cat,cd,mkdir,rm,touch,cp,mv,find - Permissions:
chown - System:
clear,whoami,help,man,history,exit,date,echo - Filesystem:
mount,unmount - Power:
shutdown,standby - Security:
crypto,crack
Implement power systems for devices:
// Initialize generator
[_generator, 100, 0.5, 50] call AE3_power_fnc_initGenerator; // 100L fuel, 0.5L/h, 50Wh
// Initialize solar panel with orientation function
[_solarPanel, 30, {_this}] call AE3_power_fnc_initSolarPanel; // 30Wh capacity
// Initialize battery (standalone or internal)
[_battery, 500, false] call AE3_power_fnc_initBattery; // 500Wh capacity
// Get battery level
private _result = [_battery] call AE3_power_fnc_getBatteryLevel;
_result params ["_levelWh", "_levelPercent", "_capacityWh"];
// Create power connection
[_laptop, _generator] call AE3_power_fnc_createPowerConnection;
// Turn on device
private _success = [_device] call AE3_power_fnc_turnOnDevice;Control terminal display and user input:
// Add output lines to terminal
[_computer, _username, [[["Line 1"], ["Line 2", "#00ff00"]]]] call AE3_armaos_fnc_terminal_addLines;
// Update terminal display (UI-on-Texture safe)
[_computer, _username] call AE3_armaos_fnc_terminal_updateOutput;
// Set keyboard layout
[_computer, _username, "DE"] call AE3_armaos_fnc_terminal_setKeyboardLayout; // German
// Set custom prompt
[_computer, _username, "user@laptop:/home/user$ "] call AE3_armaos_fnc_terminal_setPrompt;USB drive item/object conversion and mounting:
// Connect flash drive to laptop
[_laptop, player, "Item_FlashDisk_AE3_ID_1", _usbInterface] call AE3_flashdrive_fnc_connectFlashDrive;
// Mount flash drive filesystem
[_laptop, "usb0", "user"] call AE3_flashdrive_fnc_mount;
// Convert item to object
private _flashDriveObj = [player, "Item_FlashDisk_AE3_ID_1"] call AE3_flashdrive_fnc_item2obj;
// Convert object to item
[_flashDriveObj, player] call AE3_flashdrive_fnc_obj2item;Use AE3 to create custom terminal-based scenarios:
// initServer.sqf
private _laptop = _laptop1; // Editor-placed laptop
// Add user account
[_laptop, "hacker", "password123"] remoteExec ["AE3_armaos_fnc_computer_addUser", 2];
// Add game programs
[_laptop, true] remoteExec ["AE3_armaos_fnc_computer_addGames", 2];
// Players can now log in and use the terminal!// Add a mission-specific command
[
_laptop,
"sitrep",
{
params ["_computer", "_args", "_username"];
private _enemyCount = {side _x == east} count allUnits;
private _output = format ["Enemy forces: %1 units", _enemyCount];
[[[_output, "#ffff00"]]];
},
"Display mission situation report"
] remoteExec ["AE3_armaos_fnc_computer_addCustomCommand", 2];// Create power grid with generator and solar panel
private _generator = _gen1;
private _solarPanel = _solar1;
private _laptop = _laptop1;
// Initialize power sources
[_generator, 100, 0.5, 50] remoteExec ["AE3_power_fnc_initGenerator", 2];
[_solarPanel, 30, {_this}] remoteExec ["AE3_power_fnc_initSolarPanel", 2];
// Connect laptop to generator
[_laptop, _generator] remoteExec ["AE3_power_fnc_createPowerConnection", 2];- CBA_A3 - Community Base Addons (settings, events, functions)
- ACE3 - Advanced Combat Environment 3 (interaction menus)
- Arma 3 v2.12+ - Required for UI-on-Texture feature
- Download the latest release from GitHub Releases
- Extract the
@AE3folder to your Arma 3 directory - Add
-mod=@CBA_A3;@ace;@AE3to your launch parameters
Requires HEMTT:
# Clone repository
git clone https://github.com/y0014984/Advanced-Equipment.git
cd Advanced-Equipment
# Build for development (creates symlink)
hemtt dev
# Build for release
hemtt build
# Validate code
hemtt check- Interact with an AE3 laptop (ACE interaction menu)
- Select Equipment � Terminal � Use Terminal
- Log in with credentials (default: root/root if configured)
- Use Unix commands:
ls,cd /home,help, etc. - Type
helpto see all available commands
- Open Zeus interface (Y key)
- Find Advanced Equipment category
- Place laptop, select it, open Asset Attributes
- Use Add User module to create accounts
- Use Add File/Add Directory modules to populate filesystem
- Use filesystem browser to manage files graphically
- Read the API Reference for complete function documentation
- Study the Architecture guide to understand data structures
- Check Mission Maker Guide for practical examples
Comprehensive documentation is available in the Wiki:
- Home - Framework overview and quick reference
- API Reference - Complete function reference with examples
- Architecture - Technical implementation and data structures
- Terminal Guide - ArmaOS commands and terminal usage
- Zeus Guide - Zeus modules and interface
- Eden Editor Guide - 3DEN modules and synchronization
- Mission Maker Guide - API usage and mission examples
- Configuration - CBA settings reference
- ACE Mutex - Understanding the mutex system
AE3 uses CBA settings for customization. Access via:
- Main Menu → Configure → Addon → AE3 armaOS
Key settings:
- Debug Mode - Enable system chat debug messages
- Power Costs - Customize battery consumption per operation
- Terminal Update Rate - UI-on-Texture refresh frequency (default: 0.3s)
- Network Debug - Optional verbose logging of AE3 remoteExec traffic (diag_log; off by default)
See Configuration Guide for complete settings reference.
AE3 uses a network-safe rendering approach:
- Terminal buffer (raw STRING/ARRAY) is synchronized across network
- Rendered TEXT is generated locally on each client
- Throttled updates - configurable refresh rate reduces network traffic
- Viewport-only payloads - only the visible window is transmitted, capped by
AE3_UiMaxTransmitLines(defaults are recommended; raising this is not advised) - Usage-aware - no UI-on-Texture traffic is sent when laptops are idle, UI-on-Texture is disabled, or no viewers are nearby
Prevents concurrent terminal access:
// Check if laptop is in use
private _mutex = _laptop getVariable ["AE3_computer_mutex", objNull];
if (isNull _mutex) then {
// Laptop is available
_laptop setVariable ["AE3_computer_mutex", player, true];
// Use terminal...
_laptop setVariable ["AE3_computer_mutex", objNull, true];
};Virtual filesystems use nested hashmaps stored in object variables:
_laptop getVariable "AE3_filesystem" // Returns hashmap
// Structure: {"." => {...}, "home" => {"user" => {...}}}Contributions welcome! Please:
- Report Bugs - Use GitHub Issues
- Suggest Features - Open enhancement requests
- Submit Pull Requests:
- Fork the repository
- Create feature branch
- Follow existing code patterns
- Run
hemtt check- ensure all validation passes - Update documentation
- Submit PR with description
- Use PREP macro for function compilation (no
execVM) - Follow SQFdoc header format (see existing functions)
- Avoid undefined variables (caught by HEMTT)
- Use
privatefor all variables - Document public API functions thoroughly
- Test in multiplayer scenarios
/*
* Author: <NAME>
* Description: Brief description of what the function does
*
* Arguments:
* 0: _param1 <TYPE> - Description
* 1: _param2 <TYPE> (Optional) - Description, default: value
*
* Return Value:
* Description <TYPE>
*
* Example:
* [_param1, _param2] call AE3_addon_fnc_functionName;
*
* Public: Yes/No
*/
params ["_param1", ["_param2", defaultValue]];
private _result = 0;
// Implementation...
_resultLicensed under Arma Public License - Share Alike (APL-SA).
Key terms:
- Attribution - Credit original authors
- Non-Commercial - No commercial use
- Arma Only - Only for Arma games
- Share Alike - Derivative works must use same license
See LICENSE for full terms.
- Root - Current framework development and maintenance
- y0014984 - Original AE3 development
- Wasserstoff and JulesVerner - Original AE3 Core contributions and development
- Root's Cyber Warfare - Device hacking, GPS tracking, custom devices
Building a mod on AE3? Let us know and we'll add it here!
Advanced Equipment Revamped (AE3) — functional ArmaOS terminals and connected equipment for Arma 3.