在传奇等游戏中,NPC(非玩家角色)的对话内容和跳转都需要通过脚本来设定。下面以一个简单的传送NPC脚本为例,介绍如何优化NPC脚本,使其更加清晰和易读。

原始NPC脚本

[@main]

你好 需要传送到盟重吗?\\

<传送/@chuansong>\\

<退出@exit>\\\\

[@chuansong]

#IF “checkgamegold 100”

#act “mapmove 3 330 330”

#elseact

#elsesay 你的包里没有100元宝\\

我不能帮你传送\\

<返回/@main> \\\\

Copy

1. 使用 #else 代替 #elseact

#elseact 是一种特定的语法,用于在 #if 语句中表示执行其他操作。但是,更常见的做法是使用 #else 语句,它可以更好地与其他语言保持一致。

修改后的 NPC 脚本:

[@main]

你好 需要传送到盟重吗?\\

<传送/@chuansong>\\

<退出@exit>\\\\

[@chuansong]

#IF “checkgamegold 100”

#act “mapmove 3 330 330”

#else

#elsesay 你的包里没有100元宝\\

我不能帮你传送\\

<返回/@main> \\\\

Copy

2. 使用 #endif 代替 #act 和 #elseact

#act 和 #elseact 语句可以使用 #endif 语句来替代,这样可以更好地表示 #if 语句的结尾。

优化后的 NPC 脚本:

[@main]

你好 需要传送到盟重吗?\\

<传送/@chuansong>\\

<退出@exit>\\\\

[@chuansong]

#IF “checkgamegold 100”

#act “mapmove 3 330 330”

#else

#elsesay 你的包里没有100元宝\\

我不能帮你传送\\

<返回/@main>

#endif

Copy

3. 使用 #else 代替 #elsesay

#elsesay 语句可以使用 #else 语句来替代,这样可以更好地与其他语言保持一致。

优化后的 NPC 脚本:

[@main]

你好 需要传送到盟重吗?\\

<传送/@chuansong>\\

<退出@exit>\\\\

[@chuansong]

#IF “checkgamegold 100”

#act “mapmove 3 330 330”

#else

#else

你的包里没有100元宝\\

我不能帮你传送\\

<返回/@main>

#endif

Copy

4. 使用 #else 和 #endif 代替 #act 和 #elseact

可以使用 #else 和 #endif 语句来替代 #act 和 #elseact 语句,这样可以更好地表示 #if 语句的结尾。

优化后的 NPC 脚本:

[@main]

你好 需要传送到盟重吗?\\

<传送/@chuansong>\\

<退出@exit>\\\\

[@chuansong]

#IF “checkgamegold 100”

#act “mapmove 3 330 330”

#else

#else

#say

你的包里没有100元宝\\

我不能帮你传送\\

<返回/@main>

#endif

#endif

NPC脚本示例:

plaintext

[@main]

你好,需要传送到盟重吗?

<传送/@chuansong>

<退出/@exit>

[@chuansong]

#IF

checkgamegold 100

#act

mapmove 3 330 330

#elseact

#elsesay

你的包里没有100元宝,我不能帮你传送。

<返回/@main>

脚本组成部分解释:

[@main]:这是脚本的开始部分,在对话开始时触发。

<传送/@chuansong>:这是一个选项,显示为“传送”,点击后跳转到标记为@chuansong的脚本部分。

<退出/@exit>:这是另一个选项,显示为“退出”,用于结束对话。

[@chuansong]:这是<传送>选项对应的脚本部分。

#IF:条件判断语句,检查是否满足条件。

checkgamegold 100:检查背包中是否有100元宝。

#act:如果条件满足,则执行下面的操作。

mapmove 3 330 330:将玩家传送到盟重地图,坐标为(330, 330)。

#elseact:如果条件不满足,则执行下面的操作。

#elsesay:在否认条件时向玩家显示消息。

#返回/@main:提供一个选项,允许玩家返回到对话的起始部分。

脚本:

  首先开头

  [@main]

  你好 需要传送到盟重吗?\ 所说的话,后面要加上 \ 这是换行的意思

  <传送/@chuansong>\ 选项外要加上<> 这样表示这是一个选项 可以跳转到@开头的脚本

  这样会在对话界面显示: 传送 而/后面的内容被隐藏了

  <退出@exit>\\ 两个\是结束。

  [@chuansong] 这是上面传送的对应脚本

  #IF “#if”在脚本中表示检测 就是如果的意思 比方说 如果 背包里有100元宝

  checkgamegold 100 检查包里是否有100元宝

  #act “#act” 那么的意思 那么传送到 盟重

  mapmove 3 330 330 既是传送到盟重地图 3代表盟重 坐标 330 330

  #elseact “elseact”表示 如果否认了IF的条件 就是 如果包里没有100元宝的话

  #elsesay 意思是那么对玩家说:

  你的包里没有100元宝\

  我不能帮你传送\

  <返回/@main> \\ 退到菜单

  传奇基本所有的NPC都是这个格式的脚本 ,具体每个引擎的脚本命令和变量检测不同,查看你所用的M2的使用指南里有脚本命令和变量检测

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。