Previous topicNext topic
 Gameofmir Help
Help > 游戏引擎功能系统 > 游戏功能详解 >
CALLEX说明

功能说明:CALLEX 多脚本同名标签调用

原来多次 #CALL 同一个 @地址,只能调用到一个地址。
新增 #CALLEX 后,支持多个脚本里使用同样的 @地址,引擎加载时会自动给重复的标签改名,保证每次调用都跳转到本次指定脚本中的标签。

-------------------------------------------------------------------------------

命令格式:
#CALLEX [\脚本文件名] @标签名

参数说明:
参数1:脚本文件路径,路径从 Envir\QuestDiary 下开始写,写法和原来的 #CALL 一样。
参数2:需要调用的标签名,格式为 @标签名。

-------------------------------------------------------------------------------

自动改名规则:
第一次加载同名标签,保持原标签名,例如 [@充值链接]。
第二次再加载同名标签,自动改为 [@充值链接~1]。
第三次再加载同名标签,自动改为 [@充值链接~2]。
后面依次类推。

说明:自动改名只针对本次 CALLEX 加载进来的入口标签,同时本次插入的 goto 也会自动改成对应的新标签。脚本文件内其它内容不会被改名。

-------------------------------------------------------------------------------

示例脚本:

主脚本:

[@main]
<充值1/@1> <充值2/@2> <充值3/@3> \

[@1]
#IF
#ACT
#CALLEX [\脚本1.txt] @充值链接
break

[@2]
#IF
#ACT
#CALLEX [\脚本2.txt] @充值链接
;前面有1个 @充值链接,本次解析会将 @充值链接 自动换成 [@充值链接~1]
break

[@3]
#IF
#ACT
#CALLEX [\脚本3.txt] @充值链接
;前面有2个 @充值链接,本次解析会将 @充值链接 自动换成 [@充值链接~2]
break

-------------------------------------------------------------------------------

被调用脚本示例:

脚本1.txt:

[@充值链接]
#IF
#ACT
SENDMSG 6 当前执行脚本1的充值链接
break

脚本2.txt:

[@充值链接]
#IF
#ACT
SENDMSG 6 当前执行脚本2的充值链接
break

脚本3.txt:

[@充值链接]
#IF
#ACT
SENDMSG 6 当前执行脚本3的充值链接
break

-------------------------------------------------------------------------------

CALL 和 CALLEX 区别:
1、#CALL 保持原来的处理方式,多个脚本里有相同 @地址时,最终仍然只会有一个同名标签生效。
2、#CALLEX 会在加载时自动生成唯一标签,适合多个文件中都使用同一个入口标签名的情况。
3、如果只调用一次,#CALLEX 和 #CALL 的写法效果基本一致。
4、需要多个相同标签分别执行时,请使用 #CALLEX。

-------------------------------------------------------------------------------

注意:
1、CALLEX 只用于 NPC 脚本预处理调用,写法位置和原来的 #CALL 一样。
2、脚本文件不存在或标签不存在时,会按原来的脚本加载错误提示输出。
3、自动改名发生在脚本加载阶段,不需要手动写 @充值链接~1、@充值链接~2。
4、如果脚本内部自己 goto 其它同名标签,引擎不会自动替换这些内部 goto,请按实际标签名写好。