开启辅助访问      

传世单机社区

 找回密码
 立即注册
https://www.wooolc.com
查看: 22477|回复: 175

[其他教程] NPC脚本的执行流程,还有脚本命令代码解释....(让新手学习专用)

  [复制链接]

升级   32.92%

发表于 2016-4-2 20:38:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

NPC脚本的执行流程主要由以下组成:
每一个NPC脚本都有由一个[@main]脚本标签开始脚本执行,相当于一个MAIN函数头一样,在此脚本下的主要语句有:
#IF
#ACT (#SAY) //ACT与SAY是并列执行的
#ELSEACT (#ELSESAY) //ELSEACT与ELSESAY是并列执行的
#SAY
#ELSESAY
Break //中断脚本流程执行
GOTO @标签名 //跳转到指定标签段
-------------------------------
#IF //假设条件语句,如果的意思
#ACT //如果条件成立就执行
#SAY //如果条件成立就显示,SAY语句作用是在客户端显示对话信息
#ELSEACT //如果条件不成立就执行
#ELSESAY //如果条件不成立就显示,ELSESAY语句作用是在客户端显示对话信息
范例:
[@main]
#IF
checkjob Warr //检测是否是战士职业
#ACT
SENDMSG 5 你的职业是战士
#SAY
你的职业是战士
#ELSEACT
SENDMSG 5 你不是战士职业
#ELSESAY
你不是战士职业
//ACT与SAY是并列执行的
//ELSEACT与ELSESAY是并列执行的
也可以这样:
[@main]
#IF
checkjob Warr //检测是否是战士职业
#ACT
SENDMSG 5 你的职业是战士
#ELSEACT
SENDMSG 5 你不是战士职业

[@main]
#IF
checkjob Warr //检测是否是战士职业
#SAY
你的职业是战士
#ELSESAY
你不是战士职业
-------------------------------
下面来看 Break //中断脚本流程执行功能
很多时候,脚本的某一个功能,都是由很多条件假设构成,当我们要同时检查多个并列的条件时,就需要用到脚本“Break中断”了,当然,如果不用中断写法,肯定就要用到GOTO跳转了,但为了降低资源和优化效率,一般是采用break中断写法,尽量不使用GOTO跳转。
比如:我要检查当前指定脚本的玩家等级是否有50级,是否是女性,是否是战士职业,是否有50个元宝?如何来实现这个功能呢?我们分两种写法来说明Break中断的作用!
范例1:(使用传统的GOTO跳转来实现)
[@传统写法]
#IF
CHECKLEVELEX > 49
#ACT
GOTO @检测性别
#ELSESAY
你的等级不足50级\\
<离开[url=]/@exit[/url]>
[@检测性别]
#IF
gender WOMAN
#ACT
GOTO @检测职业
#ELSESAY
你不是女性玩家\\
<离开[url=]/@exit[/url]>
[@检测职业]
#IF
checkjob Warr
#ACT
GOTO @检测元宝
#ELSESAY
你不是战士职业\\
<离开[url=]/@exit[/url]>
[@检测元宝]
#IF
CHECKGAMEGOLD > 49
#SAY
你满足条件,你的元宝有50个!\
你是女性,50级,战士职业玩家!\
<离开[url=]/@exit[/url]>
#ELSESAY
你的元宝不足50个\\
<离开[url=]/@exit[/url]>

范例2:(使用Break中断写法来实现)
[@中断写法]
#IF
CHECKLEVELEX < 50
#SAY
你的等级不足50级\\
<离开[url=]/@exit[/url]>
#ACT
break
#IF
gender WOMAN
#ELSESAY
你不是女性玩家\\
<离开[url=]/@exit[/url]>
#ELSEACT
break
#IF
checkjob Warr
#ELSESAY
你不是战士职业\\
<离开[url=]/@exit[/url]>
#ELSEACT
break
#IF
CHECKGAMEGOLD > 49
#SAY
你满足条件,你的元宝有50个!\
你是女性,50级,战士职业玩家!\
<离开[url=]/@exit[/url]>
#ELSESAY
你的元宝不足50个\\
<离开[url=]/@exit[/url]>

//以上两种写法的执行结果一样,但从中可以看出使用break中断写法可以节省很多代码和不必要的跳转,能降低脚本在执行过程中的资源占用率。
break中断功能的作用就是,假设条件不成,就中断脚本继续执行,也就是break后面的脚本就不执行了,执行流程结束!第2种写法中,如果没有break,那么所有的判断都将按照从上到下的执行流程进行顺序执行,不管是否成立与否,都将一直执行到最后,大家可以把它取消了自己试试就知道了。



评分

参与人数 1传世币 +50 收起 理由
admin + 50 我很赞同!

查看全部评分

升级   0%

发表于 2016-4-2 21:28:11 | 显示全部楼层
强烈支持楼主ing……

升级   100%

发表于 2016-4-2 21:43:00 | 显示全部楼层
看到这帖子真是高兴!

升级   0%

发表于 2016-4-3 00:33:12 | 显示全部楼层
激动人心,无法言表!

升级   27.48%

发表于 2016-4-3 07:31:39 | 显示全部楼层
真是难得给力的帖子啊。

升级   0.01%

发表于 2016-4-3 08:47:26 | 显示全部楼层
强烈支持楼主ing……

升级   38.41%

发表于 2016-4-3 12:23:47 | 显示全部楼层
强烈支持楼主ing……

升级   0%

发表于 2016-4-3 12:44:05 | 显示全部楼层
强烈支持楼主ing……

升级   58.4%

发表于 2016-4-3 13:33:41 | 显示全部楼层
强烈支持楼主ing……

升级   44.4%

发表于 2016-4-4 00:43:59 | 显示全部楼层
真是被感动的痛哭流涕……

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

关闭

站长推荐 上一条 /1 下一条

传奇世界单机版|传世服务端|传世版本|关于我们|小黑屋|手机版| 传世单机社区 |网站地图

GMT+8, 2024-4-20 14:23 , Processed in 0.149844 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2018 Comsenz Inc.

快速回复 返回顶部 返回列表