
- Unzip Pandryx_Notify and place Pandryx_Notify in your server’s resources folder.
- Add ensure Pandryx_Notify to your server.cfg
- Make sure it starts before any resource that depends on it
- Start / Restart your server
config.lua contains the default fallback values used when a parameter is not explicitly passed by the caller.
false, 0, and "" — are always respected and will never be overwritten by a default.
Notification Fields
| Field | Type | Description | |
|---|---|---|---|
type | string | Notification style. See types below | |
title | string | Bold heading text | |
message | string | Body text. Can be empty | |
icon | `string | nil` | Emoji override e.g. "🛡️". nil uses the type default |
duration | number | Auto-dismiss time in ms. 0 = persistent | |
position | string | Screen anchor. See positions below | |
important | boolean | Pins to front of stack. No auto-dismiss | |
progress | boolean | Show countdown progress bar | |
sound | `string | boolean` | Filename from html/sounds/ e.g. "pop.wav". false = silent |
confetti | boolean | Burst of confetti on mount | |
stacking | boolean | true = deck mode, false = list/column mode | |
actions | table | Array of action button objects. See actions below |
| Type | Layout | Notes |
|---|---|---|
"success" | Toast | Green accent |
"error" | Toast | Red accent |
"warning" | Toast | Amber accent |
"info" | Toast | Blue accent |
"celebration" | Centred, large icon | Pair with confetti = true |
"confirm" | Dialog, centred | Pair with duration = 0 and actions |
| Value | Location |
|---|---|
"top-left" | Top left corner |
"top-center" | Top center |
"top-right" | Top right corner |
"bottom-left" | Bottom left corner |
"bottom-center" | Bottom center |
"bottom-right" | Bottom right corner |
| Field | Type | Description | |
|---|---|---|---|
label | string | Button text | |
style | string | "primary", "secondary", or "ghost" | |
event | string | Event name to fire e.g. "myScript:onAccept" | |
eventType | string | "client" or "server". Defaults to "client" | |
data | `table | nil` | Optional data passed to the receiving event handler |
notify fires either TriggerEvent or TriggerServerEvent depending on eventType. The receiving event handler is registered in your own resource, not in notify.
Action Button Styles
| Style | Appearance | Typical Use |
|---|---|---|
"primary" | Accent coloured, glowing border | Main confirm action |
"secondary" | Subtle border, muted text | Reject or cancel action |
"ghost" | Text only, inline with message | Lightweight undo-style action |
.wav, .mp3, or .ogg file inside html/sounds/ and reference it by filename:
sound = false or omit the field entirely for a silent notification.
Stacking Modes
| Mode | Field | Behaviour |
|---|---|---|
| Deck | stacking = true | Notifications stack on top of each other. Older ones peek behind |
| List | stacking = false | Notifications appear as a vertical column |
position or stacking field. This lets you change the layout between calls.
Important Notifications
Setting important = true pins the notification to the front of the stack and disables auto-dismiss. The player must manually close it.
-1 as playerId to broadcast to all connected players.
Server-Side Event
notify.
Client-side handler
Pandryx_Notify to something else, update every export call in your other resources to match:
Pandryx_Notify:client:*, Pandryx_Notify:server:*) do not change automatically — find and replace them across your codebase if you rename.
Adding New Sounds
Download link: https://mixkit.co/free-sound-effects/notification/
Drop any .wav, .mp3, or .ogg file into html/sounds/ and reference it by filename in your notification call:
fxmanifest.lua are needed. The html/sounds/* wildcard serves all files in that folder automatically.