Herbs V1 β
Free edition Β· RedM Β· VORP included Β· Other frameworks via public adapters
rz_herbs adds plant gathering and supported consumption interactions to RedM. The free V1 edition is configured through public Lua files.
LEGACY
No longer developed or supported. The existing resource remains usable; Herbs V2 is the current paid edition.

Version β
Documented version: 1.0.8. Check fxmanifest.lua for the installed version. The console checks the rz_herbs_free entry in RZ Releases.
Overview β
- 41 plant types with configurable names, blips and collection rewards.
- Custom coordinates, grouped plant choices and distance-based rendering.
- Collection on foot and horseback where supported by the game.
- Consumption and additional effects for supported edible plants.
- Shared availability, respawn timers, translations and optional Discord logs.
- VORP included; other frameworks require adapting the public integration files.
Installation β
- Claim the free package on Tebex and download it from your Cfx.re granted assets, using the account entitled to the resource.
- Put the
rz_herbsresource folder insideresources, optionally in a category such as[rz]: for exampleresources/[rz]/rz_herbs. - Inventory items β optional: you can use items already available in your inventory by selecting them in the reward configuration. To add the supplied items instead, use the ready-made
public/herbs-vorp.sqlfor VORP and the icons inpublic/img/. Import only the items you need, checking your inventory schema and avoiding duplicates; add the corresponding icons if needed. - Configure the public files listed below.
- Start the resource after its dependencies:
ensure oxmysql
ensure vorp_core
ensure vorp_inventory
ensure rz_herbsFor a custom framework, replace the VORP entries with your framework and inventory resources, and complete both adapters before using Config.Framework = "custom".
Requirements β
VORP
vorp_coreandvorp_inventory, started before Herbs V1.- Registered reward items and sufficient inventory capacity.
Other frameworks
- A character system and inventory integration implemented in
public/framework/. - A developer must connect the supplied template to the framework's real functions/events; selecting
customalone is not enough.
Required for all
- A RedM server with OneSync enabled.
oxmysql: required by the current manifest, which also loads its server library.- Cfx entitlement for the protected resource.
The installed folder is rz_herbs. V1 and V2 use the same resource name: stop and move the other edition out of active resources before switching. See moving to V2.
Configuration β
| File | Purpose |
|---|---|
public/config.lua | Framework, language, rendering, respawn, plants, blips, rewards and consumption switches |
public/coords.lua | Plant groups and positions |
public/eateffects.lua | Additional consumption effects |
public/language/en.lua | Notification and log text |
public/framework/client/ and public/framework/server/ | Framework, inventory and notifications |
public/herbs-vorp.sql and public/img/ | Inventory item examples and icons |
Main settings β public/config.lua
Config.UsedLang = "en"
Config.Framework = "vorp"
Config.WebhookUrl = ""
Config.AllowHorseCollect = true
Config.Render = 20.0
Config.RespawnTimer = 20Edit these existing fields rather than replacing the whole file. RespawnTimer is in minutes; preserve the initial Config = {} and Language = {} declarations.
Spawn & Coordinates β
Edit Config.HerbsCoords in public/coords.lua. Each group has a plants list and a coords list. At startup, the server selects one listed plant per position. These are fixed coordinates, not randomly generated points inside a zone.
Coordinate group example
Config.HerbsCoords = {
agarita = {
plants = { `COMPOSITE_LOOTABLE_AGARITA_DEF` },
coords = {
{x = 2044.612, y = -1531.567, z = 40.5369},
}
}
}Merge this reduced example into your existing groups. Keep the plant list non-empty, use definitions already present in Config.Herbs and check ground height in game.
Blip β
Each Config.Herbs entry contains name and a blip table with visible, type and color. Use visible = false to hide that plantβs marker.
Rewards β
Edit each plantβs rewards list in Config.Herbs. Use the exact names of items already available in your inventory. Register new items only if you want to add them.
Reward example
Config.Herbs[`COMPOSITE_LOOTABLE_AGARITA_DEF`].rewards = {
{item = "agarita", count = 1, label = "Agarita", chance = 100},
}This changes only the reward list; keep the plantβs other fields. Add more rows for multiple items, or use rewards = {} for no items.
One random roll is shared by all rewards in an interaction; unlike V2, these are not independent chances. If rewards are attempted but no item is added, the plant is restored. An empty list or a failed chance still consumes the plant; partial delivery also leaves it collected.
Consumption Effects β
Use Config.EatHerbs in public/config.lua for supported edible variants. The second value of each entry enables the additional effect handler; keep the existing association with Config.Herbs. Add your metabolism or other scriptβs real calls inside the corresponding hash branch in public/eateffects.lua.
The supplied effect branches are integration points, not preconfigured hunger/stress systems. Do not copy calls for a resource you do not use. Native Eat prompts and horseback actions depend on the plant and RedM; enabling an effect does not make every plant edible.
Multiplayer & Respawn β
The server checks the player, plant, distance and repeated interactions before reserving the plant and granting rewards. Nearby clients receive the removal and periodically synchronize changes.
Config.RespawnTimer is in minutes; cooldowns are checked once per minute, with possible extra client rendering delay.
Storage and performance β
Positions come from public/coords.lua. Collection state and cooldowns live in memory and reset on resource restart. There is no SQL persistence switch for plant state: the supplied SQL registers inventory items. oxmysql remains a manifest requirement.
Distance rendering and a nearby-plant cache limit active objects. Measure resmon with your own plant density, players and render distance.
Framework Integration β
VORP β
Set Config.Framework = "vorp". The included adapters use VORP character data, inventory capacity checks and item addition. Adjust these public files only if your VORP integration differs:
public/framework/client/vorp_cl.luapublic/framework/server/vorp_sv.lua
Other frameworks β
Complete public/framework/client/custom_cl.lua and public/framework/server/custom_sv.lua, then select custom.
| Adapter function/event | Expected integration |
|---|---|
CustomSV.GetPlayer(source) | Return a valid character/player value; nil/false rejects collection |
CustomSV.GetPlayerName(source) / GetPlayerLastname(source) | Character names used in logs |
CustomSV.AddItem(src, item, count) | Check capacity, add items, return a truthy value only on success |
CustomSV.Notify(...) / CustomCL.Notify(...) | Your notification system |
| Client character-loaded event | Replace the example customevent and trigger rz_herbs:playerLoaded when the character is ready |
The custom adapter is a template, not a ready-made integration for every framework. Test full inventory, failed item addition and reconnects as well as normal collection.
Languages & Notifications β
Duplicate public/language/en.lua, rename it (for example it.lua), change the table key to Language["it"], translate the values and set Config.UsedLang = "it". Preserve all keys. Restart the resource after changes.
Notification/log text is separate from reward label values and plant name values in config.lua. Native game interaction prompts may follow the player's game language.
Discord Logs β
Set Config.WebhookUrl to your channel's webhook URL, or leave it empty to disable logs. Do not include a real webhook URL in screenshots or public configuration examples.
Updating β
- Back up the resource, customized public files and inventory database before any SQL changes.
- Stop
rz_herbsand obtain the complete new package from Cfx. - Replace the old resource code with the new package. Updating only
public/leaves the old implementation installed. - Compare the new
public/files with your backup and reapply your coordinates, rewards, translations and framework integration. Do not overwrite the new public folder blindly with the old one. - Follow the release notes for any item/schema changes; do not reimport existing item rows unnecessarily.
- Start the dependencies/resource and test collection, rewards, full inventory, synchronization and cooldowns.
The update checker reports available versions; it does not install them. Keep rz_update_product "rz_herbs_free" in the supplied manifest to use the correct edition's update channel.
For V1 β V2, follow the dedicated migration section rather than copying V1 configuration files into V2.
Troubleshooting β
| Problem | Check |
|---|---|
| Resource does not start | Entitlement, OneSync, oxmysql and startup order |
| No plants visible | Coordinate height, plant definitions, render distance, loaded character event and cooldown |
| No reward | Item names, inventory capacity, shared chance roll and custom AddItem return value |
| No additional effect | Supported edible variant, Config.EatHerbs switch and real calls in public/eateffects.lua |
| Wrong notification | Language key, reward labels and plant names |
For a reproducible issue, include version, framework, steps and console errors in a Discord ticket. V1 remains the legacy edition; check the support status before requesting new integrations.
