Скрипт Roblox - случайная активация ловушки - PullRequest
0 голосов
/ 02 июня 2019

Я делаю карту, и часть ее игроку придется решить, на какой из этапов скажем 3 шага. 1 в порядке и позволит им пройти, а другие убьют их.

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

Я попытался. _G случайно выбрал число 1-3, и в зависимости от номера, шаг 1,2 или 3 будет безопасным, а другой будет активирован сценарий уничтожения. Но это никогда не работало.

Существует возможность клонировать карту и изменять шаги вручную и просто случайную карту при запуске, но это кажется контрпродуктивным.

Есть ли способ заставить функцию выбирать случайное число в начале игры (случайное начальное число) и в зависимости от числа, выбранного в основном сценарии (на рабочем месте или в другом месте?), Другие локальные сценарии могут прочитать это число и решить, является ли часть убийственная ловушка или просто кирпич?

Это позволило бы мне использовать одно выбранное число для определения возможных других частей игры. Таким образом, игрок не может вспомнить безопасный способ пройти каждый раз, когда он входит в игру.

1 Ответ

0 голосов
/ 03 июня 2019

Изменить (старый ответ ниже):

Таким образом, вы просто хотите генерировать случайное число от 1 до 3 при каждом запуске сервера, гарантируя, что оно действительно случайное (а нето же самое каждый раз).Ранее вы использовали для этого math.random () с math.randomseed (), но в конце 2017 года был представлен класс Random.Две полезные ссылки:

Короче говоря, вот как вы генерируете случайное целое число с помощью Random:

local rng = Random.new(tick()) -- tick() is here used as the seed
local SafeDoor = rng:NextInteger(1, 3) -- will give you a number between (and including) 1 and 3

Как вы решите рассказать клиентам об этом, зависит от вас, и вы можете увидеть мой старый ответ для некоторых советов о том, как подходитьтот.Как правило, я стремлюсь к убийству с сервера, а не с клиента, так как обычно вы не должны доверять клиенту такую ​​информацию.Выполнение этого на сервере также означает, что клиенты не должны подвергаться воздействию номера и, следовательно, не могут обмануть свой путь к правой двери.


Старый ответ:

Я не совсем уверен, чего вы пытаетесь достичь, но если я правильно понимаю, вы спрашиваете, как можно распределить сгенерированное число между сервером и клиентом в начале каждого сеанса?

Это можно сделать несколькими способами.Вот два из них: Сгенерируйте число в любом серверном сценарии, который вы предпочитаете.

  1. Предоставьте номер в IntValue (или NumberValue, если требуются десятичные дроби), где он будет доступен как серверу, так и клиенту, например ReplicatedStorage.Все LocalScripts смогут прочитать это значение в любое время, и вы можете подключить событие .Changed для отслеживания изменений.
  2. В качестве альтернативы вы можете передать этот номер через Remote * -объект и просто позволить LocalScriptsзапрашивайте его всякий раз, когда им это нужно.

Если вы спрашиваете, можно ли перенести номер между разными местами (и / или серверами одного и того же места), тогда да - это тоже возможно,но немного сложнее.Для этого вы можете использовать недавно добавленный MessagingService или сохранить значение в хранилище данных.Если вас не очень заботит безопасность, вы также можете отправить номер в TeleportData телепорта игрока, когда отправите их на новое место.

Если я неправильно понял ваш запрос, пожалуйста, прокомментируйте и япредоставлю вам лучший ответ.

...