Crée quatre parts avec un pouvoir pour chaque part :
- devenir transparent
- changer de taille
- courir plus vite
- sauter plus haut

Explication des 4 boosts
Invisibilité
Quand un joueur touche une des parts du dossier, le script vérifie s’il a déjà un dossier "Transparency" sur son Humanoid.
S’il ne l’a pas, il le crée et rend transparents tous les vêtements/accessoires et le corps du joueur (Transparency = 0.9).
S’il l’a déjà, le script le supprime et redonne au joueur son apparence normale (Transparency = 0).Un système de cooldown empêche de réactiver le pouvoir immédiatement après l’avoir utilisé.
C’est donc un interrupteur (toggle) : chaque contact avec la part active ou désactive l’invisibilité.
-- Script pour rendre invisible les joueurs qui touchent la part
local TRANSPARENCE_ACTIVE = 0.9
local TRANSPARENCE_INACTIVE = 0
local COOLDOWN = 1 -- secondes avant de pouvoir re-déclencher
local cooldowns = {} -- [character] = true pendant le cooldown
local function playerTransparency(character, transparency)
for _, chose in ipairs(character:GetChildren()) do
if chose:IsA("Accessory") then
-- Rend transparent les BasePart/Decal de l'accessoire
for _, descendant in ipairs(chose:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Decal") then
descendant.Transparency = transparency
end
end
elseif chose:IsA("MeshPart") then
-- Le MeshPart lui-même est la part à rendre transparente
chose.Transparency = transparency
end
end
end
-- Boucle sur toutes les parts du folder des parts pour rendre invisible
local part = script.Parent
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Transparency")
local transparency
if existingFolder then
existingFolder:Destroy()
transparency = TRANSPARENCE_INACTIVE
else
local folder = Instance.new("Folder")
folder.Name = "Transparency"
folder.Parent = humanoid
transparency = TRANSPARENCE_ACTIVE
end
playerTransparency(character, transparency)
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
Taille
- Quand le joueur touche la part, le script regarde si un dossier
"Scale"existe déjà sur sonHumanoid. - S’il n’existe pas, il sauvegarde la taille actuelle du joueur, puis l’agrandit ou le rétrécit à
SCALEMAX(0.3, donc joueur miniature). - S’il existe déjà, le script redonne au joueur sa taille d’origine et supprime le dossier.
- Les 4 dimensions (hauteur, largeur, profondeur, tête) sont modifiées en même temps pour un effet cohérent.
- Comme pour l’invisibilité, c’est un toggle protégé par un cooldown.
local part = script.Parent
local SCALEMAX = 0.3
local COOLDOWN = 1 -- secondes avant de pouvoir re-déclencher
local cooldowns = {} -- [character] = true pendant le cooldown
part.Touched:Connect(function(plr)
local character = plr.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Scale")
if existingFolder then
humanoid.BodyHeightScale.Value = existingFolder.Value
humanoid.BodyWidthScale.Value = existingFolder.Value
humanoid.BodyDepthScale.Value = existingFolder.Value
humanoid.HeadScale.Value = existingFolder.Value
existingFolder:Destroy()
else
local folder = Instance.new("IntValue")
folder.Name = "Scale"
folder.Parent = humanoid
folder.Value = humanoid.BodyHeightScale.Value
humanoid.BodyHeightScale.Value = SCALEMAX
humanoid.BodyWidthScale.Value = SCALEMAX
humanoid.BodyDepthScale.Value = SCALEMAX
humanoid.HeadScale.Value = SCALEMAX
end
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
Vitesse
- Quand le joueur touche la part, le script vérifie si un dossier
"Speed"existe sur sonHumanoid. - S’il n’existe pas, il sauvegarde la vitesse actuelle du joueur (
WalkSpeed) et la remplace parSPEEDMAX(50, donc très rapide). - S’il existe déjà, le script restaure la vitesse normale du joueur et supprime le dossier.
- Cela permet au joueur de courir beaucoup plus vite qu’en temps normal.
- Le cooldown évite d’activer/désactiver le pouvoir trop rapidement en boucle.
local part = script.Parent
local SPEEDMAX = 50
local COOLDOWN = 1 -- secondes avant de pouvoir re-déclencher
local cooldowns = {} -- [character] = true pendant le cooldown
part.Touched:Connect(function(plr)
local character = plr.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Speed")
if existingFolder then
humanoid.WalkSpeed = existingFolder.Value
existingFolder:Destroy()
else
local folder = Instance.new("IntValue")
folder.Name = "Speed"
folder.Parent = humanoid
folder.Value = humanoid.WalkSpeed
humanoid.WalkSpeed = SPEEDMAX
end
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
Saut
- Quand le joueur touche la part, le script vérifie si un dossier
"Jump"existe sur sonHumanoid. - S’il n’existe pas, il sauvegarde une valeur puis augmente sa hauteur de saut (
JumpHeight) jusqu’àJUMPMAX(80, donc saut très haut). - S’il existe déjà, le script restaure la hauteur de saut d’origine et supprime le dossier.
- Cela permet au joueur de sauter beaucoup plus haut que d’habitude.
- Le cooldown protège contre une réactivation trop rapide du pouvoir.
local part = script.Parent
local JUMPMAX = 80
local COOLDOWN = 1 -- secondes avant de pouvoir re-déclencher
local cooldowns = {} -- [character] = true pendant le cooldown
part.Touched:Connect(function(plr)
local character = plr.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Jump")
if existingFolder then
humanoid.JumpHeight = existingFolder.Value
existingFolder:Destroy()
else
local folder = Instance.new("IntValue")
folder.Name = "Jump"
folder.Parent = humanoid
folder.Value = humanoid.JumpHeight
humanoid.JumpHeight = JUMPMAX
end
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
Point commun aux 4 scripts : ils utilisent tous le même mécanisme (dossier-mémoire + toggle + cooldown).
QCM pour mieux comprendre
1. Que se passe-t-il si un joueur touche deux fois la part « invisibilité » (avec le cooldown écoulé entre les deux) ?
A. Rien la deuxième fois
B. Il devient invisible puis redevient visible
C. Il meurt
D. Il devient invincible
2. À quoi sert le dossier créé (ex: "Speed", "Scale", "Jump") dans chaque script ?
A. À décorer le personnage
B. À mémoriser la valeur d’origine avant modification
C. À compter le nombre de joueurs
D. À afficher un message
3. Pourquoi y a-t-il un COOLDOWN dans chaque script ?
A. Pour ralentir le jeu
B. Pour empêcher de réactiver le pouvoir trop vite d’affilée
C. Pour supprimer le joueur
D. Pour changer la couleur de la part
4. Quelle propriété du Humanoid est modifiée par le pouvoir « saut » ?
A. WalkSpeed
B. Health
C. JumpHeight
D. Transparency
5. Que modifient ENSEMBLE BodyHeightScale, BodyWidthScale, BodyDepthScale et HeadScale ?
A. La vitesse du joueur
B. La taille du joueur
C. La transparence du joueur
D. La couleur du joueur
6. Pourquoi le pouvoir « invisibilité » doit-il aussi modifier les Accessory (accessoires) du joueur ?
A. Pour que le chapeau/les cheveux etc. deviennent transparents aussi, sinon on verrait encore une partie du joueur
B. Pour supprimer les accessoires
C. Pour donner des points au joueur
D. Pour changer la forme des accessoires
