null
nil
-
0
1
true
0
0
-1.5
0
0
1
1
0
0
0
1
0
ClassicSword
rbxasset://Textures\Sword128.png
true
-
false
Swordscript
r = game:service("RunService")
local damage = 5
local slash_damage = 10
local lunge_damage = 30
sword = script.Parent.Handle
Tool = script.Parent
local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .7
local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .6
local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1
function blow(hit)
if (hit.Parent == nil) then return end -- happens when bullet hits sword
local humanoid = hit.Parent:findFirstChild("Humanoid")
local vCharacter = Tool.Parent
local vPlayer = game.Players:playerFromCharacter(vCharacter)
local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
if humanoid~=nil and humanoid ~= hum and hum ~= nil then
-- final check, make sure sword is in-hand
local right_arm = vCharacter:FindFirstChild("Right Arm")
if (right_arm ~= nil) then
local joint = right_arm:FindFirstChild("RightGrip")
if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
tagHumanoid(humanoid, vPlayer)
humanoid.Health = humanoid.Health - damage
wait(1)
untagHumanoid(humanoid)
end
end
end
end
function tagHumanoid(humanoid, player)
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = player
creator_tag.Name = "creator"
creator_tag.Parent = humanoid
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
function attack()
damage = slash_damage
SlashSound:play()
local anim = Instance.new("StringValue")
anim.Name = "toolanim"
anim.Value = "Slash"
anim.Parent = Tool
end
function lunge()
damage = lunge_damage
LungeSound:play()
local anim = Instance.new("StringValue")
anim.Name = "toolanim"
anim.Value = "Lunge"
anim.Parent = Tool
force = Instance.new("BodyVelocity")
force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
force.Parent = Tool.Parent.Torso
wait(.25)
swordOut()
wait(.25)
force.Parent = nil
wait(.5)
swordUp()
damage = slash_damage
end
function swordUp()
Tool.GripForward = Vector3.new(-1,0,0)
Tool.GripRight = Vector3.new(0,1,0)
Tool.GripUp = Vector3.new(0,0,1)
end
function swordOut()
Tool.GripForward = Vector3.new(0,0,1)
Tool.GripRight = Vector3.new(0,-1,0)
Tool.GripUp = Vector3.new(-1,0,0)
end
function swordAcross()
-- parry
end
Tool.Enabled = true
local last_attack = 0
function onActivated()
if not Tool.Enabled then
return
end
Tool.Enabled = false
local character = Tool.Parent;
local humanoid = character.Humanoid
if humanoid == nil then
print("Humanoid not found")
return
end
t = r.Stepped:wait()
if (t - last_attack < .2) then
lunge()
else
attack()
end
last_attack = t
--wait(.5)
Tool.Enabled = true
end
function onEquipped()
UnsheathSound:play()
end
script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)
connection = sword.Touched:connect(blow)
true
-
false
-0.5
0.5
0
0
-0.5
0.5
0
0
199
-212
12.8000002
-444.5
0
0
-1
0
1
-0
1
0
-0
true
true
0
true
true
false
0.5
2
0.300000012
-0.5
0.5
0
0
-0.5
0.5
0
0
false
Handle
0.400000006
-0.5
0.5
0
0
0
0
0
-0.5
0.5
0
0
0
0
0
0
true
1
1
0.800000012
4
-
rbxasset://fonts/sword.mesh
5
Mesh
1
1
1
rbxasset://textures/SwordTexture.png
1
1
1
true
-
false
Local Gui
local Tool = script.Parent;
enabled = true
function onButton1Down(mouse)
if not enabled then
return
end
enabled = false
mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
wait(.5)
mouse.Icon = "rbxasset://textures\\GunCursor.png"
enabled = true
end
function onEquippedLocal(mouse)
if mouse == nil then
print("Mouse not found")
return
end
mouse.Icon = "rbxasset://textures\\GunCursor.png"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end
Tool.Equipped:connect(onEquippedLocal)
true
-
0
Wall
rbxasset://Textures\Wall.png
true
-
false
WallScript
wallWait = 5
function snap(v)
if math.abs(v.x)>math.abs(v.z) then
if v.x>0 then
return Vector3.new(1,0,0)
else
return Vector3.new(-1,0,0)
end
else
if v.z>0 then
return Vector3.new(0,0,1)
else
return Vector3.new(0,0,-1)
end
end
end
enabled = true
function onButton1Down(mouse)
if not enabled then
return
end
enabled = false
mouse.Icon = "rbxasset://textures\\ArrowFarCursor.png"
sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds\\bass.wav"
sound.Parent = script.Parent
sound:play()
-- find the best cf
local cf = mouse.Hit
local lookAt = snap(cf.lookVector)
cf = CFrame.new(cf.p, cf.p + lookAt)
-- send a wall request to the game (possibly to another peer in multiplayer)
local newWall = Instance.new("CFrameValue")
newWall.Name = "NewWall"
newWall.Value = cf
newWall.Parent = game.Workspace.WallBuilder
wait(wallWait)
mouse.Icon = "rbxasset://textures\\ArrowCursor.png"
enabled = true
end
function onSelected(mouse)
print("Wall selected")
mouse.Icon = "rbxasset://textures\\ArrowCursor.png"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end
script.Parent.Selected:connect(onSelected)
true
-
0
1
true
0
0
0
1
0
0
0
0
-1
-0
1
0
ClassicTimebomb
rbxasset://Textures/Bomb.png
true
-
false
-0.5
0.5
0
0
-0.5
0.5
0
0
194
-16.3574963
4.5989399
-62.6951408
-0.999967933
-0.00797146745
-6.34748039e-006
-3.72146801e-012
-0.000796274282
0.999999642
-0.00797146931
0.999967694
0.000796248845
true
true
0
true
true
false
0.5
0
0.300000012
-0.5
0.5
0
0
-0.5
0.5
0
0
false
Handle
0
-0.5
0.5
0
0
0
0
0
-0.5
0.5
0
0
0
0
0
0
true
0
2
2
2
-
rbxasset://fonts/timebomb.mesh
5
Mesh
1
1
1
rbxasset://textures/bombtex.png
1
1
1
true
-
false
PlantBomb
local bombScript = script.Parent.Bomb
local Tool = script.Parent
local Bomb = Tool.Handle
function plant()
local bomb2 = Instance.new("Part")
local vCharacter = Tool.Parent
local vPlayer = game.Players:playerFromCharacter(vCharacter)
local spawnPos = 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 = "creator"
creator_tag.Parent = bomb2
bomb2.Parent = game.Workspace
local new_script = bombScript:clone()
new_script.Disabled = false
new_script.Parent = bomb2
end
Tool.Enabled = true
function onActivated()
if not Tool.Enabled then
return
end
Tool.Enabled = false
local character = Tool.Parent;
local humanoid = character.Humanoid
if humanoid == nil then
print("Humanoid not found")
return
end
local targetPos = humanoid.TargetPoint
Bomb.Transparency = 1.0
plant()
wait(6)
Bomb.Transparency = 0.0
Tool.Enabled = true
end
function onUnequipped()
end
Tool.Activated:connect(onActivated)
Tool.Unequipped:connect(onUnequipped)
true
-
true
Bomb
local updateInterval = .4
local currentColor = 1
local colors = {26, 21}
local ticksound = Instance.new("Sound")
ticksound.SoundId = "rbxasset://sounds\\clickfast.wav"
ticksound.Parent = script.Parent
function update()
updateInterval = updateInterval * .9
script.Parent.BrickColor = BrickColor.new(colors[currentColor])
currentColor = currentColor + 1
if (currentColor > 2) then currentColor = 1 end
end
function blowUp()
local sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"
sound.Parent = script.Parent
sound.Volume = 1
sound:play()
explosion = Instance.new("Explosion")
explosion.BlastRadius = 12
explosion.BlastPressure = 1000000 -- these are really wussy units
-- find instigator tag
local creator = script.Parent:findFirstChild("creator")
if creator ~= nil then
explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
end
explosion.Position = script.Parent.Position
explosion.Parent = game.Workspace
script.Parent.Transparency = 1
end
function onPlayerBlownUp(part, distance, creator)
if part.Name == "Head" then
local humanoid = part.Parent.Humanoid
tagHumanoid(humanoid, creator)
end
end
function tagHumanoid(humanoid, creator)
-- tag does not need to expire iff all explosions lethal
if creator ~= nil then
local new_tag = creator:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
while updateInterval > .1 do
wait(updateInterval)
update()
ticksound:play()
end
blowUp()
wait(2)
script.Parent:remove()
true
-
false
MouseIcon
local MOUSE_ICON = 'rbxasset://textures/GunCursor.png'
local RELOADING_ICON = 'rbxasset://textures/GunWaitCursor.png'
local Tool = script.Parent
local Mouse = nil
local function UpdateIcon()
if Mouse then
Mouse.Icon = Tool.Enabled and MOUSE_ICON or RELOADING_ICON
end
end
local function OnEquipped(mouse)
Mouse = mouse
UpdateIcon()
end
local function OnChanged(property)
if property == 'Enabled' then
UpdateIcon()
end
end
Tool.Equipped:connect(OnEquipped)
Tool.Changed:connect(OnChanged)
true
-
0
1
true
-1
-0.75
0.25
0
0
1
0
1
-0
-1
0
-0
RocketLauncher
rbxasset://Textures/Rocket.png
true
-
false
Explosion
-1
false
rbxasset://sounds/collide.wav
1
true
-
true
Swoosh
-1
false
rbxasset://sounds/Rocket whoosh 01.wav
0.699999988
true
-
false
-0.5
0.5
0
0
-0.5
0.5
0
0
199
4.5
2.79999995
-1
-0
0
1
-0
1
0
-1
0
0
true
true
0
true
true
false
0.5
2
0.300000012
-0.5
0.5
0
0
-0.5
0.5
0
0
false
Handle
0.400000006
-0.5
0.5
0
0
0
0
0
-0.5
0.5
0
0
0
0
0
0
true
1
4
0.800000012
1
-
rbxasset://../../../shareddata/fonts/12221651.mesh
5
Mesh
0.75
0.75
0.75
rbxasset://../../../shareddata/textures/12224070.png
1
1
1
true
-
false
Local Gui
local Tool = script.Parent;
enabled = true
function onButton1Down(mouse)
if not enabled then
return
end
enabled = false
mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
wait(7)
mouse.Icon = "rbxasset://textures\\GunCursor.png"
enabled = true
end
function onEquippedLocal(mouse)
if mouse == nil then
print("Mouse not found")
return
end
mouse.Icon = "rbxasset://textures\\GunCursor.png"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end
Tool.Equipped:connect(onEquippedLocal)
true
-
false
Server Launcher
local Rocket = Instance.new("Part")
local Tool = script.Parent
Rocket.Locked = true
Rocket.BackSurface = 3
Rocket.BottomSurface = 3
Rocket.FrontSurface = 3
Rocket.LeftSurface = 3
Rocket.RightSurface = 3
Rocket.TopSurface = 3
Rocket.Size = Vector3.new(1,1,4)
Rocket.BrickColor = BrickColor.new(23)
Tool.RocketScript:clone().Parent = Rocket
Tool.Explosion:clone().Parent = Rocket
Tool.Swoosh:clone().Parent = Rocket
function fire(vTarget)
local vCharacter = Tool.Parent;
local vHandle = Tool:findFirstChild("Handle")
if vHandle == nil then
print("Handle not found")
return
end
local dir = vTarget - vHandle.Position
dir = computeDirection(dir)
local missile = Rocket:clone()
local pos = vHandle.Position + (dir * 6)
--missile.Position = pos
missile.CFrame = CFrame.new(pos, pos + dir)
local creator_tag = Instance.new("ObjectValue")
local vPlayer = game.Players:playerFromCharacter(vCharacter)
if vPlayer == nil then
print("Player not found")
else
if (vPlayer.Neutral == false) then -- nice touch
missile.BrickColor = vPlayer.TeamColor
end
end
creator_tag.Value =vPlayer
creator_tag.Name = "creator"
creator_tag.Parent = missile
missile.RocketScript.Disabled = false
missile.Parent = game.Workspace
end
function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
Tool.Enabled = true
function onActivated()
if not Tool.Enabled then
return
end
Tool.Enabled = false
local character = Tool.Parent;
local humanoid = character.Humanoid
if humanoid == nil then
print("Humanoid not found")
return
end
local targetPos = humanoid.TargetPoint
fire(targetPos)
wait(7)
Tool.Enabled = true
end
script.Parent.Activated:connect(onActivated)
true
-
false
RocketScript
r = game:service("RunService")
shaft = script.Parent
position = shaft.Position
script.Parent.Explosion.PlayOnRemove = true -- play explosion sound when projectile removed from game
function fly()
direction = shaft.CFrame.lookVector
position = position + direction
error = position - shaft.Position
shaft.Velocity = 7*error
end
function blow()
swoosh:stop()
explosion = Instance.new("Explosion")
explosion.Position = shaft.Position
-- find instigator tag
local creator = script.Parent:findFirstChild("creator")
if creator ~= nil then
explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
end
explosion.Parent = game.Workspace
connection:disconnect()
wait(.1)
shaft:remove()
end
function onPlayerBlownUp(part, distance, creator)
if part.Name == "Head" then
local humanoid = part.Parent.Humanoid
tagHumanoid(humanoid, creator)
end
end
function tagHumanoid(humanoid, creator)
-- tag does not need to expire iff all explosions lethal
if creator ~= nil then
local new_tag = creator:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
t, s = r.Stepped:wait()
swoosh = script.Parent.Swoosh
swoosh:play()
d = t + 10.0 - s
connection = shaft.Touched:connect(blow)
while t < d do
fly()
t = r.Stepped:wait()
end
-- at max range
script.Parent.Explosion.PlayOnRemove = false
swoosh:stop()
shaft:remove()
true
-
0
Slingshot
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAALHRFWHRDcmVhdGlvbiBUaW1l
AFRodSAyMiBTZXAgMjAwNSAxMjo0MDozNyAtMDgwMLDISOYAAAAHdElNRQfWAwoAChW3nMNH
AAAACXBIWXMAAB7BAAAewQHDaVRTAAAABGdBTUEAALGPC/xhBQAAFzpJREFUeNrtXAmQXVWZ
/s5d39qvX+9Llk4HEoIQCFtYgoBjQMEFZcplHEWGUqumLIRxtGa0RkvKjalSq3QKN2TUKkBx
1AEHlWGXLQGUYAIJhGy95nX36+633/3Md24niNKEkLSh6cnf1fVe933v3nO+8///9/3nnnOB
o3bU5tqCqT/IsLFDHsxnxWvd2PlkYTAkg22fh5YYhegFpGVCRlfBMv/mZXEyDnTCKBiUcuoe
YPBhyNo4XD+LDdWVaJhrYuijAFiWyqFfT0MzIoxMFmHlW7B43Wmvy4EJdn0PWjgErVuHU98J
S7ZB6D+EH+6Wpt43a58O2NGwcJ2Mtj2EYHgP/HKIG55K4saHizBTnZiuOLh40XJ8KN+P9OQU
GpGLkekpRJaNtnNPx7nX/cvrCkR/7AHpb/0s7NV5RJkKdL8CdhT+1DD03HugifdDs056SZ+0
lzth5N8ixfZH4e18DlO7xvDL58v41q/LcGQKU8Up9BspfNzsQXJ0AoPFcYyXG5CBgKh7mL5n
Ix697vqDyiHzxbSJX0JPlSCyIYRXgpQGAq2BQPjQnLvonp+B43znJX162RCWe+6HPzKCiUIZ
1YaD236fh2s6yDNkg3oJF7X3odGoY7pWoovzokKD0GbGI/RDpPcW4WzaKGHODFp8PIziV8kf
waZEkq88LKG+r/MN/9AE885MO+W+4ZX8nK6+J7Hvu9HM2PM76msqjkT8uZlTGMJCo+RBThRR
eegJONufQ5uZhuMF8BMC7Ze8Be7SbiT7uvidCLpVgLPtapjLmhFF04jqbKsZgRjCduiFT7kw
+rZC7z4TBwVgVH9Ayg1fQXViChNTHIFsFzYNVJHNtGNqbBJLzAx66z6q7My057DP9Lwo2geU
AkFHcctmOP81wARMcPhDCNjxYOY4OxrK6AVwZiDWYkANzYiPKyCgey8cD9lU9V0Frqaupc6j
zqvrM+DFxwJ+1UStIDE54iOqTkHzQkgO3HQkYFo6mowEoh//HEZrBtGSDvitJehnjMJstqDl
bcBj6Ho6JCOrMiKQ39METzaj0bkZWWPZQQLoFiBLFdQ4EqWqj5JMwAsishQ7ROJooZcYVQdu
0kTC5jE/QEgvVGaaJoLIR2EiQPniT2LJ2Wv/6rkwmhqnY0YIyjU43/0pChvuR4NtqoYOB8Fg
PhPobM7BrgdocNiNNAd1xOP4hIgmXXjnVpHoUq7rIpyaQFQ7AUYwwfBtMLpsmMdOI7VsLTu3
/qWhP2v4BhKeU0GF4IVhAuMlgsefPsOErfwpaBD5CI5bZ+sFNHqcAk6nNyiPMdnowKMHcLSP
hGn5dqG1dIryzb/FyN2PoOC7GHdqaLAtxWoZEXtZKk2j4TgI6I2+y1RC5RAQQGMiCevWbp4l
i4DEIVreCCtzMcK6g4439sO6gj0+hQ5ifRq61nlwJBJhMeM/xTxg8ldDi+0gpwtcddH5+MK5
a9FRr5FkqjNgs5FRFMXhFYcY/1bh1L50MZpyuSMCoLJt135Lln99H4aniqi5AaNQoOZ5jAa2
ke8100AykaT0CgmiD93WoWKG4w9rohX+bVm2fTE99poYTOGrHMiQpjOZ2XNgWefNGkmzAmi3
ny1k+3H0JIlEwkQ7QzKUVeiZBP7u6ivx7e99FX3dadgpC27IsBYRIoZwxNGVbLHue+hZvQot
K/uOmJTJPL4V440GrGyOHmegHmjMXYpkTLgEUtFSsVxCOp1CUjMRMXdboRaHOCwD2q5+6Hs/
QkBWQTRqMHT2RTGdcgj9vJe97suycHLttTBH/xm5YBPKsobT+ppw1Q23YEehiFN7e3Hmv30M
4c4JbHtsCya3DlJ4BtBIm5HB0WcD9ZVLjhR2ePYbP5KFH/+SgAlUfQdlhmKtQSVAr0sZTDaB
AoEfZCw7lRpsgqyIL1TR0/AYOXQOLQOMtEIspybwJsiDJsEL4ddDmJnmVw+gkVwi3NIeOf3M
zyA33IYPZyKMlsdw4wNP4CZ9I/7hiafx9vNOx4kXrUVt3Wo0nh3FM/dvhFuPUEyZOP6Ky46Y
97WxG9MKDIamynMOo0HlYYPguYGPjJ1iygmQTWeo8VzmbIGAiYpvYDBNxUxfq8PfMQj9rFPp
DENIkRwV2/sBkQ/yrx5AZXZu6awgfO0b35C/+dnt6P2f59Cc3IyT33QccivyOP+CyzH8wCYs
vfbaOQcvcsbYS3beXvySc3tDzHu1SVQpEVT4WqEJj591XY+520ajVkN7tikOy2yaIc7INMNg
JnebJAkOuPA5AJu3Ui9dyhAuAB0Jhr1DJ0wg1FsODcCXs09ec03ciS/c/1U5/vDjeL4coSNl
oMtKofusk1G/9UYp8p0IlyxCZuVJhwWmXx6Q2P0LYMunIbt9uKW/lUJr5ei+g4n9kvjcMqjD
trMM23EyaYPvTWjMgUHDjeVMb64FZYJImJBK20gw1YQkE4MhLpmvBb1MyVJRd/kaQqsNEhkS
CMmHkUhvXnFokwmvZKed/1KN506MSX18HPKZJ6E9vAPBfXdIj8I7te68QwIy3PIfMCY3Qp7W
AbRSaDPHhRObINI7EDY4UOFFmPrhD9FG9m02HPzxdy7zlk5wbTIvw08JaTJqOpuBw8op0BUT
M18n0sxzWszQCkS6Ir1biXUHuqQWTDRBIynqqZ4Dtu+wAJzN7LaOF4BytmyS7l23I9m1GO5N
35a1ji60rH/XQQPpDt0pvTs/AbG6HVqSFYNGMrB4oJX6cnQvS8fvswe3IPu2MprPr0M6Lj0t
QOF3VK18r8GCbegkjJBkK+CzxJQa85ryxFQG0qN6YFhrSr9mAlYka+jNe3kt/m2RQKrTVB6d
RxbAF1vihJNjsJynHpfG0ACSA7vQ+P7XpXHSGgSJZiRXrzkgmOO/+RzyGXrdsZ08x92w1pwG
qSLLTkL2drACKVNqTLCTBFYjLDupT3VWHxqBEylVYSOdIBmwYA4pZVrbWxmiLOlSKXiuAyOf
jGvvSOlXx4PWLdHYdhOSSQJtWfDH6alNfQfso4YjYImTThfGJWTl894K0bME3oP3Qzx8J7zb
bpKT9/921lmbxtZbZKZRhNmbh0ioSjoF1JmvXDWpQAlsUri3pKCn99XYHrWdayGTOQaGMOJK
KcEQpRiJBb6m6ma+WomUqjehEUSlATVKH42eiU6Gcd84UPsdG6wmGEyYJByhnXHAvv1VPfAv
LXnMqhc8rvzjb8rkM39EtqMT7ne+JMOVq5G64O0vHK8/8X2WhlXITupJnSKdukzHWxBt3QG9
fwgyyUqIACkpIvkrZB7FwMXYkwWkCIpPcCxDIzsHyOQ1YmXxl7JFeRzDWU0w2BFLNP5fsbu7
dDOSGUHvo+i2SPiUP2buOIb3MQeMkiPigbNZ04euErjiE3BbO6EHHO0d21D52uelf+8dsvr4
DdI0Kkh25GAsaqKGo0e4Elrz+bDP+IFwqp9AOHYq5GiDLMMcp2fhj2yD1rUG5hRFr5FBkqRg
RybFNMObckYLWHBolCQERs3oJJIJCAKoS4/aL0Lqg6zdC08w7OmF7R1wy5MIxTmv2I/XDEBl
ZleP0E49Gw5ZOhqbRCKVQ2PDb6AP3o5EWIc4fSWlSAmaq6akyJBkUGWZvotFNH0KwgeL7LTy
RILI2j1z7AeQfMelCOiRtpWO5woNlmk286bFmt5z3ZgwDMH3vg9fkpX7n4W4fBDCVtSidOQ0
GT4Dq4kDa176in04oiE8m6UWL4tDpLbhIWk++SAyZ5MEvDqw8lhIsmA41ED43G4YHSqb6X9q
eGMvolKZLkB5U2X+6mhBoudMrP36O8TIz++S0zfcSBIgwVD/Wckk6uU6OvsXMTdMI2C5abe1
QbxhGNHyp5ljV1Coa2RfXjffjcAhw0erYWX6X1ExvOYA7rf0mevE2H3/Ks3dDyO7YhlDlLJl
C/WYbIXZkyMB+H8GoBbRUxIUum05+KOD0NpWMR3OSKiey9bHr8O33iHNXQNApcycRi9meaY3
N8Pv4Dk/8E5RuX29TOSbmEPrCMsU2pJe3r6IIT/Bz57PM9z8iu2eNwAqK2/dCDuYhr13CHiw
Ab1pGSQ1X3BSEsbu7SQK/08ANoYQki2lTR3HcA+1Y15yvt73XHJADxL1AYj+LOtEliFujezb
yfw4Ac9JwWw+/qDa/JrmwBdb4IzLUN03YZ7T1FS+mrtcNADrInpiux8zpUQt/qxXGZJRvcLE
xj/UjQsyq24dXIf3mzd4h7SbmGczvKZPWZPrpDalB6oJ4dTJMO11ByX45w2ARqJdNJ96Jcy2
U2Cc1A/jH5dDriFgTQ2GK+WGmvl0p2Y+TBb1mSdFQk05NeIZcU1vOjjgqg9Kv/4jGQXfhDih
E1Fehzc5TBJheKcS8KcqHMQ3HXy7X2vgXmydZ7xfuJN7pD/5IIyx/4Xs6oMnamq+kwAGMMOx
mQ+y8leMSVE3cysu9oMDO4wz9StphrcjCv+dwtpH0FQi9qyZKbg1lphhYEGEHLDmN8BIXXrQ
5ea88cD9ZrcsFclj/l5Uns5A7EiTQdtYagUwktRzXmGm0WoimXIk0tQdQC9eIiG94qznC53n
ZH3HZdIIvwyZdVGjh1XHmvDJ9z6FPUPMr6OluLpRQhs+X+2rX1V755UHvtj8tpNR3LYRbe3U
cz0M0Ty9pLI5PiY0g9VCE0efSEasc9VUlL/lpeCN/aeUhY8j0ZFEpdqLZKUHP/neI/Ek6vp3
vg2dCZ/5dBB6FwW5X+M511MvvrpZo3nngfut85yPCo/9CkYaTOws1zI2deGzCPwBKQybSb+b
dawZA6juBcPf9GffL22+Worgp9Ca0hh5Po2poXZGexLtixbj3Zcfh3e+txOJ3BSLFlYkDOQw
bIWw3vqq2zlvAVRWjrrhFymsWTVENtmyUaf3LBERKxekeil+lbMYBCkBrT7OPPZEPDFRe/JS
aeQ2oRS2458uuxfDdM6nHtuEkaF78GZiNL3zaVaAo0wPAayuHrjPD8C0zoWZWP+q5yznNYDd
6z4Ir0HvY4LX1MyTTurY+5F40YKjd8XT7ajTTXNpBJMMwfINcJ69Umod0yg30vjix+5AV38n
xkoVDA4IfOqaIh591EWlQcaNmFsD5tGgAqPvOEqiyw+pjfM2BypL9p6I4sYEchN0rMUCspk6
beoJiPw9sBavQzjyXWiTlB1Lc9Dz9MrJx2D09MIPO/DMXaNYvtKEYA89FHHR29bhwne7aMkW
1FwDldBe6BkeNOjB4gJo1jGHNGM+rz0w1Xm8QMcpcAdYttEFtXwO4QTr49pPoLEkE0Y/ZNGL
b36Dta1TKeK/r9+JnZtSeOyBAaw+6wTc/aSNHuq7Xds3Y+/2Tfj1zU9j96ZhmEnKFlEikjYr
kI8cchvnNYDK0svXo15MMyEylA0fRm8b5PNPIqzeBBzzPoT1FKKKj3CqgGTfacg22dh471Z8
6ivHsXMFXHqBjdAWaDI1PHbnENZekMSJ62xE3k5In8CL8yiJug75xte8B7Dl5HcLkepDsCuA
COy4chB5ypjRnwKtu6F1vwvaWA16ogWSHnX2hRlMVgrknZOxatWp6E6HyOeSeOYPw7jsih4s
W5NA5A8gGisgKoxSTBcPq32vi1Wkpefuldofr0NqjQ/RoiZRIwQFViJpNRvdBv/5TUiu6I9n
ZxCY+NGX92Ci0sCpaxfhkbsHkOlN4OOfWUMiImjFAkSpys/xswkORksf0PEDaMaqQ8LidQGg
sonHb5CZ2m0wTmDlAIKoirCSqkJCli+CFYRkxZJi3ZzD7+8bQL2axZJVSbS06ki11KgZK0wD
LN9YiWgEWao6urWVpVsWMvk5GPaFCxtAZbU/XC+N6HaYx4ZkUQUKQ9qtI5iYpJ7r5ycakA4F
d6jTu9g1u0qZUqRGpJYs1vkKtbKTxwheewui5hw9r4l0fz1fly58AJVNbfiWzGQ3QOsZiicU
ZOjBHZ2EkUjDEB4ikojQfP5fVTAh/HEPVi2K17FF1DQaGTnKN0E0d/FzrH+1S/i/jx4yDq87
AJXVBh6RZulWar8tkOpeRqBmZlit+A7ZNYjvvqHOUK8zvB21rJiealETZttJQB3xzHSEKgE+
G8K+ErrV8/8LQGVBdVh6m78CTXsKMiVgZANKCrUEmeE6PQ1ID0JnXjSboJspIL+cQnwp6K4I
vRJ2PXs6Vp7zxcPu/7yuRA7Y8Exv3PmJJ78kmzMPsJKoQo45EMNkWdbGkuWGMPKsk3NAtou5
kN5Z3IrJ6U784ldvwiPbVs5NO15rIA7X2tZ8Vngjt8gwuBnhc0+TkA1EauV+OoF4VWXNR+BM
4amtWewYOwcPbFiE6aCDJDQ3Evh1D6Ayq+f9InS2y/HMN5FtPA4rUIsZWvD89jRuvrOOMfdE
TMse1L0cDD0NM2Ug3LfG+3BtQQCoTE8cK7Zs3ibf99EvwnOoV0yGr96MRCpLkmhmiGeYD4Va
9gLEJVx6Tq4770u5V2N2KoOWziUEqhWeWnFlGPFStjDuZgQ98uOdTvFuJ00/7OspWzAeqCyk
hCmXK3B8PwYoIgt7Db43fehBxM7aCCK1VpBCPArn5JoLygPDyEMo6Gl6SP7w4UYs+SwL6n68
2s/nKdAEj0URi5FgTq65oABMJtPI5VogybCaWozE6kMGHrWi2ggp4gUIao+dYK+DYG42ky4o
APv7e0VfXz8BU7lPj2ebrbQZ7+OL4p2i+zc3RgjmxgEXFoBjYxXpeW78PmHo8fZateoqYFUS
yAg+Q3ym+NIZ5tGcXHNBAdhoNDA5OQm1X9YLgxg0b98uUrUVDfv28imPTCaTc3LNBQXg0qUd
oq21DT5ZGPvyXrwMWO13U5u21WqGKJzZl2zMjQBZUAAq6+5qhUZwZBDGu7ZFpJSgDtu0ZjZk
q625lg5XbdWdA1twADY1mTO74lXntBnvE/v2vKs1+7qhdiVpalXwnNiCA1BF78zueREv3FJh
q8I1rj/U6v2ghiCso7Pr4JbDvZItPACdELbaKR8TBknEd0kkXvzMBkppGNKmyDaxcvlREpnV
MhnrTw+qoIxR3hj4ZORwRvjNiBiB3u7mw7rOfltwAKq8p1asKg9U+4JV+CZTyVhIx9vWWROr
5zksW947N9d7rTs816bK3dAn7xIsTe1h5d/q4RJqo6Jaj6qZBJWMfOKK5jm5nbHwAFTPZdF8
aGJm6a8UJss2N97ib5hhHN7qqT+jo+6cFMMLDkBdN+Idmcx6sZzRQwKnWwRRMB9KAhzGjwao
Vo6WcrOaEDKuQHTNjre5Wgk1caDmBwmp2tav5Eyknujhzcn1Fh6AJBH1ECC1FUI9k8vd91wv
lRsDJWfUFBdhTGfMObneggMwYAmnnoeg9gGr577ImJERT3HNzOKrKkSgrzd1lERm75HaXK22
QMj48W+qBollTeSx/vURRg34XgODo9WjJDKbjQxPxeWbuieidKBi3CB041JOMxRmEj4JZmB4
ak6ut6AA3LN7WA4OFOLHlWhCPW0ugohM5ZRQwCk5o/Kgzt9zTlt8NIT/0pb29YoL37iIDEwd
GD9WgSDKOonDj/WhFabQmizhw2sHUN17cE/pfSVbULc1lZ11vIHaWhd3PDSBYpCnplbb+iVW
9Qu8eXUSfekdWHz8CZjy52Zd1et2ddZsNjpekOOT05Bbfoau8l1wGi4MYYOVG1JWCCuVwN5w
FZ5teiN6e1Yg19qG3t7ew8JgQXmgWhvoV6vYEa7AQ0UHa9qn0WxMQKdwnjCyeHpARzV9AlpT
Fmquh4TrHvY1F5QHKtu+fbscGRnB+PgkypUGGm6JRKJKPBNWMo3mpgRy+Tzy+WY0Z3PIZDJo
b28/ZBwWlAcqy+17amYmbcUPHHMbbfEDItVUlsUKJcUwTqazaLGbYNjWYYGnbMF54H4bHByU
6janukO3/wG5aq7QsiwkEon4tubhgqdswQK43wqFgtwPoJqdUROscwHcUZsj+z+Uuy8IP5LS
SwAAAABJRU5ErkJggg==
true
-
false
-0.5
0.5
0
0
-0.5
0.5
0
0
194
0
6.4000001
-8
1
0
0
0
1
0
0
0
1
true
true
0
true
true
false
0.5
0
0.300000012
-0.5
0.5
0
0
-0.5
0.5
0
0
false
Pellet
0
-0.5
0.5
0
0
0
0
0
-0.5
0.5
0
0
0
0
0
0
true
0
1
1
1
-
true
PelletScript
pellet = script.Parent
damage = 8
function onTouched(hit)
humanoid = hit.Parent:findFirstChild("Humanoid")
if humanoid~=nil then
tagHumanoid(humanoid)
humanoid.Health = humanoid.Health - damage
wait(2)
untagHumanoid(humanoid)
else
damage = damage / 2
if damage < 0.1 then
connection:disconnect()
end
end
end
function tagHumanoid(humanoid)
-- todo: make tag expire
local tag = pellet:findFirstChild("creator")
if tag ~= nil then
local new_tag = tag:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
connection = pellet.Touched:connect(onTouched)
r = game:service("RunService")
t, s = r.Stepped:wait()
d = t + 2.0 - s
while t < d do
t = r.Stepped:wait()
end
pellet.Parent = nil
true
-
false
Slingshot
print("Slingshot script loaded")
bin = script.Parent
VELOCITY = 85 -- constant
function fire(mouse_pos)
sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds\\Rubber band sling shot.wav"
sound.Parent = script.Parent
sound:play()
-- find player's head pos
local head = game.Players.LocalPlayer.Character:findFirstChild("Head")
if head == nil then return end
local dir = mouse_pos - head.Position
dir = computeDirection(dir)
local launch = head.Position + 5 * dir
local delta = mouse_pos - launch
local dy = delta.y
local new_delta = Vector3.new(delta.x, 0, delta.z)
delta = new_delta
local dx = delta.magnitude
local unit_delta = delta.unit
-- acceleration due to gravity in RBX units
local g = (-9.81 * 20)
local theta = computeLaunchAngle( dx, dy, g)
local vy = math.sin(theta)
local xz = math.cos(theta)
local vx = unit_delta.x * xz
local vz = unit_delta.z * xz
local missile = script.Parent.Pellet:clone()
missile.Position = launch
missile.Velocity = Vector3.new(vx,vy,vz) * VELOCITY
print("Pos X:", launch.x, "Y:", launch.y, "Z:", launch.z)
print("Vel X:", vx, "Y:", vy, "Z:", vz)
missile.PelletScript.Disabled = false
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = game.Players.LocalPlayer
creator_tag.Name = "creator"
creator_tag.Parent = missile
missile.Parent = game.Workspace
end
function computeLaunchAngle(dx,dy,grav)
-- arcane
-- http://en.wikipedia.org/wiki/Trajectory_of_a_projectile
local g = math.abs(grav)
local inRoot = (VELOCITY*VELOCITY*VELOCITY*VELOCITY) - (g * ((g*dx*dx) + (2*dy*VELOCITY*VELOCITY)))
if inRoot <= 0 then
return .25 * math.pi
end
local root = math.sqrt(inRoot)
local inATan1 = ((VELOCITY*VELOCITY) + root) / (g*dx)
local inATan2 = ((VELOCITY*VELOCITY) - root) / (g*dx)
local answer1 = math.atan(inATan1)
local answer2 = math.atan(inATan2)
if answer1 < answer2 then return answer1 end
return answer2
end
function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
enabled = true
function onButton1Down(mouse)
if not enabled then
return
end
enabled = false
mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
-- find the best cf
--local cf = mouse.Hit
--local v = cf.lookVector
local pos = mouse.Hit.p
fire(pos)
wait(.2)
mouse.Icon = "rbxasset://textures\\GunCursor.png"
enabled = true
end
function onSelected(mouse)
print("slingshot selected")
mouse.Icon = "rbxasset://textures\\GunCursor.png"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end
bin.Selected:connect(onSelected)
true
-
0
Superball
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
AABJRU5ErkJggg==
true
-
false
CannonScript
print("Cannon script loaded")
bin = script.Parent
function fire(v)
sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds\\short spring sound.wav"
sound.Parent = script.Parent
sound:play()
local missile = Instance.new("Part")
local spawnPos = game.Players.LocalPlayer.Character.PrimaryPart.Position
spawnPos = spawnPos + (v * 5)
missile.Position = spawnPos
missile.Size = Vector3.new(2,2,2)
missile.Velocity = v * 200
missile.BrickColor = BrickColor.random() -- BrickColor.new(26)
missile.Shape = 0
missile.BottomSurface = 0
missile.TopSurface = 0
missile.Name = "Cannon Shot"
missile.Elasticity = 1
missile.Reflectance = .2
missile.Friction = 0
local new_script = script.Parent.CannonBall:clone()
new_script.Disabled = false
new_script.Parent = missile
local creator_tag = Instance.new("ObjectValue")
creator_tag.Value = game.Players.LocalPlayer
creator_tag.Name = "creator"
creator_tag.Parent = missile
missile.Parent = game.Workspace
end
enabled = true
function onButton1Down(mouse)
if not enabled then
return
end
enabled = false
mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
-- find the best cf
local cf = mouse.Hit
local v = cf.lookVector
fire(v)
wait(2)
mouse.Icon = "rbxasset://textures\\GunCursor.png"
enabled = true
end
function onSelected(mouse)
print("cannon selected")
mouse.Icon = "rbxasset://textures\\GunCursor.png"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end
bin.Selected:connect(onSelected)
true
-
true
CannonBall
ball = script.Parent
damage = 25
function onTouched(hit)
local humanoid = hit.Parent:findFirstChild("Humanoid")
if humanoid~=nil then
tagHumanoid(humanoid)
humanoid.Health = humanoid.Health - damage
wait(2)
untagHumanoid(humanoid)
connection:disconnect()
else
damage = damage / 2
if damage < 0.1 then
connection:disconnect()
end
end
end
function tagHumanoid(humanoid)
-- todo: make tag expire
local tag = ball:findFirstChild("creator")
if tag ~= nil then
local new_tag = tag:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
connection = ball.Touched:connect(onTouched)
r = game:service("RunService")
t, s = r.Stepped:wait()
d = t + 10.0 - s
while t < d do
t = r.Stepped:wait()
end
ball.Parent = nil
true