So basically I'm trying to get it so that the player morphs into the certain player once the duplicated projectile is thrown. I tried doing it from an event but I don't know how to fire the event on the server/ it doesn't work when I try to get the player. Now I'm trying to morph the player on touch but it tells me that the Character isn't there?? Any ideas why!?
ServerScript in tool
local Tool = script.Parent
local Remote = Tool:WaitForChild("Remote")
local Handle = Tool:WaitForChild("Handle")
local Conf = script.Parent.Conf
local BrokenEggMesh = "http://www.roblox.com/asset/?id=1529081"
local FriendlyFire = false
local CanThrow = true
local AttackPower = 1
local AttackDamage = Conf.Damage.Value
local HeadShot = Conf.Headshot.Value
local AtackRechargeTime = 2
local AttackRecharge = 1/AtackRechargeTime
local AttackSpeed = 256
local Equipped = false
local Heartbeat = game:GetService("RunService").Heartbeat
local Knives = {}
--returns the wielding player of this tool
function getPlayer()
local char = Tool.Parent
return game:GetService("Players"):GetPlayerFromCharacter(char)
end
--helpfully checks a table for a specific value
function contains(t, v)
for _, val in pairs(t) do
if val == v then
return true
end
end
return false
end
--tags a human for the ROBLOX KO system
function tagHuman(human)
local tag = Instance.new("ObjectValue")
tag.Value = getPlayer()
tag.Name = "creator"
tag.Parent = human
game:GetService("Debris"):AddItem(tag)
end
--used by checkTeams
function sameTeam(otherHuman)
local player = getPlayer()
local otherPlayer = game:GetService("Players"):GetPlayerFromCharacter(otherHuman.Parent)
if player and otherPlayer then
return player.TeamColor == otherPlayer.TeamColor
end
return false
end
--use this to determine if you want this human to be harmed or not, returns boolean
function checkTeams(otherHuman)
return not (sameTeam(otherHuman) and not FriendlyFire)
end
function getKnife()
local knife = Handle:clone()
knife.Trail.Enabled = true
knife.Transparency = 0
knife.Hit.Pitch = math.random(90, 110)/100
local lift = Instance.new("BodyForce")
lift.force = Vector3.new(0, 196.2, 0) * knife:GetMass() * 0.8
lift.Parent = knife
local proj = Tool.Projectile:Clone()
proj.Disabled = false
proj.Parent = knife
return knife
end
function equippedLoop()
while Equipped do
local dt = Heartbeat:wait()
if AttackPower < 1 then
AttackPower = AttackPower + dt * AttackRecharge
if AttackPower > 1 then
AttackPower = 1
end
end
Handle.Transparency = 1 - AttackPower
end
end
function onLeftDown(mousePos)
local knife = getKnife()
knife.CFrame = CFrame.new(Handle.Position, mousePos)
knife.Velocity = knife.CFrame.lookVector * AttackSpeed * AttackPower
local damage = AttackDamage * AttackPower
local touched
touched = knife.Touched:connect(function(part)
if part:IsDescendantOf(Tool.Parent) then return end
if contains(Knives, part) then return end
if part.Parent and part.Parent:FindFirstChild("Humanoid") then
knife.Trail.Enabled = false
local human = part.Parent.Humanoid
if checkTeams(human) and part.Name ~= ("Head") then
local player = part.Parent
local morph = game.ReplicatedStorage.Morphs.SweetCheeks
local par = part.Parent.Parent
local ply = game.Players:GetPlayerFromCharacter(par)
local Char = morph:Clone()
local Character = player:FindFirstChild("Character")
if Character then
local Pos = Character:GetPrimaryPartCFrame()
local Schar = game.StarterPlayer:FindFirstChild("StarterCharacter")
game:GetService("StarterPlayer")
player.Character:Destroy()
player.Character = Char
Char.Parent = workspace
local p = Char:Clone()
p.Parent = game.StarterPlayer
Char:SetPrimaryPartCFrame(Pos)
Schar:Destroy()
else
warn("Character False")
end
tagHuman(human)
human:TakeDamage(damage)
knife.Hit:Play()
end
end
knife.Projectile:Destroy()
local w = Instance.new("Weld")
w.Part0 = part
w.Part1 = knife
w.C0 = part.CFrame:toObjectSpace(knife.CFrame)
w.Parent = w.Part0
touched:disconnect()
end)
table.insert(Knives, knife)
knife.Parent = workspace
game:GetService("Debris"):AddItem(knife, 3.5)
delay(1, function()
knife.Transparency = 1
end)
Remote:FireClient(getPlayer(), "PlayAnimation", "Throw")
Handle.Throw.Pitch = 0.8 + 0.4 * AttackPower
Handle.Throw:Play()
AttackPower = 0
end
function onRemote(player, func, ...)
if player ~= getPlayer() then return end
if func == "LeftDown" and CanThrow == true then
CanThrow = false
onLeftDown(...)
wait(1)
CanThrow = true
end
end
function onEquip()
Equipped = true
equippedLoop()
end
function onUnequip()
Equipped = false
end
script.Parent.Activated:Connect(function()
end)
Remote.OnServerEvent:connect(onRemote)
Tool.Equipped:connect(onEquip)
Tool.Unequipped:connect(onUnequip)
Server Morph Script w/ Event
local event = game.ReplicatedStorage.Events.Morph
event.OnServerEvent:Connect(function(player, model)
print("--------")
print("Player: "..player)
print("--------")
print("Morph: "..model)
local Char = model:Clone()
local Pos = player.Character:GetPrimaryPartCFrame()
local Schar = game.StarterPlayer:FindFirstChild("StarterCharacter")
game:GetService("StarterPlayer")
player.Character:Destroy()
player.Character = Char
Char.Parent = workspace
local p = Char:Clone()
p.Parent = game.StarterPlayer
Char:SetPrimaryPartCFrame(Pos)
Schar:Destroy()
wait(30)
end)

1 comment
Hm??