A Python wrapper for the ERLC PRC API
Project description
pyerlc-v2
pyerlc-v2 is the second major version of pyerlc.
If you are looking for Version 1, it is deprecated and no longer maintained.
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 and modern Python interface.
🚀 Features
- 📊 Live server status monitoring
- 👥 Real-time player tracking with location data
- 📍 Postal + street-level positioning system
- 👮 Staff data (Admins / Mods / Helpers)
- 🔫 Kill, join, command, and moderation logs
- 🚓 Vehicle tracking (plates, colours, ownership)
- 📞 Emergency call monitoring
- 🧠 Remote in-game command execution
- ⚡ Single-request full server data fetch (v2 feature)
📦 Installation
** Ensure pyerlc v1 is removed **
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")
# Server status
status = client.get_server_status()
print(status)
# Get all players with location data
players = client.get_players()
print(players)
# Run an in-game command
response = client.run_command(":h Hello from pyerlc v2!")
print(response)
📍 Player Location System (v2)
Each player now includes live world positioning data:
{
"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 → regional 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()
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!")
Response example:
{
"success": true,
"status_code": 200,
"data": {
"message": "Success"
}
}
⚡ Full Server Fetch (v2 Feature)
Fetch everything in a single 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)
📦 Project Info
- 📦 PyPI: https://pypi.org/project/pyerlc
- 🏠 Website: https://epelldevelopment.xyz
- 📧 Email: 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.1.0.tar.gz.
File metadata
- Download URL: pyerlc_v2-2.1.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99824a10b887eda43581cabb86b0e5afb0df5dcbb3b9c0e19c1c9574b3e4d67a
|
|
| MD5 |
da68e2abd4f600d96fb3fa8108955466
|
|
| BLAKE2b-256 |
1d4e1fed1885b884d8e3151682726f9c552d7a156eb9233fee6a81a9cf24f225
|
File details
Details for the file pyerlc_v2-2.1.0-py3-none-any.whl.
File metadata
- Download URL: pyerlc_v2-2.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
536697824889cdb1fcc563ce75e0141534c533ea8ff8f9bdab6514b79a9df20a
|
|
| MD5 |
50696703a4cb661f8feb4cfe1d0ff107
|
|
| BLAKE2b-256 |
593bea1f8d1da4cdf09556f07f93489bcfb87ca6d6a21e1541831e929c37b3d7
|