Close
    Search Search

    Tutorial: como fazer equipamentos personalizados

    Página do tutorial; este artigo é um tutorial avançado.Todos os tutoriais · Tutoriais de script

    Nota: este tutorial mostra como fazer engrenagens personalizadas. Há muitos scripts e construções, então se você é um iniciante, fique longe.

    De qualquer forma, este é o tutorial de Relorelo84 (Dronian) sobre como fazer seu próprio equipamento personalizado. Em primeiro lugar, mostrarei como fazer um jetpack de qualquer coisa (até mesmo a cabeça de um novato, por que não?). Há uma classificação de quão difícil é o tutorial, em uma escala de 5.



    1. Muito fácil
    2. fácil
    3. Médio
    4. Difícil
    5. Muito difícil

    Isso também inclui os tutoriais de ColorfulBrendon (ColorfulBrendonROBLOX) e A84hg, então espero que gostem da colaboração e se divirtam criando equipamentos como jetpacks, espadas e muito mais!

    Conteúdo

    Tutorial 1: Jetpack

    Você já viu o Jetpack Experimental Ultra-Secreto do Exército dos EUA em modelos grátis? Se sim, você gostaria de ter um jetpack semelhante a esse em sua casa, mas é muito famoso por roubar modelos grátis? Bem, aqui está como fazer um. Este tutorial avalia 4 (Difícil).



    Parte 1: Fazendo o jetpack real

    Primeiro, vá para Inserir e selecione Objeto. Uma janela pop-up aparecerá, com muitas coisas para inserir. Role para a direita até ver a opção de inserir uma ferramenta. Clique. Ele deve aparecer no StarterPack. Caso contrário, arraste-o para o StarterPack. Selecione-o e renomeie-o de acordo com o que for apropriado. Em seguida, coloque um tijolo na ferramenta e renomeie-o como "Alça" sem aspas. As possibilidades do seu Jetpack feito à mão são francamente infinitas; A cabeça de um noob ou convidado, um objeto de malha ou mesmo um chapéu. Certifique-se de que não está ancorado, ou você ficará preso no chão ao testá-lo. Agora, clique no nome do seu jetpack. Volte para a janela Objetos novamente. Adicione quatro sons dentro do Handle (não os adicione à ferramenta, ou você bagunçará tudo). Renomeie-os como EngineFail, InitialThrust, LowFuelWarning e Thrusting.

    PARTE 2: Os sons do jetpack

    Adicione outro objeto à ferramenta desta vez; um NumberValue. Faça o nome CurrFuel. Na barra que diz Valor, coloque qualquer tipo de combustível de sua preferência. Por exemplo, vou colocar 20000 combustível (não coloque vírgulas!). Agora, é hora de adicionar os sons ao seu jetpack. Coloque estes códigos para as quatro IDs de som do som:

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

    Testar vai provar que está MUITO inacabado. Bem, precisamos adicionar mais duas coisas ao nosso jetpack personalizado; a GUI para o combustível e o script que reúne tudo.

    PARTE 3: tempo GUI

    Há dois objetos GUI no jetpack que você precisa adicionar; paralisação e FuelGui. Em sua FERRAMENTA Jetpack, adicione uma Animação. Nomeie-o como "paralisação" sem as aspas. No AnimationId, coloque "f5c060f01391b53f42d43c28d722cfab" sem as aspas. Uma interface de usuário para baixo, um para ir.



    Adicione um ScreenGui e renomeie-o como FuelGui. Isso é crucial, porque mostra quanto combustível você tem. No FuelGui, coloque um Frame e um ImageLabel. NÃO RENOMEIE ESTES. Coloque essas estatísticas no Frame:

    • BackgroundColor3: 255; 255; 255
    • BorderColor3: 0; 0; 0
    • BorderSizePixel: 0
    • Posição: {0.900000036, 0}, {0.200000003, 0}
    • Tamanho: {0, 40}, {0, 300}

    Você terminou o primeiro, agora para o segundo.

    • BackgroundColor3: 255; 255; 255
    • Transparência de fundo: 1
    • BorderColor3: 0; 0; 0
    • BorderSizePixel: 0
    • Imagem: http://www.roblox.com/asset/?id=30559074
    • Posição: {0.900000036, 0}, {0.200000003, 0}
    • Tamanho: {0, 40}, {0, 300}

    Testando novamente, ainda está quebrado! Bem, isso é porque temos uma última coisa a fazer. Precisamos colocar o código que mantém tudo junto.

    PARTE 4: O roteiro

    Ok, aqui vem um monte de código. Lembre-se de que maxFuel local deve ser igual a CurrFuel. Faça um LocalScript e coloque-o.

    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


    Teste-o e funcione perfeitamente! Verifique meu segundo tutorial, onde mostrarei como fazer seu próprio Bloxy Cola.


    Tutorial 2: Bloxy Cola

    Este tutorial está classificado em 2 (fácil).

    Etapa 1: Fazendo o Bloxy Cola

    Vá em Inserir, selecione Objeto e clique em Ferramenta. Uma ferramenta deve aparecer. Arraste-o para o StarterPack e nomeie-o como quiser. Por exemplo, vou chamar o meu de Shedletsky Cola. Adicione um tijolo / cabeça / malha 1x1 à ferramenta e nomeie-a como Handle. Certifique-se de que não está ancorado.

    Etapa 2: sons

    Agora você tem o controle pronto, mas agora é hora de adicionar os sons. Vá para Inserir, selecione Objeto e faça dois sons. Nomeie um DrinkSound e o outro OpenSound, mas coloque-os na alça do Bloxy Cola. Nos SoundIDs, coloque-os para os sons;

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

    Agora, aqui vem a parte final; o script.

    Etapa 3: o script

    Insira um script na ferramenta e nomeie-o BloxyColaScript. Coloque isso no script;

    Ferramenta local = script.Parent; enabled = true function onActivated () se não estiver ativado, então retorne 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 = Ferramenta. Pai: 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) enabled = true end function onEquipped () Tool.Handle.OpenSound: play () end script.Parent.Activated: connect (onActivated) script.Parent.Equipped: connect (onEquipped)

    Teste-o e você acaba de fazer seu próprio Bloxy Cola personalizado! No próximo tutorial, você aprenderá como fazer uma das engrenagens mais avançadas de todos os tempos; As Aventuras de Noob Boy: Parte 1.

    Tutorial 3: Noob Boy Parte 1

    Este tutorial é classificado como 5 (muito difícil).

    Etapa 1: fazer o console

    Insira uma ferramenta e chame-a como quiser. Agora, adicione um tijolo 1x1 chamado Handle à ferramenta, mas certifique-se de que não esteja ancorado. Agora é hora de adicionar quatro sons.

    Etapa 2: adicionar os quatro sons

    Na alça, adicione quatro sons; Falha, salto, prêmio e música. Para os SoundIds, coloque-os;

    • Falha: http://www.roblox.com/asset/?id=32202382
    • Jump: http://www.roblox.com/asset/?id=32201677
    • Prêmio: http://www.roblox.com/asset/?id=32201701
    • Música: http://www.roblox.com/asset/?id=32200781

    Adicionamos os sons, mas o tutorial está longe de terminar.

    Etapa 3: o script

    Você pode estar se perguntando; Por que adicionar o script agora? Bem, é melhor fazer isso primeiro porque o script é realmente mais fácil do que adicionar as GUIs! Faça um LocalScript e coloque-o;

    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 adiante, em seguida, player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward [1] walkCounter = 1 outro player.Image = "http://www.roblox.com/asset/?id=" ..

    

    Achou isso difícil? Oh cara, espere até ver as GUIs!

    Etapa 4: GameGui e ScoreFrame.

    Adicione um ScreenGui e nomeie-o GameGui. Em seguida, adicione um Frame e chame-o de ScoreFrame. No ScoreFrame, adicione um ImageLabel (não altere o nome) e um TextLabel. Altere o TextLabel para Score. Para ScoreFrame, aqui estão as estatísticas alteradas.

    • BackgroundColor3: 51, 102, 255
    • Transparência de fundo: 1
    • Posição: {0.5, -100}, {0.5, 150}
    • Tamanho: {0, 200}, {0, 50}
    • ZIndex: 2

    Para ImageLabel:

    • BackgroundColor3: 51; 102; 255
    • Transparência de fundo: 1
    • Imagem: http://www.roblox.com/asset/?id=31736392
    • Posição: {0, 6}, {0, 0}
    • Tamanho: {0, 130}, {0, 50}
    • ZIndex: 2

    E para Pontuação:

    • BackgroundColor3: 0; 255; 255
    • Transparência de fundo: 1
    • BorderSizePixel: 0
    • Posição: {0, 130}, {0, 0}
    • Tamanho: {0, 70}, {0, 50}
    • ZIndex: 3

    Você achou que era difícil? Espere até adicionar Gabinete e todos os seus filhos.

    (ADICIONANDO O DESCANSO DEPOIS)


    Tutorial 4: Fazendo uma espada

    Este é o tutorial de ColorfulBrendon (: ColorfulBrendonROBLOX) sobre como fazer sua própria espada. Talvez um dia seja publicado como um catálogo!


    Comece gerando um tijolo normal. Nomeie-o como "Identificador" e redimensione-o para como você deseja. Em seguida, vá para "Espaço de Trabalho" na janela com Explorer e Propriedades, pois essas duas janelas serão necessárias para realizar sua tarefa, e uma vez que Espaço de Trabalho for selecionado, vá em "Inserir" e selecione Objeto. Depois disso, você precisa selecionar Ferramenta. Chame-o de Espada com Propriedades e no Explorer, arraste seu item agora denominado Alça para o seu item agora denominado Espada. Você pode renomear a espada para o que desejar, no entanto, o identificador é importante. Agora, os designers de jogos do ROBLOX estão tentando excluir todos os possíveis TouchInterest Creator. Então, vá para Modelos Livres e obtenha uma ferramenta de construção básica da criação dos Administradores. A ferramenta de arrastar é básica. Abra o "+" na ferramenta Arrastar, selecione "TouchInterest", clique em "Copiar" e depois em "Colar" no "Cabo" da sua espada. Em Handle, insira um SpecialMesh. É assim que você faz as aparências da cabeça, ou como fazer para que você possa fazer uma malha livremente. Copie e cole em sua malha


    rbxasset: //fonts/sword.mesh

    Agora tudo que você precisa fazer é texturizar! A malha de espada BASIC é este ID

    rbxasset: //textures/SwordTexture.png

    Vou mostrar como fica em uma foto.

    Tutorial: como fazer equipamentos personalizados Salve-o em seu computador e edite-o com um programa de edição de imagens. Você pode ver o editor, vou deixar toda a imagem branca para fazer um "Lightheart"

    Tutorial: como fazer equipamentos personalizadosfrente e verso do cabo, a lâmina da espada, o cabo superior, todos os detalhes e desenhos do cabo, etc.

    O "Darkheart" é famoso. Tudo o que é, seria preto. Então, na minha imagem, estou tornando tudo branco para um "Lightheart". Tutorial: como fazer equipamentos personalizadosVocê não pode ver a imagem por causa disso, é branca. Agora, para terminar esta seção do processo de fabricação da espada, devo mostrar a você como fazer sua nova textura existir.

    Faça o upload para seus decalques fazendo o seguinte

    1. Vá para Meu ROBLOX
    2. Ir ao perfil
    3. Ir para as coisas
    4. Ir para decalques
    5. Clique em Criar
    6. Clique em Escolher Arquivo
    7. Selecione a foto desejada
    8. Clique em Criar decalque
    9. Aguarde até que seja aprovado. (Tempo de espera: 1-45 minutos dependendo do decalque)
    10. Se não for concluído em 45 minutos, seu decalque não foi aprovado.

    Agora gere um Brick

    Nesse tijolo, cole seu decalque. Agora, no Explorer, há um decalque embaixo de onde está escrito Parte.

    Em Propriedades você pode ver que tem um ID. Copie e cole o ID no TextureID em sua espada. Ok, então temos um item que parece uma espada que você pode pegar, mas e os scripts?

    Insira um "Script" e "LocalScript" em sua espada (não o cabo)

    Vamos começar com este:

    Script (renomear "Sword Script")

    jogo: serviço ("RunService") dano local = 5 - Edite isto para determinar o dano de sua espada quando você caminha até uma pessoa com ela equipada. ~ Color local slash_damage = 10 — Edite para determinar o dano de sua espada quando você clica em uma pessoa. ~ Colorlocal lunge_damage = 30 — Edite para determinar o dano de sua espada quando você clica nela o suficiente para acertá-la no ar.

    Parabéns, você acabou de fazer uma espada!


    Como fazer botões personalizados de geração de mensagens

    Agora você deve ter muitas engrenagens excelentes em seu espaço de trabalho. Deseja criar um botão clicável para parecer profissional para acompanhá-lo? Para fazer você parecer TÃO muito mais impressionante? Bem, se você fizer isso, apenas leia isto!


    Tenho certeza de que alguma vez você usou ou viu alguém usar o administrador do jogo, certo? h / ou m /? Desculpe, não há l / que faça um texto baixo. H não é alto e M não é médio.

    Na verdade, eles significam Mensagem e Dica. Como ReloRelo avisou no início, você provavelmente sabe que é 5/5 na escala de Dureza, o que significa que provavelmente sabe fazer um desses modelos com uma dica no topo dizendo "O Criador deste Mapa, obrigado (nome de usuário) para ... "ou" Bem-vindo a (local) por (nome de usuário) "ou algo parecido.

    São fáceis de fazer e não quero perder seu tempo com 1/5 na escala de dureza.

    Passos:

    1. Gerar um tijolo
    2. Adicionar um detector de cliques
    3. Prepare-se para os scripts que vão no botão!


    debounce = false function onClicked () if debounce == false thendebounce = truelocal m = Instance.new ("Message") m.Parent = game.Workspacem.Text = "Meu texto aqui" —Seu texto vai nos "" s. aguarde (5) - Em cinco segundos seu texto desaparece.Text = "Meu texto aqui também." - Após 5 segundos ele mudou para este texto.wait (180) --Em três minutos seu texto desapareceu.Text = "Esperançosamente agora você ... "espere (5) m.Text =" ... entendeu o padrão? " --Eu espero que você entenda. Não é difícil aprender depois de ter o script.wait (5) - Divirta-se! ~ Cor m: Remove () debounce = false endend script.Parent.ClickDetector.MouseClick: conectar (onClicked)

    Tutorial 5: espátula

    A84hg aqui, e este é meu primeiro tutorial sobre como fazer uma espátula personalizada. Este é o 3. (Médio).

    O início

    Em primeiro lugar, insira uma ferramenta e arraste-a para o StarterPack. Nomeie como quiser. (Espátula de qualidade A84hg) por exemplo.

    Em seguida, adicione dois scripts à ferramenta. Nomeie um como "BrickCleanup" e o outro como "WallMaker".

    BrickCleanup

    Para o script BrickCleanup, adicione este:

    espere (24)

    script.Parent.Parent = nil

    WallMaker

    Para o script do WallMaker, adicione este:

    wallHeight local = 4

    brickSpeed ​​local = 0.04

    wallWidth local = 12


    Ferramenta local = script.Parent



    - coloca um tijolo na posição e retorna a posição do canto oposto do tijolo

    função placeBrick (cf, pos, color)

    tijolo local = Instance.new ("Parte")

    brick.BrickColor = color

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

    script.Parent.BrickCleanup: Clone (). Parent = tijolo - anexar script de limpeza a este tijolo

    brick.BrickCleanup.Disabled = false

    brick.Parent = game.Workspace

    tijolo: MakeJoints ()

    tijolo de retorno, pos + tijolo. Tamanho

    final


    função buildWall (cf)


    cor local = BrickColor.random ()

    tijolos locais = {}


    assert (wallWidth> 0)

    local y = 0

    enquanto y <wallHeight faz

    local p

    local x = -wallWidth / 2

    enquanto x <wallWidth / 2 faz

    tijolo local

    tijolo, p = lugarBrick (cf, Vector3.new (x, y, 0), cor)

    x = px

    table.insert (tijolos, tijolos)

    esperar (brickSpeed)

    final

    y = py

    final


    tijolos de retorno


    final



    função snap (v)

    se math.abs (vx)> math.abs (vz) então

    se vx> 0 então

    return Vector3.new (1,0,0)

    outro

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

    final

    outro

    se vz> 0 então

    return Vector3.new (0,0,1)

    outro

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

    final

    final

    final



    Tool.Enabled = true

    função onActivated ()


    se não Tool.Enabled, então

    retorno

    final


    Tool.Enabled = false


    personagem local = Tool.Parent;

    humanóide local = caráter. Humanóide

    se humanóide == nulo, então

    imprimir ("Humanóide não 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)


    espere (5)


    Tool.Enabled = true

    final


    script.Parent.Activated: conectar (onActivated)

    Achou que era isso? Bem, você está errado! Em seguida, adicione um LocalScript, insira-o na ferramenta e chame-o de Local Gui.

    Gui local

    Adicione isso no LS:

    Ferramenta local = script.Parent;

    ativado = verdadeiro

    função onButton1Down (mouse)

    se não estiver habilitado, então

    retorno

    final

    ativado = falso

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

    espere (5)

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

    ativado = verdadeiro

    final

    função onEquippedLocal (mouse)

    se mouse == nulo, então

    imprimir ("Mouse não encontrado")

    retorno

    final

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

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

    final

    Tool.Equipped: connect (onEquippedLocal)

    Handle, Sounds, and Mesh

    Em seguida, insira um tijolo e nomeie-o como Handle.

    Insira um som no identificador e nomeie-o BuildSound. Você pode fornecer qualquer identificação de som, mas bass.wav é recomendado. Então, dê uma malha. Dê a ele o ID de malha rbxasset: //fonts/trowel.mesh e o ID de textura rbxasset: //textures/TrowelTexture.png

    Teste e você acabou de fazer sua própria espátula!

    Aqui é A84hg, assinando.

    Tutorial 6: Timebomb

    Bem, olá. Eu sou A84hg, de volta com outro tutorial para equipamento personalizado. Desta vez, trazemos para você o TIMEBOMB! KABOOM! Dificuldade: 3 (média)

    O início

    Insira uma ferramenta e arraste-a para o StarterPack. Nomeie como quiser, como A BOMB!

    Em seguida, insira dois scripts. Nomeie uma bomba e nomeie a outra PlantBomb.

    Bomba

    Coloque isso na bomba.

    updateInterval local = .4

    local currentColor = 1

    cores locais = {26, 21}

    local ticksound = Instance.new ("Som")

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

    ticksound.Parent = script.Parent

    atualização de função ()

    updateInterval = updateInterval * .9

    script.Parent.BrickColor = BrickColor.new (cores [currentColor])

    currentColor = currentColor + 1

    if (currentColor> 2) then currentColor = 1 end

    final

    função blowUp ()

    som local = Instance.new ("Som")

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

    sound.Parent = script.Parent

    sound.Volume = 1

    som: reproduzir ()

    explosão = Instância.new ("Explosão")

    explosão.BlastRadius = 12

    explosão.BlastPressure = 1000000

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

    se criador ~ = nulo, então

    explosão.Acesso: conectar (função (parte, distância) onPlayerBlownUp (parte, distância, criador) fim)

    final

    explosão.Posição = script.Parent.Position

    Explosão.Parent = game.Workspace

    script.Parent.Transparency = 1

    final

    função onPlayerBlownUp (parte, distância, criador)

    if part.Name == "Head" then

    humanóide local = parte.Parente.Humanóide

    tagHumanoid (humanóide, criador)

    final

    final

    tag de funçãoHumanoid (humanóide, criador)

    se criador ~ = nulo, então

    new_tag = criador local: clone ()

    new_tag.Parent = humanóide

    final

    final

    função untagHumanoid (humanóide)

    se humanóide ~ = nulo, então

    tag local = humanoid: findFirstChild ("criador")

    if tag ~ = nil então

    tag.Parent = nulo

    final

    final

    final

    enquanto updateInterval> .1 do

    esperar (updateInterval)

    atualizar ()

    ticksound: play ()

    final

    explodir()

    espere (2)

    script.Pai: remove ()

    PlantBomb

    Coloque isso no PlantBomb:

    bombScript local = script.Parent.Bomb

    Ferramenta local = script.Parent

    Bomba local = Tool.Handle

    planta de função ()

    bomb2 local = Instance.new ("Parte")

    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)

    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

    creator_tag local = Instance.new ("ObjectValue")

    creator_tag.Value = vPlayer

    creator_tag.Name = "criador"

    creator_tag.Parent = bomb2

    bomb2.Parent = game.Workspace

    new_script local = bombScript: clone ()

    new_script.Disabled = false

    new_script.Parent = bomb2

    final

    Tool.Enabled = true

    função onActivated ()

    se não Tool.Enabled, então

    retorno

    final

    Tool.Enabled = false

    personagem local = Tool.Parent;

    humanóide local = caráter. Humanóide

    se humanóide == nulo, então

    imprimir ("Humanóide não encontrado")

    retorno

    final

    targetPos local = humanoid.TargetPoint

    Bomb.Transparency = 1.0

    plantar()

    espere (6)

    Bomb.Transparency = 0.0

    Tool.Enabled = true

    final

    function onUnequipped ()

    final

    Tool.Activated: conectar (onActivated)

    Tool.Unequipped: connect (onUnequipped)

    Gui local

    Em seguida, como no tutorial Trowel, adicione um LocalScript e nomeie-o como Local Gui.

    Coloque isso no Gui Local:

    Ferramenta local = script.Parent;

    local habilitado = verdadeiro

    função onButton1Down (mouse)

    se não estiver habilitado, então

    retorno

    final

    ativado = falso

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

    espere (6)

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

    ativado = verdadeiro

    final

    função onEquippedLocal (mouse)

    se mouse == nulo, então

    imprimir ("Mouse não encontrado")

    retorno

    final

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

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

    final

    Tool.Equipped: connect (onEquippedLocal)

    Em seguida, insira um tijolo 2x2x2 e nomeie-o como Handle.

    Dê a ele a malha rbxasset: //fonts/timebomb.mesh com a textura rbxasset: //textures/bombtex.png

    Além disso, atribua ao identificador um TouchTransmitter e denomine-o TouchInterest.

    Teste e pronto!

    Aqui é A84hg, assinando.

    Adicione um comentário do Tutorial: como fazer equipamentos personalizados
    Comentário enviado com sucesso! Vamos analisá-lo nas próximas horas.