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

Roblox studio - local script in global помощь

Fixate Профи (520), на голосовании 2 года назад
здравствуйте, у меня есть переменная в Local script, как мне ее передать на Server script? (через _G. тоже не видит)
Голосование за лучший ответ
jojo Ученик (125) 2 года назад
у rbs есть защита которая не позволяет клиенту напрямую взаимодействовать как-то с серверными данными включая серверные скрипты и их переменные, также и сервер не может получать полную информацию о клиенте а только ее часть передаваемую через мосты:

создавая или используя уже созданные мосты вы можете отправлять серверу данные. В данном случае было бы корректно использовать "RemoteEvent" , также есть "RemoteFunction" - он выполняет те же действия что и RemoteEvent но может возвращать return от сервера обратно к клиенту.

мост можно создать в любой локальной области доступной серверу, по стандарту его размещают в ReplicatedStorage.

создадим скрипт в game.StarterPlayer.StarterPlayerScripts

в нём же обозначим локальную переменную var и переменную event в которой будет храниться путь к ивенту. Далее мы вызываем метод :FireServer(здесь указываем переменную или переменные которые мы хотим отправить на сервер). Локальный скрипт готов.

local var = 228
local event = game.ReplicatedStorage:WaitForChild("RemoteEvent")
event:FireServer(var)

далее мы создадим серверный скрипт (я создам его в game.ServerScriptService) в котором будем принимать сигнал от RemoteEvent если он на него поступает. прописываем еще раз путь к RemoteEvent в локальную переменную event. После мы ждём сигнал и конектимся к локальной функции (она не обязательно должна быть локальной). Когда сигнал приходит функция получает данные в виде аргументов, первый аргумент всегда идёт имя игрока который отправил сигнал, остальные же приходят в том же порядке что и значения переданные методу :FireServer(). Так как сигнал передаёт функции только два аргумента (имя игрока и переменную) , то мы сохраняем их в plr и getvar. Чтобы убедится что функция работает я написал print(getvar) который печатает переданную переменную в output. Серверный скрипт готов.


local event = game.ReplicatedStorage:WaitForChild("RemoteEvent")
event.OnServerEvent:Connect(function(plr, getvar)
print(getvar)
end)

теперь осталось только протестировать

Output:

228 - Server - Script:3
Иван БарановУченик (173) 4 месяца назад
Смотрел видеотуторы, читал статьи и только благодоря тебе я смог разобраться
Похожие вопросы