植物/物品收集系统

0 点赞
RPG Maker XP
转载

本指南将教你如何制作一个简单但高效的系统,可用于草药采集、采矿、宝箱 loot 等场景。该系统易于编辑,无需单独修改每个放置的事件。 简介 本指南面向有一定 RPG Maker 使用经验的用户,但纯新手也有望从中获益。 在本指南中,我将展示如何制作一个处理拾取草药或其他玩家可大量收集物品的系统。重点将放在系统的效率上。 初次尝试 假设你决定在游戏中添加某种炼金系统。这个系统运行良好,但现在你想在游戏世界中加入可收集的植物。如果你是RPG制作大师或其他任何开发工具的新手,界面看起来会大致如此。

然后你只需将这个事件复制到地图各处就能完成。虽然这对于非常简单的游戏来说没问题,但大多数人会想要使用稍微复杂一点的东西。或许可以试试这样:

这其实并不复杂。问题在于我在这个脚本里添加了更多内容。如果我已经开始在整个地图上复制药草,那我就得遍历整个地图,去修改或删除我放置的每一个药草事件。 那么,我们来看看实际应该怎么做。 计划 这一点非常重要。简单的解决方案是否足够?你确定将来不会再添加任何内容吗? 即便是优秀的游戏开发者,也常常需要回过头去修改游戏中较早的内容。因此,让每个系统都尽可能易于修改,才是最符合你利益的做法。我们希望系统能实现以下功能: - 保持简洁,以便未来需要时可以轻松修改 - 若决定进行修改,过程应尽可能简单快捷 - 修改单个内容时,无需逐一处理所有事件 - 系统应尽可能实现自动化操作 通常,解决特定问题的方法有很多种,接下来我要展示的只是其中一种方案。相信你也能想出属于自己的解决方案。 使用公共事件 公共事件或许是你会遇到的最实用功能。它们能让你创建一系列命令,供大量其他事件调用。当你需要修改内容时,只需修改这一个事件,即便有二十个其他事件在使用它也无需额外操作。我复制了第二个事件并将其添加到公共事件中。

现在你只需将此命令添加到实际的草药事件中,它就能立即生效。

这对你来说可能已经足够了,如果你不太想使用脚本,那么现在就可以停下来。不过对于那些想要更多功能的人,让我们进一步深入。 对于更有经验的用户 假设我们想在游戏中添加多种植物。现在该怎么做呢? 我们希望将尽可能多的内容放入公共事件中,只将那些最不可能改变的内容留在事件本身中。 首先,我们需要某种东西来确定我们要拾取的植物种类。让我们使用变量来实现这一点。

你可以随意命名变量。但务必将其值设置为与物品数据库中的植物ID相同(始终忽略实际数字前的零。在这种情况下,变量值将设置为1,而不是001)。这将帮助我们确定玩家在拾取植物后将获得何种物品。现在让我们回到公共事件。 我们需要根据刚刚设置的变量给玩家物品。遗憾的是,没有直接的选项,所以我们将使用脚本。

使用此脚本无需下载任何内容,它是RPG Maker XP的一部分。 我会尝试对其进行一些解释,但你也应该阅读有关变量的指南,网上有很多相关内容。 a = $game_variables[1] 这行代码的存在只有一个原因。RMXP的脚本窗口不喜欢可能导致换行的写法。有时这不会造成任何问题,有时却可能破坏你的脚本。这行代码实现的功能如下:我们创建了一个名为“a”的新变量,并将其赋值为“PlantID”变量的当前值。如果你想像我现在这样通过脚本访问内置变量,【务必使用变量ID,而非变量名称】。ID是变量名称前的数字。 $game_party.gain_item(a,1) 这行代码的作用基本等同于“更改物品...”命令。$game_party.gain_item(物品ID, 获取物品数量) 这意味着我方队伍将从变量【PlantID】中获取一个物品。 现在你只需在植物事件中修改【PlantID】变量,就能根据该变量获得不同的事件。 现在还缺少一个功能:当你采摘植物时,显示的文本中应包含植物名称。以下是实现方法。

默认的【控制变量】选项不允许我们使用文本。使用此脚本可以绕过这一限制。现在我们只需稍微修改公共事件中的消息即可。

你可以在消息输入框中按F1查看所有可用命令。我正在使用的命令有: c – 更改后续文本的颜色 v – 显示变量中存储的值 现在系统已完善。你可以在整个地图中复制你的植物事件了。如果你想更换获得的植物,只需更改plantID和带有植物名称的脚本即可。例如:

最后一点。现在,假设我们想更进一步,让文本框自动使用物品名称。以下是实现方法。

这基本上和之前的内容一样。 a = $game_variables[1] b = $data_items[a].name $game_variables[2] = b 正如我之前所说,我创建新变量(a、b)的原因只有一个。脚本框不喜欢过长的代码行。 $game_variables[2] = $data_items[$game_variables[1]].name 这很可能无法运行,因为整行代码无法放入你使用的那个小框中。 不管怎样,它的工作原理很简单。 $data_items[a].name 会获取变量1中存储的ID对应的物品名称。在这个例子中,就是治疗草。然后我们将结果存储到变量2中,这样就可以在文本窗口中使用它,而无需编辑核心脚本。 所以在最后一次编辑之后,植物事件会是这样的:

这难道不美妙吗?如果你决定更改任何内容,只需编辑一个公共事件,所有相关内容就会随之改变。这里有一些图片展示最终效果。

就是这样了。这个简单的系统从长远来看会让你的工作轻松不少。如果你有任何问题,随时可以问我,我会尽力解答。