Paid scripts
Poggy's Supply Drops
Supply drops that float down under a hot air balloon and scavenger hunts with a photo and a riddle: world events that send players racing across the map for loot.
Overview#
Poggy's Supply Drops adds two kinds of world event to your RedM server. Both start by themselves on a schedule you control, and admins can start one at any time with a command.
- Supply drops. A crate floats down under a hot air balloon at a random place on the map. Every player is told where. The first player to reach the crate and hold G takes the goods.
- Scavenger hunts. A treasure is hidden somewhere in the world. Players type
/clueto see a photo of the hiding place and the reward. A riddle is hidden behind a button: revealing it helps, but costs part of the reward.
Features
- Balloon drops that come down, release the crate and fade away.
- 10 drop locations and 30 scavenger hunts ready to use, each hunt with its own photo and riddle.
- Weighted loot for drops, including weapons.
- Cash, gold or item rewards for hunts.
- Map blips, notifications, and five colour themes for the hunt window.
- Separate Discord webhooks for drops and for hunts.
- Every setting, location, loot entry and hunt can be edited in game in
/poggy. - English, Spanish and French messages included.
- No database tables.
Requirements#
| Needed | Notes |
|---|---|
| A supported framework | VORP Core, RSG Core or QBCore RedM. RedM only. |
| poggy_core 0.13.0 or newer | Free. It connects the script to your framework. With 0.23.0 or newer, the hunt window follows the Poggy theme chosen in /poggy. |
| The loot and reward items | Every item in the drop loot and the hunt rewards must exist in your framework's items. See Installation. |
No database is used and nothing needs importing.
Installation#
- Download the script from your Cfx.re portal (Granted Assets) and unzip it.
- Put the
poggy_supplydropsfolder in your server's resources folder. - Make sure poggy_core is installed and started.
- Add the script to
server.cfg, after poggy_core:ensure poggy_core ensure poggy_supplydrops - Check the items. The default drop loot uses common VORP item names (
coal,apple,iron,wood,beef,milkand so on) and four weapons. The default hunt rewards include the itemgolden_nugget. Remove or rename any entry whose item your server does not have. - Restart the server.
Nothing happens straight away. Automatic events only start once the first player has loaded in, and the first ones come after a wait of several minutes. Use /supplydrop or /scavengerhunt as an admin to test at once.
Configuration#
The easiest way to change settings is in game: type /poggy and open Supply Drops & Scavenger Hunts. Settings are split into tabs (General, Supply drops, Scavenger hunts, Timing & schedule, Notifications & Discord, Text & language, Advanced), and the hub has help pages for the schedule, adding drop locations and loot, and adding hunts. You can also edit config.lua and translations.lua by hand. Restart the script after a change.
Every time in the schedule, and the two "time before it vanishes" settings, are in milliseconds. 60000 is 1 minute, 600000 is 10 minutes, 3600000 is 1 hour.
General
| Setting | Default | What it does |
|---|---|---|
Supply drops (Config.EnableSupplyDrops) | on | Turns supply drops off completely, including /supplydrop. |
Scavenger hunts (Config.EnableScavengerHunts) | on | Turns scavenger hunts off completely, including /scavengerhunt and /clue. |
Debug output (Config.Debug) | off | Prints extra lines to the server and F8 consoles. Leave off on a live server. |
Timing and schedule
Drops and hunts each run on their own timer. After an event starts (by itself or by command), a cooldown begins: the cooldown time plus a random extra. When it ends, the script waits a random time between the shortest and longest wait, then starts the next event.
| Setting | Default | What it does |
|---|---|---|
Automatic events (Config.RandomEvent.Enabled) | on | Off means events only start when an admin uses a command. |
Supply drop cooldown (SupplyDropCooldown.Min) | 3600000 (60 min) | No automatic drop for at least this long after any drop. |
Supply drop extra random cooldown (SupplyDropCooldown.RandomAdd) | 1800000 (30 min) | Up to this much is added to the cooldown at random. 0 makes it exact. |
Supply drop shortest / longest wait (SupplyDropTimer) | 600000 / 2700000 (10 / 45 min) | The random wait after the cooldown before the next drop. |
Scavenger hunt cooldown (ScavengerHuntCooldown.Min) | 5400000 (90 min) | No automatic hunt for at least this long after any hunt. |
Scavenger hunt extra random cooldown (ScavengerHuntCooldown.RandomAdd) | 3600000 (60 min) | Up to this much is added to the hunt cooldown at random. |
Scavenger hunt shortest / longest wait (ScavengerHuntTimer) | 1200000 / 3600000 (20 / 60 min) | The random wait after the cooldown before the next hunt. |
With the defaults a new supply drop comes about every 70 to 135 minutes, and a new hunt about every 110 to 210 minutes. For more drops, lower the cooldown and the longest wait. If a longest wait is not above its shortest, one minute more than the shortest is used.
Supply drops
| Setting | Default | What it does |
|---|---|---|
Balloon drops (UseAirdrops) | on | On: the crate comes down under a balloon. Off: it simply appears on the ground. Players far away when a drop starts always find it already landed. |
Start height (BalloonHeight) | 40 m | How high above the drop point the balloon starts. |
Release height (HoverHeight) | 8 m | The balloon stops this far above the ground, drops the crate and fades away. Too low and it clips into the ground. |
Descent time (DescentSpeed) | 60 s | How long the balloon takes to come down. The crate cannot be collected until it lands. |
Rope length (PropDistance) | 6 m | How far below the balloon the crate hangs. |
Collect distance (PromptDistance) | 2 m | How close a player must be to see the collect prompt. |
View distance (RenderDistance) | 200 m | Players within this distance see the crate and balloon. |
Time before it vanishes (DropTimeout) | 900000 (15 min) | An uncollected drop disappears after this long. The check runs every 5 minutes, so it can last up to 5 minutes longer. |
Map blip (Blip) | blip_ambient_crate, yellow-orange, "Supply Drop" | The icon, colour and name of a drop on the map. |
Drop locations
Ten locations ship, including Saint Denis Docks, Rhodes, Blackwater Docks, Riggs, Wallace, Annesburg, Bacchus, Armadillo and Emerald train stations, and the Oil Fields. Each drop picks one at random. To add one in game:
- Stand on an open spot with clear sky above it (the balloon comes down from 40 m).
- Open
/poggy→ Supply Drops & Scavenger Hunts → Supply drops, and in Drop locations press Add location. - Give it a Name (players read it in the notification), press use my position, then save and restart the script.
Drop loot
Each drop picks one loot entry. Every entry has an Item, a Label players see, an Amount (min, max), a Weight and a Crate prop (the object players see, such as p_crateapple01b).
- Weight is not a percent. An entry with 20 is twice as likely as one with 10. An entry's chance is its weight divided by the total of all weights. Use whole numbers.
- Weapons: use a weapon name that starts with
WEAPON_, such asWEAPON_REVOLVER_CATTLEMAN. The player gets one weapon; the amount is ignored. - The default list has 22 items (food, meat, wood, ores and more) and four rare weapons at weight 1.
Scavenger hunts
| Setting | Default | What it does |
|---|---|---|
Window theme (Theme) | Oceanic | The colour scheme of the hunt window: Crimson, Twilight, Oceanic, Forest or Monochrome. |
Clue penalty (UI.CluePenalty) | 0.3 | How much of the reward is lost for revealing the riddle, from 0 to 1. 0.3 takes 30%. 0 makes the riddle free. Keep it below 1. |
Reveal button text (UI.ShowClueText) | "SHOW CLUE" | The text on the reveal button. |
Penalty warning (UI.PenaltyText) | "Warning: Revealing the clue will reduce your reward by 30%" | The warning under the button. It does not update by itself: change the percent here when you change the clue penalty. |
Collect distance (PromptDistance) | 2 m | How close a player must be to the treasure to see the collect prompt. |
View distance (RenderDistance) | 200 m | Players within this distance see the treasure. |
Time before it vanishes (HuntTimeout) | 2700000 (45 min) | An unclaimed hunt disappears after this long, up to 5 minutes later. |
Map blip (Blip) | blip_treasure, green, "Scavenger Hunt" | The icon, colour and name of a hunt on the map. |
Hunt rewards
Each hunt picks one reward by weight. The defaults are cash between $16 and $80 (weight 50) and 10 to 30 golden_nugget items (weight 10).
| Type | Fill in |
|---|---|
| Money | Currency (cash or gold) and Amount (min, max) in dollars. |
| Item | Item, Label and Amount (min, max) in whole numbers. |
For money amounts, use whole dollars or halves (16 or 16.5). Some cent values cannot be rolled, and a hunt with such a reward fails to start.
Adding a scavenger hunt
- Take a screenshot of the hiding place, save it as a .jpg with a short name such as
oldmill.jpg, and copy it into the script'sui/imagesfolder. Only .jpg files are sent to players. - Stand exactly where the treasure should be.
- Open
/poggy→ Supply Drops & Scavenger Hunts → Scavenger hunts, and in Hunt locations press Add hunt. - Press use my position, set Photo to the file name and write the Clue (the riddle). Title and Treasure prop (
p_moneybag02x) can stay as they are. - Save and restart the script. The restart also sends the new photo to players.
Notifications and Discord
| Setting | Default | What it does |
|---|---|---|
Collect notification time (Config.NotificationDuration) | 8000 (8 s) | How long the "you collected" and "collected by" messages stay on screen. |
Tell everyone who collected (Config.ShowCollectedByNotifications) | off | When on, every player is told the character name of whoever collected a supply drop. |
Post to Discord (Config.Discord.SupplyDrops.Enabled, Config.Discord.ScavengerHunts.Enabled) | off | Posts new drops and who collected them, and new hunts and who found them (with or without the clue). |
| Webhook URL | "YOUR DISCORD WEBHOOK HERE" | Paste a Discord webhook (channel settings → Integrations). Nothing is sent while the placeholder is still there. Drops and hunts may share one webhook. |
| Bot name, Bot avatar, Footer, Embed colour | "Supply Drops" / "Scavenger Hunts", none, "Poggy's Supply Drops" / "Poggy's Scavenger Hunts", yellow / green | How the Discord messages look. The colour is a decimal number, not hex. |
Text and language
Config.Language (in translations.lua, default "en") picks the language: en, es or fr. Lines a language does not have fall back to English. Every message can be edited on the Text & language tab. Keep words in braces such as {item} and {location}: the script fills them in. To add a language, copy the en block in translations.lua.
Advanced
- Balloon chance (
AirdropChance, 100): only used if you delete theUseAirdropsline fromconfig.lua. Then each drop has this percent chance to come by balloon. - Basket (
UseBasket): not used by the script at the moment. - Collect notification style (
SuccessNotificationColor,SuccessNotificationDict,SuccessNotificationIcon): the colour and icon of the "you collected" notification.
Commands#
| Command | Who | What it does |
|---|---|---|
/supplydrop | Admins, server console | Starts a supply drop now, at a random location with random loot. It also starts the drop cooldown, so the next automatic drop is pushed back. |
/scavengerhunt | Admins, server console | Starts a scavenger hunt now. It also starts the hunt cooldown. |
/nextdrop [detailed] | Everyone | Shows how long until the next supply drop and scavenger hunt may happen (when their cooldowns end). Admins who add detailed also see the clock time. |
/clue | Everyone | Opens the current scavenger hunt: its photo, the reward and the hidden riddle. |
testdiscord [supply|scavenger] [url] | Server console only | Sends a test message to the supply drop (default) or scavenger hunt webhook. That webhook must be turned on. Give a webhook URL as the second word to test that URL instead. Check the Discord channel for the result. |
Keys: hold G at a crate or treasure to collect it.
Permissions#
There is no permission setting in this script. /supplydrop, /scavengerhunt and /nextdrop detailed are for admins, and poggy_core decides who is an admin from your framework's admin groups. The server console can always use them. Everything else is open to every player.
Using it in game#
Supply drops
- A drop starts at a random location. Every player online gets a notification naming the place and the goods, and a blip on the map.
- Players near the spot see the balloon come down. Players far away find the crate already on the ground when they arrive.
- The first player to reach the crate and hold G collects it. If their inventory is full, they are told so and the crate stays for someone else.
- A drop nobody collects disappears after 15 minutes (by default).
Scavenger hunts
- A hunt starts at one of the hunt locations. Every player gets a notification and a map blip.
- Players type
/clueto see a photo of the hiding place and the reward. The riddle is blurred. Clicking the photo opens it large, with a magnifier. Esc closes the window. - Pressing SHOW CLUE reveals the riddle and lowers the reward (by 30% by default). The window shows the new amount.
- The first player to reach the treasure and hold G claims it, and the hunt ends for everyone.
- A hunt nobody claims disappears after 45 minutes (by default).
Anyone can type /nextdrop to see how long until the next events may start.
Troubleshooting#
No drops or hunts ever start.
Check Automatic events on the Timing & schedule tab and the two feature switches on the General tab. Events only start after the first player has loaded in, and the first one comes after the shortest-to-longest wait (10 to 45 minutes for drops, 20 to 60 for hunts by default). Use /nextdrop to see the timers, or /supplydrop to test at once.
A drop cannot be collected: the prompt keeps coming back.
The item probably does not exist on your server, or the player's inventory is full. Every loot item must be a real item in your framework.
A hunt says "Error processing reward".
The reward could not be given, usually because the reward item (by default golden_nugget) does not exist on your server. The hunt stays open. Add the item to your server or remove that reward.
The hunt photo is a broken image.
The file is missing from ui/images, is not a .jpg, or the Photo name does not match the file. Restart the script after adding a photo.
Some scavenger hunts never start.
Check the money amounts in the hunt rewards. Use whole dollars or halves (16 or 16.5); some cent values cannot be rolled.
Gold rewards fail on RSG Core.
RSG Core only pays gold in whole amounts, while hunt money rewards are rolled to the cent and the clue penalty can leave a fraction. On RSG, use cash rewards, or give gold as an item reward instead.
The crate is invisible.
The Crate prop name is wrong. Use a valid RedM object model, such as mp001_p_mp_crateweapon_01a.
A player who joined late cannot see the current drop or hunt.
Events are announced to the players online when they start. Someone who joins afterwards does not get that event and will catch the next one.
Nothing reaches Discord.
Turn on Post to Discord for that event and paste a real webhook URL in place of the placeholder. Then run testdiscord supply or testdiscord scavenger in the server console and look in the channel.
Updating#
poggy_core's updater installs new versions for you and keeps your settings, locations, loot, hunts and translations. See Updates in the poggy_core documentation.
If you ever replace the folder by hand instead, first keep a copy of config.lua, translations.lua and any hunt photos you added to ui/images.