ROBLOX — Восстановление локации после выхода игрока — Restore space if player remove.

Автор: | 26 марта, 2020
Поделиться...

В предыдущем посте было описание моего первого мультиплейерного тренажёра. Так вот, нечаянно (ага, конечно) выяснилось, что нужно восстанавливать пространства не только для повтора упражнения, но и когда игрок выходит.

И вот тут на помощь пришло срабатывания события PlayerRemoving. По сути своей это всего лишь полная противоположность PlayerAdded. Оно срабатывает когда игрок покидает сервер. Про оба события описано на одной странице:

https://developer.roblox.com/en-us/api-reference/event/Players/PlayerRemoving/index.html

Т.е. нам остаётся только выяснить куда привязан был игрок, удалить его место и поместить туда клон базового пространства. Скрипт этого действа ниже:

game.Players.PlayerRemoving:Connect(function(player)
    print("A player has left: " .. player.Name)

	local original = game.ReplicatedStorage.Main -- Сохраняем в переменную оригинальный объект
	local copy = original:Clone() -- создаём копию объекта

	-- ищем место где вышел и копируем туда пустышку		
	local children = workspace:GetChildren() -- ищем детей Workspace
	for i, child in ipairs(children) do -- перебираем
		if child.ClassName == "Model" then -- ищем что это модель 
			if child:FindFirstChild("Rocket") ~= nil then -- и это модель пространства игрока (содержит внутри ракету)
				if child.Owner.Value == player.Name then -- занято нашим игроком
					-- поместить на его место клон
					local par=child.Parent -- сохраняем привязку
					local pos=child:GetPrimaryPartCFrame() -- сохраняем положение
					local nam=child.Name -- сохраняем название зоны
					
					copy.Parent = par -- указываем значение родителя у копии
					copy.Name = nam -- сохраняем имя зоны					
					copy:SetPrimaryPartCFrame(pos)-- восстанавливаем положение
									
					-- уничтожаем найденного
					child:Destroy()
				end
			end
		end
	end
end)

Если же игрок не был никуда привязан, то скрипт просто завершит свою работу.

Был вопрос — как выглядит игра в разработке? Скриншот пространства приложен ниже:

Ну и как обычно, опробовать в действии можно по ссылке ниже:

https://www.roblox.com/games/4789977549/Math-Rocket


Поделиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *