im tryna send the hungerlvl from serverscript to local script
server
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function()
local hungerlvl = 100
local thirstlvl = 100
local stomachcapacity = 100
local ispuking = false
local loosingHunger = true
local loosingThirst = true
while loosingHunger == true do
wait(5)
hungerlvl = hungerlvl - 1
print(hungerlvl)
game.ReplicatedStorage.GuiUpdater:FireClient(hungerlvl)
end
end)
end)
local
game.ReplicatedStorage.GuiUpdater.OnClientEvent:Connect(function(hungerlvl)
script.Parent.Text = hungerlvl
end)
First of all, let’s restructure that first script:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local RemoteEvent = ReplicatedStorage:WaitForChild("GuiUpdater")
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function()
-- Your variables here
local Hunger: number = 100
local isLoosingHunger: boolean = true
-- This is the important part
if isLoosingHunger then
-- This will run every 5 seconds
local Connection = RunService.Heartbeat:Connect(function()
Hunger -= 1
RemoteEvent:FireClient(Player, Hunger)
end)
-- This will run when the player dies
Player.CharacterAdded:Connect(function()
Connection:Disconnect()
end)
end
end)
end)
And this client script:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage:WaitForChild("GuiUpdater")
RemoteEvent.OnClientEvent:Connect(function(Player: Player, HungerLevel: number)
script.Parent.text = "Hunger: " .. HungerLevel
end)
And with regards to your client script, you’d need to tostring()
the hungerlvl
as hungerlvl
is a number, so to cast it to a TextLabel, you need to convert it into a string.
1 Like
local
local players = game:GetService("Players")
local replicatedStorage = game:GetService("ReplicatedStorage")
local player = players.LocalPlayer
local event = replicatedStorage.GuiUpdater
local textLabel = script.Parent
event.OnClientEvent:Connect(function(hungerlvl)
textLabel.Text = hungerlvl
end)
server
local players = game:GetService("Players")
local replicatedStorage = game:GetService("ReplicatedStorage")
local event = replicatedStorage.GuiUpdater
players.PlayerAdded:Connect(function(player)
player.CharacterAppearanceLoaded:Connect(function(character)
local hungerlvl = 100
local thirstlvl = 100
local stomachcapacity = 100
local ispuking = false
--
local loosingHunger = true
local loosingThirst = true
--
task.spawn(function()
while loosingHunger == true do
wait(0.5)
hungerlvl -= 1
print(hungerlvl)
event:FireClient(player, hungerlvl)
if hungerlvl == 50 then
break
end
end
end)
end)
end)
1 Like
Remember, wait()
is deprecated. Use task.wait()
!
1 Like

where is 5 seconds being decided? thats not the final wait time its just for testing purposes right now while i figure everything out.I want to be able to change in future.
It won’t run every 5 seconds… Don’t know what I was thinking putting that there. Sorry, I’m a bit fired right now! Heartbeat
will fire every rendered frame on the client. It’s dependant on the player’s local machine.
If you’d prefer it this way though that’s also fine:
if isLoosingHunger then
repeat
task.wait() -- Insert how long you want to wait here.
Hunger -= 1
RemoteEvent:FireClient(Player, Hunger)
until Hunger <= 0
end
1 Like
when it puts the hunger into text it comes up as nil.
heres what i got after messing with it

server
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local RemoteEvent = ReplicatedStorage:WaitForChild("GuiUpdater")
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function()
local StomachCap: number = 100
local Thirst: number = 100
local Hunger: number = 100
local isLoosingHunger: boolean = true
local isLoosingThirst: boolean = true
local ispuking: boolean = false
-- This is the important part
if isLoosingHunger then
repeat
task.wait(4)
Hunger = Hunger - 1
print(Hunger)
RemoteEvent:FireClient(Player, Hunger)
until Hunger <= 0
end
end)
end)
local
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage:WaitForChild("GuiUpdater")
RemoteEvent.OnClientEvent:Connect(function(Player: Player, Hunger: number)
print(tostring(Hunger) .. "HELLLPPPP")
script.Parent.Text = tostring(Hunger)
end)
Do:
RemoteEvent.OnClientEvent:Connect(function(Player: Player, Hunger: number)
local HungerString: string = tostring(Hunger)
print(HungerString)
script.Parent.Text = tostring(Hunger)
end)