Skip to content

Random (Shared)

The random module is export-based and can be used from both client and server.

random

Returns a random integer between min and max.

Syntax

lua
local value = exports['st_libs']:random(min, max)

Parameters

min : number Optional

max : number Optional

Return value

Type: number

Random integer in range.

If parameters are invalid, it falls back to range 1..100.

chance

Rolls a percentage chance.

Syntax

lua
local ok = exports['st_libs']:chance(likelihood)

Parameters

likelihood : number Optional

Chance percent (0-100). Defaults to 50 if invalid.

Return value

Type: boolean

coinflip

Simulates a coin toss.

Syntax

lua
local heads = exports['st_libs']:coinflip()

Return value

Type: boolean

dice

Rolls a 6-sided die.

Syntax

lua
local roll = exports['st_libs']:dice()

Return value

Type: number

Integer in range 1..6.

selectitem

Selects one item from a weighted list.

Syntax

lua
local result = exports['st_libs']:selectitem(items, weights)

Parameters

items : table

Array of candidate values.

weights : table

Array of weight numbers matching the item order.

Return value

Type: any

One selected element from items.

catchfish

Utility helper that returns a fish item name from weighted categories.

Syntax

lua
local fishItem = exports['st_libs']:catchfish()

Return value

Type: string | nil

catchfishtwo

Alternative fish helper with another weighted distribution.

Syntax

lua
local fishItem = exports['st_libs']:catchfishtwo()

Return value

Type: string | nil

Examples

Generic RNG flow

lua
local score = exports['st_libs']:random(10, 100)
local crit = exports['st_libs']:chance(25)
local direction = exports['st_libs']:coinflip() and 'left' or 'right'
local dice = exports['st_libs']:dice()

print(score, crit, direction, dice)

Weighted rewards

lua
local reward = exports['st_libs']:selectitem(
  { 'cash', 'gold', 'diamond' },
  { 70, 25, 5 }
)

Last updated: