Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в Роблокс студио сделать так что бы при сборе монет одним игроком не исчезал у другого?

Esxfdg Jjjjj Ученик (99), на голосовании 4 месяца назад
Сделал скрипт на то чтобы при сборе монетки игроку давали +100 coins, но при сборе одним игроком, монета пропадает у всех, я хочу сделать так что бы при сборе монет одним игроком, оставалось у всех игроков пока они сами её не подняли!



Скрипт из ServerScriptService:

game.Players.PlayerAdded:Connect(function(plr)
local f = Instance.new ("Folder", plr)
f.Name = "leaderstats"
local coins = Instance.new ("IntValue", f)
coins.Name = "FunCoins"
coins.Value = 0
end)



Скрипт монеты (Part):
local pl = game:GetService("Players")
local coin = script.Parent
function giveMeMyMoney(part)
if part.Parent:FindFirstChild("Humanoid") then

coin.CanTouch = false
local player = pl:GetPlayerFromCharacter(part.Parent)

player.leaderstats.FunCoins.Value += 100
coin.Transparency = 1
script.Disabled = true
end
end
coin.Touched:Connect(giveMeMyMoney)
Голосование за лучший ответ
Юрий Горобцов Ученик (215) 5 месяцев назад
В каком из типов скриптов записан код для элемента "монеты"? ServerScript или LocalScript? В случае необходимости невидимости изменений для серверной стороны, изолируйте скрипт монеты (обработчик касания), перенеся его в модель монеты. После чего используйте RemoteEvent в ReplicatedStorage, чтобы отправить событие об изменении leaderstats'а. Пример:

LocalScript в модели монеты
 local function coin_touched(part)
local pl = game:GetService("Players")
if not(pl:GetPlayerFromCharacter(part.Parent)) then
return
end

local rs = game:GetService("ReplicatedStorage")
local update_coins = rs:WaitForChild("RemoteEvent")
local coin = script.Parent

local value = 100
update_coins:FireServer(value)
coin.transparency = 1
coin.CanTouch = false

end

ServerScript
 local f = Instance.new ("Folder", plr)   
f.Name = "leaderstats"
local coins = Instance.new ("IntValue", f)
coins.Name = "FunCoins"
coins.Value = 0

local rs = game:GetService("ReplicatedStorage")
local add_val_event = rs:WaitForChild("RemoteEvent")

function add_value(player, value)
player.leaderstats.FunCoins.Value += value
-- player предается по дефолту с LocalScript
end

add_val_event.OnServerEvent:Connect(add_value)
Похожие вопросы