概述

某雀插件使用帮助文档

插件概述
本插件采用易语言为开发语言,如有杀毒软件提示为病毒均为误杀.如有疑惑请酌情使用.
本插件在原有GOM引擎功能基础上，增加各类功能以补足GOM引擎自带功能的缺失以及不足，针对各项已知漏洞进行查封，
对引擎部分功能进行相对应的优化。
反挂部分采用云技术更准确的采样信息，对各类非法辅助进行追封，尽可能减少内存占用得情况下，高效并准确的达到封挂的目的。
代码部分采用多位从事反外挂开发者提供的多项检测方法，包含更为智能的模拟鼠标键盘等挂机方式检测的技术。
对于M2占用内存过高等代码，进行相关优化。在此感谢对此插件提出宝贵意见以及相关帮助的各位技术人员。
3122.cn 传奇工具分享站

Copyright ? 2024 3122.cn. All Rights Reserved.


基本常量

插件使用帮助文档

功能介绍 | 常量名称 | 执行条件
当前攻击造成的伤害 | <$PKPOWER> | 任意脚本中均可调用
当前攻击的目标坐标X | <$ATTACKMONSTER_X> | 任意脚本中均可调用
当前攻击的目标坐标Y | <$ATTACKMONSTER_Y> | 任意脚本中均可调用
当前攻击的目标血量值 | <$ATTACKMONSTER_HP> | 任意脚本中均可调用
当前攻击的目标最大血量值 | <$ATTACKMONSTER_MAX_HP> | 任意脚本中均可调用
当前服务器系统时间 | <$TIME> | 任意脚本中均可调用
当前宝宝名称 | <$BABYNAME> | 需要在宝宝攻击触发字段内使用
当前宝宝攻击目标的名称 | <$BATTACKMONSTER_NAME> | 需要在宝宝攻击触发字段内使用
当前宝宝坐标X(需要在宝宝攻击触发字段内使用) | <$BATTACKMONSTER_X> | 需要在宝宝攻击触发字段内使用
当前宝宝坐标Y(需要在宝宝攻击触发字段内使用) | <$BATTACKMONSTER_Y> | 需要在宝宝攻击触发字段内使用
当前宝宝攻击的目标血量值 | <$BATTACKMONSTER_HP> | 任意脚本中均可调用
当前宝宝攻击的目标最大血量值 | <$BATTACKMONSTER_MAX_HP> | 任意脚本中均可调用
获取当前宝宝杀死的怪物名称 | <$SLAVEKILLMONNAME> | 任意脚本中均可调用
当前人物复活CD(单位为秒，0代表可立即复活，其他数值代表N秒) | <$RevivalTimeEx> | 任意脚本中均可调用
用于判断浑水摸鱼,此玩家是否加载好反挂且是否完成初始化(1代表可以) | <$HsmyState> | 任意脚本中均可调用
身上物品总强化数 包括时装、首饰盒) | <$UPGRADECOUNT> | 任意脚本中均可调用
身上物品强化值 0~16 身上物品 17~18时装 19~30生肖盒 | <$UPGRADECOUNT0>...<$UPGRADECOUNT30> | 任意脚本中均可调用
查看对方装备时触发保存人物名称 | <$USERSTATENAMEEX> | QF中[@QUERYUSERSTATE]调用
自动拾取 1为开启 0为关闭 | <$STR(N$AUTOPICKITEM)> |
自动回收 1为开启 0为关闭 | <$STR(N$AUTORECOVER)> |
死亡的宝宝名称 | <$DIESLAVENAME> | QF中[@OnSlaveDie]调用
获取自定义文本 | <$CLIENTTEXT> | 读取客户端Data文件夹zdywb.txt内容,内容格式 [自定义文本] 自定义文本=9pk
死亡时击杀者名字 | <$KILLERNAME> |
死亡时击杀者名字去除数字 | <$KILLERNAMECLIENT> |
死亡时击杀者坐标X | <$KILLERX> |
死亡时击杀者坐标Y | <$KILLERY> |
取下物品名称 | <$TAKEOFFNAME> |
佩戴物品名称 | <$TAKEONNAME> |


专属变量与接口

功能介绍 | 变量名称 | 执行条件（以下条件均在QM脚本中调用）
获取当前爆出物品的地图名 | <$STR(S$当前爆出地图名称)> | 在QFunction-0.txt 脚本内[@物品爆出反馈]中调用
获取当前爆出物品名称 | <$STR(S$当前爆出物品名称)> | 在QFunction-0.txt 脚本内[@物品爆出反馈]中调用
获取当前爆出物品的怪物名称 | <$STR(S$当前爆出怪物名称)> | 在QFunction-0.txt 脚本内[@物品爆出反馈]中调用
获取当前爆出物品归属人物名称 | <$STR(S$当前爆出物品归属者)> | 在QFunction-0.txt 脚本内[@物品爆出反馈]中调用
获取行会名称 | <$STR(S$当前行会名称)> | 在QFunction-0.txt 脚本内[@行会加入]与[@行会退出]中调用
获取回收数量 | <$STR(S$回收数量)> | 以下回收变量任何脚本都可调用，只是[BackpackRecovery_#](#为0-99) 中更为准确
获取回收得到的元宝数 | <$STR(S$回收元宝)> |
获取回收得到的金币 | <$STR(S$回收金币)> |
获取回收得到的泡点 | <$STR(S$回收泡点)> |
获取回收得到的灵符 | <$STR(S$回收灵符)> |
获取回收得到的金刚石 | <$STR(S$回收金刚石)> |
获取回收得到的荣誉 | <$STR(S$回收荣誉)> |
获取回收得到的声望 | <$STR(S$回收声望)> |
获取回收得到的经验 | <$STR(S$回收经验)> |
获取武器升级次数 | <$STR(S$武器升级次数)> | 在QFunction-0.txt 脚本内 [@装备升级成功] [@装备升级失败] [@装备升级破碎]中调用更为准确
商铺购买物品名称 | <$STR(S$购买商品名称)> | 购买商品名称 * 注 此变量仅在[@商铺购买触发] 接口中触发
商铺购买物品数量 | <$STR(N$购买商品数量)> | 购买商品名称 * 注 此变量仅在[@商铺购买触发] 接口中触发
多页背包点击哪个页面 | <$STR(N$OnClickBagPage)> | QF中多页背包调用 [@ExtBagPageCount] 中触发

公开接口（以下接口均在QFunction-0.txt 中使用） | 触发条件
[@移动超速] | 触发反外挂调用此接口
[@物理超速] | 触发反外挂调用此接口
[@攻击超速] | 触发反外挂调用此接口
[@验证开始] | 触发反外挂防脱机调用此接口
[@验证成功] | 触发反外挂防脱机调用此接口
[@验证超时] | 触发反外挂防脱机调用此接口
[@烈火触发] | 当人物使用相对应技能即触发此接口
[@开天触发] | 当人物使用相对应技能即触发此接口
[@逐日触发] | 当人物使用相对应技能即触发此接口
[@进入地图] | 字面含义
[@离开地图] | 字面含义
[@进入浑水摸鱼模式] | 大乱斗中使用
[@解除浑水摸鱼模式] | 大乱斗中使用
[@反挂加载] | 反挂加载成功触发
[@家庭用户] | 判断是家庭用户触发
[@网吧用户] | 判断是网吧用户触发
[@虚拟机环境] | 判断在虚拟机中运行触发
[@宝宝物理攻击] | 字面含义(如需使用切割，请使用宝宝专用切割命令)
[@宝宝魔法攻击] | 字面含义(如需使用切割，请使用宝宝专用切割命令)
[@购买商铺物品] | 在商铺购买物品触发
[@装备升级成功] | 沙巴克武器店升级武器触发
[@装备升级失败] | 沙巴克武器店升级武器触发
[@装备升级破碎] | 沙巴克武器店升级武器触发
[@商铺购买触发] | 专属变量名 <$STR(S$购买商品名称)>
[@BackpackRecovery_0]（0-99） | 回收装备触发
[@RecalcFunc] | 对象属性更改触发
[@武器幸运触发] | 武器掉幸运时触发 DROPLUCKY 控制最终结果 1不掉幸运 0掉幸运


脚本命令

脚本命令目录

全屏吸怪

单独切割

范围切割

血量设置(百分比)

整理背包

鞭尸及复活

获取设置人物变量

获取装备星星数

制造物品(带来源)

修改物品来源

范围伤害

播放人物效果

脚本解毒

脚本解毒(带参数)

循环执行脚本次数

获取背包指定物品数量

根据物品名获取物品数据库字段参数值

根据物品Idx获取物品数据库字段参数值

禁止移动

动态调整特殊属性

失明状态

调整攻击倍数

获取物品框物品信息

持续掉血

脚本放置地面物品

爆出身上指定物品

取行会成员数

脚本激活技能

设置技能伤害与BUFF

脚本释放魔法技能

扩展NPC点击参数

查看对方装备触发

嘲讽范围内怪物

嘲讽范围内怪物Ex

自动拾取

检测背包物品星星数

删除背包物品

查看对象装备

假人摆摊

插件百分比计算命令

秒数转换时间格式

排版专用命令

检测背包空格数量

开启透视功能

查询对象位置

随机传送

死亡不掉装备的次数


全屏吸怪

全屏吸怪

MoveMonsters

参数1：中心X
参数2：中心Y
参数3：影响范围(0-999)
参数4：目标类型(0=怪物 1=人物 2=怪物+人物)
参数5：最大吸取数量(0=不限制数量)

参数6：判断怪物等级(0=不判断，其他数值的话。怪物等级小于等于参数6吸取)

参数7：判断是否嘲讽状态（0=不判断 1= 静止的怪才吸取, 避免吸取其他玩家的怪)

例子1

[@attack]

#IF

#ACT

MoveMonsters <$X> <$Y> 20 0 0 0 0

sendmsg 6 范围20的所有怪物都吸过来了

例子2

[@attack]

#IF

#ACT

MoveMonsters <$X> <$Y> 20 0 0 0 1

sendmsg 6 范围20的所有怪物都吸过来了,不包括活跃的怪物


单独切割

单独切割
DelMonHp
参数1=百分比或切割值
参数2=0:以当前HP的百分比 1:以参数1的值切割 2::以最大HP的百分比
参数3=0不判断嘲讽 1判断嘲讽过的怪才切割
参数4=0都切割 1:本次切割只切割角色 2:本次切割只切割英雄 3:本次切割只切割怪物
参数5=分母基数(<=100等于100)
参数6=是否播放切割动画(空或0不播放,1播放)
例子1：
#ACT
；本次切割只切割怪物10点HP
DELMONHP 10 1 0 3
例子2：
#ACT
；本次切割只切割人物当前血量百分之8
DELMONHP 8 0 0 1
例子3：
#ACT
；本次切割只切割人物当前血量千分之8
DELMONHP 8 0 0 1 1000


范围切割

范围切割
DelMonHpEx
参数1=百分比或切割值

参数2=0:以当前HP的百分比 1:以参数1的值切割 2:以最大HP的百分比

参数3=0不判断嘲讽 1判断嘲讽过的怪才切割

参数4=0以自身范围 1以攻击目标范围

参数5=X坐标

参数6=Y坐标

参数7=范围

参数8=0都切割 1:本次切割只切割角色，2:本体切割只切割英雄，3:本次切割只切割怪物。

参数9=分母基数(<=100等于100)

参数10=是否播放切割动画(空或0不播放,1播放)

例子1：
#ACT

;切割自身1格坐标范围的怪物10/100 HP
DELMONHPEX 10 2 0 0 <$X> <$Y> 1 3

例子2：
#ACT

;切割自身1格坐标范围的怪物10/1000 HP
DELMONHPEX 10 2 0 0 <$X> <$Y> 1 3 1000 1


血量设置(百分比)

调整血量(HP)
ADDHPPER
参数1:控制符(+,-,= )
参数2:血量值(百分比)
例子:
[@加血]
#if
#act
ADDHPPER = 10
sendmsg 1 您的血量已调整到百分之十
调整蓝量(MP)
ADDMPPER
参数1:控制符(+,-,= )
参数2:血量值(百分比)
例子:
[@加血]
#if
#act
ADDMPPER = 10
sendmsg 1 您的魔法值已调整到百分之十


整理背包

整理背包
QueryBag
通过脚本使背包重新刷新

[@main]
#if
#act
QueryBag
SendMsg 0 你的背包已经整理好了


鞭尸及复活

鞭尸及复活
WHIPCORPSE
通过脚本使怪物复活或再次爆出物品(不会影响怪物首次死亡爆出物品规则)
参数1 : 1为复活怪物,0再次爆出物品

[@KillMon]
#IF
#ACT
WHIPCORPSE 1
SENDMSG 1 250 0 触发鞭尸怪物复活了。

[@KillMon]
#IF
#ACT
WHIPCORPSE 0

SENDMSG 1 250 0 触发鞭尸怪物爆出了新物品。


获取设置人物变量

获取对象变量
GetHumVar
通过脚本获取指定人物变量值
参数1; 对象名称
参数2; 变量名称
参数3; 保存到变量名称

[@对方变量]
输入需要获取变量的<人物名称/@@InPutString3>
[@InPutString3]
#IF
#ACT
GetHumVar S3 <$STR(T5)> S4
SENDMSG 6 你已成功取得对方T5变量<$STR(S4)>

SetHumVar

通过脚本设置指定人物变量

参数1; 对象名称
参数2; 变量名称
参数3; 设置变量内容

[@设置变量]
输入要设置变量的<人物名称/@@InPutString4> 自己的变量<$STR(T5)>
[@InPutString4]
#IF
#ACT
SetHumVar S4 T5 20000
SENDMSG 6 你已成功取得对方T5变量改为20000


获取装备星星数

获取装备星星数
GETUPGRADECOUNT
参数1: 位置
参数2: 保存到变量名
位置说明：
-1 全身
0 盔甲
1 武器
2 照明物
3 项链
4 头盔
5 右手镯
6 左手镯
7 右戒指
8 左戒指
9 护身符
10 腰带
11 鞋子
12 宝石
13 斗笠
14 军鼓
15 马牌
16 盾牌
17 时装武器
18 时装衣服、
19-30 首饰盒1-12

 [@取星星]
#if
#act
GetUpgradeCount 0 N0
SendMsg 0 衣服的强化星星数为 <$STR(N0)>
[@取星星]
#if
#act
GetUpgradeCount -1 N0
SendMsg 0 全身装备星星数为 <$STR(N0)>


制造物品(带来源)

制造物品可设置来源
GiveEx
NPC直接给物品到背包脚本，带指定物品来源

参数1:装备名称
参数2:来源类型 2=自定义来源 4=杀怪掉落
参数3:地图名
参数4:怪物名/来源名
参数5:角色名称(省略或使用%s时获取当前人物名)
参数6:来源时间(省略或使用%s时获取当前时间)
提示：参数1到参数6支持变量

例子:

杀死怪物获得(部分参数自动获取):
GiveEx 裁决之杖 4 死亡棺材 暗之触龙神 %s %s

杀死怪物获得(指定所有参数):
GiveEx 裁决之杖 4 死亡棺材 暗之触龙神 龙在天下 2010-01-01 00:00:01

通过活动获得(部分参数自动获取):
GiveEx 裁决之杖 2 盟重省 土城酷跑活动 %s %s

通过活动获得(指定所有参数):
GiveEx 裁决之杖 2 盟重省 土城酷跑活动 吃吃 2010-01-01 00:00:01

或变量操作：

mov s1 裁决之杖
mov s2 4
mov s3 死亡棺材
mov s4 暗之触龙神
mov s5 %s
mov s6 %s
GiveEx <$str(s1)> <$str(s2)> <$str(s3)> <$str(s4)> <$str(s5)> <$str(s6)>


修改物品来源

修改物品来源
CHANGEMAKEITEMINFO
通过脚本修改身上物品来源
参数1; 位置(0-18穿在身上的装备)
参数2; 类型(0没有物品来源 1GM 2NPC 3商铺 4怪物 5系统 6挖矿)
参数3; 地图名称（不能为空）
参数4; 人物名称(如果没有用*代替,不能为空)
参数5; 怪物名称(如果没有用*代替，不能为空)
参数6; 是否修改物品来源时间（1为修改当前时间，为空不修改)

例:1 修改当前武器物品来源（支持变量）

[@修改物品来源]
#if

#act
CHANGEMAKEITEMINFO 1 4 <$MapTitle> <$USERNAME> 白野猪 1

例:2 修改当前武器物品来源（清空人物名与怪物名）

[@修改物品来源]
#if
#act
CHANGEMAKEITEMINFO 1 4 <$MapTitle> * * 1


范围伤害

范围伤害
RangeHarm
参数1: X坐标
参数2: Y坐标
参数3: 范围
参数4: 伤害值
参数5: 附加效果0=无，1=击退，2=冻结，3=麻痹，4=吸血，5=吸蓝，6=真实伤害，7=冰冻，8=蛛网效果，9=红毒，10=绿毒
参数6: 附加属性值 分别对应 击退距离 冻结时间 麻痹时间 吸血值 吸蓝值 真实伤害值
参数7: 判断类型 0打击所有目标 1只对人物 2只对怪物
参数8: 最大打击数量 0代表范围内所有目标
参数9: 是否触发QF 0不触发、1触发，当受到此命令打击的人物(参数4有伤害值才行),触发QF中的[@RangeHarmX],X代表附加效果序号
参数10: 播放自身特效编号 0代表没有,特效编号,在本插件 特效设置 ---> 扩展特效中添加

例: 以下代码代表 人物坐标5格范围内3个怪物将受到麻痹状态 并且受到10点伤害 将调用扩展特效界面编号为3的特效

[@Attack]
#IF

#ACT
RangeHarm <$X> <$Y> 5 10 3 2 0 3 1 3


播放人物效果

播放人物效果
PlayEffectEx
参数1:效果编号 (特效编号在本插件 特效设置-->扩展特效中设置)‘可在任意脚本中调用 ’

[@Struck]
#IF
#ACT

PlayEffectEx 3

SENDMSG 5 你被攻击触发了特效


脚本解毒

脚本解毒
DETOXIFCATION
通过脚本解除身上红毒绿毒

[@main]
#if
#act
DETOXIFCATION
SendMsg 0 你的红毒绿毒已经全部清除


脚本解毒(带参数)

脚本解毒(带参数)
DETOXIFCATIONEX
通过脚本解除身上状态
参数1:1 绿毒 2 红毒 3 麻痹 4 冰冻 5 网格

[@main]
#if
#act
DETOXIFCATIONEX 1
SendMsg 0 你的绿毒已经清除


循环执行脚本次数

循环执行脚本次数
Loopgoto

参数1= @脚本
参数2= 脚本运行次数（为空或0时，运行1次,1就运行一次,100就运行100次）

[@循环执行]
#if
#ACT
mov N1 0
mov N2 1
Loopgoto @运算 100
sendmsg 6 1加到100的结果为：<$STR(N1)>
[@运算]
#ACT
Inc <$STR(N1)> <$STR(N2)>
Inc N2 1


获取背包指定物品数量

获取背包指定物品数量
GetItemsNumber
参数1: 物品名称
参数2:变量名(用来保存返回的数量)
参数3:需要的数量，如果为空或者为0，则参数2返回背包物品的数量，大于0则判断离条件数量还差多少个，如果数量满足则返回0
参数4:是否叠加物品 1为计算叠加 0为不计算叠加数量

[@main]
#if
#act
GetItemsNumber 乌木剑 N0
SendMsg 6 你的背包共用乌木剑【<$STR(N0)>】个
#if
#act
mov N1 2
GetItemsNumber 乌木剑 N0 N1
#if
Equal N0 0
#act
SendMsg 6 你需要乌木剑<$STR(N1)>个，你的背包的乌木剑数量已经足够了
#elseact
SendMsg 6 你需要乌木剑<$STR(N1)>个，你目前还缺少【<$STR(N0)>】个


根据物品名获取物品数据库字段参数值

根据物品名获取物品数据库字段参数值
GetDBItemFieldValue
根据物品名获取物品数据库字段参数值
参数1：物品名
参数2：字段名
参数3：变量名，用户保存获取到的参数值

[@main]
#if
#act
GetDBItemFieldValue 沃玛号角 Idx N0
SendMsg 6 沃玛号角的Idx是【<$STR(N0)>】点


根据物品Idx获取物品数据库字段参数值

根据物品Idx获取物品数据库字段参数值
GetDBIdxItemFieldValue
根据物品Idx获取物品数据库字段参数值
参数1：物品Idx
参数2：字段名
参数3：变量名，用户保存获取到的参数值

[@main]
#if
#act
GetDBItemFieldValue 沃玛号角 Idx N0
SendMsg 6 沃玛号角的Idx是【<$STR(N0)>】点
GetDBIdxItemFieldValue N0 StdMode N1
SendMsg 6 沃玛号角的StdMode是【<$STR(N1)>】点


禁止移动

禁止移动
NOWALK
禁止移动但不影响使用物品及点击NPC

[@main]
#if
#act
NOWALK 1

SendMsg 0 你已经被禁止移动


动态调整特殊属性

动态调整特殊属性
ChangeSP
通过脚本调整特殊属性

//参数1：特殊属性编号 0=神秘人 1=传送 2=麻痹 3=防麻痹 4=复活 5=破复活 6=护身
    7=防护身 8=技巧 9= 探测
10= 复活成功率(默认100,复活成功率0~100)
11=
    麻痹几率(1~100,默认100,0也是100)
12= 防麻痹几率(1~100,默认100,0也是100)
13=
    破复活几率(1~100,默认100,0也是100)
14=
    破护身几率(1~100,默认100,0也是100)

20= 隐身模式（此模式非GM隐身方式, 玩家与反隐身怪物均可看到。如；魔龙系列反隐身怪物等。）

所有带几率的属性，如想其发挥作用,前者必须带有此属性效果,如装备带有相同属性的效果,尽量避免使用。

//参数2: 0=关闭 1= 开启

//参数3: 持续时间 单位秒 参数0或空=无限制，参数大于0为时长，(参数1是10、11、12、13、14时,此参数3变为几率控制)
注意：该功能小退失效，当玩家身上装备拥有特殊属性装备时，优先生效装备上的特殊属性。如未拥有同类特殊属性，则可以使用此命令赋予。（套装属性增加的同类属性完全失效，可以通过套装触发来用脚本命令ChangeSP添加特殊属性）

触发: 本命令到到时间后触发QFunction-0.txt [@ChangeSPTimeOutX] X 代表属性编号

[@ChangeSPTimeOut0]
#if
#act
SENDMSG 5 250 0 神秘人时间到

[@麻痹]
#if
#act
ChangeSP 2 1 120
ChangeSP 11 1 10

sendmsg 6 您开启麻痹功能 持续时长为2分钟，并麻痹几率为10%
(@@sendmsg )
%100
[@main]
<开启神秘人/@神秘人> <开启传送/@开启传送> <开启麻痹/@开启麻痹> <开启防麻痹/@开启防麻痹> <开启复活/@开启复活>\<开启破复活/@开启破复活> <开启护身/@开启护身> <开启防护身/@开启防护身>\
<开启技巧/@开启技巧> <开启探测/@开启探测>\\
<开启复活几率/@开启复活几率> <开启麻痹几率/@开启麻痹几率> <开启防麻痹几率/@开启防麻痹几率> \<开启破复活几率/@开启破复活几率> <开启破护身几率/@开启破护身几率>\
[@开启破护身几率]
#if
#act
ChangeSP 14 1 40
sendmsg 6 开启破护身几率。
[@开启破复活几率]
#if
#act
ChangeSP 13 1 100
sendmsg 6 开启破复活几率。
[@开启防麻痹几率]
#if
#act
ChangeSP 12 1 50
sendmsg 6 开启防麻痹几率。
[@开启麻痹几率]
#if
#act
ChangeSP 11 1 80
sendmsg 6 开启麻痹几率。
[@开启复活几率]
#if
#act
ChangeSP 10 1 60
sendmsg 6 开启复活几率。
[@开启探测]
#if
#act
ChangeSP 9 1 120
sendmsg 6 开启探测。
[@开启技巧]
#if
#act
ChangeSP 8 1 120
sendmsg 6 开启技巧。
[@开启防护身]
#if
#act
ChangeSP 7 1 120
sendmsg 6 开启防护身。
[@开启护身]
#if
#act
ChangeSP 6 1 120
sendmsg 6 开启护身。
[@开启破复活]
#if
#act
ChangeSP 5 1 120
sendmsg 6 开启破复活。
[@开启复活]
#if
#act
ChangeSP 4 1 120
sendmsg 6 开启复活。
[@开启防麻痹]
#if
#act
ChangeSP 3 1 120
sendmsg 6 开启防麻痹。
[@开启麻痹]
#if
#act
ChangeSP 2 1 120
sendmsg 6 开启麻痹。
[@开启传送]
#if
#act
ChangeSP 1 1 120
sendmsg 6 开启传送。
[@神秘人]
#if
#act
ChangeSP 0 1 120
sendmsg 6 神秘人


失明状态

失明状态
CHANGESTATUS
让人物进入失明状态
参数1: 1开启 0 关闭
参数2: 范围 0-14 最佳范围5
参数3: 时间(秒)

[@main]
#if
#act
ChangeStatus 1 3 10
SendMsg 0 你以进入失明只能观察到3格以内的范围.失明状态持续10秒。


调整攻击倍数

调整攻击倍数
ChangeDamage
调整人物当前攻击倍数，人物小退清除倍数状态

参数1=0全部,1=玩家,2=怪物

参数2=威力倍数 (威力倍数默认100 除以100= 真实倍数，如200表示2倍)

参数3=持续时间(秒) -1=在线一直有效

触发: 本命令到到时间后触发QFunction-0.txt [@ChangePowerTimeOut X] X 代表属性编号

[@main]
#if
#act
ChangeDamage 0 200 50
sendmsg 6 当前人物开启2倍攻击持续50秒！

[@ChangePowerTimeOut1]
#act
sendmsg 6 你对所有的倍攻已恢复正常！！！
[@ChangePowerTimeOut2]
#act
sendmsg 6 你对人物的倍攻已恢复正常！！！
[@ChangePowerTimeOut3]
#act
sendmsg 6 你对怪物的倍攻已恢复正常！！！

Copyright ? 2021 baidu . All Rights Reserved.


获取物品框物品信息

获取物品框中物品信息
GetBoxItem
获取OK物品框中物品信息
参数1 OK框编号(0~7)
参数2 获取类型(0物品名称、1星星数量、2来源类型、3来源地图名、4来源怪物名/来源名、5来源角色名称、6来源时间 7物品ID)
参数3 存放变量

[@main]
#if
#act
GetBoxItem 0 0 S1
GetBoxItem 0 1 S2
GetBoxItem 0 2 S3
GetBoxItem 0 3 S4
GetBoxItem 0 4 S5
GetBoxItem 0 5 S6
GetBoxItem 0 6 S7
SendMsg 6 编号0的OK框物品名称为:[<$STR(S1)>],星星数量:[<$STR(S2)>],来源类型:[<$STR(S3)>],来源地图名:[<$STR(S4)>],来源怪物名称:[<$STR(S5)>],来源角色名:[<$STR(S6)>],来源时间:[<$STR(S7)>]


持续掉血

持续掉血功能
ContinuedDecrease
通过脚本使人物持续掉血

参数1：掉血值
参数2：持续时间
参数3：掉血类型（0=固定值，1=当前血量百分比，2=最大血量百分比）
参数4：提示内容 可空

只能对玩家使用

例子：

#act
ContinuedDecrease 10000 20 0 你中了埃博拉病毒，每秒掉血10000点，持续20秒！

支持多级调用


脚本放置地面物品

脚本放置地面物品
ThrowItemEx
通过脚本模仿怪物爆出物品
参数1: 爆出物品地图
参数2: 爆出物品坐标X(本示例使用怪物坐标)
参数3: 爆出物品坐标Y
参数4: 爆出物品范围
参数5: 物品名
参数6: 立即可拾取(0 不是本人击杀爆出的物品不能马上拾取 1 任何人都可马上拾取)
参数7: 保护时间(不是归属本人需要等待时间)
参数8: 自定义来源(本来源支持变量)
注* 本命令支持M2->查看->查看列表信息二->物品规则中的 [掉落提示] 无需额外设置提示信息。
支持脚本中调用等同于制造物品
[@main]
#if
#act
ThrowItemEx 3 344 334 3 天魔神甲 0 60 <$MapTitle>|练功师|<$USERNAME>|<$TIME>

[@KillMon] <- 支持在本接口中调用
#IF
#ACT
ThrowItemEx <$map> <$KILLMONX> <$KILLMONY> 3 天魔神甲 0 60 <$MapTitle>|<$KILLMONNAME>|<$USERNAME>|<$TIME>

同时支持一下自定义格式

[@OnKillMob] <- 支持在本接口中调用
#IF
#ACT
ThrowItemEx <$map> <$KILLMONX> <$KILLMONY> 3 天魔神甲 0 60 北京天上人间|香车美女|快乐的小二逼|<$TIME>


爆出身上指定物品

爆出身上指定位置的物品
HumanDropUseItem
使用脚本命令实现人物掉落装备
参数1: 位置(-1表示随机位置，0~30为指定装备位置 : 0~16 身上物品 17~18 时装 19~30 十二生肖)
参数2: 名称变量 (用来保存掉落的物品)
[@PlayDie]
#IF
#ACT
HumanDropUseItem 0 S11
SENDMSG 5 255 70 客官，你的装备爆了：<$STR(S11)>


取行会成员数

取当前行会成员数量
GETGUILDMEMCOUNT
通过脚本获取行会成员数量
参数1: 保存数量变量名
参数2: 需要获取数量的行会名(为空的时候获取自身行会)

[@main]

#if
#act
GETGUILDMEMCOUNT N$人数 <$GUILDNAME>
sendmsg 6 你当前行会成员数：<$STR(N$人数)>


脚本激活技能

脚本激活技能
ActivateSkills
通过脚本激活烈火,逐日,开天
参数1: 0烈火 1逐日 2开天
参数2:1无视CD 0正常方式(采取M2定义的CD)

[@main]
#if
#act
ActivateSkills 0 1


设置技能伤害与BUFF

设置技能伤害与BUFF
SetSkillPower
通过脚本让技能支持BUFF附加或伤害倍数
参数1 技能id,同个ID,只能附加一种BUFF(所需要技能ID请查阅技能数据库 MagID字段中技能ID 支持战士技能 0为普通攻击)
参数20=全部,1=玩家,2=怪物
参数3 BUFF属性,1倍数,2麻痹,3冻结,4击退,5吸血,6吸蓝,7红毒,8绿毒,9蛛网
参数4 触发几率(1~100)
参数5 随机最小值(如果参数3是倍数，这里的值需要乘以100,如果参数3是绿毒、红毒，这里就是毒的持续秒数)
参数6 随机最大值(如果参数3是倍数，这里的值需要乘以100，最大值不能小于最小值，高于或等于均可,如果参数3是绿毒、红毒，这里就是毒的伤害值和破防值)
参数7 持续时间(秒) -1=永久，0就是立马关闭

[@main]
#if
#act
SetSkillPower 13 0 1 100 300 500 10
SendMsg 5 你的灵魂火符有100%几率触发3-5倍伤害，该状态持续10秒。

[@main]

#if
#act
SetSkillPower 13 0 2 100 3 5 10 （冰冻同理）
SendMsg 5 你的灵魂火符有100%几率触发3-5秒麻痹效果，该状态持续10秒。

[@main]

#if
#act
SetSkillPower 13 0 4 100 3 5 10
SendMsg 5 你的灵魂火符有100%几率触发3-5格击退效果，该状态持续10秒。

[@main]

#act
SetSkillPower 13 0 5 100 300 500 10 （吸蓝同理）
SendMsg 5 你的灵魂火符有100%几率触发300-500吸血效果，该状态持续10秒。


脚本释放魔法技能

脚本释放魔法技能
ReleaseMagic
通过脚本释放魔法技能
参数1:技能ID
参数2:0 (待定)
参数3:是否显示动画(1 显示 0 不显示 此效果为自身观察到的效果)
参数4:攻击坐标 (0 攻击目标坐标 1 自身人物坐标)
参数5:技能等级强化技能等级(默认3级)
参数6:强化技能等级(默认0级)

[@MagicAttack]
#IF
equal <$CURRRUSEMAGICID> 11 (此处ID 是雷电术ID 对应魔法数据库中MagID)
#ACT
RELEASEMAGIC 33 18 1 2
SENDMSG 6 你雷电术触发一次冰咆哮！


扩展NPC点击参数

扩展NPC点击参数
扩展NPC脚本前往触发带参数
新增NPC标签跳转支持参数：<测试/@测试(1,2,3,4,5,6,7,8,9,10)>

功能说明:
@测试(1,2,3,4,5,6,7,8,9,10) 括号里面的代表参数，可以支持10个参数，以小逗号隔开
新增命令：CHECKSCRIPTPARAM 参数1
功能说明:用于检测参数是否正常，防止非法封包刷数据，参数1是标签中括号里面的内容

新增变量：<$SCRIPTPARAM1>--<$SCRIPTPARAM10>
功能说明:
@测试(1,2,3,4,5,6,7,8,9,10)括号里面的内容分别对应<$SCRIPTPARAM1>--<$SCRIPTPARAM10>
在前往标签后:<$SCRIPTPARAM1>变量内容为1，<$SCRIPTPARAM2>变量为2，以此类推<$SCRIPTPARAM10>变量为10，支持中文
例：
<测试1/@测试(2000,3000,4000,麻痹戒指,5,6,7,8,9,10)>\
<测试2/@测试(2000,3000,4000,复活戒指,5,6,7,8,9,10)>\
<测试3/@测试(2000,3000,4000,护身戒指,5,6,7,8,9,10)>\
[@测试]
#or
CHECKSCRIPTPARAM 2000,3000,4000,麻痹戒指,5,6,7,8,9,10
CHECKSCRIPTPARAM 2000,3000,4000,复活戒指,5,6,7,8,9,10
CHECKSCRIPTPARAM 2000,3000,4000,护身戒指,5,6,7,8,9,10
#act
sendmsg 6 <$SCRIPTPARAM1> - <$SCRIPTPARAM2> - <$SCRIPTPARAM3> - <$SCRIPTPARAM4> - <$SCRIPTPARAM5> - <$SCRIPTPARAM6> - <$SCRIPTPARAM7> - <$SCRIPTPARAM8> - <$SCRIPTPARAM9> - <$SCRIPTPARAM10>
break
#elseact
sendmsg 6 非法的参数
例：
[@main]
合成系统：\ \
<合成麻痹戒指/@合成(1000,2000,3000,圣战戒指,麻痹戒指)>\ \
<合成复活戒指/@合成(1000,2000,3000,天尊戒指,复活戒指)>\ \
<合成护身戒指/@合成(1000,2000,3000,天尊戒指,护身戒指)>
[@合成]
#or
;检查参数是否这几组，防止有可能被刷数据
CHECKSCRIPTPARAM 1000 2000 3000 圣战戒指 麻痹戒指
CHECKSCRIPTPARAM 1000 2000 3000 天尊戒指 复活戒指
CHECKSCRIPTPARAM 1000 2000 3000 天尊戒指 护身戒指
#ELSEACT
;有人用抓包工具刷数据并跳过了检测
sendmsg 6 非法的参数
break
#if
CHECKGAMEGOLD > <$SCRIPTPARAM1>
CHECKGAMEDIAMOND > <$SCRIPTPARAM2>
CHECKGAMEGIRD > <$SCRIPTPARAM3>
checkitem <$SCRIPTPARAM4> 2
#act
Gamegold - <$SCRIPTPARAM1>
GAMEDIAMOND - <$SCRIPTPARAM2>
GAMEGIRD - <$SCRIPTPARAM3>
take <$SCRIPTPARAM4> 2
Give <$SCRIPTPARAM5> 1
sendmsg 6 恭喜合成<$SCRIPTPARAM5>成功。
break
#elsesay
合成<$SCRIPTPARAM5>失败。\
合成<$SCRIPTPARAM5>需要：\
元宝:[<$SCRIPTPARAM1>]，金刚石:[<$SCRIPTPARAM2>]，灵符:[<$SCRIPTPARAM3>]，[<$SCRIPTPARAM4>]:2个。


查看对方装备触发

查看对方装备触发
@QUERYUSERSTATE
触发QF脚本中@QUERYUSERSTATE字段
新增常量 <$USERSTATENAMEEX>

[@QUERYUSERSTATE]
#IF
#ACT
sendmsg 6 [<$USERSTATENAMEEX>] 正在在查看你的装备


嘲讽范围内怪物

嘲讽范围内怪物
DoTaunt
参数1: 最小范围
参数2: 最大范围
参数3: 怪物等级(只有低于等级的怪才会被嘲讽)

[@main]
#if
#act
DoTaunt 1 5 5

SendMsg 0 你嘲讽了5级以下怪物


嘲讽范围内怪物Ex

嘲讽范围内怪物EX
DoTauntEx
参数1: 最小范围
参数2: 最大范围
参数3: 怪物等级，写0则可嘲讽所有级别怪物
参数4: 单次嘲讽数量，0表示不限制数量
参数5: 1:秒血 2:冻结 3:麻痹 4:红毒 5:绿毒
参数6: 参数5为1:秒血时表示秒血的百分比，参数5为其它则是对目标的伤害值
参数7: 伤害时长

[@main]
#if
#act
DoTauntEx 1 5 0 5 1 10 0

SendMsg 6 嘲讽范围5格内最多5只怪物并切割了他们10%的HP


自动拾取

自动拾取(自动捡物品) 注*本功能需在插件中开启自动拾取后可使用
AUTOPICKITEM
参数1: 0关闭 1开启

单独开启示例:

[@main]
#if
#act
AUTOPICKITEM 1
SendMsg 0 自动拾取已经开启！

登录自动开启示例:(在目录 Envir\MapQuest_def\ 中文件名为QManage.txt的脚本)

[@Login]
#IF
#ACT
AUTOPICKITEM 1
SENDMSG 0 触发登录脚本开启自动拾取功能


检测背包物品星星数

检测背包物品星星数量及物品数量
CheckItemupgradeCountex
参数1 物品名称
参数2 星星数量
参数3 物品数量
说明:此命令可用于高级合成 如以下示例。

[@main]
#if
CheckItemupgradeCountex 天魔神甲 80 2
#act
TAKEUPGRADEITEM 天魔神甲 80 2
give 雷霆战甲(男)
sendmsg 7 恭喜您合成雷霆战甲!
#ELSEACT
sendmsg 7 对不起您没有80星的天魔神甲!


删除背包物品

删除指定星星数的物品
TAKEUPGRADEITEM
参数1 物品名称
参数2 物品星星数
参数3 物品数量
说明:此功能可用于高级合成,示例如下。

[@main]
#if
CheckItemupgradeCountex 天魔神甲 80 2
#act
TAKEUPGRADEITEM 天魔神甲 80 2
give 雷霆战甲(男)
sendmsg 7 恭喜您合成雷霆战甲!
#ELSEACT
sendmsg 7 对不起您没有80星的天魔神甲!


查看对象装备

查看对象装备
USERSTATE
通过脚本查看对象装备
参数1:对象名称

[@main]
#if
#act
USERSTATE 佛挡杀佛


插件百分比计算命令

插件百分比计算命令
CalcPercent
参数: 值
参数: 百分比
参数: 结果变量

[@main]
#if
#act
CalcPercent 200 5 N1

SendMsg 6 200的5%为<$STR(N1)>


插件自定义比例计算命令

插件自定义比例计算命令
CalcPercentEx
参数: 数值
参数: 数值的比例
参数: 比例规则(如 100 则是百分比 1000则是千分比 等等。。)
参数: 结果变量

[@main]
#if
#act
CalcPercentEx 200 5 1000 N1

;此段求200的千分之5是多少

SendMsg 6 200的5‰为<$STR(N1)>


秒数转换时间格式

秒数转换时间格式
DecodeTime
参数: 结果变量
参数: 传递时间

[@main]
#if
#act
mov G24 5000
DecodeTime S50 <$STR(G24)>
SENDMSG 6 时间 <$STR(S50)>

显示结果为 时间 00天01时23分20秒


排版专用命令

排版专用命令
text:
通过此命令修改脚本文本所在位置（无视换行符）
参数1:内容文本
参数2:左边位置
参数3:顶边位置
参数4:预留(待用)

[@main]
<text:排版命令展示1:20:48:1>\\未设置颜色值默认是红色
<text:排版命令展示2:20:68:1/SCOLOR=210>\\设置了颜色值此文本为设置的颜色
<text:排版命令展示3:20:88:1/@main1>\\设置事件


检测背包空格数量

检测人物背包空格数
CHECKBAGSIZEEX
获取人物背包空格数量
参数1: 数量

[@main]

#if

CHECKBAGSIZEEX 5
#act

sendmsg 6 身上有5个空格
#elsesay
sendmsg 6 身上不够5个空格


开启透视功能

开启透视功能
ShowDroprate
参数:1 开启 0 关闭
参数:2 时间(秒 过时间自动关闭)

[@main]
#if
#act
ShowDroprate 1 3
SendMsg 0 你以开启透视功能持续3秒


查询对象位置

查询对象所在位置
QueryTarget
通过脚本查询对象所在位置
参数1:是否全服 1 全服寻找 0 当前地图寻找
参数2:寻找类型 0 只找玩家 1找怪
参数3:寻找数量 0 所有 大于1为寻找数量
参数4:寻找名称
参数5:保存地图名变量
参数6:保存地图号变量（用来调用命令传送使用）
参数7:保存对象名变量
参数8:保存坐标X变量
参数9:保存坐标Y变量
参数10:共找到数量(如参数3不为0 这里将保存参数3的值)
*注意 保存变量问题 使用方法见示例

[@查询对象]
#if
#act
QueryTarget 1 1 5 魔龙教主 S$地图名变量
    S$地图号变量 S$对象名变量 S$对象X坐标 S$对象Y坐标
    N32
#if
#say
<$STR(S$地图名变量_0)> <$STR(S$地图号变量_0)>
    <$STR(S$对象名变量_0)> <$STR(S$对象X坐标_0)> <$STR(S$对象Y坐标_0)>
    <去杀怪/@去0>\
<$STR(S$地图名变量_1)> <$STR(S$地图号变量_1)>
    <$STR(S$对象名变量_1)> <$STR(S$对象X坐标_1)> <$STR(S$对象Y坐标_1)>
    <去杀怪/@去1>\
[@去0]
#if
#act
mapmove <$STR(S$地图号变量_0)>
    <$STR(S$对象X坐标_0)>
    <$STR(S$对象Y坐标_0)>


查询对象所在位置Ex

查询对象所在位置
QueryTargetEx
通过脚本查询对象所在位置
参数1:指定地图号
参数2:寻找类型 0 只找玩家 1找怪
参数3:寻找数量 0 所有 大于1为寻找数量
参数4:寻找名称
参数5:保存地图名变量
参数6:保存地图号变量（用来调用命令传送使用）
参数7:保存对象名变量
参数8:保存坐标X变量
参数9:保存坐标Y变量
参数10:共找到数量(如参数3不为0 这里将保存参数3的值)
*注意 保存变量问题 使用方法见示例

[@查询对象]
#if
#act
QueryTargetEx 1 1 5 魔龙教主 S$地图名变量
    S$地图号变量 S$对象名变量 S$对象X坐标 S$对象Y坐标
    N32
#if
#say
<$STR(S$地图名变量_0)> <$STR(S$地图号变量_0)>
    <$STR(S$对象名变量_0)> <$STR(S$对象X坐标_0)> <$STR(S$对象Y坐标_0)>
    <去杀怪/@去0>\
<$STR(S$地图名变量_1)> <$STR(S$地图号变量_1)>
    <$STR(S$对象名变量_1)> <$STR(S$对象X坐标_1)> <$STR(S$对象Y坐标_1)>
    <去杀怪/@去1>\
[@去0]
#if
#act
mapmove <$STR(S$地图号变量_0)>
    <$STR(S$对象X坐标_0)>
    <$STR(S$对象Y坐标_0)>


随机传送

随机传送命令
MapMoveEx
通过脚本命令强制随机传送到某地图
参数1;地图号
参数2;X坐标
参数3:Y坐标
参数4:随机范围

[@main]
#if
#act
MapMoveEx 3 330 330 4


死亡不掉装备的次数

死亡不掉装备的次数
NotDropItemCountEX
这条命令均是小退清除设置,如需一直保存或动态扣减的，可通过引擎死亡触发回调等手段进行动态控制
简单一点实现记录的算法,可以通过全局变量进行记录,赋予一个基础值,每次触发死亡就扣减,登录或复活后重新设置死亡不掉装备次数
参数: 次数

[@main]
#if
#act
NotDropItemCountEX 5


发送自定义透明消息框

发送自定义透明消息框
SendMessage
通过脚本命令SendMessage发送自定义透明消息框
参数1：计算模式(0:以参数2、3作为直接绘制点 | 1:以自身角色XY作为计算基础点，再加上参数2、3 | 2:以游戏鼠标XY作为计算基础点，再加上参数2、3)

参数2：X,支持负数

参数3：Y,支持负数

参数4：显示毫秒，0代表不限时，以毫秒为单位，1000等于1秒

参数5：是否可以ESC关闭，1可以，0不可以

参数6：颜色值，参考上线透明公告取值

参数7：内容，支持变量，空格使用[#]代替

[@main]
#if
#act
SendMessage 0 0 200 3000 0 65535 3秒自动关闭自定义透明框<$USERNAME>

SendMessage 0 0 300 0 0 3407667 不会自动关闭自定义透明框

SendMessage 0 0 400 2000 1 1742054 支持各种颜色、定时显示、ESC键关闭

SendMessage 1 -60 -100 0 1 65535 在人物都上显示信息框

SendMessage 2 0 0 0 1 65535 以鼠标为计算点 显示信息框

ClearMessage *用作清除信息框使用


发送屏幕中间公告

发送屏幕中间公告
SendCenterMsgEx
通过脚本命令发送屏幕中间公告
参数1;文字颜色
参数2;背景颜色
参数3;字体大小
参数4;行间距
参数5;发送模式(0=自己，1=组队，2=行会，3=地图，4=所有人)
参数6;显示时间(1秒)
参数7;内容(如果需要其他字有颜色需要用格式如下{显示的字|颜色代码0~255})
参数8:字体 (0=楷体 1=微软雅黑 2=宋体)

[@main]
#if
#act
SendCenterMsgEx 251 255 12 10 2 8000 {<$USERNAME>|252},向行会成员说我正在使用某雀插件进行测试! 1

SendCenterMsgEx 251 255 12 10 4 8000 {<$USERNAME>|252},向所有人说我正在使用某雀插件进行测试! 1


发送固定数量公告

发送屏幕中间公告
SendCenterMsgExA
通过脚本命令发送屏幕中间公告
参数1:文本颜色
参数2:背景颜色
参数3:方向(1由上到下 2由下到上)
参数4:最大数量
参数5:坐标X
参数6:坐标Y
参数7:发送模式(0=自己，1=组队，2=行会，3=地图，4=所有人)
参数8:显示时间(秒)
参数9:文本内容 （字体大小/内容）
参数10:字体 0 楷体 1 微软雅黑 2 宋体
[@main]
#if
#act
SendCenterMsgExA 255 0 1 6 250 300 4 10 10/【{<$USERNAME>|250}】,向行会成员说我正在使用某雀插件进行测试! 0


发送滚动提示

发送屏幕滚动提示
SENDMOVEHINTMSG
通过脚本命令发送屏幕滚动提示
参数1:文字信息
参数2:文字颜色
参数3:背景颜色
参数4:X坐标
参数5:Y坐标
参数6:模式0 全屏 1跟随鼠标
参数7:持续时间（秒）
参数8:发送模式(0=自己，1=组队，2=行会，3=地图，4= 所有人)
参数9:字体 0 楷体 1 微软雅黑 2 宋体(-1,默认字体)
参数10:字体大小(字体为-1时 此参数 无效)
[@main]
#if
#act
SENDMOVEHINTMSG 这是一个全屏的浮动提示：您的元宝数量不足，请先充值。 146 0 0 200 0 1 0 -1 0


爆率扩展功能

扩展爆出物品命令
ThrowItemEx2
通过脚本命令爆出物品
参数1;物品名称
参数2;物品数量
*注 此命令爆出物品来源与正常击杀怪物爆出来源一致

[@OnKillMob]
#IF
#ACT
M.THROWITEMEX2 开天 2


制造矿石

制造矿石命令
GiveMineEx
通过脚本命令制造矿石
参数1;物品名称
参数2;物品数量
参数3:纯度

[@main]
#IF
#ACT
GiveMineEx 黑铁矿石 1 50

SendMsg 0 你获得一块纯度50的黑铁矿


删除用户物品

删除角色物品
DELUSERITEM
通过脚本删除角色物品
参数1:物品名 (当参数3为1时,物品名支持模糊匹配.如 圣战*)
参数2:系列号 (不指定物品ID填写0)
参数3;模糊匹配 1为使用
参数4;0为全部 1为背包 2为身上

[@main]
#if
#act
DelUserItem 圣战项链 0 0 1
SendMsg 0 你的背包中圣战项链已删除

[@main]
#if
#act
DelUserItem 圣战* 0 1 0

SendMsg 0 你的身上及背包中所有圣战系列装备已删除


拾取时物品状态更改

拾取时物品状态更改
PICKITEMSTATE
通过脚本命令实现拾取时物品的状态修改
参数1;绑定(0 不绑定 1 绑定)
参数2;禁止丢弃(0 不禁止 1 禁止)
参数3:禁止交易(0 不禁止 1 禁止)
参数4;禁止存仓(0 不禁止 1 禁止)
参数5;禁止修理(0 不禁止 1 禁止)
参数6:禁止买卖(0 不禁止 1 禁止)
参数7;禁止爆出(0 不禁止 1 禁止)
参数8;丢弃消失(0 不禁止 1 禁止)
参数9:只绑定属于自己的物品(0 无论归属谁都修改 1 只有自己打怪掉落的才绑定)

[@main]
#IF
#ACT
PICKITEMSTATE 1 1 1 1 1 1 1 1 1


控件UIDIY设置

客户端控件动态设置
ClientUiChange (游戏中鼠标指向控件 同时按下 Shift+Ctrl+Alt 即可查看鼠标指向的控件名可用来作为父窗口)
命令：ClientUiChange 参数1-2 添加、删除、显示、隐藏客户端组件
参数1：模式，0=添加组件
    1=修改组件
    2=显示/隐藏组件
    3=禁止/可用控件 4=添加组合框
参数2：命令行，这个不同模式，命令行不同。下面讲解。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
模式 = 0时
命令行：组件名|类型|父名|默认图|按下图|x|y|是否可移动|是否触发|默认是否显示|标题|鼠标指向时提示组件名
组件名：给组件起一个唯一名，不支持汉字。不可空
类型：0=窗口 1=按钮 2=标签文本
父名：父窗口的名字，如果要添加到游戏主界面，填写 -1
默认图：组件默认使用的图片序号。一般窗口、按钮使用，不要背景填写 -1
按下图：点击时的图片序号。一般只有按钮使用。 不使用填写 -1
X，Y：坐标。
是否可移动：这个组件是否能用鼠标拖动。0=不可以，1=可以。
是否触发：点击按钮时，是否触发脚本。允许触发时，点击组件将调用QF脚本下[@MQDIY_组件名]字段。 0=不触发脚本 1=触发脚本(组合框点击将调用QF脚本下[@MQDIY_组件名_索引]字段,索引从0开始)
默认是否显示：创建组件后，默认是隐藏的还是显示的。 0=不显示 1=显示。
标题：组件外显的标题，不使用标题，写 -1
鼠标指向时提示：-1为不提示，不等于-1时提示组件名
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

模式 = 1时
命令行：组件名|父名|默认图|按下图|x|y|是否可移动|标题
组件名：要修改组件的名字。
父名：把这个组件改变父窗口。例如，把武器格子移动到背包栏。 不更改父组件，写 -1
默认图：修改默认的图片。不修改填写 -1
按下图：修改按下的图片。不修改填写 -1
X，Y：修改坐标。
是否可移动：设置组件是否可用鼠标拖动。0=不可以，1=可以。
标题：组件外显的标题，不使用标题，写 -1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

模式 = 2时
命令行：组件名|状态
组件名：要修改的组件名字。
状态：0=隐藏组件 1= 显示组件。 -1为自动判断，如果当前是显示的，则隐藏。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
模式 = 3时
命令行：组件名|状态
组件名：要修改的组件名字。
状态：0=禁止组件 1= 可用组件。 -1为自动判断，如果当前是禁止的，则可用。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
模式 = 4时
//命令行：组件名|父名|标题|x|y|控件宽度|是否触发|是否提示|项目名1#项目名2#项目名3#。。。。。。。
组件名：要创建组件的名字。
父名：父窗口的名字，如果要添加到游戏主界面，填写 -1
标题：组件外显的标题(未选择的时候的默认标题)
X，Y：修改坐标。
宽度：组件宽度(过窄可能导致文字显示不全)
是否触发： 0=不触发脚本 1=触发脚本(组合框选择项目调用QF脚本下[@MQDIY_组件名_索引]字段,索引从0开始)
是否提示：鼠标指向时提示：0为不提示，1为提示组件名
项目内容：多个项目用#号分割(如 盟重省#比奇省#白日门)
创建示例

ClientUiChange 4 选择组合框|DMsgDlg|项目选择|200|30|80|1|1|1|某雀插件#蹦得儿你个蹦得儿#完美测试
触发QF脚本中触发示例
[@MQDIY_选择组合框_0]
#if
#act
sendmsg 6 你选择了某雀插件
[@MQDIY_选择组合框_1]
#if
#act
sendmsg 6 你选择了蹦得儿你个蹦得儿
[@MQDIY_选择组合框_2]
#if
#act
sendmsg 6 你选择了完美测试
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

必读，注意事项
1，系统组件的名字，请参考附录。
2，自定义组件的名字由脚本自由设定。
3，请参考登陆器的UI编辑和使用脚本进行显示、隐藏，来找到你想控制的组件名称。
4，自定义组件所使用的素材，固定为：【资源目录\data\MQDIYUI.Pak】

Copyright ? 2021 baidu . All Rights Reserved.


宝石升级功能

使用宝石升级或鉴定
通过脚本命令实现装备升级，只需将物品放到身上装备上即可。
[@BSClickUserItem*] QF触发这个字段 *代表装备位置 0-18
CLICKFAIL 用于返回鼠标选中的物品到背包。
<$CLICKNAME> 常量显示当前使用宝石或升级材料名称。
<$CLICKWHERE> 常量显示当前所指装备位置。

物品位置:

;==========================================
0 盔甲
1 武器
2 照明物
3 项链
4 头盔
5 右手镯
6 左手镯
7 右戒指
8 左戒指
9 护身符
10 腰带
11 鞋子
12 宝石
13 斗笠
14 军鼓
15 马牌
16 盾牌
;==========================================

QF中触发脚本示例
[@BSClickUserItem0]
#if
equal <$CLICKNAME> 强化宝石
CHECKGAMEGOLD > 2000
#act
SetNewItemValue <$CLICKWHERE> 0 + 10
sendmsg 6 装备升级成功 暴击率加10
#elseact
CLICKFAIL // 此命令代表升级失败 物品返回到背包 或者也可以改成扣除物品 不返回
sendmsg 6 装备升级失败


修改技能冷却时间

脚本修改技能冷却
SETSKILLCDTIME
通过脚本使对象技能冷却时间缩短
参数1:技能ID
参数2:方式 0 为减少固定时间 1为减少千分比
参数3:减少时间(毫秒)

[@main]
#if
#act
SETSKILLCDTIME 66 1 800

SendMsg 0 你的开天斩技能冷却已缩短千分之800


插件四则运算

插件四则运算
MoveXP
通过脚本进行四则运算
参数1=变量名
参数2=运算表达式
参数3=是否四舍五入(0或空则舍弃小数部分，1则四舍五入) 注：若运算失败则返回0
支持以下运算符号:
+-*/\%()0~9.
/:除法,带小数
\:整除,不要小数
%:只能用在*90%这样的格式
MoveXP S$运算 <$STR(N$输入提现金额)>*90%
例子：
;获取90%的值
#IF
#ACT
MOV N$输入提现金额 252
ESPMoveXP S$到账金额 <$STR(N$输入提现金额)>*90%
SENDMSG 6 兄弟！您本次提现：<$STR(N$输入提现金额)>元，扣除10%手续费，实际到账：<$STR(S$到账金额)>元
;计算攻城奖励
IF
#ACT
MOV G6 12050
ESPMoveXP N$今日攻城奖励 <$STR(G6)>-<$STR(G6)>*10% 1
ESPMoveXP N$今日攻城胜利方 (<$STR(G6)>-<$STR(G6)>*10%)*70% 1
ESPMoveXP N$今日攻城失败方 (<$STR(G6)>-<$STR(G6)>*10%)*30% 1
SENDMSG 6 兄弟！今日攻城扣除10%服务费共奖励：<$STR(N$今日攻城奖励)>，胜利方奖励70%：<$STR(N$今日攻城胜利方)>，失败方奖励30%：<$STR(N$今日攻城失败方)>


多页背包

多页背包开启命令
EXTBAGPAGECOUNT
通过脚本命令对人物开启背包页数
参数1;+ - =
参数2;数量

[@main]
#if
#act
EXTBAGPAGECOUNT + 1

QF脚本触发

[@ExtBagPageCount]
#if

CHECKBAGPAGESTATE
#act
messagebox 是否开启此背包页,开启此背包页需要2000元宝 @确定开启 @取消开启

#elseact
sendmsg 6 您点击背包页<$STR(N$OnClickBagPage)>，此页面以开启

[@确定开启]
#if
CHECKGAMEGOLD > 2000
#act
GAMEGOLD - 2000
EXTBAGPAGECOUNT + 1
messagebox 开启成功
#elseact
messagebox 元宝不足2000


技能打断

技能打断
使用技能时QF脚本中调用[@BeginMagic]字段
解说：名为技能打断实则应为技能免疫(单攻技能有鼠标指向目标可以打断,群攻技能可以判断某个对象免伤)
支持变量
<$STR(N$MagicID)> 技能ID
<$STR(S$MagicName)> 技能名称
<$STR(S$MagicTarget)> 攻击目标名称
<$STR(N$MagicTargetRace)> 攻击目标类型
<$STR(N$StopMagic)> 是否中断 (1中断 0不中断)

[@BeginMagic]
#if
equal <$STR(S$MagicName)> 彻地钉
#act
sendmsg 6 您使用技能彻地钉以中断
mov <$STR(N$StopMagic)> 1
#elseact
sendmsg 6 您使用技能 <$STR(N$MagicID)> <$STR(S$MagicName)> <$STR(S$MagicTarget)> <$STR(N$MagicTargetRace)> <$STR(N$StopMagic)>


发送邮件

发送邮件
SendMail
发送邮件

参数1:邮件类型标题
参数2:邮件信息
参数3:物品名称(最多6个物品用|号隔开)
参数4:金币
参数5:元宝
参数6:来源类型 2=自定义来源 4=杀怪掉落
参数7:来源地图名
参数8:怪物名/来源名
参数9:角色名称(省略或使用%s时获取当前人物名)
参数10:来源时间(省略或使用%s时获取当前时间)

例子:

SendMail 系统邮件 一封来自系统的邮件 木剑|布衣(男)|火球术|灰色药粉(少量)|玻璃戒指|沃玛号角 1000 2000 4 死亡棺材 暗之触龙神 %s %s

打开邮件界面

OpenMail

用于NPC打开邮件界面 (在邮件系统中邮箱按钮X与Y坐标设置为-1即可隐藏窗口上邮箱按钮)


置怪物石化

设置对象石化功能
SetStoneMode
设置怪物石化
参数1 外物名称
参数2 0 当前地图 1全服
参数3 数量
参数4 石化模式 0解石化 1 加石化

例子:

[@石化怪物]
#if
#act
SETSTONEMODE 祖玛卫士 0 1 1
[@解石化]
#if
#act
SETSTONEMODE 祖玛卫士 0 1 0

SetStoneModeEx
设置怪物石化
参数1 地图号
参数2 怪物名
参数3 石化模式 0解石化 1 加石化
参数4 石化数量 为不限制

例子:

[@石化怪物]
#if
#act
SETSTONEMODEEX 3 祖玛卫士 1 0

[@解石化]
#if
#act
SETSTONEMODEEX 3 祖玛卫士 0 0


自定义装备文本

检测自定义装备文本
CheckCustomItemText
检测自定义装备文本
参数1;装备位置(0-19) 0是身上
参数2;需检测的文本

[@main]
#IF

CheckCustomItemText 0 自定义文本
#ACT
Sendmsg 0 此装备已经有自定义文本

获取自定义装备文本
GetCustomItemText
获取自定义装备文本
参数1;装备位置(0-19) 0是身上
参数2;保存到的变量

[@main]
#IF
#ACT
GetCustomItemText 0 S0
Sendmsg 0 <$STR(S0)>

位置说明

0 盔甲
1 武器
2 照明物
3 项链
4 头盔
5 右手镯
6 左手镯
7 右戒指
8 左戒指
9 护身符
10 腰带
11 鞋子
12 宝石
13 斗笠
14 军鼓
15 马牌
16 盾牌
17 时装武器
18 时装衣服、
19-30 首饰盒1-12


跨服喇叭

跨服喇叭(此功能要配合控制台使用)
SendCserverMsg
参数1 喊话内容
例:
sendcservermsg 我是二区的


宝宝脚本部分

宝宝脚本目录

宝宝单独切割

宝宝范围切割

宝宝特殊攻击

修改宝宝属性


宝宝单独切割

单独切割(宝宝使用)
BDelMonHp
参数1=百分比或切割值
参数2=0:以当前HP的百分比 1:以参数1的值切割 2::以最大HP的百分比
参数3=0不判断嘲讽 1判断嘲讽过的怪才切割
参数4=0都切割 1:本次切割只切割角色 2:本次切割只切割英雄 3:本次切割只切割怪物
参数5=分母基数(<=100等于100)
参数6=是否播放切割动画(空或0不播放,1播放)
例子1：
#ACT
；本次切割只切割怪物10点HP
BDELMONHP 10 1 0 3
例子2：
#ACT
；本次切割只切割人物当前血量百分之8
BDELMONHP 8 0 0 1
例子3：
#ACT
；本次切割只切割人物当前血量千分之8
BDELMONHP 8 0 0 1 1000


宝宝范围切割

范围切割(宝宝使用)
BDelMonHpEx
参数1=百分比或切割值

参数2=0:以当前HP的百分比 1:以参数1的值切割 2:以最大HP的百分比

参数3=0不判断嘲讽 1判断嘲讽过的怪才切割

参数4=0以自身范围 1以攻击目标范围

参数5=X坐标

参数6=Y坐标

参数7=范围

参数8=0都切割 1:本次切割只切割角色，2:本体切割只切割英雄，3:本次切割只切割怪物。

参数9=分母基数(<=100等于100)

参数10=是否播放切割动画(空或0不播放,1播放)

例子1：
#ACT

;切割自身1格坐标范围的怪物10/100 HP
BDELMONHPEX 10 2 0 0 <$X> <$Y> 1 3

例子2：
#ACT

;切割自身1格坐标范围的怪物10/1000 HP
BDELMONHPEX 10 2 0 0 <$X> <$Y> 1 3 1000


宝宝特殊攻击

宝宝特殊攻击
BMAKEPOSION
宝宝特殊攻击方式
参数1: 类型(0-5,0和1是绿毒和红毒 5是麻痹 12冰冻 13蛛网 其他无效)
参数2: 时间(秒)
参数3: 威力
注* 请在[@宝宝物理攻击]、[@宝宝魔法攻击]里使用

[@宝宝物理攻击]
#if
#act
BMAKEPOSION 5 5 888

SendMsg 0 您的宝宝使用了麻痹技能


修改宝宝属性

修改宝宝属性
ChangeSlaveAbility
参数1: 类型（0=HP,1=MaxHP,2=MP,3=MaxMP,4=AC1,5=AC2,6=MAC1,7=MAC2,8=DC1,9=DC2,10=MC1,11=MC2,12=SC1,13=SC2,14=移速,15=攻速,16=外观,17=准确,18=敏捷,19=等级）
参数2: 数值
参数3: 宝宝名称（ALL为所有宝宝）

[@main]
#if
#act
ChangeSlaveAbility 19 9 ALL

SendMsg 0 你的所有宝宝等级已调整为9级


自动回收部分

自动回收目录

开启自动回收


开启自动回收

开启自动回收
AUTORECOVER
设置好插件回收界面中选项后调用此命令开启角色回收功能，当身上装备低于背包装备时此装备不回收
参数 1为开启 0为关闭

[@main]
#if
#act
AUTORECOVER 1
SENDMSG 0 您以开启自动回收功能!


BOSS争霸

BOSS争霸目录

个人BOSS争霸

行会BOSS争霸


个人BOSS争霸

个人BOSS争霸
CheckBattleList
说明:判断是否是指定名次
参数: 名次序号 (1 第一名 2第二名 3第三名)
注* 本功能只能在QF脚本 [@KillMon] 或 [@OnKillMob] 中执行才是准确值

[@KillMon]
#if
CheckBattleList 1
#act
SENDMSG 3 获得个人BOSS争夺第一名,获得屠龙一把
give 屠龙 1


行会BOSS争霸

行会BOSS争霸
CheckGuildBattleList
说明:判断是否是指定名次
参数: 名次序号 (1 第一名 2第二名 3第三名)
注* 本功能只能在QF脚本 [@KillMon] 或 [@OnKillMob] 中执行才是准确值

[@KillMon]
#if
CheckGuildBattleList 1
#act
SENDMSG 0 恭喜【<$GUILDNAME>】行会获得争夺第一名,全员奖励
GOTOLABEL 1 @行会成员触发
[@行会成员触发]
#if
#act
give 双倍经验卷轴
SENDMSG 5 本行会获得行会争夺第一名，获得双倍经验卷轴一个,望全体成员积极参加争夺活动


怪物变量

目录

基本变量
专属变量与接口
脚本命令


怪物变量操作

怪物变量命令集
本命令集都需要在 QF脚本 @Attack中调用
条件指令
M_SMALL
参数1：变量名 参数2:比较值
M_LARGE
参数1：变量名 参数2:比较值
M_EQUAL
参数1：变量名 参数2:比较值
操作指令
M_mov
参数1:变量名 参数2:变量值
M_inc
参数1:变量名 参数2:相加数


假人摆摊设置

目录

假人摆摊
设置店铺名称
添加指定物品到店铺
添加背包物品到商铺


假人摆摊

假人摆摊
BDDummySellItemStar
设置商店名称

BDDummySellItemStar <$USERNAME>的小店

BDDummySellItem

设置上架物品

BDDummySellItem 物品名 金币类型 价格

示例：

[@Login]
#if
ISDUMMY
#act
DELAYGOTO 3000 @假人

[@假人]
#act
;================设置摆摊地图与随机范围
mapmove 0 332 264 10
;================随机摆3到15件装备
MOVR N$随机数量 3 15
goto @上架物品
;开店 后面是店名字
BDDummySellItemStar <$USERNAME>的小店
[@上架物品]
#IF
LARGE N$随机数量 0
#ACT
DEC N$随机数量 1
;===============假人摆摊配置文件 格式 物品名称:货币种类(1元宝2金币):价格下限:价格上限
GetRandomText ..\QuestDiary\假人摆摊物品表.txt S10
ExtractStringEx : <$STR(S10)> S$测试变量 N0
;===============这里用的give 如果要物品来源 请用物品来源插件 自带的刷装备命令给与装备
give <$STR(S$测试变量_0)> 1
;===============设置随机价格
movr N$价格 <$STR(S$测试变量_2)> <$STR(S$测试变量_3)>
;===============上架物品
BDDummySellItem <$STR(S$测试变量_0)> <$STR(S$测试变量_1)> <$STR(N$价格)>
GOTO @上架物品


设置店铺名称

假人设置店铺名称
BDDummySellItemStar
设置商店名称

BDDummySellItemStar <$USERNAME>的小店


添加物品到店铺

假人添加物品到店铺

BDDummySellItem

设置上架物品

BDDummySellItem 物品名 金币类型 价格

示例：

[@Login]
#if
ISDUMMY
#act
DELAYGOTO 3000 @假人

[@假人]
#act
;================设置摆摊地图与随机范围
mapmove 0 332 264 10
;================随机摆3到15件装备
MOVR N$随机数量 3 15
goto @上架物品
;开店 后面是店名字
BDDummySellItemStar <$USERNAME>的小店
[@上架物品]
#IF
LARGE N$随机数量 0
#ACT
DEC N$随机数量 1
;===============假人摆摊配置文件 格式 物品名称:货币种类(1元宝2金币):价格下限:价格上限
GetRandomText ..\QuestDiary\假人摆摊物品表.txt S10
ExtractStringEx : <$STR(S10)> S$测试变量 N0
;===============这里用的give 如果要物品来源 请用物品来源插件 自带的刷装备命令给与装备
give <$STR(S$测试变量_0)> 1
;===============设置随机价格
movr N$价格 <$STR(S$测试变量_2)> <$STR(S$测试变量_3)>
;===============上架物品
BDDummySellItem <$STR(S$测试变量_0)> <$STR(S$测试变量_1)> <$STR(N$价格)>
GOTO @上架物品


添加背包物品到商铺

假人添加背包物品到店铺

BDDummySellItemEx

设置上架物品

BDDummySellItem 添加数量（0为背包所有物品 注意*背包物品不要超过15个）

示例：

[@Login]
#if
ISDUMMY
#act
DELAYGOTO 3000 @假人

[@假人]
#act
;================设置摆摊地图与随机范围
mapmove 0 332 264 10
;================随机摆3到15件装备
MOVR N$随机数量 3 15

BDDummySellItemStar <$USERNAME>的小店

BDDummySellItemEx N$随机数量


实名认证

实名认证

实名认证命令


实名认证命令

实名认证使用说明
CHECKAUTHENTICATION
效验实名认证
参数1: 身份证号
参数2: 姓名
参数3: 验证字段
参数4: 字段内容
参数5: 将字段内容保存到变量
*具体使用看最后示例
AUTHENTICATION
验证实名
参数1: 身份证号
参数2: 姓名
GETAUTHENTICATION
获取实名信息字段内容
参数1:字段名
参数2:保存字段值变量
*具体使用看最后示例
[@main]
身份证号 <$STR(S22)> <输入身份证号/@@InPutString22>\
名称 <$STR(S21)> <输入姓名/@@InPutString21>\
<获取信息/@获取信息>
<直接验证/@直接验证>
[@直接验证]
#if
CHECKAUTHENTICATION <$STR(S22)> <$STR(S21)> message 成功 S30
#act
sendmsg 6 验证成功
#ELSEACT
sendmsg 6 <$STR(S30)>
[@获取信息]
#if
#act
Authentication <$STR(S22)> <$STR(S21)> //验证信息
getAuthentication message S11 //取回验证信息中message字段
messagebox <$STR(S11)> //输出字段内容
getAuthentication ALL S10 //取所有信息
sendmsg 6 <$STR(S10)> //将信息输入到聊天框
[@InPutString22]
#IF
#ACT
goto @main
[@InPutString21]
#IF
#ACT
goto @main


还魂液系统

还魂液系统

*注 使用还魂液系统需要在数据库添加一个物品 具体数据库数据请参考:

Idx Name StdMode Shape Weight Anicount Source Reserved Looks DuraMax Ac AC2 Mac Mac2 Dc Dc2 Mc Mc2 Sc Sc2 Need NeedLevel Price Stock Color OverLap HP MP Job Value1 Value2 Value3 Value4 Value5 Value6 Value7 Value8 Value9 Value10 Value11 Value12 Value13 Value14 Value15 Value16 Value17 Value18 Value19 Value20 Value21 Value22 Value23 Value24 Value25 Value26 Value27 Value28 Value29 Value30 InsuranceGold InsuranceCurrency
800 还魂液 31 0 1 0 0 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 2000 5 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

800;还魂液;31;0;1;1143;0;0;1120;1;0;0;0;0;0;0;0;0;0;0;0;0;20000;5;255;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;

还魂液变量

还魂夜脚本命令

脚本示例


还魂液变量

S$RetrieveItemName | 预找回物品名称
S$RetrieveItemCurrencyName | 还魂液使用货币名称
N$RetrieveItemCurrencyType | 还魂液使用货币类型 0金币 1元宝 2泡点 3灵符 4金刚石 5荣誉值
N$RetrieveItemCurrencyCount | 还魂液使用货币数量
N$PickerBonus | 是否开启奖励
S$PickerBonusCurrencyName | 奖励使用货币名称
N$PickerBonusCurrencyType | 奖励使用的货币类型 0金币 1元宝 2泡点 3灵符 4金刚石 5荣誉值
N$PickerBonusCurrencyCount | 奖励使用货币数量
N$IsItemReturn | 是否归还物品判断 1为归还 0为找回


还魂夜脚本命令

QF脚本触发
[@RetrieveItemBonus] 奖励触发字段 此字段用来处理奖励
[@RetrieveItemFunc] 找回触发字段 使用还魂液会调用此字段
脚本命令
RetrieveItem 找回物品
RetrieveItemFail 找回物品失败
ItemsReturn 归还物品
参数1:OK框序号
ItemsUnbind 解绑物品
参数1:OK框序号
[@main]
请放入需要归还的装备\
解绑只能放入还魂液进行解绑\
<ITEMBOX:7:29:122:100:40:76:76:*:254#只能放入还魂液物品^251#某雀插件还魂液系统>\
<将物品归还/@归还>\<将物品解绑/@解绑>
[@解绑]
#if
#act
ITMESUNBIND 7
[@归还]
#if
#act
ITMESRETURN 7


脚本示例

脚本示例
找回触发字段
[@RetrieveItemFunc]
#if
equal N$PickerBonus 1
#act
mov S1 找回后对方将获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
messagebox [使用还魂液]\你是否使用[<$str(N$RetrieveItemCurrencyCount)>]==[<$str(S$RetrieveItemCurrencyName)>]找回你的【<$str(S$RetrieveItemName)>】\<$str(S1)> @确定找回 @取消找回
#ELSEACT
mov S1 此物品没有任何货币奖励！
messagebox [使用还魂液]\你是否使用[<$str(N$RetrieveItemCurrencyCount)>]==[<$str(S$RetrieveItemCurrencyName)>]找回你的【<$str(S$RetrieveItemName)>】\<$str(S1)> @确定找回 @取消找回
[@取消找回]
#if
#act
RetrieveItemFail
[@确定找回]
#if
equal N$RetrieveItemCurrencyType 0
not checkgold N$RetrieveItemCurrencyCount
#act
RetrieveItemFail
messagebox 金币不足<$str(N$RetrieveItemCurrencyCount)>!
break
#if
equal N$RetrieveItemCurrencyType 1
checkgamegold < N$RetrieveItemCurrencyCount
#act
RetrieveItemFail
messagebox 元宝不足<$str(N$RetrieveItemCurrencyCount)>!
break
#if
equal N$RetrieveItemCurrencyType 2
checkgamepoint < N$RetrieveItemCurrencyCount
#act
RetrieveItemFail
messagebox 泡点不足<$str(N$RetrieveItemCurrencyCount)>!
break
#if
equal N$RetrieveItemCurrencyType 3
checkgamegird < N$RetrieveItemCurrencyCount
#act
RetrieveItemFail
messagebox 灵符不足<$str(N$RetrieveItemCurrencyCount)>!
break
#if
equal N$RetrieveItemCurrencyType 4
checkgamediamond < N$RetrieveItemCurrencyCount
#act
RetrieveItemFail
messagebox 金刚石不足<$str(N$RetrieveItemCurrencyCount)>!
break
//以上代码检测条件是否成立 以下代码为扣除货币代码
#if
equal N$RetrieveItemCurrencyType 0
checkgold > N$RetrieveItemCurrencyCount
#act
take 金币 N$RetrieveItemCurrencyCount
#if
equal N$RetrieveItemCurrencyType 1
checkgamegold > N$RetrieveItemCurrencyCount
#act
gamegold - <$str(N$RetrieveItemCurrencyCount)>
#if
equal N$RetrieveItemCurrencyType 2
checkgamepoint > N$RetrieveItemCurrencyCount
#act
gamepoint - <$str(N$RetrieveItemCurrencyCount)>
#if
equal N$RetrieveItemCurrencyType 3
checkgamegird > N$RetrieveItemCurrencyCount
#act
gamegird - <$str(N$RetrieveItemCurrencyCount)>
#if
equal N$RetrieveItemCurrencyType 4
checkgamediamond > N$RetrieveItemCurrencyCount
#act
gamediamond - <$str(N$RetrieveItemCurrencyCount)>
#if
equal N$RetrieveItemCurrencyType 5
checkgameglory > N$RetrieveItemCurrencyCount
#act
gameglory - <$str(N$RetrieveItemCurrencyCount)>
#if
#act
RetrieveItem
奖励触发字段
[@RetrieveItemBonus]
#if
equal N$IsItemReturn 1
#act
sendmsg 6 归还物品没有任何奖励
RetrieveItem
break
#if
equal N$PickerBonus 0
#act
sendmsg 6 此物品没有任何奖励
#ELSEACT
#if
equal N$PickerBonusCurrencyType 0
#act
give 金币 N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break
#if
equal N$PickerBonusCurrencyType 1
#act
GameGold + N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break
#if
equal N$PickerBonusCurrencyType 2
#act
gamepoint + N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break
#if
equal N$PickerBonusCurrencyType 3
#act
GAMEGIRD + N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break
#if
equal N$PickerBonusCurrencyType 4
#act
GAMEDIAMOND + N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break
#if
equal N$PickerBonusCurrencyType 5
#act
GAMEGLORY + N$PickerBonusCurrencyCount
sendmsg 6 【<$STR(S$RetrieveItemName)>】被找回您获得【<$STR(N$PickerBonusCurrencyCount)>】<$STR(S$PickerBonusCurrencyName)>作为奖励！
break


哈希链表

目录

载入文件到表
载入文件到表Ex
添加键值
查找键值
读取键值
删除键与值
清除所有键与值
示例


载入文件到表

载入文件到链表

HashTableLoad
参数详解:
参数1:载入的文件路径
参数2:存储内容(载入的键,全部赋予此存储内存)
参数3:分割符号(留空代表换行符)
例子:
QManage.txt
[@Startup]
#ACT
HashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1
;我们这个txt以行作为分隔符，所以参数3留空。但参数2如果为空，会导致载入无效！


载入文件到表Ex

载入文件到链表

HashTableLoadEx
参数详解:
参数1:载入的文件路径
参数2:标识字符串附加值(这个内容加上文件读取分割的内容,用于区分用途)
参数3:存储内容(载入的键,全部赋予此存储内存)
参数4:分割符号(留空代表换行符)
例子:
QManage.txt
[@Startup]
#ACT
HashTableLoadEx ..\QuestDiary\功能文件\爆出提示.txt ABC 1
;;我们这个txt以行作为分隔符，所以参数4留空。但参数3如果为空，会导致载入无效！
如我们【爆出提示.txt】格式为

我是装备A

载入后为 ABC我是装备A

;我们用这个扩展命令载入的话,我们读取这个键值就要这样写

#ACT

HashTableGet ABC我是装备A <$STR(U45)>

sendmsg 6 内容为:<$STR(U45)>

;那读取到的内容就是1，ABC是自己定义的，用于区分不同用途


添加键值

添加键值到表中

HashTableCreate
参数详解:
参数1:标识字符串(不区分大小写)
参数2:存储内容
例子:
#if
#act
HashTableCreate <$STR(S$当前爆出物品名称)> 1


查找键值

在表中查找键值

HashTableContainsKey
参数详解:
参数1:标识字符串(不区分大小写)
例子:
#IF
HashTableContainsKey 标识字符串
#ACT
sendmsg 6 找到此记录！


读取键值

读取表中键内容

HashTableGet
参数详解:
参数1:载入的文件路径
参数2:存储内容(载入的键,全部赋予此存储内存)
参数3:分割符号(留空代表换行符)
例子:
参数1:标识字符串(不区分大小写)
参数2:存储的变量
例子:
#ACT
HashTableGet 标识字符串 <$STR(U45)>
;有没有内容，取决于这个标识字符串有没有写入数据
sendmsg 6 内容为:<$STR(U45)>


删除键与值

删除表中键与值

HashTableRemove
参数详解:
参数1:标识字符串(不区分大小写)
例子:
#ACT
HashTableRemove 标识字符串
;删除后，再查找或读取这个标识字符串，就不会有这个记录


清除所有键值

删除表中所有键与值

HashTableClear
#ACT
HashTableClear
;全部删除后，此前添加的记录也会全部没有


示例

示例：
我们做个物品首爆提示功能
首先开启某雀插件->功能设置->扩展接口= >开启物品爆出反馈勾选后保存
下面进行脚本编写
QManage.txt
[@Startup]
#ACT
;写在这里，是因为我们要把之前的记录，载入到哈希链表里，用于查询记录
HashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1
;载入文件记录,如果想每次启动M2重新计算的，这里就可以去掉，因为哈希值链表，进程每次重新启动就会初始化，他虽然是全局，但不会保存记录到下次启动M2，也不会因为玩家下线而清除之前添加的键值这一点需要理解。
QFunction-0.txt
[@物品爆出反馈]
#IF
HashTableContainsKey <$STR(S$当前爆出物品名称)>
;这条是查询指令，判断有没有这条记录，因为是用内存算法查找，所以会比用Checktextlist这个命令快上百倍、上千倍，以替代消耗较大的命令，这也是开发哈希链表主要原因，
#ACT
;跳到这里，说明找到此记录，那就不是首爆了，那就空着，不写代码
#elseact
;跳到这块，说明没找到此记录
HashTableCreate <$STR(S$当前爆出物品名称)> 1
;加入哈希链表记录，参数2可以随便定义一个，在这里、用1就可以
AddTextListEx ..\QuestDiary\功能文件\爆出提示.txt <$STR(S$当前爆出物品名称)>
;同时输出文件，下次重新启动M2也可以载入此记录，如果想每次启动M2都是初始化，这句输出文件和载入命令也可以免了
SendCenterMsg 180 251 恭喜角色:<$USERNAME>,爆出全区第一个<$STR(S$当前爆出物品名称)> 0 3


可视化爆率

可视化爆率目录

增加可爆出物品

增加物品可爆出数量

修改以物品已爆出数量


增加可爆出物品

增加可爆出物品
SETNUMBER
参数1 物品名
参数2 在线时长
参数3 间隔时长
参数4 可爆出数量

[@main]
#if
#act
SETNUMBER 天魔神甲 60 120 5


增加物品可爆出数量

增加物品可爆出数量(在原有数量上相加)
ADDNUMBER
参数1 物品名称

[@main]
#if
#act
ADDNUMBER 天魔神甲 10


修改以物品已爆出数量

修改物品以爆出数量
RESETITEM
参数1 物品名称
参数2 已爆出数量

[@main]
#if
#act
RESETITEM 天魔神甲 2


接口部分示例

接口部分目录

@装备升级XX

@宝宝XX攻击

@物品爆出反馈

@XX地图


@装备升级XX

示例:

[@装备升级成功]
#if
large <$STR(N$武器升级次数)> 20
#act
SENDMSG 5 250 0 恭喜玩家 <$USERNAME> 成功将装备升级到 +<$STR(N$武器升级次数)> 我们为他喝彩吧！
#elseact
SENDMSG 5 250 0 恭喜玩家 <$USERNAME> 成功将装备升级到 +<$STR(N$武器升级次数)>

[@装备升级失败]
#if
large <$STR(N$武器升级次数)> 20
#act
SENDMSG 5 250 0 非常遗憾 <$USERNAME> +<$STR(N$武器升级次数)>的装备升级失败

[@装备升级破碎]
#if
large <$STR(N$武器升级次数)> 20
#act
SENDMSG 5 250 0 非常抱歉 <$USERNAME> +<$STR(N$武器升级次数)>的装备升级失败导致破碎


@宝宝XX攻击

示例:
[@宝宝物理攻击]
#if
#act
SENDMSG 5 250 0 宝宝物理攻击[<$BABYNAME>]正在攻击【<$BATTACKMONSTER_NAME>】坐标X<$BATTACKMONSTER_X>,坐标Y<$BATTACKMONSTER_Y>
[@宝宝魔法攻击]
#if
#act
SENDMSG 5 250 0 宝宝魔法攻击[<$BABYNAME>]正在攻击【<$BATTACKMONSTER_NAME>】坐标X<$BATTACKMONSTER_X>,坐标Y<$BATTACKMONSTER_Y>


@物品爆出反馈

示例:

[@物品爆出反馈]
#if
#act
SENDMSG 5 250 0 <$STR(S$当前爆出物品归属者)> 在 <$STR(S$当前爆出地图名称)> 击杀 <$STR(S$当前爆出怪物名称)> 爆出物品 <$STR(S$当前爆出物品名称)>


@XX地图

示例:

[@进入地图]
#IF
#act
SENDMSG 1 250 0 当前地图[<$MAP>]

[@离开地图]
#IF
#act
SENDMSG 1 250 0 离开地图[<$MAP>]


限制装备穿戴触发

失败后QF脚本触发@TakeOnItemFail* *为1-3序号 1 佩戴到右手 2佩戴到左手 3佩戴到手镯

示例:

[@takeonitemfail1]
#if
#act
sendmsg 6 禁止此物品佩戴到右手
[@takeonitemfail2]
#if
#act
sendmsg 6 禁止此物品佩戴到左手
[@takeonitemfail3]
#if
#act
sendmsg 6 禁止此物品佩戴到手镯


爆率扩展功能

爆率扩展目录
爆率格式扩展
爆出物品时触发QF,检测人物数据决定是否爆出物品


爆率格式扩展

扩展爆率格式1：

====================================以下是采用#call设置怪物爆率================================================================

例如：白野猪.txt

#CALL [\\爆率系统\基础爆率.txt] @药水

--------------------------------------------------------以上是怪物爆率文件中白野猪设置-----------------------------------------

文件内容路径：D:\MirServer\Mir200\Envir\QuestDiary\爆率系统\基础爆率.txt

TXT必须用ANSI编码,如果没用这个编码，是会导致解析不正常的，这是一个需要特别注意的地方,把所有CALL爆率都集中在一个文件,这样可以加快爆率解析速度

[@药水]
{
#CHILD 1/1 RANDOM
(
1/1 超强金创药
1/1 超强魔法药
1/1 太阳水
)
}

--------------------------以上是CALL路径的基础爆率设置-----------------------------------------------------

扩展爆率格式2：
写法参考1:G3变量大于34 且 U3变量大于14 且 U4变量小于U2变量

#CHILD 1/1 RANDOM [G3>34,U3>14,U4<U2]
(
1/1 称号神石
1/1 魔王之心
)
写法参考2:N$随意字符=1 且 U4变量=14
#CHILD1/1RANDOM[N$随意字符=1,U4=14]
(
1/10 龙牙
)
写法参考3:金刚石大于99 且 U3变量大于444 且 U4变量大于U3变量
#CHILD 1/1 RANDOM [<$GAMEDIAMOND>>99,U3>444,U4>U3]
(
1/10 龙牙
)
写法参考4:金刚石=99 且 U3变量大于444 且 U4变量大于U3变量
#CHILD 1/1 RANDOM [<$GAMEDIAMOND>=99,U3>444,U4>U3]
(
1/10 龙牙
)
写法参考5:金刚石大于99
#CHILD 1/1 RANDOM [<$GAMEDIAMOND>>99]
(
1/10 龙牙
)

[示例]
原爆率格式
#CHILD 1/20 RANDOM //此爆率代表1/20的概率在下面物品中随机产出一件
(
1/1 1元价值物品
1/1 2元价值物品
1/1 5元价值物品
)
扩展格式
#CHILD 1/20 RANDOM [G3>4,U3>4,U4>U3] //此爆率代表只有当G3>4且U3>4且U4>U3时才会进入1/20的随机，如果条件不满足则不会进入随机，用于精准控制物品产出
支持P变量、D变量、M变量、N变量、N扩展遍历、I变量、G变量、U变量，脚本变量(如:<$GAMEDIAMOND>)，支持逻辑方式大于(>)、小于(<)、等于(=)
用[]包裹,英文逗号分隔多条件,注意符号不要用拼音符号,变量写法格式参考上面的写法
(
1/1 1元价值物品
1/1 2元价值物品
1/1 5元价值物品
)


爆出物品时触发QF,检测人物数据决定是否爆出物品

ALLOWDROP

参数1： 0=不允许掉落物品 1=允许掉落物品 不调用命令,默认不允许

常量：<$DROPITEMNAME> 杀死怪物正在爆出的物品名称

触发：在爆率中装备名字后面加|@触发字段 如：1/10 开天|@爆开天触发检测

例子：

怪物爆率文件：D:\Mirserver_GOM32\Mir200\Envir\MonItems\黑野猪教主.txt

爆率内容：
1/2 比奇传送石
1/2 万年雪霜
1/10 圣战戒指
1/10 法神戒指
1/10 天尊戒指

1/50 怒斩
1/50 逍遥扇
1/50 龙牙

1/100 屠龙|@爆稀有装备检测
1/100 嗜魂法杖|@爆稀有装备检测
1/100 命运之刃|@爆稀有装备检测

QF中脚本例子：
;检测是否为指定的物品名称
[@爆稀有装备检测]
#if
#OR
equal <$DROPITEMNAME> 屠龙
equal <$DROPITEMNAME> 嗜魂法杖
equal <$DROPITEMNAME> 命运之刃
#act
goto @爆出稀有装备条件检测
break

[@爆出稀有装备条件检测]
#if
checkgamegold < 10000
#act
;元宝小于1W，设置不允许爆出物品
ALLOWDROP 0
break
#elseact
;元宝大于1W，设置允许爆出物品
ALLOWDROP 1

支持 #CHILD 1/1 RANDOM 爆率写法


HOOK回调

HOOK回调目录

物理攻击回调

魔法攻击回调

被魔法攻击回调

被物理攻击回调

宝宝物理攻击回调

宝宝魔法攻击回调

宝宝被魔法攻击回调

宝宝被物理攻击回调


物理攻击回调

HOOK攻击伤害
HookAttack
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@HookAttack] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

HookAttack 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

HookAttack 0


魔法攻击回调

HOOK魔法攻击伤害
HookMagic
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@HookMagic] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

HookMagic 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

HookMagic 0


被魔法攻击回调

HOOK被魔法攻击伤害
HookMagicStruck
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@HookMagicStruck] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

HookMagicStruck 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

HookMagicStruck 0


被物理攻击回调

HOOK被物理攻击伤害
HookStruck
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@HookStruck] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

HookStruck 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

HookStruck 0


宝宝物理攻击回调

宝宝HOOK攻击伤害
SlaveHookAttack
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@SlaveHookAttack] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

SlaveHookAttack 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SlaveHookAttack 0


宝宝魔法攻击回调

宝宝HOOK魔法攻击伤害
SlaveHookMagic
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@SlaveHookMagic] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

SlaveHookMagic 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SlaveHookMagic 0


宝宝被魔法攻击回调

宝宝HOOK被魔法攻击伤害
SlaveHookMagicStruck
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@SlaveHookMagicStruck] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

SlaveHookMagicStruck 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SlaveHookMagicStruck 0


宝宝被物理攻击回调

宝宝HOOK被物理攻击伤害
SlaveHookStruck
参数1=开关状态(1:回调 0:不回调)
参数2=攻击对象类型(使用N变量存储,这里填写数字0~99,不需要填N,0为人物，1为英雄,大于1的都是怪物等)
参数3=技能ID(使用N变量存储，这里填写0~99)
参数4=攻击伤害(使用N变量存储,这里填写数字0~99,不需要填N,修改此N变量可以实现最终伤害修改)
物理攻击后伤害触发 [QFunction-0.txt] 脚本内, [@SlaveHookStruck] 字段,需要在此字段进行N伤害变量修改方可实现Hook

[@Login]
#IF
#ACT

SlaveHookStruck 1 50 51 52

;1 设置开启回调

;50 攻击对象类型存储在N50变量里

;51 技能ID存储在N51变量里

;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SlaveHookStruck 0


跨服命令

跨服命令目录
登录跨服服务器
退出跨服服务器
是否跨服人物
取跨服人物数量
自动获取登录服务器


跨服使用命令

跨服登录
CROSSSERVER
参数:服务器IP
参数:游戏网关端口( RunGate.exe 中的端口)

[@跨服登录]
#if
#act
CROSSSERVER 192.168.1.253 7200


是否跨服人物

检查玩家是否为跨服人物
ISCROSSHUMAN
[@是否跨服人物]
#IF
ISCROSSHUMAN
#SAY
你是跨区人员！
#ELSESAY
你是总区！
ISCROSSHUMANEX
参数1:分区标识
[@是否跨服人物]
#IF
ISCROSSHUMANEX 10000
#SAY
你是来自跨服1区人员！
#ELSESAY
你不是来自跨服1区人员！
*QM脚本中指定跨服人物传送到指定地图指定的坐标
[@Login]
#IF
ISCROSSHUMANEX 10000
#ACT
mapmove rxlt2 65 21
GuildNoticeMsg 233 250 (*)来自跨服一区的玩家,被传送到65,21 [<$SERVERNAME>].有仇报仇!


取跨服人物数量

取跨服人物数量
GETCROSSCOUNT
参数:保存到变量名称
[@取跨服人数]
#IF
#ACT
GETCROSSCOUNT N0
SendMsg 5 跨服人物数量: <$STR(N0)>
GETCROSSCOUNTEX
参数1:分区标识
参数2:保存到变量名称
[@取跨服人数]
#IF
#ACT
GETCROSSCOUNTEX 10000 N0
SendMsg 5 跨服一区人物数量: <$STR(N0)>


退出跨服服务器

退出跨服服务器
说明: 人物返回到自身的服务器中
EXITCROSSSERVER

[@返回本区]
#if
#act
EXITCROSSSERVER

所有人退出跨服服务器
说明:将所有跨服人物遣返到自身所在服务器
EXITCROSSSERVEREX
[@返回本区]
#if
#act
EXITCROSSSERVEREX


自动获取登录服务器

自动获取登录服务器
AUTOCROSSSERVER
参数:服务器IP
参数:登录网关位置 1为第一个网关 2为第二个网关

[@跨服登录]
#if
#act
AUTOCROSSSERVER 192.168.1.253 1


自动挂机

挂机命令目录

开始挂机

结束挂机

检测是否挂机

示例脚本


开始挂机

开始挂机命令
StartAutoPlayGameEx
通过插件挂机会调用QF中[@StartAutoPlayGameEx]字段，然后调用本命令即可开始挂机
参数1:挂机时长
参数2:是否可拾取
参数3:切换地图模式
参数4:不可攻击的怪物
参数5:不可拾取的物品
注意*参数为空自动获取插件挂机中的配置

[@StartAutoPlayGameEx]

#if

CHECKLEVELEX < 50
#act
StartAutoPlayGameEx 60 假 0 |沃玛教主| |沃玛号角|
SendMsg 0 你的等级小于50级,只有60分钟的单次挂机时间,并且无法使用自动拾取,无法攻击沃玛教主,无法自动拾取沃玛号角。

#ELSEACT

StartAutoPlayGameEx

SendMsg 0 你的等级大于50级,可以随意挂机。


结束挂机

停止挂机命令
StopAutoPlayGameEx
通过插件挂机会调用QF中[@StopAutoPlayGameEx]字段，然后调用本命令即可停止挂机

[@StopAutoPlayGameEx]
#if
#act
StopAutoPlayGameEx
SENDMSG 6 %s，停止挂机


检测是否挂机

检测是否在挂机
CheckAutoPlayGame
通过脚本查看人物是否开启挂机

[@main]
#if

CheckAutoPlayGame
#act
QueryBag
SendMsg 0 你的背包已经整理好了


示例脚本

示例脚本
此脚本为QF中调用接口,请根据个人喜好从写脚本。
[@离开地图]
#if
CheckAutoPlayGame
#act
SendMsg 6 当前状态还在挂机中,但您离开了地图 <$STR(S$挂机地图)> ，自动传送回去继续挂机。
mapmove <$STR(S$挂机地图)>
#ELSEact
SendMsg 6 当前状态已经停止挂机,将不会继续将您传送到<$STR(S$挂机地图)>地图中。

[@StartAutoPlayGameEx]
#if
CHECKLEVELEX < 50
#act
mov S$挂机地图 <$MAP>
StartAutoPlayGameEx 60 假 2 |沃玛教主| |沃玛号角|
SendMsg 0 你的等级小于50级,只有60分钟的单次挂机时间,并且无法使用自动拾取,无法攻击沃玛教主,无法自动拾取沃玛号角。
#ELSEACT
mov S$挂机地图 <$MAP>
StartAutoPlayGameEx
SendMsg 0 你的等级大于50级,可以随意挂机。

[@StopAutoPlayGameEx]
#if
#act
StopAutoPlayGameEx
SENDMSG 6 %s，停止挂机


文本操作

文本操作目录

分割文本

分割文本到变量

分割数字

分割数值到变量

文本排序

复制文件

写配置项

读配置项

删除配置项_配置项

删除配置项_节点

复制文件Ex

写配置项Ex

读配置项Ex

删除配置项_配置项Ex

删除配置项_节点Ex

从长字符串中随机出一段字符串


分割文本

分割文本
ExtractString
使用脚本将指定文本分割
参数1: 分隔符
参数2: 需要分割的内容
参数3: 保存分后的变量 (如 S1-S8)
注* 最大支持10个参数

[@main]

#IF

#ACT
MOV S0 布衣(男):斩马刀:灯笼项链:道士头盔:金手镯:金手镯:金戒指:金戒指

EXTRACTSTRING : <$STR(S0)> S1 S2 S3 S4 S5 S6 S7
    S8
SENDMSG 6 分割后的结果:<$STR(S1)> <$STR(S2)> <$STR(S3)>
    <$STR(S4)> <$STR(S5)> <$STR(S6)> <$STR(S7)>
    <$STR(S8)> <$STR(S9)>
    <$STR(S10)>


分割文本EX

分割文本到变量
ExtractStringEx
将文本分割并保存到变量
参数1: 分隔符
参数2: 需分割文本
参数3: 保存变量
参数4: 分割数量

[@main]
#if
#act
ExtractStringEx | 测试文本1|测试文本2|测试文本3 S$测试变量 N0
SendMsg 6 你将文本分割了，并将分割后的内容保存在变量【S$测试变量_0】和【S$测试变量_1】【S$测试变量_2】中，他们的值分别是<$STR(S$测试变量_0)>，<$STR(S$测试变量_1)>和<$STR(S$测试变量_2)> ，分割后共获得了【<$STR(N0)>】个内容


分割数字

分割数字
SplitNumber
分割数字保存到变量(有数量限制 最大9个变量)
参数1: 需分割的数字组
参数2-参数10: 存放分割后数字

[@main]
#if
#act
Mov S68 123456789
SplitNumber <$Str(S68)> P1 P2 P3 P4 P5 P6 P7 P8 P9
SendMsg 6 P1值为<$STR(P1)>
SendMsg 6 P2值为<$STR(P2)>
SendMsg 6 P3值为<$STR(P3)>
SendMsg 6 P4值为<$STR(P4)>
SendMsg 6 P5值为<$STR(P5)>
SendMsg 6 P6值为<$STR(P6)>
SendMsg 6 P7值为<$STR(P7)>
SendMsg 6 P8值为<$STR(P8)>
SendMsg 6 P9值为<$STR(P9)>


分割数值到变量

分割数值到变量
SplitNumberEx
参数1: 需要分割的数字组
参数2: 保存到的变量
参数3: 记录数量的变量

[@main]
#if
#act
SplitNumber 1024520 N$分割数字 N0
SendMsg 6 <$STR(N$分割数字_0)>的值为1
SendMsg 6 <$STR(N$分割数字_1)>的值为0
SendMsg 6 <$STR(N$分割数字_2)>的值为2
SendMsg 6 <$STR(N$分割数字_3)>的值为4
SendMsg 6 <$STR(N$分割数字_4)>的值为5
SendMsg 6 <$STR(N$分割数字_5)>的值为2
SendMsg 6 <$STR(N$分割数字_6)>的值为0
SendMsg 6 一共分割获得<$STR(N0)>个数字


文本排序

排列文本顺序
SortString
将文本排序
参数1: 需排列文本行
参数2: 分隔符
参数3: 保存分割后变量
参数4: 排列顺序 (0 从小到大 1 从大到小)
[@文本排序](从小到大)
#if
#act
MOV S$三号位置 14
MOV S$四号位置 5
MOV S$五号位置 8
MOV S$排序 <$STR(S$三号位置)>|<$STR(S$四号位置)>|<$STR(S$五号位置)>
SortString <$STR(S$排序)> | <$STR(S$整理后)> 0
SendMsg 6 整理后值为<$STR(S$整理后)>

[@文本排序](从大到小)
#if
#act
MOV S$三号位置 14
MOV S$四号位置 5
MOV S$五号位置 8
MOV S$排序 <$STR(S$三号位置)>|<$STR(S$四号位置)>|<$STR(S$五号位置)>
SortString <$STR(S$排序)> | <$STR(S$整理后)> 1
SendMsg 6 整理后值为<$STR(S$整理后)>


复制文件

复制文件
CopyFile
参数1: 原文件路径
参数2: 目标文件路径
.\代表当前目录
..\代表上一级目录
.\当前目录 默认就是在Mir200
例1：将 [ D:\Mirserver\Mir200\Envir\基础爆率\白野猪.ini ] 复制到 [ D:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini ]

[@main]
#if
#act
COPYFILE D:\Mirserver\Mir200\Envir\基础爆率\白野猪.ini D:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini

例2：将 [ 将当前运行分区复制一份 .\!Setup.txt ]
[@main]
#if
#act

COPYFILE .\!Setup.txt .\!Setup1.txt


写配置项

读配置项
WriteConfigFileItem
参数1: 路径 注* 由于开发语言问题需注意路径..\..\..\..\格式请写成绝对路径
参数2: 节点名称
参数3: 配置项名称
参数4: 写入内容

[@main]
#if
#act
WriteConfigFileItem .\!setup.txt test <$USERNAME> 1234561

Setup文件写入内容如下

[test]
啊啊啊啊啊=1234561


读配置项

读配置项
ReadConfigFileItem
参数1: 路径 注* 由于开发语言问题需注意路径..\..\..\..\格式请写成绝对路径
参数2: 节点名称
参数3: 配置项名称
参数4: 读取保存变量名

[@main]
#if
#act
ReadConfigFileItem .\!Setup.txt Server ServerName <$STR(S$配置项内容)>
SENDMSG 6 <$STR(S$配置项内容)>


删除配置项_配置项

删除配置项_项目文本
DelConfigFileItem
参数1: 文件路径
参数2: 节点名称
参数3: 配置项名称
注* 由于开发语言问题需注意路径..\..\..\..\格式请写成绝对路径

[@删除配置项]
#if
#act
DelConfigFileItem .\123.txt test <$USERNAME>


删除配置项_节点

删除配置项_节点
DelConfigFileSection
参数1: 文件路径
参数2: 节点名称
注* 由于开发语言问题需注意路径..\..\..\..\格式请写成绝对路径

[@删除节点]
#if
#act
DelConfigFileSection .\123.txt test


复制文件Ex

复制文件Ex
CopyFileEx
参数1: 原文件路径
参数2: 目标文件路径
支持缩略格式路径 ..\

[@main]
#if
#act
COPYFILEEX ..\QuestDiary\每日充值.txt ..\QuestDiary\新每日充值.txt


写配置项Ex

写配置项Ex
WriteConfigFileItemEx
参数1: 路径 注* 由后期更新支持缩略路径格式 ..\
参数2: 节点名称
参数3: 配置项名称
参数4: 写入内容

[@写配置]
#if
#act
WriteConfigFileItemEx ..\QuestDiary\文件操作\读写操作测试.txt 测试节名 测试项名称 测试项文本

Setup文件写入内容如下

[测试节名]
测试项名称=测试项文本


读配置项Ex

读配置项Ex
ReadConfigFileItemEx
参数1: 路径 注* 由后期更新支持缩略路径格式 ..\
参数2: 节点名称
参数3: 配置项名称
参数4: 读取保存变量名

[@读配置EX]
#if
#act
ReadConfigFileItemEx ..\QuestDiary\文件操作\读写操作测试.txt 测试节名 测试项名称 <$STR(S$配置项内容)>
SENDMSG 6 <$STR(S$配置项内容)>


删除配置项_配置项Ex

删除配置项_项目文本Ex
DelConfigFileItemEx
参数1: 文件路径 注* 由后期更新支持缩略路径格式 ..\
参数2: 节点名称
参数3: 配置项名称

[@删配置项]
#if
#act
DelConfigFileItemEx ..\QuestDiary\文件操作\读写操作测试.txt 测试节名 测试项名称


删除配置项_节点Ex

删除配置项_节点Ex
DelConfigFileSectionEx
参数1: 文件路径 注* 由后期更新支持缩略路径格式 ..\
参数2: 节点名称

[@删除配置节点]
#if
#act
DelConfigFileSectionEx ..\QuestDiary\文件操作\读写操作测试.txt 测试节名


从长字符串中随机出一段字符串

从长字符串中随机取出一段字符串
RandomText
参数1：长字符串
参数2：分隔符
参数3：随机出的字符串

例子1：

;物品名不能包含" {}三种符号例子：{1/10}光芒道靴，机率A=1/机率B=10 大约10分之1几率爆出
;最后一个物品几率建议1/1，前面物品没抽到，最后可作为保底抽取

例子：
#if
#act
RandomText RANDOM*{1/4}雷霆项链|{1/4}雷霆护腕|{1/4}雷霆道戒|{1/4}雷霆道靴|{1/1}雷霆腰带* | S1
SENDMSG 6 S1变量 <$STR(S1)>
RandomText NEWRANDOM*雷霆项链|雷霆护腕|雷霆道戒|雷霆道靴|雷霆腰带* | S2
SENDMSG 6 S2变量 <$STR(S2)>
RandomText 雷霆项链|雷霆护腕|雷霆道戒|雷霆道靴|雷霆腰带 | S3
SENDMSG 6 S3变量 <$STR(S3)>


将字符串填充一定长度

将字符串填充一定长度
FillText
将变量用空格填充到指定字符的长度，用于排版
参数1:必须为文本类变量
参数2:填满长度
参数3:在前面填充(1在前方填充 0 在后面填充)
参数4:填充字符(此变量为空 以空格填充,不为空则以填写内容填充)

[@main]
#if
#act

FillText S0 15
SendMsg 6 将S0用空格填充到了15个字符的长度，用于排版

[@main]
#if
#act
mov S1 01
FillText S1 4 0 #
SENDMSG 6 用#号在S1变量后面补足4位字符,结果为<$STR(S1)>
mov S1 01
FillText S1 4 1 -
SENDMSG 6 用-号在S1变量前面补足4位字符,结果为<$STR(S1)>
mov S1 01
FillText S1 4 1
SENDMSG 6 用空格在S1变量前面补足4位字符,结果为<$STR(S1)>


逻辑判断

逻辑判断目录

取随机扩展

判断时间段剩余时间

血量百分比判断


取随机扩展

取随机扩展
RandomEx
随机扩展值判断
参数1:分子
参数2:分母

例子：

RandomEx 1 2 2分之1

RandomEx 4 5 5分之4

RandomEx 7 1000 1000分之7

RandomEx 3 10000 10000分之3

#IF

RandomEx 55 100

#ACT

讲解：100为母，55为子，母是随机范围，当随机值小于或等于子值就执行脚本


判断时间段剩余时间

判断时间段剩余时间
CheckTime
适用各种现时活动等场景
参数1: 当前时间
参数2: 结束时间
参数3: 判断符(<=>)
参数4: 比较值
参数5: 返回相差秒数

[@main]

#ACT
MOV S1 2019-05-07-00:00:00
MOV S2 <$TIME>
#IF
CheckTime <$STR(S1)> <$TIME> > 0 D1
#ACT
SENDMSG 6 输出变量值：<$STR(S1)> <$STR(S2)> <$STR(D1)>


血量百分比判断

血量百分比判断

CheckHpPer > 99

参数1= > < = (检测符号)
参数2= 百分比值
参数3= 比率模式(0=百分比 1=千分比)

CheckMpPer > 99

参数1= > < = (检测符号)
参数2= 百分比值
参数3= 比率模式(0=百分比 1=千分比)

AddHpPer + 1

参数1= + - = (执行符号)
参数2= 百分比值
参数3= 比率模式(0=百分比 1=千分比)

AddMpPer + 1

参数1= + - = (执行符号)
参数2= 百分比值
参数3= 比率模式(0=百分比 1=千分比)

例子：

QFunction-0.txt 攻击怪物触发
[@攻击怪物触发]
#IF
CHECKHITMONNAME 白野猪
#act
m.AddHPPer - 10
sendmsg 6 白野猪血量减少10%

[@main]
<检查血量百分比30%/@检查血量百分比30%> <检查蓝量百分比30%/@检查蓝量百分比30%> \
<增加血量10%/@增加血量10%> <增加蓝量10%/@增加蓝量10%> \
<减少血量10%/@减少血量10%> <减少蓝量10%/@减少蓝量10%> \
<设置血量10%/@设置血量10%> <设置蓝量10%/@设置蓝量10%> \

[@设置血量10%]
#act
AddhpPer = 10

[@设置蓝量10%]
#act
AddmpPer = 10

[@减少血量10%]
#act
AddhpPer - 10

[@减少蓝量10%]
#act
AddmpPer - 10

[@检查血量百分比30%]
#if
CheckHpPer > 30
#act
sendmsg 6 你的血量在30%以上..
#elseact
sendmsg 6 你的血量低于30%..

[@检查蓝量百分比30%]
#if
CheckMpPer > 30
#act
sendmsg 6 你的蓝量在30%以上..
#elseact
sendmsg 6 你的蓝量低于30%..

[@增加血量10%]
#act
AddhpPer + 10

[@增加蓝量10%]
#act
AddmpPer + 10

;===============================================

千分比：
#act
AddHPPer - 10 1
sendmsg 6 你血量损失千分之十

#act
AddMPPer - 10 1
sendmsg 6 你蓝量损失千分之十

#if
CheckHpPer > 30 1
#act
sendmsg 6 你血量在千分之三十以上

#if
CheckMpPer > 30 1
#act
sendmsg 6 你蓝量在千分之三十以上


多页背包检测命令

多页背包检测命令
CHECKBAGPAGEITEM
判断指定背包页是否有物品
参数1:页面

#IF

CHECKBAGPAGEITEM 1

#ACT

sendmsg 6 背包第一页有物品

CHECKBAGPAGECOUNT

判断是否开启指定背包页

参数1:页面数

#IF

CHECKBAGPAGECOUNT 1

#act

sendmsg 6 已经开启第一页背包

CHECKBAGPAGESTATE
判断指定背包页是否开启

[@ExtBagPageCount]
#if
CHECKBAGPAGESTATE
#act
sendmsg 6 您点击背包页<$STR(N$OnClickBagPage)>，此页面未开启
messagebox 是否开启此背包页,开启此背包页需要2000元宝 @确定开启 @取消开启
#elseact
sendmsg 6 您点击背包页<$STR(N$OnClickBagPage)>，此页面以开启


更新内容

  • 更新内容说明
  1. 修复客户端自定义框绘制问题
  2. 修复叠加漏洞


新建项目

通过脚本命令发送屏幕中间公告
参数1:发送模式(0=自己，1=组队，2=行会，3=地图，4=所有人)
参数2:坐标X|坐标Y|最大显示条数|显示时间(毫秒,1秒=1000)|方向(1由上到下 2由下到上 3由左到右 4由右到左)|速度(方向为3,4时生效)|字体(0 楷体 1 微软雅黑 2 宋体)|字体大小
参数3:内容( 文字颜色|背景颜色|加粗|角度|下划线|删除线|文本内容)*如文本分段有其他颜色 请使用格式 {显示的字|颜色代码0~255} 如 {<$USERNAME>|252}
参数4:素材(是否整体|素材名称|素材编号|播放张数|间隔时间) *是否整体为-1 不启用素材 0整体用素材 1单条用素材

0 50|50|6|3000|1|0|2|12 251|255|0|0|0|0{<$USERNAME>|252},向所有人说我正在使用某雀插件进行测试! 0|mq.pak|1|10|100

251 255 12 6 100 200 4 8000 {<$USERNAME>|252},向所有人说我正在使用某雀插件进行测试! 1


目录

目录

基本变量
专属变量与接口
脚本命令