神盾插件说明书

Help >
神盾插件说明书

www.SDGom.Com

神盾插件说明书

更新日期2025.11.17

仅支持gom1108
本地说明书一个月更新一次
未查询到命令的GM请查阅官网在线说明书
QQ2群:864894379

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


重要！大背包数据转换

Help >
重要！大背包数据转换
重要！大背包数据转换

重要通知！！！ 重要通知！！！重要通知！！！

ESP用户转SD用户. 开区中的版本 大背包设置问题.

  1. 转换后不要启动游戏. 先启动M2. 在插件界面.扩展背包.大背包设置页 先设置 变量数据保存路径.手动写入就可以

    (要与原ESP路径一致)不用点击创建目录

  2. 选择使用变量占用法扩展T变量 要与ESP原设置的变量一致

  3. 勾选开启大背包 选项.
  4. 设置好后重启M2 确认一下 设置正确.

开启大背包后需要重启引擎 大背包才能生效 重要！！！重要！！！

转换版本的gm 目录直接填写原目录即可 不然会丢失数据 ！！ 重要！！！重要！！！重要！！！重要！！！

第一次转换的gm 建议备份底板 重要！！！重要！！！重要！！！重要！！！

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


相关触发

Help >
相关触发
相关触发
触发标签 | 含义
[@SDKILLMON] | 杀死怪物触发
[@SDSLAVEKILLMON] | 宝宝杀死怪物触发
[@SDDropItem] | 怪物爆出触发
[@SDDropUseItems] | 人物爆出触发
[@SDDropBagItems] | 背包爆出触发
[@SDQueryUserState] | 查看别人装备触发
[@SD宝宝魔法攻击] | 宝宝魔法攻击触发
[@SD宝宝物理攻击] | 宝宝物理攻击触发
[@SDPLAYDIE] | 玩家死亡触发
[@SDSlaveDie] | 宝宝死亡触发
[@SDBUYSHOPITEM] | 商铺购买触发
[@SDBUYUSERSHOPITEM] | Hero摆摊购买触发
[@SD装备升级成功] | SD装备升级成功触发
[@SD装备升级失败]] | SD装备升级失败触发
[@SD装备升级破碎] | 装备升级破碎触发
[@SD烈火触发] | 烈火触发
[@SD开天触发] | 开天触发
[@SD逐日触发] | 逐日触发
[@SD传送控制] | 传送控制触发
[@SDCHANGEMAP] | 地图切换触发
[@SD进入安全区] | 进入安全区触发
[@SD离开安全区] | 离开安全区触发
[@SDjoinguild] | 加入行会触发
[@SDexitguild] | 退出行会触发
[@SD小退控制] | 小退控制触发
[@物品爆出反馈A] | 可视化爆率反馈A
[@物品爆出反馈B] | 可视化爆率反馈B
[@SD版本自定义标记文本] | 登录器自定义标识文本
[@SD死亡前触发] | 死亡前触发
[@SDBeginMagic] | 技能控制触发

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


相关常量

Help >
相关常量
相关常量
通用常量 | 含义
<$SDClientText> | 登录器自定义文本内容
<$SDTIME> | 当前服务器系统时间
<$SDREVIVALTIMEEX> | 复活CD
<$SDUserStateName> | 当前正在查看你装备的玩家名称
<$SDAutoPickStart> | 表示是否开启自动捡物
<$SDAutoPickRange> | 自动捡物范围
<$SDAutoPickInterval> | 自动捡物间隔
<$SDDropItemMapTitle> | 当前爆出地图名称(爆出触发)
<$SDOnUserCount> | 在线真人数量
<$SDOnUserCountOffLine> | 在线真人数量不包含离线挂机
攻击常量 | 含义
<$SDKILLERRACE> | 死亡时击杀者类型 （ 数据库Race值 ）
<$SDKILLERNAME> | 死亡时的击杀者名字
<$SDKILLERNAMECLIENT> | 死亡时的击杀者名字去除数字
<$SDPKPOWER> | 当前攻击造成的伤害
<$SDTargetName> | 当前攻击对象名称
<$SDTARGETX> | 当前攻击目标的坐标X
<$SDTARGETY> | 当前攻击目标的坐标Y
<$SDTARGETHP> | 当前攻击目标的当前HP
<$SDTARGETMAXHP> | 当前攻击目标的最大HP
<$SDKILLMONNAME> | 杀死怪物名称
<$SDKillMonX> | 杀死怪物坐标X
<$SDKillMonY> | 杀死怪物坐标Y
<$SDDROPITEMNAME> | 杀死怪物正在爆出的物品名称
<$SDDropItem> | 爆出的物品名称
<$SDDropItemMonster> | 爆出物品的怪物数据库名称
<$SDDropItemMonsterClient> | 爆出物品的怪物客户端名称去除数字
商铺常量 | 含义
< $SDSHOPSELLER> | 商品卖家名称
<$SDSHOPBUYER> | 商品买家名称
<$SDSHOPITEM> | 商品名称
<$SDSHOPITEMIDX> | 商品MakeIdex
<$SDSHOPITEMPRICE> | 商品价格
<$SDSHOPITEMMONEYTYPE> | 商品货币类型
<$SDSHOPITEMMONEYNAME> | 商品货币名称
<$SDSHOPITEMCOUNT> | 商品物品数量
强化常量 | 含义
<$UPGRADECOUNT> | 身上物品总强化数
<$UPGRADECOUNT0> | 衣服强化数
<$UPGRADECOUNT1> | 武器强化数
<$UPGRADECOUNT2> | 蜡烛强化数
<$UPGRADECOUNT3> | 项链强化数
<$UPGRADECOUNT4> | 头盔强化数
<$UPGRADECOUNT5> | 左手镯强化数
<$UPGRADECOUNT6> | 右手镯强化数
<$UPGRADECOUNT7> | 左戒指强化数
<$UPGRADECOUNT8> | 右戒指强化数
<$UPGRADECOUNT9> | 护身符强化数
<$UPGRADECOUNT10> | 腰带强化数
<$UPGRADECOUN11> | 鞋子强化数
<$UPGRADECOUNT12> | 宝石强化数
<$UPGRADECOUNT13> | 斗笠强化数
<$UPGRADECOUNT14> | 军鼓强化数
<$UPGRADECOUNT15> | 马牌强化数
<$UPGRADECOUNT16> | 盾牌强化数
<$UPGRADECOUNT17> | 时装衣服强化数
<$UPGRADECOUNT18> | 时装武器强化数
<$UPGRADECOUNT19> | 首饰盒1强化数
<$UPGRADECOUNT20> | 首饰盒2强化数
<$UPGRADECOUNT21> | 首饰盒3强化数
<$UPGRADECOUNT22> | 首饰盒4强化数
<$UPGRADECOUNT23> | 首饰盒5强化数
<$UPGRADECOUNT24> | 首饰盒6强化数
<$UPGRADECOUN25> | 首饰盒7强化数
<$UPGRADECOUN26> | 首饰盒8强化数
<$UPGRADECOUNT27> | 首饰盒9强化数
<$UPGRADECOUNT28> | 首饰盒10强化数
<$UPGRADECOUNT29> | 首饰盒11强化数
<$UPGRADECOUNT30> | 首饰盒12强化数
宝宝常量 | 含义
<$SDBABYNAME> | 当前正在攻击的宝宝名称
<$SDSlaveTargetName> | 当前宝宝攻击对象名称
<$SDSlaveTargetNameClient> | 当前宝宝攻击对象名称去除数字
<$SDSlaveTargetHP> | 当前宝宝攻击对象血量
<$SDSlaveTargetMaxHP> | 当前宝宝攻击对象最大血量
<$SDSlaveTargetX> | 当前宝宝攻击对象坐标X
<$SDSlaveTargetY> | 当前宝宝攻击对象坐标Y


装备位置代码和常量

Help >
装备位置代码和常量
装备位置代码和常量

神盾装备位置代码与常量

装备位置 | 装备说明 | 装备常量
0 | 衣服 | <$DRESS>
1 | 武器 | <$WEAPON>
2 | 勋章 | <$RIGHTHAND>
3 | 项链 | <$NECKLACE>
4 | 头盔 | <$HELMET>
5 | 右手镯 | <$ARMRING_R>
6 | 左手镯 | <$ARMRING_L>
7 | 右戒指 | <$RING_R>
8 | 左戒指 | <$RING_L>
9 | 护身符 | <$BUJUK>
10 | 腰带 | <$BELT>
11 | 靴子 | <$BOOTS>
12 | 宝石 | <$CHARM>
13 | 斗笠(面具) | <$HAT>
14 | 军鼓 | <$DRUM>
15 | 马牌 | <$HORSE>
16 | 盾牌 | <$SHIELD>
17 | 时装武器 | <$SWEAPON>
18 | 时装衣服 | <$SDRESS>
30 | 生肖盒装备1 | <$GODBLESSITEM1>
31 | 生肖盒装备2 | <$GODBLESSITEM2>
32 | 生肖盒装备3 | <$GODBLESSITEM3>
33 | 生肖盒装备4 | <$GODBLESSITEM4>
34 | 生肖盒装备5 | <$GODBLESSITEM5>
35 | 生肖盒装备6 | <$GODBLESSITEM6>
36 | 生肖盒装备7 | <$GODBLESSITEM7>
37 | 生肖盒装备8 | <$GODBLESSITEM8>
38 | 生肖盒装备9 | <$GODBLESSITEM9>
39 | 生肖盒装备10 | <$GODBLESSITEM10>
40 | 生肖盒装备11 | <$GODBLESSITEM11>
41 | 生肖盒装备12 | <$GODBLESSITEM12>
42 | 首饰盒装备1 | <$GODBLESSITEM13>
43 | 首饰盒装备2 | <$GODBLESSITEM14>
44 | 首饰盒装备3 | <$GODBLESSITEM15>
45 | 首饰盒装备4 | <$GODBLESSITEM16>
46 | 首饰盒装备5 | <$GODBLESSITEM17>
47 | 首饰盒装备6 | <$GODBLESSITEM18>
1001 | 时装项链 | <$SNECKLACE>
1002 | 时装左手镯 | <$SARMRING_L>
1003 | 时装右手镯 | <$SARMRING_R>
1004 | 时装左戒指 | <$SRING_L>
1005 | 时装右戒指 | <$SRING_R>
1006 | 时装头盔 | <$SHELMET>
1007 | 时装盾牌 | <$SSHIELD>
1008 | 时装腰带 | <$SBELT>
1009 | 时装鞋子 | <$SBOOTS>
1010 | 时装军鼓 | <$SDRUM>
1011 | 时装宝石 | <$SCHARM>
1012 | 时装勋章 | <$SHORSE>
1012 | 时装马牌 | <$SHORSE>
1001 | 时装项链 -改名名称 | <$G_SNECKLACE>
1002 | 时装左手镯 -改名名称 | <$G_SARMRING_L>
1003 | 时装右手镯 -改名名称 | <$G_SARMRING_R>
1004 | 时装左戒指 -改名名称 | <$G_SRING_L>
1005 | 时装右戒指 -改名名称 | <$G_SRING_R>
1006 | 时装头盔 -改名名称 | <$G_SHELMET>
1007 | 时装盾牌 -改名名称 | <$G_SSHIELD>
1008 | 时装腰带 -改名名称 | <$G_SBELT>
1009 | 时装鞋子 -改名名称 | <$G_SBOOTS>
1010 | 时装军鼓 -改名名称 | <$G_SDRUM>
1011 | 时装宝石 -改名名称 | <$G_SCHARM>
1012 | 时装勋章 -改名名称 | <$G_SHORSE>
1012 | 时装马牌 -改名名称 | <$G_SHORSE>


装备对比逻辑 详解

Help >
装备对比逻辑 详解

/计算装备战斗力系统 不是单纯比较哪件数值高 哪件装备就是优选

综合得分高的装备是优选
分数计算例子
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

//计算生命值 1点=10分

//计算魔法值 1点=5分

//计算防御下限 1点=250分

//计算防御上限 1点=500分

//计算魔御下限 1点=250分

//计算魔御下限 1点=500分

//计算攻击下限 1点=500分

//计算攻击上限 1点=1000分

//计算魔法下限 1点=500分

//计算魔法上限 1点=1000分

//计算道术下限 1点=500分

//计算道术上限 1点=1000分

//计算暴击几率增加 1点=3000分

//计算增加攻击伤害 1点=3000分

//计算物理伤害减少 1点=2000分

//计算魔法伤害减少 1点=2000分

//计算忽视目标防御 1点=1500分

//计算所有伤害反弹 1点=1500分

//计算增加目标爆率 1点=1500分

//计算人物体力增加 1点=1000分

//计算人物魔力增加 1点=1000分

//计算怒气恢复增加 1点=500分

//计算合击攻击增加 1点=500分


批量替换sd插件

Help >
批量替换sd插件
批量替换sd插件

已经开了很多个区，如何批量换成sd插件

分2步解决
1.使用控制台上一键安装，批量把插件安装到每一个区，是否安装反挂，是否要转换脚本和光柱都在这里设置好，一键解决

2.第二步，选定一个区，开起来检查各项设置，把自己需要开的打开，比如UT变量，大背包，无限血条之类，然后确保这个区没问题了
然后把这个区下的 \Mir200\SD功能插件 SD功能插件文件夹复制出来，粘贴到其他每一个区


反挂简介

Help > 神盾反挂功能 >
反挂简介

控制台勾选安装反挂网关

一键安装即可安装反挂网关 不需其他任何操作

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


反挂界面一

Help > 神盾反挂功能 >
反挂界面一

反挂上调整设置 请点击保存修改 游戏大退生效！！！

此界面查看在线玩家

可复制玩家人物名 IP 机器码

黑白名单 对人物封禁 和过白

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


反挂界面二

Help > 神盾反挂功能 >
反挂界面二

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.对玩家未安装反挂的处理方式
2.对玩家外挂处理方式
3.大退延迟与小退延迟的功能
4.多开限制功能
5.选择检测项 虚拟机 登录名称 机器码


反挂界面三

Help > 神盾反挂功能 >
反挂界面三

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.速度检测选项（一般不需要调整）鼠标放置有说明
2.封包误差计算 默认计算误差35 根据要求调整
下面有详解
3.调试模式 调试版本速度
4.禁用加速器选项（27代理 9g代理 爱加速）
5.变速齿轮的检测
6.超级不卡检测与处罚方式

封包详解

新增一个封包计算功能，以解决最近反馈的变速器加速问题，建议封包误差设置20，连续超过4次，如果担心误封，可以设置封包误差25，连续超过5次

1.计算间隔是 理论极限最小值
2.实际间隔为玩家客户端间隔 网越快越接近计算值
3.网关间隔就是 网关两次消息的间隔
当默认35时 实际间隔小于网关间隔35毫秒以上 执行动作

注：数值越小代表速度越快


反挂界面四

Help > 神盾反挂功能 >
反挂界面四
反挂界面四

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.隐藏地面物品（这有禁用F12过滤名称 不需要的选择不勾选）
2.隐藏人物怪物坐标（防止脱机外挂寻怪）
3.隐藏怪物（需要功能插件挂机功能的 请勿勾选）
4.隐藏地图
5.游戏截图黑屏问题


反挂界面五

Help > 神盾反挂功能 >
反挂界面五
反挂界面五

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.喊话过滤
2.野蛮技能控制
3.十步一杀控制
4.三技能限制
5.扩展禁用禁用走位刺杀（使用走位刺杀反挂踢人）


反挂界面六

Help > 神盾反挂功能 >
反挂界面六

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.旅行白名单（玩家名字+掉线代码）此玩家+此代码可通行
2.对所有玩家放行的代码
3.窗口禁止截图白名单（对个人开放截图）
4.黑名单如下


反挂界面七

Help > 神盾反挂功能 >
反挂界面七

反挂上调整设置 请点击保存修改 游戏大退生效！！！

界面功能
1.显示被封禁玩家名字与原因
2.可手动添加封号
3.大退延迟与小退延迟的功能
4.右键玩家可手动解封


开启自动拾取

Help > 自动拾取 >
开启自动拾取

SDSTARTAUTOPICK 自动捡物

gm控制自动拾取的开关 玩家无法控制

参数1 ：1为开启0为关闭

请在 QM脚本 [@Login] 标签下添加
#IF
#ACT
SDSTARTAUTOPICK 1
sendmsg 6 您已开启自动拾取功能!


自动挂机

Help > 自动挂机 >
自动挂机

开启自动挂机命令：
SDOpenAutoPlayGame

注：类似于自动捡物和自动回收 (自动挂机没有参数)
开启后SD助手上对应按钮会亮起

不开启 是看不见按钮的!!!!!!

开启实例QM脚本 (注：类似于自动捡物添加方法)
请在 QM脚本 [@Login] 标签下添加
#IF
#ACT
SDOpenAutoPlayGame

请在 QF 脚本添加如下脚本(不添加功能不生效)
[@SDStartAutoPlayGame]
#act
SDStartAutoPlayGame
sendmsg 6 挂机开启成功！

[@SDStopAutoPlayGame]
#act
SDStopAutoPlayGame
sendmsg 6 挂机停止成功！

检测是否在挂机状态
SDCheckAutoPlayGame
检测是否挂机


自动回收开关

Help > 自动回收 >
自动回收开关

命令 SDBackpackRecovery

用于开启自动回收 请添加脚本 不写脚本 功能无法生效

无法回收的 请确保 客户端 服务端 脚本都开启
参数1:1为开启玩家自动回收装备 0为关闭自动回收装备

开启例子:
[@login]
#if
#act

SDBackpackRecovery 1

关闭例子:
[@login]
#if
#act
SDBackpackRecovery 0

需要在装备自动回收窗口里设置好条件，再使用此命令。

客户端开关

服务端开关

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


序号回收

Help > 自动回收 >
序号回收

脚本命令SDSetNumber,用于设置回收序号

参数1:回收序号（0~99）

参数2:激活状态(1激活 0取消激活)

例子:

#IF
#ACT

SDBackpackRecovery 1
;首先要用这个命令开启此用户允许使用自动回收装备，否则激活回收序号也是没用的，他的作用意义是不一样的

SDSetNumber 0 1
SDSetNumber 99 1
;这两条命令是激活回收序号0和99，你们根据自己的编改，激活后0和99的回收序号，插件就会自动回收0和99的序号的装备

；如果只想回收99的序号，不想回收0的序号那就这样写
SDSetNumber 0 0
SDSetNumber 99 1

；如果都关闭回收序号，那就这样写
SDSetNumber 0 0
SDSetNumber 99 0


设置回收率

Help > 自动回收 >
设置回收率

SDSetRecycleRate

参数1
收益类型(1:元宝、2:金币、3:泡点、4:灵符、5:金刚石、6:荣誉、7:经验、0:全部适用)
参数2
操作符(+ 、- 、=)
参数3
收益百分比

[@main]
#IF

#ACT
SDSetRecycleRate 0 = 50
SENDMSG 5
回收所有收益倍率提升50%
break

常量 说明
<$SDRecycleRate1>,表示自动回收元宝收益倍率
<$SDRecycleRate2>,表示自动回收金币收益倍率
<$SDRecycleRate3>,表示自动回收泡点收益倍率
<$SDRecycleRate4>,表示自动回收灵符收益倍率
<$SDRecycleRate5>,表示自动回收金刚石收益倍率
<$SDRecycleRate6>,表示自动回收荣誉值收益倍率
<$SDRecycleRate7>,表示自动回收经验值收益倍率


回收透明窗口提示

Help > 自动回收 >
回收透明窗口提示


装备回收表格

Help > 自动回收 >
装备回收表格

填写回收装备全称 多个装备用,分割 比如： 屠龙,开天②

①选择装备序号 用于序号回收 完成点击保存或修改

③④设置等级 不回收优于身上装备

可调整装备回收价值 元宝 金币 泡点 灵符 金刚石 荣誉 经验

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


主动回收一次

Help > 自动回收 >
主动回收一次

SDSendRecycle,用于主动回收一次

例子:
#IF
#ACT

SDSendRecycle
;可以用于手动触发回收 前提是开启好装备回收再触发此命令


SD准备回收单件反馈

Help > 自动回收 >
SD准备回收单件反馈

添加QF脚本触发[@SD准备回收单件反馈]，回收装备单件触发
添加常量<$SDRecycleItemName>,准备回收的物品名称,只在该触发中使用,防止数据错误


回收触发

Help > 自动回收 >
回收触发

以回收序号0和99

[@BackpackRecovery_99]
#IF
#ACT
SENDMSG 6 回收序号_99,回收数量:<$STR(S$回收数量)>,回收元宝:<$STR(S$回收元宝)>,回收金币:<$STR(S$回收金币)>,回收泡点:<$STR(S$回收泡点)>,回收灵符:<$STR(S$回收灵符)>,回收金刚石:<$STR(S$回收金刚石)>,回收荣誉:<$STR(S$回收荣誉)>,回收经验:<$STR(S$回收经验)>

[@BackpackRecovery_0]
#IF
#ACT
SENDMSG 6 回收序号_0,回收数量:<$SDRecycleIndexCount>,回收元宝:<$SDRecycleIndexGameGold>,回收金币:<$SDRecycleIndexGold>,回收泡点:<$SDRecycleIndexGamePoint>,回收灵符:<$SDRecycleIndexGameGird>,回收金刚石:<$SDRecycleIndexGameDiamond>,回收荣誉:<$SDRecycleIndexGameGlory>,回收经验:<$SDRecycleIndexExp>

<$SDRecycleIndexCount>,回收数量,只在该触发中使用,防止数据错误
<$SDRecycleIndexGameGold>,回收元宝,只在该触发中使用,防止数据错误
<$SDRecycleIndexGold>,回收金币,只在该触发中使用,防止数据错误
<$SDRecycleIndexGamePoint>,回收泡点,只在该触发中使用,防止数据错误
<$SDRecycleIndexGameGird>,回收灵符,只在该触发中使用,防止数据错误
<$SDRecycleIndexGameDiamond>,回收金刚石,只在该触发中使用,防止数据错误
<$SDRecycleIndexGameGlory>,回收荣誉值,只在该触发中使用,防止数据错误
<$SDRecycleIndexExp>,回收经验值,只在该触发中使用,防止数据错误


开启人物、背包爆出触发

Help > 触发类 >
开启人物、背包爆出触发

物品爆出后触发QF字段(人物身上爆出)

[@SDDropUseItems]
#if
#act
sendmsg 6 专属变量:爆出物品名：<$DROPUSEITEMS.NAME>、爆出物品制造编号：<$DROPUSEITEMS.MAKEINDEX> 及以下表格内变量

物品爆出后触发QF字段(人物背包爆出)

[@SDDropBagItems]
#if
#act
sendmsg 6 专属变量:爆出物品名：<$DROPUSEITEMS.NAME>、爆出物品制造编号：<$DROPUSEITEMS.MAKEINDEX> 及以下表格内变量

人物、背包爆出触发 相关常量
<$DROPUSEITEMS.NAME> 当前物品名称 指人物死亡爆出来
<$DROPUSEITEMS.G_NAME> 当前物品改名名称 指人物死亡爆出来
<$DROPUSEITEMS.STDMODE> 当前物品DB字段StdMode值 指人物死亡爆出来
<$DROPUSEITEMS.SHAPE> 当前物品DB字段Shape值 指人物死亡爆出来
<$DROPUSEITEMS.ANICOUNT> 当前物品DB字段AniCount值 指人物死亡爆出来
<$DROPUSEITEMS.LOOKS> 当前物品DB字段Looks值 指人物死亡爆出来
<$DROPUSEITEMS.DURA> 当前物品当前持久值 指人物死亡爆出来
<$DROPUSEITEMS.DURAMAX> 当前物品最大值 指人物死亡爆出来
<$DROPUSEITEMS.INDEX> 当前物品DB字段Idx值 指人物死亡爆出来
<$DROPUSEITEMS.COLOR> 当前物品DB字段Color值 指人物死亡爆出来
<$DROPUSEITEMS.MAKEINDEX> 当前物品MakeIndex序列号 指人物死亡爆出来


开启传送小退控制

开启传送小退控制

命令： SDAllowTag

开启传送控制,触发[QFunction-0.txt] 脚本内,
[@SD传送控制], [@SD小退控制]
使用SDAllowTag控制是否可以传送，小退,
0=不允许,1=允许,不调用命令默认允许。

调整触发[@SD传送控制],现在该触发为传送戒指类相关传送方可触发

[@SD传送控制]
#IF
#ACT
SDAllowTag 0
sendmsg 6 当前不可传送

[@SD小退控制]
#IF
#ACT
SDAllowTag 0
sendmsg 6 当前不可小退


怪物爆出触发

Help > 触发类 >
怪物爆出触发

[@SDDropItem]
##IF
##act
sendmsg 6 表示爆出的物品名称：<$SDDropItem>
爆出物品的地图名称：<$SDDropItemMapTitle>
爆出物品的怪物数据库名称(可能会包含数字)：<$SDDropItemMonster>
爆出物品的怪物客户端名称(不带数字)：<$SDDropItemMonsterClient>

提示：请在[@SDDropItem]里面取值,否则不准确。


穿装备和脱装备触发

Help > 触发类 >
穿装备和脱装备触发
穿戴触发 | 脱下触发
[@SDTakeOnAll] | [@SDTakeOffAll]
当前穿上装备名字<$SDTakeOnName> | 当前穿上装备数据库ID<$SDTakeOnIndex>
当前脱下装备名字<$SDTakeOffName> | 当前脱下装备数据库ID<$SDTakeOffIndex>

这4个常量只能在触发[@SDTakeOnAll]、[@SDTakeOffAll]中使用！！！！

在插件-引擎扩展-触发扩展中勾选打开


死亡前触发

Help > 触发类 >
死亡前触发

[@SD死亡前触发]
#ACT
SDDIETAG
;调用后人物血量变为0 免疫死亡
sendmsg 6 人物免疫死亡成功！


技能控制触发

Help > 触发类 >
技能控制触发

[@SDBeginMagic]
#IF
EQUAL <$SDMagicName> 野蛮冲撞
EQUAL <$SDMagicTargetRace> 0
<$SDMagicTarget>.CheckFenghao 金钟罩
#ACT
SDStopMagic
Sendmsg 6 目标拥有称号金钟罩,无法对其释放野蛮冲撞.

常量<$SDMagicID>,技能控制中技能ID
常量<$SDMagicName>,技能控制中技能名称
常量<$SDMagicTarget>,技能控制中对象名称
常量<$SDMagicTargetRace>,技能控制中对象类型
;目标类型0=人物 1=英雄 其他怪物、NPC等


HERO摆摊购买触发

Help > 触发类 >
HERO摆摊购买触发

触发
[@SDBuyUserShopItem]

相关常量：
<$SDSHOPSELLER> 商品卖家名称
<$SDSHOPBUYER> 商品买家名称
<$SDSHOPITEM> 商品名称
<$SDSHOPITEMIDX> 商品MakeIdex
<$SDSHOPITEMPRICE> 商品价格
<$SDSHOPITEMMONEYTYPE> 商品货币类型
<$SDSHOPITEMMONEYNAME> 商品货币名称
<$SDSHOPITEMCOUNT> 商品物品数量
注：商品货币类型中
512指金币
256指泡点
0指元宝
[@SDBuyUserShopItem]
#act
sendmsg 6 卖家: <$SDSHOPSELLER> 买家: <$SDSHOPBUYER> 货币名称：<$SDSHOPITEMMONEYNAME> 货币类型：<$SDSHOPITEMMONEYTYPE> 价格：<$SDSHOPITEMPRICE> 购买数量：<$SDSHOPITEMCOUNT> 当前购买物品:<$SDSHOPITEM>


商铺购买物品触发

Help > 触发类 >
商铺购买物品触发

购买商品触发字段

[@SDBUYSHOPITEM]
使用该功能需要现在m2开启该功能

相关常量：
<$SDSHOPSELLER> 商品卖家名称
<$SDSHOPBUYER> 商品买家名称
<$SDSHOPITEM> 商品名称
<$SDSHOPITEMIDX> 商品MakeIdex
<$SDSHOPITEMPRICE> 商品价格
<$SDSHOPITEMMONEYTYPE> 商品货币类型
<$SDSHOPITEMMONEYNAME> 商品货币名称
<$SDSHOPITEMCOUNT> 商品物品数量

注：商品货币类型中
512指金币
256指泡点
0指元宝

[@SDBUYSHOPITEM]
#act
sendmsg 6 卖家: <$SDSHOPSELLER> 买家: <$SDSHOPBUYER> 货币名称：<$SDSHOPITEMMONEYNAME> 货币类型：<$SDSHOPITEMMONEYTYPE> 价格：<$SDSHOPITEMPRICE> 购买数量：<$SDSHOPITEMCOUNT> 当前购买物品:<$SDSHOPITEM>


进入.离开安全区

Help > 触发类 >
进入.离开安全区

请在M2插件上勾选开启此功能. 下面是演示脚本!!

请在QF触发文本里写入

[@SD进入安全区]
#IF
#ACT
SDClearMessage
SDSendMessage 1 0 -100 2000 0 250 [进入安全区] 12 1 100

[@SD离开安全区]
#IF
#ACT
SDClearMessage
SDSendMessage 1 0 -100 2000 0 249 [离开安全区] 12 1 100


扔物品和穿戴取下关联LINKPICKUPITEM

Help > 触发类 >
扔物品和穿戴取下关联LINKPICKUPITEM

LINKPICKUPITEM脚本命令
功能：可以对捡取的物品进行关联，该命令只能在捡取触发里[@PickUpItemX]、[@PickUpItemEX]、[@DropItemX]、[@TakeOffX]使用

[@PickUpItemX]
#IF
#ACT
LINKPICKUPITEM
;关联后就可以使用其他脚本命令对刚刚捡取的物品进行检测，或操作
;修改该物品的名称颜色
CHANGEITEMNAMECOLOR -1 253
;修改物品星星数量
CHANGEITEMUPGRADECOUNT -1 + 1
;修改后的参数，刷新到客户端
SENDUPGRADEITEM

[@PickUpItemEx]
#IF
#ACT
LINKPICKUPITEM
;关联后就可以使用其他脚本命令对刚刚捡取的物品进行检测，或操作
;修改该物品的名称颜色
CHANGEITEMNAMECOLOR -1 253
;修改物品星星数量
CHANGEITEMUPGRADECOUNT -1 + 1
;修改后的参数，刷新到客户端
SENDUPGRADEITEM

[@DropItemX]
#IF
#ACT
LINKPICKUPITEM
;关联后就可以使用其他脚本命令对刚刚丢弃的物品进行检测，或操作
;修改该物品的名称颜色
CHANGEITEMNAMECOLOR -1 253
;修改物品星星数量
CHANGEITEMUPGRADECOUNT -1 + 1
;修改后的参数，刷新到客户端
SENDUPGRADEITEM

[@TAKEOFFX]
#IF
#ACT
LINKPICKUPITEM
;关联后就可以使用其他脚本命令对刚刚取下的物品进行检测，或操作
;修改该物品的名称颜色
CHANGEITEMNAMECOLOR -1 253
;修改物品星星数量
CHANGEITEMUPGRADECOUNT -1 + 1
;修改后的参数，刷新到客户端
SENDUPGRADEITEM


爆出物品关联LINKPICKUPITEM

Help > 触发类 >
爆出物品关联LINKPICKUPITEM

爆出物品关联在怪物爆出触发里[@SDDropItem]使用
此爆出触发关联 仅支持 物品名字改色,复杂的暂不考虑支持
SDChangeItemNameColor专属改物品名字颜色命令(该命令与原引擎命令ChangeItemNameColor的区别在于不会校验物品是否在人物中)

[@SDDropItem]
#IF
;可检测爆出物品是不是极品
#ACT
LINKPICKUPITEM
SDCHANGEITEMNAMECOLOR -1 254

检测爆出物品是不是极品命令 点击查看命令


开启攻城提示触发

Help > 触发类 >
开启攻城提示触发

;S0=城堡名字
;S1=掌门名字
;S2=行会名字
;N0=行会成员数量
以上变量不可修改,插件指定变量

;争夺城堡:

[@SDBattleCastle]
#ACT
sendmsg 0 【<$STR(S1)>】带领【<$STR(S2)>】行会（共<$STR(N0)>好汉）占领了【<$STR(S0)>】!
;攻城开始触发:
[@SDBeginCastle]
#ACT
sendmsg 0 【<$STR(S0)>】攻城战已经开始，请各位勇士擦亮你的大刀准备迎战!
;攻城快结束触发:
[@SDEndCastleHint]
#ACT
sendmsg 0 【<$STR(S0)>】攻城战争只剩下[<$STR(N0)>]分钟，请勇士们抓紧时间!
;攻城结束触发:
[@SDEndCastle]
#ACT
sendmsg 0 【<$STR(S0)>】争夺战役已经结束【<$STR(S2)>】行会（共<$STR(N0)>好汉）将【<$STR(S1)>】抬上了城主宝座！


装备穿戴前及脱下前触发

[@SD脱下前触发]
#act
SDTAKEALLOWTAG 1
SENDMSG 6 禁止脱下，装备名称<$SDITEMNAME>

[@SD穿戴前触发]
#act
SDTAKEALLOWTAG 1
SENDMSG 6 禁止穿戴，装备名称<$SDITEMNAME>


脚本设置人物外观、装备内观.装备外观

自定义人物外观、装备内观.装备外观

（此功能服务端1.80及以上支持此功能服务端1.80及以上支持）

1.SDSetItemShape 修改装备外观
2.SDSetItemLooks 修改装备内观
3.SDSetHumanShape,修改人物外观

【一】
命令：SDSetItemShape
说明：设置装备外观（0=衣服 1=武器 2=斗笠 10=时装衣服 11=时装武器）
注意：对应的装备需要佩戴

[@main]
#act
SDSetItemShape 0 4
;你当前衣服shape更改为4
SDSetItemShape 1 6
;你当前武器shape更改为6
SDSetItemShape 2 8
;你当前斗笠shape更改为8

【二】
命令：SDSetHumanShape
说明：设置人物外观（0=衣服 1=武器 2=斗笠）
注意：设置人物外观后原衣服、武器、斗笠外观失效

[@main]
#act
SDSetHumanShape 0 4
;人物外观衣服shape更改为4
SDSetHumanShape 1 6
;人物外观武器shape更改为6
SDSetHumanShape 2 8
;人物外观斗笠shape更改为8

【三】
命令：SDSetItemLooks
说明：装备内观
注意：控制人物的装备内观

[@main]
#act
SDSetItemLooks 0 4
;人物内观衣服LOOK更改为4
SDSetItemLooks 1 6
;人物内观武器LOOK更改为6
SDSetItemLooks 2 8
;人物内观斗笠LOOK更改为8


删除指定行会

（此功能服务端1.80及以上支持此功能服务端1.80及以上支持）

SDDelGuild 参数1

参数1 行会名称
[@main]
#ACT
SDDelGuild 我是行会


过滤全服提示信息

Help > 脚本命令 >
过滤全服提示信息
过滤全服提示信息

SDFILTERGLOBALMSG 过滤全服提示信息

过滤信息提示针对性过滤插件的输出信息 例如 神盾左右喇叭命令

过滤物品掉落提示针对性过滤插件的输出信息 例如 神盾脚本放置装备命令的提示

参数1 过滤类型(1=左右侧公告提示，2=跨区喇叭信息，3=屏幕中间显示信息，4=过滤物品掉落提示 5:怪物掉落提示 6:人物掉落提示)
参数2 是否过滤(0不过滤，1过滤)

[@main]
#ACT
;过滤SDSendMoveCenterMsg左右侧公告提示
SDFILTERGLOBALMSG 1 1

[@main]
#ACT
;过滤SDSendCrossMsg跨区喇叭信息(屏蔽跨区喇叭命令本来就有，这里再写出来是为了方便使用)
SDFILTERGLOBALMSG 2 1

[@main]
#ACT
;过滤SDSENDCENTERMSG屏幕中间显示信息
SDFILTERGLOBALMSG 3 1

[@main]
#ACT
;过滤所有物品掉落提示
SDFILTERGLOBALMSG 4 1

以下功能需要服务端1.8.3及以上支持

[@main]
#ACT
;过滤怪物物品掉落提示
SDFILTERGLOBALMSG 5 1

[@main]
#ACT
;过滤人物物品掉落提示
SDFILTERGLOBALMSG 6 1

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


获取地图人数

Help > 脚本命令 >
获取地图人数

SDGetMapHumCount 获取地图人数

参数1 地图编号
参数2 是否包含假人(0不包含假人/1包含假人)
参数3 返回变量

例子：
[@main]
#ACT
SDGetMapHumCount 3 0 N1
Sendmsg 6 当前土城有<$STR(N1)>人


获取与删除文件行数命令

Help > 脚本命令 >
获取与删除文件行数命令

SDGetTextLineCount 获取文件行数命令

参数1 路径
参数2 保存变量

例子：
[@main]
#if
#act
SDGetTextLineCount ..\QuestDiary\装备回收.txt N$行数
Sendmsg 5 提示:装备回收.txt文件共有<$STR(N$行数)>行内容

删除文本指定行SDDelTextListLine

参数1 文件名
参数2 行号(0开始)

[@main]
#IF
#ACT
SDDelTextListLine D:\MirServer\Mir200\Envir\QuestDiary\数据.txt 0
#SAY
文本第一行被删除


脚本命令释放技能

Help > 脚本命令 >
脚本命令释放技能

脚本命令释放技能
SDReleaseMagic

参数1=释放技能id
(支持自定义技能)
参数2=技能外观(暂无用,保留参数)
参数3=技能等级
参数4=强化等级
参数5=是否对自己显示技能效果 (0不播放
1=同屏播放，部分技能自身不播放技能效果时写0，如冰咆哮、纵横剑术等)
参数6=技能目标(0自身 1攻击目标)

例子1：释放技能雷电术
;释放一个ID为11的雷电术技能，释放到攻击目标
#ACT
SDReleaseMagic 11 0 1 0 1 1

脚本命令释放技能（无动作）
SDReleaseMagicEx

参数1=释放技能id
参数2=技能等级
参数3=强化等级
参数4=技能目标(0采用自定义XY 1攻击目标XY,2自身XY)
参数5=是否播放动画(0不播放 1自身播放)
参数6=X(参数4为0时,采用此参数)
参数7=Y(参数4为0时,采用此参数)

例子1：释放技能雷电术
;释放一个ID为11的雷电术技能，释放到攻击目标
#ACT
SDReleaseMagicEx 11 1 1 1 1 0 0


文件是否存在检测命令和删除文件命令

Help > 脚本命令 >
文件是否存在检测命令和删除文件命令

SDFileExists 参数1 参数2

参数位置 参数说明
参数1 相对路径或支持绝对路径
参数2 参数2=1时 如果文件不存在就自动创建（不自动创建的情况下参数2可以不写）

[@main]
#if
SDFileExists ..\QuestDiary\数据.txt
;检测 ..\QuestDiary\数据.txt 是否存在
#act
;删除 ..\QuestDiary\数据.txt
SDDeleteFile ..\QuestDiary\数据.txt
sendmsg 7 文件存在，已为你删除文件

[@main]
#if
SDFileExists ..\QuestDiary\数据.txt 1
;检测 ..\QuestDiary\数据.txt 是否存在,不存在则创建
#elseact
sendmsg 7 文件不存在,已经为你创建！


随机跳转触发

Help > 脚本命令 >
随机跳转触发

随机跳转触发

SDRandomGoto 随机数(母) 随机数(子):触发字段(多个以“|”隔开)
和RANDOMEX命令几率算法是一样的，只不过这个支持触发，随机数(子)，数值越大几率越高，如果和随机数(母)数值一样大，就是百分百几率
按照写的脚本顺序触发的，每次只触发一个字段，如果几率没有百分百的也有可能一个都不会触发，当然如果有百分百几率的，那肯定会触发那个百分百几率的

[@main]
#act
SDRandomGoto 100 10:@触发1|50:@触发2|100:@触发3
SENDMSG 6 按照脚本写的顺序触发的，如果你把“100:@触发3”写在前面，那后面两个几率永远都不会触发了，因为“100:@触发3”是百分百几率触发的

[@触发1]
#act
SENDMSG 6 你触发了百分之十的几率

[@触发2]
#act
SENDMSG 6 你触发了百分之五十的几率

[@触发3]
#act
SENDMSG 6 你触发了百分之百的几率


地图上播放一个倒计时

Help > 脚本命令 >
地图上播放一个倒计时
地图上播放一个倒计时
SDStartMapTimerEffect

SDStartMapTimerEffect
//参数1:编号(1-20)
//参数2:地图
//参数3:地图坐标X
//参数4:地图坐标Y
//参数5:倒计时(秒)
//参数6:倒计时结束后是否进入触发
@SDMapTimerEffectOutX（X为参数1的编号）

例子：

[@main]
#act
SDStartMapTimerEffect 1 3 337 335 100 1
MAPEFFECT 3 335 331 6 210 2 5 300 1 0

[@SDMapTimerEffectout1]
#act
MonGenEx 3 337 335 半兽人 0 1 0 255


获取对方变量

获取对方变量

SDGetHumVar
参数1：玩家名称
参数2：变量名称
参数3：保存到变量名称

实例：
[@main]
你想知道对方防御力是多少吗,并且不让他知道
请确保对方在线\ < 请输入对方名字/@@InPutString3 >
对方名字：<$STR(S3)> \

[@InPutString3]
#IF
#ACT
SDGetHumVar S3 <$MAXAC> S4
SENDMSG 6 你已成功取得对方防御力为<$STR(S4)>

设置对方变量

SDSetHumVar
参数1：玩家名称
参数2：变量名称
参数3：设置的变量名称

实例：
[@main]
你要把你最大生命值数值传给别人,让他知道你的最大生命值是多少吗
请确保对方在线\ < 请输入对方名字/@@InPutString1 >
对方名字：<$STR(S1)> \

[@InPutString1]
#IF
#ACT
SDSetHumVar S1 S2 <$MAXHP>
SENDMSG 6 成功把你的最大生命值数值传递给对方的 S2 变量


脚本解毒

Help > 脚本命令 >
脚本解毒

SDDETOXIFCATION

例子：

;脚本命令解除红绿毒

#ACT

SDDETOXIFCATION

SENDMSG 5 您中的红绿毒已清除。

SDDETOXIFCATIONEX

（此功能服务端1.80及以上支持此功能服务端1.80及以上支持）
参数1 类型(1:绿毒 2:红毒 3:麻痹 4:冰冻 5:蛛网)

例子
[@main]
#IF
#ACT
SDDETOXIFCATIONEX 1
SENDMSG 5 您解除了红毒效果

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


获取装备强化等级(星星数量)

Help > 脚本命令 >
获取装备强化等级(星星数量)

SDGetUpgradeCount

参数1：物品位置
参数2：变量
位置说明：
0 衣服
1 武器
2 蜡烛
3 项链
4 头盔
5 左手镯
6 右手镯
7 左戒指
8 右戒指
9 护身符
10 腰带
11 鞋子
12 宝石
13 斗笠
14 军鼓
15 马牌
16 盾牌
17 时装武器
18 时装衣服、
19-30 首饰盒1-12
实例：
#act
SDGetUpgradeCount 0 N0
SendMsg 0 衣服的强化星星数为 <$STR(N0)>


循环执行脚本

Help > 脚本命令 >
循环执行脚本

SDLoopGoto

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

例子：

[@循环]

#ACT

mov N1 0

mov N2 1

SDLoopgoto @运算 100

sendmsg 6 1加到100的结果为：<$STR(N1)>

[@运算]

#ACT

Inc <$STR(N1)> <$STR(N2)>

Inc N2 1


NPC排版

Help > 脚本命令 >
NPC排版
NPC排版①
在原npc脚本，开头加上SayExBegin结尾加上sayExEnd即可
所有坐标都是绝对坐标不是引擎那种相对坐标
引擎初始文字大小为9
脚本格式①
SayExBegin
内容
SayExEnd
请看下面演示①

另一种

NPC排版②
<Text:文字内容:X:Y/@触发>
<Text:测试下这段文字的显示#提示信息:10:20/@测试>
<Text:<$STR(S87)>#提示信息:10:20{FCOLOR=250}/@测试>
<Text:测试下这段文字的显示#提示信息:10:20{FCOLOR=254}/@测试>
<Text:测试下这段文字的显示#提示信息:10:20{AUTOCOLOR=250,251,252,253,254}/@测试>
=============================================================================
不带@排版写法
<Text:测试下这段文字的显示:50:80/AUTOCOLOR=253>\
<Text:测试下这段文字的显示#提示信息666:10:90/AUTOCOLOR=250,251,252,253,254>\

NPC排版②注意:由于说明书原因 在复制以上脚本时请把#换成 |

====================NPC排版演示①================================

文字显示

<Txt:X:Y:C:S:T|备注/@Label>
X:X坐标
Y:Y坐标
C:文字颜色
S:文字大小
T:文字

播放静态图片

<Img:N:F:X:Y:O:T/@Label>
N:图片序号
F:WIL文件序号
X:X坐标
Y:Y坐标
O:是否使用pak偏移
T:备注

播放静态图片按钮式

<ImgEx:F:U:H:D:X:Y:O:T/@Label>
F:WIL文件序号(详见引擎：查看-列表信息(二)-WIL资源)
U:默认显示的图片序号
H:鼠标放上去时显示的图片序号
D:鼠标点下去时显示的图片序号
X:X坐标
Y:Y坐标
O:是否使用pak偏移
T:备注

播放动态图片

<PlayImg:F:N:C:T:X:Y:M:L:O:T/@Label>
F:表示WIL文件序号
N:表示播放开始图片
C:表示播放张数
T:表示播放速度(毫秒)
X:X坐标
Y:Y坐标
M:是绘制模式0普通绘制 1特效绘制
L:表示播放次数，如果为空或为0时，表示无限次数。设置大于0时，表示播放的次数，次数到了就会自动消失
O:是否使用pak偏移
T:备注

自定义OK框

<ItemBox:N:F:M:X:Y:W:H:S:T>
N:编号(0~7)
F:OK框的背景的WIL序号，-1时不绘制背景
M:OK框的背景的图片序号
X:X坐标
Y:Y坐标
W:宽度
H:高度
S:允许放入的物品类型。DB库的StdMode值，如果有多个使用“,”隔开，如果为“*”时，允许所有物品
T:未放入装备时，鼠标移动显示信息

展示物品

<ItemShow:D:F:X:Y:B>
D:物品ID
F:数量
X:X坐标
Y:Y坐标
B:是否显示背景图片

例子：

[@main]
SayExBegin
<Txt:10:10:250:10:Hello Word!|备注/@label >
SayExEnd

[@main]
#act
#SAY
SayExBegin
<TXT:179:7:154:18:二级密码>
<TXT:25:44:87:11:本次登陆的IP地址与您上次登陆的IP符合,您可以正常游戏.>
<TXT:11:80:87:11:1、请在下面输入您熟悉的密保，请勿过于简单,可以输入6-8个字符！>
<TXT:11:100:87:11:2、密保功能一旦开启永久生效，合区无任何影响，不需要重新设置！>
<TXT:11:120:87:11:3、设置密保后每次登录IP变化后上线都需要验证，不输入掉线处理！>
<TXT:11:140:87:11:4、为了您的装备和金币，建议您设置二级密码，有效防止盗号！>
<TXT:211:176:103:11:← 请在30秒输入验证密码>
<$STR(S$按钮排序)>
<IMGEX:0:801:805:806:399:-1:0/@EXIT>
<IMG:803:0:12:29:0>
<IMG:179:12:341:235:0:/@删除密码>
<IMG:168:12:391:234:0:/@新密码确定>
<TXT:10:260:249:11:温馨提示：>
<TXT:220:260:70:11:您当前还未设置二级密码，请及时设置确保帐号不会丢失>
sayExEnd


获取背包指定物品的数量

Help > 脚本命令 >
获取背包指定物品的数量

SDGetItemsNumber

参数1：物品名字
参数2：变量名，保存获取到的物品的数量
参数3：需要的数量，如果为空或者为0，则参数2返回背包物品的数量，大于0则判断离条件数量还差多少个，如果数量满足则返回0

实例
[@main]
#if
#act
SDGetItemsNumber 疗伤药 N0
SendMsg 6 你的背包共有疗伤药【<$STR(N0)>】个
#if
#act
SDGetItemsNumber 疗伤药 N0 10
#if
Equal N0 0
#act
SendMsg 6 你需要疗伤药10个，你的背包的疗伤药数量已经足够了
#elseact
SendMsg 6 你需要疗伤药10个，你目前还缺少【<$STR(N0)>】个


登陆器自定义文本

Help > 脚本命令 >
登陆器自定义文本
登陆器自定义文本. 触发版本标识标记
触发版本标记字段 [QFunction-0.txt] 脚本内[@SD版本自定义标记文本],,
配置登录器时在补丁文件夹的Data目录下建立 sdzdywb.txt 或 使用登录器列表自动更新到客户端的Data目录下均可
注意：是客户端的Data目录，不是补丁文件Resources目录中的Data

文本编码要用ANSI格式

txt中的格式为：
[自定义文本]
自定义文本=
说明
常量内容为 自定义文本内 等号之后的内容
新号第一次上线 , 会触发QF里面的 [@SD版本自定义标记文本]
字段常量：登录器自定义文本内容 <$SDCLIENTTEXT>

可在sd插件在线列表的登录器文本查看

统计脚本例子（可不用）
首先在QuestDiary文件夹下面建立一个 登录器分类.txt
文本内容如下：
[登录器分类]
登录器1=0
登录器2=0
…
..
然后在qf 添加如下脚本：
[@SD版本自定义标记文本]
#act
SDReadConfigFileItem ..\QuestDiary\登录器分类.txt 登录器分类 <$SDCLIENTTEXT> N$数量
SDDelConfigFileItem ..\QuestDiary\登录器分类.txt 登录器分类 <$SDCLIENTTEXT> N$数量
inc N$数量 1
SDWriteConfigFileItem ..\QuestDiary\登录器分类.txt 登录器分类 <$SDCLIENTTEXT> N$数量


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

Help > 脚本命令 >
根据物品名获取数据库字段值

SDGetDBItemFieldValue

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

SDGetDBItemFieldValue

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

实例
[@main]
#if
#act
SDGetDBItemFieldValue 屠龙 Weight N0
SendMsg 6 屠龙的重量是【<$STR(N0)>】点


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

Help > 脚本命令 >
根据物品Idx获取数据库字段值

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

SDGetDBIdxItemFieldValue

参数1：物品Idx
参数2：字段名
参数3：变量名，用户保存获取到的参数值
实例
[@main]
#if
#act
SDGetDBItemFieldValue 屠龙 Idx N0
SDGetDBIdxItemFieldValue <$STR(N0)> Weight N1
SendMsg 6 屠龙的IDX是【<$STR(N0)>】，他的重量是【<$STR(N1)>】点


秒数转换时间

Help > 脚本命令 >
秒数转换时间
将秒数转为X天X小时X分钟X秒
SDDecodeTime
参数 | 说明
参数1： | 返回转换后的结果到字符变量
参数2： | 需要转化的秒数 支持变量
脚本例子
;秒数转为时间格式，方便玩家快速理解活动倒计时等
#act
mov G24 2880
SDdecodeTime S50 <$STR(G24)>
SENDMSG 6 <$STR(S50)>=0天0时48分0秒


百分比计算

Help > 脚本命令 >
百分比计算
百分比计算
SDCalcPercent
参数 | 说明
参数1： | 值
参数2： | 百分比
参数3： | 结果变量
脚本例子
[@main]
#act
SDCalcPercent 200 5 N1
SendMsg 6 200的5%为<$STR(N1)>


死亡不掉装备的次数

Help > 脚本命令 >
死亡不掉装备的次数

SDNotDropItemCount

SDNotDropItemCount

参数一:次数

例子

SDNotDropItemCount 5

这条命令均是小退清除,如需一直保存或动态扣减的，可通过死亡触发动态控制

可以通过全局变量进行记录,赋予一个基础值,每次触发死亡就扣减,登录或复活后重新设置死亡不掉装备次数


掉落身上指定装备

Help > 脚本命令 >
掉落身上指定装备

SDHumanDropUseItem

SDHumanDropUseItem 参数1 参数2

参数1：装备位置 (-1表示随机位置，0~30为指定装备位置 : 0~16 身上物品 17~18 时装 19~30 十二生肖)支持时装首饰(装备位置1001-1012)
参数2：爆出物品后记录物品名字符串变量

注意：该位置没有穿装备则命令无效…

例子：掉落身上装备命令

[@sdPlayDie]
#IF
#ACT
SDHumanDropUseItem -1 S11

#IF
NOT EQUAL S11
#ACT
SENDMSG 0 255 70 客官，你的装备爆了：<$STR(S11)>


获取物品框数据

Help > 脚本命令 >
获取物品框数据

SDGetBoxItem

获取OK框物品信息

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

获取物品名称例子

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


禁止移动

Help > 脚本命令 >
禁止移动

SDNOWALK

禁止人物移动

参数一 1开启、0关闭

;开启例子
#act
SDNOWALK 1
sendmsg 6 当前人物进入禁止移动状态！！！

;开启例子
#act
SDNOWALK 0
sendmsg 6 当前人物已解除禁止移动状态！！！


设置伤害加成

Help > 脚本命令 >
设置伤害加成
设置物理伤害加成 | 设置魔法伤害加成
SDSetDamageAdd | SDSetMagicDamageAdd
参数 | 说明
参数1： | 伤害加成类型, 1：通用，2：人物，3：怪物
参数2： | 加成值，该值是加成百分比
参数3： | 持续时间，-1:一直有效 0:取消加成
注意： | 该值小退清空
脚本例子

[@main]
#if
#act
SDSetDamageAdd 2 50
SendMsg 6 你对人物的攻击伤害为150%

[@main]
#if
#act
SDSetMagicDamageAdd 3 50
SendMsg 6 你对怪物的魔法伤害为150%

说明 | 触发字段
物理加成结束时触发 | [@SDDAMAGEADDTIMEOUTX]
魔法加成结束时触发 | [@SDMAGDAMAGEADDTIMEOUTX]

注：X对应参数1的类型
注：只能用于qf触发文本

脚本例子

[@SDDAMAGEADDTIMEOUT2]
#act
sendmsg 6 你对人物的物理伤害加成结束

[@SDMAGDAMAGEADDTIMEOUT3]
#act
sendmsg 6 你对怪物魔法伤害加成结束


检测背包空格数

Help > 脚本命令 >
检测背包空格数

SDCHECKBAGSIZE

参数一 数量

例子：

[@main]
#if
SDCHECKBAGSIZE 5
#say
身上有5个空格
#elsesay
身上的空格不够。


随机传送

Help > 脚本命令 >
随机传送

SDMAPMOVEEX

传送指定地图，带随机值

SDMAPMOVEEX地图名 坐标A 坐标B 随机值

例子

SDMAPMOVEEX 3 333 333 10

传送到盟重 坐标A （333+-10）坐标B（333+-10）


发送自定义透明消息框

Help > 脚本命令 >
发送自定义透明消息框

SDSendMessage　　　　发送自定义透明消息

参数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：内容，支持变量，空格使用[#]代替

参数8：字体大小

参数9：是否开启背景 1开0关

参数10：背景色|背景透明度（透明度取值： 0-100) (注意参数9=1 此参数才会生效)

SDClearMessage　　　　　清除以往自定义透明消息

例子参考:

[@自定义透明消息]
#IF
#ACT
;清除以往自定义透明消息
SDClearMessage
;下面是各种消息框格式
SDSendMessage 0 0 200 0 1 40 自定义透明框…　　　　　　　　　　　　　(固定坐标方式)
SDSendMessage 0 0 240 0 1 40 自定义透明框[#]\内容自定义填写、支持变量1.　　　　(固定坐标方式)

SDSendMessage 1 0 0 0 1 20 支持多种计算方式…　　　　　　　　　　　(人物坐标方式)
SDSendMessage 1 0 70 0 1 20 自定义透明框[#]\内容自定义填写、支持变量2.　　　　(人物坐标方式)

SDSendMessage 2 0 10 0 1 70 支持各种颜色、定时显示、ESC键关闭.　　　　(鼠标坐标方式)
SDSendMessage 2 0 50 0 1 70 自定义透明框[#]\内容自定义填写、支持变量3.　　　　　(鼠标坐标方式)

SDSendMessage 0 0 160 0 1 40 这里是一条完整参数实例[#][#]这里代表空格.<$USERNAME>支持变量.这是固定坐标 12 1 100
SDSendMessage 1 0 140 0 1 20 这里是一条完整参数实例[#][#]这里代表空格.<$USERNAME>支持变量.这是人物坐标 12 1 100
SDSendMessage 2 0 90 0 1 70 这里是一条完整参数实例[#][#]这里代表空格.<$USERNAME>支持变量.这是鼠标坐标 12 1 100
;以上是完整参数实例 内容后面的 12是字体大小 1是开启透明背景 100是透明度

[@自定义透明消息]
#IF
#ACT
;清除以往自定义透明消息
SDClearMessage
SendMessage 1 0 -100 0 1 250 sd以固定坐标为计算点

#IF
#ACT
;清除以往自定义透明消息
SDClearMessage
SendMessage 1 -60 -100 0 1 250 sd以人物为计算点

#IF
#ACT
;清除以往自定义透明消息
SDClearMessage
SendMessage 2 0 0 0 1 250 sd以鼠标为计算点


复制文件

Help > 脚本命令 >
复制文件

SDCOPYFILE

参数一 源文件

参数二 目标文件

参数3= 0:强制创建并覆盖目标文件 1:目标文件已存在不覆盖

.\代表当前目录

..\代表上级目录

支持绝对路径

例子：

#ACT

SDCOPYFILE ..\QuestDiary\数据文件\新文件txt ..\QuestDiary\数据文件\老文件.txt 0

1 ..\QuestDiary\数据文件\老文件.txt

2 D:\Mirserver\Mir200\Envir\QuestDiary\数据文件\新文件.txt


四则运算

Help > 脚本命令 >
四则运算

SDMoveXP

参数1=变量名
参数2=运算表达式
参数3=是否四舍五入(0或空则舍弃小数部分，1则四舍五入) 注：若运算失败则返回0

支持以下运算符号:
+-*/\%()0~9.

/:除法,带小数
\:整除,不要小数
%:只能用在*90%这样的格式

例子：

;计算攻城奖励
#ACT
MOV G6 12050
SDMoveXP N$今日攻城奖励 <$STR(G6)>-<$STR(G6)>*10% 1
SDMoveXP N$今日攻城胜利方 (<$STR(G6)>-<$STR(G6)>*10%)*70% 1
SDMoveXP N$今日攻城失败方 (<$STR(G6)>-<$STR(G6)>*10%)*30% 1
SENDMSG 6 兄弟！今日攻城扣除10%服务费共奖励：<$STR(N$今日攻城奖励)>，胜利方奖励70%：<$STR(N$今日攻城胜利方)>，失败方奖励30%：<$STR(N$今日攻城失败方)>


刷新人物背包负重

Help > 脚本命令 >
刷新人物背包负重

SDWeightChanged

例子1：
#ACT
;可以在收取物品命令完成后使用
TAKE 屠龙 1
SDWeightChanged

例子2：
#ACT
;可以在收取物品命令完成后使用
TakeBagItem 木剑|布衣(男)|布衣(女) 46 0 0 0 10000 N1 0
SDWeightChanged

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


取随机扩展

Help > 脚本命令 >
取随机扩展

SDRandomEx

参数1=随机分子

参数2=随机分母

例子：

SDRandomEx 1 2 2分之1

SDRandomEx 4 5 5分之4

SDRandomEx 7 1000 1000分之7

SDRandomEx 3 10000 10000分之3

#IF

SDRandomEx 55 100

#ACT

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


判断时间段剩余时间

Help > 脚本命令 >
判断时间段剩余时间

SDCheckTime

参数一:当前时间

参数二:结束时间

参数三:运算符(< = >)

参数四:判断数值(写数值)

参数五:相差秒数(该参数为变量)

例子1：

;适用各种现时活动等场景

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

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


发送左右喇叭

Help > 脚本命令 >
发送左右喇叭

SDSendMoveCenterMsg

//参数1:文字信息
//参数2:文字颜色
//参数3:背景颜色
//参数4:X坐标
//参数5:Y坐标
//参数6:显示时间,单位毫秒
//参数7:显示位置 0:左下 1:右下
//参数8:发送模式 0:自己 1:组队 2:行会 3:地图 4:所有人

;发送一条给自己的左下侧公告例子
#ACT
SDSendMoveCenterMsg 这是一个发送给自己的屏幕左下侧公告,最多同时显示{10|249}条内容,有效时间{8|250}秒！ 70 0 0 0 8000 0 0

;发送一条给自己的右下侧公告例子
#ACT
SDSendMoveCenterMsg 这是一个发送给自己的屏幕右下侧公告,最多同时显示{10|249}条内容,有效时间{8|250}秒！ 70 0 0 0 8000 1 0


范围吸怪

Help > 脚本命令 >
范围吸怪

SDMoveMonsters

参数1：中心X

参数2：中心Y

参数3：影响范围(0-999)

参数4：目标类型(0=怪物 1=人物 2=怪物+人物)

参数5：最大吸取数量(0=不限制数量)

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

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

参数8：是否吸附同一位置(1为是,0或空位人物自身坐标周围几格)

例子1

[@attack]
#IF
#ACT
SDMOVEMONSTERS <$X> <$Y> 20 0 0 0 0 0
sendmsg 6 范围20的所有怪物都吸过来了

例子2

[@attack]

#IF

#ACT

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

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


调整目标状态

Help > 脚本命令 >
调整目标状态

SDChangeStatus

调整目标状态(失明 混乱 灼伤)
SDChangeStatus
参数一(0=失明 1=混乱 2=灼伤)
参数二(参数一=0时 失明的范围0~14之间 参数一=1时 参数二无效 参数一=2时，灼伤的伤害值)

例子：
;失明了，只能看到屏幕5格内目标，10秒后恢复正常
#ACT
SDChangeStatus 0 5 10

例子2：
;进入一次混乱状态，攻击目标丢失，移动位置随机
#ACT
SDChangeStatus 1 0


脚本制造指定物品来源

Help > 脚本命令 >
脚本制造指定物品来源

SDGiveEx

功能：

NPC直接给物品到背包脚本，带指定物品来源

命令：

SDGiveEx 参数1 参数2 参数3 参数4 参数5 参数6

参数详解：

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

例：

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

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

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

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

或变量操作：

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


修改物品来源

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

SDCHANGEMAKEITEMINFO 0 1 3 * * 1
；代表 衣服 修改成GM制造,并且修改为当前系统时间


地面放置物品

Help > 脚本命令 >
地面放置物品

SDThrowItemEx

//参数1:物品名
//参数2:范围
//参数3:是否立即拾取，0否1是
//参数4:保护时间，单位秒
//参数5:坐标X
//参数6:坐标Y
//参数7:地图号
//参数8:自定义来源
格式：来源地图名称|来源名称|来源角色|来源时间
//参数9:0或空：
执行自动捡取 1：不执行自动捡取

注：由于触发者是玩家，请关闭引擎物品掉落提示，改用脚本提示（sendmsg等）
实例：
[@SDSLAVEKILLMON]
#if
#act
M.SDThrowItemEx 屠龙 1 1 0 <$SDKILLMONX> <$SDKILLMONY> <$map> <$MapTitle>|<$SDKILLMONNAME>|<$USERNAME>|<$SDTIME>

SDThrowItemEx2

//参数1:物品名
//参数2:数量

//参数3:0或空： 执行自动捡取 1：不执行自动捡取
注：物品来源和击杀怪物一致
实例：
[@ONKILLMOB]
#if
#act
M.SDThrowItemEx2 屠龙
配合其他命令使用
; 可随机抽取物品，最后一个随机物品几率务必为1/1
#ACT
SDRandomText RANDOM*{1/15}5钻石|{1/11}2钻石|{1/9}1钻石|{1/7}100元宝|{1/5}50元宝|{1/3}20元宝|{1/2}10元宝|{1/1}5元宝* | S3
M.SDThrowItemEx2 <$STR(S3)>

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


发送屏幕中间公告

Help > 脚本命令 >
发送屏幕中间公告

SDSendCenterMsg

格式：SDSendCenterMsg 参数1 参数2 参数3 参数4 参数5 参数6

参数1=文字颜色
参数2=背景颜色
参数3=字体大小
参数4=行间距
参数5=发送模式(0=自己，1=组队，2=行会，3=地图，4=所有人)
参数6=显示时间(毫秒)
参数7=内容(如果需要其他字有颜色需要用格式如下{显示的字|颜色代码0~255})

发送行会例子
[@main]
#ACT
;命令 文字颜色 背景颜色 字体大小 行间隔 发送模式 毫秒 内容
SDSendCenterMsg 251 255 12 10 2 3000 {<$USERNAME>|252},SD功能演示,时间：2024年5月17日16:41:12

发送攻击敌人例子
[@main]
#ACT
;命令 文字颜色 背景颜色 字体大小 行间隔 发送模式 毫秒 内容
m.SDSendCenterMsg 251 255 12 10 0 3000 {<$USERNAME>|252},SD功能演示,时间：2024年5月17日16:41:12


指定内容复制到客户端粘贴板

Help > 脚本命令 >
指定内容复制到客户端粘贴板

SDSetClipboardData

参数1

参数1 需粘贴的内容字符
[@测试]
#IF
CheckLevelEx > 0
#ACT
SDSetClipboardData 我是测试内容
SENDMSG 5 你现在可直接右键粘贴出文字内容
break


npc脚本跳转

Help > 脚本命令 >
npc脚本跳转

SDGotolabel

NPC脚本跳转
参数=0 当前NPC 参数=1 QM 参数=2 QF 参数=3 机器人脚本
参数=1 跳转的字段
参数=2
次数(0或空为1)

例子：
SDGotolabel 2 @跳转的脚本 1


允许爆出物品

Help > 脚本命令 >
允许爆出物品

SDALLOWDROP

参数1： 是否掉落 (0=不允许掉落物品 1=允许掉落物品）

增加一个常量：<$SDDROPITEMNAME> 杀死怪物正在爆出的物品名称

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

1/10 强效魔法药|@爆稀有装备检测

触发规则: 需要命中这1/10几率 才到触发QF里的 @爆稀有装备检测 这个字段

;一但加上触发，该物品，如果是被大刀或弓箭手等等非人物杀死的是不会爆的，因为只有人物才能触发脚本，人物杀死的才会根据脚本是否爆出

1/10 强效魔法药|@爆稀有装备检测
1/1 强效金创药
1/1 强效金创药
1/2 强效金创药
1/3 强效金创药
1/4 强效金创药
1/4 强效金创药

QF中脚本例子：
[@爆稀有装备检测]

#if
large U3 1999
#act

;U3充值记录大于2000元，则允许此物品掉落
SDALLOWDROP 1
break

#elseact

;小于2000，不允许掉落
SDALLOWDROP 0


调整人物物理伤害减免

Help > 脚本命令 >
调整人物物理伤害减免

SDSetDamageDec

//参数1: 伤害减免类型 （1=通用，2=人物，3=怪物）
//参数2: 减免百分比 （1-100）
//参数3: 持续时间 单位 ：s .为-1 在线有效

到时触发qf：
@SDDamageDecTimeOutX X表示参数一的类型

实例：

[@main]

#act
SDSetDamageDec 2 50 600
sendmsg 6 受到人物物理伤害降低50%持续10分钟

qf:

[@SDDamageDecTimeOut2]

#act
sendmsg 6 加成结束！！


调整人物魔法伤害减免

Help > 脚本命令 >
调整人物魔法伤害减免

SDSetMagicDamageDec

//参数1: 伤害减免类型 （1=通用，2=人物，3=怪物）
//参数2: 减免百分比 （1-100）
//参数3: 持续时间 单位 ：s

到时触发qf：
@SDMagDamageDecTimeOutX X表示参数一的类型

实例：

[@main]

#act
SDSetMagicDamageDec 1 30 600
sendmsg 6 受到魔法伤害降低30%持续10分钟

qf:

[@SDMagDamageDecTimeOut1]

#act
sendmsg 6 加成结束！！


播放特效

Help > 脚本命令 >
播放特效

SDPlayEffect 参数1

参数1 特效编号(特效编号在插件功能设置-播放特效设置)


脚本鞭尸

Help > 脚本命令 >
脚本鞭尸

SDMonItems

使用例子:
在QF里的[@SDKILLMON]等使用

;触发字段
[@SDKILLMON]
;脚本实例
#ACT
SDMonItems
;让刚刚杀死的怪物，再次触发爆率
SENDMSG 6 神盾鞭尸触发！

注意事项:
先查看QF文本里是否有[@SDKILLMON]存在.如果不存在请填写[@SDKILLMON]字段
如果存在[@SDKILLMON]字段.请在[@SDKILLMON]字段下面写入脚本实例


脚本整理背包

Help > 脚本命令 >
脚本整理背包

SDQueryBag

实例

[@main]

#if
#act
SDQueryBag
SendMsg 0 你的背包已经整理好了


获取物品来源命令

Help > 脚本命令 >
获取物品来源命令

SDGetItemFrom

物品来源获取来源信息
SDGetItemFrom 参数1 参数2 参数3
//参数1:装备位置 (0-18穿在身上的装备)
//参数2:来源类型 0:物品来源（1.GM制造 2.NPC制造，合成，系统给予，宝箱获得 3.商铺 4.怪物） 1:来源地图 2:来源怪物 3:来源归属 4:来源时间
//参数3:保存变量名


动态调整特殊属性

Help > 脚本命令 >
动态调整特殊属性
SDChangeSP 注意：此功能 请用在 NPC脚本 或者 QM脚本里 ( CALL 不生效 )

参数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=对怪隐身

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

参数3: 持续时间 单位秒 参数0或空=无限制，参数大于0为时长，(参数1是10、11、12、13、14时,此参数3变为几率控制)

注意事项：此命令下线失效，有特殊属性的装备并不会冲突,也不会因为冲突导致失效,但应注意使用逻辑，不支持假人！！！！

场景1:带复活戒指的人物且开启了复活属性10秒，十秒复活到达后，带有复活戒指情况下，是会继续复活的，两者是不冲突

场景2:带复活戒指的人物且开启了复活属性10秒，十秒未到达前,卸掉了复活戒指，此时复活属性依然有效，除非你关闭了。

复活成功率:在原复活基础下进行判断，满足原基础复活条件下，进行几率判断，几率不满足的取消复活。

注:关闭指定属性编号,效果会立即取消，如关闭神秘人属性就会立即取消神秘人效果。

多次调用同一个属性编号，参数取最后调用，如前者设置了1000秒防复活，后者设置了10秒防复活，最终生效时间取后者(10秒，持续时间设置为0时效率最优且一直生效)。

此命令充分分析了引擎运行机制，采用最优方案进行贴合设计，效率和设计快捷性达到最完美。

到时间后触发QFunction-0.txt [@SDChangeSPTimeOutX] X代表属性编号,不提供参数1的10、11、12、13、14模式的触发

=================================================================================================

赋予玩家复活成功几率(前者必须有复活属性,无时间控制,无时间到期反馈)

#ACT

SDChangeSP 10 1 50

sendmsg 6 您的复活成功率更改为百分之50

赋予玩家防复活属性

#ACT

SDChangeSP 5 1 10

sendmsg 6 防复活特殊属性生效，持续10秒。

QFunction-0.txt 任意位置添加

[@SDChangeSPTimeOut5]

#act

sendmsg 6 防复活属性失效！！！

对怪隐身

#ACT

SDChangeSP 20 1 10

sendmsg 6 对怪隐身生效，持续10秒。

QFunction-0.txt 任意位置添加

[@SDChangeSPTimeOut20]

#act

sendmsg 6 对怪隐身失效！！！


设置技能伤害倍数和BUFF

设置技能伤害倍数和BUFF

SDSetSkillPower

功能：支持战士攻击类技能

命令：

SDSetSkillPower 参数1 参数2 参数3 参数4 参数5 参数6 参数7

参数详解：

参数1 技能id,同个ID,只能附加一种BUFF(战士技能ID写0时，为普通攻击,25为半月、 13烈火、17逐日、21开天等 注意：刀刀刺杀不能触发0)
参数2 0=全部,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就是立马关闭
到时间后触发QFunction-0.txt [@SDSkillPowerTimeOutX] X代表魔法ID

例子：

[@main]

#ACT
SDSetSkillPower 13 0 1 70 300 500 120

SendMsg 6 你的灵魂火符有70%几率触发3-5倍伤害，该状态持续2分钟。

QFunction-0.txt

[@SDSkillPowerTimeOut13]

#act
sendmsg 6 你的灵魂火符技能已恢复正常！！！

战士攻击附加属性说明：

#act
;战士技能ID写0时，为普通攻击
SDSetSkillPower 0 0 1 70 300 500 120
sendmsg 6 你的普通攻击有70%几率触发3-5倍伤害，该状态持续2分钟…

;战士技能ID 66 = 开天斩
SDSetSkillPower 66 0 2 50 5 10 120
sendmsg 6 你的开天斩50%几率触发麻痹5-10秒，该状态持续2分钟…


设置神秘人

Help > 脚本命令 >
设置神秘人

设置神秘人 参数1： 0关闭或者1开启

SDSetMySteriousMan 1

例子

[@main]

#if

#act
SDSetMySteriousMan 1

SendMsg 6 你已开启神秘人功能


调整人物反弹伤害减免

调整人物反弹伤害减免

SDSetDamageReboundDec

//参数1: 减免百分比 （1-100）
//参数2: 持续时间 单位 ：s

到时触发qf：
@SDDamageReboundTimeOut

实例：

[@main]

#act
SDSetDamageReboundDec 100 10
sendmsg 6 10秒内免疫装备反弹伤害

qf:

[@SDDamageReboundTimeOut]

#act
sendmsg 6 加成结束！！

注意：反弹减免没有减免来源类型


嘲讽范围内的怪物

Help > 脚本命令 >
嘲讽范围内的怪物

SDDoTaunt

参数1：最大范围
参数2：最小范围
参数3：怪物等级，留空则可以嘲讽所以级别怪物

实例
[@main]
#if
#act
SDDoTaunt 5 0 100
SendMsg 6 嘲讽范围5格内的等级低于100级的怪物向你攻击

SDDoTauntEx

参数1=最大范围
参数2=最小范围
参数3=怪物等级，写0则可嘲讽所有级别怪物
参数4=切割数值

实例
[@main]
#if
#act
SDDoTauntEx 7 1 0 5
SendMsg 6 嘲讽附近7格范围内的怪物并切割5%HP


脚本开关复活麻痹护身戒指

脚本开关复活麻痹护身戒指

脚本开关复活戒指

SDSetRevival

//参数1：开关, 1：开，0：关

脚本开关麻痹戒指

SDSetParalysis

//参数1：开关, 1：开，0：关
注意：该功能小退恢复

脚本开关护身戒指

SDSetMagicShield
//参数1：开关, 1：开，0：关

注意：该功能小退恢复

实例:

[@main]
#if
#act
SDSetMagicShield 1
SendMsg 6 你已经拥有了护身戒指功能了
或者
SDSetMagicShield 0
SendMsg 6 你已经关闭了护身戒指功能了

[@main]
#if
#act
SDSetRevival 1
SendMsg 6 你已经拥有了复活戒指功能了
或者
SDSetRevival 0
SendMsg 6 你已经关闭了复活戒指功能了


禁止购买新商铺物品(不是商城)

Help > 脚本命令 >
禁止购买新商铺物品(不是商城)

SDNotShopBuy

参数1：是否允许购买 1禁止 0允许

注：仅支持新版商铺不支持摆摊

禁止以后玩家禁止购买商铺所有物品

例子：

[@main]

#if

#act

SDNotShopBuy 1

sendmsg 6 您已被禁止禁止购买商铺物品


扩展NPC脚本点击触发带参数

Help > 脚本命令 >
扩展NPC脚本点击触发带参数

新增NPC标签跳转支持参数：测试/@测试(1,2,3,4,5,6,7,8,9,10)

功能说明:
@测试(1,2,3,4,5,6,7,8,9,10) 括号里面的代表参数，最多支持10个参数，以小逗号隔开

新增命令：SDCheckScriptParam 参数1
功能说明:用于检测参数是否正常，防止非法封包刷数据，参数1是标签中括号里面的内容

新增变量：<$SDScriptParam1>~<$SDScriptParam10>
功能说明:
@测试(1,2,3,4,5,6,7,8,9,10)括号里面的内容分别对应<$SDScriptParam1>~<$SDScriptParam10>
在点击标签后:<$SDScriptParam1>变量内容为1，<$SDScriptParam2>变量为2，以此类推<$SDScriptParam10>变量为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
SDCheckScriptParam 2000,3000,4000,麻痹戒指,5,6,7,8,9,10
SDCheckScriptParam 2000,3000,4000,复活戒指,5,6,7,8,9,10
SDCheckScriptParam 2000,3000,4000,护身戒指,5,6,7,8,9,10
#act
sendmsg 6 <$SDScriptParam1> - <$SDScriptParam2> - <$SDScriptParam3> - <$SDScriptParam4> - <$SDScriptParam5> - <$SDScriptParam6> - <$SDScriptParam7> - <$SDScriptParam8> - <$SDScriptParam9> - <$SDScriptParam10>
break
#elseact
sendmsg 6 非法的参数

例：
[@main]
合成系统：\ \
合成麻痹戒指/@合成(1000,2000,3000,圣战戒指,麻痹戒指)\ \
合成复活戒指/@合成(1000,2000,3000,天尊戒指,复活戒指)\ \
合成护身戒指/@合成(1000,2000,3000,天尊戒指,护身戒指)

[@合成]
#or
;检查参数是否这几组，防止有可能被刷数据
SDCheckScriptParam 1000,2000,3000,圣战戒指,麻痹戒指
SDCheckScriptParam 1000,2000,3000,天尊戒指,复活戒指
SDCheckScriptParam 1000,2000,3000,天尊戒指,护身戒指
#ELSEACT
;有人用抓包工具刷数据并跳过了检测
sendmsg 6 非法的参数
break

#if
CHECKGAMEGOLD > <$SDScriptParam1>
CHECKGAMEDIAMOND > <$SDScriptParam2>
CHECKGAMEGIRD > <$SDScriptParam3>
checkitem <$SDScriptParam4> 2
#act
Gamegold - <$SDScriptParam1>
GAMEDIAMOND - <$SDScriptParam2>
GAMEGIRD - <$SDScriptParam3>
take <$SDScriptParam4> 2
Give <$SDScriptParam5> 1
sendmsg 6 恭喜合成<$SDScriptParam5>成功。
break
#elsesay
合成<$SDScriptParam5>失败。\
合成<$SDScriptParam5>需要：\
元宝:[<$SDScriptParam1>]，金刚石:[<$SDScriptParam2>]，灵符:[<$SDScriptParam3>]，[<$SDScriptParam4>]:2个。


脚本修改密码密保

Help > 脚本命令 >
脚本修改密码密保

[@main]
#ACT
;SDChangeAccountInfo 账号 密码 用户名 生日 提问1 回答1 提问2 回答2

;SDChangeAccountInfo 11215405 112154 我是传奇 1998/01/01 1 2 3 4

;SDChangeAccountInfo 当前账号 需要修改的密码 需要修改的用户名 需要修改的生日 需要修改的提问 需要修改的回答

触发QF

[@SDChangeAccountInfoOK],表示修改帐号成功

[@SDChangeAccountInfoBusy],表示同一时间不允许多个账号修改，请几秒后重试…

[@SDChangeAccountInfoError],表示修改帐号失败(账号不正确或提交的密保不完整)

[@SDChangeAccountInfoError2],表示修改帐号失败(未知原因修改失败)


范围伤害

Help > 脚本命令 >
范围伤害

SDRangeHarm

参数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中的[@SDRangeHarmX],X代表附加效果序号
参数10 播放自身特效编号 0代表没有,特效编号

SDRangeHarm <$X> <$Y> 8 100 1 5
当前地图 人物坐标范围8之内所有可以攻击的目标都受到100点伤害，并且被击退5格

所有参数都支持变量
伤害和普通伤害一样，需要考虑目标的防御


呼出隐藏助手窗口和挂机设置窗口

Help > 脚本命令 >
呼出隐藏助手窗口和挂机设置窗口

呼出隐藏助手窗口

SDShowWindow
参数 1 （呼出助手窗口）
参数 2021（呼出挂机窗口）

[@main]
#if
#act
SDShowWindow 1
;呼出助手窗口成功

[@main]
#if
#act
SDShowWindow 2021
;呼出挂机窗口成功


获取指定位置物品信息命令

Help > 脚本命令 >
获取指定位置物品信息命令

SDGetItemFieldValue 参数1 参数2 参数3

参数位置 参数说明
参数1 人物身上装备(0-41) 、OK框物品(-1) 、自定义OK框物品(100-107)
参数2 获取属性信息
参数3 保存变量
[@测试一]
#IF
CHECKLEVELEX > 0
#ACT
SDGetItemFieldValue 1 name S21
SDGetItemFieldValue 1 IDX S22
SDGetItemFieldValue 1 MAKEINDEX S23
SDGetItemFieldValue 1 UPGRADECOUNT S24
SENDMSG 5 获取人物装备[武器]：名字：<$STR(S21)>、IDX：<$STR(S22)>、MAKEINDEX：<$STR(S23)>、UPGRADECOUNT：<$STR(S24)>
break


检测和删除聚灵珠是否满足条件

Help > 脚本命令 >
检测和删除聚灵珠是否满足条件

SDCheckMineEx

检测聚灵珠持久是否满足条件
参数1 聚灵珠名称
参数2 数量
参数3 聚灵珠经验
SDTakeMineEx
删除满足条件的聚灵珠
参数1 聚灵珠名称
参数2 数量
参数3 聚灵珠经验

[@测试]
#IF
SDCheckMineEx 聚灵珠 1 200
#ACT
SDTakeMineEx 聚灵珠 1 200
#SAY
回收1个满200w经验的聚灵珠成功。
#ELSESAY
没有可以回收的聚灵珠。


测包裹中聚满经验的聚灵珠

Help > 脚本命令 >
测包裹中聚满经验的聚灵珠

SDCheckFullBead

参数1 (聚灵珠名字)
参数2 (>=)
参数3 (数量)

[@main]
#if
SDCheckFullBead 聚灵珠(小) = 5
#act
SDTAKEDURAITEM 聚灵珠(小) 1 5
SDGiveFullBead 聚灵珠(大) 1
Sendmsg 5个满经验的 聚灵珠(小)兑换满经验的 聚灵珠(大)成功。
break


给予满经验的聚灵珠

Help > 脚本命令 >
给予满经验的聚灵珠

给予满经验的聚灵珠
SDGiveFullBead
给予指定数量满经验的聚灵珠
参数1 聚灵珠名称
参数2 数量

[@MAIN]
#if
#act
SDGiveFullBead 聚灵珠 5
Sendmsg 给你5个聚满经验的聚灵珠
break


检测包裹是否满经验的指定物品名 数量

Help > 脚本命令 >
检测包裹是否满经验的指定物品名 数量

检测包裹是否满持久的指定物品名 数量(可用于聚满经验的聚灵珠等)

SDCHECKITEMDURACOUNT

参数1 物品名
参数2 是否聚满(0=未满的，1=已满的)
参数3 >/</=
参数4 数量

[@main]
#IF
SDCHECKITEMDURACOUNT 聚灵珠(大) 1 > 0
#SAY
你的背包有聚集满经验的聚灵珠(大)。
#ELSESAY
你的背包还没有聚集满经验的聚灵珠(大)。\
回收聚灵珠


删除满足条件的聚灵珠2

Help > 脚本命令 >
删除满足条件的聚灵珠2

SDTAKEDURAITEM

参数1 物品名
参数2 是否聚满(0=未满的，1=已满的)
参数3 数量

[@main]
#IF
SDCHECKITEMDURACOUNT 聚灵珠(大) 1 > 9
#ACT
SDTAKEDURAITEM 聚灵珠(大) 1 10
#SAY
回收聚灵珠(大)成功。
#ELSESAY
没有可以10个聚满经验的聚灵珠(大)。


获取装备宝石数量

Help > 脚本命令 >
获取装备宝石数量

获取指定装备宝石数量

SDGetItemStoneCount

//参数1:物品位置 身上装备(0~30) OK框物品,也就是装备修理或出售物品的那个对话框(-1) 自定义OK框(100~107)
//参数2:宝石名称 *或ALL代表所有宝石
//参数3:保存变量

[@main]
##if
&##act
SDGetItemStoneCount 0 all U20
SENDMSG 6 你的衣服上面共有<$STR(U20)>宝石

获取全身装备宝石数量

SDGetStoneCount

//参数1:宝石名称 *或ALL代表所有宝石
//参数2:保存变量

[@main]
##if
&##act
SDGetStoneCount all U20

SENDMSG 6 你的身上面共有<$STR(U20)>宝石


遍历背包获取,物品的各项信息

Help > 脚本命令 >
遍历背包获取,物品的各项信息

功能：遍历背包获取,物品的各项信息
命令：sdGetPlayInfo BAGITEMCOUNT P10

[@main]
#if
#act
sdGetPlayInfo BAGITEMCOUNT P10
Sendmsg 5 提示:您的背包当中有<$STR(p10)>件物品。


循环判断指令

Help > 脚本命令 >
循环判断指令

1、请在#act下使用，如果条件设置有问题，会导致一直循环，请注意语法使用
SDwhile 循环开始 支持嵌套
sdendwhile 循环结束 支持嵌套

//参数1:变量
//参数2:检测符号 =(等于) !=(不等于) >(大于) >=(大于等于)
<(小于) <=(小于等于)
//参数3:判断参数,可以是变量
//参数4:自增或自减 1:运行一次后参数1自动增加1 -2:运行一次后参数1自动减去2
默认或不写则=0 ，支持何整数 -21E到21E 仅对变量有用

循环尾命令(用于标记循环尾):
sdENDWHILE

例子一：多重循环，参数四设置自减

#act

mov N0 3
mov n4 0
sdwhile N0 > 1 -1
mov N1 4
sdwhile N1 > 1 -1
mov N2 5
sdwhile N2 > 1 -1
inc n4 1
sendmsg 7 循环=<$STR(N0)>/<$STR(N1)>/<$STR(N2)>/<$STR(N4)>
SDendwhile
SDendwhile
SDendwhile

例子二：循环，dec减少N0变量
;请确保在循环体中能够让变量不满足循环条件,否则会无限循环卡死M2
[@测试]
#Act
Mov N0 5
SDWhile N0 > 0
;判断循环的条件*

;——-循环体开始
DEC N0 1
;这里不写DEC N0 1,循环条件SDWhile N0 > 0永久会成立，M2会进入死循环卡死
give 金币 5000
sendmsg 7 回收成功,金币+5000.
;——-循环体结束

SDendWhile
sendmsg 7 执行完成！


清除特效

Help > 脚本命令 >
清除特效

SDClearEffect

参数1： 特效编号


新增GM命令

Help > 脚本命令 >
新增GM命令

@SDMakeEx 该命令可以制造指定来源的物品

参数1：物品名称
参数2：来源类型，此类型兼容当前主流物品来源类型(来源类型(0没有物品来源 1GM 2NPC 3商铺 4怪物 5系统 6挖矿))
参数3：地图名
参数4：怪物名/来源名
参数5：角色名称，此参数被省略或使用%s时，该参数的值默认读取当前角色名
参数6：来源时间，此参数被省略或使用%s时，该参数的值默认读取当前时间

命令(在游戏聊天框中输入，注意每个参数中间只能有1个空格)：

@SDMakeEx 参数1 参数2 参数3 参数4 参数5 参数6

例：

制造怪物来源的物品(指定所有参数):
@SDMakeEx 屠龙 4 深渊 白野猪 打死你 2024-08-12 16:41:54

制造怪物来源的物品(部分参数自动获取):
@SDMakeEx 屠龙 4 深渊 暗之触龙神 %s %s

制造自定义来源的物品(指定所有参数):
@SDMakeEx 屠龙 2 盟重省 土城酷跑活动 打死你 2010-01-01 00:00:01

制造自定义来源的物品(部分参数自动获取):
@SDMakeEx 屠龙 2 盟重省 土城酷跑活动 %s %s


脚本修改技能冷却

Help > 脚本命令 >
脚本修改技能冷却
SDSETSKILLCDTIME
通过脚本使对象技能冷却时间缩短效果
是减少当前技能ID冷却时间，非永久性！
参数 | 说明
参数1： | 技能ID
参数2： | 方式: 0为减少固定时间 1为减少千分比
参数3： | 减少时间(毫秒)
脚本例子
[@main]
#if
#act
SDSETSKILLCDTIME 66 1 800
SendMsg 0 你的开天斩技能冷却已缩短千分之800


获取人物状态剩余时长

Help > 脚本命令 >
获取人物状态剩余时长
SDGetStateValue
通过脚本获取人物状态剩余时长
参数 | 说明
参数1： | 状态类型 (0=绿毒、1=红毒、2=不能攻击、4=不能移动、5=麻痹、8=隐身、9=神圣战甲术、10=幽灵盾、11=魔法盾、12=冰冻、13=紫毒、14=蛛网、15=护体神盾、16=无极真气)
参数2： | 剩余时长 (支持所有变量)
脚本例子
[@获取麻痹状态]
#IF
#ACT
SDGetStateValue 5 N10
#IF
LARGE N10 0
#ACT
SENDMSG 7 你被麻痹中，剩余时长：<$STR(N10)>
#ELSEACT
SENDMSG 7 你没有被麻痹


极品元素回收检测

Help > 脚本命令 >
极品元素回收检测

SDCheckItemWitemValue
参数一：物品名称 屠龙 或 *代表全部 检测多个装备名称可使用|进行分割，如：圣战戒指|圣战戒指A|圣战戒指B
参数二：极品类型 0普通属性/1元素属性/2颜色/3星星数
参数三：极品位置 普通属性(0-6)/元素属性(0-19)/数值如果填写-1，即代表计算 - 普通属性(0-6)的总和值 或 元素属性(0-19)总和值
参数四：符号 >、<、=
参数五：值 极品点数
参数六：数量 最大回收数量（0回收全部，如果数量不为0，且参数七为-1，当前回收数量即已枚举的装备数量的总数）
参数七: 是否先清空上一个使用的回收数据(默认0,清除以往缓存数据。-1不清除，用于多次脚本执行调用后使用SDTakeItemWitemValue进行回收），注意这个参数可能很多人不理解，请根据例子自行测试！

例子1，单次回收单个物品：

#if
SDCheckItemWitemValue 圣战戒指 1 0 = 0 0
;因为是等于0所以回收没有极品属性的圣战戒指
#Act
SDTakeItemWitemValue N0
;这个命令是配套SDCheckItemWitemValue的直接调用会回收满足检测命令条件的所有装备，要在SDCheckItemWitemValue调用后使用，其他地方调用无效
;回收命令 N0表示回收数量
SDWhile N0 > 0
DEC N0 1
;不减1会进入死循环，注意了！
give 金币 5000
sendmsg 7 回收成功,金币+5000.
sdendWhile

例子2，回收多个装备物品元素属性为0的例子：

#IF
#Act
SDCheckItemWitemValue 屠龙 1 -1 = 0 0 0
;第七个参数调写0，清除缓存，放置第一个执行
SDCheckItemWitemValue 开天 1 -1 = 0 0 -1
;第七个参数改-1，把需要回收检测的装备和上面的数据叠加起来！
SDCheckItemWitemValue 小刀 1 -1 = 0 0 -1
;第七个参数改-1，把需要回收检测的装备和上面的数据叠加起来！

;上面三句命令就可以把屠龙、开天、小刀需要进行回收的装备数据枚举好了，下面执行SDTakeItemWitemValue
SDTakeItemWitemValue N0
;这个命令是配套sdCheckItemWitemValue的直接调用会回收满足检测命令条件的所有装备，要在SDCheckItemWitemValue调用后使用，其他地方调用无效
;回收命令 N0表示回收数量
SDWhile N0 > 0
DEC N0 1
;不减1会进入死循环，注意了！
give 金币 5000
sendmsg 7 回收成功,金币+5000.
SDendWhile


人物临时属性

Help > 脚本命令 >
人物临时属性

人物临时属性命令（小退失效 人物在线一直有效）

SDChangeHumAbility 参数1 参数2 参数3 参数4

参数位置 | 参数说明
参数1 | 属性索引
参数2 | 属性类型(1-40)最大支持21亿,HP、MP最大值支持42亿
参数3 | 操作符(+ 、- 、=)
参数4 | 数值

[@例子1]
#IF
CHECKLEVELEX > 0
#ACT
SDChangeHumAbility 0 5 + 100
SDChangeHumAbility 0 6 + 100
SENDMSG 5 临时属性索引为0，人物临时属性攻击增加100-100
break`

[@例子2]
#IF
CHECKLEVELEX > 0
#ACT
SDChangeHumAbility 1 1 + 100
SDChangeHumAbility 1 2 + 100
SENDMSG 5 临时属性索引为1，人物临时属性防御增加100-100`
break

清除指定临时属性命令

SDCLEARHUMABILITY 参数1`

参数位置 | 参数说明
参数1 | 属性索引

[@测试]
#IF
CHECKLEVELEX > 0
#ACT
SDCLEARHUMABILITY 0
SENDMSG 5 临时属性索引为0的属性全部清除
break

获取执行属性索引的临时属性值

常量 | 说明
<$SDHUMABILITY[X].VALUE(Y)> | X:属性索引， Y:属性类型

[@测试]
#if
#act
SENDMSG 6 <$SDHUMABILITY[0].VALUE(5)> //获取人物属性索引为0所附加攻击下限值
SENDMSG 6 <$SDHUMABILITY[0].VALUE(6)> //获取人物属性索引为0所附加攻击上限值

SENDMSG
6 <$SDHUMABILITY[1].VALUE(1)> //获取人物属性索引为1所附加防御下限值
SENDMSG 6 <$SDHUMABILITY[1].VALUE(2)>
//获取人物属性索引为1所附加防御上限值

属性类型参照表

属性参数 | 参数说明
1 | 防御下限
2 | 防御上限
3 | 魔御下限
4 | 魔御上限
5 | 攻击下限
6 | 攻击上限
7 | 魔法下限
8 | 魔法上限
9 | 道术下限
10 | 道术上限
11 | 最大生命值
12 | 最大魔法值
13 | HP恢复
14 | MP恢复
15 | 中毒恢复
16 | 中毒躲避
17 | 魔法躲避
18 | 准确
19 | 敏捷
20 | 幸运
21 | 暴击几率增加
22 | 增加攻击伤害
23 | 物理伤害减少
24 | 魔法伤害减少
25 | 忽视目标防御
26 | 所有伤害反弹
27 | 增加目标暴率
28 | 人物体力增加
29 | 人物魔力增加
30 | 怒气恢复增加
31 | 合击攻击增加
32 | 扩展元素一
33 | 扩展元素二
34 | 扩展元素三
35 | 扩展元素四
36 | 扩展元素五
37 | 扩展元素六
38 | 扩展元素七
39 | 扩展元素八
40 | 扩展元素九


脚本查看装备

Help > 脚本命令 >
脚本查看装备

SDQUERYUSERSTATE 参数1

参数1 = 玩家名字
例子：

#act
SDQUERYUSERSTATE 我是测试

查看对方装备时触发

QFumction-0脚本触发
[@SDQueryUserState]
#act
;对方角色名字，当前HP,PK值，金币，元宝
sendmsg 6 <$C.USERNAME>，<$C.HP>，<$C.PKPOINT>，<$C.GOLDCOUNT>，<$C.GAMEGOLD>

禁止查看装备

（此功能服务端1.80及以上支持此功能服务端1.80及以上支持）

[@SDQueryUserState]
#act
SDStopQueryUserState
sendmsg 6 禁止查看对方装备

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


播放本地文件

Help > 脚本命令 >
播放本地文件

参数一：音乐文件名

只能播放本地文件（默认登录器游戏目录\wav）

[@main]
#if
#act
SDPlayMusic 100.wav
;不受关闭声音影响,只能关闭系统声音解决

新增播放音乐支持mp3

Copyright ? 2023. All rights reserved. (To change the copyright info, just edit it in template.)


自定义按钮

Help > 脚本命令 >
自定义按钮

添加或删除SD自定义按钮(添加/删除.组件自定义按钮)

创建按钮
SDADDBUTTONEX 参数1 参数2 参数3 参数4 参数5 参数6 参数7 参数8 参数9

删除按钮
SDDELBUTTONEX (代表参数1里的按钮编号)

QF触发
@SDButtonClickEx (代表参数1里的按钮编号)

以下为实例 (创建组件自定义按钮.需要每次大退才生效. 最好写在QM登录脚本里 )

QM脚本里写法
[@Login]
#IF
#ACT
SDADDBUTTONEX 1|20|200|0|1 sdnz.PAK 265|266|267 sdnz.PAK 245|3|200|0|0|0|1 255|3|200|0|0|0 265|3|200|0|0|0 253/鼠标碰触按钮tips|按钮 0
;命令 参数1里 参数2 参数3 参数4 参数5 参数6 参数7 参数8 参数9
;这是有特效素材按钮的写法

;SDADDBUTTONEX 2|20|250|0|1 sdnz.PAK 265|266|267 sdnz.PAK * 253/鼠标碰触按钮tips|按钮文字 0
;命令 参数1里 参数2 参数3 参数4 参数5 参数6 参数7 参数8 参数9
;这是没有特效素材按钮的写法

QF触发写法
[@SDButtonClickEx1]
#act
sendmsg 0 点击自定义按钮1

删除按钮写法
#act
SDDELBUTTONEX 1

以下是参数详解
参数1 触发序号|坐标X|坐标Y|是否移动|对齐方式 有4个参数， 每个参数用“|”隔开。 (“对齐方式”参数不使用可忽略)
参数2 按钮WIL补丁 方式一：编号可在引擎M2 -> 查看 -> 查看列表信息二 -> WIL资源 方式二：直接输入补丁名 XXX.PAK
参数3 鼠标默认图片编号|鼠标碰触图片编号|鼠标按下图片编号 有3个参数， 每个参数用“|”隔开
参数4 按钮特效WIL补丁 方式一：编号可在引擎M2 -> 查看 -> 查看列表信息二 -> WIL资源 方式二：直接输入补丁名 XXX.PAK
参数5 按钮默认状态特效图片编号|播放张数|播放速度|绘制模式|微调X坐标|微调Y坐标|切换状态时隐藏默认特效 有7个参数， 每个参数用“|”隔开。 不使用特效整个参数可使用“”代替
参数6 按钮碰触状态特效图片编号|播放张数|播放速度|绘制模式|微调X坐标|微调Y坐标 有6个参数， 每个参数用“|”隔开。 不使用特效整个参数可使用“”代替
参数7 按钮按下状态特效图片编号|播放张数|播放速度|绘制模式|微调X坐标|微调Y坐标 有6个参数， 每个参数用“|”隔开。 不使用特效整个参数可使用“*”代替
参数8 鼠标碰触按钮tips|按钮文字 有2个参数， 每个参数用“|”隔开。 不使用按钮文字使用“-1”代替
参数9 创建窗口标识 方式一：支持(0-17)不同窗口上进行绘制 (窗口标识参数详解见详情) 方式二：组件名（登录器配置器UI里面对应的组件名称）

每个小参数的….参数说明
触发序号 触发序号支持1-200
是否移动 0:不可移动 / 1:可以移动
对齐方式 0:左上 / 1:右上 / 2:左下 / 3:右下 / 4:上中 / 5:下中 / 6:左中 / 7:右中 / 8:居中
播放速度 单位：毫秒
绘制模式 0:特效绘制 / 1:普通绘制

主参数5里的小参数7说明
切换状态时隐藏默认特效 当鼠标经过或者按下隐藏默认特效

主参数8
鼠标碰触按钮tips “\”表示换行， “/”颜色分割符
鼠标碰触按钮tips 格式 : 颜色1/备注文字信息1\颜色2/备注文字信息1
按钮文字 格式：文字描述:字体颜色:背景颜色:左边:顶边:字体名称:字体大小:样式

主参数9 窗口标识说明
窗口标识
/0:游戏主界面 / 1:人物装备对话框 / 2:装备页面 / 3:时装页面 / 4:状态页面
/ 5:属性页面 / 6:称号页面 / 7:技能页面 / 8:出战页面 / 9:包裹界面
/10:聊天框左侧界面 / 11:聊天框右侧界面 / 12:商铺界面 / 13:查看对方装备对话框 / 14:查看对方装备页面
/ 15:查看对方时装页面 / 16:查看对称号页面 / 17:大地图界面


查询目标所在位置

Help > 脚本命令 >
查询目标所在位置

SDQueryTargetEx

通过脚本查询对象所在位置

参数1:指定地图号
参数2:寻找类型 0 只找玩家 1找怪
参数3:寻找数量 0 所有 大于1为寻找数量
参数4:寻找名称
参数5:保存地图名变量
参数6:保存地图号变量（用来调用命令传送使用）
参数7:保存对象名变量
参数8:保存坐标X变量
参数9:保存坐标Y变量
参数10:共找到数量(如参数3不为0 这里将保存参数3的值)

*注意 保存变量问题 使用方法见示例

[@查询对象]
#if
#act
SDQueryTargetEx 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)>
[@去1]
#if
#act
mapmove
<$STR(S$地图号变量_1)> <$STR(S$对象X坐标_1)>
<$STR(S$对象Y坐标_1)>


检测物品极品属性值

Help > 脚本命令 >
检测物品极品属性值

SDCheckJPPoint

参数1:物品位置 身上装备(0-30) ok框物品 地面物品(-1)
参数2:极品位置 0-6 (原引擎极品属性位置)
参数2=-1时表示检测总和

参数3:运算符 >，=，<
参数4:值

列子:
[@例子1]
#IF
SDCheckJPPoint -1 0 > 0
#ACT
SENDMSG 5 OK框或地面物品 防御大于0
break`

[@例子2]
#IF
SDCheckJPPoint -1 -1 > 0
#ACT
SENDMSG 5 OK框或地面物品 极品属性总和大于0
break`

物品极品属性详解

重要注意事项，请在使用本功能前务必详细阅读，否则将有可能带来严重后果
当所需要升级的项链、手镯、戒指、在DB数据库中因 SHAPE 值的不同，而升级
出来得到的结果也不同，所以使用者请按照以下属性变化列表进行详细设置！
其中涉及的体力恢复、魔法恢复、毒物躲避、中毒恢复、如升级成功“1”点属性，则表示为 10%

项链属性：
当SHAPE值为19时：属性位置“0”升级出来表现为“魔法躲避”、属性位置“1”升级出来属性表现为“幸运”
当SHAPE值为20时：属性位置“0”升级出来表现为“准确”、属性位置“1”升级出来属性表现为“敏捷”
当SHAPE值为21时：属性位置“0”升级出来表现为“体力恢复”、属性位置“1”升级出来属性表现为“魔法恢复”

手镯属性：
当SHAPE值为24时：属性位置“0”升级出来表现为“准确”、属性位置“1”升级出来属性表现为“敏捷”
当SHAPE值为26时：属性位置“0”升级出来表现为“防御上限”、属性位置“1”升级出来属性表现为“魔御上限”

戒指属性：
当SHAPE值为22时：属性位置“0”升级出来表现为“防御上限”、属性位置“1”升级出来属性表现为“魔御上限”
当SHAPE值为23时：属性位置“0”升级出来表现为“毒物躲避”、属性位置“1”升级出来属性表现为“中毒恢复”

盔甲
0 防御
1 魔御
2 攻击
3 魔法
4 道术

武器
0 DC2
1 MC2
2 SC2
3 幸运
4 诅咒
5 准确
6 攻击速度

头盔
0 防御
1 魔御
2 攻击
3 魔法
4 道术
5 佩带需求
6 佩带级别

项链
0 AC2
1 MAC2
2 DC2
3 MC2
4 SC2
6 佩带需求

手镯
0 AC2
1 MAC2
2 DC2
3 MC2
4 SC2
6 佩带需求

戒指
0 AC2
1 MAC2
2 DC2
3 MC2
4 SC2
6 佩带需求


新加获取全身极品数据总和

Help > 脚本命令 >
新加获取全身极品数据总和
SDSEPURB
新加获取全身极品数据总和
参数位置 | 参数说明
参数1 | 部位 （下方有部位说明）
参数2 | 类型 （1=防御下限 2=防御上限 3=魔防下线 4=魔防上限 5=攻击下限 6=攻击上线 7=魔法下线 8=魔法上线9=道术下线 10=道术上线 11=攻击速度 12=幸运 13=诅咒 14=星星总数 15=元素总和 16=镶嵌 17=自定义属性 18=准确 19=敏捷 20=体力恢复 21=魔法恢复 22=中毒躲避 23=中毒恢复 24=颜色 25=魔法躲避）
参数3 | 序号 （当参数2=15，16，17，24时参数3生效） 当参数2= 1~13 参数3对应位置 参数为0是原属性+极品属性 参数为1是极品属性 参数为2是原属性（下限无极品属性注意区分） 当参数2=15的时候参数3对应获取0-19元素 当参数2=16 的时候参数3对应的是 0 打孔数量 1镶嵌数量 2 取镶嵌同名宝石数量（需配合参数5） 当参数2=17 的时候参数3对应获取 0-10个绑定属性 当参数2=24时 参数3对应的是颜色值0-255 (如果部位为指定位置这里填写0 返回为当前物品颜色)
参数4 | 变量
参数 5 | 宝石名字 （当参数2=16且参数3=2的时候 检查全身同名的宝石数量 如宝石名字：攻击宝石+5） 注：参数2不等于16或参数3不等于2的时候可为空)
例子
[@main]
#if
#ACT
SDSEPURB -1 6 0 N0
SendMsg 0 当前角色全身攻击上限为 <$STR(N0)>
SDSEPURB 1 24 0 N2
SendMsg 0 当前角色武器颜色为 <$STR(N2)>

装备位置说明：
-1 全身
0 盔甲
1 武器
2 照明物
3 项链
4 头盔
5 右手镯
6 左手镯
7 右戒指
8 左戒指
9 护身符
10 腰带
11 鞋子
12 宝石
13 斗笠
14 军鼓
15 马牌
16 盾牌
17 时装衣服
18 时装武器
19-30 首饰盒1-12
时装首饰装备位置参考
1001 项链
1002 手镯1
1003 手镯2
1004 戒指1
1005 戒指2
1006 头盔
1007 盾牌
1008 腰带
1009 鞋子
1010 军鼓
1011 宝石
1012 马牌

注：
19~21 ：项链
为19时，ac2和mac2代表魔法躲避和幸运
为20时，ac2为准确，mac2为敏捷
为21时，ac2为体力恢复，mac2为魔法恢复
24~26 ：手镯
为24时，ac2代表准确，mac2代表敏捷
为26时，ac和ac2分别代表物理防御上限和下限，mac和mac2分别代表魔法防御上限和下限
22~23 ：戒指
为22时，ac和ac2分别代表物理防御上限和下限，mac和mac2分别代表魔法防御上限和下限
为23时，ac代表攻击速度+ ， mac代表中毒躲避+ ， mac2代表中毒恢复+
(0)暴击几率增加 1~100%
(1)增加攻击伤害 1~100%
(2)物理伤害减少 1~100%
(3)魔法伤害减少 1~100%
(4)忽视目标防御 1~100%
(5)所有伤害反弹 1~100%
(6)增加目标暴率 1~100%
(7)人物体力增加 1~100%
(8)人物魔力增加 1~100%
(9)怒气恢复增加 1~100%
(10)合击攻击增加 1~100%
(11~19)自定义元素


爆率透视

需要搭配服务端181以及以上版本 客户端174 以及以上版本

服务端开关决定是否开启功能

爆率透视功能开启命令

例子：
[@main]
#if
#act
SDStartSee 1
sendmsg 6 您已开启爆率透视功能!

[@main]
#if
#act
SDStartSee 0
sendmsg 6 您已关闭爆率透视功能!

脚本命令开关决定玩家个人是否开启功能


根据怪物名获取怪物数据库信息

SDGetDBMonsterFieldValue

参数1:怪物名
参数2:字段名
参数3:保存变量

例子：、
[@main]
#if
#act
SDGetDBMonsterFieldValue 白野猪 race S3
sendmsg 6 白野猪的race值为<$STR(S3)>


获取物品来源信息

SDGetItemCreateInfo

//参数1:装备位置
-2:当前拾取物品 -1:OK框中的物品 0-30:身上装备 1001-1012:时装首饰
//参数2:来源类型
//参数3:来源地图
//参数4:怪物名称
//参数5:人物名称
//参数6:来源时间

例子：
[@main]
#if
#act
SDGETITEMCREATEINFO 0 N1 S1 S2 S3 S4 S5
sendmsg 6 1.<$STR(N1)>2.<$STR(S1)>3.<$STR(S2)>4.<$STR(S3)>5.<$STR(S4)>6.<$STR(S5)>


时间戳转换月日年时分秒

时间戳转换月日年时分秒

SDUNIXTOSTR 时间戳 变量1 变量2

参数位置 参数说明
参数1 时间戳
参数2 S1获取保存变量1(格式为:2022/11/2914:59:27)
参数3 S2获取保存变量1(格式为:2022-11-29-14-59-27)
[@MAIN]
#if
#act
SDUNIXTOSTR 1669705167 S1 S2
sendmsg 6 <$str(S1)> //获取到的变量格式为:2022/11/29 14:59:27
sendmsg 6 <$str(S2)> //获取到的变量格式为:2022-11-29-14-59-27\

新时间戳转换北京时间

SDUNIXTOSTREX 参数1 参数2 参数3

参数位置 参数说明
参数1 <$UTCNOW8>或数值
参数2 S1获取保存变量1(格式为:2022/11/29 14:59:27)
参数3 S2获取保存变量1(格式为:2022-11-29-14-59-27)
@main
#ACT
SDUNIXTOSTREX <$UTCNOW8> S1 S2
sendmsg 6 时间戳转北京时间<$str(S1)>
sendmsg 6 时间戳转北京时间<$str(S2)>

时间戳转换参考网站https://www.jyshare.com/front-end/852/


当前行会成员数量

Help > 脚本命令 > 行会命令 >
当前行会成员数量

SDGETGUILDMEMCOUNT
//参数1:用于保存数量的变量名称
//参数2:行会名称，若为空的话则表示获取自身所在行会玩家的数量

例子：

[@main]
#if
#act
SDGETGUILDMEMCOUNT N$人数 <$GUILDNAME>
sendmsg 6 你的行会人数为：<$str(N$人数)>


开启行会战

Help > 脚本命令 > 行会命令 >
开启行会战
SDSTARTGUILDWAR
开启行会战
参数位置 | 参数说明
参数1 | 行会名称
参数2 | 行会名称
脚本实例
[@main]
#if
#act
SDSTARTGUILDWAR 东东 西西
SENDMSG 6 东东行会和西西行会开启了行会战！


检测指定地图行会人数

Help > 脚本命令 > 行会命令 >
检测指定地图行会人数
SDMAPGUILDHUMNUM
检测指定地图行会人数
参数位置 | 参数说明
参数1 | 判断的地图编号(判断根据触发者所在行会)
参数2 | 人数检测
脚本实例
[@main]
#IF
SDMapGuildHumNum 3 5
#ACT
mapmove 3 333 333
#ELSEACT
sendmsg 6 当前地图,同属行会人数已达5个，无法继续进入！


分隔指定字符串

Help > 脚本命令 > 字符串 >
分隔指定字符串

SDEXTRACTSTRING

命令：ExtractString
分隔符（半角符号） 分割内容 变量1 变量2 变量3 变量4 变量5 变量6 变量7 变量8 (最多10个参数)

例子1：

#ACT
MOV S0 布衣(男):斩马刀:灯笼项链:道士头盔:金手镯:金手镯:金戒指:金戒指
SDEXTRACTSTRING : <$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(S1)> = 布衣(男)
<$STR(S2)> = 斩马刀
<$STR(S3)> = 灯笼项链
<$STR(S4)> = 道士头盔
<$STR(S5)> = 金手镯
<$STR(S6)> = 金手镯
<$STR(S7)> = 金戒指
<$STR(S8)> = 金戒指

例子2：

SDEXTRACTSTRING , <$STR(T0)> S91 S92 S93 S94 S95 S96

SENDMSG 6 【提示】**亲爱的暗黑玩家：<$USERNAME> LV:<$LEVEL> 转生等级:<$RELEVEL>

SENDMSG 6 【提示】**你上次登录的ＩＰ为：<$STR(S94)>

SENDMSG 6 【提示】**你上次登录的地址为：<$STR(S95)>

SENDMSG 6 【提示】**你上次登录的时间为：<$STR(S96)>

MOV S94 <$IPADDR>

MOV S95 <$IPLOCAL>

MOV S96 <$MONTH>月<$DAY>日<$HOUR>时<$MINUTE>分<$SECOND>秒

MOV T0 <$STR(S91)>,<$STR(S92)>,<$STR(S93)>,<$STR(S94)>,<$STR(S95)>,<$STR(S96)>


分隔字符串(无限)

Help > 脚本命令 > 字符串 >
分隔字符串(无限)

SDExtractStringEx

分割字符串(无限)

参数1：分隔符
参数2：待分割的内容
参数3：变量名，用于保存分割后的内容，内容保存在变量名_1、变量名_2、依次类推
，注意此变量只能使用扩展变量
参数4：变量名，用于保存分割得到的数量

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


分割数字到变量

Help > 脚本命令 > 字符串 >
分割数字到变量

SDSplitNumber

参数1=要分割的数字
参数2=分割后保存的变量,保存的变量格式为 变量_标记
参数3=分割后获得的数字总数保存的变量名

实例

[@main]
#if
#act
SDSplitNumber 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)>个数字


将字符串填充到一定长度

Help > 脚本命令 > 字符串 >
将字符串填充到一定长度

SDFillText

参数1=必须为文本类变量
参数2=填满长度

实例
[@main]
#if
#act
SDFillText S0 15
SendMsg 6 将S0用空格填充到了15个字符的长度，用于排版


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

Help > 脚本命令 > 字符串 >
从长字符串中随机出一段字符串

SDRandomText

//参数1：长字符串
//参数2：分隔符
//参数3：随机出的字符串

;两种随机抽物品f格式
格式一：
;物品名不能包含” { }三种符号 例子：{1/10}光芒道靴，机率A=1/机率B=10 大约10分之1几率爆出
;最后一个物品几率建议1/1，前面物品没抽到，最后可作为保底抽取
例子：
SDRandomText RANDOM*{1/4}雷霆项链|{1/4}雷霆护腕|{1/4}雷霆道戒|{1/4}雷霆道靴|{1/1}雷霆腰带* | S1

格式二：
例子：
SDRandomText NEWRANDOM*雷霆项链|雷霆护腕|雷霆道戒|雷霆道靴|雷霆腰带* | S2


排序数值

Help > 脚本命令 > 字符串 >
排序数值

SDSortString

参数一(要排序的字符串)，参数二(分隔符)，参数三(排序后赋值的变量)，参数四(排序模式，0=小到大 1=大到小)

例子1：

;从小到大排序

#ACT
MOV N$三号位置 10
MOV N$四号位置 7
MOV N$五号位置 3
MOV S$排序 <$STR(N$三号位置)>|<$STR(N$四号位置)>|<$STR(N$五号位置)>
SDSortString <$STR(S$排序)> | <$STR(S$整理后)> 0
结果为：3|7|10|

例子2：

;从大到小排序
#ACT
MOV S$三号位置 14
MOV S$四号位置 5
MOV S$五号位置 8
SDSortString <$STR(S$排序)> | <$STR(S$整理后)> 1
结果为：14|8|5|


检测文本字符并返回参数

Help > 脚本命令 > 字符串 >
检测文本字符并返回参数

SDPosInList

//参数1:检测字符
//参数2:文本路径
//参数3:保存变量(检测到字符后返回该行数据)
//参数4:保存变量(检测到字符后返回在文本中行数)(该参数可忽略)
//参数5:反向检测(参数为1则为反向检测)(该参数可忽略)

\
例子：
战斗力.txt
玩家名字一|赵鼠|战斗力|650
玩家名字二|钱牛|战斗力|126
玩家名字三|孙虎|战斗力|425
玩家名字四|李兔|战斗力|647
玩家名字五|周龙|战斗力|823
玩家名字六|吴蛇|战斗力|740

[@测试]
#IF
SDPosInList 李兔 ..\QuestDiary\战斗力.txt S10 N10
#ACT
SENDMSG 5 S10返回数据为：玩家名字四|李兔|战斗力|647
SENDMSG 5 N10返回数据为：3
break
#ELSEACT
SENDMSG 5 未找到该字符
break


写入键值

Help > 脚本命令 > 哈希链表 >
写入键值

SDHashTableCreate

功能:写入键值到内存

命令:

SDHashTableCreate 参数1 参数2

参数详解:

参数1:标识字符串(不区分大小写)

参数2:存储内容

例子:

我们做个物品首爆提示功能

下面进行脚本编写

QManage.txt

[@Startup]

#ACT

;写在这里，是因为我们要把之前的记录，载入到哈希链表里，用于查询记录

SDHashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1

;载入文件记录,如果想每次启动M2重新计算的，这里就可以去掉，因为哈希值链表，进程每次重新启动就会初始化，他虽然是全局，但不会保存记录到下次启动M2，也不会因为玩家下线而清除之前添加的键值这一点需要理解。

QFunction-0.txt
;怪物爆出触发
[@SDDropItem]

#IF

SDHashTableContainsKey <$STR(S$当前爆出物品名称)>

;这条是查询指令，判断有没有这条记录，因为是用内存算法查找，所以会比用Checktextlist这个命令快上百倍、上千倍，以替代消耗较大的命令，这也是开发哈希链表主要原因，

#ACT

;跳到这里，说明找到此记录，那就不是首爆了，那就空着，不写代码

#elseact

;跳到这块，说明没找到此记录

SDHashTableCreate <$STR(S$当前爆出物品名称)> 1

;加入哈希链表记录，参数2可以随便定义一个，在这里、用1就可以

AddTextListEx ..\QuestDiary\功能文件\爆出提示.txt <$STR(S$当前爆出物品名称)>

;同时输出文件，下次重新启动M2也可以载入此记录，如果想每次启动M2都是初始化，这句输出文件和载入命令也可以免了

SendCenterMsg 180 251 恭喜角色:<$USERNAME>,爆出全区第一个<$STR(S$当前爆出物品名称)> 0 3


查找键值

Help > 脚本命令 > 哈希链表 >
查找键值

SDHashTableContainsKey

功能:查找键

命令:

SDHashTableContainsKey 参数1

参数详解:

参数1:标识字符串(不区分大小写)

例子:

#IF

SDHashTableContainsKey 标识字符串

#ACT

sendmsg 6 找到此记录！


读取键值

Help > 脚本命令 > 哈希链表 >
读取键值

SDHashTableGet

功能:查找键

命令:

SDHashTableGet 参数1 参数2

参数详解:

参数1:标识字符串(不区分大小写)

参数2:存储的变量

例子:

#ACT

SDHashTableGet 标识字符串 U45

;有没有内容，取决于这个标识字符串有没有写入数据

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


删除键值

Help > 脚本命令 > 哈希链表 >
删除键值

SDHashTableRemove

功能:删除键

命令:

SDHashTableRemove 参数1

参数详解:

参数1:标识字符串(不区分大小写)

例子:

#ACT

SDHashTableRemove 标识字符串

;删除后，再查找或读取这个标识字符串，就不会有这个记录


清除所有键值

Help > 脚本命令 > 哈希链表 >
清除所有键值

SDHashTableClear

功能:删除所有键

命令:

SDHashTableClear

例子:

#ACT

SDHashTableClear

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


载入文件到键值

Help > 脚本命令 > 哈希链表 >
载入文件到键值

SDHashTableLoad

功能:载入文件

命令:

SDHashTableLoad 参数1 参数2 参数3

参数详解:

参数1:载入的文件路径

参数2:存储内容(载入的键,全部赋予此存储内存)

参数3:分割符号(留空代表换行符)

例子:

QManage.txt

[@Startup]

#ACT

SDHashTableLoad ..\QuestDiary\功能文件\爆出提示.txt 1

;我们这个txt以行作为分隔符，所以参数3留空。但参数2如果为空，会导致载入无效！


载入文件到键值(扩展)

Help > 脚本命令 > 哈希链表 >
载入文件到键值(扩展)

SDHashTableLoadEx

功能:载入文件

命令:

SDHashTableLoadEx 参数1 参数2 参数3 参数4

参数详解:

参数1:载入的文件路径

参数2:标识字符串附加值(这个内容加上文件读取分割的内容,用于区分用途)

参数3:存储内容(载入的键,全部赋予此存储内存)

参数4:分割符号(留空代表换行符)

例子:

QManage.txt

[@Startup]

#ACT

SDHashTableLoadEx ..\QuestDiary\功能文件\爆出提示.txt ABC 1

;我们这个txt以行作为分隔符，所以参数4留空。但参数3如果为空，会导致载入无效！

;—————————————————————————————————————————-

;比SDHashTableLoad多了标识字符串附加值是怎么用的？

我是装备A
我是装备B
我是装备C

;假设文件 ..\QuestDiary\功能文件\爆出提示.txt 里面是上面的内容

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

#ACT

SDHashTableGet ABC我是装备A U45

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

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


百分比血蓝量控制

Help > 脚本命令 > 血量控制 >
百分比血蓝量控制
脚本控制血量 | 脚本控制蓝量
SDADDHPPER | SDADDMPPER
参数位置 | 参数说明
参数1 | 运算符 + - =
参数2 | 值
参数3 | 是否按照当前血量计算(0:否 1:是)
参数4 | 分母,如果该参数省略则默认按照百分比计算,如果该值为-1则按照固定值切割
脚本实例
[@main]
#ACT
SDADDHPPER + 10 1 100
sendmsg 6 当前血量增加10%

[@attack]
#IF
CHECKHITMONNAME 白野猪
#ACT
m.SDADDHPPER - 10 1 100 1
sendmsg 6 白野猪血量减少10%


百分比检测血量,蓝量

Help > 脚本命令 > 血量控制 >
百分比检测血量,蓝量
检测血量 | 检测蓝量
SDCHECKHPPER | SDCHECKMPPER
参数 | 说明
参数1： | > < =
参数2： | 百分比值
参数3： | 分母，如果该参数省略则默认按照百分比算
脚本例子
[@检查血量百分比30%]
#if
SDCheckHpPer > 30
#act
sendmsg 6 你的血量在30%以上..
#elseactsendmsg 6 你的血量低于30%..

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

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


切割命令

Help > 脚本命令 > 血量控制 >
切割命令
切割命令
SDDelMonHp
参数 | 说明
参数1: | 百分比或切割值
参数2: | 0:以当前HP的百分比 1:以参数1的值切割 2:以最大HP的百分比
参数3: | 0:不判断嘲讽 1:判断嘲讽过的怪才切割
参数4: | 0:默认切割 1:切割角色 2:切割英雄 3:切割怪物
参数5: | 分母基数(<=100等于100), 参数2为0或2时 该参数有效 参数2为1时 填写100即可
参数6: | 是否显示飘血动画 0:关闭 1:开启
脚本例子
[@main]
#if
#act
SDDelMonHp 1 2 0 3 100 1
SendMsg 6 本次只切割怪物1%最大生命值

[@main]
#if
#act
SDDelMonHp 100 1 0 3 100 1
SendMsg 6 本次只切割怪物100生命值

[@main]
#if
#act
SDDelMonHp 1 2 0 3 1000 1
SendMsg 6 本次只切割怪物千分之一生命值


持续掉血

Help > 脚本命令 > 血量控制 >
持续掉血

SDContinuedDecrease

参数1：掉血值
参数2：持续时间 单位秒 (持续时间填0时则清除)
参数3：掉血类型（0=当前血量百分比，1=固定值，2=最大血量百分比）
参数4: 是否属扣血 (0=默认,就是扣血，1=变成加血)

只能对玩家使用，无论是加血还是扣血，只要参数2写0，都会关闭此触发所有效果！
自身例子：
#act
SDContinuedDecrease 10000 20 1 0
;屏幕中间显示文字命令 文字颜色 背景颜色 字体大小 行间隔 发送模式 显示毫秒 内容
;给自己看
SDSendCenterMsg 251 255 12 10 0 5000 你中了埃博拉病毒，每秒掉血10000点，持续20秒！

被攻击者例子：
m.SDContinuedDecrease 10000 20 1 0
;发送到被攻击的人物
m.SDSendCenterMsg 251 255 12 10 0 5000 你中了埃博拉病毒，每秒掉血10000点，持续20秒！
SDSendCenterMsg 251 255 12 10 0 5000 对方已中了埃博拉病毒，每秒掉血10000点，持续20秒！


范围百分比切割

Help > 脚本命令 > 血量控制 >
范围百分比切割

SDDelMonHpEx

参数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% HP
SDDELMONHPEX 10 2 0 0 <$X> <$Y> 1 3

例子2：
#ACT

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


获取人物叠加血条数量

Help > 脚本命令 > 血量控制 >
获取人物叠加血条数量

SDGETLIVES

参数一：变量

参数二：变量

例子

#act
SDGETLIVES n1 n2
sendmsg 6 当前血条叠加数：<$str(n1)>，最大叠加数：<$str(n2)>


一键满血（大血条专用）

Help > 脚本命令 > 血量控制 >
一键满血（大血条专用）

SDSETMAXHP

一键满血(大血条专用)

例子：
[@main]
#act
SDSETMAXHP
sendmsg 6 你已满血！


给人物叠加血条

Help > 脚本命令 > 血量控制 >
给人物叠加血条

SDCHANGELIVES

SDCHANGELIVES

参数一：0=当前叠加生命数量 1=最大叠加生命数量 2=直接设置

参数二：+、-、=

参数三：设置叠加的数量

例子:

[@Login]
#act
SDCHANGELIVES 2 = 20
sendmsg 6 当前人物血量增加了20倍。


检测无限血条

Help > 脚本命令 > 血量控制 >
检测无限血条

SDCheckLives

SDCheckLives
//参数1:比较方式 0:当前叠加生命数量 1:最大叠加生命数量
//参数2:运算符 >、=、<
//参数3:要对比的值

例子：
[@main]
#if
SDCheckLives 1 = 20
#act
sendmsg 6 当前最大叠加生命是20倍

[@main]
#if
SDCheckLives 0 < 20
#act
sendmsg 6 当前最大叠加生命小于20倍


给怪物设置大血条

Help > 脚本命令 > 血量控制 >
给怪物设置大血条

1.启用后如何编辑怪物扩展血条数量？

首先打开指定引擎目录\Mir200\Envir\MonGen.txt

把需要扩展叠加血条数量的怪物用以下语法包括住，如下：

#SD{1001
;#sd{代表开头，1001是怪物血条叠加的数量，假设这个怪物有10血，设置1001就等于：10 +（10*1001）血值，最高只能设置2147483647，也就是#sd{2147483647

;中间就跟MonGen.txt格式那样，正常操作，如下
bh23 100 100 狂暴双抓 150 80 30 0 250
bh23 100 100 飞龙圣兽[福利BOSS] 150 1 30 0 253
bh23 100 100 赤炎金猊[高级BOSS] 150 1 120 0 249
bh24 100 100 狂暴双锤 100 50 30 0 253
bh24 100 100 狂暴双抓 150 80 30 0 250
bh24 100 100 飞龙圣兽[福利BOSS] 150 2 30 0 253
bh24 100 100 赤炎金猊[高级BOSS] 150 2 120 0 249
;中间就跟MonGen.txt格式那样，正常操作，如上
;这样怪物血值就会叠加，根据绘制模式进行显示！

#sd}
;代表结束

2.如何使用MonGenEx扩展血条数量？

#act
sd{ 899
;sd{ 代表开头 空格 血条数量
MonGenEx 3 330 330 白野猪 12 10 0 255
MonGenEx 3 330 330 双头血魔 12 10 0 255
sd}
;结束引用


扩展input输入框

（此功能需要客户端1.71 服务器1.79及以上版本支持）

INPUTTEXT:输入框ID:X:Y:宽度:高度:背景色:边框色:文字颜色:最小长度:最大长度:数据无效时提示对话框内容:提示文字:提示文字颜色

输入框ID: 1-40
背景色：-1为透明，0-255
边框色：-1为无边框， 0-255
最小长度，最大长度，为0表示不判断

INPUTNUM:输入框ID:X:Y:宽度:高度:背景色:边框色:文字颜色:最小值:最大值:数据无效时提示对话框内容:提示文字:提示文字颜色
输入框ID: 1-40
背景色：-1为透明，0-255
边框色：-1为无边框， 0-255
最小值，最大值：同时为0表示不限，否则最小值必须 <= 最大值

以上2个命令：“数据无效时提示对话框内容”为空时，客户端不检查数据有效性。

示范：

[@main]
姓名：<INPUTTEXT:1:0:0:80:15:0:249:255:4:10:姓名必须在4-10位长:输入姓名:160> \
年龄：<INPUTNUM:2:0:2:80:15:0:249:255:1:100:年龄必须输入1-100之间的数字:输入年龄:160> \
性别：<INPUTNUM:3:0:4:80:15:0:249:255:0:1:性别必须输入0或1:男(0)-女(1):160> \
将所有输入框的内容全提交/@全部提交

[@提交部分]
#act
;;;;;;★★★★★★★★★★★★★★★★★★★★★★★★★★这里别忘了对输入的数据有效性判断。。。
SendMsg 5 输入的姓名为 <$SDNPCINPUT(1)>
SendMsg 5 输入的年龄为 <$SDNPCINPUT(2)>
SendMsg 5 输入的性别为 <$SDNPCINPUT(3)>

[@全部提交]
#act
;;;;;;★★★★★★★★★★★★★★★★★★★★★★★★★★这里别忘了对输入的数据有效性判断。。。
SendMsg 5 输入的姓名为 <$SDNPCINPUT(1)>
SendMsg 5 输入的年龄为 <$SDNPCINPUT(2)>
SendMsg 5 输入的性别为 <$SDNPCINPUT(3)>

;——————————————————————————————————————————————-

注： 如果留空要通过检测不想提示的请用空格。

姓名：<INPUTTEXT:1:0:0:80:15:0:249:255:0:0: : :160>\


文本操作内存化

Help > 文本操作类 >
文本操作内存化

关于CPU爆表,玩家感觉爆卡的说明

近日接到用户反馈,在使用神盾插件过程中.由于QM定时器,QF触发,Robot机器人脚本,过程中
文本写入,读取,检测,获取等命令高频率执行.导致读写硬盘数据时占用CPU资源爆表.而CPU一旦爆表，就无法处理M2更多的请求，自然的，游戏中会感觉到明显卡顿。

特此.神盾插件针对脚本操作类增加一套命令进行优化.优化思路:把文本操作类命令改为内存执行.从而降低CPU的压力,就不会再有CPU爆表情况发生了.

使用神盾插件扩展出来的“内存”类脚本命令时,不能手动修改文本内容,修改了也不生效.
此扩展命令建议在”假人脚本中使用”或者定时器,Robot机器人脚本.这种频繁执行的脚本中使用.
再次强调此扩展命令 不能手动修改文本 不能手动修改文本 不能手动修改文本,修改了也不生效,修改了也不生效,修改了也不生效
此扩展内存命令.定期自动保存文本内容..

以下是增加扩展命令

所有参数与原引擎一致.请参考原引擎说明书
SDCheckNameList                      /检查人物名单
SDCHECKTEXTLIST                      /检查字符串是否在指定文件中
SDCheckAccountList                   /检查人物登录帐号.
SDCheckContainsTextList              /检查字符串是否在指定文件中 包含检测的关键字
SDCheckContainsTextListEx            /检查字符串是否在指定文件中 包含检测关键字字符串

SDADDtextList                        /写入字符串到文本
SDADDTextListEx                      /写入字符串到文本,可指定行数
SDADDNAMELIST                        /写入人物名字到文本
SDADDAccountList                     /写入人物帐号到文本

SDDeltextList                        /删除文本中的字符串
SDDelNameList                        /删除文本中的人物名字
SDDelAccountList                     /删除文本中的人物账号

SDGETRANDOMLINETEXT                  /随机取文本字符串到变量
SDGetRandomText                      /随机获取一行字符串到变量 指定行 没有指定行时随机取某一行的字符串.
SDGetListString                      /读取文本文件中的内容到变量中
SDGetStringPos                       /取字符串在列表中的下标
SDClearNameList                      /清除列表内容


判断字符串类型

Help > 文本操作类 >
判断字符串类型
SDCheckCharType
判断字符串类型
参数位置 | 参数说明
参数1 | 判断类型 （0 是否只有 汉字 字母 数字，不包括特殊符号，1是否纯汉字，2是否纯字母, 不区分大小写，3是否纯小写，4是否纯大写，5是否纯数字）
参数2 | 字符串文本
例子
[@main]
#IF
SDCheckCharType 1 判断字符串类型
#SAY
符合纯汉字
#ELSESAY
不符合纯汉字


检测字符串在列表中的行数

Help > 文本操作类 >
检测字符串在列表中的行数

检测字符串在列表中的行数

SDGetStringPosEX

参数1:文件路径
参数2:检测字符(支持变量、支持大小写字母、支持数字)
参数3:N1返回检测的字符所在的行数(N变量不是固定，可以更换其它数字型变量)
参数4:S1返回检测的字符所在的行数(S变量不是固定，可以更换其它字符型变量)
参数5:是否绝对路径(0:相对路径 1:绝对路径)两种模式
参数6:匹配模式(0或空:包含匹配;1:完全匹配)
参数7:方向(0 从上往下数 1 从下往上数)

例子:

[@MAIN]
#IF
SDGetStringPosEX ..\QuestDiary\测试.txt GM一号 N1 S1 0
#ACT
SendMsg 5 字符在文本中的行数:<$STR(N1)>，本行所有内容是:<$STR(S1)>。
#ELSEACT
SendMsg 5 字符不在测试.txt文本中。


读配置项

Help > 配置项 >
读配置项
SDReadConfigFileItem
.\这是当前目录
..\这是上级目录
    ..\..\这是MIR200目录
  ..\..\..\这是版本目录
    ..\..\..\..\这是盘符根目录
注：支持相对路径 ..\..\..\..\ 和 绝对路径 D:\KEY.ini
参数位置 | 参数说明
参数1 | 文件路径
参数2 | 段头
参数3 | 节点名称
参数4 | 填写保存到的变量格式，如:S$配置项内容
路径例子
格式1:.\Envir\基础爆率\白野猪.ini
格式2:C:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini
脚本实例
[@main]
#if
#act
SDReadConfigFileItem ..\QuestDiary\KEY.txt <$UserName> 内容 S$配置项内容
SENDMSG 6 你已经把配置文件KEY.txt中内容取出并保存到了S$配置项内容

[@main]
#if
#act
SDReadConfigFileItem D:\新建文件夹\KEY.txt <$UserName> 内容 S3
SENDMSG 6 你已经把D盘新建文件KEY.txt中内容取出并保存到了S3变量


写配置项

Help > 配置项 >
写配置项
SDWriteConfigFileItem
.\这是当前目录
..\这是上级目录
    ..\..\这是MIR200目录
  ..\..\..\这是版本目录
    ..\..\..\..\这是盘符根目录
注：支持相对路径 ..\..\..\..\ 和 绝对路径 D:\KEY.ini
参数位置 | 参数说明
参数1 | 文件路径
参数2 | 段头
参数3 | 节点名称
参数4 | 写入内容
路径例子
格式1: .\Envir\基础爆率\白野猪.ini
格式2: C:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini
脚本例子
[@main]
#if
#act
例子1:
SDWriteConfigFileItem .\wuqing.txt <$USERNAME> 节点 <$STR(S3)>

例子2:
[@main]
#if
#act
SDWriteConfigFileItem .\wuqing.txt <$USERNAME> 节点
；等于清空该节点的写入内容


删配置项字段

Help > 配置项 >
删配置项字段
SDDelConfigFileItem
.\这是当前目录
..\这是上级目录
    ..\..\这是MIR200目录
  ..\..\..\这是版本目录
    ..\..\..\..\这是盘符根目录
注：支持相对路径 ..\..\..\..\ 和 绝对路径 D:\KEY.ini
参数位置 | 参数说明
参数1 | 文件路径
参数2 | 段头
参数3 | 节点名称
路径例子
格式1:.\Envir\基础爆率\白野猪.ini
格式2: C:\Mirserver1\Mir200 \Envir\基础爆率\白野猪.ini
脚本实例
[@main]
#act
SDDelConfigFileItem 文件路径 段头 节点名称
;这样节点名称这一行就会被删除


删配置项节点

Help > 配置项 >
删配置项节点
SDDelConfigFileSection
.\这是当前目录
..\这是上级目录
    ..\..\这是MIR200目录
  ..\..\..\这是版本目录
    ..\..\..\..\这是盘符根目录
注：支持相对路径 ..\..\..\..\ 和 绝对路径 D:\KEY.ini
参数位置 | 参数说明
参数1 | 文件路径
参数2 | 段头
路径例子
格式1:.\Envir\基础爆率\白野猪.ini
格式2:C:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini
脚本例子
[@main]
#if
#act
SDDelConfigFileSection C:\Mirserver1\Mir200\Envir\基础爆率\白野猪.ini 段头


宝宝切割

Help > 宝宝相关 >
宝宝切割
SDBDelMonHp
请在宝宝物理攻击触发和宝宝魔法攻击触发字段下使用,其他地方使用有可能会导致引擎出错
参数位置 | 参数说明
参数1 | 百分比或切割值
参数2 | 0以当前HP的百分比 1:以参数1的值切割 2:以最大HP的百分比
参数3 | 0:不判断嘲讽 1:判断嘲讽过的怪才切割
参数4 | 0: 默认切割 1:切割角色 2:切割英雄 3:切割怪物
参数5 | 比例分母, 参数2为0或2时 该参数有效
参数6 | 是否播放切割动画(空或0不播放,1播放)
脚本实例
[@SD宝宝物理攻击]
#ACT
SDBDELMONHP 10 1 0 3
SENDMSG 6 本次切割只切割怪物10点HP

[@SD宝宝魔法攻击]
#ACT
SDBDELMONHP 8 0 0 1
SENDMSG 6 本次切割只切割人物当前血量百分之8


修改宝宝属性

Help > 宝宝相关 >
修改宝宝属性
SDChangeSlaveAbility
修改属性是叠加基础属性
参数位置 | 参数说明
参数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=等级, 20=体力恢复,21=行动步伐
参数2 | 数值
参数3 | 宝宝名 ALL代表所有宝宝
脚本实例
[@main]
#ACT
SDChangeSlaveAbility 1 10000 all
SENDMSG 6 你的所有宝宝最大血量叠加10000


宝宝范围切割

Help > 宝宝相关 >
宝宝范围切割
SDBDELMONHPEX
请在[@SD宝宝物理攻击]、[@SD宝宝魔法攻击]里使用,其他地方使用有可能会导致引擎出错
参数位置 | 参数说明
参数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播放)
脚本实例
[@SD宝宝物理攻击]
#ACT
SDBDELMONHPEX 10 2 0 0 <$X> <$Y> 5 3 100 1
SENDMSG 6 切割自身5格坐标范围的怪物 10%最大生命值的伤害

[@SD宝宝物理攻击]
#ACT
SDBDELMONHPEX 10 1 0 0 <$X> <$Y> 5 3 100 1
SENDMSG 6 本次切割只切割怪物10点HP


宝宝专用攻击改变状态

Help > 宝宝相关 >
宝宝专用攻击改变状态
宝宝专用攻击改变状态
SDBMakePosion
请在[@SD宝宝物理攻击]、[@SD宝宝魔法攻击]里使用
参数位置 | 参数说明
参数1 | 状态(0和1是绿毒和红毒 5是麻痹 12冰冻 13蛛网 其他无效)
参数2 | 时间(秒)
参数3 | 威力
脚本实例
[@SD宝宝物理攻击]
#ACT
SDBMakePosion 0 6 20
SENDMSG 6 sendmsg 6 宝宝对目标施毒 持续6秒 伤害20


宝宝升级触发与死亡触发

[@OnSlaveLevel]
#Act
sendmsg 6 您的宝宝<$CURRRTARGETNAME>升级了！

[@OnSlaveDie]
#Act
sendmsg 6 您的宝宝<$CURRRTARGETNAME>死亡了！


Hook物理攻击伤害

Help > hook命令 >
Hook物理攻击伤害

SDHookAttack

此命令只针对物理攻击回调,不支持假人

参数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] 脚本内, [@SDHookAttack] 字段,需要在此字段进行N伤害变量修改方可实现HOOK

常量:
被攻击对象名称,请勿其他地方使用
<$SDCURRRTARGETNAME>

开启例子:

[@Login]
#IF
#ACT
SDHookAttack 1 50 51 52

;1 设置开启回调
;50 攻击对象类型存储在N50变量里
;51 技能ID存储在N51变量里
;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SDHookAttack 0


Hook魔法攻击伤害

Help > hook命令 >
Hook魔法攻击伤害

SDHookMagic

此命令只针对魔法攻击回调,不支持假人

参数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] 脚本内, [@SDHookMagic] 字段,需要在此字段进行N伤害变量修改方可实现HOOK

常量:
被攻击对象名称,请勿其他地方使用
<$SDCURRRTARGETNAME>

开启例子:

[@Login]
#IF
#ACT
SDHookMagic 1 50 51 52

;1 设置开启回调
;50 攻击对象类型存储在N50变量里
;51 技能ID存储在N51变量里
;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SDHookMagic 0


Hook被物理攻击伤害

Help > hook命令 >
Hook被物理攻击伤害

SDHookStruck

此命令只针对人物被物理攻击后回调,不支持假人

参数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] 脚本内, [@SDHookStruck] 字段,需要在此字段进行N伤害变量修改方可实现HOOK

常量:
攻击对象名称,请勿其他地方使用
<$SDCURRRTARGETNAME>

开启例子:

[@Login]
#IF
#ACT
SDHookStruck 1 50 51 52

;1 设置开启回调
;50 攻击对象类型存储在N50变量里
;51 技能ID存储在N51变量里
;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SDHookStruck 0


Hook被魔法攻击伤害

Help > hook命令 >
Hook被魔法攻击伤害

SDHookMagicStruck

此命令只针对人物被魔法攻击后回调,不支持假人

参数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] 脚本内, [@SDHookMagicStruck] 字段,需要在此字段进行N伤害变量修改方可实现HOOK

常量:
攻击对象名称,请勿其他地方使用
<$SDCURRRTARGETNAME>

开启例子:

[@Login]
#IF
#ACT
SDHookMagicStruck 1 50 51 52

;1 设置开启回调
;50 攻击对象类型存储在N50变量里
;51 技能ID存储在N51变量里
;52 攻击伤害存储在N52里，触发的时候修改此变量可以控制伤害

关闭例子:

SDHookMagicStruck 0


叠加可爆物品设置

Help > 可视化爆率 >
叠加可爆物品设置

SDAddNumber

参数1:物品全称

参数2:叠加数量

前提要把物品添加进去,要不然调用此命令无效

如果原先物品可爆数量是5,在这原基础下增加5个数量,用以下方法

例子:

SDAddNumber 屠龙 5

;此物品可爆数量叠加5


物品已爆数量设置

Help > 可视化爆率 >
物品已爆数量设置

SDRESETITEM

参数1:物品全称

参数2:数量

前提要把物品添加进去,要不然调用此命令无效

例子:

SDRESETITEM 屠龙 1


物品可爆数量设置

Help > 可视化爆率 >
物品可爆数量设置

SDChangeNumber

参数1:物品全称

参数2:设置新数值

前提要把物品添加进去,要不然调用此命令无效

例子:

SDCHANGENUMBER 屠龙 5


可视化爆率Ⅰ
可视化爆率Ⅰ

可视化爆率Ⅰ

可视化爆率1
1.物品全称请填写正确 否则无效
2.时长单位为（分）开区时长多久可爆出一件（分） 在线时长多久可爆出一件（分）小退重新计算时间 设置0就是不限制
3.插件可限制最多可爆出几件 设置10 爆出10件再也不会爆出 设置0就是不限制
4.记录已爆数量 每爆出一件就会+1
5.已爆数量会动态保存 关区不会清零 清零请手动点击已爆数量全部置零
6.假人不会爆出有限制条件的物品 宠物爆出与人物同步
7.可视化爆率Ⅰ与可视化爆率Ⅱ是互通的 删除其中一个里面的数据 另一个也会消失
8.进行任何改动 完成修改后 请点击保存列表并重新加载


可视化爆率Ⅱ

Help > 可视化爆率 >
可视化爆率Ⅱ

条件规则的编写说明一

左边只允许填写变量 中间写逻辑符号右边支持变量或者常量数值
逻辑符号(请用字母符号,注意样式别搞错):
>=(等于)
!=(不等于)
>(大于)
>=(大于等于)
<(小于)
<=(小于等于)
或(或，或者，用于多重条件判断)
注意:每一个步骤都要空格,要不然解析可能会不正常,请规范写代码

多条规则匹配判断用,分割 参考上图的条件规则的写法(请不要用拼音逗号,注意符号是否与文档一致)

1、多个指令触发使用英文逗号分隔,和条件规则的分隔是一样的,就不多解释了(部分变量
是不支持加减的,请自行实则)
2、对变量加减法使用方法加减法结果变或负数会自动归0,可灵活设计):
加法:add <$STR(N99)> 1
如去:add <$STR(N99)>10减去:sub <$STR(N99)> 1减去:sub <$STR(N99)>10
3、触发QF指定字段使用方法:
@自定义字段
4、多种混搭组台编写例子:
add <$STR(N99)> 1 , sub <$STR(N98)> 1,@自定义字段
或
add <$STR(N99)> 1,@自定义字段，sub <$STR(N98)>1
执行按照顺序进行,可灵活设计。

如1:
变量 逻辑符号 常量数值

**<$STR(U45)> >= 50**

解析:U45变量 大于等于 50 视为条件满足

如2:
变量 逻辑符号 常量数值 分隔符 变量逻辑符号 常量数值
<$LEVEL> > 100 , <$STR(N99)> = 888
解析:人物等级 大于 100 且 N99变量 等于 888 视为条件满足

如3:
变量 逻辑符号 变量
<$LEVEL> > <$STR(U45)>
解析:人物等级大于 U45变量数值 视为条件满足

如4:
变量 逻辑符号 变量 或者 变量 逻辑符号数值
<$LEVEL> > <$STR(U45)> 或 <$LEVEL> > 64
解析:人物等级大于 U45变量数值 或者 人物等级大于64 视为条件满足

条件规则的编写说明二

M2插件(20200215)更新字符串匹配 如要匹配字符串需要在判断文本或变量前面添加#符号 两者相对应添加# 逻辑判断符号只支持 = 或 !=
例子1:

#<$KILLMONNAME> != #祖玛雕像 , <$LEVEL> > 1998 或 <$LEVEL> > 1999

;击杀怪物名称 不等于 祖玛雕像 且 人物等级 大于 1998 或 人物等级 大于 1999
例子2:

#<$KILLMONNAME> = #祖玛雕像 , <$LEVEL> > 1998 或 <$LEVEL> > 1999

;击杀怪物名称 等于 祖玛雕像 且 人物等级 大于 1998 或 人物等级 大于 1999

可视化爆率Ⅱ功能展示

???????????????????????????????????????


可视化爆率Ⅲ

Help > 可视化爆率 >
可视化爆率Ⅲ

可视化爆率III用于过滤活动怪,填写需要过滤的怪物全称,那这个怪物所爆的装备都不会走条件判断

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


可视化爆率Ⅳ

Help > 可视化爆率 >
可视化爆率Ⅳ

可视化爆率Ⅳ控制每个装备爆出的平均时间

精准控制可爆出数量以及时间

Copyright © 2023. All rights reserved. (To change the copyright info, just edit it in template.)


新爆率扩展

Help > 可视化爆率 >
新爆率扩展

TXT必须用ANSI编码！TXT必须用ANSI编码！

爆率格式1
例如：爆率文件白野猪.txt里面
#CALL [\爆率系统\基础爆率.txt] @爆出
[@爆出]
{
#CHILD 1/1 RANDOM
(1/1 屠龙)
}
爆率格式2
写法参考1:G3变量大于34 且 U3变量大于14 且 U4变量小于U2变量
#CHILD 1/1 RANDOM [G3>34,U3>14,U4<U2]
(
1/1 屠龙
)
爆率格式2
写法参考2:N$随意字符=1 且 U4变量=14
#CHILD 1/1 RANDOM [N$随意字符=1,U4=14]
(
1/1 屠龙
)
爆率格式3
写法参考4:金刚石大于99
#CHILD 1/1 RANDOM [<$GAMEDIAMOND>>99]
(
1/1 屠龙
)
原爆率
#CHILD 1/20 RANDOM
//此爆率代表1/20的概率在下面物品中随机产出一件
(
1/1 1元价值物品
1/1 2元价值物品
1/1 5元价值物品
)


跨区喇叭

Help >
跨区喇叭


跨区喇叭使用方法

Help > 跨区喇叭 >
跨区喇叭使用方法
跨区喇叭使用方法

监听地址填写127.0.0.1为本机可连接
监听地址填写0.0.0.0为其他服务器可连接 不可填写其他IP地址

插件上地址与监听地址保持一致 端口保持一致
可查看喇叭连接状态
设置完毕后 重启M2方可生效


跨区喇叭相关脚本

Help > 跨区喇叭 >
跨区喇叭相关脚本
跨区喇叭相关脚本

;功能: 检测跨服喊话服务器连接是否成功
;格式: SDCrossServeronline
;功能: 发送跨服喊话
;格式: SDSendCrossMsg 消息文字 文字颜色 背景颜色 显示时间(毫秒)

例子:
#IF
SDCrossServeronline
;判断是不是已经连接中转服务器
#act
SDSendCrossMsg 公告:这是一条跨区喇叭{abc|249}>~~~ 70 0 5000
;支持多级颜色,和游戏界面左右侧喇叭公告一个用法
;此命令不宜频繁使用

停止某个玩家接收跨区喇叭信息命令
例子:
#act
SDCloseHorn 1
;这样就不会转发给他接收，防止同屏太多影响