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

When you click a player, how do you make them wear a shirt?

Asked by 4 years ago

I made a tool, so when you click on a player, it can give them a shirt. When I click that other player, it gives myself that shirt, not the other player.

Local script

Tool = script.Parent
PMouse = game.Players.LocalPlayer:GetMouse()
Click = true
on = false
Tool.Equipped:connect(function()
    on = true
end)
Tool.Unequipped:connect(function()
    on = false
end)
Tool.Activated:connect(function()
    if PMouse.Target.Parent:FindFirstChild("Humanoid") and on == true or PMouse.Target == nil and on == true then
        local mouseHitPlr = game.Players:GetPlayerFromCharacter(PMouse.Target.Parent)
        game.ReplicatedStorage.EquipShirt:FireServer(mouseHitPlr)
        Click = false
    end
end)

Server Script

local RS = game:WaitForChild("ReplicatedStorage")
local event = RS.EquipShirt
local ShirtID = "rbxassetid://676428254"

local function onEquipShirt(player)

    local foundShirt = player.Character:FindFirstChild("Shirt")
    if not foundShirt then -- if there is no shirt
        print("No Shirt Found:  "..player.Name)
        local newShirt = Instance.new("Shirt",player.Character)
        newShirt.Name = "Shirt"
    else if foundShirt then -- if there is a shirt
        print("Existing Shirt Found: Shirt ID has changed for "..player.Name)
        player.Character.Shirt:remove()
        local newShirt = Instance.new("Shirt",player.Character)
        newShirt.Name = "Shirt"
    end
    end

    player.Character.Shirt.ShirtTemplate = ShirtID
end

event.OnServerEvent:Connect(onEquipShirt)
0
Change the ShirtTemplate of the shirt they are wearing. Gameplay28 139 — 4y

1 answer

Log in to vote
0
Answered by 4 years ago

server script:

local RS = game:WaitForChild("ReplicatedStorage")
local event = RS.EquipShirt
local ShirtID = "rbxassetid://676428254"

local function onEquipShirt(player,mousehit--[[mousehit is the player you clicked on and player is always the player that fired the event, aka the local player]])

    local foundShirt = mousehit.Character.:FindFirstChild("Shirt")
    if not foundShirt then -- if there is no shirt
        print("No Shirt Found:  "..mousehit.Character.Name)
        local newShirt = Instance.new("Shirt",mousehit.Character)
        newShirt.Name = "Shirt"
    else if foundShirt then -- if there is a shirt
        print("Existing Shirt Found: Shirt ID has changed for "..mousehit.Character.Name)
        mousehit.Character.Shirt:remove()
        local newShirt = Instance.new("Shirt",mousehit.Character)
        newShirt.Name = "Shirt"
    end
    end

    mousehit.Character.Shirt.ShirtTemplate = ShirtID
end

event.OnServerEvent:Connect(onEquipShirt)

you connected the player who fired it(the local player not the targeted player), what i changed in this is i also connected the player the mouse hit and put the focus on that very player

Ad

Answer this question