Kayak Activity Documentation
This guide explains how to install and configure Tdev Kayak 2 for your FiveM server.
Compatibility
- ESX Legacy
- QBCore
- Qbox
- ox_inventory
Requirements
- ESX Legacy, QBCore, Qbox, or ox_inventory
- Framework resource if you use a framework mode
- OneSync required for stable networked kayak entities
- ox_lib optional for modern notifications
- ox_inventory optional for item-based usage
- Kayak and paddle item setup in your inventory system
Installation
- Download the resource from your Tebex purchases.
- Extract the folder.
- Place the tdev_kayak2 folder inside your server resources folder.
- Start your framework before the resource.
- Start ox_inventory before the resource if you use ox_inventory.
- Start ox_lib before the resource if you want ox_lib notifications.
- Make sure stream/p_banknote_s.ydr stays inside the stream folder.
- Open the config.lua file.
- Select your framework or leave it on auto detection.
- Select your inventory mode or leave it on auto detection.
- Add the kayak and kayak_paddle items to your inventory system.
- Configure the kayak model, carry position, water placement, controls, animations, movement, and safety settings.
- Add the resource to your server.cfg.
- Restart your server or run refresh followed by ensure tdev_kayak2.
- Give yourself the kayak and kayak_paddle items and test carrying, dropping, entering, paddle usage, driving, exiting, cleanup, and item return.
Server CFG Example
ESX Example:
ensure es_extended
ensure ox_lib
ensure ox_inventory
ensure tdev_kayak2
QBCore Example:
ensure qb-core
ensure ox_lib
ensure ox_inventory
ensure tdev_kayak2
Qbox Example:
ensure qbx_core
ensure ox_lib
ensure ox_inventory
ensure tdev_kayak2
Configuration
- Set Config.Framework to auto, esx, qb, qbox, or standalone.
- Set Config.Inventory to auto, framework, or ox_inventory.
- Configure Config.Items.kayak if you want to rename the kayak item.
- Configure Config.Items.paddle if you want to rename the kayak_paddle item.
- Configure Config.Commands for recovery, reset, and optional testing command names.
- Configure Config.Controls for drop, mount, exit, pickup, movement, and steering keys.
- Configure Config.Carry for the kayak model, back bone, carry offset, carry rotation, and carry animation.
- Configure Config.Drop for water placement distance, water height offset, and water detection behavior.
- Configure Config.Kayak for kayak model, hidden movement vehicle, enter distance, pickup distance, speed, steering, and water movement behavior.
- Configure Config.Paddle for paddle model, hand bone, offset, and rotation.
- Configure Config.Animation for idle animation, paddle animation, and animation fallbacks.
- Configure Config.Safety for cooldowns, maximum kayak distance, death cleanup, missing kayak cleanup, and production anti-abuse settings.
Item Setup
- ox_inventory users should copy install/ox_inventory_items.lua into ox_inventory/data/items.lua.
- QBCore users should copy install/qb-core_items.lua into qb-core/shared/items.lua.
- Qbox users should use the ox_inventory item snippet or install/qbox_items.lua.
- ESX users should run install/esx_items.sql.
- The default kayak item name is kayak.
- The default paddle item name is kayak_paddle.
- The kayak item is removed server-side only when the kayak is dropped over water.
- The kayak_paddle item is removed server-side only when the player uses it while inside the kayak.
- Items are returned server-side when the player exits, picks up, resets, disconnects, dies, or cleanup is triggered.
Kayak System
- Players use the kayak item from their inventory.
- The player carries the kayak and can walk around.
- Players press Y to drop the kayak over water.
- Players press F near the kayak to get in it.
- Players must use the kayak_paddle item while inside the kayak before they can start driving.
- Players use W/S for forward and reverse movement.
- Players use A/D to steer the kayak.
- Players press X while mounted to exit the kayak.
- The kayak and kayak_paddle items automatically return to the player inventory after exiting.
- Players can use /kayakrecover if items could not be returned because their inventory was full.
- Players can use /kayakreset to force clean their active kayak session.
Custom Props and Movement
- The resource uses prop_kayak_01 as the visible kayak prop by default.
- The resource uses a hidden water vehicle for stable water movement logic.
- The paddle model is included in the stream folder.
- Keep stream/p_banknote_s.ydr inside the stream folder.
- Do not rename streamed files unless you also update fxmanifest.lua and config.lua.
- Do not rename kayak or paddle models unless you also update Config.Carry.model, Config.Kayak.model, and Config.Paddle.model.
- Fully restart the resource after changing streamed models or animation dictionaries.
Security
- Do not move item remove or item return logic client-side.
- Do not trust client-side inventory state.
- Keep item usage, item removal, item return, recovery, and cleanup server-side.
- Keep Config.Safety.actionCooldownMs enabled on production servers.
- Keep Config.Safety.serverMaxDropDistance enabled on production servers.
- Keep Config.Safety.forceReturnOnDeath enabled on production servers.
- Keep Config.Safety.forceReturnWhenKayakMissing enabled on production servers.
- Keep Config.Safety.cleanupPendingItemsOnResourceStop enabled on production servers.
- Back up config.lua before updating the resource.
Anticheat Whitelist
If your anticheat blocks custom resource events, whitelist the Tdev Kayak 2 events from the README.
Important server events include tdev_kayak2:server:tryUseKayak, tdev_kayak2:server:cancelCarry, tdev_kayak2:server:tryDropKayak, tdev_kayak2:server:tryUsePaddle, tdev_kayak2:server:returnPaddle, tdev_kayak2:server:returnItems, and tdev_kayak2:server:forceCleanup.
Important client events include tdev_kayak2:client:notify, tdev_kayak2:client:useKayak, tdev_kayak2:client:usePaddle, tdev_kayak2:client:carryApproved, tdev_kayak2:client:kayakApproved, tdev_kayak2:client:paddleApproved, tdev_kayak2:client:paddleReturned, and tdev_kayak2:client:forceCleanup.
Common Issues
Item does nothing: Check that the kayak item exists, is marked usable, and that tdev_kayak2 starts after your framework or inventory.
ox_inventory item does nothing: Check that the item has client export tdev_kayak2.useKayak and restart ox_inventory after editing items.lua.
Paddle item does nothing: Check that the kayak_paddle item has client export tdev_kayak2.useKayakPaddle and that the player is already inside the kayak.
Kayak does not drop: Make sure the player is standing near valid water and press Y while carrying the kayak.
Kayak does not appear: Check that the kayak model exists, OneSync is enabled, and there are no F8 errors.
Player cannot get in the kayak: Stand closer to the kayak and press F. You can increase Config.Kayak.enterDistance if needed.
Kayak does not move: Make sure the player used the kayak_paddle item after entering the kayak.
Paddle does not appear: Check stream/p_banknote_s.ydr, Config.Paddle.model, and the fxmanifest.lua files entry.
Kayak item or paddle item does not return: Check inventory weight/slots. Free space and use /kayakrecover.
Framework detection is wrong: Set Config.Framework manually to esx, qb, or qbox.
Inventory detection is wrong: Set Config.Inventory manually to framework or ox_inventory.
Support
If you need help, open a support ticket in the Tdev Scripts Discord.
Provide your order ID, script name, framework, inventory, full F8 error, server console error, and a screenshot or video.
Support is only available for verified customers.
Support is not provided for leaked, resold, or heavily modified versions.
Discord: https://discord.gg/5MYzXemM4q