DESCRIPTION
Create bulletin boards where players can pin messages.
- Configurable...
- Locations (prepared locations and ymap are included)
- Discord webhook
- Optional: anonymous notifications (author of new pinboard post or remover of pinboard posts is hidden in Discord notification).
- Optional: Discord notifications about new and removed pinboard posts can be posted in separate Discord channels. (In combination with anonymous notifications you can notify your Discord users about new and/or removed pinboard posts anonymously if you want to inform you users OOC.)
- Optional: Discord webhooks are configurable each board (overwrites the global configuration for Discord webhooks).
- Map blip
- If no blip is set no blips are shown on the map
- You can configure each pinboard if blip is visible or not
- Prompt radius
- Optional automatic expiration duration
- Prompt open key
- Global admin group permissions
- Admins can use special command to unpin all notices at once (for all locations or specific locations)
- Admins can always unpin notices
- Global job group permissions for removing (e.g. the sherif can unpin notices)
- Job group permissions per board for adding (e.g. only the sherif can pin notices)
- Job group permissions per board for access (if restricted to sherifs only sherifs can use prompt to open board and see blip on map)
- Callbacks for permission to view a board and/or create posts on specific boards (e.g. for taxed based access).
- Languages
- Sorting of pinned notices
- Pin everywhere at once feature (persmissions configurable for single characters and persmission groups)
- Boards are groupable so the "pin everywhere at once" consider the board group to prevent posting in hidden boards of other board groups.
- Post "everywhere" for normal users if they pay a fee. Configurable per board group.
- Different notice types: text or image
- Lighweight text editor for text based notices
- Multiple backgrounds for text based notices
- Disable text or image creation globally or per board.
- Two board styles (outdoor and indoor)
- Optional "auto close on combat or damage" feature
- Day/night mode
- Full responsive design
VIDEO
DEPENDENCIES
- VorpCore
SUPPORT & INFO
- Discord
- Read the README.md for setup instructions.
- This script is encrypted.
CHANGELOG
- v1.5.0 (2026-03-08)
- Add in-game admin board management. Admins can place, edit, delete, reposition and teleport to boards directly in-game via a configurable chat command (`Config.AdminBoardCommand`, default: `boardadmin`).
- Boards created via the admin panel are stored in the database (`nss_pinboard_boards` table) and merged with `config.lua` boards on startup. Database boards take precedence over config.lua boards with the same city name.
- Add live placement preview with walk/fine mode and position/heading sliders.
- Add board reposition: move an existing board to a new position via placement mode from the board list.
- Add "Migrate Config Boards" button to copy all `config.lua` boards into the database (callbacks are not migrated).
- Add proximity-based prop spawning for database boards (chunk system, configurable via `Config.BoardViewDistance`).
- Add Lua callback support for database boards (stored as source text, compiled at runtime via `load()`).
- Add configurable prompt offset for database boards (`Config.DbBoardPromptOffset`, default: `0.5`).
- Fix blip cleanup on resource stop: blips were not removed because the wrong handle was stored.
- Block admin panel while a pinboard is open.
- UI improvements: icon buttons, scrollable dialogs, side-by-side job restriction columns, consistent title styling.
- Add freestanding board prop toggle (`has_foot`). Boards can use the freestanding prop model with feet (`mp005_p_mp_bountyboard02x`). Toggle via G-key during placement or via the foot checkbox in the placement UI.
- Add two board types: **Board with Prop** (spawns a bounty board prop) and **Trigger Point Only** (no prop, just a trigger location). New boards prompt for type selection. Config-migrated boards are automatically set to trigger-only. Board type is shown as icon in the board list.- Add admin audit log for board management. All board create, edit, delete and import actions are now logged with character name, Steam ID and timestamp. Edit actions include a detailed diff of changed fields. Logs can be viewed via a global log button or per-board log icon in the admin panel. Infinite scrolling loads entries in batches of 50.
- Add `Config.BoardLogRetentionDays` (default: `90`). Board log entries older than this many days are automatically deleted on resource start. Set to `nil` to keep log entries forever.
- v1.4.1 (2026-02-15)
- Fix support for webp images.
- Fix support for webp images.
- v1.4.0 (2025-11-22)
- Add `restrict_view_by_callback` to poster config to allow custom view restrictions via callback function, e.g. for subscriptions.
- Add `restrict_create_by_callback` to poster config to allow custom creation restrictions via callback function, e.g. for subscriptions.
- Add `nss_pinboard:reInitialize` client event to re-initialize pinboard data without reloading the resource, e.g. if subscription status changed.
- v1.3.5 (2025-11-17)
- Move discord webhooks from `config.lua` to a server readonly config file `secure.lua` to hide webhook urls from clients.
- `Config.DiscordWebhook` is now in `secure.lua`.
- Individual webhooks for posters are now in `secure.lua` as well, see `Config.PosterIndividualDiscordWebhooks`.
- v1.3.4 (2025-02-17)
- Add events to open/close pinboard (see README.MD for more information).
- v1.3.3 (2025-01-14)
- Fix `RemoveBlip` error if no number is given (since client artefact 12295).
- Fix `RemoveBlip` error if no number is given (since client artefact 12295).
- v1.3.2 (2024-11-10)
- Add optional `Config.UseZAxisForOpenPromptRadius` to enable z axis check for open prompt. See `config.demo.lua` for more information.
- v1.3.1 (2024-03-13)
- Add `Config.ImageServerBlacklist` to block specific image servers. See `config.demo.lua` for more information.
- Add FAQ to `README.md`.
- v1.3.0 (2024-03-07)
- Extend comments of `config.demo.lua` for more clarity.
- Add some debug prints to `actions.lua` because in newer versions of `vorp_core` sometimes (especially on many players) no char data available if should.
- Add torn sheet for broken image (e.g. that can no longer be found).
- Add alternative style of bulletin board. See examples in `config.demo.lua` with new poster configuration attribute `alternative_style`.
- Add new optional "close bulletin board on damage or combat" feature. See `Config.HideOnCombatOrDamage` in `config.demo.lua`.
- v1.2.2 (2024-02-07)
- Image urls with search params like `https://example.com/image.jpg?xyz=123` are now supported, too.
- v1.2.1 (2024-01-18)
- Update example `map/bulletin_boards_config.lua` and add missing `group` property.
- v1.2.0 (2023-07-13)
- Add option to disable creation of text or image posts (globally or per board).
- Add prev/next buttons to poster details for better navigation.
- Add "pinboard service". Players can pay a fee to post everywhere at once in a pinboard group.
- v1.1.9 (2023-07-05)
- Fix `jpeg` support for images (currently `jpg`, `jpeg`, `png` and `webm` are supported).
- v1.1.8 (2023-03-23)
- Add new required board property `group`. Restricts "post to all" feature to specific board groups.
- Add new optional board property `restrict_view_by_jobs`. Restricts the access to view a board (and blip) to one or more specific jobs.
- v1.1.7 (2023-03-17)
- Webhooks can now optionally configured each board.
- v1.1.6
- `Config.JobRemovePermissions` now checks correctly if job grade is equal or higher than the required grade.
- v1.1.5
- Add new `restrict_create_by_jobs` in `Config.Posters` to restrict the creation of new posters to one or more specific jobs. See `config.demo.lua` for more information.
- v1.1.4
- Remove unnecessary print output.
- v1.1.3
- Add optional new config attribute `Config.DiscordWebhook.webhook_url_new` for only new pinboard notifications.
- Add optional new config attribute `Config.DiscordWebhook.anonymous_new` which hides the character name for webhook_url_new notifications. This have no effect to webhook_url notifications.
- Add optional new config attribute `Config.DiscordWebhook.webhook_url_removed` for only removed pinboard notifications.
- Add optional new config attribute `Config.DiscordWebhook.anonymous_remover` which hides the character name for webhook_url_removed notifications. This have no effect to webhook_url notifications.
- Change config attribute `Config.DiscordWebhook.webhook_url` to be optional. It still sends all types of notifications to the same webhook but all authors and removers are not anonymous.
- Add new translation discord_anonymous_user for anonymous characters for `webhook_url_new` and `webhook_url_removed` notifications.
- Moved changelog from README.md to CHANGELOG.md.
- v1.1.2
- Add `hide_blip` property for `Config.Posters`. If set to `true` no blip is shown on the map for the related pinboard.
- v1.1.1
- Bugfix: Order of text sections are now correct if inserted between two existing sections.
- v1.1.0
- Add possibility to pin a new note everywhere at once.
- Permissions of new feature is configurable for groups and character names (full names).
- Add new language keys `discord_location_everywhere`, `post_everywhere_at_once`, `post_everywhere_at_once_every_where` and `post_everywhere_at_once_only_here`.
- Update discord webhook to show as location "everwhere" if someone uses the new feature.
- Admins always have the permission to use the new feature.
- v1.0.2
- Results of automated processes are shown in discord more clear, e.g. "System" instead of character name.
- Results of console commands are shown in discord more clear, e.g. "Marti McFly (via Console)".
- Add `Config.DiscordWebhook.system_user_alias` to config file, see example in `config.demo.lua`.
- Add key `discord_console_command` to languages.
- Fix to many linebreaks in poster text.
- v1.0.1
- Add sorting of notices (configurable: ascending/descending).