Lua превращение дерева в Roblox - PullRequest
0 голосов
/ 24 апреля 2020

Итак, я сделал дерево в Роблокс, которое вы можете сломать, и часть исчезнет. Я хочу, чтобы он восстановился примерно через минуту. Вот сценарий. Как бы я это сделал? Я вижу, что у многих людей есть регенерирующие кнопки, и я хотел бы создать дерево, которое регенерирует за 60 секунд, я знаю, что вам нужно что-то делать с wait (60) и некоторыми позиционными вещами, но у меня нет подсказки после этого

local Plr = game.Players.LocalPlayer
local Char = Plr.Character or Plr.CharacterAdded:Wait()
local Mouse = Plr:GetMouse()
local CouldGetWood = true

function ShowProgress(tree)
 if tree == "Tree" then
  for i = 0,1,.01 do
   WC.BG.Bar.Progress.Size = UDim2.new(i,0,1,0)
   wait()
  end
 elseif tree == "HardTree" then
  for i = 0,1,.005 do
   WC.BG.Bar.Progress.Size = UDim2.new(i,0,1,0)
   wait()
  end
 end
end

Mouse.Button1Down:connect(function()
 if Mouse.Target ~= nil and Mouse.Target.Parent.Name == "Tree" and CouldGetWood == true then
  local Wood = Mouse.Target
  if (Wood.Position - Char.UpperTorso.Position).magnitude < 10 then
   CouldGetWood = false
   WC = Plr.PlayerGui.WoodChopper
   WC.BG.Visible = true
   Char.Humanoid.WalkSpeed = 0
   ShowProgress ("Tree")
   Char.Humanoid.WalkSpeed = 16
   for i,v in pairs(Wood.Parent.Leaves:GetChildren())do
    if v:IsA("Part") then
     v.Anchored = false
    end
   end
   Wood:Destroy()
   WC.BG.Visible = false
   CouldGetWood = true
  end
 end

 if Mouse.Target ~= nil and Mouse.Target.Parent.Name == "HardTree" and CouldGetWood == true then
  local Wood = Mouse.Target
  if (Wood.Position - Char.Torso.Position).magnitude < 10 then
   CouldGetWood= false
   WC = Plr.PlayerGui.WoodChopper
   WC.BG.Visible = true
   Char.Humanoid.WalkSpeed = 0
   ShowProgress ("HardTree")
   Char.Humanoid.WalkSpeed = 16
   for i,v in pairs(Wood.Parent.Leaves:GetChildren())do
    if v:IsA("Part") then
     v.Anchored = false
    end
   end
   Wood:Destroy()
   WC.BG.Visible = false
   CouldGetWood = true
  end
 end
end)```






1 Ответ

0 голосов
/ 26 апреля 2020

Вот дешевая вещь, которую вы можете сделать: прежде чем начать рубить ветку, сделайте ее резервную копию. Затем, после того, как вы уничтожите оригинал, просто подождите несколько секунд и поместите резервную копию на место.

Итак, в вашем скрипте после

if (Wood.Position - Char.UpperTorso.Position).magnitude < 10 then

вы добавляете:

local tree = Mouse.Target.Parent
local backupWood = Wood:clone()

это создаст резервную копию этого дерева и его дочерних частей. Затем, после уничтожения дерева в конце функции, вы добавляете:

spawn(function()
    wait(60)
    backupWood.Parent = tree        
end)

Это создаст новый поток, так что ваш поток обработчика мыши может продолжиться. В этом потоке, после ожидания в течение 60 секунд, вы подключаете свою резервную часть к части дерева, устанавливая свойство Parent, делая его видимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...