Alcyon

Créer des mods

La façade ov.* : référence Luau

Chaque fonction, événement et type que voit un mod : joueurs, monde, équipes, mini-jeux, arènes, avec des exemples.

Sur cette page

Générée par tools/ov_apigen/apigen.py depuis data/ov/api/ov.d.luau : ne pas modifier à la main. Le guide est docs/CREATEURS.md ; dans le jeu, F1 dans le Studio montre la même chose.

Player

Player

Luau
class Player

Un joueur connecté. Ses fonctions s'appellent avec « : » (p:send).

Player.name

Luau
string

Son pseudo.

Player.uuid

Luau
string

Son identifiant stable, qui ne change pas avec le pseudo.

Player:is_online

Luau
(self): boolean

Encore connecté ?

Player:position

Luau
(self): { x: number, y: number, z: number }

Où il est, en blocs.

Player:dimension

Luau
(self): string

Le monde où il est ("ov:overworld", un monde du Multivers…).

Player:gamemode

Luau
(self): Gamemode

Son mode de jeu.

Player:role

Luau
(self): Role

Son rôle de Créateur : player, creator, admin ou owner.

Player:send

Luau
(self, text: Text): ()

Un message dans son chat, avec le balisage <gold>…</gold>.

Luau
p:send("<green>Bienvenue</green> dans l'arène !")

Player:actionbar

Luau
(self, text: Text): ()

Un texte au-dessus de la barre d'objets.

Player:title

Luau
(self, title: Text, subtitle: Text?, times: { fade_in: number?, stay: number?, fade_out: number? }?): ()

Un grand titre au centre de l'écran, et un sous-titre.

Luau
p:title("<gold>Victoire !</gold>", "3 manches gagnées")

Player:teleport

Luau
(self, to: Position, dimension: string?): boolean

Le téléporter. Demande la permission players.teleport.

Luau
p:teleport({ x = 0, y = 80, z = 0 })

Player:set_gamemode

Luau
(self, mode: Gamemode): boolean

Changer son mode de jeu. Demande la permission players.gamemode.

Player:kick

Luau
(self, reason: Text?): ()

L'expulser du serveur. Demande la permission players.kick.

Player:sound

Luau
(self, id: string, volume: number?, pitch: number?): ()

Jouer un son pour lui seul, celui du jeu ou d'un mod (frost:chime).

Player:look

Luau
(self): { yaw: number, pitch: number }

Où il regarde, en degrés (api 2).

Player:direction

Luau
(self): { x: number, y: number, z: number }

La direction de son regard, un vecteur de longueur 1 (api 2).

Player:eyes

Luau
(self): { x: number, y: number, z: number }

La position de ses yeux, d'où part un tir (api 2).

Player:locale

Luau
(self): string

La langue de son jeu, "fr_fr", "en_us"… (api 2).

Player:lang

Luau
(self): "fr" | "en"

"fr" ou "en" : la langue dans laquelle lui parler (api 2).

Player:health

Luau
(self): number

Sa vie, en demi-cœurs (api 2).

Player:max_health

Luau
(self): number

Sa vie au plus (api 2).

Player:food

Luau
(self): number

Sa faim, de 0 à 20 (api 2).

Player:set_health

Luau
(self, health: number): boolean

Changer sa vie. Demande players.state (api 2).

Player:heal

Luau
(self): boolean

Le soigner tout à fait. Demande players.state (api 2).

Player:set_food

Luau
(self, food: number): boolean

Changer sa faim. Demande players.state (api 2).

Player:held_item

Luau
(self): string?

L'objet dans sa main ("ov:compass"), ou nil (api 2).

Player:held_slot

Luau
(self): number

La case de la barre d'objets qu'il tient, de 0 à 8 (api 2).

Player:set_velocity

Luau
(self, velocity: Position): boolean

Lui donner une vitesse, en blocs par tick : un tremplin. Demande players.teleport (api 2).

Luau
p:set_velocity({ x = 0, y = 1.2, z = 0 })

Player:launch

Luau
(self, power: number?, lift: number?): boolean

Le lancer là où il regarde. Demande players.teleport (api 2).

Player:inventory

Luau
(self): { { slot: string, item: string, count: number } }

Tout ce qu'il porte : case, objet, nombre (api 2).

Player:count

Luau
(self, item: string): number

Combien il porte d'un objet (api 2).

Player:give

Luau
(self, item: string, count: number?, options: ItemOptions?): (boolean, string)

Lui donner un objet, nommé, décrit, incassable, enchanté. Demande players.inventory (api 2).

Luau
p:give("ov:iron_sword", 1, { name = "<gold>Lame</gold>", unbreakable = true })

Player:set_slot

Luau
(self, slot: string, item: string, count: number?, options: ItemOptions?): (boolean, string)

Mettre un objet dans une case : hotbar.0, armor.head… Demande players.inventory (api 2).

Player:clear_items

Luau
(self, item: string?, count: number?): boolean

Vider son inventaire, ou retirer un objet. Demande players.inventory (api 2).

Player:effect

Luau
(self, id: string, seconds: number?, amplifier: number?, hide: boolean?): boolean

Lui donner un effet (ov:speed…). Demande players.state (api 2).

Player:clear_effects

Luau
(self): boolean

Lui retirer tous ses effets. Demande players.state (api 2).

Player:set_tab

Luau
(self, header: Text?, footer: Text?): ()

Les deux lignes de sa liste des joueurs (Tab), en haut et en bas (api 2).

Bossbar

Bossbar

Luau
class Bossbar

Une barre de boss, créée par ov.bossbar.create.

Bossbar.id

Luau
string

Bossbar:set_text

Luau
(self, text: Text): ()

Changer son texte.

Bossbar:set_progress

Luau
(self, progress: number): ()

Son remplissage, de 0 à 1.

Bossbar:set_color

Luau
(self, color: "blue" | "green" | "pink" | "purple" | "red" | "white" | "yellow"): ()

Sa couleur.

Bossbar:set_style

Luau
(self, style: "progress" | "notched_6" | "notched_10" | "notched_12" | "notched_20"): ()

Son découpage en segments.

Bossbar:show_to

Luau
(self, players: { Player } | "all"): ()

Qui la voit : une liste de joueurs, ou "all".

Bossbar:remove

Luau
(self): ()

La retirer.

Match

Match

Luau
class Match

Une partie d'un mini-jeu, telle que ses règles la reçoivent (ov.minigame).

Match.id

Luau
number

Son numéro.

Match.phase

Luau
string

Où elle en est : preparing, playing ou ending.

Match:players

Luau
(self): { Player }

Ses joueurs encore en ligne.

Match:alive_players

Luau
(self): { Player }

Ceux qui ne sont pas éliminés.

Match:is_alive

Luau
(self, player: Player): boolean

Ce joueur est-il encore en course ?

Match:team_of

Luau
(self, player: Player): string?

L'équipe d'un joueur (l'id donné dans teams).

Match:dimension

Luau
(self): string

Le monde de la partie, pour placer des blocs ou téléporter.

Luau
ov.world.set_block({ x = 0, y = 64, z = 0 }, "ov:tnt", match:dimension())

Match:elapsed

Luau
(self): number

Les secondes écoulées depuis le départ.

Match:get

Luau
(self, key: string): any

Une valeur du jeu, gardée avec la partie (rechargements compris).

Match:set

Luau
(self, key: string, value: any): ()

Garder une valeur avec la partie.

Match:broadcast

Luau
(self, text: Text): ()

Un message à tous les joueurs de la partie.

Match:title

Luau
(self, title: Text, subtitle: Text?): ()

Un titre pour toute la partie.

Match:sound

Luau
(self, id: string): ()

Un son pour toute la partie.

Match:score

Luau
(self, player: Player, delta: number?): number

Ajouter au score d'un joueur ; rend le nouveau score.

Match:spawn

Luau
(self, player: Player): ()

Remettre un joueur à son point de départ.

Match:eliminate

Luau
(self, player: Player, why: string?): ()

Éliminer un joueur (une vie de moins, ou spectateur) ; la victoire suit d'elle-même.

Match:win

Luau
(self, winners: (Player | { Player } | string)?): ()

Terminer : un joueur, une liste, une équipe, ou nil.

Minigame

Minigame

Luau
class Minigame

Un mini-jeu défini par ov.minigame.define.

Minigame.id

Luau
string

Minigame:join

Luau
(self, player: Player): string?

Mettre un joueur dans la file ; rend la raison d'un refus, ou nil.

Minigame:leave

Luau
(self, player: Player): string

Sortir de la file ou de la partie.

Minigame:match_of

Luau
(self, player: Player): Match?

La partie où joue ce joueur.

Minigame:setting

Luau
(self, key: string): any

Un réglage du jeu : celui choisi par un Créateur (/<jeu> reglages), sinon celui du jeu.

Minigame:set_setting

Luau
(self, key: string, value: any): ()

Changer un réglage, comme le panneau.

Minigame:status

Luau
(self): { id: string, name: string, queue: number, playing: number, matches: number, min: number, max: number }

La file et les parties, comme le lobby les voit.

ov

ov

Luau
{ … }

Tout ce qu'un mod peut faire : la façade du jeu, version 1.

ov.api

ov.api

Luau
number

La version de la façade que le serveur parle.

ov.log

ov.log

Luau
{ … }

ov.log.info

Luau
(...any) -> ()

Une ligne dans la console du mod.

ov.log.warn

Luau
(...any) -> ()

Un avertissement, en jaune dans la console et dans le journal du serveur.

ov.log.error

Luau
(...any) -> ()

Une erreur, en rouge.

ov.events

ov.events

Luau
{ … }

ov.events.on

Luau
((name: "player_join", handler: (player: Player) -> ()) -> number) & ((name: "player_leave", handler: (player: Player) -> ()) -> number) & ((name: "chat", handler: (player: Player, message: string) -> (boolean | string)?) -> number) & ((name: "tick", handler: (tick: number) -> ()) -> number) & ((name: "block_break", handler: (player: Player, at: Place, block: string) -> boolean?) -> number) & ((name: "block_use", handler: (player: Player, at: Place, block: string, item: string?) -> boolean?) -> number) & ((name: "entity_use", handler: (player: Player, entity: number, kind: string) -> boolean?) -> number) & ((name: "player_death", handler: (player: Player, info: DeathInfo) -> ()) -> number) & ((name: "player_damage", handler: (player: Player, info: DamageInfo) -> (boolean | number)?) -> number) & ((name: "player_respawn", handler: (player: Player) -> ()) -> number) & ((name: "block_place", handler: (player: Player, at: Place, block: string, item: string) -> boolean?) -> number) & ((name: "item_use", handler: (player: Player, item: string, count: number) -> boolean?) -> number) & ((name: "block_tick", handler: (kind: "random" | "scheduled" | "neighbour", at: Place, block: string) -> ()) -> number) & ((name: "item_drop", handler: (player: Player, item: string, count: number) -> boolean?) -> number) & ((name: "region_enter", handler: (player: Player, region: string) -> ()) -> number) & ((name: "region_leave", handler: (player: Player, region: string) -> ()) -> number) & ((name: "explosion", handler: (at: Place, blocks: number) -> boolean?) -> number) & ((name: "village_founded", handler: (village: Village) -> ()) -> number) & ((name: "villager_born", handler: (child: Villager, village: number?) -> ()) -> number) & ((name: "villager_died", handler: (villager: Villager, village: number?) -> ()) -> number) & ((name: "feud", handler: (village: Village, other: Village, feud: string) -> ()) -> number) & ((name: "quest_opened", handler: (village: Village, quest: { id: number, kind: string, item: string, need: number }) -> ()) -> number) & ((name: "house_built", handler: (village: Village) -> ()) -> number)

Écouter un événement. Rendre false depuis block_break, block_use, block_place, entity_use, item_use, item_drop, player_damage, explosion ou chat l'annule ; un nombre rendu par player_damage change les dégâts. Rend un jeton pour ov.events.off.

Luau
ov.events.on("player_join", function(p) p:send("Salut " .. p.name) end)

ov.events.off

Luau
(token: number) -> boolean

Ne plus écouter (avec le jeton rendu par on).

ov.commands

ov.commands

Luau
{ … }

ov.commands.register

Luau
(spec: CommandSpec) -> ()

Ajouter une commande au serveur. Ce que run rend est dit au joueur.

Luau
ov.commands.register({ name = "salut", run = function(p) return "Salut " .. p.name end })

ov.players

ov.players

Luau
{ … }

ov.players.all

Luau
() -> { Player }

Les joueurs en ligne.

Luau
for _, p in ov.players.all() do p:send("Hop") end

ov.players.get

Luau
(who: string | Player) -> Player?

Un joueur par son pseudo ou son uuid, ou nil s'il n'est pas là.

ov.players.count

Luau
() -> number

Combien de joueurs sont en ligne.

ov.players.raycast

Luau
(from: Position, direction: Position, reach: number?, dimension: string?, except: (Player | string)?) -> (Player?, number?)

Le joueur le plus proche qu'un rayon touche avant un bloc, et à quelle distance (api 2).

Luau
local hit = ov.players.raycast(p:eyes(), p:direction(), 50, p:dimension(), p)

ov.world

ov.world

Luau
{ … }

ov.world.state

Luau
(pos: Position, dimension: string?) -> string?

Un bloc avec ses propriétés : "frost:crusher[active=true]" (api 4).

ov.world.schedule

Luau
(pos: Position, ticks: number, dimension: string?) -> boolean

Un tick pour le bloc vivant du mod à cet endroit, dans tant de ticks (world.write, api 4).

ov.world.block

Luau
(at: Position, dimension: string?) -> string?

Le bloc à un endroit ("ov:stone", états compris), ou nil si le chunk n'est pas chargé.

ov.world.set_block

Luau
(at: Position, block: string, dimension: string?) -> boolean

Poser un bloc. Demande la permission world.write.

Luau
ov.world.set_block({ x = 0, y = 64, z = 0 }, "ov:gold_block")

ov.world.fill

Luau
(from: Position, to: Position, block: string, dimension: string?) -> (boolean, string)

Remplir une boîte d'un bloc. Demande world.write.

ov.world.place_structure

Luau
(id: string, at: Position, options: { rotation: number? }?, dimension: string?) -> (boolean, string)

Coller une structure du jeu ou du mod (content/structures). Demande world.write.

Luau
ov.world.place_structure("frost:tower", { x = 10, y = 64, z = 0 }, { rotation = 1 })

ov.world.sound

Luau
(id: string, at: Position, volume: number?, pitch: number?, dimension: string?) -> ()

Un son à un endroit, pour tous ceux qui l'entendent.

ov.world.raycast

Luau
(from: Position, direction: Position, reach: number?, dimension: string?) -> { x: number, y: number, z: number, block: string, distance: number }?

Le premier bloc qu'un rayon rencontre, ou nil (api 2).

ov.regions

ov.regions

Luau
{ … }

ov.regions.define

Luau
(id: string, from: Position, to: Position, dimension: string?) -> ()

Une boîte surveillée : y entrer et en sortir arrivent en region_enter et region_leave (api 2).

Luau
ov.regions.define("portail_rush", { x = 10, y = 64, z = 0 }, { x = 12, y = 68, z = 1 })

ov.regions.remove

Luau
(id: string) -> ()

Ne plus surveiller une boîte (api 2).

ov.regions.inside

Luau
(who: Player | string) -> { string }

Les boîtes où un joueur se tient (api 2).

ov.i18n

ov.i18n

Luau
{ … }

ov.i18n.define

Luau
(texts: { [string]: { fr: string?, en: string? } }) -> ()

Des textes en deux langues, { clé = { fr = …, en = … } } (api 2).

Luau
ov.i18n.define({ hello = { fr = "Salut %s", en = "Hi %s" } })

ov.i18n.t

Luau
(who: (Player | string)?, key: string, ...any) -> string

Le texte d'une clé dans la langue du joueur, formaté (api 2).

Luau
p:send(ov.i18n.t(p, "hello", p.name))

ov.server

ov.server

Luau
{ … }

ov.server.run

Luau
(command: string) -> (boolean, string)

Lancer une commande comme la console. Demande la permission server.command.

ov.server.broadcast

Luau
(text: Text) -> ()

Un message à tous les joueurs.

ov.server.tick

Luau
() -> number

Le tick du serveur (20 par seconde).

ov.timer

ov.timer

Luau
{ … }

ov.timer.after

Luau
(ticks: number, fn: () -> ()) -> number

Appeler fn dans n ticks. Rend un id pour cancel.

ov.timer.every

Luau
(ticks: number, fn: () -> ()) -> number

Appeler fn tous les n ticks.

ov.timer.cancel

Luau
(id: number) -> boolean

Arrêter un minuteur.

ov.after

ov.after

Luau
(ticks: number, fn: () -> ()) -> number

Appeler fn dans n ticks (comme ov.timer.after).

Luau
ov.after(20 * 5, function() ov.server.broadcast("5 secondes !") end)

ov.every

ov.every

Luau
(ticks: number, fn: () -> ()) -> number

Appeler fn tous les n ticks (comme ov.timer.every).

ov.cancel

ov.cancel

Luau
(id: number) -> boolean

Arrêter un minuteur.

ov.wait

ov.wait

Luau
(ticks: number?) -> ()

Attendre n ticks sans bloquer le jeu (1 par défaut). Pour étaler un gros travail.

Luau
for i = 1, 100 do ov.world.set_block({ x = i, y = 64, z = 0 }, "ov:stone") ov.wait() end

ov.spawn

ov.spawn

Luau
<A...>(fn: (A...) -> (), A...) -> ()

Lancer fn à part : elle peut attendre sans retenir celui qui l'a lancée.

ov.persist

ov.persist

Luau
<T>(name: string, default: T?) -> T

Une table qui survit aux rechargements et aux redémarrages, sauvegardée avec le monde.

Luau
local scores = ov.persist("scores", { best = 0 })

ov.storage

ov.storage

Luau
Store & { player: (who: string | Player) -> Store }

Un stockage clé-valeur du mod, et par joueur (ov.storage.player(p)).

ov.random

ov.random

Luau
{ … }

ov.random.int

Luau
(min: number, max: number) -> number

Un entier entre min et max compris. Le même tirage sur toutes les machines.

ov.random.float

Luau
() -> number

Un nombre entre 0 et 1.

ov.random.pick

Luau
<T>(list: { T }) -> T?

Un élément au hasard d'une liste.

ov.random.shuffle

Luau
<T>(list: { T }) -> { T }

La liste mélangée (une copie).

ov.realtime

ov.realtime

Luau
{ … }

ov.realtime.now

Luau
() -> { year: number, month: number, day: number, hour: number, minute: number, second: number, weekday: number }

La date et l'heure réelles du serveur, pour un événement du samedi soir.

ov.realtime.unix

Luau
() -> number

Les secondes depuis 1970.

ov.bus

ov.bus

Luau
{ … }

ov.bus.emit

Luau
(name: string, data: any?) -> ()

Prévenir les autres mods du serveur.

ov.bus.on

Luau
(name: string, handler: (data: any, from: string) -> ()) -> number

Écouter ce que les autres mods annoncent.

ov.mod

ov.mod

Luau
{ … }

ov.mod.id

Luau
string

L'identifiant du mod.

ov.mod.version

Luau
string

Sa version (mod.json).

ov.mod.on_reload

Luau
(fn: () -> ()) -> ()

Appelée après chaque rechargement réussi.

ov.scoreboard

ov.scoreboard

Luau
{ … }

ov.scoreboard.objective

Luau
(name: string, title: Text?) -> boolean

Créer un objectif de score, ou changer son titre.

ov.scoreboard.remove

Luau
(name: string) -> boolean

Supprimer un objectif.

ov.scoreboard.show

Luau
(slot: "sidebar" | "list" | "belowName", name: string?) -> boolean

Afficher un objectif : sur le côté, dans la liste des joueurs, sous les pseudos.

ov.scoreboard.set

Luau
(name: string, who: string | Player, value: number) -> boolean

Fixer un score.

ov.scoreboard.get

Luau
(name: string, who: string | Player) -> number?

Lire un score.

ov.scoreboard.add

Luau
(name: string, who: string | Player, amount: number?) -> number

Ajouter à un score (1 par défaut) et rendre le nouveau.

ov.scoreboard.reset

Luau
(name: string, who: string | Player) -> ()

Effacer un score.

ov.scoreboard.sidebar

Luau
(title: Text?, lines: { string }?) -> ()

La barre latérale d'un jeu en un appel : un titre, des lignes. Sans argument, elle disparaît.

Luau
ov.scoreboard.sidebar("<aqua>Sol fondant</aqua>", { "Joueurs : 4", "Manche 2" })

ov.teams

ov.teams

Luau
{ … }

ov.teams.create

Luau
(name: string, options: { color: string?, prefix: Text?, friendly_fire: boolean? }?) -> boolean

Créer une équipe : une couleur de pseudo, un préfixe, le tir ami.

ov.teams.remove

Luau
(name: string) -> boolean

Supprimer une équipe.

ov.teams.join

Luau
(name: string, who: string | Player) -> boolean

Mettre un joueur dans une équipe.

ov.teams.leave

Luau
(who: string | Player) -> boolean

Le sortir de son équipe.

ov.teams.of

Luau
(who: string | Player) -> string?

Son équipe, ou nil.

ov.entities

ov.entities

Luau
{ … }

ov.entities.spawn

Luau
(kind: string, at: Position, dimension: string?) -> number?

Faire apparaître une entité. Rend son id. Demande world.write.

ov.entities.hologram

Luau
(at: Position, text: Text, dimension: string?) -> number?

Un texte flottant dans le monde. Demande world.write.

Luau
ov.entities.hologram({ x = 0, y = 70, z = 0 }, "<gold>Meilleur score : 42</gold>")

ov.entities.set_text

Luau
(id: number, text: Text) -> boolean

Changer le texte d'un hologramme.

ov.entities.remove

Luau
(id: number) -> boolean

Retirer une entité.

ov.villagers

ov.villagers

Luau
{ … }

ov.villagers.villages

Luau
() -> { Village }

Tous les villages du monde : nom, palier, chef, quêtes ouvertes, voisins (api 3). Une copie, en lecture seule.

Luau
for _, v in ov.villagers.villages() do ov.log.info(v.name, v.people) end

ov.villagers.village_at

Luau
(at: Position) -> Village?

Le village à cet endroit du monde principal, ou nil (api 3).

ov.villagers.near

Luau
(at: Position, radius: number?, most: number?) -> { Villager }

Les villageois proches, le plus près d'abord : rayon 16 par défaut et au plus 64, 16 rendus par défaut et au plus 64 (api 3).

Luau
for _, v in ov.villagers.near(p:position(), 32) do p:send(v.name .. " : " .. v.profession) end

ov.villagers.think

Luau
(id: number, thought: string) -> boolean

Donner une pensée, du jeu ou d'un mod, à un villageois (son id d'entité) : elle colore son humeur pour ses heures. Demande world.write (api 3).

Luau
ov.villagers.think(v.id, "frost:first_snow")

ov.bossbar

ov.bossbar

Luau
{ … }

ov.bossbar.create

Luau
(id: string, text: Text?, options: { color: string?, style: string?, progress: number?, players: ({ Player } | "all")? }?) -> Bossbar

Une barre de boss en haut de l'écran.

Luau
local bar = ov.bossbar.create("timer", "Temps", { color = "red", progress = 1, players = "all" })

ov.particles

ov.particles

Luau
{ … }

ov.particles.spawn

Luau
(kind: string, at: Position, options: { count: number?, spread: number?, speed: number?, player: (Player | string)? }?, dimension: string?) -> ()

Des particules à un endroit, pour tous ou un seul joueur.

ov.worlds

ov.worlds

Luau
{ … }

ov.worlds.list

Luau
() -> { { name: string, phase: string } }

Les mondes du serveur et leur état.

ov.worlds.phase

Luau
(name: string) -> string?

L'état d'un monde : active, loading, unloaded…

ov.worlds.clone

Luau
(from: string, to: string) -> (boolean, string)

Copier un monde. Demande worlds.manage.

ov.worlds.create

Luau
(name: string, kind: ("normal" | "flat" | "void" | "emberdeep" | "starfall")?, options: { seed: number? }?) -> (boolean, string)

Créer un monde : normal, plat, vide, emberdeep ou starfall. Demande worlds.manage.

Luau
ov.worlds.create("arene_1", "void", { seed = 42 })

ov.worlds.load

Luau
(name: string) -> (boolean, string)

Charger un monde.

ov.worlds.remove

Luau
(name: string) -> (boolean, string)

Supprimer un monde. Demande worlds.manage.

ov.worlds.key

Luau
(name: string) -> string

L'identifiant d'un monde pour les autres fonctions ("ov:arene_1").

ov.worlds.set

Luau
(name: string, property: string, value: any) -> (boolean, string)

Changer une propriété d'un monde (pvp, combat legacy, gamemode…). Demande worlds.manage (api 2).

Luau
ov.worlds.set("arene_1", "combat", "legacy")

ov.worlds.gamerule

Luau
(name: string, rule: string, value: any) -> boolean

Changer une règle de jeu d'un monde. Demande worlds.manage (api 2).

ov.worlds.border

Luau
(name: string, size: number, options: { center: { x: number, z: number }?, seconds: number? }?) -> boolean

La bordure d'un monde : sa taille, son centre, en combien de secondes. Demande worlds.manage (api 2).

ov.net

ov.net

Luau
{ … }

ov.net.send

Luau
(player: Player | string, name: string, data: any?) -> ()

Envoyer un message à la moitié client du mod, chez un joueur.

ov.net.broadcast

Luau
(name: string, data: any?) -> ()

Le même message à tous les joueurs.

ov.net.on

Luau
(name: string, handler: (player: Player, data: any) -> ()) -> number

Écouter ce que la moitié client envoie.

ov.ui

ov.ui

Luau
{ … }

ov.ui.show

Luau
(player: Player | string, screen: string, tree: Widget) -> ()

Montrer un menu à un joueur, avec l'allure des menus du jeu.

Luau
ov.ui.show(p, "shop", ov.ui.panel("Boutique", { ov.ui.button("buy", "Acheter") }))

ov.ui.close

Luau
(player: Player | string, screen: string) -> ()

Fermer un menu.

ov.ui.hud

Luau
(player: Player | string, id: string, tree: Widget?) -> ()

Un morceau d'affichage permanent à droite de l'écran ; nil l'enlève.

ov.ui.on

Luau
(screen: string, handler: (player: Player, event: UiEvent) -> ()) -> number

Écouter les clics d'un menu.

ov.ui.panel

Luau
(title: string, children: { Widget }, options: { [string]: any }?) -> Widget

Un panneau avec un titre ; options : style = "medium" | "wide" (plus large), detail = un sous-titre.

Luau
ov.ui.panel("Jeux", { ov.ui.text("…") }, { style = "wide", detail = "12 jeux" })

ov.ui.column

Luau
(children: { Widget }, options: { [string]: any }?) -> Widget

Des éléments les uns sous les autres.

ov.ui.row

Luau
(children: { Widget }, options: { style: string? }?) -> Widget

Des éléments côte à côte : un objet, une icône, une pastille gardent leur taille, le reste se partage la largeur ; style = "end" ou "center" pour les aligner.

ov.ui.grid

Luau
(columns: number, children: { Widget }) -> Widget

Une grille de n colonnes.

ov.ui.text

Luau
(text: string, style: string?) -> Widget

Un texte ; style en mots : une taille (hero, h2, title, bold, body, small, muted, label, overline), une teinte (accent, gold, green, red, purple, aqua, #rrggbb), center.

Luau
ov.ui.text("Victoire", "h2 gold")

ov.ui.title

Luau
(text: string) -> Widget

Un titre.

ov.ui.button

Luau
(id: string, label: string, options: { style: string?, enabled: boolean? }?) -> Widget

Un bouton ; son clic arrive dans ov.ui.on avec son id.

ov.ui.toggle

Luau
(id: string, label: string, on: boolean?) -> Widget

Un interrupteur.

ov.ui.slider

Luau
(id: string, label: string, min: number, max: number, value: number?, step: number?) -> Widget

Un curseur entre min et max.

ov.ui.input

Luau
(id: string, placeholder: string?, value: string?) -> Widget

Un champ de texte.

ov.ui.progress

Luau
(value: number, label: string?) -> Widget

Une barre d'avancement (0 à 1).

ov.ui.item

Luau
(item: string, count: number?, size: number?) -> Widget

Un objet, dessiné comme dans l'inventaire, sa quantité et sa taille en dp (32 par défaut).

ov.ui.card

Luau
(id: string?, children: { Widget }, options: { style: string?, on: boolean?, detail: string? }?) -> Widget

Une tuile : ses enfants dedans, cliquable en entier si elle a un id ; options : style = une teinte, on = sélectionnée, detail = une infobulle.

Luau
ov.ui.card("play:rush", { ov.ui.text("Rush", "title") }, { style = "red" })

ov.ui.badge

Luau
(text: string, tone: string?) -> Widget

Un mot court dans une pastille colorée.

Luau
ov.ui.badge("3 en jeu", "green")

ov.ui.icon

Luau
(name: string, tone: string?, size: number?) -> Widget

Une icône du jeu par son nom (trophy, crown, sword, shield, users, play, sparkles…), une teinte, une taille.

ov.ui.spacer

Luau
(size: number?) -> Widget

Un espace vide.

ov.ui.divider

Luau
() -> Widget

Un trait de séparation.

ov.stats

ov.stats

Luau
{ … }

ov.stats.add

Luau
(who: string | Player, key: string, amount: number?) -> number

Ajouter à une statistique d'un joueur (1 par défaut) ; rend la nouvelle valeur. Sans « : », la clé est celle du mod (wins → sol_fondant:wins).

Luau
ov.stats.add(p, "wins")

ov.stats.set

Luau
(who: string | Player, key: string, value: number) -> ()

Fixer une statistique (un meilleur temps).

ov.stats.get

Luau
(who: string | Player, key: string) -> number

Lire une statistique, de ce mod ou d'un autre (« sol_fondant:wins »).

ov.stats.top

Luau
(key: string, count: number?, lowest_first: boolean?) -> { { uuid: string, name: string, value: number } }

Les meilleurs d'une statistique ; lowest_first pour un temps.

ov.economy

ov.economy

Luau
{ … }

ov.economy.currency

Luau
string

Le nom de la monnaie.

ov.economy.balance

Luau
(who: string | Player) -> number

Les pièces d'un joueur, les mêmes dans tous les jeux du serveur.

ov.economy.give

Luau
(who: string | Player, amount: number, reason: string?) -> number

Donner des pièces ; rend le nouveau solde.

ov.economy.take

Luau
(who: string | Player, amount: number, reason: string?) -> boolean

Prendre des pièces s'il en a assez ; rend true si c'est fait.

Luau
if ov.economy.take(p, 100, "chapeau") then p:send("Acheté !") end

ov.minigame

ov.minigame

Luau
{ … }

ov.minigame.define

Luau
(spec: MinigameSpec) -> Minigame

Définir un mini-jeu : ses règles en entrée, toute sa vie en sortie (file, compte à rebours, arène, victoire, stats, menu, commande).

Luau
ov.minigame.define({ id = "sol_fondant", name = "Sol fondant", map = { build = function(m) end }, void_y = 40 })

ov.lobby

ov.lobby

Luau
{ … }

ov.lobby.setup

Luau
(options: { spawn: Position?, dimension: string?, radius: number?, title: string? }?) -> ()

Faire d'un endroit le hub du serveur : arrivée, protection, /hub, /jouer, /groupe.

Luau
ov.lobby.setup({ spawn = { x = 0, y = 100, z = 0 }, title = "Mon réseau" })

ov.lobby.configure

Luau
(options: { spawn: Position?, dimension: string?, radius: number?, title: string? }?) -> ()

Déplacer ou renommer le hub, sans rien réinstaller.

ov.lobby.selector

Luau
(game: string, at: Position, dimension: string?) -> ()

Un personnage qui envoie vers un jeu d'un clic droit, avec sa file au-dessus.

ov.lobby.play

Luau
(player: Player, game: string) -> ()

Envoyer un joueur, et son groupe, dans la file d'un jeu.

ov.lobby.games

Luau
() -> { { id: string, name: string, description: string, queue: number, playing: number, min: number, max: number } }

Les jeux du serveur et leurs files.

ov.moderation

ov.moderation

Luau
{ … }

ov.moderation.setup

Luau
() -> ()

Les commandes de modération : /mute, /unmute, /avertir, /signaler, /moderation.

ov.moderation.is_muted

Luau
(player: Player) -> boolean

Ce joueur est-il muet en ce moment ?

ov.moderation.flag

Luau
(player: Player, reason: string) -> ()

Noter ce qu'un jeu a vu d'étrange (un déplacement trop rapide), et prévenir les modérateurs en ligne.

Luau
ov.moderation.flag(p, "va plus vite que le jeu ne le permet")

ov.moderation.entries

Luau
(name: string?, count: number?) -> { { kind: string, who: string, by: string, reason: string, at: number } }

Le journal, le plus récent d'abord ; pour un joueur si un nom est donné.

ov.blocks

ov.blocks

Luau
{ … }

ov.blocks.define

Luau
(name: string, spec: { data: boolean?, on_place: ((b: any, player: Player, item: string) -> boolean?)?, on_use: ((b: any, player: Player, item: string?) -> boolean?)?, on_break: ((b: any, player: Player) -> boolean?)?, on_random_tick: ((b: any) -> ())?, on_tick: ((b: any) -> ())?, on_neighbour: ((b: any) -> ())? }) -> ()

Ce que fait un bloc vivant du mod (content/blocks.json : random_ticks, neighbour_updates, data) : posé, utilisé, cassé, un tick aléatoire ou programmé, un voisin qui change. b a x, y, z, dimension, name, b:state(), b:get(prop), b:set({prop = valeur}), b:schedule(ticks) et b.data (api 4).

Luau
ov.blocks.define("crusher", { data = true, on_use = function(b, p) b:set({ active = "true" }); b:schedule(40) end, on_tick = function(b) b:set({ active = "false" }) end })

ov.items

ov.items

Luau
{ … }

ov.items.define

Luau
(name: string, spec: { on_use: ((player: Player, item: string, count: number) -> boolean?)?, on_hit: ((attacker: Player, victim: Player, info: DamageInfo) -> (boolean | number)?)?, on_mine: ((player: Player, at: Place, block: string) -> boolean?)? }) -> ()

Ce que fait un objet du mod (content/items.json) : utilisé en l'air, frappant un joueur, cassant un bloc. Rendre false annule ; on_hit peut rendre les nouveaux dégâts (api 4).

Luau
ov.items.define("frost_wand", { on_use = function(p) p:send("Brrr !") end })

ov.leaderboards

ov.leaderboards

Luau
{ … }

ov.leaderboards.show

Luau
(id: string, at: Position, stat: string, options: { title: string?, count: number?, lowest_first: boolean?, format: "time"?, dimension: string? }?) -> ()

Un classement flottant, mis à jour toutes les dix secondes.

Luau
ov.leaderboards.show("sol_fondant", { x = 0, y = 102, z = 5 }, "sol_fondant:wins", { title = "Sol fondant — victoires" })

ov.leaderboards.remove

Luau
(id: string) -> ()

Retirer un classement.

ov.arenas

ov.arenas

Luau
{ … }

ov.arenas.create

Luau
(template: string) -> string

Une copie jetable d'un monde modèle, pour une partie. Rend son nom.

Luau
local arena = ov.arenas.create("sol_fondant_map")

ov.arenas.ready

Luau
(name: string) -> boolean

L'arène est-elle prête ?

ov.arenas.await

Luau
(name: string, timeout: number?) -> boolean

Attendre qu'elle soit prête (dans un handler).

ov.arenas.destroy

Luau
(name: string) -> (boolean, string)

Détruire l'arène.

ov.arenas.copy

Luau
(folder: string) -> string

Une arène copiée d'un dossier modèle voisin du monde ("maps/ldc_foret") : les cartes n'occupent pas de place parmi les 32 mondes. Demande worlds.manage (api 2).