大部分GM还在写着重复繁琐的代码.现在教大家使用循环方式写遍历检测的功能.
就拿我自己版本的装备收集举例,
该功能总共是433件装备可以收集,可以一件件的收集,也可以一键收集.
每件收集的装备都会给对应的属性.接下来给大家讲解思路和写法
1. 在QuestDiary 创建目录 装备收集系统
1. 在 装备收集系统 目录中 创建 装备收集列表.txt 主要用来显示需要收集的装备名称
2. 在 装备收集系统 目录中 创建 装备收集配置.ini 用来配置收集后给与的属性.
3. 在 装备收集系统 目录中 创建 装备收集数据.txt 用来保存玩家收集的数据.
例 装备收集列表.tx 里面写
木剑
裁决
……
……
例 装备收集配置.ini 里面写
[木剑]
收集属性=1
[裁决]
收集属性=2
……
……
以上的目录和文件创建好后.接下来就可以使用读写配置 和 自定义变量 自定义按钮 来实现这个功能
首先声明自定义变量
例:
VAR Integer HUMAN 木剑
LOADVAR HUMAN 木剑 ..\QuestDiary\装备收集系统\装备收集数据.txt
然后任意命名13个变量 值:1-13. 主要用于 GetCacheRandomText 读取 装备收集列表.txt 中的装备名称.
再用 ReadConfigFileItem 读取收集给与的属性.
#IF
NOT EQUAL S$装备收集物品1
#ACT
ReadConfigFileItem ..\QuestDiary\装备收集系统\装备收集配置.ini <$STR(S$装备收集物品1)> 收集属性 <$STR(S$装备收集属性显示1)>
#IF
NOT EQUAL S$装备收集物品2
#ACT
ReadConfigFileItem ..\QuestDiary\装备收集系统\装备收集配置.ini <$STR(S$装备收集物品2)> 收集属性 <$STR(S$装备收集属性显示2)>
…….
…….
在定义2个变量 显示收集和未收集显示的颜色,收集后则显示蓝绿色显示已收集,未收集显示灰色
#IF
#ACT
MOV N$收集颜色显示1 7
MOV N$收集颜色显示2 7
MOV S$收集状态显示1
MOV S$收集状态显示1
#IF
CHECKVAR HUMAN <$str(S$装备收集物品1)> > 0
#ACT
MOV N$收集颜色显示1 254
MOV S$收集状态显示1 (已收集)
#IF
CHECKVAR HUMAN <$str(S$装备收集物品2)> > 0
#ACT
MOV N$收集颜色显示2 254
MOV S$收集状态显示2 (已收集)
……
……
在用按钮显示出来..
AddArrButton 3 1 22 2598 2599 2600 3 <$str(N$收集颜色显示1)>#<$str(S$装备收集物品1)><$str(S$收集状态显示1)> 161#收集此后人物全属性增加{[<$STR(S$装备收集属性显示1)>]|31}点.
AddArrButton 3 2 22 2598 2599 2600 3 <$str(N$收集颜色显示2)>#<$str(S$装备收集物品2)><$str(S$收集状态显示2)> 161#收集此后人物全属性增加{[<$STR(S$装备收集属性显示2)>]|31}点.
……
…..
然后再QF写按钮触发.到这里我就不详细写了.都是简单的东西 大家还是要自己动手试试
接下来主要是写一下一键收集,和收集后怎么给属性.
用Loopgoto一键收集所有装备:
[@ButtonClick49]
#IF
SMALL N$收集装备CD 10
#ACT
sendmsg 6 [提示]操作过快,每10秒只能操作一次! ;防止有人恶意点击,每10秒才能点一次.
BREAK
#IF
#ACT
MOV N$收集装备CD 0
MOV N$装备收集行号 1
Loopgoto @装备收集属性计算1 435 ;总共多少件装备就写多少 这个是代表行数
#CALL [\总属性刷新.txt] @属性刷新 ;执行435次后才会执行这一段
GOTO @收集刷新 ;用于属性显示是否收集
[@装备收集属性计算1]
#IF
#ACT
;获取装备名称
GetCacheRandomText ..\QuestDiary\装备收集系统\装备收集列表.txt S$装备收集物品 <$STR(N$装备收集行号)>
#IF
CHECKITEM <$str(S$装备收集物品)> 1
CHECKVAR HUMAN <$str(S$装备收集物品)> = 0 ;是否已经收集过,大于0等于已经收集
#ACT
TAKE <$str(S$装备收集物品)> 1
CALCVAR HUMAN <$str(S$装备收集物品)> + 1
SAVEVAR HUMAN <$str(S$装备收集物品)> ..\QuestDiary\装备收集系统\装备收集数据.txt
INC N$装备收集行号 1 ;接着执行下一个装备的检测
BREAk
#IF
#ACT
INC N$装备收集行号 1 ;如果已经收集的话 则接着执行下一个装备的检测
BREAK
;用Loopgoto计算收集的总属性.
思路和上面一样 我就不详细述说了.
[@属性刷新]
#IF
#ACT
MOV N$装备收集行号 1
MOV N$装备收集属性总额 0
Loopgoto @装备收集属性计算 433
ADDBUTTON 22 50 2129 2140 2140 685 89 3 -1 250#收集介绍,本服所有粉色装备,橙色装备都可\250#以收集,收集后会给与一定的属性哦.\7#(点击对应的装备即可收集哦!)\31#当前以累计增加{[<$str(N$装备收集属性总额)>]|250}点全属性
INC N$攻击力总额 <$str(N$装备收集属性总额)>
INC N$物理防御总额 <$str(N$装备收集属性总额)>
INC N$魔法防御总额 <$str(N$装备收集属性总额)>
INC N$血量总额 <$str(N$装备收集属性总额)>
[@装备收集属性计算]
#IF
#ACT
GetCacheRandomText ..\QuestDiary\装备收集系统\装备收集列表.txt S$装备收集物品 <$STR(N$装备收集行号)>
ReadConfigFileItem ..\QuestDiary\装备收集系统\装备收集配置.ini <$STR(S$装备收集物品)> 收集属性 <$STR(N$装备收集属性值)>
#IF
CHECKVAR HUMAN <$str(S$装备收集物品)> > 0
#ACT
INC N$装备收集行号 1
INC N$装备收集属性总额 <$STR(N$装备收集属性值)>
BREAK
#IF
#ACT
INC N$装备收集行号 1
BREAK
就Loopgto适用于各种繁琐的写法.例如永久回收装备 可以弄一个 一键回收永久装备.
或者其他一些 比较繁琐的检测.
好啦,今天的教程就到这里啦!