Dark Bending (Script Builder)

View previous topic View next topic Go down

Dark Bending (Script Builder)

Post  MrHavik on Fri Nov 02, 2012 5:32 pm

------made by oysi10------------------------------------------------------
-- Player declarations
local player = game.Players.YOURNAMEHERE
local char = player.Character

-- Body parts
local torso = char.Torso

-- Tool declarations
local mouseDown = false
local keysDown = {}

-- Earth bending declarations
local raisingEarth = false
local raisingTower = false
local wall = false
local groundAttack = false
local lastTower = nil
local disabled = {}
local frames = {}
local parts = {}
local Taunts = {"Foolish.", "Take that!", "Heh.", "You have no hope.", "Grow up.", "DIE!", "EARTH, SHOOT!", "GOOD LUCK STAYING ALIVE!", "You pitiful being."}
local raisechats = {"Earth, raise!", "Get Ready to DIE!", "Heheh..", "Time to die.","Fool.", "Worthless.","Muhahah.","Good Luck, You'll Need it.","TROLLFAIC"}

-- Main
function main(mouse)
while true do wait(1/30)
local look = CFrame.new(torso.Position, torso.Position + mouse.Hit.lookVector)

-- Reset parts
parts = {}

-- Get parts
for x = -20, 20, 10 do
for y = -20, 20, 10 do
for z = -30, -10, 10 do
local pos = look * Vector3.new(x, y, z)
getPartsInRegion3(
Region3.new(
pos + Vector3.new(1,1,1)*-9,
pos + Vector3.new(1,1,1)* 9
),
parts
)
end
end
end

-- Mouse down
if mouseDown then
-- Create dif and bodies
for _, part in pairs(parts) do
if part.Name == "Earth" and not disabled[part] then
if not frames[part] and part ~= lastTower then
frames[part] = look:toObjectSpace(part.CFrame)

part:ClearAllChildren()
part.Anchored = false

-- Create bodies
createBody("Position", part)
createBody("Gyro", part)
end
end
end

-- Move bodies
for part in pairs(frames) do
local bodyPos = part:FindFirstChild("BodyPosition")
local bodyGyr = part:FindFirstChild("BodyGyro")

-- Bodies exist
if bodyPos and bodyGyr then
local dif = look * frames[part]

bodyPos.position = dif.p
bodyGyr.cframe = dif
else
frames[part] = nil
end
end
else
for part in pairs(frames) do
if part.Name == "Earth" then
frames[part] = nil

part:ClearAllChildren()
end
end
end
end
end

-- On key change
function onKeyChange(mouse, key, state)
-- Raise earth
if key == "e" and state and not raisingEarth then
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
raisingEarth = true
while keysDown[key] do
local torsoY = torso.Position.y + 3
local pos = planeY(torso.Position, 0.4 - 4/2)
local dir = planeY(mouse.Hit.lookVector).unit
local frame = CFrame.new(pos, pos + dir) * CFrame.new(r(-10, 10), 0, r(-20, -5))

-- Create earth part
local part = createEarth(workspace)
part.Anchored = true
part.Size = Vector3.new(4, 4, 4)
disabled[part] = true

-- Raise earth
for i = 1, 4 do i = i/4
part.CFrame = frame * CFrame.new(0, (torsoY - frame.y)*i, 0)
wait(1/10000000)
if not part.Anchored then
break
end
end

disabled[part] = nil
part.Anchored = false

wait(1/100)
end
raisingEarth = false





elseif key == "c" and state and not raisingEarth then
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
raisingEarth = true
while keysDown[key] do
local torsoY = torso.Position.y + 3
local pos = planeY(torso.Position, 0.4 - 4/2)
local dir = planeY(mouse.Hit.lookVector).unit
local frame = CFrame.new(pos, pos + dir) * CFrame.new(r(-10, 10), 0, r(-20, -5))

-- Create earth part
local part = createEarth(workspace)
part.Anchored = true
part.Size = Vector3.new(2, 2, 2)
disabled[part] = true

-- Raise earth
for i = 1, 4 do i = i/4
part.CFrame = frame * CFrame.new(0, (torsoY - frame.y)*i, 0)
wait(1/10000000)
if not part.Anchored then
break
end
end

disabled[part] = nil
part.Anchored = false

wait(1/100)
end
raisingEarth = false



-- Push earth
elseif key == "f" and state then
game:GetService("Chat"):Chat(char.Head, Taunts[math.random(1,#Taunts)], Enum.ChatColor.Red)
for _, part in pairs(parts) do
if part.Name == "Earth" and part ~= lastTower then
part:ClearAllChildren()
part.Anchored = false

-- Add force
local bodyForce = createBody("Force", part)
bodyForce.force = mouse.Hit.lookVector*1.5e4 * part:GetMass()

game.Debris:AddItem(bodyForce, 1/30)

-- Disable part
disabled[part] = true
delay(1, function()
disabled[part] = nil
end)
end
end

-- Break earth
elseif key == "b" and state then
game:GetService("Chat"):Chat(char.Head, "Earth, BREAK!", Enum.ChatColor.Red)
for part in pairs(frames) do
if part.Size == Vector3.new(4, 4, 4) then
for x = -1, 2, 2 do
for y = -1, 2, 2 do
for z = -1, 1, 2 do
local oPart = createEarth(workspace)
oPart.Size = Vector3.new(2, 2, 2)
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
end
end
end
part:Destroy()
end

end

for part in pairs(frames) do
if part.Size == Vector3.new(25, 15, 25) then
for x = -3, 2, 2 do
for y = -3, 2, 2 do
for z = -3, 1, 2 do
local oPart = createEarth(workspace)
oPart.Size = Vector3.new(2, 2, 2)
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
end
end
end
part:Destroy()
end

end

for part in pairs(frames) do
if part.Size == Vector3.new(2, 2, 2) then
for x = -0.5, 2, 2 do
for y = -0.5, 2, 2 do
for z = -0.5, 1, 2 do
local oPart = createEarth(workspace)
oPart.Size = Vector3.new(1, 1, 1)
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
end
end
end
part:Destroy()
end

end




-- Raise tower
elseif key == "r" and state and not raisingTower then
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
raisingTower = true
lastTower = nil
if torso.Position.y - 5/2 < 20.4 then
local part = createEarth(workspace)
part.Anchored = true
disabled[part] = true

for i = 0, 20, 4 do
part.Size = Vector3.new(5, i, 5)
part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
wait(1/30)
end

lastTower = part

disabled[part] = nil
part.Anchored = false
end
raisingTower = false


-- Raise wall
elseif key == "t" and state and not wall then
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
wall = true
lastWall = nil
if torso.Position.y - 5/2 < 20.4 then
local part = createEarth(workspace)
part.Anchored = true
disabled[part] = true

for i = 0, 1, 20 do
part.Size = Vector3.new(25, 15, 25)
part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
wait(1/30)
end

lastWall = part

disabled[part] = nil
part.Anchored = false
end
wall = false

-- Ground attack
elseif key == "g" and state and not groundAttack then
game:GetService("Chat"):Chat(char.Head, Taunts[math.random(1,#Taunts)], Enum.ChatColor.Red)
groundAttack = true
delay(1, function()
groundAttack = false
end)

local dir = planeY(mouse.Hit.p - torso.Position).unit
local pos = planeY(torso.Position, 0.4 + 1) + dir*5

local ground = {}

delay(5, function()
for i = 1, 20 do
for _, part in pairs(ground) do
if part.Anchored then
part.CFrame = part.CFrame + Vector3.new(0, -1/7, 0)
end
end
wait(1/30)
end
for _, part in pairs(ground) do
if part.Anchored then
part:Destroy()
end
end
end)

for i = 1, 10 do
local hit, pos2 = rayCast(pos, dir*5, {char})

local part = createEarth(workspace)
part.Anchored = true
part.Size = Vector3.new(4, 4, 4)
part.CFrame = CFrame.new(pos2, pos2 + dir) * CFrame.Angles(math.rad(-50), 0, 0) + Vector3.new(0, -0, 0)

ground[#ground + 1] = part

-- Add force
if hit then
local mass = hit:GetMass()

-- Hit player
for _, oPlayer in pairs(game.Players:GetPlayers()) do
if oPlayer.Character and oPlayer.Character:FindFirstChild("Torso") and hit:IsDescendantOf(oPlayer.Character) then
hit = oPlayer.Character.Torso
mass = 20
end
end

if hit.Name ~= "Torso" then
hit:ClearAllChildren()
end
hit.Anchored = false

-- Add force
local bodyForce = createBody("Force", hit)
bodyForce.force = (dir + Vector3.new(0, 0.2, 0)).unit*1e4 * mass

game.Debris:AddItem(bodyForce, 1/30)
break
end

pos = pos2
wait(1/20)
end
end
end

--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---

-- Clear old tool
player.Backpack:ClearAllChildren()

-- Create tool
local tool = Instance.new("HopperBin")
tool.Parent = player.Backpack
tool.Name = "Dark Bending"

-- Tool selected
tool.Selected:connect(function(mouse)
mouse.Icon = "rbxasset://textures\\GunCursor.png"

-- Mouse events
mouse.Button1Down:connect(function()
mouseDown = true
end)
mouse.Button1Up:connect(function()
mouseDown = false
end)
mouse.KeyDown:connect(function(key)
keysDown[key:lower()] = true
onKeyChange(mouse, key:lower(), true)
end)
mouse.KeyUp:connect(function(key)
keysDown[key:lower()] = false
onKeyChange(mouse, key:lower(), false)
end)

-- Call main
main(mouse)
end)

--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---

-- Ray cast
function rayCast(pos, dir, ignore)
return workspace:FindPartOnRayWithIgnoreList(Ray.new(pos, dir), ignore)
end

-- Create body
function createBody(type, path)
local body = Instance.new("Body" .. type)
if type == "Gyro" then
body.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
elseif type ~= "Force" then
body.maxForce = Vector3.new(math.huge, math.huge, math.huge)
end
body.Parent = path
return body
end

-- Get parts in region 3
function getPartsInRegion3(region, parts)
repeat
local regParts = workspace:FindPartsInRegion3WithIgnoreList(region, parts, 100)
for i, part in pairs(regParts) do
parts[#parts + 1] = part
end
until #regParts < 100
end

-- Random
function r(min, max)
return math.random()*(max - min) + min
end

-- Plane y
function planeY(v, y)
return Vector3.new(v.x, y or 0, v.z)
end

-- Create earth
function createEarth(path)
local part = createPart("Earth", path)
part.BrickColor = BrickColor.new("Really black")
part.Material = "Slate"
m = Instance.new("Fire",part)
m.Heat = 10
part.Parent = path
return part
end

-- Create part
function createPart(name, path)
local part = Instance.new("Part")
part.FormFactor = "Symmetric"
part.BottomSurface = "Smooth"
part.TopSurface = "Smooth"
part.Size = Vector3.new(1, 1, 1)
part.Name = name
part.Parent = path
return part
end

MrHavik
Admin of HavikMotion
Admin of HavikMotion

Posts : 72
Join date : 2012-10-27
Age : 20
Location : Unknown

View user profile http://havikmotion.forumotion.com

Back to top Go down

Re: Dark Bending (Script Builder)

Post  Improve on Wed Nov 07, 2012 8:09 am

Alot Smile

Improve
Moderator
Moderator

Posts : 68
Join date : 2012-10-28
Location : Netherlands

View user profile

Back to top Go down

Its Pretty Usless

Post  DrHax88 on Sun May 25, 2014 2:24 am

Its Pretty Uselsss If U Know What I mean

DrHax88

Posts : 1
Join date : 2014-05-19

View user profile

Back to top Go down

Re: Dark Bending (Script Builder)

Post  Sponsored content


Sponsored content


Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum