Close
    Search Search

    Tutorial: Cómo hacer equipo personalizado

    Página de tutoriales Este artículo es un tutorial avanzado.Todos los tutoriales · Tutoriales de secuencias de comandos

    Nota: Este tutorial trata sobre cómo hacer un Gear personalizado. Hay muchas secuencias de comandos y construcción, así que si eres un principiante, mantente alejado.

    De todos modos, este es el tutorial de Relorelo84 (Dronian) sobre cómo hacer tu propio Gear personalizado. Primero, te mostraré cómo hacer un jetpack con cualquier cosa (incluso la cabeza de un novato, porque ¿por qué no?). Hay una clasificación de lo difícil que es el tutorial, en una escala de 5.



    1. Muy fácil
    2. Fácil
    3. Mediana
    4. Dura
    5. Muy duro

    Esto también incluye los tutoriales de ColorfulBrendon (ColorfulBrendonROBLOX) y A84hg, así que espero que disfruten de la colaboración y se diviertan creando equipos como mochilas propulsoras, espadas y mucho más.

    Contenido

    Tutorial 1: Jetpack

    ¿Alguna vez has visto el Jetpack experimental ultrasecreto militar de EE. UU. En modelos gratuitos? Si es así, ¿ha querido tener un jetpack en su lugar similar a ese, pero es muy infame por robar modelos gratis? Bueno, aquí se explica cómo hacer uno. Este tutorial califica 4 (Difícil).



    Parte 1: Hacer el jetpack real

    Primero, vaya a Insertar, luego seleccione Objeto. Aparecerá una ventana emergente, con muchas cosas para poner. Desplácese hacia la derecha hasta que vea la opción para insertar una herramienta. Pinchalo. Debería aparecer en el StarterPack. Si no es así, arrástrelo al StarterPack. Selecciónelo y cámbiele el nombre que sea apropiado. Luego, coloque un ladrillo en la herramienta y cámbiele el nombre a "Manejar" sin comillas. Las posibilidades de su Jetpack hecho a mano son francamente infinitas; La cabeza de un novato o invitado, un objeto de malla o incluso un sombrero. Asegúrese de que no esté anclado o se quedará atascado en el suelo cuando lo pruebe. Ahora, haz clic en el nombre de tu jetpack. Vuelve a la ventana de Objetos nuevamente. Agregue cuatro sonidos dentro del mango (no los agregue a la herramienta, o lo estropeará). Cámbieles el nombre EngineFail, InitialThrust, LowFuelWarning y Thrusting.

    PARTE 2: Los sonidos del jetpack

    Agregue otro objeto a la herramienta esta vez; un NumberValue. Haz el nombre CurrFuel. En la barra que dice Valor, coloque el tipo de combustible que desee. Por ejemplo, pondré 20000 de combustible (¡no pongas comas!). Ahora es el momento de agregar los sonidos a su jetpack. Ponga estos códigos para los ID de sonido de los cuatro sonidos:

    • EngineFail: http://www.roblox.com/asset/?id=30624305
    • InitialThrust: http://www.roblox.com/asset/?id=30624262
    • LowFuelWarning: http://www.roblox.com/asset/?id=30624357
    • Empujón: http://www.roblox.com/asset/?id=30624426

    Probarlo demostrará que está MUY inconcluso. Bueno, necesitamos agregar dos cosas más a nuestro jetpack hecho a medida; la interfaz gráfica de usuario para el combustible y el guión que pone todo junto.


    PARTE 3: tiempo de GUI

    Hay dos objetos GUI en el jetpack que necesita agregar; parada y FuelGui. En su HERRAMIENTA Jetpack, agregue una animación. Nómbrelo "parado" sin las comillas. En AnimationId, ingrese "f5c060f01391b53f42d43c28d722cfab" sin las comillas. Una GUI abajo, una para ir.


    Agregue un ScreenGui y cámbiele el nombre FuelGui. Esto es crucial, porque le dice cuánto combustible tiene. En FuelGui, coloque un Frame y un ImageLabel. NO CAMBIAR EL NOMBRE DE ESTOS. Pon estas estadísticas en Frame:

    • BackgroundColor3: 255; 255; 255
    • BorderColor3: 0; 0; 0
    • BorderSizePixel: 0
    • Posición: {0.900000036, 0}, {0.200000003, 0}
    • Tamaño: {0, 40}, {0, 300}

    Terminaste el primero, ahora el segundo.

    • BackgroundColor3: 255; 255; 255
    • Transparencia de fondo: 1
    • BorderColor3: 0; 0; 0
    • BorderSizePixel: 0
    • Imagen: http://www.roblox.com/asset/?id=30559074
    • Posición: {0.900000036, 0}, {0.200000003, 0}
    • Tamaño: {0, 40}, {0, 300}

    Probándolo de nuevo, ¡todavía está roto! Bueno, eso es porque tenemos una última cosa que hacer. Necesitamos poner el código que lo mantiene todo junto.

    PARTE 4: El guión

    Bien, aquí viene mucho código. Recuerde que el maxFuel local tiene que ser el mismo que CurrFuel. Haga un LocalScript e introdúzcalo.

    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


    Pruébelo y funciona perfectamente. Consulte mi segundo tutorial, donde le mostraré cómo hacer su propia Bloxy Cola.


    Tutorial 2: Bloxy Cola

    Este tutorial ocupa el segundo lugar (Fácil).

    Paso 1: hacer la Bloxy Cola

    Vaya a Insertar, seleccione Objeto y haga clic en Herramienta. Debería aparecer una herramienta. Arrástrelo a su StarterPack y asígnele el nombre que desee. Por ejemplo, nombraré al mío Shedletsky Cola. Agregue un ladrillo / cabeza / malla de 1x1 en la herramienta y asígnele el nombre Mango. Asegúrate de que no esté anclado.

    Paso 2: sonidos

    Ahora ha terminado con el control, pero ahora es el momento de agregar los sonidos. Vaya a Insertar, seleccione Objeto y haga dos Sonidos. Nombra un DrinkSound y el otro OpenSound, pero ponlos en el mango de Bloxy Cola. En SoundID, póngalos para los sonidos;

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

    Ahora, aquí viene la parte final; la secuencia de comandos.

    Paso 3: el guión

    Inserte un script en la herramienta y asígnele el nombre BloxyColaScript. Pon esto en el guión;

    Herramienta local = script.Parent; habilitado = función verdadera onActivated () si no está habilitado, devuelve fin habilitado = falso 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: Reproducir () esperar (3) local h = Herramienta. Padre: 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 Tool. 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) habilitado = función final verdadera onEquipped () Tool.Handle.OpenSound: play () end script.Parent.Activated: connect (onActivated) script.Parent.Equipped: connect (onEquipped)

    Pruébelo y acaba de hacer su propia Bloxy Cola personalizada. En el siguiente tutorial, aprenderá a hacer uno de los engranajes más avanzados de todos los tiempos; Las aventuras de Noob Boy: Parte 1.

    Tutorial 3: Noob Boy Parte 1

    Este tutorial califica un 5 (muy difícil).

    Paso 1: hacer la consola

    Inserta una herramienta y llámala como quieras. Ahora, agregue un bloque 1x1 llamado Mango en la herramienta, pero asegúrese de que no esté anclado. Ahora es el momento de agregar cuatro sonidos.

    Paso 2: agregar los cuatro sonidos

    En el mango, agregue cuatro sonidos; Fall, Jump, Prize y Song. Para los SoundIds, colóquelos;

    • Falla: http://www.roblox.com/asset/?id=32202382
    • Saltar: http://www.roblox.com/asset/?id=32201677
    • Premio: http://www.roblox.com/asset/?id=32201701
    • Canción: http://www.roblox.com/asset/?id=32200781

    Hemos agregado los sonidos, pero el tutorial está lejos de terminar.

    Paso 3: el guión

    Puede que se esté preguntando; ¿Por qué agregar el script ahora? Bueno, es mejor hacer esto primero porque el script es realmente más fácil que agregar las GUI. Haga un LocalScript e introdúzcalo;

    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 (adelante) elseif playerVelocity.x <-1 then forward = false walkAnimation (adelante) elseif adelante luego player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward [1] walkCounter = 1 else player.Image = "http://www.roblox.com/asset/?id=" ..

    

    ¿Pensaste que era difícil? ¡Vaya, espere hasta que vea las GUI!

    Paso 4: GameGui y ScoreFrame.

    Agregue un ScreenGui y asígnele el nombre GameGui. Luego, agregue un Frame y llámelo ScoreFrame. En ScoreFrame, agregue un ImageLabel (no cambie el nombre) y un TextLabel. Cambie TextLabel a Score. Para ScoreFrame, aquí están las estadísticas modificadas.

    • Color de fondo 3:51, 102, 255
    • Transparencia de fondo: 1
    • Posición: {0.5, -100}, {0.5, 150}
    • Tamaño: {0, 200}, {0, 50}
    • Índice Z: 2

    Para ImageLabel:

    • BackgroundColor3: 51; 102; 255
    • Transparencia de fondo: 1
    • Imagen: http://www.roblox.com/asset/?id=31736392
    • Posición: {0, 6}, {0, 0}
    • Tamaño: {0, 130}, {0, 50}
    • Índice Z: 2

    Y para Score:

    • BackgroundColor3: 0; 255; 255
    • Transparencia de fondo: 1
    • BorderSizePixel: 0
    • Posición: {0, 130}, {0, 0}
    • Tamaño: {0, 70}, {0, 50}
    • Índice Z: 3

    ¿Pensaste que era difícil? Espere hasta que agregue Cabinet y todos sus elementos secundarios.

    (AGREGANDO EL RESTO MÁS TARDE)


    Tutorial 4: Hacer una espada

    Este es el tutorial de ColorfulBrendon (: ColorfulBrendonROBLOX) sobre cómo hacer tu propia espada. ¡Quizás algún día se publique como equipo de catálogo!


    Comienza generando un ladrillo normal. Nómbrelo "Manejar" y cambie su tamaño a la forma que desee. Luego vaya a "Espacio de trabajo" en la ventana con Explorador y Propiedades, ya que estas dos ventanas serán necesarias para realizar su tarea, y una vez que el Espacio de trabajo esté seleccionado, vaya a "Insertar" y seleccione Objeto. Luego, debe seleccionar Herramienta. Nómbrelo Espada con propiedades y en el Explorador, arrastre su elemento ahora llamado Mango a su elemento ahora llamado Espada. Puede cambiar el nombre de la espada a lo que desee, sin embargo, el mango es importante. Ahora, los diseñadores de juegos de ROBLOX están intentando eliminar todos los creadores de TouchInterest posibles. Entonces, vaya a Modelos gratuitos y obtenga una herramienta de compilación básica de la creación de los administradores. La herramienta de arrastre es básica. Abre el "+" en la herramienta Arrastrar, selecciona "TouchInterest", haz clic en "Copiar" y luego "Pega" en el "Mango" de tu espada. En Mango, inserte un SpecialMesh. Así es como se hace la apariencia de la cabeza, o cómo hacerlo para que pueda hacer una malla libremente. Copia y pega esto en tu malla


    rbxasset: //fonts/sword.mesh

    ¡Ahora todo lo que tienes que hacer es texturizarlo! La malla de espada BÁSICA es esta ID.

    rbxasset: //textures/SwordTexture.png

    Te mostraré cómo se ve en una foto.

    Tutorial: Cómo hacer equipo personalizado Guárdelo en su computadora y edítelo con un programa de edición de imágenes. Puedes ver el editor. Haré que la imagen COMPLETA sea blanca para hacer un "Lightheart"

    Tutorial: Cómo hacer equipo personalizadoanverso y reverso del mango, la hoja de la espada, el mango superior, todos los detalles y diseños en el mango, etc.

    El "Darkheart" es famoso. Todo lo que es, sería negro. Entonces, en mi imagen, estoy haciendo que todo sea blanco, un "Lightheart". Tutorial: Cómo hacer equipo personalizadoNo puedes ver la imagen porque es blanca. Ahora, para terminar esta sección del proceso de fabricación de espadas, debo mostrarte cómo hacer que exista tu nueva textura.

    Súbelo a tus calcomanías haciendo lo siguiente

    1. Ir a Mi ROBLOX
    2. Ir al perfil
    3. Ir a Cosas
    4. Ir a Calcomanías
    5. Haga clic en Crear
    6. Haga clic en Elegir archivo
    7. Seleccione su foto deseada
    8. Haga clic en Crear calcomanía
    9. Espere a que se apruebe. (Tiempo de espera: de 1 a 45 minutos, según la calcomanía)
    10. Si no se completa en 45 minutos, su calcomanía no ha sido aprobada.

    Ahora genera un ladrillo

    En ese ladrillo, pega tu calcomanía. Ahora, en Explorer, ahora hay una calcomanía debajo de donde dice Parte.

    En Propiedades puedes ver que tiene un ID. Copie y pegue la identificación en TextureID en su espada. De acuerdo, tenemos un artículo con aspecto de espada que puedes recoger, pero ¿qué pasa con los guiones?

    Inserta un "Script" y "LocalScript" en tu espada (no en el mango)

    Empecemos por este:

    Script (cambiar el nombre de "Sword Script")

    juego: servicio ("RunService") daño local = 5 - Edite esto para determinar el daño de su espada cuando se acerque a una persona que la tenga equipada. ~ Color local slash_damage = 10: edítelo para determinar el daño de su espada cuando haga clic en una persona. ~ Colorlocal lunge_damage = 30: edite esto para determinar el daño de su espada cuando haga clic en ella suficientes veces para apuñalar con ella en el aire.

    ¡Felicitaciones, acabas de hacer una espada!


    Cómo hacer botones de generación de mensajes personalizados

    A estas alturas, debería tener muchos engranajes geniales en su espacio de trabajo. ¿Quiere crear un botón en el que se pueda hacer clic para que suene profesional? ¿Para hacerte lucir TAN mucho más impresionante? Bueno, si lo hace, ¡solo lea esto!


    Estoy seguro de que en algún momento usaste o viste a alguien usar el administrador del juego, ¿verdad? h / o m /? Lo siento, no hay l / que haga un texto bajo. H no es alto y M no es medio.

    En realidad, se refieren a Mensaje y Sugerencia. Como ReloRelo le advirtió al principio, probablemente sepa que esto es 5/5 en la escala de dureza, lo que significa que es probable que sepa cómo hacer uno de esos modelos con una pista en la parte superior que dice "El creador de este mapa gracias (nombre de usuario) para ... "o" Bienvenido a (lugar) por (nombre de usuario) "o algo así.

    Son fáciles de hacer y no quiero perder el tiempo con 1/5 en la escala de dureza.

    Pasos:

    1. Genera un ladrillo
    2. Agregar un detector de clics
    3. ¡Prepárate para los guiones que aparecen en el botón!


    debounce = false function onClicked () if debounce == false thendebounce = truelocal m = Instance.new ("Mensaje") m.Parent = game.Workspacem.Text = "Mi texto aquí" —Su texto va en "" s. espera (5) - En cinco segundos tu texto desaparece m.Text = "Mi texto aquí también." - Después de 5 segundos cambia a este texto.wait (180) - En tres minutos tu texto desaparece m.Text = "Con suerte a estas alturas ya ... "espera (5) m.Text =" ... ¿obtienes el patrón? " --Espero que lo entiendas. No es difícil de aprender una vez que tenga el script. Espere (5) - ¡Disfrute! ~ Color m: Remove () debounce = script de finalización falso.Parent.ClickDetector.MouseClick: connect (onClicked)

    Tutorial 5: Paleta

    A84hg aquí, y este es mi primer tutorial sobre cómo hacer una paleta personalizada. Esto es el 3. (Medio).

    El principio

    En primer lugar, inserte una herramienta y arrástrela al StarterPack. Nómbralo como quieras. (Llana de calidad A84hg) por ejemplo.

    Luego, agregue dos scripts en la herramienta. Nombre uno "BrickCleanup" y el otro "WallMaker".

    BrickCleanup

    Para el script BrickCleanup, agregue esto:

    espera (24)

    script.Parent.Parent = nulo

    WallMaker

    Para el guión de WallMaker, agregue esto:

    wallHeight local = 4

    BrickSpeed ​​local = 0.04

    wallWidth local = 12


    Herramienta local = script.Parent



    - coloca un ladrillo en la posición y devuelve la posición de la esquina opuesta del ladrillo

    función placeBrick (cf, pos, color)

    ladrillo local = Instance.new ("Part")

    brick.BrickColor = color

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

    script.Parent.BrickCleanup: Clone (). Parent = brick: adjunte el script de limpieza a este bloque

    brick.BrickCleanup.Disabled = falso

    brick.Parent = juego.Workspace

    ladrillo: MakeJoints ()

    retorno ladrillo, pos + ladrillo.

    final


    función buildWall (cf)


    color local = BrickColor.random ()

    ladrillos locales = {}


    afirmar (wallWidth> 0)

    local y = 0

    mientras que y <wallHeight hacer

    local p

    local x = -wallWidth / 2

    mientras que x <wallWidth / 2 lo hacen

    ladrillo local

    ladrillo, p = lugarLadrillo (cf, Vector3.new (x, y, 0), color)

    x = px

    table.insert (ladrillos, ladrillo)

    espera (brickSpeed)

    final

    y = p.y

    final


    devolver ladrillos


    final



    función snap (v)

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

    si vx> 0 entonces

    return Vector3.new (1,0,0)

    más

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

    final

    más

    si vz> 0 entonces

    return Vector3.new (0,0,1)

    más

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

    final

    final

    final



    Tool.Enabled = verdadero

    función onActivated ()


    si no es Tool.Enabled, entonces

    retorno

    final


    Tool.Enabled = falso


    carácter local = Tool.Parent;

    humanoide local = personaje.

    si humanoide == nulo entonces

    print ("Humanoide no encontrado")

    retorno

    final


    targetPos local = humanoid.TargetPoint

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

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


    Tool.Handle.BuildSound: play ()


    buildWall (cf)


    espera (5)


    Tool.Enabled = verdadero

    final


    script.Parent.Activated: conectar (onActivated)

    ¿Pensaste que era eso? ¡Bien, estás equivocado! Luego, agregue un LocalScript, insértelo en la herramienta y asígnele el nombre Local Gui.

    local Gui

    Agregue esto en el LS:

    Herramienta local = script.Parent;

    enabled = true

    función onButton1Down (mouse)

    si no está habilitado entonces

    retorno

    final

    habilitado = falso

    mouse.Icon = "rbxasset: // texturas ArrowFarCursor.png"

    espera (5)

    mouse.Icon = "rbxasset: // texturas ArrowCursor.png"

    enabled = true

    final

    función onEquippedLocal (mouse)

    si mouse == nil entonces

    print ("Mouse no encontrado")

    retorno

    final

    mouse.Icon = "rbxasset: // texturas ArrowCursor.png"

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

    final

    Tool.Equipped: conectar (onEquippedLocal)

    Mango, sonidos y malla

    Luego, inserte un ladrillo y asígnele el nombre Mango.

    Inserte un sonido en el mango y asígnele el nombre BuildSound. Puede darle cualquier ID de sonido, pero se recomienda bass.wav. Luego, dale una malla. Déle el ID de malla rbxasset: //fonts/trowel.mesh y el ID de textura rbxasset: //textures/TrowelTexture.png

    Pruébelo y habrá terminado de hacer su propia paleta.

    Este es A84hg, saliendo.

    Tutorial 6: Bomba de tiempo

    Bueno, hola. Soy A84hg, de vuelta con otro tutorial para equipo personalizado. En esta ocasión, ¡os traemos la TIMEBOMB! ¡KABOOM! Dificultad: 3 (media)

    El principio

    Inserte una herramienta y arrástrela al StarterPack. ¡Nómbralo como quieras, como UNA BOMBA!

    Luego inserte dos guiones. Nombra una bomba y nombra la otra PlantBomb.

    Bomba

    Pon esto en Bomb.

    updateInterval local = .4

    currentColor local = 1

    colores locales = {26, 21}

    ticksound local = Instance.new ("Sonido")

    ticksound.SoundId = "rbxasset: // sonidos clickfast.wav"

    ticksound.Parent = script.Parent

    actualización de función ()

    updateInterval = updateInterval * .9

    script.Parent.BrickColor = BrickColor.new (colores [color actual])

    currentColor = currentColor + 1

    if (currentColor> 2) then currentColor = 1 end

    final

    función blowUp ()

    sonido local = Instance.new ("Sonido")

    sound.SoundId = "rbxasset: // sonidos Rocket shot.wav"

    sound.Parent = script.Parent

    sonido.Volumen = 1

    sonido: reproducir ()

    explosion = Instance.new ("Explosion")

    explosión.BlastRadius = 12

    explosion.BlastPressure = 1000000

    creador local = script.Parent: findFirstChild ("creador")

    si el creador ~ = nulo entonces

    explosion.Hit: connect (función (parte, distancia) enPlayerBlownUp (parte, distancia, creador) final)

    final

    explosion.Position = script.Parent.Position

    explosion.Parent = juego.Workspace

    script.Parent.Transparency = 1

    final

    función onPlayerBlownUp (parte, distancia, creador)

    si part.Name == "Head" entonces

    humanoide local = parte, padre, humanoide

    tagHumanoide (humanoide, creador)

    final

    final

    etiqueta de funciónHumanoide (humanoide, creador)

    si el creador ~ = nulo entonces

    new_tag local = creador: clon ()

    new_tag.Parent = humanoide

    final

    final

    función untagHumanoide (humanoide)

    si humanoide ~ = nulo entonces

    etiqueta local = humanoid: findFirstChild ("creador")

    if tag ~ = nil entonces

    tag.Parent = nil

    final

    final

    final

    while updateInterval> .1 hacer

    esperar (updateInterval)

    actualizar()

    ticksound: play ()

    final

    explotar()

    espera (2)

    script.Parent: remove ()

    PlantBomb

    Pon esto en PlantBomb:

    local bombScript = script.Parent.Bomb

    Herramienta local = script.Parent

    local Bomb = Tool.Handle

    función planta ()

    local bomb2 = Instance.new ("Part")

    local vCharacter = Tool.Parent

    vPlayer local = game.Players: playerFromCharacter (vCharacter)

    spawnPos local = Bomb.Position

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

    bomb2.Size = Vector3.new (2,2,2)

    bomb2.BrickColor = BrickColor.new (21)

    bomb2.Shape = 0

    bomb2.BottomSurface = 0

    bomb2.TopSurface = 0

    bomb2.Reflectance = 1

    bomb2.Name = "TimeBomb"

    bomb2.Locked = true

    local creator_tag = Instance.new ("ObjectValue")

    creator_tag.Value = vPlayer

    creator_tag.Name = "creador"

    creator_tag.Parent = bomb2

    bomb2.Parent = juego.Workspace

    new_script local = bombScript: clone ()

    new_script.Disabled = falso

    new_script.Parent = bomb2

    final

    Tool.Enabled = verdadero

    función onActivated ()

    si no es Tool.Enabled, entonces

    retorno

    final

    Tool.Enabled = falso

    carácter local = Tool.Parent;

    humanoide local = personaje.

    si humanoide == nulo entonces

    print ("Humanoide no encontrado")

    retorno

    final

    targetPos local = humanoid.TargetPoint

    Bomba.Transparencia = 1.0

    planta()

    espera (6)

    Bomba.Transparencia = 0.0

    Tool.Enabled = verdadero

    final

    función onUnequipped ()

    final

    Tool.Activated: conectar (onActivated)

    Tool.Unequipped: conectar (onUnequipped)

    local Gui

    Luego, como en el tutorial de Trowel, agregue un LocalScript y asígnele el nombre Local Gui.

    Pon esto en Local Gui:

    Herramienta local = script.Parent;

    local habilitado = verdadero

    función onButton1Down (mouse)

    si no está habilitado entonces

    retorno

    final

    habilitado = falso

    mouse.Icon = "rbxasset: // texturas ArrowFarCursor.png"

    espera (6)

    mouse.Icon = "rbxasset: // texturas ArrowCursor.png"

    enabled = true

    final

    función onEquippedLocal (mouse)

    si mouse == nil entonces

    print ("Mouse no encontrado")

    retorno

    final

    mouse.Icon = "rbxasset: // texturas ArrowCursor.png"

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

    final

    Tool.Equipped: conectar (onEquippedLocal)

    Luego, inserte un ladrillo de 2x2x2 y asígnele el nombre Mango.

    Dale la malla rbxasset: //fonts/timebomb.mesh con la textura rbxasset: //textures/bombtex.png

    Además, dele al mango un TouchTransmitter y asígnele el nombre TouchInterest.

    Pruébelo y listo.

    Este es A84hg, saliendo.

    Añade un comentario de Tutorial: Cómo hacer equipo personalizado
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.