Skip to main content

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 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


📡 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


📜 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.1.1.tar.gz (10.6 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.1.1-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file pyerlc_v2-2.1.1.tar.gz.

File metadata

  • Download URL: pyerlc_v2-2.1.1.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for pyerlc_v2-2.1.1.tar.gz
Algorithm Hash digest
SHA256 07b8a6f8543d9902213a01e88284b77cc496f6ae79bc64710ec4c7ccc9a39c48
MD5 b4e6b942909b2612e13579dbc73eb90e
BLAKE2b-256 c17a72ecdfae4b8362350e4e6bbc8eae2d768ae4a8152a3c0d4ad2e196abb25a

See more details on using hashes here.

File details

Details for the file pyerlc_v2-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyerlc_v2-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for pyerlc_v2-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3c0705bacbdce1dc5b464e85f517782692ea8f6ffe38c9698d4fa0e4854c01a0
MD5 e3331ddbb91be1881edb54a4b563447c
BLAKE2b-256 c104e94519eef57c376339b836907ba0808bd54a8413aca021ec9d7252f8da68

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