Close
    Search Search

    Tutoriel : Comment créer un équipement personnalisé

    Page du didacticielCet article est un tutoriel avancé.Tous les tutoriels · Tutoriels de script

    Remarque : ce didacticiel explique comment créer un équipement personnalisé. Il y a beaucoup de scripts et de construction, donc si vous êtes débutant, restez à l'écart.

    Quoi qu'il en soit, voici le tutoriel de Relorelo84 (Dronian) sur la façon de créer votre propre équipement personnalisé. Tout d'abord, je vais vous montrer comment faire un jetpack avec n'importe quoi (même une tête de noob, parce que pourquoi pas ?). Il existe un classement de la difficulté du didacticiel, sur une échelle de 5.



    1. Très facile
    2. Facile
    3. Medium
    4. Dur
    5. Très dur

    Cela inclut également les didacticiels de ColorfulBrendon (ColorfulBrendonROBLOX) et A84hg, alors j'espère que vous apprécierez la collaboration et que vous passerez un bon moment à fabriquer des équipements tels que des jetpacks, des épées et bien plus encore !

    Contenu

    Tutoriel 1 : Jetpack

    Avez-vous déjà vu le Jetpack expérimental ultra-secret militaire américain sur des modèles gratuits ? Si oui, avez-vous voulu avoir un jetpack à votre place similaire à celui-ci, mais vous êtes très tristement célèbre pour avoir volé des modèles gratuits ? Eh bien, voici comment en faire un. Ce tutoriel note 4 (difficile).



    Partie 1 : Fabrication du jetpack réel

    Tout d'abord, allez dans Insérer, puis sélectionnez Objet. Une fenêtre contextuelle apparaîtra, avec beaucoup de choses à mettre. Faites défiler vers la droite jusqu'à ce que vous voyiez l'option d'insérer un outil. Cliquez dessus. Il devrait apparaître dans le StarterPack. Si ce n'est pas le cas, faites-le glisser dans le StarterPack. Sélectionnez-le et renommez-le tout ce qui est approprié. Ensuite, placez une brique dans l'outil et renommez-la "Handle" sans guillemets. Les possibilités pour votre Jetpack fabriqué à la main sont franchement infinies ; La tête d'un noob ou d'un invité, un objet maillé ou même un chapeau. Assurez-vous qu'il n'est pas ancré, ou vous serez coincé dans le sol lorsque vous le testerez. Maintenant, cliquez sur le nom de votre jetpack. Retournez à nouveau à la fenêtre Objets. Ajoutez quatre sons à l'intérieur de la poignée (ne les ajoutez pas dans l'outil, ou vous le gâcherez). Renommez-les EngineFail, InitialThrust, LowFuelWarning et Thrusting.

    PARTIE 2 : Les sons du jetpack

    Ajoutez un autre objet à l'outil cette fois ; un NumberValue. Faites le nom CurrFuel. Dans la barre indiquant la valeur, mettez n'importe quel type de carburant que vous aimez. Par exemple, je mettrai 20000 carburant (ne mettez pas de virgules !). Maintenant, il est temps d'ajouter les sons à votre jetpack. Mettez ces codes pour les Sound ID des quatre sons :

    • EngineFail : http://www.roblox.com/asset/?id=30624305
    • InitialThrust : http://www.roblox.com/asset/?id=30624262
    • LowFuelWarning : http://www.roblox.com/asset/?id=30624357
    • Poussée : http://www.roblox.com/asset/?id=30624426

    Le tester prouvera qu'il est TRÈS inachevé. Eh bien, nous devons ajouter deux autres choses à notre jetpack sur mesure ; l'interface graphique pour le carburant et le script qui rassemble tout.


    PARTIE 3 : heure de l'interface graphique

    Il y a deux objets GUI dans le jetpack que vous devez ajouter ; arrêt et FuelGui. Dans votre outil Jetpack, ajoutez une animation. Nommez-le "arrêt" sans les guillemets. Dans l'AnimationId, mettez "f5c060f01391b53f42d43c28d722cfab" sans les guillemets. Une interface graphique vers le bas, une pour aller.


    Ajoutez un ScreenGui et renommez-le FuelGui. Ceci est crucial, car il vous indique combien de carburant vous avez. Dans FuelGui, mettez un Frame et un ImageLabel. NE LES RENOMMEZ PAS. Mettez ces statistiques dans Frame :

    • Couleur d'arrière-plan3 : 255 ; 255 ; 255
    • BorderColor3 : 0 ; 0 ; 0
    • TailleBordurePixel : 0
    • Poste : {0.900000036, 0}, {0.200000003, 0}
    • Taille : {0, 40}, {0, 300}

    Vous avez terminé le premier, maintenant pour le second.

    • Couleur d'arrière-plan3 : 255 ; 255 ; 255
    • Transparence de l'arrière-plan : 1
    • BorderColor3 : 0 ; 0 ; 0
    • TailleBordurePixel : 0
    • Image : http://www.roblox.com/asset/?id=30559074
    • Poste : {0.900000036, 0}, {0.200000003, 0}
    • Taille : {0, 40}, {0, 300}

    En le testant à nouveau, il est toujours cassé ! Eh bien, c'est parce que nous avons une dernière chose à faire. Nous devons mettre dans le code qui tient tout ensemble.

    PARTIE 4 : Le scénario

    Bon, voici beaucoup de code. N'oubliez pas que le maxFuel local doit être le même que CurrFuel. Créez un LocalScript et mettez-le dedans.

    local Tool = script.Parent local mass = 0 local player = nil local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass local gravity = .75—things float at > 1 local moving = false local maxFuel = 20000 local fuel = Tool.CurrFuel.Value local gui = nil local anim = nil local jetPack = nil local regen = false local force = Instance.new("BodyVelocity") force.velocity = Vector3.new(0,0,0) local bodyGyro = Instance.new("BodyGyro") bodyGyro.P = 20000 bodyGyro.D = 8000 bodyGyro.maxTorque = Vector3.new(bodyGyro.P,bodyGyro.P,bodyGyro.P) local cam = nil local Flame = nil function onEquippedLocal(mouse) player = Tool.Parent mass = recursiveGetLift(player) force.P = mass * 10 force.maxForce = Vector3.new(0,force.P,0) mouse.Button1Down:connect(thrust) mouse.Button1Up:connect(cutEngine) cam = game.Workspace.CurrentCamera anim = player.Humanoid:LoadAnimation(Tool.standstill) anim:Play() gui = Tool.FuelGui:clone() updateGUI() gui.Parent = game.Players:GetPlayerFromCharacter(player).PlayerGui equipPack() regen = true regenFuel() end function equipPack() jetPack = Tool.Handle:clone() jetPack.CanCollide = false jetPack.Name = "JetPack" jetPack.Parent = game.Workspace Tool.Handle.Transparency = 1 local welder = Instance.new("Weld") welder.Part0 = jetPack welder.Part1 = player.Torso welder.C0 = CFrame.new(Vector3.new(0,0,-1)) welder.Parent = jetPack Flame = Instance.new("Part") Flame.Name = "Flame" Flame.Transparency =1 Flame.CanCollide = false Flame.Locked = true Flame.formFactor = 2 Flame.Size = Vector3.new(1,0.4,1) Flame.Parent = jetPack local Fire = Instance.new("Fire") Fire.Heat = -20 Fire.Size = 6 Fire.Enabled = false Fire.Parent = Flame local firer = Instance.new("Weld") firer.Part0 = jetPack.Flame firer.Part1 = jetPack firer.C0 = CFrame.new(Vector3.new(0,2,0)) firer.Parent = jetPack.Flame end function updateGUI() gui.Frame.Size = UDim2.new(0,40,0,300 * (Tool.CurrFuel.Value/maxFuel)) gui.Frame.Position = UDim2.new(0.9,0,0.2 + (0.2 * ((maxFuel - Tool.CurrFuel.Value)/maxFuel)),0) end function onUnequippedLocal() regen = false force:remove() bodyGyro:remove() anim:Stop() anim:remove() gui:remove() if jetPack ~= nil then jetPack:remove() jetPack = nil end Tool.Handle.Transparency = 0 end function thrust() if fuel > 0 then thrusting = true force.Parent = player.Torso jetPack.Flame.Fire.Enabled = true Tool.Handle.InitialThrust:Play() bodyGyro.Parent = player.Torso while thrusting do bodyGyro.cframe = cam.CoordinateFrame force.velocity = Vector3.new(0,cam.CoordinateFrame.lookVector.unit.y,0) * 50 fuel = fuel - 1 Tool.CurrFuel.Value = fuel if fuel <= 0 then Tool.Handle.EngineFail:Play() cutEngine() end updateGUI() wait() Tool.Handle.Thrusting:Play() if fuel <= 1 then Tool.Handle.LowFuelWarning:Play() end end Tool.Handle.Thrusting:Stop() Tool.Handle.LowFuelWarning:Stop() end end function cutEngine() thrusting = false jetPack.Flame.Fire.Enabled = false force.velocity = Vector3.new(0,0,0) force.Parent = nil anim:Stop() bodyGyro.Parent = nil end Tool.Equipped:connect(onEquippedLocal) Tool.Unequipped:connect(onUnequippedLocal) local head = nil function recursiveGetLift(node) local m = 0 local c = node:GetChildren() if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end—nasty hack to detect when your parts get blown off for i=1,#c do if c[i].className == "Part" then if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then—GROSS if c[i].Name == "Handle" then m = m + (c[i]:GetMass() * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height else m = m + (c[i]:GetMass() * equalizingForce * gravity) end end end m = m + recursiveGetLift(c[i]) end return m end function regenFuel() while regen do if fuel < maxFuel then fuel = fuel + 1 Tool.CurrFuel.Value = fuel updateGUI() end wait(0.2) end end


    Testez-le, et cela fonctionne parfaitement ! Enregistrez-vous pour mon deuxième tutoriel, où je vais vous montrer comment faire votre propre Bloxy Cola.


    Tutoriel 2 : Bloxy Cola

    Ce tutoriel est classé 2 (Facile).

    Étape 1 : Faire le Bloxy Cola

    Allez dans Insérer, sélectionnez Objet et cliquez sur Outil. Un outil devrait apparaître. Faites-le glisser dans votre StarterPack et nommez-le comme vous le souhaitez. Par exemple, je nommerai le mien le Shedletsky Cola. Ajoutez une brique/tête/maille 1x1 dans l'outil et nommez-le Poignée. Assurez-vous qu'il n'est pas ancré.

    Étape 2 : Sons

    Maintenant que vous avez terminé le manche, il est maintenant temps d'ajouter les sons. Allez dans Insérer, sélectionnez Objet et créez deux sons. Nommez un DrinkSound et nommez l'autre OpenSound, mais placez-les dans le manche du Bloxy Cola. Dans les SoundID, mettez-les pour les sons ;

    • DrinkSound : http://www.roblox.com/asset/?id=10722059
    • OpenSound : http://www.roblox.com/asset/?id=10721950

    Maintenant, voici la dernière partie ; le script.

    Étape 3 : Le scénario

    Insérez un script dans l'outil et nommez-le BloxyColaScript. Mettez ceci dans le script ;

    outil local = script.Parent; enabled = true fonction onActivated() si non activé, alors return end enabled = false Tool.GripForward = Vector3.new(0,-.759,-.651) Tool.GripPos = Vector3.new(1.5,-.5,.3 ) Tool.GripRight = Vector3.new(1,0,0) Tool.GripUp = Vector3.new(0,.651,-.759) Tool.Handle.DrinkSound:Play() wait(3) local h = Tool. Parent:FindFirstChild("Humanoid") if (h ~= nil) then if (h.MaxHealth > h.Health + 5) then h.Health = h.Health + 5 else h.Health = h.MaxHealth end end Outil. GripForward = Vector3.new(-.976,0,-0.217) Tool.GripPos = Vector3.new(0.03,0,0) Tool.GripRight = Vector3.new(.217,0,-.976) Tool.GripUp = Vector3.new(0,1,0) enabled = true end function onEquipped() Tool.Handle.OpenSound:play() end script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped)

    Testez-le et vous venez de créer votre propre Bloxy Cola personnalisé ! Dans le prochain didacticiel, vous apprendrez à fabriquer l'un des engrenages les plus avancés de tous les temps ; Les Aventures de Noob Boy : Partie 1.

    Tutoriel 3: Noob Boy Partie 1

    Ce tutoriel note un 5 (Très Difficile).

    Étape 1 : fabrication de la console

    Insérez un outil et appelez-le comme vous voulez. Maintenant, ajoutez une brique 1x1 appelée Handle dans l'outil, mais assurez-vous qu'elle n'est pas ancrée. Maintenant, il est temps d'ajouter quatre sons.

    Étape 2 : Ajout des quatre sons

    Dans le manche, ajoutez quatre Sounds ; Échec, saut, prix et chanson. Pour les SoundIds, mettez-les ;

    • Échec : http://www.roblox.com/asset/?id=32202382
    • Aller : http://www.roblox.com/asset/?id=32201677
    • Prix : http://www.roblox.com/asset/?id=32201701
    • Chanson : http://www.roblox.com/asset/?id=32200781

    Nous avons ajouté les sons, mais le tutoriel est loin d'être terminé.

    Étape 3 : Le scénario

    Vous vous demandez peut-être ; Pourquoi ajouter le script maintenant ? Eh bien, il est préférable de le faire en premier car le script est en fait plus facile que d'ajouter les interfaces graphiques ! Faites un LocalScript et mettez-le dedans ;

    local Tool = script.Parent local gui = nil local mapParts = {} local player = nil local keyDownCon = nil local keyUpCon = nil local clickCon = nil local platforming = false local time = 0 local gaming = true local head = nil local left = false local right = false local jump = false local prize = nil local prizeRegenTimer = 0 local walkCounter = 0 local playerWalkForward = {"32171523","32171543","32171566","32171582","32171594"} local playerWalkBackward = {"32168430","32168450","32168470","32168483","32168492"} local playerVelocity = Vector2.new(0,0) function onEquipped(mouse) Tool.Handle.Song:Stop() Tool.Handle.Jump:Stop() Tool.Handle.Prize:Stop() Tool.Handle.Fail:Stop() enabled = false gui = Tool.GameGui:clone() player = gui.Cabinet.Screen.Player mapParts = gui.Cabinet.Screen.Map:GetChildren() keyDownCon = mouse.KeyDown:connect(onKeyDown) keyUpCon = mouse.KeyUp:connect(onKeyUp) clickCon = gui.Cabinet.SoundOnOff.MouseButton1Click:connect(soundChanger) if Tool.Handle.Song.Volume == 0 then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" end head = Tool.Parent:FindFirstChild("Head") end Tool.Equipped:connect(onEquipped) function onUnequipped() gaming = false head.Anchored = false Tool.Handle.Song:Stop() Tool.Handle.Jump:Stop() Tool.Handle.Prize:Stop() Tool.Handle.Fail:Stop() game.Workspace.CurrentCamera.CameraType = 5 gui:remove() keyDownCon:disconnect() keyUpCon:disconnect() clickCon:disconnect() clickCon = nil keyDownCon = nil keyUpCon = nil end Tool.Unequipped:connect(onUnequipped) local enabled = false function onActivated() if enabled then return end enabled = true game.Workspace.CurrentCamera.CameraType = 1 head.Anchored = true prize = nil prizeRegenTimer = 0 time = 0 gui.Parent = game.Players:GetPlayerFromCharacter(Tool.Parent).PlayerGui Tool.Handle.Song:Play() gameLoop() Tool.Handle.Song:Stop() gui:remove() gui = Tool.GameGui:clone() clickCon = gui.Cabinet.SoundOnOff.MouseButton1Click:connect(soundChanger) if Tool.Handle.Song.Volume == 0 then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" end player = gui.Cabinet.Screen.Player mapParts = gui.Cabinet.Screen.Map:GetChildren() game.Workspace.CurrentCamera.CameraType = 5 head.Anchored = false enabled = false end Tool.Activated:connect(onActivated) function soundChanger() if gui.Cabinet.SoundOnOff.Image == "http://www.roblox.com/asset/?id=32203454" then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" Tool.Handle.Song.Volume = 0 Tool.Handle.Jump.Volume = 0 Tool.Handle.Prize.Volume = 0 Tool.Handle.Fail.Volume = 0 else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" Tool.Handle.Song.Volume = 0.5 Tool.Handle.Jump.Volume = 0.5 Tool.Handle.Prize.Volume = 0.5 Tool.Handle.Fail.Volume = 0.5 end end function onKeyDown(key) key:lower() if key == "a" then left = true right = false elseif key == "d" then left = false right = true elseif key == "w" then jump = true end end function onKeyUp(key) key:lower() if key == "a" then left = false elseif key == "d" then right = false elseif key == "w" then jump = false end end function Physics() if playerVelocity.y < 8 then playerVelocity = Vector2.new(playerVelocity.x,playerVelocity.y + 1) end if playerVelocity.y > 1 then platforming = false end local enemies = gui.Cabinet.Screen.Enemies:GetChildren() for i = 1, #enemies do enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset,0,enemies[i].Position.Y.Offset + 5) end end function Touching(a,b) local ap = Vector2.new(a.Position.X.Offset, a.Position.Y.Offset) local as = Vector2.new(a.Size.X.Offset, a.Size.Y.Offset) local bp = Vector2.new(b.Position.X.Offset, b.Position.Y.Offset) local bs = Vector2.new(b.Size.X.Offset, b.Size.Y.Offset) local c = (ap.x + as.x > bp.x) and (bp.x + bs.x > ap.x) and (ap.y + as.y > bp.y) and (bp.y + bs.y > ap.y) if c then return true else return false end end function Collision() -- check player against map for i = 1, #mapParts do if Touching(mapParts[i],player) then if player.Position.X.Offset < mapParts[i].Position.X.Offset and not platforming then player.Position = UDim2.new(0, mapParts[i].Position.X.Offset - player.Size.X.Offset,0,player.Position.Y.Offset) playerVelocity = Vector2.new(0,playerVelocity.y) elseif player.Position.X.Offset + player.Size.X.Offset > mapParts[i].Position.X.Offset + mapParts[i].Size.X.Offset and not platforming then player.Position = UDim2.new(0, mapParts[i].Position.X.Offset + mapParts[i].Size.X.Offset,0,player.Position.Y.Offset) playerVelocity = Vector2.new(0,playerVelocity.y) else if player.Position.Y.Offset > mapParts[i].Position.Y.Offset then playerVelocity = Vector2.new(playerVelocity.x,10) platforming = false elseif player.Position.Y.Offset + player.Size.Y.Offset > mapParts[i].Position.Y.Offset then platforming = true playerVelocity = Vector2.new(playerVelocity.x,0) end end end end—check enemies against map, player local enemies = gui.Cabinet.Screen.Enemies:GetChildren() for i = 1, #enemies do for j = 1, #mapParts do if Touching(mapParts[j],enemies[i]) then enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset,0,mapParts[j].Position.Y.Offset - enemies[i].Size.Y.Offset) end end if enemies[i].Position.X.Offset > 384 or enemies[i].Position.X.Offset < 0 then if enemies[i].Position.Y.Offset > 230 then enemies[i]:remove() else enemies[i].Left.Value = not enemies[i].Left.Value end end if Touching(enemies[i],player) then gaming = false end end—check game bounds if player.Position.X.Offset < 0 then playerVelocity = Vector2.new(0,playerVelocity.y) player.Position = UDim2.new(0,0,0,player.Position.Y.Offset) elseif player.Position.X.Offset > 384 then playerVelocity = Vector2.new(0,playerVelocity.y) player.Position = UDim2.new(0,384,0,player.Position.Y.Offset) end if player.Position.Y.Offset < 0 then playerVelocity = Vector2.new(playerVelocity.x,0) player.Position = UDim2.new(0,player.Position.X.Offset,0,0) end—check player against prize if prize ~= nil and Touching(player,prize) then time = time + 100 Tool.Handle.Prize:Play() prize:remove() prize = nil prizeRegenTimer = math.random(180,360) end end function updatePlayerPos() if math.abs(playerVelocity.x) > 4 then if playerVelocity.x < 0 then playerVelocity = Vector2.new(-4,playerVelocity.y) else playerVelocity = Vector2.new(4,playerVelocity.y) end end player.Position = UDim2.new(0,player.Position.X.Offset + playerVelocity.x,0,player.Position.Y.Offset + playerVelocity.y) playerVelocity = Vector2.new(playerVelocity.x * 0.5,playerVelocity.y * 0.9) end function Controls() if left then playerVelocity = Vector2.new(playerVelocity.x - 3,playerVelocity.y) elseif right then playerVelocity = Vector2.new(playerVelocity.x + 3,playerVelocity.y) end if jump and platforming then jump = false platforming = false Tool.Handle.Jump:Play() playerVelocity = Vector2.new(playerVelocity.x,playerVelocity.y - 20) end end function walkAnimation(forward) walkCounter = walkCounter + 1 if walkCounter > 8 then walkCounter = 1 end local playIndex = walkCounter if walkCounter == 4 then playIndex = 2 elseif walkCounter == 5 then playIndex = 1 elseif walkCounter == 6 then playIndex = 4 elseif walkCounter == 7 then playIndex = 5 elseif walkCounter == 8 then playIndex = 4 end if forward then player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward[playIndex] else player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkBackward[playIndex] end end local forward = true function animation() if playerVelocity.x > 1 then forward = true walkAnimation(forward) elseif playerVelocity.x < -1 then forward = false walkAnimation(forward) elseif forward then player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward[1] walkCounter = 1 else player.Image = "http://www.roblox.com/asset/?id=" ..

    

    Vous pensiez que c'était dur ? Oh mon Dieu, attendez de voir les interfaces graphiques !

    Étape 4 : GameGui et ScoreFrame.

    Ajoutez un ScreenGui et nommez-le GameGui. Ensuite, ajoutez un Frame et appelez-le ScoreFrame. Dans ScoreFrame, ajoutez un ImageLabel (ne changez pas le nom) et un TextLabel. Remplacez le TextLabel par Score. Pour ScoreFrame, voici les statistiques modifiées.

    • Couleur d'arrière-plan3 : 51, 102, 255
    • Transparence de l'arrière-plan : 1
    • Poste : {0.5, -100}, {0.5, 150}
    • Taille : {0, 200}, {0, 50}
    • Index Z : 2

    Pour ImageLabel :

    • Couleur d'arrière-plan3 : 51 ; 102 ; 255
    • Transparence de l'arrière-plan : 1
    • Image : http://www.roblox.com/asset/?id=31736392
    • Poste : {0, 6}, {0, 0}
    • Taille : {0, 130}, {0, 50}
    • Index Z : 2

    Et pour Score :

    • Couleur d'arrière-plan3 : 0 ; 255 ; 255
    • Transparence de l'arrière-plan : 1
    • TailleBordurePixel : 0
    • Poste : {0, 130}, {0, 0}
    • Taille : {0, 70}, {0, 50}
    • Index Z : 3

    Vous pensiez que c'était dur ? Attendez d'avoir ajouté Cabinet et tous ses enfants.

    (AJOUTER LE RESTE PLUS TARD)


    Tutoriel 4 : Fabriquer une épée

    Ceci est le tutoriel de ColorfulBrendon(: ColorfulBrendonROBLOX) sur la façon de fabriquer votre propre épée. Peut-être qu'un jour il sera publié en tant qu'équipement de catalogue !


    Commencez par générer une brique ordinaire. Nommez-le "Handle" et redimensionnez-le comme vous le souhaitez. Ensuite, allez dans "Workspace" dans la fenêtre avec Explorer et Properties, car ces deux fenêtres seront nécessaires pour accomplir votre tâche, et une fois Workspace sélectionné, allez dans "Insérer" et sélectionnez Objet. Ensuite, vous devez sélectionner Outil. Nommez-le Épée avec Propriétés et sur Explorer, faites glisser votre élément maintenant nommé Poignée dans votre élément maintenant nommé Épée. Vous pouvez renommer l'épée comme vous le souhaitez, mais la poignée est importante. Maintenant, les concepteurs de jeux de ROBLOX essaient de supprimer tous les créateurs TouchInterest possibles. Alors, allez dans Modèles gratuits et obtenez un outil de construction de base de la création des administrateurs. L'outil de glissement est basique. Ouvrez le "+" dans l'outil Drag, sélectionnez "TouchInterest", cliquez sur "Copier" puis "Coller" dans la "Poignée" de votre épée. Dans Handle, insérez un SpecialMesh. Voici comment faire des apparitions de tête, ou comment le faire pour que vous puissiez créer un maillage librement. Copiez et collez ceci dans votre maillage


    rbxasset://fonts/sword.mesh

    Il ne vous reste plus qu'à la texturer ! Le maillage de l'épée BASIC est cet ID

    rbxasset://textures/SwordTexture.png

    Je vais vous montrer à quoi cela ressemble dans une photo.

    Tutoriel : Comment créer un équipement personnalisé Enregistrez-le sur votre ordinateur et modifiez-le avec un programme d'édition d'images. Vous pouvez voir l'éditeur je vais rendre toute l'image blanche pour faire un "Lightheart"

    Tutoriel : Comment créer un équipement personnalisél'avant et l'arrière du manche, la lame de l'épée, le manche supérieur, tous les détails et dessins du manche, etc.

    Le "Darkheart" est célèbre. Tout ce qu'il est, serait noir. Donc, à mon image, je rends tout blanc pour, un "Lightheart". Tutoriel : Comment créer un équipement personnaliséVous ne pouvez pas voir l'image parce que ça, c'est blanc. Maintenant, pour terminer cette section du processus de fabrication de l'épée, je dois vous montrer comment faire exister votre nouvelle texture.

    Téléchargez-le sur vos décalcomanies en procédant comme suit

    1. Allez sur Mon ROBLOX
    2. Consulter le profil
    3. Aller aux trucs
    4. Aller à Décalcomanies
    5. Cliquez sur Créer
    6. Cliquez sur Choisir un fichier
    7. Sélectionnez votre photo désirée
    8. Cliquez sur Créer un autocollant
    9. Attendez qu'il soit approuvé. (Temps d'attente : 1 à 45 minutes selon l'autocollant)
    10. S'il n'est pas terminé dans les 45 minutes, votre décalque n'a pas été approuvé.

    Maintenant, générez une brique

    Sur cette brique, collez votre décalcomanie. Maintenant, dans l'explorateur, il y a maintenant un décalque en dessous où il est écrit Pièce.

    Dans Propriétés, vous pouvez voir qu'il a un ID. Copiez et collez l'ID dans le TextureID de votre épée. D'accord, nous avons donc un objet ressemblant à une épée que vous pouvez ramasser, mais qu'en est-il des scripts ?

    Insérez un "Script" et un "LocalScript" dans votre épée (pas la poignée)

    Commençons par celui-ci :

    Script (Renommer "Script d'épée")

    game:service("RunService") local damage = 5 --Modifiez ceci pour déterminer les dégâts de votre épée lorsque vous vous approchez d'une personne qui en est équipée. ~Color local slash_damage = 10—Modifiez ceci pour déterminer les dégâts de votre épée lorsque vous cliquez dessus sur une personne. ~Colorlocal lunge_damage = 30—Modifiez ceci pour déterminer les dégâts de votre épée lorsque vous cliquez dessus suffisamment de fois pour la poignarder dans les airs.

    Félicitations, vous venez de fabriquer une épée !


    Comment créer des boutons de génération de messages personnalisés

    À présent, vous devriez avoir beaucoup de bons engrenages dans votre espace de travail. Vous voulez créer un bouton cliquable pour que vous ayez l'air professionnel pour l'accompagner ? Pour vous faire paraître encore plus impressionnant ? Eh bien, si vous le faites, lisez simplement ceci!


    Je suis sûr qu'à un moment ou à un autre, vous avez utilisé ou vu quelqu'un utiliser l'administration en jeu, n'est-ce pas ? h/ ou m/? Désolé, il n'y a pas de l/ qui fait un texte Low. H n'est pas haut et M n'est pas moyen.

    Ils signifient en fait Message et Indice. Comme ReloRelo vous l'avait prévenu au début, vous savez probablement qu'il s'agit de 5/5 sur l'échelle de dureté, ce qui signifie que vous saurez probablement comment créer l'un de ces modèles avec un indice en haut disant "Le créateur de cette carte merci (nom d'utilisateur) pour..." ou "Bienvenue à (lieu) par (nom d'utilisateur)" ou quelque chose comme ça.

    Ceux-ci sont faciles à faire et je ne veux pas perdre votre temps avec 1/5 sur l'échelle de dureté.

    Étape:

    1. Faire apparaître une brique
    2. Ajouter un détecteur de clic
    3. Préparez-vous pour les scripts qui vont dans le bouton !


    debounce = false fonction onClicked()if debounce == false thendebounce = truelocal m = Instance.new("Message")m.Parent = game.Workspacem.Text = "Mon texte ici"—Votre texte va dans les ""s. wait(5) --En cinq secondes, votre texte vanishesm.Text = "Mon texte ici aussi."—Après 5 secondes, il est passé à ce texte.wait(180) --En trois minutes, votre texte vanishesm.Text = "J'espère maintenant vous..."wait(5)m.Text = "...obtenez le modèle?" --J'espère que vous le comprenez. Pas trop difficile à apprendre une fois que vous avez le script.wait (5) --Enjoy ! ~Color m:Remove()debounce = false endend script.Parent.ClickDetector.MouseClick:connect(onClicked)

    Tutoriel 5 : Truelle

    A84hg ici, et voici mon premier tutoriel sur la fabrication d'une truelle personnalisée. C'est sur 3. (Moyen).

    le début

    Tout d'abord, insérez un outil et faites-le glisser dans le StarterPack. Nommez-le comme vous voulez. (Truelle de qualité A84hg) par exemple.

    Ensuite, ajoutez deux scripts dans l'outil. Nommez un "BrickCleanup" et nommez l'autre "WallMaker".

    Nettoyage de briques

    Pour le script BrickCleanup, ajoutez ceci :

    attendre(24)

    script.Parent.Parent = nil

    WallMaker

    Pour le script WallMaker, ajoutez ceci :

    mur localHauteur = 4

    brique localeVitesse = 0.04

    emplacement wallWidth = 12


    outil local = script.Parent



    -- place une brique en position et renvoie la position du coin opposé de la brique

    fonction placeBrick(cf, pos, couleur)

    brique locale = Instance.new("Part")

    brick.BrickColor = couleur

    brick.CFrame = cf * CFrame.new(pos + brick.Size / 2)

    script.Parent.BrickCleanup:Clone().Parent = brique — attacher le script de nettoyage à cette brique

    brick.BrickCleanup.Disabled = false

    brick.Parent = game.Workspace

    brique:MakeJoints()

    retour brique, pos + brique.Taille

    fin


    fonction buildWall(cf)


    couleur locale = BrickColor.random()

    briques locales = {}


    assert(wallWidth>0)

    local y = 0

    tandis que y < wallHeight do

    local p

    local x = -wallWidth/2

    tandis que x < wallWidth/2 fait

    brique locale

    brique, p = placeBrick (cf, Vector3.new (x, y, 0), couleur)

    x = px

    table.insert(briques, brique)

    attendre (brickSpeed)

    fin

    y = py

    fin


    retourner les briques


    fin



    fonction snap(v)

    si math.abs(vx)>math.abs(vz) alors

    si vx>0 alors

    retourner Vector3.new(1,0,0)

    d'autre

    retourner Vector3.new(-1,0,0)

    fin

    d'autre

    si vz>0 alors

    retourner Vector3.new(0,0,1)

    d'autre

    retourner Vector3.new(0,0,-1)

    fin

    fin

    fin



    Tool.Enabled = vrai

    fonction onActivated()


    sinon Tool.Enabled alors

    retourner

    fin


    Tool.Enabled = false


    caractère local = Tool.Parent;

    humanoïde local = personnage.Humanoïde

    si humanoïde == nil alors

    print("Humanoïde introuvable")

    retourner

    fin


    cible localePos = humanoïde.TargetPoint

    local lookAt = snap( (targetPos - character.Head.Position).unit )

    local cf = CFrame.new (targetPos, targetPos + lookAt)


    Tool.Handle.BuildSound:play()


    buildWall(cf)


    attendre(5)


    Tool.Enabled = vrai

    fin


    script.Parent.Activé:connect(onActivé)

    Vous pensiez que c'était ça ? Eh bien, vous vous trompez ! Ensuite, ajoutez un LocalScript, insérez-le dans l'outil et nommez-le Local Gui.

    Emplacement Gui

    Ajoutez ceci dans le LS :

    outil local = script.Parent;

    enabled = vrai

    fonction onButton1Down (souris)

    si non activé alors

    retourner

    fin

    activé = faux

    mouse.Icon = "rbxasset://texturesArrowFarCursor.png"

    attendre(5)

    mouse.Icon = "rbxasset://texturesArrowCursor.png"

    enabled = vrai

    fin

    fonction onEquipedLocal (souris)

    si souris == nil alors

    print("Souris introuvable")

    retourner

    fin

    mouse.Icon = "rbxasset://texturesArrowCursor.png"

    mouse.Button1Down:connect(function() onButton1Down(mouse) end)

    fin

    Outil.Équipé : connecter (onEquipéLocal)

    Poignée, sons et maillage

    Ensuite, insérez une brique et nommez-la Handle.

    Insérez un son dans la poignée et nommez-le BuildSound. Vous pouvez lui donner n'importe quel ID de son, mais bass.wav est recommandé. Ensuite, donnez-lui un maillage. Donnez-lui l'ID de maillage rbxasset://fonts/trowel.mesh et l'ID de texture rbxasset://textures/TrowelTexture.png

    Testez-le et vous avez terminé de fabriquer votre propre truelle !

    C'est A84hg, je me déconnecte.

    Tutoriel 6 : Bombe à retardement

    Salut tout le monde. Je suis A84hg, de retour avec un autre tutoriel pour l'équipement personnalisé. Cette fois, nous vous apportons la TIMEBOMB ! KABOOM ! Difficulté : 3 (Moyenne)

    le début

    Insérez un outil et faites-le glisser dans le StarterPack. Nommez-le comme vous voulez, comme UNE BOMBE !

    Insérez ensuite deux scripts. Nommez une bombe et nommez l'autre PlantBomb.

    Bombe

    Mettez ça dans la bombe.

    Intervalle de mise à jour locale = .4

    Couleur actuelle locale = 1

    couleurs locales = {26, 21}

    ticksound local = Instance.new("Son")

    ticksound.SoundId = "rbxasset://soundsclickfast.wav"

    ticksound.Parent = script.Parent

    fonction mise à jour()

    updateInterval = updateInterval * .9

    script.Parent.BrickColor = BrickColor.new (couleurs [couleur actuelle])

    CouleurCourante =CouleurCourante + 1

    if (currentColor > 2) then currentColor = 1 end

    fin

    fonction blowUp()

    son local = Instance.new("Son")

    sound.SoundId = "rbxasset://soundsRocket shot.wav"

    son.Parent = script.Parent

    son.Volume = 1

    son : jouer ()

    explosion = Instance.new("Explosion")

    explosion.BlastRadius = 12

    explosion.BlastPressure = 1000000

    créateur local = script.Parent:findFirstChild("créateur")

    si créateur ~= nil alors

    explosion.Hit:connect (fonction (partie, distance) onPlayerBlownUp (partie, distance, créateur) fin)

    fin

    explosion.Position = script.Parent.Position

    explosion.Parent = game.Workspace

    script.Parent.Transparence = 1

    fin

    fonction onPlayerBlownUp(partie, distance, créateur)

    si part.Name == "Tête" alors

    humanoïde local = part.Parent.Humanoïde

    tagHumanoïde(humanoïde, créateur)

    fin

    fin

    balise de fonctionHumanoïde(humanoïde, créateur)

    si créateur ~= nil alors

    local new_tag = créateur:clone()

    new_tag.Parent = humanoïde

    fin

    fin

    fonction untagHumanoïde(humanoïde)

    si humanoïde ~= nil alors

    balise locale = humanoïde:findFirstChild("créateur")

    si la balise ~= nil alors

    tag.Parent = nil

    fin

    fin

    fin

    tandis que updateInterval> .1 faire

    attendre(updateInterval)

    mettre à jour ()

    ticksound:play()

    fin

    exploser()

    attendre(2)

    script.Parent:supprimer()

    PlantBomb

    Mettez ceci dans PlantBomb :

    bombScript local = script.Parent.Bomb

    outil local = script.Parent

    Bombe locale = Tool.Handle

    fonction plante()

    local bomb2 = Instance.new("Part")

    local vCharacter = Tool.Parent

    local vPlayer = game.Players:playerFromCharacter(vCharacter)

    spawnPos local = Bomb.Position

    bomb2.Position = Vector3.new(spawnPos.x, spawnPos.y+3, spawnPos.z)

    bombe2.Taille = Vector3.new(2,2,2)

    bombe2.BrickColor = BrickColor.new(21)

    bombe2.Forme = 0

    bombe2.BottomSurface = 0

    bombe2.TopSurface = 0

    bombe2.Réflectance = 1

    bomb2.Name = "TimeBomb"

    bomb2.Locked = vrai

    tag_créateur local = Instance.new("ObjectValue")

    Creator_tag.Value = vPlayer

    Creator_tag.Name = "créateur"

    Creator_tag.Parent = bomb2

    bomb2.Parent = game.Workspace

    local new_script = bombScript:clone()

    new_script.Disabled = false

    nouveau_script.Parent = bombe2

    fin

    Tool.Enabled = vrai

    fonction onActivated()

    sinon Tool.Enabled alors

    retourner

    fin

    Tool.Enabled = false

    caractère local = Tool.Parent;

    humanoïde local = personnage.Humanoïde

    si humanoïde == nil alors

    print("Humanoïde introuvable")

    retourner

    fin

    cible localePos = humanoïde.TargetPoint

    Bombe.Transparence = 1.0

    plante()

    attendre(6)

    Bombe.Transparence = 0.0

    Tool.Enabled = vrai

    fin

    fonction onNon équipé()

    fin

    Tool.Activated:connect(onActivated)

    Outil.Non équipé : connecter (surNon équipé)

    Emplacement Gui

    Ensuite, comme dans le didacticiel Trowel, ajoutez un LocalScript et nommez-le Local Gui.

    Mettez ceci dans Local Gui :

    outil local = script.Parent;

    local activé = vrai

    fonction onButton1Down (souris)

    si non activé alors

    retourner

    fin

    activé = faux

    mouse.Icon = "rbxasset://texturesArrowFarCursor.png"

    attendre(6)

    mouse.Icon = "rbxasset://texturesArrowCursor.png"

    enabled = vrai

    fin

    fonction onEquipedLocal (souris)

    si souris == nil alors

    print("Souris introuvable")

    retourner

    fin

    mouse.Icon = "rbxasset://texturesArrowCursor.png"

    mouse.Button1Down:connect(function() onButton1Down(mouse) end)

    fin

    Outil.Équipé : connecter (onEquipéLocal)

    Ensuite, insérez une brique 2x2x2 et nommez-la Handle.

    Donnez-lui le maillage rbxasset://fonts/timebomb.mesh avec la texture rbxasset://textures/bombtex.png

    Donnez également au handle un TouchTransmitter et nommez-le TouchInterest.

    Testez-le, et vous avez terminé!

    C'est A84hg, je me déconnecte.

    ajouter un commentaire de Tutoriel : Comment créer un équipement personnalisé
    Commentaire envoyé avec succès ! Nous l'examinerons dans les prochaines heures.

    End of content

    No more pages to load