Texte et nombres
formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom et rollChance, et l’endroit où ServerClock est documenté.
De petits utilitaires pour ce que lisent les joueurs (argent, poids, textes traduits), les tirages aléatoires et les comptes à rebours alignés sur l’horloge du serveur.
import { formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom, rollChance, ServerClock } from "@aicore-fivem/lib/shared";Texte
formatText
Remplit les emplacements {0}, {1}... d’un texte avec des valeurs selon leur position. Une traduction peut déplacer ou répéter un emplacement ("{1} paid {0}"), c’est pourquoi les valeurs sont désignées par numéro et non par ordre.
Côté : client, serveur et NUI · Attend : non
formatText(template: string, args: ReadonlyArray<string | number>): stringlocal text = aiLib.formatText(template, ...) -- les valeurs en arguments séparésParamètres
Prop
Type
Retour
string : le texte avec chaque emplacement qui a une valeur rempli. Un emplacement sans valeur reste tel quel ({2}).
Exemple
import { formatText } from "@aicore-fivem/lib/shared";
formatText("You paid ${0} for {1} items", [250, 3]); // "You paid $250 for 3 items"Vous l’appelez rarement vous-même : les utilitaires de langue (createLocale, aiLib.locale, LangTexts) remplissent déjà les emplacements. Voir Langue.
stripGameText
Rend brut un texte venant d’un autre script : retire les balises HTML, les codes de couleur et de touche de GTA (~r~, ~INPUT_PICKUP~) et , réduit les suites d’espaces et supprime les espaces au début et à la fin. Utilisez-le avant d’afficher le texte d’un autre script dans votre propre interface.
Côté : client, serveur et NUI · Attend : non
stripGameText(text: unknown): stringlocal plain = aiLib.stripGameText(text)Paramètres
Prop
Type
Retour
string : le texte brut. "" pour null / undefined (Lua : nil).
Exemple
import { stripGameText } from "@aicore-fivem/lib/shared";
stripGameText("Press ~INPUT_CONTEXT~ to <b>open</b> the ~g~shop~s~"); // "Press to open the shop"Nombres
round
Arrondit un nombre à un nombre de décimales.
Côté : client, serveur et NUI · Attend : non
round(value: number, decimals?: number): numberlocal rounded = aiLib.numbers.round(value, decimals)Paramètres
Prop
Type
Retour
number : la valeur arrondie.
Exemple
import { round } from "@aicore-fivem/lib/shared";
round(12.345, 1); // 12.3
round(12.5); // 13groupDigits
Écrit un nombre avec un séparateur tous les trois chiffres : 1234567 devient 1,234,567. Garde le signe et les décimales. Utilisez-le pour chaque montant d’argent que voient les joueurs.
Côté : client, serveur et NUI · Attend : non
groupDigits(value: number | string, separator?: string): stringlocal text = aiLib.numbers.groupDigits(value, separator)Paramètres
Prop
Type
Retour
string : le nombre groupé.
Exemple
import { groupDigits } from "@aicore-fivem/lib/shared";
groupDigits(1234567); // "1,234,567"
groupDigits(-9876.5); // "-9,876.5"
groupDigits(1500000, "."); // "1.500.000"formatWeight
Écrit un poids en grammes comme les joueurs le lisent : sous 1 kg en grammes, à partir de 1 kg en kilogrammes avec une décimale (kilogrammes entiers à partir de 100 kg), chiffres groupés.
Côté : client, serveur et NUI · Attend : non
formatWeight(grams: number): stringLua : pas d’équivalent.
Paramètres
Prop
Type
Retour
string : "750 g", "1.5 kg", "1,250 kg".
Exemple
import { formatWeight } from "@aicore-fivem/lib/shared";
formatWeight(750); // "750 g"
formatWeight(1500); // "1.5 kg"
formatWeight(1250000); // "1,250 kg"Aléatoire
randomInt
Un nombre entier aléatoire de min à max, tous deux inclus.
Côté : client, serveur et NUI · Attend : non
randomInt(min: number, max: number): numberLua : pas d’équivalent ; utilisez math.random(min, max).
Paramètres
Prop
Type
Retour
number : un nombre entier entre min et max.
Exemple
import { randomInt } from "@aicore-fivem/lib/shared";
const payout = randomInt(150, 300); // 150, 151, ... ou 300pickRandom
Un élément aléatoire d’une liste.
Côté : client, serveur et NUI · Attend : non
pickRandom<T>(list: readonly T[]): T | undefinedLua : pas d’équivalent ; utilisez list[math.random(#list)].
Paramètres
Prop
Type
Retour
Un élément, ou undefined quand la liste est vide.
Exemple
import { pickRandom } from "@aicore-fivem/lib/shared";
const loot = pickRandom(["goldbar", "rolex", "diamond"]) ?? "goldbar";rollChance
true avec une probabilité de percent sur 100.
Côté : client, serveur et NUI · Attend : non
rollChance(percent: number): booleanLua : pas d’équivalent ; utilisez math.random() * 100 < percent.
Paramètres
Prop
Type
Retour
true environ percent fois sur 100.
Exemple
import { inventory } from "@aicore-fivem/lib/server";
import { rollChance } from "@aicore-fivem/lib/shared";
function useLockpick(source: number, slot: number): void {
if (rollChance(25)) inventory.removeItem(source, "lockpick", 1, undefined, slot); // se casse 1 fois sur 4
}Faites le tirage sur le serveur pour tout ce qui donne des objets ou de l’argent. Un tirage sur le client peut être forcé par un tricheur.
Temps
ServerClock
L’horloge du serveur sur un client, pour des comptes à rebours qui ne dépendent pas de l’horloge propre du client. Elle est exportée depuis @aicore-fivem/lib/shared et n’a pas d’équivalent Lua. Sa référence complète (sync, now, toLocal, exemple de compte à rebours) se trouve sur Caméra et timing : ServerClock.