Arma 3 QEMU external radar. Built using memflow, NodeJS, socket.io and Leaflet!
- Memory RPM/WPM Client (/arma_dma)
- Radar and Communication Server (/nodejs)
- Live radar (player coords, player side, player dead, player direction, player in vehicle)
- Arma 3 Altis map files (jetelain), multi-user browser access for the radar using LAN/VPN.
- No weapon recoil (not setUnitRecoilCoefficient should bypass most script-based anti-cheats)
- No weapon sway (not setCustomAimCoef should bypass most script-based anti-cheats)
Demos (Slow old version - File create/delete used in demo below, new communication method (sockets) is much faster):
Linux Memory RPM/WPM Client
Using Memflow, arma_dma reads the guest machine's memory to search for Arma 3, which upon finding it, reads the game's data and stores it into an array. This array is then converted into JSON format by nlohmann/json and sent over to our NodeJS server through socket.io.
Radar and Communication Server
NodeJS and socket.io receive the JSON data from the Memory RPM/WPM Client (arma_dma). Upon receiving, socket.io emits a signal to the front-end containing player data that is then filtered through the JSON and used to set up custom markers for each player on Leaflet.
Memory RPM/WPM Client (/arma_dma):
Radar and Communication Server (/nodejs):
My setup:
OS: Manjaro 21.3 KDE
Kernel: x86_64 Linux 5.18.19
CPU: i5-12600K
GPU: RTX 3070ti
RAM: 16gb
Memory RPM/WPM Client (/arma_dma):
- Navigate to /arma_dma convert .sh scripts to executable
cd arma_dma
sudo chmod +x build.sh
sudo chmod +x depInstall.sh
- Compile the source by running the script
build.sh
ordepInstallBuild.sh
if on Manjaro/arch. You need to have Rust installed and updated:
sudo ./build.sh
sudo ./depInstallBuild.sh
- Navigate to the newly created /build folder and run arma_dma as root:
cd build
sudo ./arma_dma
Radar and Communication Server (/nodejs):
- Download and install the required dependencies.
- Navigate to /nodejs and run:
npm install
node server.js
- Implement server and user authentication.
- Add other Arma 3 maps.
- Player direction lines.
- Implement some other way of rendering leaflet markers, instead of deleting all previous markers on the second layer when receiving a signal from socket.io, instead store the players into a structure/database, then update and move the markers.
- Instead of using PNGs for the player/vehicle icons use SVG or even better render it using JS.
- Properly implement socket.io-client-cpp bind_events and listeners.