- 积分
- 9883
- 威望
- 156
- 魅力
- 161
- 经验
- 5187
- 热心度
- 0
- 注册时间
- 2009-12-24
- 最后登录
- 2018-7-8
- 主题
- 55
- 回帖
- 1546
- 精华
- 4
- 阅读权限
- 90
该用户从未签到
论坛嘉宾
- 积分
- 9883
|
脚本DEBUG心得
花10分钟写一个脚本,花100分钟来调试,不是什么新鲜事儿。
新手最怕的不是写脚本,而是写出的脚本有BUG不知道如何调试。会DEBUG不一定是高手,不会DEBUG永远成不了高手。
我不是高手,我只是稍有点儿经验。以下是我调试脚本时的一些心得,想到哪说到哪,希望对大家有所帮助。
1.
低级错误
脚本无任何作用,检查以下项目:
ZVSE漏写
!?触发器标志写成!!接收器标志
敲错字母:例如!?BF写成!?BD
写错变量,如之前我把v591=1写成v951=1
漏写d, 例如R0/6/dv1000,写成R0/6/v1000
Ctrl+C、Ctrl+V后忘了修改相应内容
2.
语法错误
语法错误最常见,也最好查。
弹出的对话框第一行,就是错误代码行。
常见的语法错误:
对防守方英雄操作时没有加限制语句防守方英雄ID>-1时执行
对堆栈操作没有时没有加限制语句堆栈>-1时执行
对堆栈操作时堆栈号码指向了>41的值
参数命令大写写成小写。如HE0:S1/3,写成HE0:s1/3
针对英雄操作时,存储英雄ID的变量指向了>155或者<-1的值
对堆栈内怪物操作时没有限制怪物类型>-1数量>0时执行
对英雄变量操作,VRw146:+1;是对的,VRw146:d1;是不对的
!!HE-1:Fd-1/d/d/d;是对的,!!HE-1:Fd-v1/d/d/d;是不对的,如果一定要d-v1,先把v1*-1再dv1
IF语句显示对话框写的不完整,导致死机!!IF:Q1/21/1;一定会死机,不是真死,但你无法继续操作
调用函数漏写“P”
官方脚本提取时,注意宏变量是否在当前脚本中定义,调用的函数是否在当前脚本中
变量冲突,变量冲突不难查,但比较麻烦。对于地图内置脚本,先输出文本文档,然后用搜索功能检查某个变量是否在别处用过,v变量,z变量,FU,flag都可以这么检查。对于官方脚本,查变量登记表http://bbs.h3wog.com/ermres/
3.算法错误
最难查的错误,没有任何错误提示,结果却不是你想要的。
检查步骤:
多功能脚本出错,是哪个功能没有
触发器是否用对
接收器是否用对
变量是否写错
限制语句是否写错
如果此时检查不出,用!!IF语句显示所使用的变量,看是否是预期的值。
任何变量未经赋值就使用,它的值是0。比如在未给y31赋值的情况下,写!!FU66&y31=1:P;那这句代码永远不会工作
把一个触发器中的得到的值传递到另一个触发器中使用,必须使用v变量,或者放到函数参数变量中,如!!FU77:Py-12; 只有是和否两种情况的,可以考虑使用flag。
反复使用同一触发器时,y变量也可能会冲突。如果你不想检查繁多的y变量,最好的办法是触发后立即调用函数,把所有y变量放在函数体内,例如
!?BG;
!!FU77:P;
v1-v3,f-t快捷变量虽然说明上是永久变量,但脚本作者经常把它们做临时变量使用,不要用它们储存需要长期保存的值。
生物代码写错
魔法代码写错
英雄ID写错
文件路径写错
图片格式错误
战场网格位置写错
显示对话框忘记加限制flag1000为真时执行
给某一颜色加资源时忘记加限制当前活动颜色等于要操作的颜色时执行
删除一个可访问的物体时,上面可能有访问的英雄,更好的办法是不删除,而是把目标对象转成另外一种物体,例如把翡翠塔转成一个智慧石
给英雄增加一个宝物时,忘了检查他是否已经装备过组合宝物
战争机器是比较特殊的东西,有时它是宝物,有时它是生物,操作是要注意
给BOSS经验值时忘了给他的宠物加经验
对一追和战争机器的经验特级操作时,需要把攻防速命伤奖励写全,否则可能是空白
战后给英雄奖励时忘了限制触发的英雄无颜色时不给奖励
其他待补充,也欢迎所有喜欢ERM的朋友们补充 |
评分
-
1
查看全部评分
-
|