/// 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.3. 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 4
- Announcement cooldown
- Number
Minimum time between announcements from the same player, across all categories.
JSON path
(By player) Message Cooldown for any types (seconds)Minimum : 0
- Category cooldown
- Number
Shared delay used for events without an individual override.
JSON path
(By player) Message Cooldown for each types (seconds)Minimum : 0
- Panel commands
- List · required
Chat commands that open the player panel. Enter the name without a slash or arguments.
JSON path
Commands for show UI - Messages (go to lang directory for values)
- JSON value · required
Announcements offered to players, with their event, price and VIP access. Each announcement’s text is stored in the language files.
JSON path
Messages (go to lang directory for values)
Cooldown by event 4
- Join
- Number
Minimum seconds between two connection announcements for the same player. Overrides the general delay for this event; 0 removes its wait.
JSON path
(By player) Message Cooldown overrides by event (seconds) → PlayerConnectMinimum : 0
- Leave
- Number
Minimum seconds between two disconnection announcements for the same player. Overrides the general delay for this event; 0 removes its wait.
JSON path
(By player) Message Cooldown overrides by event (seconds) → PlayerDisconnectMinimum : 0
- Kill
- Number
Minimum seconds between two kill announcements for the same player. Overrides the general delay for this event; 0 removes its wait.
JSON path
(By player) Message Cooldown overrides by event (seconds) → PlayerKillMinimum : 0
- Death
- Number
Minimum seconds between two death announcements for the same player. Overrides the general delay for this event; 0 removes its wait.
JSON path
(By player) Message Cooldown overrides by event (seconds) → PlayerDeadMinimum : 0
Message purchases 4
- Currency provider
- Choice · required
Plugin used to pay for messages. Free messages remain available without a currency plugin.
JSON path
Money → Money Plugin Type ('Economics' | 'ServerRewards' | 'Custom')Allowed values: Economics, ServerRewards, Custom
- Currency plugin
- Text
Exact name of the currency plugin, for the Custom provider only.
JSON path
Money → (Custom) Plugin Name - Balance hook
- Text
Hook that receives the Steam ID and returns the player's balance.
JSON path
Money → (Custom) Plugin Hook => int/double/float Hook(string id) - Withdrawal hook
- Text
Hook that receives the Steam ID and price, debits the player and returns true on success.
JSON path
Money → (Custom) Plugin Hook => bool Hook(string id, int val)
Appearance 1
- Layout
- Choice · required
Compact: a list. Cards: two columns. Terminal: a numbered list. Each layout displays six messages per page.
JSON path
UI → NativeTemplateAllowed values: compact, cards, terminal
Colours and dimensions 12
- Accent
- Text · required
Colour of the selected category, active message and purchase button.
JSON path
UI → Native → Accent - Panel background
- Text · required
Background of the window and available-message buttons.
JSON path
UI → Native → Background - Message background
- Text · required
Background of the header, message cards and unselected categories.
JSON path
UI → Native → Surface - Text
- Text · required
Colour of announcements and primary button text.
JSON path
UI → Native → Text - Secondary text
- Text · required
Colour of the balance, prices, pagination and secondary labels.
JSON path
UI → Native → Muted - Separators
- Text · required
Colour of separators, message edges and unavailable buttons.
JSON path
UI → Native → Border - Background opacity
- Number · required
Make the panel background transparent (0) or opaque (1).
JSON path
UI → Native → OpacityMinimum : 0 · Maximum : 1
- Horizontal position
- Number · required
Place the panel on screen. X: left (0) to right (1). Y: bottom (0) to top (1).
JSON path
UI → Native → CenterXMinimum : 0 · Maximum : 1
- Vertical position
- Number · required
Place the panel on screen. X: left (0) to right (1). Y: bottom (0) to top (1).
JSON path
UI → Native → CenterYMinimum : 0 · Maximum : 1
- Width
- Whole number · required
Panel width in CUI pixels.
JSON path
UI → Native → WidthMinimum : 640 · Maximum : 1000
- Height
- Whole number · required
Panel height. Larger text requires more height to keep all six messages readable.
JSON path
UI → Native → HeightMinimum : 540 · Maximum : 720
- Text size
- Whole number · required
Text size for the panel's messages and buttons.
JSON path
UI → Native → FontSizeMinimum : 12 · Maximum : 18
Plugin instructions
PLAYER EVENTS MESSAGES — NATIVE 0.1.3
Beta 0.1.3. The LTS version published on Codefling remains 0.1.2. Downloading the plugin requires sign-in and a verified entitlement for the requested version. Check its product page for available access. Configuration exports remain available without buying the plugin. PimpMyCUI is not required.
This version keeps manual selection of death, kill, join and leave announcements. The panel has three configurable layouts: list, cards and terminal. New mechanics and editable PimpMyCUI templates from the withdrawn 0.2.0 beta are not included.
NEW INSTALLATION
- Upload oxide/plugins/PlayerEventChatMessages.cs to your server.
- Let the plugin generate its configuration and language files. The files in this archive match those generated defaults.
- Grant access to your chosen group: oxide.grant group default PlayerEventChatMessages.Default
- Players open the panel with /pevent or /pevent_show.
- Select one announcement per category. Buying unlocks an announcement; it does not select it automatically. Clicking the selected announcement disables it for that category.
The fresh catalogue contains 36 EN/FR announcements: 9 per category, including 3 free, 3 purchasable and 3 VIP choices. Free announcements need no economy plugin. Economics is the default provider. Without it, only purchases are unavailable. To use ServerRewards, change the provider in the Money section.
UPDATING FROM 0.1.2
- Back up configuration, languages and oxide/data/PlayerEventChatMessages.
- Replace ONLY the .cs file. Do not overwrite your existing JSON files with those from the archive.
- Reload and check the console. Invalid configuration, language or player data is preserved rather than replaced with defaults.
- Existing message IDs, purchases, selections and translations are retained. Missing language keys are added without replacing your text.
The 36 starter announcements do not replace an existing catalogue. Explicitly add wanted messages with unique identifiers and matching text in UTF-8 language files. Retain existing entries and IDs still owned by players. A plugin-only download does not necessarily include the source archive’s supplementary files.
APPEARANCE
Under UI, NativeTemplate selects compact, cards or terminal. UI.Native controls RGBA colours, opacity, position, dimensions and text size. The PimpMyRust configurator displays these settings alongside a preview. Historical UI settings remain in existing files to preserve an update, but do not control the new panel. There is no fallback to the old renderer. CustomWindow integration has been removed; its historical keys are not used.
TEXT AND PERMISSIONS
Announcement text lives in oxide/lang/en/PlayerEventChatMessages.json, with its French counterpart under fr. The message ID links each catalogue entry to its text. <owner_name> is the player; <victim_name> can be used for kill announcements. If you add another language and its file cannot be read, announcements skip only the players using that language. Other recipients still receive the text, and the cooldown applies when at least one announcement was delivered. The console identifies the affected language/message; repair the file yourself. The plugin does not replace it with a default translation. Historical <death_type> and <kill_type> keep their old meaning, without advanced cause, weapon or distance detection in this version. Click the announcement text to read it in full before activating or buying it. Long messages have their own reading pages; catalogue pages are separate. Short card/list excerpts may end with “…”; the chat announcement is not shortened. Reading uses the panel's font size; oversized <size> tags do not enlarge this preview. After a purchase, the panel shows the unlocked message with an Activate button. VIP restrictions, insufficient points and offline purchases are shown separately. Icons use built-in Rust sprites, with no image-host or ImageLibrary dependency.
PlayerEventChatMessages.Default: access to the panel and announcements. PlayerEventChatMessages.VIP: access to VIP announcements without purchasing. PlayerEventChatMessages.UnlimitedCooldown: bypass announcement cooldowns. Global and per-category cooldowns start only after an announcement is sent. The shared category delay remains the fallback for existing files. Under "(By player) Message Cooldown overrides by event (seconds)", optionally set PlayerConnect, PlayerDisconnect, PlayerKill and PlayerDead separately. An empty object preserves the shared delay; 0 disables that event's own delay. The global delay still applies across all events. Set it to 0 for independent event delays. Existing defaults (global 1800, shared category 5) are unchanged. Historical admin commands /peventmessage_add ID and /peventmessage_enable ID apply to the administrator running them. This version adds no offline grant command for another player.
ECONOMY AND SAVING
A purchase checks the provider, balance and confirmation before withdrawing. Only a boolean true confirms withdrawal. Before withdrawal, a PendingPurchase record is saved in the player's data, including the operation ID and quoted price. An uncertain result or failed acquisition save blocks purchases across reloads. Free and owned messages remain available when player storage is healthy. Successful acquisition and removal of the pending record are saved together. Withdrawal and disk storage are not an atomic transaction. A crash between them may require manual reconciliation by the administrator. After checking the provider's transaction history, a server-console/RCON command or an administrator's F1 console can resolve that exact pending operation: peventmessage_resolvepurchase STEAMID OPERATION_ID grant Use grant only when payment was confirmed: it records the pending message as owned. peventmessage_resolvepurchase STEAMID OPERATION_ID clear Use clear only when no payment occurred or reconciliation was already completed. The operation ID is in PendingPurchase and in the unresolved-purchase console log. Both actions preserve other acquisitions and never withdraw, retry or refund money. Wrong/stale operation IDs and in-progress purchases are refused. Repair storage and reload before resolution if the player's writes are disabled. Back up data; do not downgrade the plugin while pending operations remain unresolved.
KEEP THE CHANNELS SEPARATE
Beta 0.2.0 configuration and player data cannot be loaded by this native version. Use separate test installations and backups for the two channels. This candidate is compiled against the identified Oxide/Carbon references recorded in its delivery receipt. See VALIDATION.en.txt for the bounded live-server checks without a client, including fixture sessions/hooks and their limits. Real-client network reception and interaction are not claimed. Nothing has been published.
Keep text and player data
Save language files as UTF-8 and retain custom translations. The installed file is PlayerEventChatMessages.cs. Version 0.1.3 has a built-in player panel.
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.