Aller au contenu
Forma Roblox

Rechercher dans la formation

Module 04 · Client / serveur

Examen du module 4

Client, serveur, remotes et sécurité. Montre que tu sais faire communiquer ton jeu et le protéger contre les tricheurs.

Ton meilleur résultat : Pas encore tenté

Questions de l’examen

17 questions · réussite à partir de 70 % · réponds à tout puis corrige

  1. Question 1QCMTu veux qu’une plateforme de l’Obby des Nuages devienne rouge pour tous les joueurs. Où places-tu le code ?
  2. Question 2Vrai ou fauxLe serveur est toujours le propriétaire réseau des Parts ancrées, et on ne peut pas changer cela.
  3. Question 3QCMPourquoi un tricheur peut-il faire voler ou téléporter son personnage, alors que les changements des clients ne sont normalement pas répliqués ?
  4. Question 4QCMLe serveur veut annoncer à tous les joueurs que quelqu’un a terminé l’obby. Quelle méthode utilise-t-il ?
  5. Question 5QCMUn LocalScript envoie { "TrailNuage", equipee = true } au serveur. Quel est le problème ?
  6. Question 6Trouve le bugCôté serveur, AcheterObjet.OnServerEvent:Connect(function(player, idObjet) ... end) répond « Requête invalide » à chaque fois. Le bug est dans ce LocalScript. Où ?
    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    
    local acheterObjet = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("AcheterObjet")
    local player = Players.LocalPlayer
    
    acheterObjet:FireServer(player, "TrailNuage")
  7. Question 7Vrai ou fauxUn message envoyé par un UnreliableRemoteEvent dont le contenu dépasse 1 000 octets est abandonné.
  8. Question 8QCMLe serveur veut afficher une fenêtre de confirmation chez un joueur et connaître sa réponse. Quelle solution est la plus sûre ?
  9. Question 9Trouve le bugCe LocalScript veut récupérer son inventaire grâce à la RemoteFunction ObtenirInventaire. Il ne fonctionne pas. Où est le bug ?
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local obtenirInventaire = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("ObtenirInventaire")
    
    local inventaire = obtenirInventaire:FireServer()
    print("Objets possédés :", #inventaire)
  10. Question 10Vrai ou fauxSi un script appelle BindableFunction:Invoke() alors qu’aucun OnInvoke n’a jamais été défini, il ne reprend jamais son exécution.
  11. Question 11QCMUn remote reçoit un montant. Quelle vérification rejette à la fois NaN et l’infini ?
  12. Question 12QCMUn RemoteEvent nommé DonnerPiecesAdmin, qu’aucun de tes scripts n’utilise, reçoit un message d’un joueur. Que peux-tu en conclure ?
  13. Question 13QCMTon obby utilise un ClickDetector pour ouvrir une porte secrète réservée à l’étape 10. Que doit faire ton script serveur ?
  14. Question 14Trouve le bugCette fonction serveur gère les achats de la boutique. Un joueur peut pourtant acheter avec un solde insuffisant. Où est le bug ?
    local function acheter(player, id)
    	if typeof(id) ~= "string" then
    		return false
    	end
    	local objet = Catalogue[id]
    	if objet == nil or possedes[player][id] then
    		return false
    	end
    	local pieces = player.leaderstats.Pieces
    	pieces.Value -= objet.prix
    	possedes[player][id] = true
    	return true
    end
  15. Question 15QCMDans le script des pièces, pourquoi désactive-t-on la pièce (disponible = false) avant d’ajouter la récompense ?
  16. Question 16Améliore ce promptTu veux que Claude Code crée le remote qui ramène un joueur à un checkpoint qu’il a déjà atteint. Quelle version du prompt donnera le meilleur résultat ?
    Le prompt de départ
    fais un remote pour se téléporter aux checkpoints

    Choisis la meilleure version de ce prompt.

  17. Question 17Trouve le bugTrouve la faille dans ce code généré par IA. Avec ce Script « Progression », un tricheur valide tous les checkpoints, dans l’ordre, sans quitter la zone de départ. Où est la faille ?
    local function surContactCheckpoint(checkpoint: BasePart, partieTouchee: BasePart)
    	local player = Players:GetPlayerFromCharacter(partieTouchee.Parent)
    	local numero = tonumber(checkpoint.Name)
    	local etape = player and obtenirEtape(player)
    	if player == nil or numero == nil or etape == nil then
    		return
    	end
    	if numero ~= etape.Value + 1 then
    		return
    	end
    	etape.Value = numero
    	notification:FireClient(player, "Étape " .. numero .. " atteinte !")
    end

← Retour au module 04