/// PIMPMYRUST PLUGIN
Player Events Messages
Settings guide for this version of Player Events Messages. Check the plugin page before using it on your server.
Prepare your file
- Check the installed version
This guide describes Player Events Messages 0.1.2. Use the same version in the configurator.
- Get the settings
Click Import, then From my server. Select the files and confirm loading them. Selecting a server does not replace the open document. You can also import files from this device or a configuration from My projects.
- Edit and send
Adjust settings, fix errors, then use Send to transfer files to the selected server. A conflict blocks sending until you choose how to resolve it. You can still export only the files you need.
Server transfers have private backups. Save keeps your work in My projects; it does not send anything to the server. A download also lets you resume without a server connection.
Settings for this version
General 5
- Delay between announcements · seconds
- Number · required
Global per-player delay between announcements, in seconds. In LTS, the first announcement may also wait this long after server startup. The event-specific delay still applies.
JSON path
(By player) Message Cooldown for any types (seconds)Minimum : 0 · Maximum : 31536000
- Delay per event · seconds
- Number · required
Per-player delay before another announcement of the same event: death, kill, connection or disconnection.
JSON path
(By player) Message Cooldown for each types (seconds)Minimum : 0 · Maximum : 31536000
- Opening commands
- List · required
Chat commands that open the announcement selection panel, without the leading /.
JSON path
Commands for show UI - Announcements
- JSON value · required
Announcement catalogue. Each identifier matches a key in the PlayerEventChatMessages.json language file.
JSON path
Messages (go to lang directory for values) - Plugins Extensions (optional)
- JSON value
Additional settings retained for plugin integrations. Leave this group empty unless an integration uses them.
JSON path
Plugins Extensions (optional)
Currency 4
- Currency plugin
- Choice · required
Provider used to pay for announcements. Custom calls the configured plugin functions below.
JSON path
Money → Money Plugin Type ('Economics' | 'ServerRewards' | 'Custom')Allowed values: Economics, ServerRewards, Custom
- Custom plugin
- Text
Name of the loaded currency plugin. Used only when the provider is Custom.
JSON path
Money → (Custom) Plugin Name - Balance lookup hook
- Text
Custom provider function returning an integer balance for a player SteamID. This LTS does not parse decimal balances.
JSON path
Money → (Custom) Plugin Hook => int/double/float Hook(string id) - Debit hook
- Text
Custom provider function that debits the price for the supplied SteamID and returns whether payment succeeded. It must also accept zero for free announcements.
JSON path
Money → (Custom) Plugin Hook => bool Hook(string id, int val)
Categories 4
- Category Height
- Number
Height of one category button in the panel, in pixels.
JSON path
UI → Categories → Category Height - Category Width
- Number
Width of one category button in the panel, in pixels.
JSON path
UI → Categories → Category Width - Category Font Size
- Whole number
Text size for the death, kill, connection and disconnection category names.
JSON path
UI → Categories → Category Font Size - Is Vertical
- On / off
Arranges categories in a column. Keep this enabled in LTS: horizontal positioning can extend outside the default panel.
JSON path
UI → Categories → Is Vertical
Icons 3
- Money Icon Url
- Text
Direct image URL for the price or balance icon.
JSON path
UI → Icons → Money Icon Url - New Icon Url
- Text
Direct image URL for an announcement that is new to the player.
JSON path
UI → Icons → New Icon Url - Vip Icon Url
- Text
Direct image URL marking announcements reserved for VIP players.
JSON path
UI → Icons → Vip Icon Url
Messages 7
- Message Item Height
- Number
Height of each announcement card in the catalogue, in pixels.
JSON path
UI → Messages → Message Item Height - Max Message Per Line
- Number
Number of announcement cards in a row. Increasing it makes each card narrower.
JSON path
UI → Messages → Max Message Per Line - Message Margin Height
- Number
Vertical spacing between announcement-card rows, in pixels.
JSON path
UI → Messages → Message Margin Height - Message Margin Width
- Number
Horizontal spacing between announcement cards, in pixels.
JSON path
UI → Messages → Message Margin Width - Message Font Size
- Whole number
Translated message text size in announcement cards.
JSON path
UI → Messages → Message Font Size - Icon Ratio (VIP, New, Money)
- Number
Size multiplier for VIP, new-announcement and price icons. The plugin uses fixed base sizes of 15 and 10 pixels.
JSON path
UI → Messages → Icon Ratio (VIP, New, Money) - Price font size
- Whole number
Price text size on paid announcement cards.
JSON path
UI → Messages → Price font size
Money Top 2
- Money Icon Ratio
- Number
Fraction of the balance header height occupied by its icon.
JSON path
UI → Money Top → Money Icon Ratio - Money Text Size
- Whole number
Text size of the player balance display.
JSON path
UI → Money Top → Money Text Size
Title 2
- Title Font Size
- Whole number
Panel title size. Check that longer translated titles still fit their frame.
JSON path
UI → Title → Title Font Size - Title Font
- Text
Rust font used for the panel title, for example robotocondensed-bold.ttf.
JSON path
UI → Title → Title Font
Categories Rect 8
- X Size Min
- Number
Left-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Categories Rect → X Size Min - Y Size Min
- Number
Bottom-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Categories Rect → Y Size Min - X Size Max
- Number
Right-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Categories Rect → X Size Max - Y Size Max
- Number
Top-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Categories Rect → Y Size Max - Position X
- Number
Horizontal parent anchor: 0 is left, 0.5 center and 1 right. Edge offsets are added to this position.
JSON path
UI → Rects → Categories Rect → Position X - Position Y
- Number
Vertical parent anchor: 0 is bottom, 0.5 center and 1 top. Edge offsets are added to this position.
JSON path
UI → Rects → Categories Rect → Position Y - Width
- Number
Plugin-calculated width: X Size Max minus X Size Min. Edit the edges to change the width.
JSON path
UI → Rects → Categories Rect → Width - Height
- Number
Plugin-calculated height: Y Size Max minus Y Size Min. Edit the edges to change the height.
JSON path
UI → Rects → Categories Rect → Height
Close Rect 8
- X Size Min
- Number
Left-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Close Rect → X Size Min - Y Size Min
- Number
Bottom-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Close Rect → Y Size Min - X Size Max
- Number
Right-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Close Rect → X Size Max - Y Size Max
- Number
Top-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Close Rect → Y Size Max - Position X
- Number
Horizontal parent anchor: 0 is left, 0.5 center and 1 right. Edge offsets are added to this position.
JSON path
UI → Rects → Close Rect → Position X - Position Y
- Number
Vertical parent anchor: 0 is bottom, 0.5 center and 1 top. Edge offsets are added to this position.
JSON path
UI → Rects → Close Rect → Position Y - Width
- Number
Plugin-calculated width: X Size Max minus X Size Min. Edit the edges to change the width.
JSON path
UI → Rects → Close Rect → Width - Height
- Number
Plugin-calculated height: Y Size Max minus Y Size Min. Edit the edges to change the height.
JSON path
UI → Rects → Close Rect → Height
Content Rect 8
- X Size Min
- Number
Left-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Content Rect → X Size Min - Y Size Min
- Number
Bottom-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Content Rect → Y Size Min - X Size Max
- Number
Right-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Content Rect → X Size Max - Y Size Max
- Number
Top-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Content Rect → Y Size Max - Position X
- Number
Horizontal parent anchor: 0 is left, 0.5 center and 1 right. Edge offsets are added to this position.
JSON path
UI → Rects → Content Rect → Position X - Position Y
- Number
Vertical parent anchor: 0 is bottom, 0.5 center and 1 top. Edge offsets are added to this position.
JSON path
UI → Rects → Content Rect → Position Y - Width
- Number
Plugin-calculated width: X Size Max minus X Size Min. Edit the edges to change the width.
JSON path
UI → Rects → Content Rect → Width - Height
- Number
Plugin-calculated height: Y Size Max minus Y Size Min. Edit the edges to change the height.
JSON path
UI → Rects → Content Rect → Height
Top Rect 8
- X Size Min
- Number
Left-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Top Rect → X Size Min - Y Size Min
- Number
Bottom-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Top Rect → Y Size Min - X Size Max
- Number
Right-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Top Rect → X Size Max - Y Size Max
- Number
Top-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Top Rect → Y Size Max - Position X
- Number
Horizontal parent anchor: 0 is left, 0.5 center and 1 right. Edge offsets are added to this position.
JSON path
UI → Rects → Top Rect → Position X - Position Y
- Number
Vertical parent anchor: 0 is bottom, 0.5 center and 1 top. Edge offsets are added to this position.
JSON path
UI → Rects → Top Rect → Position Y - Width
- Number
Plugin-calculated width: X Size Max minus X Size Min. Edit the edges to change the width.
JSON path
UI → Rects → Top Rect → Width - Height
- Number
Plugin-calculated height: Y Size Max minus Y Size Min. Edit the edges to change the height.
JSON path
UI → Rects → Top Rect → Height
Window Rect 8
- X Size Min
- Number
Left-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Window Rect → X Size Min - Y Size Min
- Number
Bottom-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Window Rect → Y Size Min - X Size Max
- Number
Right-edge horizontal offset in pixels from the anchor point.
JSON path
UI → Rects → Window Rect → X Size Max - Y Size Max
- Number
Top-edge vertical offset in pixels from the anchor point.
JSON path
UI → Rects → Window Rect → Y Size Max - Position X
- Number
Horizontal parent anchor: 0 is left, 0.5 center and 1 right. Edge offsets are added to this position.
JSON path
UI → Rects → Window Rect → Position X - Position Y
- Number
Vertical parent anchor: 0 is bottom, 0.5 center and 1 top. Edge offsets are added to this position.
JSON path
UI → Rects → Window Rect → Position Y - Width
- Number
Plugin-calculated width: X Size Max minus X Size Min. Edit the edges to change the width.
JSON path
UI → Rects → Window Rect → Width - Height
- Number
Plugin-calculated height: Y Size Max minus Y Size Min. Edit the edges to change the height.
JSON path
UI → Rects → Window Rect → Height
Colors 7
- Surface
- Text
Color for card surfaces. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → Surface - Background
- Text
Color for panel background. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → Background - TextPrimary
- Text
Color for main text. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → TextPrimary - TextOnSelected
- Text
Color for selected-announcement text. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → TextOnSelected - Primary
- Text
Legacy color retained in the file; the LTS 0.1.2 renderer does not use it.
JSON path
UI → Theme → Colors → Primary - Selected
- Text
Color for selected control. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → Selected - CloseButton
- Text
Color for close button. Rust RGBA values from 0 to 1; the last value controls opacity.
JSON path
UI → Theme → Colors → CloseButton
Plugin instructions
PLAYER EVENTS MESSAGES — STABLE 0.1.2
This guide covers Codefling version 0.1.2 and its native interface only. PimpMyCUI, 0.2.0 packs, random mode, cause/weapon/distance conditions, pem.grant and pem.receipt are not features of this version.
INSTALLATION AND FILES Install PlayerEventChatMessages.cs in oxide/plugins. Configuration: oxide/config/PlayerEventChatMessages.json. Languages: oxide/lang/fr/PlayerEventChatMessages.json and, if authored, oxide/lang/en/PlayerEventChatMessages.json. Player data: oxide/data/PlayerEventChatMessages/user_<steamid64>.json. Back up these files before replacing them. Never replace player data with a configuration example or older data that loses subsequent purchases.
The 0.1.2 Default() initializer creates an empty catalogue. Its reconstructed generated-default.json is source evidence, not an observed live server file. The supplied ZIP separately contains supplied.json with 43 configured messages and lang/fr.json with their French text. Supplied English is empty. Use configuration and language together, or populate all four categories before opening the panel: its old renderer assumes the category exists. Supplied files are not automatically merged into an existing configuration.
PERMISSIONS AND OPENING PlayerEventChatMessages.Default: permission checked by announcement hooks. PlayerEventChatMessages.VIP: access to VIP-only messages. PlayerEventChatMessages.UnlimitedCooldown: bypass announcement delays. No PlayerEventChatMessages.Admin permission is registered in 0.1.2. Console example: oxide.grant group default PlayerEventChatMessages.Default. Default opening aliases are /pevent and /pevent_show, configured in Commands for show UI. They open the kill category (PlayerKill); the candidate's optional category argument is not implemented in this version. The historical opening command does not consistently enforce Default permission. This guide does not attribute the candidate's protections to the stable version.
CHOICES AND PURCHASES The categories are PlayerDead, PlayerKill, PlayerConnect and PlayerDisconnect. Players select one fixed message per category. Clicking the same choice again deselects it; separate announcements ON/OFF and random controls do not exist. No selection means no announcement. Obtention.Price (JSON key Price (0 => free)) determines the price. Exclusive and Free For VIP restricts a message to VIP and grants it without buying. A zero price does not guarantee automatic ordinary-player acquisition: their message initializer is empty in this historical source.
Money selects Economics (default), ServerRewards or Custom; no Money.Enabled. The native panel queries balance when opening even with zero prices, so the configured provider must be installed and checked. Economics uses Balance/Withdraw; ServerRewards uses CheckPoints/TakePoints. Custom specifies a plugin name, balance hook(string id) and withdrawal hook (string id, int val). Check its initialization on the server; this guide does not promise that every numeric return type is supported. Configured global delay is 1800 seconds per player; category delay is 5 seconds. These are not the candidate's 15/30 defaults or persisted candidate cooldowns. Changed player data is saved on server save / unload.
HISTORICAL ADMINISTRATIVE COMMANDS /peventmessage_add <message-id>: grant to the administrator issuing the command. /peventmessage_enable <message-id>: select/deselect for that same administrator. These commands check IsAdmin and accept no target Steam ID. peventmessage_showcat/clickmessage/buymessage/clicknew console commands are panel callbacks, not a recommended remote administrative API. No targeted API_GrantMessage or durable purchase receipt journal exists in 0.1.2.
TEXT AND IDENTIFIERS A catalogue key is its language ID. Retain IDs already purchased or selected. Supplied IDs: 1–12 death, 13–22 kill, 23–33 connection, 34–43 disconnection. A new ID needs both its configuration entry and corresponding language text. <owner_name>: all categories; <victim_name>/<kill_type>: kill; <death_type>: death. The current code passes Global for death and Distance for kill: these are not actual detected circumstances. <killer_name>, <weapon_name>, <weapon> and <distance> are not substituted here. Historical Lang() uses string.Format: escape literal braces as {{ and }}. Supplied French text and rich text remain unchanged, not rewritten. English must be authored/imported explicitly; no EN pack ships with stable. Do not use 0.2.0 UI references as a historical baseline.
APPEARANCE AND CUSTOMWINDOW UI configures the native panel: rectangles, title, categories, icons, messages, theme. Rectangle Width/Height are computed from X/Y Size Min/Max in code: change the Min/Max dimensions, not just JSON copies of Width/Height. Historical CustomWindow integration exists here and is disabled by default. Enabling it requires the plugin and configured WindowName/PageName/TabName. Do not enable a missing integration assuming a fallback renderer. CustomWindow removal applies to candidate 0.2.0, not the unchanged stable ZIP.
USING THE HUB Import existing configuration/languages, edit, then select files to export. The supplied example replaces the declared files after draft confirmation. Retain other server files, especially player purchases/data. The Hub does not simulate the native 0.1.2 panel; PimpMyCUI preview is for 0.2.0. Forms are guest-accessible; JSON/ZIP outputs and advanced JSON follow the Hub's Codefling purchase policy. No new checkout or server deployment is added.
Install the files
With a connected server, click Send in the configurator. The result shows whether the files were sent and the plugin reloaded. Without RCON, reload the plugin from your server panel after sending.
Without a connected server: Keep a copy of the current files. Place each export in the folder shown before export, or follow the paths in the ZIP. Do not put data or translation files in the config folder.
Follow the plugin instructions above for dependencies and reloading. Exporting does not connect the site to your server.