SUMMER STARTS WITH 10% OFF | CODE: SUMMER10 SUMMER STARTS WITH 10% OFF | CODE: SUMMER10 SUMMER STARTS WITH 10% OFF | CODE: SUMMER10 SUMMER STARTS WITH 10% OFF | CODE: SUMMER10 SUMMER STARTS WITH 10% OFF | CODE: SUMMER10 SUMMER STARTS WITH 10% OFF | CODE: SUMMER10

Skurfing Activity Documentation

```html

This guide explains how to install and configure Tdev Skurfing 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 board and rope entities
  • ox_lib optional for modern notifications
  • ox_inventory optional for item-based usage
  • Skurfing board, guidon, and animation assets included in the stream folder

Installation

  • Download the resource from your Tebex purchases.
  • Extract the folder.
  • Place the tdev_skurfing 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/kitesurfboard.ydr stays inside the stream folder.
  • Make sure stream/kitesurfguidon.ydr stays inside the stream folder.
  • Make sure stream/tdev@skurfing.ycd stays inside the stream folder.
  • Make sure stream/tdev_activities_props.ytyp 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 skurfing_board and skurfing_rope items to your inventory system.
  • Configure the boat detection, rope length, board height, board position, guidon position, animations, controls, and safety settings.
  • Add the resource to your server.cfg.
  • Restart your server or run refresh followed by ensure tdev_skurfing.
  • Give yourself the skurfing_board and skurfing_rope items and test rope attaching, board dropping, mounting, riding, exiting, board return, rope retrieval, cleanup, and item recovery.

Server CFG Example

ESX Example:

ensure es_extended

ensure ox_lib

ensure ox_inventory

ensure tdev_skurfing

QBCore Example:

ensure qb-core

ensure ox_lib

ensure ox_inventory

ensure tdev_skurfing

Qbox Example:

ensure qbx_core

ensure ox_lib

ensure ox_inventory

ensure tdev_skurfing

Configuration

  • Set Config.Framework to auto, esx, qb, qbox, or standalone.
  • Set Config.Inventory to auto, framework, or ox_inventory.
  • Configure Config.Items.board if you want to rename the skurfing_board item.
  • Configure Config.Items.rope if you want to rename the skurfing_rope item.
  • Configure Config.Commands for recovery and reset command names.
  • Configure Config.Controls for mount, exit, retrieve rope, pickup board, and left/right slide controls.
  • Configure Config.Boat for boat detection distance, stern attach offset, allowed boat class, and seashark models.
  • Configure Config.Rope for rope length, draw distance, rope sag, rope thickness, rope sway, and rope color.
  • Configure Config.Board for board model, hidden mount model, water height offset, board visual offset, player attach offset, side control, and float behavior.
  • Configure Config.Guidon for the handlebar model, hand-follow position, mounted position, mounted rotation, and IK hand targets.
  • Configure Config.Animation for the skurfing animation dictionary, animation clip, and fallback animations.
  • Configure Config.Safety for action cooldowns, death cleanup, boat missing cleanup, server boat validation, 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 if using ox_inventory with Qbox.
  • ESX users should run install/esx_items.sql.
  • The default board item name is skurfing_board.
  • The default rope item name is skurfing_rope.
  • The rope item is removed server-side only when the rope is attached to a valid boat or seashark.
  • The board item is removed server-side only when the board is dropped over water after the rope is attached.
  • The board item automatically returns server-side when the player exits the board, picks up the board, resets, disconnects, dies, or cleanup is triggered.
  • The rope item returns server-side only when the player goes back to the boat stern and retrieves it, or when cleanup is triggered.

Skurfing System

  • Players must have a skurfing_rope item and a skurfing_board item.
  • Players stand at the back of any boat or seashark first.
  • Players use the skurfing_rope item to attach the rope to the boat.
  • The player holds the guidon handle and a visual rope is drawn from the handle to the back of the boat.
  • Players use the skurfing_board item over water to drop the board.
  • Players press F near the board to get on it.
  • While riding, the player, board, and guidon follow the boat with rope-based skurfing movement.
  • Players use A/D while riding to slide left and right behind the boat.
  • Players press X while mounted to exit the skurfing board.
  • The skurfing_board item automatically returns to the player inventory after exiting.
  • After exiting, players must go back to the back of the boat and press E to retrieve the skurfing_rope item.
  • Players can use /skurfingrecover if items could not be returned because their inventory was full.
  • Players can use /skurfingreset to force clean their active skurfing session.

Custom Props and Animations

  • The resource includes the streamed skurfing board prop inside the stream folder.
  • The resource includes the streamed guidon handle prop inside the stream folder.
  • The resource includes the streamed skurfing animation dictionary inside the stream folder.
  • Keep stream/kitesurfboard.ydr inside the stream folder.
  • Keep stream/kitesurfguidon.ydr inside the stream folder.
  • Keep stream/tdev@skurfing.ycd inside the stream folder.
  • Keep stream/tdev_activities_props.ytyp inside the stream folder.
  • Do not rename the board prop unless you also update Config.Board.model.
  • Do not rename the guidon prop unless you also update Config.Guidon.model.
  • Do not rename the skurfing animation dictionary unless you also update Config.Animation.
  • Fully restart the resource after changing streamed models, ytyp files, or animation settings.

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.serverValidateBoat enabled on production servers.
  • Keep Config.Safety.serverValidateBoatType enabled on production servers.
  • Keep Config.Safety.forceReturnOnDeath enabled on production servers.
  • Keep Config.Safety.forceReturnWhenBoatMissing 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 Skurfing events from the README.

Important server events include tdev_skurfing:server:tryAttachRope, tdev_skurfing:server:tryDropBoard, tdev_skurfing:server:returnBoard, tdev_skurfing:server:retrieveRope, and tdev_skurfing:server:forceCleanup.

Important client events include tdev_skurfing:client:notify, tdev_skurfing:client:useRope, tdev_skurfing:client:useBoard, tdev_skurfing:client:ropeApproved, tdev_skurfing:client:boardApproved, tdev_skurfing:client:boardReturned, tdev_skurfing:client:ropeRetrieved, and tdev_skurfing:client:forceCleanup.

Common Issues

Rope item does nothing: Check that the skurfing_rope item exists, is marked usable, and that tdev_skurfing starts after your framework or inventory.

Board item does nothing: Make sure the rope is attached to a boat first, then use the skurfing_board item over water.

ox_inventory item does nothing: Check that the rope item has client export tdev_skurfing.useSkurfingRope and the board item has client export tdev_skurfing.useSkurfingBoard, then restart ox_inventory after editing items.lua.

Rope does not attach: Stand closer to the back of a valid boat or seashark and use the skurfing_rope item again.

Board does not drop: Make sure the rope is attached and the player is standing over valid water.

Board does not appear: Check that kitesurfboard.ydr and tdev_activities_props.ytyp are inside the stream folder, OneSync is enabled, and there are no F8 errors.

Guidon does not appear: Check that kitesurfguidon.ydr is inside the stream folder, Config.Guidon.model is correct, and there are no F8 errors.

Player cannot get on the board: Stand closer to the board and press F. You can increase Config.Board.enterDistance if needed.

Board floats too high or too low: Adjust Config.Board.waterOffset slightly and fully restart the resource.

Rope looks too short or too long: Adjust Config.Rope.length and restart the resource.

Player position over the board is wrong: Adjust Config.Board.attachOffset and Config.Board.attachRotation.

Guidon position is wrong while riding: Adjust Config.Guidon.mountOffset and Config.Guidon.mountRotation.

Items do not return: Check inventory weight/slots. Free space and use /skurfingrecover.

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

```