A Python wrapper for the ERLC PRC API
Project description
pyerlc-v2
This is version 2 of pyerlc, if you are looking for Version 1, you can find it here Version 1 is deprecated and is no longer being worked on
pyerlc is a lightweight Python SDK for the
Emergency Response: Liberty County (ER:LC) PRC API v2.
It allows developers to interact with live server data, player locations, staff information, logs, vehicles, and execute in-game commands through a simple Python interface.
🚀 Features
- 📊 Live server status
- 👥 Player tracking with real-time location data
- 📍 Postal + street-level positioning system
- 👮 Staff (Admins / Mods / Helpers)
- 🔫 Kill, join, and command logs
- 🚓 Vehicle tracking (plates, colours, ownership)
- 📞 Emergency call monitoring
- 🧠 Run server commands remotely
- ⚡ Single-request full server data fetch (v2 feature)
📦 Installation
pip install pyerlc-v2
⚠️ Requirements
- Python 3.12+
- Valid PRC Server Key from ER:LC server settings
🧑💻 Quick Start
from pyerlc-v2 import PRCClientV2
client = PRCClientV2(server_key="YOUR_SERVER_KEY")
# Get server status
status = client.get_server_status()
print(status)
# Get all players (with location data)
players = client.get_players()
print(players)
# Run a command in-game
response = client.run_command(":h Hello from pyerlc v2!")
print(response)
📍 Player Location System (v2)
Each player now includes live world positioning data:
Example Output
{
"player": "JohnDoe:123",
"team": "Police",
"callsign": "5D-550",
"x": 1084.965,
"z": 2302.28,
"postal": "218",
"street": "Park Street",
"building": "2083",
"formatted_location": "2083 Park Street (Postal 218)"
}
🗺️ Map System
PRC v2 uses an X/Z coordinate system:
- X/Z → world position
- Postal Code → region identifier
- Street Name → road-level detail
Official PRC Maps
-
🗺️ Blank Map https://api.policeroleplay.community/maps/fall_blank.png
-
📮 Postal Map https://api.policeroleplay.community/maps/fall_postals.png
📡 API Methods
🏛️ Server Data
client.get_server_status()
client.get_players()
client.get_staff()
client.get_queue()
client.get_all_data()
📊 Logs
client.get_join_logs()
client.get_kill_logs()
client.get_command_logs()
client.get_mod_calls()
client.get_emergency_calls()
🚗 Vehicles
client.get_vehicles()
Vehicle Example
{
"name": "Redline Fire Engine",
"owner": "Shawnyg",
"plate": "ABC-123",
"texture": "Livery Name",
"color_hex": "#ff4444",
"color_name": "Super Red"
}
🧠 Commands
client.run_command(":h Hello world!")
Example response
{
"success": True,
"status_code": 200,
"data": {
"message": "Success"
}
}
⚡ Full Server Fetch (v2 Feature)
Get EVERYTHING in one request:
data = client.get_all_data()
Includes:
- Players
- Staff
- Logs
- Vehicles
- Emergency calls
- Queue
👮 Emergency Calls
{
"team": "Police",
"caller": 168691872,
"players": [],
"position": [-654.6, 666.5],
"started_at": 1774216563,
"call_number": 400,
"description": "stg",
"position_descriptor": "sdfsdfsdf"
}
👮 Staff Structure
{
"Admins": {
"54249787": "PlayerName"
},
"Mods": {},
"Helpers": {}
}
🧠 Error Handling
All responses follow this structure:
{
"success": True,
"status_code": 200,
"data": {...},
"error_message": "Optional error message",
"error_code": 0
}
❌ Common Errors
| Code | Meaning |
|---|---|
| 2000 | No server key |
| 2002 | Invalid server key |
| 3001 | Invalid command |
| 3002 | Server offline |
| 4001 | Rate limited |
| 4002 | Restricted command |
🧪 Example Use Cases
📍 Track a player by name
player = client.get_player_by_name("JohnDoe")
print(player["formatted_location"])
📮 Find players in a postal
units = client.get_players_by_postal("218")
print(units)
🚓 Dispatch-style monitoring
data = client.get_all_data()
for p in data["Players"]:
print(p["player"], p["formatted_location"])
📦 Project Info
- 📦 PyPI: https://pypi.org/project/pyerlc
- 🏠 Website: https://epelldevelopment.xyz
- 📧 Contact: epell1@epelldevelopment.xyz
- 💻 GitHub: https://github.com/epell-development/pyerlc
📜 License
MIT License
🚓 Built with ❤️ by epell Development 🇦🇺
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyerlc_v2-2.0.2.tar.gz.
File metadata
- Download URL: pyerlc_v2-2.0.2.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
809f0fa99e77395b4715dc5aeae5b530909b5e309c338865c662e24e2507a728
|
|
| MD5 |
ec9fa609068397bf7dd935e9820c82a7
|
|
| BLAKE2b-256 |
7e39724702d5716b0def748d25947e2940b8637abdcb3a3fabc88d6fed81415a
|
File details
Details for the file pyerlc_v2-2.0.2-py3-none-any.whl.
File metadata
- Download URL: pyerlc_v2-2.0.2-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8f3bd538e122c2331ea0f540cdc0e13e97774ba843ef3629cabaab6ac95cef1
|
|
| MD5 |
c1a1372024f291343b4c820c4f15d743
|
|
| BLAKE2b-256 |
f55a8a8c1857182f304da1bdda4bd66e3187c3efb78800e34c1ea74a1ec20999
|