Skip to main content

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


📡 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


📜 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

pyerlc_v2-2.0.2.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyerlc_v2-2.0.2-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

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

Hashes for pyerlc_v2-2.0.2.tar.gz
Algorithm Hash digest
SHA256 809f0fa99e77395b4715dc5aeae5b530909b5e309c338865c662e24e2507a728
MD5 ec9fa609068397bf7dd935e9820c82a7
BLAKE2b-256 7e39724702d5716b0def748d25947e2940b8637abdcb3a3fabc88d6fed81415a

See more details on using hashes here.

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

Hashes for pyerlc_v2-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c8f3bd538e122c2331ea0f540cdc0e13e97774ba843ef3629cabaab6ac95cef1
MD5 c1a1372024f291343b4c820c4f15d743
BLAKE2b-256 f55a8a8c1857182f304da1bdda4bd66e3187c3efb78800e34c1ea74a1ec20999

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page