Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Can't Morph Player When They Touch Gear??

Asked by 4 years ago

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)
0
Hm?? Jomeliter 55 — 4y

Answer this question