红鹰论坛

 找回密码
 立即注册
查看: 2187|回复: 15

脚本优化—新手GM必看

[复制链接]

75

主题

24

回帖

696

积分

三级GM

Rank: 4

积分
696
发表于 2014-12-22 23:23:16 | 显示全部楼层 |阅读模式
应该说很多坛友们都碰到过脚本死循环的例子。除了很意外的错误之外,一般的解决方法都是修改setup文件里的goto循环次数,可是这个方法有时候并不能彻底解决问题,往往是看似解决了但是M2会不定时的出现脚本死循环,此时M2应该是一种假死的状态,对报错的脚本应该是无法执行了,我们此时按照路径去查找怎么看都看不出哪里出错了。包括脚本的一些逻辑什么的都很正确,这该怎么办呢?这就需要我们平时编写的时候养成一个良好的习惯,也可以说是一个良好的手法!下面我会举例说明!


首先来看一段转生的脚本,这是我之前玩传奇写过的,因为平时没事了我们几个朋友都会聚一块儿玩内服,租个便宜简单的服务器或者自己电脑开一个

[@一转]
#IF
CHECKLEVELEX > 54
#ACT
goto @一转一
#ELSESAY
哦!你的等级还没有55级哦!先升级再说吧

[@一转一]
#IF
CHECKRENEWLEVEL < 1
#ACT
goto @一转二
#ELSESAY
哦!你都进行过一转了还来干吗?

[@一转二]
#IF
CHECKGAMEGOLD > 999
#ACT
gamegold - 1000
RENEWLEVEL 1 0 100
#CALL [\封号系统\封号系统.txt] @封号系统
#CALL [\封号系统\名字变色.txt] @名字变色
SendCenterMsg 253 180 恭喜<$USERNAME>一转成功,奖励可自由分配属性点100个!
#ELSESAY
哦!你连1000个元宝都没有!等凑足了元宝再说吧!


[@二转]
#IF
CHECKLEVELEX > 59
#ACT
goto @二转一
#ELSESAY
哦!你的等级还没有60级哦!先升级再说吧

[@二转一]
#IF
CHECKRENEWLEVEL = 1
#ACT
goto @二转二
#ELSESAY
哦!你还没进行一转就来二转呀!先一转了再说吧!

[@二转二]
#IF
CHECKRENEWLEVEL > 1
#ACT
Messagebox 错误:你都进行过二转了还来干吗?有病呀你!
#ELSEACT
goto @二转三

[@二转三]
#IF
CHECKGAMEGOLD > 1999
#ACT
gamegold - 2000
RENEWLEVEL 1 0 200
#CALL [\封号系统\封号系统.txt] @封号系统
#CALL [\封号系统\名字变色.txt] @名字变色
SendCenterMsg 253 180 恭喜<$USERNAME>二转成功,奖励可自由分配属性点200个!
#ELSESAY
哦!你连2000个元宝都没有!等凑足了元宝再说吧!


大家有木有发现这个脚本有什么漏洞,一般来说没什么问题,各种逻辑什么的都是正确的,但是这里用到了5个goto,因为一转要符合55级以上加1000个元宝,二转要符合60级以上加2000个元宝,并且都要一级级来转,5个goto就代表了5个检测条件,思路很正确,但是何必要用5个goto呢?一定程度上加大了引擎的负荷以及为死循环创造了条件!因为还有另外一种方式,看看是不是更简单一些

[@一转]
#IF
CHECKLEVELEX < 55
#ACT
Messagebox:哦!你的等级还没有55级哦!先升级再说吧
break

#IF
CHECKRENEWLEVEL > 0
#ACT
Messagebox:哦!你都进行过一转了还来干吗?
break

#IF
CHECKGAMEGOLD > 999
#ACT
gamegold - 1000
RENEWLEVEL 1 0 100
#CALL [\封号系统\封号系统.txt] @封号系统
#CALL [\封号系统\名字变色.txt] @名字变色
SendCenterMsg 253 180 恭喜<$USERNAME>一转成功,奖励可自由分配属性点100个!
#ELSESAY
哦!你连1000个元宝都没有!等凑足了元宝再说吧!


[@二转]
#IF
CHECKLEVELEX < 60
#ACT
Messagebox:哦!你的等级还没有60级哦!先升级再说吧
break

#IF
CHECKRENEWLEVEL > 1
#ACT
Messagebox 错误:你都进行过二转了还来干吗?有病呀你!
break

#IF
CHECKGAMEGOLD < 2000
#ACT
Messagebox:哦!你连2000个元宝都没有!等凑足了元宝再说吧!
break

#IF
CHECKRENEWLEVEL = 1
#ACT
gamegold - 2000
RENEWLEVEL 1 0 200
#CALL [\封号系统\封号系统.txt] @封号系统
#CALL [\封号系统\名字变色.txt] @名字变色
SendCenterMsg 253 180 恭喜<$USERNAME>二转成功,奖励可自由分配属性点200个!
#ELSESAY
哦!你都还没一转呢,一转了再来吧!


好了来看看这样是不是很简单,一个goto都没有又少了很多个段落,当然这是一个很简单的例子,但是他的实际用途是非常广泛的,这里尤其要是注意的是在一些每秒执行的定时器或者机器人脚本里面这么来写非常重要,每秒执行的脚本如果goto太多的话对引擎的负荷是很明显的,也是最容易出现脚本死循环的地方!包括站里我以前发的一些脚本或者最近有坛友也提出这么个问题,毕竟我也是一腔热血嘛!希望用到之前脚本的来看看这个帖子!

最后我们来总结一下,要简化一个脚本应该注意什么!我认为我的脑袋瓜子应该是挺好使的undefined!但是真的我文采不好,说不出个一二三来,我也只能说如果检测条件多的话难检测的条件应该是在最上面的,因为脚本都是一级一级往下执行的!同时要善于运用break,少用#ELSEACT+@goto!希望碎痕斑斑和walk斑斑或者站内的高手们能补充一下




上一篇:传奇私服跨时代佩戴指定装备获取封号脚本
下一篇:传送员精简美化脚本,适合各类版本,Leg引擎
版本修改,漏洞修复,脚本订做。QQ775251969 个性脚本站
www.wu79.com
回复

举报

1

主题

195

回帖

207

积分

二级GM

Rank: 3Rank: 3

积分
207
发表于 2014-12-23 13:02:37 | 显示全部楼层
好好 学习了 确实不错

0

主题

242

回帖

229

积分

二级GM

Rank: 3Rank: 3

积分
229
发表于 2014-12-23 14:27:31 | 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下

1

主题

203

回帖

332

积分

二级GM

Rank: 3Rank: 3

积分
332
发表于 2014-12-23 21:53:25 | 显示全部楼层
沙发???

0

主题

455

回帖

423

积分

二级GM

Rank: 3Rank: 3

积分
423
发表于 2014-12-24 02:08:50 | 显示全部楼层
这么强,支持楼主,佩服

0

主题

363

回帖

360

积分

二级GM

Rank: 3Rank: 3

积分
360
发表于 2014-12-24 04:59:49 | 显示全部楼层
不错 支持下。。。

0

主题

292

回帖

271

积分

二级GM

Rank: 3Rank: 3

积分
271
发表于 2014-12-24 12:25:29 | 显示全部楼层
看帖回帖是美德!

1

主题

188

回帖

188

积分

一级GM

Rank: 2

积分
188
发表于 2014-12-24 17:22:41 | 显示全部楼层
沙发???

0

主题

593

回帖

551

积分

三级GM

Rank: 4

积分
551
发表于 2014-12-24 20:54:50 | 显示全部楼层
非常好,顶一下

0

主题

513

回帖

617

积分

三级GM

Rank: 4

积分
617
发表于 2014-12-25 05:26:10 | 显示全部楼层
珍爱生命,果断回帖。

0

主题

449

回帖

421

积分

二级GM

Rank: 3Rank: 3

积分
421
发表于 2014-12-25 20:17:54 | 显示全部楼层
前排,哇咔咔

0

主题

368

回帖

471

积分

二级GM

Rank: 3Rank: 3

积分
471
发表于 2014-12-25 22:46:17 | 显示全部楼层
好,很好,非常好!

0

主题

630

回帖

605

积分

三级GM

Rank: 4

积分
605
发表于 2014-12-26 03:00:56 | 显示全部楼层
支持支持再支持

1

主题

387

回帖

356

积分

二级GM

Rank: 3Rank: 3

积分
356
发表于 2014-12-26 08:40:59 | 显示全部楼层
高手云集 果断围观

0

主题

289

回帖

271

积分

二级GM

Rank: 3Rank: 3

积分
271
发表于 2014-12-26 09:23:31 | 显示全部楼层
看帖回帖是美德!

0

主题

419

回帖

379

积分

二级GM

Rank: 3Rank: 3

积分
379
发表于 2014-12-27 06:38:10 | 显示全部楼层
发发呆,回回帖,工作结束~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新手推荐上一条 /1 下一条

传奇服务端|传奇一条龙|站点地图|手机版|gm基地|红鹰论坛 ( 冀ICP备2023015431号-1 )|网站地图

GMT+8, 2024-11-23 15:52

Powered by 传奇版本 X3.4

本站于2013年2月28日成立,至今运行: 天。本站所有资源均来自网络,严禁商业使用,请于24小时内删除!
快速回复 返回顶部 返回列表