Tried to send a value from the server to the client, and I passed the Player object but nothing happened… The local script (script on the receiving end of the remote) was supposed to tween a part, but it didn’t, here is both the server and client script.
Server:
local Shield = game.ReplicatedStorage.Meshes.Shield:Clone()
local Event = game.ReplicatedStorage.CombatEvents.Shield
Event.OnServerEvent:Connect(function(Player, BlockingStatus)
local Plr = Player
local c = Player.Character
if BlockingStatus == "IsBlocking" then
local Shield = game.ReplicatedStorage.Meshes.Shield:Clone()
Event:FireClient(Plr, "IsBlocking")
Shield.Parent = c.HumanoidRootPart
Shield.Position = c.HumanoidRootPart.Position
Shield.Anchored = false
local Weld = Instance.new("Weld", Shield)
Weld.Part0 = c.HumanoidRootPart
Weld.Part1 = Shield
elseif BlockingStatus == "StoppedBlocking" then
Event:FireClient(Plr, "StoppedBlocking")
else
return
end
end)
Local Script:
game.ReplicatedStorage.CombatEvents.Shield.OnClientEvent:Connect(function(Player, Action)
if Action == "IsBlocking" then
print("player blocking")
if Player.Character.HumanoidRootPart:FindFirstChild("Shield") then
print("player has shield")
local Shield = Player.Character.HumanoidRootPart:FindFirstChild("Shield")
local TweenService = game:GetService("TweenService")
local Info = TweenInfo.new(0.5, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local Goals = {}
Goals.Size = Vector3.new(7,7,7)
local Tween = TweenService:Create(Shield, Info, Goals)
Tween:Play()
end
elseif Action == "StoppedBlocking" then
if Player.Character.HumanoidRootPart:FindFirstChild("Shield") then
local Shield = Player.Character.HumanoidRootPart:FindFirstChild("Shield")
local TweenService = game:GetService("TweenService")
local Info = TweenInfo.new(0.5, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local Goals = {}
Goals.Size = Vector3.new(0.5,0.5,0.5)
local Tween = TweenService:Create(Shield, Info, Goals)
Tween:Play()
end
end
end)
Please help!
Only briefly looked at this for 10 seconds, OnClientEvent
only has tuple arguments to pass through
Even if you reference it as a parameter, you can instead easily get the Player by just using game.Players.LocalPlayer
, the only other time when you’d need to reference the player inside the parameter is if you call OnServerEvent
game.ReplicatedStorage.CombatEvents.Shield.OnClientEvent:Connect(function(Action)
Well I need to get the player from the server and send it to the client, I believe…
I tried to omit the Player argument when I sent a message to the Client, and that just raised an error: “Unable to cast value to object”
Are you sure you’re referencing a valid Player object? Also I’m unsure as to why you referenced a Plr
variable inside your OnServerEvent
, when you could just simply get the Player
argument instead to fire the client on
It should look something like this:
--Server
local Shield = game.ReplicatedStorage.Meshes.Shield:Clone()
local Event = game.ReplicatedStorage.CombatEvents.Shield
Event.OnServerEvent:Connect(function(Player, BlockingStatus)
local c = Player.Character
if BlockingStatus == "IsBlocking" then
local Shield = game.ReplicatedStorage.Meshes.Shield:Clone()
Event:FireClient(Player, "IsBlocking")
Shield.Parent = c.HumanoidRootPart
Shield.Position = c.HumanoidRootPart.Position
Shield.Anchored = false
local Weld = Instance.new("Weld", Shield)
Weld.Part0 = c.HumanoidRootPart
Weld.Part1 = Shield
elseif BlockingStatus == "StoppedBlocking" then
Event:FireClient(Player, "StoppedBlocking")
else
return
end
end)
--Client
game.ReplicatedStorage.CombatEvents.Shield.OnClientEvent:Connect(function(Action)
if Action == "IsBlocking" then
print("player blocking")
if Player.Character.HumanoidRootPart:FindFirstChild("Shield") then
print("player has shield")
local Shield = Player.Character.HumanoidRootPart:FindFirstChild("Shield")
local TweenService = game:GetService("TweenService")
local Info = TweenInfo.new(0.5, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local Goals = {}
Goals.Size = Vector3.new(7,7,7)
local Tween = TweenService:Create(Shield, Info, Goals)
Tween:Play()
end
elseif Action == "StoppedBlocking" then
if Player.Character.HumanoidRootPart:FindFirstChild("Shield") then
local Shield = Player.Character.HumanoidRootPart:FindFirstChild("Shield")
local TweenService = game:GetService("TweenService")
local Info = TweenInfo.new(0.5, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)
local Goals = {}
Goals.Size = Vector3.new(0.5,0.5,0.5)
local Tween = TweenService:Create(Shield, Info, Goals)
Tween:Play()
end
end
end)
Yeah, it worked thanks! (Sorry for late reply, had to do something)