Tower Paradise
Part count ~4k
P Sick me thinks
my first time making npcs. i think this is a success
A Discord Bot.
I would post the Discord Bot Invite link here but I don’t know if im allowed to.
ok thanks
I will try find a way to turn on shadows but kids still like it
Hello fello developers!
My 1 year anniversary of development! (I JUST REALISED THAT IT WAS ACTUALLY ON JULY!!! 1 month too early)
First actual rendered animation as well!
First time also creating a watermark, (not that great but it will do.)
Whoops I was 1 month too early, It was actually meant to be July! so I made this to celebrate.
I haven’t posted in awhile due to my laptop having problems and it had to get wiped out and I had no backup files. Luckily they were able get some of my stuff but allot of it is corrupted and my blender files are still being fixed. (All of them since I first started using blender a year ago.) Sadly this includes my best one yet which I finally finished creating. Any way there is no time to be moping around, I should instead be focusing on getting backup files this time and working towards a good new productive learning year.
Here is also a photo I found on my phone of one of my blender files which I made a month ago before it got corrupted. (sorry for the bad quality)
Been messing around with scripts:
Original - Decent, but not the best: 128 lines
local nameplate = script.Parent:WaitForChild("Name Plate")
local lv = script.Parent.LV
local EnemyName = script.Parent.EnemyName
local AI = script.Parent.AI.Value
local Anchor = script.Parent.Anchor.Value
local caught = false
local humanoid = script.Parent.Parent.Humanoid
local HopTrack = humanoid:LoadAnimation(humanoid.Hop)
local random = Random.new()
local debounce = true
local target = false
repeat wait(0) until HopTrack.Length ~= 0
nameplate.TextLabel.Text = EnemyName.Value .. " Lv. " .. lv.Value
if AI == "Passive" then
while not caught do
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
humanoid.MoveToFinished:Wait()
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
humanoid.MoveToFinished:Wait()
end
wait(0)
end
elseif AI == "Angry" then
wait(5)
script.Parent.Touched:Connect(function(object)
if object.Parent == target and debounce then
debounce = false
object.Parent.Humanoid.Health -= (script.Parent.LV.Value * 5 - (script.Parent.LV.Value/5))
wait(2)
debounce = true
end
end)
while not caught do
local targetdistance = 40
target = nil
for i, v in pairs(game.Players:GetPlayers()) do
local character = v.Character
character:WaitForChild("HumanoidRootPart")
if (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude <= targetdistance then
target = character
targetdistance = (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude
print(v.Name)
end
wait(0)
end
if target then
print("target")
humanoid:MoveTo(target.HumanoidRootPart.Position, target.Humanoid)
if (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 20 then
script.Parent.Parent.Humanoid.WalkSpeed = 32
repeat
humanoid:MoveTo(target.HumanoidRootPart.Position, target.Humanoid)
wait(0)
until (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude < 10 or (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 30
end
script.Parent.Parent.Humanoid.WalkSpeed = 16
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 60 then
humanoid:MoveTo(Anchor.Position,Anchor)
humanoid.MoveToFinished:Wait()
target = nil
end
else
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
humanoid.MoveToFinished:Wait()
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
humanoid.MoveToFinished:Wait()
end
wait(0)
end
wait(0)
end
elseif AI == "Scared" then
wait(5)
target = nil
while not caught do
local targetdistance = 40
target = nil
for i, v in pairs(game.Players:GetPlayers()) do
local character = v.Character
if (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude <= targetdistance then
target = character
targetdistance = (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude
print(v.Name)
end
wait(0)
end
if target then
print("target")
humanoid:MoveTo(target.HumanoidRootPart.CFrame.LookVector*-25, target.Humanoid)
if (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude < 20 then
script.Parent.Parent.Humanoid.WalkSpeed = 32
repeat
humanoid:MoveTo(target.HumanoidRootPart.CFrame.LookVector*-25, target.Humanoid)
wait(0)
until (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 20
end
script.Parent.Parent.Humanoid.WalkSpeed = 16
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 120 then
humanoid:MoveTo(Anchor.Position,Anchor)
script.Parent.Parent.Humanoid.WalkSpeed = 64
humanoid.MoveToFinished:Wait()
script.Parent.Parent.Humanoid.WalkSpeed = 16
target = nil
end
else
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
script.Parent.Parent.Humanoid.WalkSpeed = 64
humanoid:MoveTo(Anchor.Position,Anchor)
humanoid.MoveToFinished:Wait()
script.Parent.Parent.Humanoid.WalkSpeed = 16
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
humanoid.MoveToFinished:Wait()
end
wait(0)
end
wait(0)
end
end
V2 - Trash, Tried to use corutines: 98 lines
local nameplate = script.Parent:WaitForChild("Name Plate")
local lv = script.Parent.LV
local EnemyName = script.Parent.EnemyName
local AI = script.Parent.AI.Value
local Anchor = script.Parent.Anchor.Value
local caught = false
local humanoid = script.Parent.Parent.Humanoid
local HopTrack = humanoid:LoadAnimation(humanoid.Hop)
local random = Random.new()
local debounce = true
local target = false
local ready = false
repeat wait(0) until HopTrack.Length ~= 0
nameplate.TextLabel.Text = EnemyName.Value .. " Lv. " .. lv.Value
local function scan()
local targetdistance = 40
target = nil
print("scanstarted")
for i, v in pairs(game.Players:GetPlayers()) do
local character = v.character
print(v.Name)
character:WaitForChild("HumanoidRootPart")
if (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude <= targetdistance then
target = character
targetdistance = (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude
print(v.Name)
end
wait(0)
if target ~= nil then
ready = true
print(ready)
end
return 1
end
end
while true do
local scanCoro = coroutine.create(scan)
local sus = coroutine.resume(scanCoro)
print("Scan")
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
end
repeat wait(0) until humanoid.MoveToFinished or ready
repeat
distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
end
humanoid.MoveToFinished:Wait()
until ready
if target ~= nil then
if AI == "Scared" then
print("target")
humanoid:MoveTo(target.HumanoidRootPart.CFrame.LookVector*-25, target.Humanoid)
if (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude < 20 then
script.Parent.Parent.Humanoid.WalkSpeed = 32
repeat
humanoid:MoveTo(target.HumanoidRootPart.CFrame.LookVector*-25, target.Humanoid)
wait(0)
until (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 20
end
script.Parent.Parent.Humanoid.WalkSpeed = 16
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 120 then
humanoid:MoveTo(Anchor.Position,Anchor)
script.Parent.Parent.Humanoid.WalkSpeed = 64
humanoid.MoveToFinished:Wait()
script.Parent.Parent.Humanoid.WalkSpeed = 16
target = nil
end
end
if AI == "Angry" then
print("target")
humanoid:MoveTo(target.HumanoidRootPart.Position, target.Humanoid)
if (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 20 then
script.Parent.Parent.Humanoid.WalkSpeed = 32
repeat
humanoid:MoveTo(target.HumanoidRootPart.Position, target.Humanoid)
wait(0)
until (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude < 10 or (target.HumanoidRootPart.Position - script.Parent.Position).Magnitude > 30
end
script.Parent.Parent.Humanoid.WalkSpeed = 16
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 60 then
humanoid:MoveTo(Anchor.Position,Anchor)
humanoid.MoveToFinished:Wait()
target = nil
end
end
end
end
V3 - The best: 105 lines, but you don't get the whole code.
local nameplate = script.Parent:WaitForChild("Name Plate")
local lv = script.Parent.LV
local EnemyName = script.Parent.EnemyName
local AI = script.Parent.AI.Value
local Anchor = script.Parent.Anchor.Value
local humanoid = script.Parent.Parent.Humanoid
local random = Random.new()
local move = false
local target = false
while true do
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
end
wait(0)
humanoid.MoveToFinished:Connect(function()
move = true
print("true")
end)
for i, v in pairs(game.Players:GetPlayers()) do
local character = v.Character
target = false
repeat
character = v.Character
print("nil")
wait(0)
until character ~= nil
character:WaitForChild("HumanoidRootPart")
local targetdistance = 40
if (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude <= targetdistance then
target = character
targetdistance = (character.HumanoidRootPart.Position - script.Parent.Position).Magnitude
print(v.Name)
end
wait(0)
if move then
move = false
local distance = (Anchor.Position - script.Parent.Position).Magnitude
if distance >= 30 then
humanoid:MoveTo(Anchor.Position,Anchor)
else
humanoid:MoveTo(Vector3.new(Anchor.Position.X + random:NextNumber(-30,30), Anchor.Position.Y, Anchor.Position.Z + random:NextNumber(-30,30)))
end
end
Goal: add good attacks.
More progress on my infinite mining tech demo:
The world never needs resetting and its still performant, even if the world has millions of blocks. X/Z limit of 166,666, depth limit of ~13,000
Biggest server I’ve so far taken a screenshot of:
So when can we expect a full-length movie animated in Roblox Studio? I wouldn’t mind if my character was the hero.
https://cdn.discordapp.com/attachments/662155900479471637/981993786915844127/Comp_2.mp4
VR brutal doom roblox concept
lol. I’m not sure. I’ve got other projects in the works that I currently want to finish plus I’ve got a bunch of people asking me to finally put out a tutorial for cel shading in Roblox. Besides, the current animation tools that I’m working with right now aren’t as efficient as more professional software such as blender or C4D. While it isn’t impossible it would be highly inconvenient to do so.
It was a joke anyway, although it would be very cool if someone actually did do it.
Progress (Previous post linked below)