Roblox 脚本 - 随机陷阱激活

Posted

技术标签:

【中文标题】Roblox 脚本 - 随机陷阱激活【英文标题】:Roblox script - random trap activation 【发布时间】:2019-10-18 07:07:18 【问题描述】:

我正在制作一张地图,其中一部分玩家必须决定要踩哪一个,比如说 3 个步骤。 1是可以的,会让他们通过,其他人会杀了他们。

我正在尝试做的是随机激活,以确保每个游戏从不同的步骤开始都是安全的。

我尝试._G 随机选择数字 1-3 并根据数字步骤 1,2 或 3 将是安全的,另一个将被激活杀死脚本。但这从来没有奏效。

可以选择克隆地图并手动更改步骤,并且在开始时只是随机地图,但这似乎适得其反。

有没有办法让函数在游戏开始时选择随机数(随机种子)并根据主脚本中选择的数字(在工作场所或其他地方?)其他本地脚本可以读取这个数字并决定是否部分是杀戮陷阱还是砖头?

这将允许我使用一个选择的数字来确定游戏的其他可能部分。所以玩家每次进入游戏时都无法记住安全的通行方式。

【问题讨论】:

【参考方案1】:

编辑(下面的旧答案):

所以你只想在每次服务器启动时生成一个介于 1 和 3 之间的随机数,确保它实际上是随机的(并且每次都不相同)。以前您会为此使用 math.random() 和 math.randomseed(),但在 2017 年末引入了 Random 类。 两个有用的链接:

Announcement of the Random feature Wiki-article for 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

您选择如何告诉客户这取决于您,您可以查看我的旧答案以获取有关如何处理该问题的一些提示。 一般来说,我的目标是从服务器而不是客户端进行杀戮,因为你通常不应该相信客户端有这种信息。在服务器上做这也意味着客户端不必接触到号码,因此不能欺骗他们通往正确的门。


旧答案:

我不完全确定您要完成什么,但如果我理解正确,您是在寻求一种在每次会话开始时在服务器和客户端之间共享生成的数字的方法?

这可以通过多种方式完成。这里有两个: 在您喜欢的任何服务器脚本中生成号码。

    在服务器和客户端均可访问的某个位置(如 ReplicatedStorage)公开 IntValue(或 NumberValue,如果需要小数)中的数字。所有 LocalScript 都可以随时读取此值,并且您可以连接 .Changed-event 以跟踪更改。 或者,您可以通过 Remote* 对象传输此号码,并让 LocalScripts 在需要时请求它。

如果您询问是否可以在不同地点(和/或同一地点的服务器)之间转移号码,那么可以 - 也可以,但稍微复杂一些。您可以为此使用新添加的 MessagingService,或将值存储在 Datastore 中。如果你不太在意安全性,你也可以在玩家传送到新地方的时候,将玩家传送的 TeleportData 中的号码发送出去。

如果我误解了您的要求,请发表评论,我会为您提供更好的答案。

【讨论】:

您好,感谢您的评论。想象一下,你有 3 个进入同一个地方的入口,但只有一个是安全的,如果你触摸它们,另外两个会被杀死。所以一旦你玩过它,你就会知道哪个入口是安全的。我想要的是让安全门是随机的 1st 2nd 或 3rd 并且每次新游戏开始时都不相同。我的想法是让服务器选择随机数,然后据此决定哪扇门是安全的,哪扇门会杀人。有没有更简单的方法可以让随机选择的门变得安全?抱歉,我保证在我的脑海中是有道理的。 我已经更新了我的原始答案@Kromagg。据我了解,数字的生成是问题所在,但如果我再次把你的问题弄错了,请赐教。我很乐意填空。

以上是关于Roblox 脚本 - 随机陷阱激活的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个玩家必须猜测随机生成的 pin 的 Roblox 游戏?

如何使用随机数和列表更改 TextLabel 的文本?

用于检测“唯一幸存者”获胜者的 Roblox 游戏脚本

当它应该出现时框架没有出现......(ROBLOX GUI)

从下拉框中随机选择一个选项,然后单击以激活另一个在 Javascript 中使用 onChange 的函数

发送随机密码盐作为激活码?