Sur Roblox, un jeu tourne sur deux mondes séparés : le serveur (qui a l'autorité sur tout — argent, dégâts, sauvegarde) et le client, une copie sur l'ordinateur de chaque joueur (qui affiche l'interface et capte les clics). Un LocalScript ne peut jamais modifier directement l'argent d'un joueur — pour de bonnes raisons de sécurité.
Le pont entre les deux s'appelle RemoteEvent (envoi à sens unique) et RemoteFunction (envoi avec réponse). C'est la pièce technique la plus importante de tout jeu Roblox avec de l'interaction.
Dans ReplicatedStorage (visible par le client ET le serveur), crée un RemoteEvent, par exemple nommé AcheterObjet.
-- LocalScript, sur un bouton "Acheter"
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteAchat = ReplicatedStorage:WaitForChild("AcheterObjet")
script.Parent.MouseButton1Click:Connect(function()
remoteAchat:FireServer("Epee") -- envoie l'objet demandé
end)-- Script, dans ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteAchat = ReplicatedStorage:WaitForChild("AcheterObjet")
remoteAchat.OnServerEvent:Connect(function(joueur, nomObjet)
local leaderstats = joueur:FindFirstChild("leaderstats")
local argent = leaderstats and leaderstats:FindFirstChild("Argent")
if not argent or argent.Value < 100 then return end -- pas assez d'argent
argent.Value = argent.Value - 100
print(joueur.Name .. " a acheté : " .. nomObjet)
end)-- Côté serveur, après avoir traité l'achat
remoteAchat:FireClient(joueur, "Achat réussi !")
-- Côté client, écouter la réponse
remoteAchat.OnClientEvent:Connect(function(message)
print("Serveur dit : " .. message)
end)-- Côté client : InvokeServer ATTEND la réponse
local possedeObjet = remoteVerif:InvokeServer("Epee")
-- Côté serveur : OnServerInvoke DOIT retourner une valeur
remoteVerif.OnServerInvoke = function(joueur, nomObjet)
return true -- ou false
endInvokeServer bloque le script client jusqu'à la réponse — à réserver aux vérifications ponctuelles, jamais à une boucle rapide.ReplicatedStorage, jamais dans ServerStorage (invisible au client) ni StarterGui.Ce guide couvre le mécanisme de base. Le module RemoteEvents : Client ↔ Serveur approfondit la sécurisation contre la triche, les limites de fréquence et des exercices pratiques corrigés.
Voir le module gratuitement →