[V8-GEE] Loopgoto循环的使用方式

脚本专区3年前 (2022)更新 酷皮
508 0 0
[V8-GEE] Loopgoto循环的使用方式 [V8-GEE] Loopgoto循环的使用方式

 

大部分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适用于各种繁琐的写法.例如永久回收装备 可以弄一个 一键回收永久装备.
或者其他一些 比较繁琐的检测.
好啦,今天的教程就到这里啦!

© 版权声明

相关文章

暂无评论

暂无评论...