!微信验证码功能因使用外部文本,当文本达到一定体积(1M以上),会严重影响服务器性能,建议优化思路或者使用两步验证功能替换
!请注意,从2021年开始的程序版本,不再支持windows XP、2003及以下的操作系统
!注意2021.0522.03版及之前的版本,NPC变量用在不合适的字段会导致引擎报错问题,请及时更新。
!不要在游戏服务器上安装搜狗输入法,影响服务器的稳定性
=========================================================================================================================
【免责声明协议】
根据《计算机软件保护条例》(2023年最新版本)的相关规定,为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或存储软件等方式使用软件的,在符合法律法规的前提下,可以不经软件著作权人许可,且不向其支付报酬。但请注意,以下使用条款必须严格遵守:
重要提示:除非你已充分阅读、完全理解并接受本协议中的所有条款,否则你无权下载、安装或使用本软件或相关服务。使用本程序即视为你已阅读、理解并同意接受本协议的约束。本协议在你与我司之间产生法律效力,成为对双方均具有约束力的法律文件。我们非常感谢你对本产品的支持,并希望给你带来良好的使用体验。如果你不同意本协议中的任何条款,请立即停止使用并删除本软件。
1.合法用途:本程序仅供在中华人民共和国大陆地区(不含中国香港、澳门特别行政区及台湾地区)法律允许范围内的个人娱乐、研究和学习之用。用户应确保所有使用行为均符合相关法律法规的要求。
2.源码来源与用途:本程序源码来源于公开网络,并已进行必要的修复和优化。本程序仅供个人单机研究、娱乐使用,未设置任何收费项目。用户不得利用本程序进行任何形式的商业活动或非法用途。
3.禁止商业运营:任何单位或个人均不得将本程序用于商业盈利性经营、架设网络服务器或进行其他任何形式的商业活动。如违反此规定,造成的任何后果由用户自行承担,与本程序及我司无关。
4.合法合规使用:未经版权所有人或产品所有人明确授权许可,任何人不得私自利用本程序的任何部分进行运营、开区、销售等行为。用户应确保所有使用行为均合法合规,如因违法使用导致的一切后果,由用户自行承担。
5.内容删除与版权:由于版权、法律法规等原因,我们不保证本程序内容的长期可用性。用户应在下载后24小时内,从电脑、手机等设备上彻底删除本程序及其相关内容。如未能在规定时间内删除,产生的任何风险与责任均与本程序及我司无关。同时,用户应尊重并保护本程序中的知识产权,不得进行任何形式的侵权或盗版行为。
6.侵权处理:如果你认为我们侵犯了你的合法权益,请立即与我们联系。我们将在收到你的通知后72小时内,对涉及侵权的内容进行审查,并采取相应的处理措施,包括但不限于删除侵权内容等。
7.许可地区:本协议的适用地区为中华人民共和国大陆地区(不含中国香港、澳门特别行政区及台湾地区)。对于其他地区的使用,请遵守当地法律法规。
=========================================================================================================================
2021/5/25 全套配套
---------------------------------------------------------------------------
M2
物品ID支持64位,解决物品ID因各种原因出现重复问题!
要保持多区物品ID唯一,须保证同时运行中的游戏区的服务器ID不相同!
服务器ID即!setup.txt中的ServerID,可在启动器设置,支持范围在0~510之间。
引擎必须配置有效的【ServerID登记服务器】相关设置,并连接到登记服务器,否则不允许启动,可在启动器配置!
ServerID登记服务器相关使用说明查看对应目录下的说明文本
!setup.txt中的itemNumber在本次更新后已经废弃。
增加物品ID相关变量:
$ITEMID(n)Json // n是物品ID,返回一个json对象如:{"DateTime":"2022-11-12T22:33:44","ServerID":123,"Sequence":456}
$ITEMID(n)Sequence // 返回物品产生的序列号
$ITEMID(n)ServerID // 返回物品产生的服务器ID
$ITEMID(n)ISO8601 // 返回物品产生的日期时间
$ITEMID(n)UNIXTIME // 返回物品产生的Unix时间戳
修改MagicFire方式1优先针对锁定目标
商铺可以购买、赠送更多数量的物品
优化sqlite3性能
扩展地图参数:SECRET(31|固定角色名|衣服外观|武器外观|衣服外观特效|武器外观特效)
修补套装激活时的光效
英雄会检测十步一杀需要的MP量
修正上版展示品缓存提示错误问题
修正因改为64位物品ID可能导致对话框的物品ID获取错误问题
增加变量<$DLGITEMID>,获取对话框的物品ID // 由于P/M...等整数变量为32位,对于GetDlgItemID不足以赋予物品ID!可改用为字符串型的S变量,或者直接使用<$DLGITEMID>
修正@PickupItem可能会出现掉落怪物记录错误问题
PetPickupItemRange设置不同数值会刷新视觉,所以不要频繁切换
完善NPC参数的预分析逻辑(类似<COLOR=...<$变量>>)
增加NPC命令:MAIN_FUNC_BTN_TIPS 序号 鼠标提示 // 设置主界面部件的鼠标tips,不要频繁使用,配套客户端更新
允许毒、符、魔血石类物品持久为0时不消失
修正SetAbility 45,10点以下为减速度,10点以上为加速度
NPC命令TakeOff增加取下触发(注意防止死循环)
改名时如果检测在线角色名占用,会触发[@chgname_fail_name_used_0],<$PARAM(0)>等于"[英雄] "是英雄触发,为空是人物触发 // 注:[@chgname_fail_name_used]是通过DBS检测
去掉SetItemDesc的当“描述”为空时将删除对应物品ID的描述功能,防止重复设置一个物品属性造成描述不下发刷新问题!
NPC执行者支持带“.”号,例如:<$JSON(J_UUID.CharName)V>.goto @xxx // <$JSON(J_UUID.CharName)V>是带“.”号的执行者,未支持之前用法:Mov S_Temp <$JSON(J_UUID.CharName)V>,再<$STR(S_Temp)>.goto @xxx
JSON的SortByName、SortByValue支持反序排列,参考下面说明
JSON命令补全子命令GetCountByPath、修正子命令InitArrayFromCsvFile
优化英雄换符、药粉的逻辑
QF增加复活成功的触发[@OnRevive],其中: // 只要复活成功即可触发
$PARAM(3) // 角色名
$PARAM(4) // 地图名
$PARAM(5) // X坐标
$PARAM(6) // Y坐标
$PARAM(8) // 1/60(1是人物,60是英雄)
QF增加复活成功且消化复活装备持久的触发[@OnItemDamageRevive],其中: // 复活成功且消耗了装备持久才触发
$PARAM(0) // 装备位置
$PARAM(1) // 装备名称
$PARAM(2) // looks
$PARAM(3) // 角色名
$PARAM(4) // 地图名
$PARAM(5) // X坐标
$PARAM(6) // Y坐标
$PARAM(7) // 装备ID
$PARAM(8) // 1/60(1是人物,60是英雄)
$PARAM(9) // 剩余持久(0表示装备失效或销毁-根据装备无持久是否销毁设置去判定)
修改变量:$REVIVALDURATION -> $REVIVALCD // 允许复活的倒计时
修改变量:$BATTLEMODEDURATION -> $BATTLEMODECD // 允许小退的倒计时
增加变量:$TELEPORTCD // 允许传送的倒计时,-1表示不能传送,0可以立即传送,其他正数表示n秒后可以传送
增加NPC命令:ChangeRevivalTime +/-/= 毫秒 // 修改个人每次复活间隔时间(非下次复活时间),可以使用$REVIVALCD查看可复活等待秒数
增加NPC命令:ChangeTeleportTime +/-/= 毫秒 // 修改个人每次传送间隔时间(非下次传送时间),可以使用$TELEPORTCD查看可传送等待秒数,禁止频繁使用
增加变量:$AbilMakeStoneRate // 个人石化能力几率
增加变量:$AbilMakeStoneTime // 个人石化能力时间
增加NPC命令:ChangeAbilMakeStoneRate +/-/= 几率(1~255) // 修改个人石化能力几率,数字越大石化几率“越小”
增加NPC命令:ChangeAbilMakeStoneTime +/-/= 秒数(1~59) // 修改个人石化能力时间,数字越大石化时间“越长”
英雄支持变量:$H.AbilMakeStoneRate、$H.AbilMakeStoneTime、$H.REVIVALCD
重要变更:去掉物品持久为0是否消失的总开关,改为在物品表设置,RareItem包含256则物品持久为0时属性失效但不会消失,可以用下面mysql查询语句设置:
UPDATE item SET RareItem = RareItem | 256 WHERE (StdMode IN (5,6,7,10,11,12,13,51,52,53,54,62,63,64)) OR ((StdMode >= 15) AND (StdMode <= 30)); // 掩码包含256,所有“装备”持久0不消失
UPDATE item SET RareItem = RareItem & (~256) WHERE (StdMode IN (5,6,7,10,11,12,13,51,52,53,54,62,63,64)) OR ((StdMode >= 15) AND (StdMode <= 30)); // 掩码不包含256,所有“物品”持久0时会消失
重要变更:人物、英雄的符/毒不再需要佩戴到身上,放在背包即可;也可以选择手动佩戴或者在英雄设置面板修改为完全不需要 // 必须配套更新
身上的符、毒(设置为不消失)持久为0时会自动取下
优化道士英雄近战逻辑
NPC命令GetEquipProps增加以下常规变量,允许用于非装备类物品:
<$STR(S_EQUIP[位置]_ID)> // 物品ID
<$STR(S_EQUIP[位置]_NAME)> // 物品名称
<$STR(M_EQUIP[位置]_SHAPE)> // 物品Shape
<$STR(M_EQUIP[位置]_STDMODE)> // 物品StdMode
<$STR(M_EQUIP[位置]_ANICOUNT)> // 物品AniCount
<$STR(M_EQUIP[位置]_LOOKS)> // 物品Looks
<$STR(M_EQUIP[位置]_COUNT)> // 物品数量(非重叠物品为1)
<$STR(M_EQUIP[位置]_OVERLAP_TYPE)> // 重叠物品类型(0非重叠,1或2是重叠物品)
扩展NPC命令:GetEquipProps 位置 @自定义成功跳转字段[可选] // 如果参数2为空则在成功获取属性后跳转到默认的[@OnGetEquipProps]
注意必须配合[@OnGetEquipProps]或[@自定义成功跳转字段]来读取属性,因为物品无效时不会触发字段、调用的EQUIP系列变量可能是上次的!
非装备类物品也可以触发此字段,但有效属性仅限于上面提及的几个通用属性!该字段下的<$PARAM(n)>变量参考之前说明。
NPC说话内容支持物品框,格式: // 仅AC支持此功能
<ITEMBOX=0~19,prguse,1241,1,0,0,0,8,11,22,100 LABEL=@ItemBox0 HINT=请放上装备>,其中:
0~19 // 是物品框序号,范围0~19
prguse // wil文件名
1241 // wil图片索引
1,0,0 // 图片数,是否循环,是否透明
0,8 // 偏移X,偏移Y
55,66 // 绝对X,绝对Y(不参与自动换行计算)
100 // 帧间隔(毫秒)
@ItemBox0 // 放上或取下物品将触发[@ItemBox0]字段(仅限于鼠标操作,直接关闭窗口物品返回背包并不会触发)
注意:本功能需要配套更新AC游戏网关,防止部分操作被过滤!
增加变量:<$BoxItemID0~19> // 物品框0~19的物品ID,当取下物品框物品时,对应物品框的物品ID为0
增加变量:<$BoxItemName0~19> // 物品框0~19的物品名,当取下物品框物品时,对应物品框的物品名为空
增加变量:<$BoxItemCount0~19> // 物品框0~19的物品数量,当取下物品框物品时,对应物品框的物品数量为0
增加变量:<$STR(S_RemovedBoxItemID0~19)> // 移除物品框0~19的物品ID,即时变量,只能在LABEL=@ItemBox0~19里使用
增加变量:<$STR(S_RemovedBoxItemName0~19)> // 移除物品框0~19的物品名,同上
增加变量:<$STR(M_RemovedBoxItemCount0~19)> // 移除物品框0~19的物品数量,同上
以上变量可以不通过GetEquipProps而直接使用
扩展NPC命令:GetEquipProps、UpgradeItem、UpgradeItemEx支持位置20000~20019,可用于操作对应物品框0~19的物品
增加NPC命令:RetBoxItem 0~19 // 将物品框物品返回背包
例:
#SAY
ITEMBOX:<ITEMBOX=0,prguse,1241,1,0,0,0,8,055,0,100 LABEL=@itembox0 HINT=请放上装备>
ITEMBOX:<ITEMBOX=1,prguse,1241,1,0,0,0,8,111,0,100 LABEL=@itembox1 HINT=请放上回收物品>\
[@itembox0]
#if
; 是否已放上物品
CompVal <$BoxItemID0> = 0
#act
sendmsg 7 移除的物品ID:<$STR(S_RemovedBoxItemID0)>,物品名:<$STR(S_RemovedBoxItemName0)>,数量:<$STR(M_RemovedBoxItemCount0)>
#elseact
GetEquipProps 20000
[@itembox1]
#if
; 是否已放上物品
CompVal <$BoxItemID1> = 0
#act
sendmsg 7 移除的物品ID:<$STR(S_RemovedBoxItemID1)>,物品名:<$STR(S_RemovedBoxItemName1)>,数量:<$STR(M_RemovedBoxItemCount1)>
#elseact
; 取走物品
Take <$BoxItemID1> 1
[@OnGetEquipProps]
#act
; $PARAM(3)是位置
Calc "<$PARAM(3)> - 20000" M_物品框序列号
sendmsg 7 物品框<$STR(M_物品框序列号)>的物品名:<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>,物品ID:<$STR(S_EQUIP[<$PARAM(3)>]_ID)>
防止SetItemDesc命令对无效物品添加描述
修正Hash子命令Clear完全清理所有数据问题
修正关闭服务器时部分机器不及时保存Hash问题
修正所有NPC收税的价格bug
优化游戏数据日志的记录
启动时增加读取数据表出错的提示
DBS
64位物品ID适配
优化sqlite3性能
游戏网关
64位物品ID适配
适配物品框功能
适配人物的符/毒不再需要佩戴到身上的更新,必须配套使用
登录器
配套更新
客户端
64位物品ID适配
购买商店重叠物品默认为最大数量
提高游戏声音的响应速度
商铺可以购买、赠送更多数量的物品
<PIC=...>附带有效的LABEL才可以点击
配套支持MAIN_FUNC_BTN_TIPS命令
血石持久为0时显示红色
OK框跟随窗口右下角
物品Tips增加拆分快捷键提示
修正个别情况下拆分重叠物品假象问题
快捷物品框可以合并、拆分重叠物品
修正从背包拆分物品的窗口焦点问题
自动换上有持久的符、毒
人物符/毒不再需要佩戴到身上;当不使用智能换毒时会优先使用背包前面位置的药粉来释放技能
增加英雄装备、英雄技能界面的自定义快捷键设置
引擎设置为免毒时客户端会自动换毒
其他
数据工具增加64位物品ID的转换支持,转换前注意填写正确的区号,提供变更ID文件目录
数据工具弃用物品ID合并变更功能,已经不需要
增加ServerID登记服务器,必要程序,查看更新包【ServerID登记服务器】里的相关说明!
控制台配置向导会自动配置可用的服务器ID
控制台配置向导增加读取数据表出错的提示
2021/5/24 全套配套
---------------------------------------------------------------------------
M2
加强稳定性防止出错,优化性能
摊位名称不过滤空格
修正摊位名称过滤提示不正确问题
!修正01版行会成员退出未更新在线列表导致出错问题,请放弃20210524.01版本
灵气相关NPC命令支持42亿操作
增加简单的爆率规则检测,错误会出警告提示
修正近期优化导致的魔血石瞬间用完问题
完善随机瞬移逻辑
完善DropItemMap命令的逻辑
增加出生地图点、应急地图点、红名地图点无效的警告提示
更严格的物品使用逻辑,防止出错(需要配套客户端更新)
客户端或使用NPC命令切换时装时触发QF的[@SwitchFashion],$PARAM(0)=0隐藏/1外显,$PARAM(1)=0人物/1英雄
合击也支持技能触发
改进普通下属超远飞回主人身边逻辑
新增二进制位方式的攻击过滤掩码变量:$ATTACKFILTERMASK0~31 // <$ATTACKFILTERMASK8> 将获取掩码第8位的值(0/1)
ChangeAttackFilterMask命令支持二进制写法: ChangeAttackFilterMask 位(0~31) 开关(0/1) // ChangeAttackFilterMask 8 1 等效于 ChangeAttackFilterMask = 256,低0~7位暂时保留,不要使用
!QMapEvent的[@OnMapChanging]改为[@LeaveMap],例:SendMsg 7 "是否英雄:<$PARAM(0)>,原地图:<$PARAM(1)>,即将进入地图:<$PARAM(2)>" // 支持下线和切图触发,<$PARAM(2)>空时表示下线,非空表示切图
!QMapEvent的[@OnMapChanged ]改为[@EnterMap],例:SendMsg 7 "是否英雄:<$PARAM(0)>,原地图:<$PARAM(1)>,已经进入地图:<$PARAM(2)>" // 支持上线和切图触发,<$PARAM(1)>空时表示上线,非空表示切图
增加NPC检测命令:CheckApprFilter 位置(0~7) 开关(隐藏0/显示1) // 检测某个外观是否开启显示,位置信息参考ChangeApprFilters
增加地图参数:MonAttackFilterMaskMethod(1~3),双方都带掩码情况下,1怪物不能攻击掩码匹配的目标,2怪物只能攻击掩码匹配的目标(默认),3怪物不能攻击带有攻击掩码的目标;如果设置了有效参数,将优先于!setup.txt的monAttackFilterMaskMethod设置
增加地图参数:HumAttackFilterMaskMethod(1~3|1~3),双方都带攻击过滤掩码情况下,攻击者是人物,以下9种方式分别攻击有效: // 注:人物包含下属
1|1掩码不匹配或目标是怪物 1|2掩码不匹配或目标是人物 1|3掩码不匹配生物
2|1掩码匹配并且目标是人物 2|2掩码匹配并且目标是怪物 2|3掩码匹配的生物(默认) // 跟第1行情况相反
3|1目标是怪物(忽略掩码) 3|2目标是人物(忽略掩码) 3|3所有攻击无效
增加简单的伤害统计功能:
怪物数据表增加“统计ID”字段:StatId,StatId在1~10000之间是个人伤害统计,10001~20000是行会伤害统计,设置了StatID的怪物会自动统计伤害,如果某个统计24小时内不活跃,会自动重置
统计相关的变量,每秒输出伤害:<$STAT(统计ID).DPS>,输出伤害总量:<$STAT(统计ID).TOTAL>
增加NPC命令:NewStat 统计ID // 创建一个自定的统计信息
增加NPC命令:Stat 统计ID 数字 // 针对指定的“统计ID”进行手动统计
增加NPC命令:ResetStat 统计ID all(可选) // 重置统计信息,参数2为空重置执行者所属的统计信息,参数2为“all”则重置该统计ID下所有的统计信息
增加NPC命令:ExportStat 统计ID 导出数量 导出模式(STR/JSON) 排序(0=DPS升序/1=DPS降序/2=总伤害升序/3=总伤害降序) // 导出模式为STR将导出统计信息到<$CALCRESULT>中,格式:数量,角色名1|DPS1|伤害值1,角色名2|DPS2|伤害值2...,模式为JSON时将导出到Key为“STAT_统计ID”的JSON中:<$JSON(STAT_统计ID)JSON>
!废弃,见下面无线嵌套变量更新:带圆括号的动态变量支持内嵌固定变量写法,例如:<$STAT($TARINFO_STATID).DPS>,其中$TARINFO_STATID是固定变量,不支持类似$STR(M1)的动态变量
攻击触发增加伤害值变量:$ATTINFO_DAMAGE,被攻击者StatID:$TARINFO_STATID
修正上个版本[@UnderAttack]失效问题
加强英雄对目标的锁定
十步一杀界面增加距离调节
QM增加加载人物数据触发字段[@LoadData]和保存数据触发字段[@SaveData],不支持英雄,单纯用于数据存于操作,最好别用于其他用途,也不要在这两个字段写一些繁重的脚本
添加HASH系列NPC命令,参考附件:HASH系列NPC命令.txt
更新合区工具支持合并Hash保存的数据
[@StdModeFuncXX]中新增<$PARAM(1)>物品名,<$PARAM(2)>AniCount,<$PARAM(2)>Reserved
修改Reserved=255的为独占类型,使用后不消失不减少持久,注意如果现有用到Reserved=255的物品请改到其他数字
Reserved=99时执行的是[@StdModeFunc+AniCount],一直如此
本次更新(07版)支持大背包(仅限AC版),需要使用【数据工具】转换数据,全套配套更新
!修正清理背包过期物品可能导致错误问题
!修正全身宝石等级的技能威力重复叠加问题
修正上版NOTALLOWUSEITEMS物品带圆括号失效问题
优化队列性能
防止在[@OnInlayingGemstone]字段中删除背包物品导致镶嵌流程被扰乱、破坏
!宝箱使用权重算法,物品几率设置为0则为展示品不可获取,物品最大几率支持到亿亿,物品几率设置得越大越容易获得,禁止设置为全0!!!
修正自从增加攻击统计后的被攻击触发变量不正确问题
激活套装时只提示当前穿戴的装备套装信息
修正MapQuest触发引起当前NPC对话框点击失效问题
机器人脚本文件如果未变动,重新加载不重置计时
修正上版更新导致换毒、符也触发套装特效问题
防止自由加点计算溢出
修正GM列表操作可能出错问题
引擎去掉无用的商铺赠送开关(在游戏网关限制)
修正人形怪名带"\"读取不到配置文件问题
英雄死亡更容易触发[@HeroDie]
交易重叠物品数量显示不同步问题
人物死亡掉落记录物品(物品表的RareItem包含8)将触发QF的[@DropItem],注:死亡掉落物品$PARAM(0)=0,手动丢掉物品$PARAM(0)=1 // 禁止实时HardDisk操作
人形怪不消耗装备持久,但复活装备除外
修正爆率文件的检测条件不支持纯文字问题
支持PlaySound Stop写法(原写法:PlaySound 0 0 Stop)
<$ITEM(物品ID)>支持展示穿戴的装备
修改%d,%s,%x,%y,%n,%m...等字符串替换定义必须小写
添加英雄变量$H.ITEM(物品ID),用法如同$ITEM(物品ID)
MapMove、GroupMapTing、GuildMapMove、RecallGroupMembers的第4参数,GroupMapMove的第7参数,数值大于等于2并且非99时,可以指定瞬移的随机范围
修正对存在多个重叠物品的交易,取消交易时返回多出一个重叠物品的假象
增加获取背包物品数量变量<$ITEMCOUNT(物品名)>和<$H.ITEMCOUNT(物品名)>
怪物爆物限制增加时间单位选择:天、小时、分钟,默认天,清零时可选择是否输出日志
增加设置参数:MaxAvailableEquipSetsCount // 最大生效的套装数。默认为最大穿戴装备数量,不大于100
优化动态变量的获取
修正一处访问无效内存bug
stdmode=7/25类物品归类为装备,GetEquipProps可以获取到属性,注意装备属性也将变得有效!
UpgradeItem等NPC命令将刷新个人属性
修正首次攻城部分沙城相关NPC命令可能出错的问题
!setup增加野蛮冲撞间隔时间参数:RushRushTime=3(默认3秒,至多120秒),游戏网关、客户端必须配套!
!setup增加血魂一击(法)威力比率:ssPowerRate_116=100(默认100),血魂一击(道)威力比率:ssPowerRate_117=100(默认100),注:技能威力通常可以通过Skill表调节
删除技能时也会清理客户端残存技能效果
英雄/人物丢掉或掉落物品之前(物品表的RareItem包含8)将触发QF的[@DroppingItem] // 禁止实时HardDisk操作
$PARAM(0)等于1000 // 死亡掉落背包物品
$PARAM(0)等于2000 // 手动丢弃背包物品
$PARAM(0)在0~16之间 // 死亡掉落身上装备的位置
$PARAM(9)是否装备(0/1)
其他$PARAM(XX)参数同[@DropItem]
例:
[@DroppingItem] // 如果不需要此功能删除掉QF的[@DroppingItem]字段即可
#if
IsAdmin
#act
; 阻止物品丢弃或掉落,默认允许掉落
Approve 0
NPC商店买/卖商品之前(物品表的RareItem包含32)将触发QF的[@DealingGoods]
$PARAM(0)=0/1 // 0购买物品,1出售物品
$PARAM(8) // 价格
$PARAM(9) // NPC商店名称
其他$PARAM(XX)参数同[@DropItem]
例:
[@DealingGoods] // 如果不需要此功能删除掉QF的[@DealingGoods]字段即可
#if
CompVal <$PARAM(1)> = 开天 str
#act
; 阻止操作
Approve 0
仓库存/取物品之前(物品表的RareItem包含64)将触发QF的[@StorageItem]
$PARAM(0)=0/1 // 0存储物品,1取回物品
其他$PARAM(XX)参数同[@DropItem]
例:
[@StorageItem] // 如果不需要此功能删除掉QF的[@StorageItem]字段即可
#if
IsAdmin
#act
; 阻止操作
Approve 0
增加获取地图怪物数量的NPC命令:GetMapMonCnt 地图名 怪物名1|怪物名2|怪物名3... 返回怪物数量的变量1|变量2|变量3...,例:
GetMapMonCnt d605 黑色恶蛆|蜈蚣|邪恶钳虫 M_黑色恶蛆|M_蜈蚣|M_邪恶钳虫
SendMsg 6 黑色恶蛆:<$STR(M_黑色恶蛆)>,蜈蚣:<$STR(M_蜈蚣)>,邪恶钳虫:<$STR(M_邪恶钳虫)>
增加变更商人NPC名称的NPC命令:ChangeMerchantName 地图名 X Y 新名称 S_返回原名称(可选),例:
ChangeMerchantName 3 335 335 新NPC名称\NPC描述 S_原名
增加变更商人NPC存活时间的NPC命令:ChangeMerchantTTL 地图名 X Y 存活时间(秒),例:
ChangeMerchantTTL 3 335 335 30 // 30秒后消失,消失后使用“@reloadnpc all”命令会重新刷出
扩展NPC命令:MobNpc第9参数为存活时间,到期将自动消失,默认0不自动消失
扩展Merchant.txt配置格式:第13参数为存活时间,到期将自动消失,默认0不自动消失
扩展SetAbility的ID到599,其中0~499为个人ID,500~599为全局ID,不支持特效,可以配合Hash命令、[@OnStart]、[@OnStop]存档!
扩展SetAbility cleanup 1,1表示清理“全局”ID;SetAbility cleanup 0(可不写) 则表示清理所有“个人”ID
扩展SetAbility ID 0 -1,秒数为-1时表示暂停或恢复倒计时,暂停将触发QF的[@SuspendAbility_ID],恢复将触发QF的[@ResumeAbility_ID],
$PARAM(0)=0玩家触发,1英雄触发(执行脚本主体仍然是英雄主人),使用SetAbility调整时间或数值也会从暂停中恢复运行!
增加获取SetAbility的存活时间变量:$ABILTTL0~599,$H.ABILTTL0~599,值为0表示不存在,小于0表示暂停中的剩余时间,大于0表示运行中的剩余时间 // 注:SetAbility可用作高效的倒计时触发系统
增加客户端解析变量:<ACD=ID>,用于解析SetAbility的剩余时间,例:
#say
; 其中的45是SetAbility的ID,需配套更新!
攻速有效剩余时间:<ACD=45{ax=66,ay=0}>
#act
SendMsg 6 攻速有效剩余时间:<ACD=45{ax=66,ay=0}>
增加预备合击的NPC命令:PrepareUniteHit,需英雄在线并且有合击技能,预备后如果有目标会立即释放合击
支持高效的无限嵌套变量解析,同时“带圆括号的动态变量支持内嵌固定变量写法”此条更新废弃!!!,例:
#act
; 注意Mov的参数2是字符串,不是变量
Mov S_变量1 S_变量2
Mov S_变量2 变量值1
Mov S6 S5
Mov S5 S4
Mov S4 变量值2
SendMsg 6 "【<$STR(<$STR(S_变量1)>)>】中间【<$STR(<$STR(<$STR(S6)>)>)>】结尾"
去掉GM调级命令对[@PlayLevelUp]、[@HeroLevelUp]的触发
优化安全区识别,优化封包系统性能
防止角色下线收摊可能出错问题
CheckItemW支持使用位置检测是否穿戴了装备,例:CheckItemW 0~16
优化劈星斩、雷霆一击打击感
调整人物运行逻辑,防止出现下线后死亡情况
添加获取普通技能等级变量:<$MAGICLEVEL(1~255)>,括号内是技能ID,返回-1表示技能未学习或其他错误
添加获取地图怪物数量变量:<$MapMonCnt(地图名.怪物名)>,地图无效返回-1,怪物无效或不参与数量统计返回-2,
注意只有怪物表的StatMask包含1,才会统计该怪物的数量,需要才加,例:
[@KillPlayMonXXX]
#act
SendMsg 7 <$MapMonCnt(<$CurrentMap>.<$Param(0)>)>
增加算术运算NPC命令:Calc "算术表达式" 返回结果的变量(默认是整数/后缀+1是四舍五入整数/后缀+2是浮点数),
支持:+加、-减、*乘、/除、%取模,()将优先计算,例:
#act
; 如果表达式错误将会在引擎提示,并返回空内容,下面运算的浮点数结果是:2899.82636363636
Calc "(0.3 + (0.4 + 88 * 77) / 1.5 / 3.3 + 11.6 % 1000) * 2.1" S_结果
SendMsg 7 默认整数:<$STR(S_结果)>,四舍五入整数:<$STR(S_结果1)>,浮点数:<$STR(S_结果2)>
扩展DelayCall命令,支持5个上下文参数传输,防止参数被覆盖
错误用例:
[@重复执行]
#act
Mov S_暂存变量 xxxxx
DelayCall 1000 @delayCall
[@delayCall]
#act
; “S_暂存变量”此时很可能已被其他用到“S_暂存变量”的操作所覆盖(特别是对于重复执行的字段),造成错误结果
MapMove <$STR(S_暂存变量)>
扩展后的正确用例:
; 随后<$STR(S_CONTEXT[0~4])>可以取得参数的内容,此组变量用于传输参数内容,此变量为固定变量,仅可修改[0-4]获取内容
DelayCall 1000 @delayCall <$STR(S_暂存参数0)> 参数1 参数2 参数3 参数4 // 参数0~4为可选项,可以是任意变量
[@delayCall]
#act
; <$STR(S_CONTEXT[0])>此时等于“<$STR(S_暂存参数0)>”,<$STR(S_CONTEXT[1])>等于“参数1”...
MapMove <$STR(S_CONTEXT[0])>
优化行会成员列表
修正在14版后GM命令ClearMon清理指定怪物失效问题
刺杀时非刺杀位的伤害等同于普攻
StatusRate命令支持小数倍数写法
增加英雄的怒气值变量$H.UnityEnergy
首次自动扩展monster.db出错问题(之前版本的引擎,多次运行也可以完成自动扩展)
修正部分技能不进行攻击触发问题(比如疾光电影)
大幅度减少生物对消息的响应时间,提高游戏体验
飞行类魔法伤害生效时间更准确
增加NPC脚本的循环支持,#for和#~for,配对使用,循环内部支持完整的#if,#act,#elseact...流程,
注意此次更新需要重新上传远程脚本数据,远程脚本数据和之前的版本数据也不兼容!
配套NPC变量<$LoopCursor>,为当前循环游标变量,获取效率比自定义的游标变量稍高
配套NPC执行命令:BreakLoop,用于中断当前的循环层,并非整个字段中断;整个字段中断仍然使用Break
支持多层次的循环嵌套(见下发自定义技能示例)
格式:
#for (游标变量 = 初始值表达式, 游标变量 < 检测值, 游标变量 + 步进值) // 循环开始和声明
; 中间是完整的#if/#act/#elseact原脚本流程
#if
; ...
#act
; ..
#elseact
; ...
#~for // 循环结束标识
; 初始声明:即【游标变量 = 初始值表达式】部分,“游标变量”的初始化,“初始值表达式”支持单个整数或变量,或者一个运算表达式,如:游标变量 = M_SPLIT_CNT - 1(注意写法,中间留有空格)
; 条件声明:即【游标变量 < 检测值】部分,循环条件限制,“游标变量”小于“检测值”会继续循环,否则将终止循环,“检测值”可以是只读的整数或整数变量,比较符号支持:<小于、>大于、=等于、!不等于、?大于等于
; 步进声明:即【游标变量 + 步进值】部分,游标步进方法,“步进值”支持整数或整数变量,运算符号支持:+加、-减、*乘、/除、%取模、=等于
; “游标变量”建议实用D0~99,M0~99这种非自由定义的整数变量,效率较好
例:
[@loopex]
; 这里没有写#if true,不需要,程序会自动识别
#act
; 分解出阿拉伯数字,剩余部分是中文汉字
RegExSplitCapture 一1二2三3四4五5六6七7八8九 [0-9]+
SendMsg 7 剩余字的符串数量:<$STR(M_SPLIT_CNT)>
SendMsg 7 阿拉伯数字的数量:<$STR(M_MATCHED_CNT)>
; 循环游标D99从0初始化,至M_SPLIT_CNT - 1取S_SPLIT_STRS[n]的值,每次步进1
#for (D99 = 0, D99 < M_SPLIT_CNT, D99 + 1)
#if
; 此次更新同时会自动补全true,可以忽略
; true
#act
SendMsg 5 S_SPLIT_STRS步进1:<$STR(S_SPLIT_STRS[<$STR(D99)>]>
#~for
; 循环游标D99从0初始化,至M_MATCHED_CNT - 1取S_SPLIT_STRS[n]的值,每次步进1
#for (D99 = 0, D99 < M_MATCHED_CNT, D99 + 1)
#if
#act
SendMsg 6 S_MATCHED_STRS步进1:<$STR(S_MATCHED_STRS[<$STR(D99)>]>
#~for
; 倒退循环,初始D99 = M_SPLIT_CNT - 1,D99 大于等于 0,每次步退1
#for (D99 = M_SPLIT_CNT - 1, D99 ? 0, D99 - 1)
#if
#act
; 这里使用<$LoopCursor>变量,效率稍高些,等同于<$STR(D99)>
SendMsg 7 S_SPLIT_STRS步退1:<$STR(S_SPLIT_STRS[<$LoopCursor>]>
#if
; 游标到6后中断掉循环,会跳出循环继续执行(#~for之后),如果使用Break,则后续不再执行
CompVal <$LoopCursor> = 6
#act
BreakLoop
#~for
; 上个循坏之外继续执行
SendMsg 7 上个循坏之外继续执行...
; 自己定义跳出循环变量
Mov M99 1
; 先定义一个无限循环(不建议,除非你熟悉脚本的写作)
#for (D99 = 0, D99 < 1, D99 - 0)
; 运算M99
#if
#act
Inc M99 10
; 循环10万次后中断循环
#if
Equal M99 100000
#act
SendMsg 7 循环中断于<$STR(M99)>...
BreakLoop
#~for
#if
#act
SendMsg 7 循环结束<$STR(M99)>...
增加NPC脚本的区间选择支持,#case和#~case,配对使用,内部支持的#if,#act,#elseact...流程,仅单层
格式和示例:
[@TestCase]
#act
; 产生一个0~99之间的随机数字
SetRandomNO 100
Mov M99 <$RANDOMNO>
#case (M99) // case开始,括号里的声明仅一个整数变量(Mxx,Dxx...等或此类自定义变量)
#0: // 选择器常量声明,“#”开头,后面是单个数字,以“:”结束
#if // 一个普通的#if/#act/#elseact流程
#act
SendMsg 5 命中:<$STR(M99)>
#1~9: // 选择器常量声明,“#”开头,后面可以是数字区间,以“:”结束,下同
#if
#act
SendMsg 5 <$STR(M99)>在1~9之间
#10~89:
#if
#act
SendMsg 5 <$STR(M99)>在10~99之间
#86,88,91~93: // 以“,”分开多个数字区间的写法
#if
#act
SendMsg 5 <$STR(M99)>在86,88,91~93之间
#def: // 默认选择,如果上面的数字区间均未命中,则默认选择此流程;可以不写,但是都未命中则不执行任何流程
#if
#act
SendMsg 5 <$STR(M99)>其他数字,默认执行此选择
#~case // case结束标识
注意:不允许在#case里执行#for循环,但是允许在#for里包含#case
注意:数字区间禁止重叠,如果重叠加载NPC脚本时会提示,同时重叠的数字区间将失效!
攻击触发里增加目标坐标变量:<$TARINFO_CX>,<$TARINFO_CY>
技能触发[@MagSelfFuncXX]是,<$PARAM(1)>是目标X坐标,<$PARAM(2)>是目标Y坐标
增加释放魔法NPC命令:MagicFire 1技能ID 2等级(0~15) 3显示技能效果(0/1) 4方式(-2链式 -1溅射 0自己,1当前目标,自定义坐标X) 5自定义坐标Y[可选] 6技能延迟(毫秒)[可选] 7自定义坐标强显效果(0/1)
注:支持普通魔法技能和合击技能,不包含战士技能,不支持技能触发,不支持攻击触发,无举手动作,需配套客户端更新!
当参数4为-1时,参数5为溅射技能半径,建议使用T.MagicFire方式
当参数4为-2时,参数5为链式技能半径,建议使用T.MagicFire方式
当使用自定义坐标时,X和Y支持批量方式,如:11|22|33 44|55|56
当自定义坐标有效且参数7不为0是,将不检测目标有效性,强制显示技能效果
例1:
[@attack]
#act
SetRandomNO 60 65
#if
CompVal <$ATTINFO_ISHERO> = 1
#act
h.MagicFire <$RANDOMNO> 5 1 1
#elseact
MagicFire 13 11 1 1
MagicFire <$RANDOMNO> 15 1 1
例2:
[@MagSelfFunc11]
#act
; 暂存技能ID
Mov M97 11
goto @CustomMagic
[@MagSelfFunc13]
#act
; 暂存技能ID
Mov M97 13
goto @CustomMagic
[@CustomMagic]
#act
; 存放XY坐标组,使用“|”间隔
Mov S98 ""
Mov S99 ""
; 多层循环,M0/M1分别从-2至+2,构成一个5x5的攻击范围方格
#for (M0 = -2, M0 < 3, M0 + 1)
#for (M1 = -2, M1 < 3, M1 + 1)
#if(1)
; 过滤掉中间的重合点
CompVal <$STR(M0)> ! 0
CompVal <$STR(M1)> ! 0
#act
; 将计算得出24个坐标放置在S98和S99
Calc "<$PARAM(1)>+0<$STR(M0)>" M98
Calc "<$PARAM(2)>+0<$STR(M1)>" M99
Inc S98 <$STR(M98)>|
Inc S99 <$STR(M99)>|
#~for
#~for
#if
CompVal <$PARAM(0)> = 0
#act
MagicFire <$STR(M97)> <$MAGICLEVEL(<$STR(M97)>)> 1 <$STR(S98)> <$STR(S99)> 500 1
#elseact
h.MagicFire <$STR(M97)> <$MAGICLEVEL(<$STR(M97)>)> 1 <$STR(S98)> <$STR(S99)> 450 1
例3:
[@Attack]
#act
Mov M99 <$ATTINFO_SKILLID>
#case (M99)
#1, 5, 13, 104, 105, 107~110:
#if
CompVal <$ATTINFO_ISHERO> = 1
#act
; 以怪物为中心发出溅射技能
T.MagicFire <$ATTINFO_SKILLID> <$H.MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -1 3
; 以怪物为主逐次发出链式技能
; T.MagicFire <$ATTINFO_SKILLID> <$H.MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -2 4
#elseact
T.MagicFire <$ATTINFO_SKILLID> <$MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -1 3
; T.MagicFire <$ATTINFO_SKILLID> <$MAGICLEVEL(<$ATTINFO_SKILLID>)> 1 -2 4
#~case
增加正则匹配检测NPC命令:RegExMatch 源字符 匹配表达式 // S1是需要检测的字符串,可以到https://www.jyshare.com/front-end/854/验证
例:
; "1[34578]\d{9}" // 手机号码
; "\$[0-9A-Fa-f]+" // NPC说话内容里的16进制颜色
; 检测查源字符中是否包含有URL
#if
; 检测到内容里有网址
RegExMatch 源字符 "[a-zA-Z]+:\/\/"
#act
增加正则替换字符NPC命令:RegExReplace S1 查找表达式 替换字符 替换次数(默认1次) // 使用正则表达式方式,在S1中按“查找表达式”查找,找到后替换为“替换字符”,结果还是在S1中 // 相关资料可参考https://www.runoob.com/regexp/regexp-tutorial.html
见下面例子
增加正则分解捕获NPC命令:RegExSplitCapture 源字符 查找表达式
匹配的字符串数量在:<$STR(M_MATCHED_CNT)>
匹配的字符串保存在:<$STR(S_MATCHED_STRS[n]> // n是数字,在0至“<$STR(M_MATCHED_CNT)> - 1”之间
分解后剩余的字符串数量在:<$STR(M_SPLIT_CNT)> // “分解后剩余的字符串”指不包含匹配字符串的剩余部分,比如源字符是:左中右,按表达式“中”分解后,剩余字符串是:左和右(数量2),匹配字符串是:中(数量1)
分解后剩余的字符串保存在:<$STR(S_SPLIT_STRS[n]> // n是数字,在0至“<$STR(M_SPLIT_CNT)> - 1”之间
例:
#act
; <$STR(M_MATCHED_CNT)>将等于2
; <$STR(S_MATCHED_STRS[0])>将等于:123
; <$STR(S_MATCHED_STRS[1])>将等于:456
; <$STR(M_SPLIT_CNT)>将等于3
; <$STR(S_SPLIT_STRS[0])>将等于:左
; <$STR(S_SPLIT_STRS[1])>将等于:中
; <$STR(S_SPLIT_STRS[2])>将等于:右
RegExSplitCapture 左123中456右 [0-9]+
item数据表中的物品,RareItem字段包含128才可以设置物品描述,在出产时将触发QF的[@ProduceItem],其中:
不要大量设置物品的RareItem包含128,防止系统压力过大!
$PARAM(0) // 来源
$PARAM(1) // 物品ID
$PARAM(2) // 时间
$PARAM(3) // 物品名
$PARAM(4) // 地图
$PARAM(5) // 出产者
$PARAM(6) // 物主
$PARAM(7) // 是否装备类物品(0/1)
$PARAM(8) // 物品的looks
增加设置物品描述NPC命令:SetItemDesc 物品ID 描述 0前缀/1中间/2后缀 // 不支持重叠物品!当“描述”为空时将删除对应物品ID的描述;需要客户端配套,仅AC客户端支持该功能!
增加设置物品属性NPC命令:SetEquipProp 物品ID 属性类型(1~31) 属性值 过期秒数(可选,默认-1永久,大于0为过期秒数) @过期触发(可选) // 类型对应的属性参考鉴定属性,过期触发QF的[@过期触发]
例:
; QM
[@OnStart]
#act
; 服务器启动时,加载物品描述数据并设置后台自动保存
; 注意“H_ItemPreDesc”(前缀)、“H_ItemMidDesc”(中间)、“H_ItemSufDesc”(后缀)为系统保留标识,请勿占用
; 注意引擎开启后,不要去读写下列数据文件,防止文件占用冲突导致存取失败
Hash H_ItemPreDesc Load ..\ItemData\ItemPreDesc.csv
Hash H_ItemPreDesc BGSave ..\ItemData\ItemPreDesc.csv
Hash H_ItemMidDesc Load ..\ItemData\ItemMidDesc.csv
Hash H_ItemMidDesc BGSave ..\ItemData\ItemMidDesc.csv
Hash H_ItemSufDesc Load ..\ItemData\ItemSufDesc.csv
Hash H_ItemSufDesc BGSave ..\ItemData\ItemSufDesc.csv
; 服务器启动时,加载装备属性数据并设置后台自动保存
; 注意“H_ItemProp_1~31”为系统保留标识,请勿占用
; 注意引擎开启后,不要去读写下列数据文件,防止文件占用冲突导致存取失败
#for (M_cur = 1, M_cur < 32, M_cur + 1)
#if
#act
; <$STR(M_cur)>等同于<$LoopCursor>
Hash H_ItemProp_<$STR(M_cur)> Load ..\ItemData\ItemProp_<$STR(M_cur)>.csv
Hash H_ItemProp_<$LoopCursor> BGSave ..\ItemData\ItemProp_<$LoopCursor>.csv
#~for
; 脚本示例
[@ProduceItem]
#act
; 装备名称下加几个星星
SetItemDesc <$PARAM(1)> "<u~|I=754><u~|I=754><u~|I=754><u~|I=754><u~|I=754><u~|I=754>" 0
; 设置来源
; 注意物品的描述文字里不要带逗号“,”,消耗品不建议添加物品描述
; <字符串|c=clRed>,“字符串”是红色,没有在尖括号内的字符为普通白色
; <u~magic5|I=0 N=8 X=70 Y=90 W=60 H=140 F=160>,调用magic5.wzl索引位置0的图片(magic5不写默认为ui1),可选项:N=帧数,X=偏移X,Y=偏移Y,W=指定宽度,H=指定高度,F=帧间隔(默认125毫秒,N>1有效)
; 类似上面的图片,可以手动编辑一个静态表,物品名做键,值则是对应的图片数据,在服务器启动时实用Hash加载,之后在脚本中根据名字来快速取得应用数据
; FormatStr "<u~magic5|I=0 N=8 X=70 Y=90 W=60 H=140 F=160>\来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\产者:<%s|c=$E9A000>\<物主:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:%s|c=clLime>" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
FormatStr "来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\产者:<%s|c=$E9A000>\<物主:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:%s|c=clLime>" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>
SetItemDesc <$PARAM(1)> <$CALCRESULT> 2
#if
; 判断是否是装备类
CompVal <$PARAM(7)> ! 1
#act
break
#if
#act
; 设置装备攻击、魔法、道术都+1万,且为不同的过期时间
SetEquipProp <$PARAM(1)> 1 10000 10 @属性过期_AC
SetEquipProp <$PARAM(1)> 2 10000 15 @属性过期_MC
SetEquipProp <$PARAM(1)> 3 10000 20 @属性过期_SC
; 设置属性描述
; 每种属性的倒计时格式:<T~装备ID|P=1~31>,其中:T~装备ID,P=是装备属性类型,仅用于物品描述中
FormatStr "%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s\%-13s <剩余|c=clLime>%s" "攻击 10000" "<T~<$PARAM(1)>|P=1 c=clLime>" "魔法 10000" "<T~<$PARAM(1)>|P=2 c=clLime>" "道术 10000" "<T~<$PARAM(1)>|P=3 c=clLime>\"
; 设置此物品在中间位置的属性描述
SetItemDesc <$PARAM(1)> <$CALCRESULT> 1
; QF
[@属性过期_AC]
#act
; 先获取物品属性描述到S_tmp
Mov S_tmp <$HASH(H_ItemMidDesc)<$PARAM(1)>>
; 然后清理属性
SetEquipProp <$PARAM(1)> 1 ""
; 去掉对应的属性描述 // 比如去掉:“攻击 12345 <剩余|c=clLime><T~54321>|P=1 c=clLime>\”
RegExReplace S_tmp "攻击 [0-9]+.*?\\" ""
; 更新修改后的属性描述
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
[@属性过期_MC]
#act
Mov S_tmp <$HASH(H_ItemSufDesc)<$PARAM(1)>>
SetEquipProp <$PARAM(1)> 2 ""
RegExReplace S_tmp "魔法 [0-9]+.*?\\" ""
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
[@属性过期_SC]
#act
Mov S_tmp <$HASH(H_ItemSufDesc)<$PARAM(1)>>
SetEquipProp <$PARAM(1)> 3 ""
; 去掉前两个汉字包含:攻击|魔法|道术...的属性描述
RegExReplace S_tmp "(攻击|魔法|道术) [0-9]+.*?\\" ""
SetItemDesc <$PARAM(1)> <$STR(S_tmp)> 1
优化Hash容器的存盘时间
优化人物读档、物品批量下发等
修正脚本中带有#case导致其他字段下的命令加载不全问题!
大幅度提高远程脚本上传、下载性能
大幅度优化Json、CheckJson命令的性能,Json命令现在较全面,使用方式也有较大变动,参考下面的说明!
Calc命令使用传统的四舍五入
服饰、武器的外观、翅膀特效、装备发光 支持到6.5万,全套配套更新!
OpenBox命令的第1参数为有效宝箱名称会打开宝箱,第2参数非空可以自动转宝箱,第3参数非空可以在转完宝箱自动获取物品
防止宝箱物品权重为0时仍然有很小几率获得问题
修正上版下属攻击不触发问题
修正上版镖车被攻击不反馈问题(实际有效)
修正[@SetAbility_xx]识别英雄错误问题
修正商铺购买重叠物品触发数量为1问题
人物的下属会自动赋予攻击触发
优化NPC触发参数传输
优化NPC命令参数
DBS
修正启动失败时关闭错误
启动会提示最大物品ID
游戏网关
对引擎的ConvertMagic命令提供支持,防止转换技能后释放技能卡帧
减少内存占用,优化性能
适配服饰、武器外观的扩展
登录器
防止snappy32.dll被误报并优化(这是google开源的压缩算法库)
登录器不再列出超出屏幕范围的分辨率
客户端
更严格的物品使用逻辑(需要配套引擎更新)
修正十步一杀会导致他人重新追击上次飞走目标的问题
去掉英雄连续锁定功能(已经没有必要,因为服务器端已能稳定锁定目标)
挂机时英雄自动回收功能可用,见内挂保护标签页
天地结晶的经验条偶尔出界问题
修正自更新大背包后快捷物品栏不保存状态问题
防止切换简装导致武器的临时加速参数丢失
补全装备套装属性的显示
<PIC=...>增加帧播放间隔时间设置,见下方的:PIC=功能扩展2
NPC对话、聊天栏、任务栏、跑马灯、自定按钮标题,支持SetAbility的倒计时变量:<ACD=ID>
修正掉线一段时间后游戏无声问题
优化劈星斩、雷霆一击打击感
输入框支持键盘组合键:Ctrl+[Back/Delete/Left/Right]
重构声音系统,略微调大合击声音
修正编辑框光标定位问题
修正快捷键控件文字居中问题
支持自定义物品附加描述,配套引擎更新
物品描述的图片支持更多选项
大幅度提升Json的性能
服饰、武器的外观、翅膀特效、装备发光 支持到6.5万,全套配套更新!
首饰内观支持特效(stditems.xml)
其他
优化性能
优化微端服务器性能,增加简单命令行参数可指定参数文件
修正合区工具未改名的文件没有复制到主区问题,佣兵角色有极小几率合并失败问题,主区合并文本不存在时未将副区文件合并过去问题
修正合区工具对合并文本列表只能合并一个文件的问题
优化微端服务器、登录器配置服务器
修改控制台程序服务器外部IP控件的Tips
合区工具支持基于Hash命令保存的物品ID数据文件
合区工具日志搜索改用简单实用的表达式方式
合区工具调整UI
控制台清理支持csv、ini、json等扩展名
2021/5/23 全套配套
---------------------------------------------------------------------------
M2
完善下属传送回主人身边的位置获取
完善TakeW后的外观刷新和属性
商铺购物货币不足时触发数量不正确问题
命令ClickNPC可以点击摆摊中的角色名称
根据英雄技能开关,赋予英雄分身的使用技能
优化NPC点击流程
防止重载NPC出错
封刷NPC标签漏洞(不包含QC)!注意使用任何说话的“@xxx命令”后,$PARAM会被清理!
增加NPC标签过滤列表,在列表信息-其他功能列表-文本字符过滤(不包含QC)
修正CHECKCONTAINSSTR、CHECKCONTAINSTEXT第1参数为空时返回True问题
修正上个版本关闭引擎异常导致ini不自动保存问题
修改MoveToCell没有第三参数也可以执行,近距离NPC也会触发点击
完善SetAbility 38(隐身)
!setup增加普通下属是否跟随英雄锁定非人目标开关:SlaveLockTargetMode=0,默认0关闭,不跟随英雄锁定
时装支持普通鉴定
支持范围写法:MovR M1 3 5,SetRandomNO 5 11
改善战士英雄被怪包围时的战斗逻辑
H.Kick报错问题
面板人数计数可能显示负数问题
去掉释放副本时,删除人形怪下属的提示信息
佣兵契约信息增加背包、仓库物品查询
NPC命令MapMove不带坐标时真随机移动
释放雷霆剑法可能出错问题
修正穿装备可能出错问题
英雄死亡记录日志
修正增加经验溢出问题
人形怪支持全套装属性,自身属性计算修改为在DB基础上根据装备、等级等进行叠加
部分怪物多次重刷后怕火问题
修正NPC命令获取宝石的名称和属性数值未强制刷新问题
解散行会的GM命令现在可以强制执行
修正[@PickupItem]无法触发GetEquipProps(位置10000)、UpgradeDlgItem等命令问题
防止设定英雄升级经验最大值溢出
防止CheckRangePlayerCount、CheckRangeMonCountEx命令参数错误内存报错
防止部分NPC执行类命令因参数错误而中断后续命令的执行
完善inc、div、mod、percent等NPC命令,防止除0错误
单个物品情况下,NPC命令:Give第6参数、GiveEx第5参数,GM命令:make的第4参数;SendMail每个物品的第3个“&”号后;填写上数字可以强制赋予装备ID,注意不要人为制造出重复ID物品(复制品)!
完善145、146蛇王怪物,“深渊毒蛇王”被攻击会召唤“深渊毒蛇王1”,被麻痹会随机飞,数据表中DC是近攻攻击力,MC是远攻攻击力:
深渊毒蛇王1 145 59 233 55 0 99 11000 0 55 66 77 88 55 66 111 222 0 0 15 15 700 3 0 1500 10000 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
深渊毒蛇王 146 59 233 55 0 99 11000 0 55 66 77 88 55 66 111 222 0 0 15 15 700 3 0 1500 10000 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
可以交易多个同样的满堆叠物品
NPC命令INI_SORT_READ_SECTION_VALUES支持对键按整数方式进行排序
修正NPC命令UpgradeItem可能会导致装备被绑定的问题
NPC命令UpgradeItem、UpgradeItemEx支持位置10000(表示对当前非空的DlgItemID物品进行操作)
去掉[@GetButchItem]触发,增加挖取物品对[@PickupItem]的触发,其中$PARAM(0)=0非背包掉落,1背包掉落,2挖取
增加NPC命令:AddShowItem 背包/身上某物品ID或者留空 // 留空表示使用当前的DlgItemID,作用:添加/刷新某物品ID展示物品,之后可以实时使用$ITEM(物品ID)来展示物品,比如可用于装备属性变更后展示新属性的物品);注意:单独使用$ITEM(XX)只会在首次使用该物品ID时添加展示物品,不会强制刷新
鉴定装备成功触发QF的[@EvalEquipSucceed],可临时使用GetEquipProps、UpgradeDlgItem(位置10000)等命令,注意用法,防止死循环!
!修正14、15版G变量Inc操作重复计算问题,请弃用14、15版!
权重掉落配置增加无效物品提示,同时会忽略错误的物品,防止出现不爆物品的情况
修正完善NPC命令ConvertSkill的逻辑,防止出错!
EnableCharacter命令增加操作结果于QF的[@EnableCharacterResult],示例见:EnableCharacterResult示例.txt
增加NPC检测命令:CopyMapExists 副本地图 // 检测副本是否存在
扩展Goto命令:goto @xxx 1 "" 参数4 参数5 参数6 参数7 参数8 参数9 // 参数4~9非空时,传输参数4~9内容到队员(包括自己)的$PARAM(4~9),参数2的用法请查阅之前更新内容
挖物品的日志放到拾取分类,同时记录被挖怪物名
技能设置面板增加全局魔法躲避调节,鼠标移至控件查看说明(配套客户端更新)
押镖中不能执行改名操作
!修正执行MapQuest脚本可能导致程序出错问题,完善组队处理逻辑
完善DelayGoto逻辑防止出错
地图配置信息中带空格的空行不再提示为无效门点
ISATTACKALLYGUILD、ISDEFENSEALLYGUILD、ISDEFENSEGUILD支持使用参数1(行会名)检测
储存可堆叠到仓库不再改变物品ID
仓库取回一个完整的重叠物品后,不再自动堆叠背包物品
英雄、主人交换物品增加包满提示和物品回归处理(配套网关、客户端更新)
修正17~19版取下附带技能的装备时未删除掉技能问题,用到此功能请及时更新至最新版本
加强过图、瞬移逻辑,防止死循环和出错,加强稳定性
修正DropItemMap命令可能报错问题
增加NPC命令:ChangeAttackFilterMask +/-/= 数字,修改攻击过滤掩码,可结合SetBit、UnsetBit等二进制操作命令使用
增加变量:$ATTACKFILTERMASK,显示当前攻击过滤掩码
扩展怪物DB的AttackFilterMask字段,将某个怪物此字段设置大于255的值(255及以下数值保留),比如设置:256(二进制),常规情况下玩家对此怪物攻击无效,只有使用ChangeAttackFilterMask=256命令设置了等位值才能有效攻击。
增加开关:monAttackFilterMaskMethod=0,默认0不开启,怪物攻击不参与掩码计算,1怪物不攻击掩码匹配的目标,2怪物只攻击掩码匹配的目标,3怪物不攻击带有攻击掩码的目标
修正NPC命令InsertLine多出1空行问题
修正NPC触发标签不存在导致已打开的NPC对话框点击无效问题
修正召唤巨魔无限制召唤问题,英雄支持召唤巨魔技能
修正镖车被劫不小退再次押镖,没有镖车问题(脚本不严谨造成)
人形怪物配置文件名(MonUseItems目录)也支持使用“-”号代替“\”号
死亡不再可以使用传送戒指
默认过滤字符增加+/-/=三个字符
他人丢掉的物品不再支持批量拾取
满的聚灵珠会带闪耀效果(配套客户端更新)
!setup.txt去掉无效参数ItemOwnershipHints,增加参数:PetPickItemDropFromBag=0 // 下属是否自动拾取从背包丢掉的物品,默认不拾取
!setup.txt增加参数CommitMurderMakeWeaponUnluckRate=20,杀人武器增加诅咒几率,默认20(百分比)
支持英雄用的$H.ABILITIES0~500变量
扩展[@MagSelfFuncXX],[@MagTagFuncXX],[@SetAbility_XX],[@ResetAbility_XX]支持英雄,如果$PARAM(0)=0表示触发的是玩家,1表示触发的是英雄(执行脚本主体仍然是英雄主人)
英雄支持使用StdMode=31的非药品类物品(配套客户端更新),[@StdModeFuncXX]中如果$PARAM(0)=0表示使用物品的是玩家,1表示是英雄(执行脚本主体仍然是英雄主人)
主菜单【物品数据库和爆率】同时会重新加载手动修改的套装列表设置
每间隔45分钟会自动保存全局变量
摊位名称现在通过GuildRankNameFilter.txt中的字符检测过滤
扩展QueryValue命令,增加第7参数为点击【取消】按钮时执行的NPC标签(配套客户端更新)
扩展RefItemShape命令,参数2为-1时忽略更改,第3参数(数字)可以设置装备的光效,-1时忽略
重叠物品(overlap=1)减轻负重,重量=重叠数量*单物品重量/10,修改为:重量==重叠数量*单物品重量/50
十步一杀调节面板增加麻痹高等级人物几率控制,并适当减少最大麻痹时间
英雄在安全区附近打架回城后,不再自动锁定刚刚的目标
宝箱物品几率最大支持1000万并优化算法,加载配置时增加错误物品的提示,[@OpenTreasureChest]触发增加<$PARAM(4)>:物品ID(如果有多个物品,指向最后一个物品的ID;给重叠物品不会有物品ID)
扩展NPC命令:PlayEffect的X/Y坐标有效并且第10参数为1时,会以背景方式播放效果(配套客户端更新),例:
PlayEffect Prguse2/333/333 110 15 80 3 Wav\powerup.wav 0 "" 0 1
增加NPC命令:StartGuildWar 行会1 行会2 时间(分钟) // 开启行会战
增加NPC命令:ChangeApprFilters 位置1(0~7)=显示(0/1),位置2(0~7)=显示(0/1)... // 外观过滤,位置0=时装,1=衣服,2=武器,3头发/斗笠,结果存库(MySQL版本需要配套更新DBS)
增加NPC命令:MoveBagItem 物品名或物品ID 数量 // 玩家执行则将物品移动到英雄背包,英雄执行(H.MoveBagItem)则将物品移动到玩家背包(重叠物品被认为是一整个物品)
#if
CheckHeroOnline
#act
MoveBagItem 随机传送石 2 // 主人背包物品移动到英雄背包
H.MoveBagItem 随机传送石 2 // 英雄背包物品移动到主人背包
扩展怪物爆率配置文件写法,支持调用QMapEvent脚本,例:
1/1 金条|22,祝福油|33,力量戒指|44,麻痹戒指|55,复活戒指|66 1 #CALL @爆出条件检测 @爆出物品执行标签
[@爆出条件检测]
#if
CheckGameGold < 10
#act
; 执行APPROVE 0,即是检测不通过,不会爆出物品;注意默认的APPROVE结果为允许!
APPROVE 0
[@爆出物品执行标签]
; <$PARAM(1)>物品名,$PARAM(2)>Looks,<$PARAM(3)>怪物名,<$PARAM(4)>地图名,<$PARAM(5)>X坐标,<$PARAM(6)>Y坐标
#act
GAMEGOLD - 10
优化释放技能性能
修正英雄锁定出错问题
DBS
修正英雄排行榜等级最高只能255问题
登录器/客户端
登录器配置推送完善,减少更新超时时间,防止异常弹窗
微端支持多端同步,微端对于相同的图片素材不再重复请求
修正批量拾取时检测包满、负重的逻辑
佣兵契约信息增加背包、仓库物品的查询
登录时一路按住回车键客户端闪退问题
释放野蛮期间立即移动导致卡位回弹问题
英雄经验值较高时经验条不显示问题
1.76版客户端也支持自定义NPC对话框背景图
补全145、146蛇王怪物效果(配套引擎更新)
添加更多的同类可堆叠交易物品时不再自动堆叠(配套引擎更新)
修正退回重叠类交易物品消失的假象
时装+魔法值错误显示为体力值问题
内挂技能面板增加英雄连续锁定功能开关(配套引擎更新)
拾取极品开关切换即时刷新物品
英雄、主人交换物品增加包满提示和物品回归处理(配套网关、引擎更新)
储存重叠物品不再给拆分
扩展QueryValue第7参数为点击【取消】按钮时执行的NPC标签(配套引擎更新)
宝箱优化(配套引擎更新)
!解决战士合计可能出现卡位拉回假象
PlayEffect的X/Y坐标有效并且第10参数为1时,会以背景方式播放效果(配套客户端更新)
MainWidgetCfg文件增加部件的字体颜色定义,NormalColor常态字体颜色,HoverColor鼠标经过颜色,PressColor按压颜色,支持clXXXXX、#nnnnn格式、0~255的256位颜色表
登录网关
细分防爆破策略,更严格;如遇到被爆破情况,最好将参数调整为严格些
游戏网关
英雄、主人交换物品增加包满提示和物品回归处理(配套引擎、客户端更新)
2021/5/22 全套配套
---------------------------------------------------------------------------
M2
修正挖东西可能出错问题
有护身属性也显示伤害值
SetAbility的禁止跑步现在有效
优化动作包的下发延迟,提高游戏体验
提高网关下发性能,通讯结构优化,M2/游戏网关需要配套!
衣服、武器外观支持到255,引擎、游戏网关、客户端必须配套!
@DeleteHeroOK、@CreateingHero字段下$PARAM(0)是英雄名,删除英雄时可以结合“EnableCharacter $PARAM(0) 0”命令使用
扩展SetAbility的ID支持到500;增加特殊ID:400最大HP、401最大MP、402防御、403魔防、404攻击、405魔法、406道术、407暴伤 // 例:SetAbility 404 10000 10 附加攻击+10000到期!,其他空余ID可以用作计时器触发各种脚本
修正十步一杀有可能导致引擎崩溃问题
防止称号变更触发造成死循环
修改MobFireBurn命令只能在当前地图使用
修改THROUGHHUM修改穿人模式后会同步到客户端
多线路服务器诱惑怪物计数问题
金币日志记录剩余数量
鉴定属性增加31类型:合计伤害减少
下属叛变不限于49天的限制
批量挖东西问题
补全使用随机消失时得效果
修正服务器关闭时可能执行代码异常问题
增加宝石系统(合击、连击版本),见:宝石系统说明.txt
注意:此版需要使用数据工具对已经扩展到大仓库版本的Mir.DB进行扩展,以支持宝石镶嵌数据(mysql版本不需要扩展),
更新程序后,需要删除引擎下所有的商店缓存数据,不兼容!
扩展[@PickupItem]触发,$PARAM(9)是否装备类(0~1),可临时使用GetEquipProps、UpgradeDlgItem(位置10000)等命令
ChangeCharName 第二参数为1,则第1参数不取自@@InputStringXX的内容,可以自由搭配变量
浏览别人摊位时,增加可能是黑摊的提示
人形怪过滤掉护身属性(人形怪无限蓝,不要给带护身戒指)
老分身术分身不放技能问题
禁止交易时使用物品等动作
带人形怪版本,重新加载怪物数据库导致批量挖出东西问题
!setup增加衣服、20/21类项链、24类手镯的AC、MAC极品设置参数
DressACAddRate: 30; // 衣服AC的属性几率
DressACAddValueRate: 15; // 衣服AC的点数几率
DressACAddValueMaxLimit: 6; // 衣服AC的最高点数
DressMACAddRate: 30; // MAC
DressMACAddValueRate: 15;
DressMACAddValueMaxLimit: 6;
Necklace202124ACAddRate: 60; // 20/21类项链、24类手镯AC的属性几率
Necklace202124ACAddValueRate: 30; // 20/21类项链、24类手镯AC的点数几率
Necklace202124ACAddValueMaxLimit: 6; // 20/21类项链、24类手镯AC的最高点数
Necklace202124MACAddRate: 60; // MAC
Necklace202124MACAddValueRate: 30;
Necklace202124MACAddValueMaxLimit: 6;
DBS
制作佣兵时过滤掉标记为禁用或删除的英雄
增加多线路回城路由检测,防止死亡后上线黑屏
游戏网关
适配衣服、武器外观支持到255的修改,必须配套使用!
支持宝石镶嵌数据物品,兼容以前数据,注意配套更新!
登录器
增加DNS缓存,加速解析速度
客户端
完善人、怪的简装功能
修正大退网络没有正确关闭问题
优化挂机时的缓存管理,防止多开白屏
提示列表粘贴不生效问题
野蛮冲撞的间隔时间计算冲突问题
优化延迟,减少撞人、撞怪的回弹
修正使用物品情况下穿装备可能导致装备内观混乱的假象
补全使用随机消失时得效果
查看他人宝石信息完善,需要配套引擎更新
2021/5/22 全套配套,第6版起防攻击效果好,建议更换
---------------------------------------------------------------------------
M2
修正上个版本引擎有可能导致卡角色问题
严格管理地图角色坐标,防止不同步导致出错
修正噬魂沼泽、火龙气焰不计算套装技能威力问题
优化日志写入效率
完善内功信息和客户端的同步,客户端需要配套更新!
不要在脚本中#DEFINE $(XXXXX) 这种命名方式的常量,会引起冲突导致出错,建议命名方式:DEF_XXXXX
修正改名提示在线问题,修正改名导致幽灵角色问题
改名如果新名字的角色在线,也会触发@chgname_fail_name_used
修正启用战斗小退有可能导致出错的bug
DataTable_HeroDB.db支持中文路径
防止被封包攻击导致无响应
修正完善IOCP下发动态缓存逻辑
PlayEffect预增加参数,客户端需要配套!
装备类物品的种族、体型伤害支持在db填写生效,
需要再次使用新的HeroDBConvertor和DataTable_HeroDB.db转换HeroDB以支持新字段,
具体说明查看:DataTable_HeroDB字段说明.txt
Sabukw.txt配置不随刷新而变更保存
修正02版重新加载怪物数据库会导致怪物特殊技能混乱问题
修正怪物权重随机掉落、ReadRandomStr权重计算模式,少计算1个随机点的问题
修正SetAbility 31仓库存取同步问题,补全取回禁用
修正SetAbility 46点不了NPC问题
增加SetAbility 47也将不能购买摆摊物品
带护身戒指也会执行攻击触发
重新加载参数设置不对QuestParams操作!
浑水摸鱼模式不屏蔽怪物名字颜色
挂机时只有被玩家或者玩家的随从攻击才会收英雄或小退,需要配套更新客户端!
地图参数:NOTALLOWUSEITEMS 允许物品带圆括号
解释NPC变量时<COLOR=XXX>不列入计数
时装护身属性等属性等同衣服的设置,不受是否外显的影响
英雄可以通用死亡之眼、冰霜群雨、十步一杀
英雄锁定目标时,下属也攻击同目标
修改并刷新monster表后,重新刷出的怪物属性也随之变更生效
原有功能补充说明:SENDMSG NN 文字 FF BB 30 @本NPC触发 // 30秒后执行[@本NPC触发],注意次时间内NPC不能消失或释放
扩展NPC命令:ClientFeatures 1 开始或停止(0/1) 条件(all/地图/空) // 客户全开放挂机功能前提下,开始或停止客户端所有角色挂机,all=所有在线角色,地图=地图上的角色,空=当前执行角色
增加属性获取变量:
获取英雄忠诚度变量:$H.LOYALTY
是否有鉴定基础属性:M_EQUIP[n]_HAS_EVAL_BASE_PROPS // =0没有,>0有
是否有鉴定神秘属性:M_EQUIP[n]_HAS_EVAL_MYST_PROPS // =0没有,>0有
地图禁用的技能对英雄也有效
野蛮冲撞封锁移动特性英雄有效
NPC命令CompVal现在支持负数,扩展第四参数:int/str/tm,指定比较类型,防止混乱,int=数字,str=字符串,tm=日期
修正诱惑的怪物切图后可能造成假象问题
修正保存沙城配置有可能出错问题
修正上个版本切图神秘人未刷新问题
防止读取sqlite数据表db占用冲突
修正挖矿默认设置出错问题
离线登录,如果之前英雄也在线,补发英雄状态
注意点:物品表的RareItem细分:1=怪物掉落通知 2=拾取触发 4=商铺购买通知 8=人物丢弃/死亡掉落触发 16=队伍拾取通知 32=NPC商店买/卖商品触发 64=仓库存/取物品触发,要开启多项,将前面的值相加即可
修正怪物切图问题
检测攻击目标优化
英雄、假人增加禁魔检测和特殊技能的距离检测
基于06版的稳固
引擎启用允许网关连接的IP列表!RunAddr.txt,修改后在主界面重新加载->允许连接的网关IP列表即可
控制台程序更新,支持配置允许网关连接的IP列表
修正网络底层一处被攻击会造成宕机的漏洞
修正设置GM说话前缀问题
修正NPC命令CheckItemAddValue缺参数报错
修正副本释放出错的严重错误!
修正召唤英雄有时英雄状态栏看不到问题
增加关闭服务器时下发通知消息
NPC脚本错误提示内容
如果DB设置了神圣,不再显示武器的强度,但如果武器极品属性带了强度,客户端不会显示,实际有效
增加NPC命令:ChangeEvalPropAddRate +/-/= 数值(0~65535) // 鉴定普通属性数值附加百分比,存库,DBS、客户端需配套!
支持H.GetEquipProps
条件爆率对限制爆出物品的扣除问题
下属飞主人身边算法调整
下属违规攻击别人,主人会灰名
违规攻击假人也会变灰名
假人善恶攻击模式问题
腰带、靴子极品点数可以设置为0
赤狐掉血不刷新问题
最后一次复活的僵尸有可能隐身问题
重新加载所有NPC菜单恢复包含:MapQuest、QMapEvent、QChatMission
提高CompVal第四参数为str时的优先级
假人回城后如果安全区的守护点被占用不再来回走动
扩展NPC命令:INSAFEZONE X Y,检测角色当前地图的X、Y点是否属于安全区
增加假人功能设置掩码参数:DummyOptionMask=1假人被打回击,3假人回击并锁定目标,默认0不回击
释放唯我独尊技能及时解除石化状态
允许[雷击]状态下释放魔法盾、道力盾、护体神盾
修正上个版本引擎武器强度没有发送给客户端问题
武器的第7位极品属性可以覆盖DB中的神圣或强度设置
英雄会根据召唤技能-基本设置-召唤数量来召唤下属
制造满聚灵珠:@Make 聚灵珠 1 满,Give 聚灵珠 1 满,GiveEx 聚灵珠 1 满,SendMail ... 聚灵珠&满
体力、魔法恢复属性现在对空闲恢复、吃普通药品恢复有作用
优化怪物视觉相关算法
攻城期间的边界移动、区域瞬移现在能及时正确地刷新名字颜色
攻城期间攻击攻城区域内的对象不灰名
优化封包的下发
淬炼极品属性扩展:普通属性配置(0~25)|鉴定属性配置(0~19)(扩展部分涉及二进制计算,如若不懂建议别用),成功触发QF的[@RefineItem_Succeed]可临时使用GetEquipProps、UpgradeDlgItem等...
怪物设置增加开关:宠物拾取小极品,默认关闭。开启表示即使物品不设置自动拾取,但是如果是小极品,也会自动拾取
修正KILLSLAVENAME错误信息
修正过早连接账号服务器的出错问题
增加清理仓库物品NPC命令:CLEARSTORAGE
修正上个版本僵尸不复活问题
修正地图边界的生物视觉问题!
增加战斗小退期间也可以限制回收英雄的开关、只计算人物的战斗开关,参数设置-时间控制面板
及时清理下属,防止出错
离线、下线取消交易
修正偶尔大小腿不触发问题
扣点模式下对限爆物品列表多次计算问题
修正下属对复活僵尸的视觉问题
多次刷新商人NPC后,药品刷新时间变长问题
人形怪不释放野蛮
召唤的人形怪不显示主人名称问题
多次执行QUERYVALUE默认为确定问题(客户端)
重写视觉算法,减少CPU占用率
修正切换线路问题
修正多线切换后偶尔不能移动问题
黑暗之爪可以吸人形怪
强行离婚问题
修正NPC命令出错:CheckDearOnMap、CheckMasterOnMap
完善DropItemMap坐标-1时的随机性
系统刷怪位置有更好的随机性,mongen刷怪条目中的范围要合理,否则只会造成怪物位置不准确和增加服务器压力
QM增加服务器关闭时的触发@OnStop,和@OnStart是一对触发标签
扩展Take命令,第5参数为触发的字段,非空时物品会临时放在自定装备框,$PARAM(7)角色名,$PARAM(8)物品名,$PARAM(9)物品ID
触发支持GetEquipProps、DLGITEM系列NPC命令的操作,例如:Take 物品名 1 "" 0 ~OnTakeItem // 不要对物品有延时操作,因为物品对象随后会销毁掉
客户端
集市增加搜索模糊匹配选单,选单可以使用上、下方向键选择,回车将搜索选中条目
神圣属性不显示为负数(负数其实攻击力更高)
修正完善UI控件
挂机会使用独尊技能解除石化状态
解毒术效果:SkillID=34 EffectType=2 Effect=52,需要更新客户端
英雄内功技能面板显示问题
增加右键菜单切换攻击模式
内挂物品选项卡增加拾取极品开关,默认开启
优化小退读条体验
完善友方血条颜色
改善魔法举手卡帧问题
改善寻路中瞬移经常反弹情况
完善格子物品渲染
内挂的数字漂血过滤开启,只显示自己相关的
跑动中更容易释放技能
释放十步一杀后会继续追踪目标
优化合击流畅性,不卡帧
增加【登录器远程配置服务器】,用于新版的登录器
服务器修改服务器列表等信息,会实时推送给登录器
对于此版登录器,生成的登录器dat配置条目中,只有更新列表链接有效,用于连接配置服务器
登录器增加简单的多开限制
其他说明参考文本:登录器远程配置服务器说明.txt
HeroDB改用sqlite驱动,不再使用BDE:
-------------------------------------------
开启前需要使用HeroDBConvertor转换HeroDB,步骤:
1、保持游戏版本完整性
2、M2、DBS、HeroDBConvertor,合区工具 需要调用到sqlite3.dll,在程序目录下放上sqlite3.dll,或者一次性复制到C:\Windows\SysWOW64\目录
3、将HeroDBConvertor、sqlite3.dll、DataTable_HeroDB.db放到\Mud2\DB\目录下
4、开启程序,切换到【转换到sqlite】开始转换
5、转换完成使用控制台程序(GameCenter.exe)配置一次,确保DBS得到正确的DataTable_HeroDB.db路径
6、转换后数据的默认文件名:DataTable_HeroDB.db,里面包含3个表,新老表名对照:magic -> skill、stditems -> item、monster -> monster
7、注意,物品数据表的 宠物拾取列表(PetPickItem.txt)、拾取规则列表(PickItemRule.txt)、极品提示列表(HintItemList.txt)、
光柱定义列表(CustomItemNameColors.txt)、禁止鉴定的物品列表(DisTIList.txt)
的功能都已集成到sqlite3数据库的item表中,以上文本弃用!
攻击触发列表(MonAttackTrigger.txt)、怪物技能列表(MonSpAbilList.txt)、
怪物名字颜色列表(CustomMonNameColors.txt)、假人不攻击怪物列表(BotNoAttackList.txt)
也都集成到sqlite3数据库的monster表中,以上文本弃用!
8、建议使用navicat软件编辑数据库,navicat也可以将数据库导出为csv文件,自行编辑后再重新导入即可
csv建议使用vscode+csv插件编辑,也可以使用其他办公软件
注意编辑的数据文件编码必须为:UTF-8,否则乱码
9、各个表字段说明参考文档:DataTable_HeroDB字段说明.txt
RunGate
-------------------------------------------
优化性能
防止封包攻击
限制下发流量参数:MaxSendCackeSize=1048576 // 限制单玩家下发缓存1M(可达到100M的下发流量),正常情况下完全到不到此流量
达到限流是否封IP参数:BlockHighTraffic,默认开启=1
2021/5/21 全套配套
---------------------------------------------------------------------------
M2
机器人支持DelayCall,RUNONDAY、RUNONWEEK可以精确到秒,格式:HH:MM:SS、WW:HH:MM:SS
远程NPC脚本支持商品列表
修正一个可导致引擎出错的封包漏洞
扩展NPC命令ReadRandomStr的参数1可使用权重模式格式(原为文件路径),权重模式的计算更合理,例:
ReadRandomStr 字符串1|权重1,字符串2|权重2,字符串3|权重3... // 权重为数字,数值越大,对应的字符串获取到的几率就越大,注意:所有权重总和不要超过21亿!
解决!setup文件偶尔出现重复项问题
开启引擎会检测!setup是否有重复项(ini配置重复会引发奇怪bug),有的话会弹窗提示,不手动确认会延迟5秒执行自动修复
增加加载单个假人命令:LOADDUMMY 账号 角色名,或者只有一个参数:账号|角色名,或账号:角色名,别再用FakePlayer加载200个假人再踢掉199个的方式!
增加门开关状态下发
加快NPC加载速度
整数是否记录日志与元宝分开,默认不记录,需要请修改日志过滤列表,增加:整数 即可
修正部分AMD CPU运行异常问题
增加NPC命令:OutputMessage 文字信息,将文字信息输出到引擎日志
被顶号触发QF的:@KickDoubleConnect
自动检测防止脚本死循环,并删除不必要的ResetLoopCounter命令,多数情况下不超过500次不会被判别为死循环
修正20版checkmonmap等几个命令出错问题
修正21版技能触发需要手动加载才生效问题
T操作符对可执行命令增加过滤,防止乱套导致出错,参考:T操作符可用NPC命令说明.txt
修正一处释放NPC对象访问异常
2021/5/20 全套配套
---------------------------------------------------------------------------
M2
英雄纯数字名称问题
神秘人切换地图名字不还原问题
禁止交易,别人依旧可以发起交易和购买物品问题
刺杀空降问题
优化场景底层效率,优化地图关门处理流程
优化字符串分割处理、字符串格式化效率
优化自动拾取功能
优化角色名字更新、在线人数获取等
优化大封包下发(技能、存库、背包等)
优化SetAbility命令逻辑
优化变量转换流程
优化底层功能函数
修正安全区变更后重新加载可能出错问题
修正地图变量、全局自由扩展变量赋值不能覆盖问题
修正施毒术灰名计算错误问题
多少秒后可以复活变量$REVIVALDURATION,秒,-1表示不能复活,0可以立即复活,其他正数表示n秒后被杀可以复活,在对方没有反复活技能的情况下
战斗状态持续时间变量$BATTLEMODEDURATION,毫秒
增加掉落装备NPC命令:DropEquip 0|1|3 提示掉落(0/1),参数1指装备位置,可以指定多个位置,使用“|”间隔,或者使用all指定全部,参数2掉落是否提示
优化DelayCall命令
修正重新加载MapQuest可能导致引擎出错问题(包括菜单“以上所有NPC”)
支持使用4G内存
优化Event管理
优化副本管理
修正副本刷角蝇有可能导致出错问题
尝试修正脱机人数计算不对问题
添加将<$DATETIME>分离的变量:<$DATE>、<$TIME>
添加唯一ID的变量:<$UID>,确保ID唯一的前提是:不同的服务器,setup参数中的serverid唯一
!setup的[server]下ViewWhisper=1时,引擎会显示聊天信息(原默认),
当ViewWhisper=2时,可触发QChatMission的[@OnMonitorChatMessage],
<$CHATMSG>是此字段【专用】获取聊天信息变量,此触发字段禁止使用文本操作,否则将引发引擎崩溃,可参考:记录聊天日志示例.txt
增加NPC命令:StrCap S1 S2 ( ) // 捕获字符串S1中“()”内的内容到S2,S1返回剩余部分
扩展NPC命令:UpgradeItem // 第5参数设置为99时,忽略普通属性的升级,只升级神秘属性;第4参数为鉴定属性,格式:普通鉴定属性|神秘鉴定属性|特殊属性|神技|几鉴,类似Give命令的格式,留空则不起作用
扩展NPC命令:UpgradeItemEx // 第5参数设置为99时,忽略普通属性的升级,只升级神秘属性;第8参数为鉴定属性,同UpgradeItem的第4参数
扩展NPC命令:UpgradeItemEx // 第4参数如果是1=5,3=5,28=7,28=8这样的“位置=数值”批量格式,则直接按第4参数修改装备普通属性,不会失败
扩展NPC命令:UpgradeDlgItem // 第4参数设置为99时,忽略普通属性的升级,只升级神秘属性;第6参数为鉴定属性,同上
增加NPC命令:GetEquipProps // 身上装备位置(0~16或10000),装备位置为10000时,获取的是自定装备框的装备属性,即DlgItem
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作用:获取装备属性值到一组变量中,n=身上装备位置0~16或10000,p=普通属性0~30,i=鉴定属性1~30,注意下面的n、p、i都是变量
普通属性:M_EQUIP[n]_NORM_PROPS{p}
有效的普通属性总字符串:S_EQUIP[n]_NORM_PROPS // 数值格式:1=5,3=5,28=7,28=8,等于号左边是属性位置0~30,右边是数值
一组鉴定基础属性:S_EQUIP[n]_EVAL_BASE_PROPS // 数值格式:1=5,3=5,28=7,28=8,等于号左边是鉴定属性1~30,右边是数值,结合StrTok命令使用,鉴定属性1~30可参考以前的更新说明
一组鉴定神秘属性:S_EQUIP[n]_EVAL_MYST_PROPS // 数值格式:1=5,3=5,28=7,28=8,等于号左边是鉴定属性1~30,右边是数值
单条鉴定基础属性:S_EQUIP[n]_EVAL_BASE_PROP_SLOT{1~4} // 数值格式:1=5,SLOT范围1~4,表示第几条属性,属性值非0才有效
单条鉴定神秘属性:S_EQUIP[n]_EVAL_MYST_PROP_SLOT{1~4} // 数值格式:1=5,SLOT范围1~4,表示第几条属性,属性值非0才有效
单条鉴定基础属性:M_EQUIP[n]_EVAL_BASE_PROPS{i} // 按鉴定属性1~30得到基础属性数值,如果有重复的属性,不能使用此变量
单条鉴定神秘属性:M_EQUIP[n]_EVAL_MYST_PROPS{i} // 按鉴定属性1~30得到神秘属性数值,如果有重复的属性,不能使用此变量
鉴定特殊属性:M_EQUIP[n]_EVAL_SPEC_PROPS // 可以使用IsBitSet,SetBit,UnsetBit命令比较计算
鉴定神技:M_EQUIP[n]_EVAL_SKILL_PROPS // 可以使用IsBitSet,SetBit,UnsetBit命令比较计算
鉴定次数:M_EQUIP[n]_EVAL_TIMES_PROPS
是否有鉴定基础属性:M_EQUIP[n]_HAS_EVAL_BASE_PROPS // =0没有,>0有
是否有鉴定神秘属性:M_EQUIP[n]_HAS_EVAL_MYST_PROPS // =0没有,>0有
获取到属性会触发本NPC的[@OnGetEquipProps]字段,附带返回变量如下,其他请查看附带示例:GetEquipProps.txt
$PARAM(0) // 物品ID
$PARAM(1) // stdmode
$PARAM(2) // looks
$PARAM(3) // 装备位置
特殊属性对应数字说明,不同数字相加可以得到多个属性:
1 八卦护身
2 战意麻痹
4 复活
8 探测
16 传送
32 麻痹
64 魔道麻痹
RunGate
优化加速控制,增加操作码间隔过滤(FilterOpcodes.txt),防止部分封包攻击
DBS-MySQL版
修正回城坐标存取错误
支持使用4G内存
2021/4/17 全套配套
---------------------------------------------------------------------------
M2
修正因怪物复活有几率出现报错问题
优化自动拾取
!去掉镜像地图,删除ADDMIRRORMAP、DELMIRRORMAP、MIRRORMAPTIME命令
换成NewCopyMap命令,格式:NewCopyMap 源地图名 副本地图标题 有效时间(秒) 是否刷怪(0/1) 结果跳转字段,返回副本地图名在:<$PARAMSTR(0)>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@副本测试]
#act
NewCopyMap d717 猪七副本 45 1 @CreateCopyMapResult
[@CreateCopyMapResult]
#if
CompVal <$PARAMSTR(0)> ! ""
#act
map <$PARAMSTR(0)>
mov A副本地图名称 <$PARAMSTR(0)>
SendMsg 7 创建副本成功,进入副本:<$PARAMSTR(0)>
#elseact
SendMsg 7 创建副本失败
英雄跟随更及时
英雄显示主人名称问题
修正上个版本消耗修复神水出错问题
修正刷一些无效怪物导致引擎出错问题
优化MapEvent触发,配置地图名称不区分大小写
修正鉴定属性的合击威力未能生效问题,测试使用:Give 装备名称 1 0 0 24=15|24=15|0|0|1
套装属性值可根据设置显示百分比符号(配套更新)
!吃药间隔控制去掉,请在网关进行控制
!多次重新加载怪物DB后,怪物上不了毒问题
!MapEvent不建议在大地图每次移动都触发,否则可能会有性能问题
火龙神拾取触发获取不到名字问题
怪物掉落触发参数不显示为具体怪物名
PlayEffect 第8参数增加Self模式,不广播,只发送给自己,去掉@OnPlayEffect触发
套装增加战士技能等级效果未体现效果问题
中毒恢复能减少中毒时间
产出腰带、靴子有几率带极品属性
游戏网关
细化物品使用控制
英雄死亡再次召唤可能不会自动吃药问题
客户端
四格版本装备界面支持称号
内挂增加快速开盾开关(可防止卡盾)
内挂增加淡化火墙效果开关
套装属性值可根据设置显示百分比符号(配套更新)
挂机被人攻击不小退
挂机死亡不关闭客户端
挂机道士可以边砍边放魔法,法师优化走位
挂机寻路内存泄漏问题
挂机路点模式适合多墙地图,解决发呆问题
挂机不断拾取他人物品问题
优化普通寻路,不走X型路线
修正小地图(小)边缘坐标获取错误
优化自动吃药规则,不卡药
优化快速攻击、魔法,提高精度
修正摆摊素材缺图报错
修正挂机自动拾取步伐问题
修正内挂保护小退认证服务器失败问题
修正一时播放太多声音导致卡盾问题
挂机目标瞬移之后空砍问题
2021/4/4 全套配套
---------------------------------------------------------------------------
M2
优化mysql功能模块线程
优化地图后台管理逻辑
优化玩家视觉事物逻辑
修正引擎启动有概率出错问题
读、写玩家存档限流(大概每秒2000存档),防止DBS用爆内存
单个引擎人数限制修改为:15000->65536
性能更好的地面物品管理
优化自动拾取逻辑
商铺可批量购买
NPC、怪物名字长度扩展为:14->32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、使用DBCommander先把monster.db数据导出备份到文本
2、使用工具HeroDBConvertor.exe转换新monster.db(扩展名字长度)
3、使用DBCommander清空新的monster.db,并导入步骤1备份的数据文本,这时怪物名称就扩展到最长32字节
4、NPC名称更改直接在npcs.txt、merchant.txt文本编辑
5、比如“稻草人”变更为:这是名字很长的稻草人\<不死系>
6、如果怪物带换行符,爆率文件需要将对应的“\”变更为“-”
7、CustomMonNameColors.txt自定义名字颜色的怪物会全名显示(需更新客户端)
客户端
增加隐藏尸体时的渐隐效果
修正查看他人发型显示错误问题
修正死亡时的翅膀渲染顺序
时装内发光:stditems.db中时装的shine>=100,对应data\~wfashionshine.wzl文件,每50张图一个效果,有效图片的请保持连续,例:shine=100调用0~49的图片,shine=101调用50~99的图片
战士也可以自动开盾
商铺可批量购买
2021/3/14 全套配套
---------------------------------------------------------------------------
M2
修正因为扩展包裹,引擎和DBS通讯数据量变大,在大量保存数据时可能发生丢包问题
套装技能属性增加抵抗他人技能伤害设置(百分比),必须和客户端配套!
修正关闭服务器时多次释放Acceptor完成端口句柄的错误
优化网络测试、邮件、金币交易市场模块后台线程的效率
!去掉NPC元宝寄售系统
英雄分身不使用全技能模式
增加!setup参数:StrictWeaponUpgradeResult=1时,严格限制升级武器的最高点数,默认0
增加!setup参数:MultipleTitleProperties=1时,只要激活一个称号,其他称号属性都能生效,默认0
游戏网关解决被雷霆剑法麻痹后释放魔法的误封
修改killSlaveName为强制杀死随从
解决偶尔还有个别假怪问题,需配套更新!
技能优化
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
设置随机释放连击NPC命令:RANDSERIESSKILL // 主要给假人用
修正特殊技能减少CD时间溢出问题
修正连击技能间隔时间不正确问题
完善十步一杀技能效果,需要配套客户端
十步一杀、冰霜群雨支持强化技能效果
野蛮冲撞带残影效果,以区分普通跑动
修正完善雷霆剑法效果
修正三焰咒技能效果
优化战士英雄连击的起手时机
修正英雄群攻目标不全问题
英雄支持3个技能:英雄十步一杀、英雄冰霜群雨、英雄死亡之眼
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在magic.db复制对应的三个人物技能,名称前面加上“英雄”,并将descr填写上“英雄”即可
客户端可以通过 内挂->技能->英雄特殊技能不打怪 选项不打怪,有利于PK。
斗笠扩展,需要配套客户端,db中斗笠的AniCount对应资源:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4..11: 普通读取hair2.wzl、连击读取cbohair.wzl
12..14: 普通读取hair3.wzl、连击读取haircbo3.wzl
15..62: 普通读取hair4.wzl、连击读取haircbo4.wzl
63..127: 普通读取~hair5.wzl、连击读取~cbohair5.wzl // 以“~”开头的自定义资源
DBS
修正在大量保存数据时可能发生丢包问题,提高网络性能
登录器、客户端
配套支持抵抗技能伤害功能
完善部分技能特效
配套支持斗笠扩展
修正完善登录器读取列表,当2个列表都读取不到时,将尝试读取登录器目录下的主列表文件名文件(支持之前的加密)
登录器配置的物品规则列表只有1条时,客户端将不释放lsDefaultItemFilter.txt列表,可以自定义此文本
解决偶尔还有个别怪物假象问题,需配套更新!
2021/2/21 全套配套
---------------------------------------------------------------------------
M2
优化IOCP逻辑,减少内存占用
去掉M2的封加速功能
套装支持斗笠、军鼓、马牌、时装位置,需要配套更新客户端
恢复MapEvent移动触发(在一月份版本去掉此功能)
添加随机进入权重掉落模式,格式:1/3 物品名1|权重1,物品名2|权重2... 1 $GAMEGOLD ? 1 -1 // 1/3机会进入权重掉落计算,参考之前的权重掉落更新说明
提高和DBS的通讯效率,减少内存占用
假人、英雄的流星火雨技能支持使用magic.db的delay(毫秒)控制释放间隔,人物原本已支持
优化集体瞬移散开的效率
摆摊时CheckItem有效
补全购买重叠物品的日志和使用重叠物品的日志
英雄使用物品优化,记录日志主体修改为英雄
修正物品日志列表修改后不能实时生效问题
修正技能套装刷新产生的内存泄漏
在Npcs.txt、MerChant.txt添加新NPC后重新加载可实时生效
扩展仓库大小为原来的3倍(135个),mir.db数据需要使用合并工具转换后使用,全套配套更新(包括lui.pkg)!MySQL版本不需要转换数据。
新聚怪技能:79;黑暗之爪;4;42;3;15;4;20;0;0;0;42;50;44;100;46;200;50;400;55;800;60;1600;66;3200;72;6400;79;12800;86;25600;94;51200;103;102400;113;204800;124;409600;136;819200;15;550;0;0;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!setup参数MagAssemblyMonsTime是技能释放间隔时间,默认15秒
equal、large、small、isbitset支持解释嵌套变量,例如:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#act
mov M80 12345
mov S14 M80
#if
equal <$STR(S14)> 12345
#act
SendMsg 7 正确结果
#elseact
SendMsg 7 错误结果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
添加检测是否正在摆摊的NPC命令:IsMarketStallOpened
#if
IsMarketStallOpened
#act
sendmsg 7 摆摊中...
DBS
提高和M2的通讯效率,减少内存占用
客户端
支持套装位置的扩展
补全传送、瞬移的特效
优化第三人移动动作体验
微端服务器
减少缓存内存占用,提高效率
2021/1/29 全套配套
---------------------------------------------------------------------------
M2 优化部分逻辑
客户端
微端下快速并显示小地图
打开仓库物品列表后,可以使用Ctrl+鼠标右键快速存、取仓库物品
2021/1/13 全套配套
---------------------------------------------------------------------------
M2 技能ID=72,是否允许飞到物品上开关DoFlyOnItem=0,默认0关闭,1开启
修正1229更新造成SetAbility的GM隐身不恢复问题
修正MonGen.txt集中点刷法,在新的刷怪模式下失效问题
去掉五行阵法功能!
添加幸运值变量,人物$LUCKPOINT,英雄$H.LUCKPOINT
远程脚本插件安全更新:
1) 上传远程脚本时,需要验证密码,避免捣乱,此功能需要一个正确的授权码,需要请联系工作人员免费获取(提供机器码、自定义密码),引擎和远程脚本插件需配套更新。
2) 添加脚本上传过滤列表RemoteScriptFilters.txt,修改此文本后重新加载所有NPC即可,用法:在RemoteScript.ini中的
BlacklistMode=true // 黑名单模式(默认) 列表中的NPC将使用【本地】方式加载,非列表中的NPC使用【远程】方式加载。
BlacklistMode=false // 白名单模式 列表中的NPC将使用【远程】方式加载,非列表中的NPC使用【本地】方式加载。
列表条目的格式:NPC基本目录_NPC名称-地图号,默认会生成几个例子,请打开列表参考。
3) 远程脚本服务器更新,支持用户访问控制,格式和编写方式请参阅“远程脚本服务器和插件.7z”的“说明.txt”
4) RemoteScript.ini添加用户名参数UserName,配合用户访问控制,格式:
Host=127.0.0.1
Port=8800
# 默认用户名default,拥有最大权限,示意请设置比较复杂的密码
UserName=default
# 默认密码bluem2
Password=bluem2
# 远程读取的版本
ServerVersion=热血传奇_V1.0
5) 远程脚本服务器、远程脚本插件需要配套更新!
2021/1/1 全套配套
---------------------------------------------------------------------------
M2 修正重新加载NPC后城堡标志设置错误问题
Npcs.txt也可以修改后重新加载(之前只支持Merchant.txt)
全局字符串限制长度为1024
添加变量$CURITEMINDEX,当前将出产物品的ID
添加变量$ITEM(NN),主要用于展示背包的物品,NN为物品的ID,客户端鼠标指向物品图标有属性展示,下面有例子,需要同时更新客户端
[@PickupItem]触发的<$PARAM(3)>修改为掉落者名称
主菜单添加重新加载MapQuest脚本功能
修正少数情况下NPC脚本参数个数识别错误问题
改善法师英雄
魔法设置面板添加:忽视护体神盾、忽视强化骷髅伤害减免、忽视内功伤害减免 开关,默认关闭,开启则在忽视几率触发的情况下起作用
客户端
修补NPC对话框处理部分图片类对象
完善聊天栏、对话框等的装备显示
支持SetAbility动画效果,需要定义好效果文件AbilityEffects.txt,并将文件放到data目录,聊天栏打:~ReloadAE 命令可重新加载文件
聊天栏、对话框、跑马灯修正装备显示位置,支持[Ctrl+鼠标中键]查看佣兵契约纸
NPC脚本会自动补全#IF,比如:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@测试]
;会自动再内存补全下面2条语句,不修改脚本文件,之前下面的例子不会执行SetRandomNO这句
;#if
;true
#act
SetRandomNO 10000
#if
compval <$RANDOMNO> < 1000
#act
sendmsg 3 特等奖<$RANDOMNO>
#elseif
compval <$RANDOMNO> < 7000
#act
sendmsg 7 鼓励奖<$RANDOMNO>
#elseact
sendmsg 7 谢谢参与<$RANDOMNO>
扩展SetAbility,第5参数是自身效果id,id对应AbilityEffects.txt的条目效果,
参考附件AbilityEffects.txt,此文件需要放在客户端的data目录,格式:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;ID(1~65535不要重复) WIL名称 起始图片 帧数 帧间隔 声音 声音循环(0/1) 特效模式(0/1)
1 Prguse2 110 15 80 Wav\powerup.wav 1 1
2 Prguse2 90 19 80 Wav\powerup.wav 1 1
脚本示例: // 一个Ability带三个动画效果
SetAbility 51 80 15 "" 1
SetAbility 51 80 15 "" 2
SetAbility 51 80 15 某buffer恢复正常 3
QF添加怪物掉落极品触发:[@MonDropItemDown],极品指HintItemList.txt中存在的物品,需要同时更新客户端
触发时支持的变量:<$PARAM(0)>:手动丢弃(0/1) <$PARAM(1)>:物品名 <$PARAM(2)>:Looks <$PARAM(3)>:掉落者名称,<$PARAM(4)>:地图名,
<$PARAM(5)>:X坐标 <$PARAM(6)>:Y坐标 <$PARAM(7)>:物品ID <$PARAM(8)>:掉落者Race(人物1,英雄60) <$PARAM(9)>:是否装备(0/1)
例1:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@MonDropItemDown]
#act
mov M_DropItemID <$PARAM(7)>
; 聊天框展示掉落物品
SENDMSG 0 <$PARAM(4)>的<$PARAM(3)>掉落:<$ITEM(M_DropItemID)>
; SendScrollMsg的漂移有点慢,可以去掉
;SendScrollMsg <$PARAM(4)>的<$PARAM(3)>掉落:<$ITEM(M_DropItemID)>(点击物品可暂停漂移) 151 16
例2:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@吆喝]
#say
先放上你要吆喝的物品,放置完成后点击<开始吆喝/@开始吆喝>开始叫卖。\ \<返回/@back> <关闭/@exit>
#act
QueryItemDlg 放上吆喝的物品 @ShowMyItem 0
[@ShowMyItem]
#act
GetDlgItemId MShowItemID
inc SShowItems <$ITEM(MShowItemID)>
delaygoto 100 @吆喝
[@开始吆喝]
#if
compval <$STR(SShowItems)> ! ""
#act
SendScrollMsg 【<$USERNAME>】出售物品:<$STR(SShowItems)>(点击物品可暂停漂移) 151 16
mov SShowItems ""
close
例3:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@showItems]
#act
SetDlgItem 屠龙
FormatStr %s <$DLGITEMSHOW>
SetDlgItem 怒斩
FormatStr "%s %s" <$CALCRESULT> <$DLGITEMSHOW>
SetDlgItem 龙牙
FormatStr "%s %s" <$CALCRESULT> <$DLGITEMSHOW>
SetDlgItem 逍遥扇
FormatStr "%s %s" <$CALCRESULT> <$DLGITEMSHOW>
#say
装备:<$CALCRESULT>\ \<返回/@back> <关闭/@exit>
MapQuest添加拾取触发,文件MapQuest.txt,
触发时支持的变量:同上
掉落物品的角色,如果下线或消失,角色名将为空,一般设置物品消失的时间比怪物消失的时间长
例:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;地图 变量 判断 角色名 物品名 执行文件名
3 [123] 0 蛤蟆/玩家名 乌木剑 QPickup1 // QPickup1指向MapQuest_def目录下的QPickup.txt脚本
3 [123] 0 * 屠龙 QPickup2
添加远程脚本功能
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1) 引擎成功加载RemoteScript.dll,可以使用远程脚本功能,
RemoteScript.ini是参数设置文件,其中:
Host=127.0.0.1 // 远程NPC脚本服务器的IP地址
Port=8800 // 远程NPC脚本服务器的端口
Password=bluem2 // 连接密码
ServerVersion=热血传奇_V1.0 // 服务器的版本,会以此标识上传、加载远程脚本数据,可动态修改
要加载远程NPC脚本:勾选 引擎主菜单-管理-使用远程脚本,勾选后,重新加载NPC或开启引擎会加载远程服务器的NPC脚本数据
最好要保证远程脚本服务器能和引擎服务器通讯够顺畅,否则远程加载NPC脚本速度会变慢。
启用远程加载脚本后,本地脚本文件的内容可以清空
2) 远程脚本服务器参见附件:RemoteScriptServer.7z
修改参数文件config.conf,以达到自己的要求,主要修改其中的端口和连接密码,参考压缩包中的“说明.txt”
修改完,运行:启动.bat 即可
3) 引擎成功加载RemoteScript.dll,适当修改脚本之后,可以点击 引擎主菜单-管理-上传脚本数据,
可以使用专门的测试服务器修改、上传脚本,其他连接同一远程脚本服务器的引擎,只需要重新加载所有NPC即是最新状态。
4) 涉及文件在压缩包目录:通用-远程NPC脚本 中,注意连接设置正确性,否则将导致引擎卡顿
2020/12/17 全套配套
---------------------------------------------------------------------------
M2 修正摆摊集市有概率出现错误信息问题
修正上个版本玩家技能名称串到英雄技能名称问题
UPGRADEITEMEX 的第7参数是1时,点数几率参数将不随机,直接赋予点数
2020/12/15 全套配套
---------------------------------------------------------------------------
M2 修正批量TAKE物品记录可能不正确问题
修正重新加载技能DB后,部分操作技能的NPC命令失效问题(原重新登录可解决)
修正道道合击多次计算对方防御问题!
追心刺技能到达8级可以百分之百破盾
!Setup添加参数QuitGameWideTrigger,参数为1时,非安全区下线也可以触发@OnLogout_OffLinePlaying和@OnLogout_SoftClosing,默认0
添加变量$SERVERID,对应!setup参数的serverid
添加变量$ONLINEHUMNUM,当前引擎在线人数
添加变量$OFFLINEHUMNUM',当前引擎离线人数
添加变量$TOTALHUMNUM',总在线人数(多引擎)
添加NPC命令ResetLoopCounter,重置脚本死循环计数,在一些循环较多的脚本需要用到
怪物文本爆率增加权重掉落模式,格式:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1/99999998 物品名1|权重1,物品名2|权重2,物品名3|权重3... 1 $GAMEGOLD ? 1 -1
说明:
1) 99999998 表示使用权重模式
2) 权重是非0数字,衡量在一个物品在此条目所有物品中的掉落占比,数字越大几率越大
3) 此模式必定且只掉落一件物品
4) 不适合掉落金币
添加NPC命令JSON,操作JSON的字符串,格式:JSON 标识|存活时间 子命令 名称 数值
!可以使用VSCode(安装json扩展插件,json格式化插件)查看编辑json文件。
!资料参考:https://www.runoob.com/json/json-tutorial.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各个参数意义:
1) 标识,类似自由变量,指定一个唯一标识,“|”号后面是此对象的存活时间(秒),-1表示永久,
不写存活时间默认是180秒,即180秒后,此标识的JSON对象会被释放。
2) 子命令,有以下几种:
InitJsonFromFile 文件名 // 从Json文件初始化
SaveToJsonFile 文件名 // 保存到Json文件
InitJson Json字符串 // 从给定的Json字符串初始化
InitFrom 其他标识.路径 // 从其他标识.路径下的Json初始化,相当于复制,“.路径”可选
InitArrayFromCsv Csv字符串 // 从给定的Json字符串初始化为Json数组,字符串分隔符可以是:制表符、“;”、“,”
InitArrayFromCsvFile 文件名 // 从给定的Csv文件初始化为Json数组,注意csv第一行是字段/列的名称
ToCsv S变量 // 保存Csv字符串到S变量中,只能是数组对象才能保存为Csv字符串
SaveToCsvFile 文件名 // 保存到Csv文件,只能是数组对象才能保存为Csv文件
SortByName 0/1(1反序) // 按名称排序,反序参数为1,默认正序
SortByValue 0/1(1反序) // 按数值排序,反序参数为1,默认正序
Clear // 清理
DeleteByName 名称 // 按名称删除
DeleteByPath 路径 // 按路径删除
AddValue 名称 数值 // 添加数值,数值可以是普通的字符串、整数、浮点数等,或者是一个标准的Json对象或数字(字符串形式)
AddOrUpdateValue 名称 数值 // 添加或更新数值(存在则更新,否则添加),其他同上,默认正序,写上标志Desc为反序
SetValueByPath 路径 数值 // 按路径设置数值(不存在则创建,否则更新)
AddOrUpdateObject 源标识 0/1 // 从其源标识添加或更新到目标标识(参数2)的Json中,0只添加目标标识不存在的项,1目标标识里存在则会更新该项
GetCountByPath M变量 路径 // 获取节点数量,当路径为空时,获取标识下的json的基层节点数到M变量,否则获取路径下对象或数组的节点数到M变量
3) 名称,类型是字符串
4) 数值,有以下几种类型:
整数 12345678
字符串 普通字符串
布尔值 True|False
浮点数 1.367
日期时间 "2018-11-12 06:12:11" 或 "2018-11-12T06:12:11.123",“.”后面指的是毫秒
数组 ["string",100,null,true,false,123.4]
对象 {"name":"ObjectName","value":"ObjectValue"}
注意:数值最好不要有空格,如果必须带空格,请使用双引号""包围起来以表示为1个参数
5) JSON专用变量:
<$JSON(标识.路径)J> // 可读性差的单行JSON字符串,“.路径”为可选项,下同
<$JSON(标识.路径)H> // 格式化后的可读性高的多行JSON字符串
<$JSON(标识.路径)C> // 获取路径下对象或数组的数量
<$JSON(标识.路径)T.路径> // 获取类型,0未定义,1对象,2数组
<$JSON(标识.路径)N.索引> // 根据索引位置获取名称,索引依据上面获取的数量循环读取即可,索引是数字
<$JSON(标识.路径)V.名称或索引> // 根据索引位置或节点名称取值,有2种方法:1根据索引位置取值;2省略索引,直接用路径取值
例:
#act
JSON myjson Clear
JSON myjson AddValue 整数 12345
JSON myjson AddValue 字符串 这是字符串...
JSON myjson AddValue 布尔值 True
JSON myjson AddValue 浮点数 2.532
JSON myjson SetValueByPath 日期 "2018-11-12 06:12:11"
JSON myjson SetValueByPath 数组 ["字符串",100,null,true,false,123.4]
JSON myjson SetValueByPath 对象 {"name":"Object_Name","value":"Object_Value"}
sendmsg 7 Json:<$JSON(myjson)H>
; 第一个位置以0开始,<$JSON(myjson.数组.1)V>等同于<$JSON(myjson.数组)V.1>
sendmsg 7 “数组”第2位置的值是:<$JSON(myjson.数组.1)V>
; 保存到文件
JSON myjson SaveToJsonFile ..\JsonData\example.json
; 从字符串解释到JSON
JSON myjson InitJson {"myobj":{"name":"object1","subobj":{"name2":"subObj2","name1":"subObj1","int2":123456},"array":[1,3,4]},"array":[1.23,200,300,{"name":"字符串"}]}
sendmsg 7 取值:<$JSON(myjson.object.subobj.int2)V>
JSON myjson DeleteByPath array.3
JSON myjson DeleteByPath myobj.subobj.1
JSON myjson DeleteByPath myobj.subobj.int2
sendmsg 7 删除后的结果<$JSON(myjson)J>
; 合并例子
JSON dst InitJson {a:10000,b:200,c:"id"}
JSON src InitJson {a:"str",d:500,e:7002}
; 只添加不存在的项目
JSON tmp InitFrom dst
JSON tmp AddOrUpdateObject src 0
sendmsg 7 合并结果0:<$JSON(tmp)JSON>
; 不重复,重复项目将以“源标识”为准
JSON tmp InitFrom dst
JSON tmp AddOrUpdateObject src 1
sendmsg 7 合并结果1:<$JSON(tmp)JSON>
; 赋值
JSON myjson SetValueByPath object.赋值.int 87654321
JSON myjson SetValueByPath object.赋值.float 5.76
JSON myjson SetValueByPath object.赋值.string abcdefg...
JSON myjson SetValueByPath object.赋值.datetime "2022-11-22 11:22:33.123"
JSON myjson SetValueByPath object.赋值.子对象.int 12345678
JSON myjson SetValueByPath object.赋值.子对象.ishum true
JSON myjson SetValueByPath object.赋值.子对象.float 5.76
JSON myjson SetValueByPath object.赋值.子对象.array [12345,1.76,false,string,2022-11-22T11:22:33.123]
sendmsg 7 赋值结果<$JSON(myjson)J>
; 其他测试例子
JSON myjson Clear
JSON myjson SetValueByPath 数组 ["字符串",100,null,true,123.4]
JSON myjson SetValueByPath 对象 {"name":"Object_Name","value":"Object_Value"}
sendmsg 7 重设结果:<$JSON(myjson)J>
; 根据索引循环取数组的值
Mov D98 <$JSON(myjson.数组)C>
sendmsg 7 类型值:<$JSON(myjson.数组)T>,数量:<$STR(D98)>
#for (D99 = 0, D99 < D98, D99 + 1)
#if
#act
sendmsg 7 “数组[<$STR(D99)>]”的值:<$JSON(myjson.数组)V.<$STR(D99)>>
#~for
; 根据索引循环取对象里的值
Mov D98 <$JSON(myjson.对象)C>
sendmsg 7 类型值:<$JSON(myjson.对象)T>,数量:<$STR(D98)>
#for (D99 = 0, D99 < D98, D99 + 1)
#if
#act
; 根据索引取得名称
Mov S99 <$JSON(myjson.对象)N.<$STR(D99)>>
; 再根据名称取值
sendmsg 7 “对象”<$STR(S99)>的值是:<$JSON(myjson.对象)V.<$STR(S99)>>
#~for
; 另一种写法
; 将“myjson.对象”初始化到tmp中
JSON tmp InitFrom myjson.对象 // 等同于 JSON tmp InitJson <$JSON(myjson.对象)V>
Mov D98 <$JSON(tmp)C>
sendmsg 7 类型值:<$JSON(tmp)T>,数量:<$STR(D98)>
#for (D99 = 0, D99 < D98, D99 + 1)
#if
#act
; 取节点称
Mov S99 <$JSON(tmp)N.<$STR(D99)>>
; 不同于上面的索引位置取值,这里使用的是路径取值的方法
sendmsg 7 “对象”的值是:<$JSON(tmp.<$STR(S99)>)V>
#~for
; 排序例子
#act
JSON myjson Clear
#for (D99 = 0, D99 < 10, D99 + 1)
#if
#act
SetRandomNO 1000
JSON myjson AddOrUpdateValue 用户<$STR(D99)> <$RANDOMNO>
#~for
#if
#act
JSON myjson SortByValue
sendmsg 7 数值正序结果:<$JSON(myjson)J>
JSON myjson SortByValue 1
sendmsg 7 数值反序结果:<$JSON(myjson)J>
JSON myjson SetValueByPath ChartsDesc <$JSON(myjson)J>
sendmsg 7 插入一个排行榜:<$JSON(myjson)J>
; 从csv文件加载,注意csv第一行是字段/列的名称
JSON J_CsvData InitArrayFromCsvFile ..\QuestDiary\array3.csv
sendmsg 7 InitArrayFromCsvFile:<$JSON(J_CsvData)J>
; 行数
Mov M99 <$JSON(J_CsvData)C>
#for (D99 = 0, D99 < M99, D99 + 1)
#if
#act
sendmsg 7 行<$STR(D99)>数据:<$JSON(J_CsvData)V.<$STR(D99)>>
JSON J_Temp InitJson <$JSON(J_CsvData)V.<$STR(D99)>>
Mov M98 <$JSON(J_Temp)C>
#for (D98 = 0, D98 < M98, D98 + 1)
#if
#act
sendmsg 7 字段名:<$JSON(J_Temp)N.<$STR(D98)>>,数值:<$JSON(J_Temp)V.<$STR(D98)>>
#~for
#~for
添加NPC检测命令CheckJson,格式:CheckJson 标识 子命令 标识/名称/路径 选项
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各个参数意义:
1) 标识,类似自由变量,指定一个唯一标识
2) 方法,有以下几种:
X 判断是否包含指定路径的子结点 // 用法:CheckJson myjson X path
N 判断当前层是否有指定的名称 // 用法:CheckJson myjson N name
V 判断当前层是否有指定的数值 // 用法:CheckJson myjson V value
E 判断JSON内容是否相同 // 用法:CheckJson myjson E myjson2
例:
#if
true
#act
JSON myjson1 P {"myobj":{"name":"object1","subobj":{"name2":"subObj2","name1":"subObj1","int2":123456},"array":[1,3,4]},"array":[1.23,200,300,{"str":"字符串"}]}
JSON myjson2 P {"myobj":{"name":"object1","subobj":{"name2":"subObj2","name1":"subObj1","int2":888888},"array":[1,3,4]},"array":[1.23,200,300,{"str":"字符串"}]}
#if
CheckJson myjson1 X myobj.subobj.int2
#act
sendmsg 6 路径存在:<$JSON(myjson1)myobj.subobj.int2>
#elseact
sendmsg 5 路径不存在
#if
; 检测第一层,名为array的数组的第四个对象是否存在
CheckJson myjson1 X array
#act
sendmsg 6 路径存在,数组[0]:<$JSON(myjson1)array.0>,数组[3]整个对象:<$JSON(myjson1)array.3>,数组[3](是一个对象)“str”的值:<$JSON(myjson1)array.3.str>
#elseact
sendmsg 5 路径不存在
#if
CheckJson myjson1 N name2
#act
sendmsg 6 1)包含名称
#elseact
sendmsg 5 1)不包含名称
#if
CheckJson myjson1 V 123456
#act
sendmsg 6 3)包含数值
#elseact
sendmsg 5 3)不包含数值
#if
CheckJson myjson1 E myjson2
#act
sendmsg 6 5)相等
#elseact
sendmsg 5 5)不等
2020/11/19 全套配套
---------------------------------------------------------------------------
M2
修正个别NPC命令对变量的识别问题
修正法师英雄持续开盾问题
修正54-58的NPC不能穿越的问题 // 54-58的NPC不可点击,可在MapInfo.txt添加门点,走上去直接移动到其它地图
怪物设置面板,添加怪物被魔法攻击时停顿参数调节
增加修改合击怒气值NPC命令:UnityEnergy +/-/= 数值,怒气值满值是200
增加修改合击威力倍率NPC命令:UnityPowerRate +/-/= 数值,百分比,默认100,$UNITYPOWERRATE 可以显示当前值
客户端
修正完善传送门类NPC的效果,54-58类NPC可以显示名字
合区工具
优化合并速度,支持多区合并
2020/11/09 全套配套
---------------------------------------------------------------------------
m2 允许英雄在安全区内锁定安全区外的目标
不开启英雄锁定瞬移至目标身边情况下,英雄先瞬移到主人身边后再锁定目标
登录器、客户端
登录器列表、更新下载等支持HTTPS协议
修正登录器可能不断更新问题
修正登录器更新进度条可能显示不正确问题
客户端去掉一条调试信息的输出,防止卡顿
2020/11/03 全套配套
---------------------------------------------------------------------------
M2
角色死亡后,不可范围拾取
菜单可重加载NPC,机器人NPC
野蛮冲撞补偿时间也对假人生效
修正角色上线刚好附近物品消失,会出现物品假象问题
修正升级武器+2、+3几率太低问题
修正上个版本小怪被打后移动速度变快问题
重新加载怪物数据库,即可刷新掉落列表(之前版本的引擎也可以)
修正个人爆率叠加目标爆率计算错误
修正玩家随从安全区攻击他人随从问题 // 触发条件:安全区外攻击目标,目标进安全后还会继续攻击
增加参数:BulkPickupDieDropItems=0 // 是否可以批量拾取他人死亡掉落物品,默认0不可以
扩展拾取物品规则列表PickItemRule.txt,规则2表示不可以使用范围拾取,例如:木剑 3 // 即表示只能队长拾取,而且不可使用范围拾取
优化提高引擎内部消息系统性能 // 体现为流畅的集体传送、大场面PK
修正1025版Rece=174的怪物被麻痹不恢复问题
优化发现可视物品代码性能
法师、道士英雄走位优化
修正人形怪再次刷新技能丢失问题
客户端
内挂添加人、怪简装开关
改善内挂自动技能顺畅度
提高有攻击速度情况下Shift+鼠标操作体验
修正连击技能效果丢失问题
RunGate
修正上个版本瞬移后攻击速度限制失效问题
修正上个版本一个处理服务器封包的小bug
2020/10/18 全套配套 注意:本次更新,游戏网关封加速设置需要重新调整!
---------------------------------------------------------------------------
M2
1、放开武器攻击速度,武器最大攻击速度数值可达到117,建议最大到80,接近满速,最大速度可以在Rungate限制。
2、英雄、假人攻击速度倍率:游戏参数->游戏速度->装备速度,建议60
3、英雄、假人最大武器攻击速度限制:功能设置->英雄设置->英雄武器加速,建议80
4、修正法师、道士英雄躲避bug
5、修正战士英雄在杀死目标后的连贯性,提高法师、道士杀怪连贯性,相对之前打怪升级效率有较大提升
6、提高玩家操控英雄的响应
Rungate
1、判断带武器攻击速度、魔法速度、移动速度更精确
2、调节的攻击速度,每3点的速度等于+1武器速度,会和武器攻击速度叠加!
3、调节攻击速度,不需要重新调整攻击间隔
4、调节魔法速度,不需要重新调整魔法间隔
5、调节移动速度,不需要重新调整魔法间隔,并且将原来每2点生效修改为每1点生效
6、增加一个参数:ClientMoveFrameTime,客户端每帧的间隔,默认95,复古建议调节为120,移动起来相对缓慢,
参数改变则标准的移动间隔就是:ClientMoveFrameTime * 6,
建议弃用移动速度调节,即ClientMoveSpeedRate=0,改用单个ClientMoveFrameTime来改变移动速度。
7、添加一个参数:OpenSpellSpeedRate=1时,武器的攻击速度也可以在使用魔法时起加速作用,加速效果没有普通攻击明显,0关闭
8、如果启用武器加速,ItemSpeedCompensate=1最好开启,能更好配合组合速度的计算
9、游戏全局速度调节包含几个参数: // 这些参数影响所有的玩家,会和攻击速度叠加
OpenClientSpeedRate=1
ClientAttackSpeedRate=0
ClientMoveSpeedRate=0
ClientSpellSpeedRate=0
ClientMoveFrameTime=100
10、附带参考文件:游戏网关速度控制参考.txt
客户端
修正技能释放太快有几率卡在举手动作的问题
放开攻击速度,配套本次所有程序更新
2020/10/10 全套配套
---------------------------------------------------------------------------
M2
新增NPC命令:ClientFeatures 序号(0~99) 关闭或开启(0/1) // 序号0:开启或关闭客户端自动挂机功能,目前只有序号0有作用,客户端需配套
扩展:使用个人M、S变量在超出常规范围(0~99)时会自动扩展,M、S后面可以是任意字符,字符的长度最好保持在20字节以内,注:SUM命令对于自由扩展的M变量,结果放在:M99999999。
例如:Mov M测试整数1 12345,Mov S测试字符1 字符串1,显示:<$STR(M测试整数1)>,<$STR(S测试字符1)>
扩展:使用全局G、A变量在超出常规范围(0~99)时会自动扩展,服务器关闭可保存,注:SUM命令对于自由扩展的G变量,结果放在:G99999999,用法同上。
增加:属于地图的整数变量E、字符串变量F,地图指向执行命令玩家所在的地图,服务器关闭不保存,注:SUM命令对于E变量,结果放在:E99999999,用法同上。
全局变量不再保存在!setup.txt,改为保存到QuestParams.ini
GameCenter
清理全局变量适配以上更新
客户端
支持ClientFeatures命令 // 必须配套此版本引擎
2020/9/24 全套配套
---------------------------------------------------------------------------
M2
参数设置-游戏选项2-交易控制增加禁止交易/丢弃金币开关
重叠物品自动设置最高重叠数,防止出错
扩展 DropItemMap 地图号 X Y 范围 物品 数量 秒数 归属(0/1) // X=-1时随机丢物品;秒数非0且归属=1时物品归属于执行脚本的玩家
扩展 PetPickupItemRange Self 范围(0-15) // 非挂机时(OfflinePlayEx),可以按设定范围拾取片区,客户端必须配套!
客户端
支持PetPickupItemRange设置的范围拾取 // 必须配套此版本引擎
2020/9/16 全套配套
---------------------------------------------------------------------------
M2
扩展:Take 物品1|物品2|物品3... 数量 P0 1 // 第四参数=1时,不取走极品装备,第三参数P0不需要时可以用""代替
QChatMission脚本支持仓库操作
修正英雄处理必定掉落物品的bug
2020/9/2 全套配套
---------------------------------------------------------------------------
M2
修正上个版本刚开启引擎的快速刷怪失效问题
修正网关服务错误:setsockopt error
MonGen.txt 条目增加集中点X/集中点Y,结合集中刷几率使用,作用类似MobPlace命令,格式:地图 x y 名称 范围 数量 时间 集中刷几率(0~100) 刷新模式(0~1) 集中点X 集中点Y
LoginSrv
主菜单添加重新加载服务配置功能,有多条路由时,不要使用相同的title
2020/8/30 全套配套
---------------------------------------------------------------------------
M2 交易重叠物品会日志中记录数量
道士召唤技能排除Race=211的怪物计数
中绿毒不影响战斗小退
使用强化卷后可能导致召唤骷髅速度变慢问题
优化生物对象移动效率
2020/7/30 全套配套
---------------------------------------------------------------------------
M2 修正使用@mapinfo没有检测GM权限问题
多线徒弟出师问题
客户端
修正内挂设置不保存问题
登录器
配置的主图大小限制从1M修改为16M
2020/7/22 全套配套
---------------------------------------------------------------------------
m2 添加禁用、启用角色名NPC命令:EnableCharacter 角色名 0/1 // 0禁用,1启用
创建佣兵角色需要一个佣兵令牌,DB数据:Name=佣兵令牌,StdMode=41,Shape=35,Looks=1132 // 引擎、客户端、lui.pkg配套更新
2020/7/15 全套配套
---------------------------------------------------------------------------
RunGate 加速判断时将转身封包从动作封包中分开
dbs 创建角色提前分配地图(优化多引擎负载)
m2 修复城门状态改变可能会导致客户端崩溃问题
恢复goto死循环检测
SendMsg 8-10行会聊天,11黄字喊话,12队伍聊天,13私聊信息
多线切上线时,自动随机附近位置;参数ChangeServerRandPos=0时关闭此功能
添加几个账号信息变量:
$EMAIL // 邮箱
$BIRTHDAY // 生日
$PHONE2 // 电话
$MOBILEPHONE // 手机号码
$QUIZ // 问题1
$ANSWER // 答案1
$QUIZ2 // 问题2
$ANSWER2 // 答案2
扩展:MOD // 取模计算,同属INC、DEC、DIV系列命令
calcval 增加取模计算,符号%
ints 修改为无符号整数,没有负数,最大至42亿多
take 将物品名写成物品id,可以取走该id号的物品
添加获取当前Unix时间戳变量: // Unix时间戳请自行到百科了解
$UNIXTIME,例:
#act
ints 22 = $UNIXTIME
ints 22 + 600 // 第4参数1表示无符号计算,无符号32位整数最大值大约是42亿,而有符号(正负数)32位整数最大值大约是21亿
#if
compval $INTS22 > $UNIXTIME
#act
calcval $INTS22 - $UNIXTIME
sendmsg 7 将在$CALCRESULT秒后过期
calcval $INTS22 ~ 0 // ~符号,表示将$INTS22转换为普通的时间格式,专用符号
sendmsg 7 将在$CALCRESULT过期
#elseact
sendmsg 7 已过期
添加NPC命令FormatStr,格式化字符串,结果返回于$CALCRESULT,例:
#act
; 双引号一般用在参数包含有空格的情况下,这样即使参数中带了空格,也会被认为是一个参数
; 参数1有多少个%s,后面就需要带对应个数的参数,最多9个%s
; 对齐格式:%-32s,其中,-表示左对齐,不带-号默认右对齐;32表示字符的宽度,-号在%号的后面、32前面
FormatStr "%32s 参数:%-5s %s %s %s %s %s %s %s" 右对齐 一 二 三 四 五 六 七 八
mov s1 $CALCRESULT
FormatStr "%-32s 参数:%5s %s %s %s %s %s %s %s" 左对齐 一 二 三 四 五 六 七 八
#say
<$STR(S1)>\<$CALCRESULT>\<关闭/@exit> <返回/@main>
!setup.txt补全几个极品属性控制参数
19类项链
necklace19SpecAddRate // 属性几率
necklace19SpecAddValueRate // 点数几率
necklace19SpecAddValueMaxLimit // 最高点数
23类戒指
ring23ACAddRate
ring23ACAddValueMaxLimit
ring23ACAddValueRate
ring23MACAddRate
ring23MACAddValueMaxLimit
ring23MACAddValueRate
头盔
helmetACAddRate
helmetACAddValueMaxLimit
helmetACAddValueRate
helmetMACAddRate
helmetMACAddValueMaxLimit
helmetMACAddValueRate
2020/7/9 全套配套
---------------------------------------------------------------------------
m2 修正重新加载脚本的内存泄露
集市、佣兵功能需要在脚本头加上:(@@StallMarket或@@CreateMercenary),并添加相应标签[@@CreateMercenary]或[@@StallMarket]
例如:[@@StallMarket]
欢迎使用摆摊集市!\ \<返回/@main> <关闭/@exit>
[@@CreateMercenary]
请放上已签约的佣兵契约纸。\ \<返回/@main> <关闭/@exit>
改进金币交易行检测严谨性(mysql版本功能)
QF增加金币交易行操作的检测(mysql版本功能)
[@OnUsingCoinMarket]
#if
checklevelex < 10
#act
APPROVE 0 // 0拒绝 1批准,默认批准使用金币交易行
MESSAGEBOX 10级后才能使用金币交易行。
2020/7/6 全套配套
---------------------------------------------------------------------------
M2 补全英雄对SetAbility 24、26、27、44的支持
增加NPC命令:VerifyKeyCode <$TOTPKEY> <$STR(M5)> // 验证两步验证码,参数1是两步验证密钥,参数2是输入的验证码,用法可以参考:佣兵示意脚本.txt
修正集市报错
LoginSrv 基本设置-系统设置 增加:
新建、修改密码,新建密保问答的策略限制
增加无需验证两步验证选项
时间设置面板的解锁时间生效,建议值:90
LoginGate
空闲连接超时可以超过90秒
爆破密码、密保限制等级描述错误修正
爆破密码、密保被临时封的IP,可以在一定时间后自动解封
登录器配置器、客户端
登录器更换新的默认UI
配置器、登录器支持不规则的png图片作为主图,可制作出漂亮的非四方形登录器
优化加快登录器搜索目录速度
升级列表中服务器列表和按钮链接的自定义: // 需要放在文本的行首
;主要列表 http://www1.xxxx.com/logintool/serverlist.txt
;后备列表 http://www2.xxxx.com/logintool/serverlist.txt
;论坛链接 http://www.xxxx.com/bbs.html
;客服链接 http://www.xxxx.com/kf.html
;支付链接 http://www.xxxx.com/pay.html
;注册账号链接 http://www.xxxx.com/newid.html
;修改密码链接 http://www.xxxx.com/chgpwd.html
脚本、聊天栏支持网址二维码,例如: // 下面例子中,后面的888是识别用,可以是任意整数,用法参考之前的PIC功能扩展
扫描下载iPhone平台的微软两步验证器APP:\<pic=https://apps.apple.com/cn/app/microsoft-authenticator/id983156458,888>\ \
安卓版的微软验证器放在本次更新的附件中,文件名:com.azure.authenticator.apk,自己可以放上网站,提供下载链接的二维码
注:微软验证器有个好处,可以选择云备份,手机重装系统或者丢了,之前备份在云端的信息都在,可以在新手机重新下载原来的备份
2020/6/28 全套配套
---------------------------------------------------------------------------
M2 !setup.txt添加参数:ItemOwnershipHints,拾取的物品属于他人时,是否提示角色名,默认关闭
已签约契约书可查看装备和技能等信息
摊位物品数量由10个扩展到15个
扩展制作佣兵命令:QUERYMERCENARIES 5 1 0 // 参数3为1时表示过滤掉隐藏角色
增加摊位集市系统:
摆摊物品汇总、分类、排序等功能,可以在界面上搜索、购买摊位物品,
开启UI的脚本:<打开摆摊集市/@@StallMarket>
!setup.txt参数StallMarketCharge,可修改上架摊位集市时每件商品的手续费,默认100金币
DBS 多角色创建
集市、佣兵系统的支持
客户端
增加摊位集市功能,需更新lui.pkg并配套M2
已签约契约书可按Ctrl+鼠标中键查看装备和技能等信息
最多创建的角色由2个变更为8个
2020/6/18 全套配套
---------------------------------------------------------------------------
M2 佣兵通讯消息修改,需要和客户端配套更新
修正MAIN_FUNC_BTN_SHOW只能执行序号0-10问题
修正引擎部分地方经验超过21亿后显示为负数问题
@StdModeFuncXX,XX可以超过255,公式:XX = Reserved * 256 + AniCount,Reserved=99已经被占用(使用一次掉一点持久),不要使用该值即可
有几率导致物品不显示问题,实际已经掉落
交易时不允许被赠送
NPC命令:MAIN_FUNC_BTN_CAPTION 序号 按钮标题
雷炎洞效果失效问题
沙巴克城门显示问题
攻沙期间NPC不消失问题
客户端
内力条0值显示修正
ListView控件显示修正完善
佣兵通讯消息修改,需要和引擎配套更新
有几率导致物品不显示问题
因神兽变身有几率导致崩溃bug
雷炎洞效果声音错误问题
城墙、城门不作为尸体隐藏
2020/6/13 全套配套
---------------------------------------------------------------------------
M2 BotAutoWearEquipments.txt // 简单的假人拾取后自动穿戴列表,首次运行后查看文本说明
继续修正假怪问题
优化部分广播消息
合区工具合并时支持给从区设置Ints的值
添加佣兵系统功能:
可以将角色压成签约状态的契约纸,已签约的契约纸可以用于创建新角色,详见示意脚本:佣兵示意脚本.txt // 需要配套程序:M2、DBS、客户端、lui.pkg,合区工具
契约纸DB数据:xxxx,佣兵契约纸,49,0,1,0,0,0,1581,1,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,
日志查询工具可以查询此类操作的记录
@make 佣兵契约纸 1 id // 用于补偿佣兵契约纸丢失,id指制作佣兵契约时记录的M_xxx中的xxx(数字序号)
2020/6/9 全套配套
---------------------------------------------------------------------------
M2 修正SetAbility引起的内存泄露问题!
合击击中效果补全和一些效果修正,需要配套客户端更新
使用隐身术后再带隐身戒指无效问题
修正假人招出的英雄升级后有几率收回问题
增加BotNoAttackList.txt,设置挂机假人不攻击列表,格式:怪物名 1 // 1挂机假人不攻击
假人可以触发:[@PickupItem]、[@HeroLogin]
增加被英雄目标锁定的提示,可以在英雄设置面板开关,默认开启
部分地图随机飞有几率进入黑点导致动不了问题
尝试减少假怪现象
取消存重叠类物品存仓时的自动重叠
英雄被刺杀会回击
SetAbility 49 1 99999999 // 禁止使用商铺
野蛮冲撞麻痹效果可以在界面修改为0秒
[@KillPlayXX]、[@KillPlayMonXX] 支持变量:
$PARAM(0) 杀死的怪物名字
$PARAM(1) 地图编号
$PARAM(2) 地图名字
$PARAM(3) 怪物X坐标
$PARAM(4) 怪物Y坐标
$PARAM(5) 怪物等级
客户端
合击击中效果补全和一些效果修正,需要配套M2更新
客户端因为退出慢,导致人物有可能延迟下线问题
修正DBS未开启情况下,重复连接角色网关问题
移动后翅膀隐藏问题
取消存重叠类物品存仓时的自动重叠
2020/6/8 全套配套
---------------------------------------------------------------------------
M2 增加NPC命令:DELFIREBURN 地图名 X Y 类型(1-8) // 删除光圈,用于删除MobFireBurn刷出的光柱(MobFireBurn刷非类型5的光柱不会消失)
修正上个版本刷光圈一定时间后报错
由于补全了部分技能ID的攻击触发,导致【劈星斩】因穿透起作用变成威力异常,将技能DB中【劈星斩】的Penetrate设置为0即可恢复原威力,同时注意是否有脚本触发该技能的减血效果。
客户端
头发、斗笠不支持微端问题
客户端路径下的client.ini可以定义NPC名字是否为粗体,内容: // 用登录器自动更新client.ini到客户端目录下即可,默认非粗体
[setup]
BoldNpcName=1
; 是否默认显示称号
ShowUserTitle=1
; 注册按钮账号的网站
NewIDUrl=https://www.xxxxx.com
2020/6/1 全套配套
---------------------------------------------------------------------------
M2 添加变量:$MAPWIDTH,$MAPHEIGHT // 当前地图的宽、长
添加NPC命令:GuardPos x y 范围 // 设置假人的守护点和范围(不小于Setup中的maxViewRangeX),x为-1时取消守护
例子:
;随机地图点守护
MAP $CURRENTMAP
GuardPos $CURRENTX $CURRENTY 30
$ATTINFO_SKILLID 部分技能ID获取不到问题
降低重伤状态伤害
修复上个版本行会战双方名字颜色问题
镖车名字显示问题
2020/5/31 客户端+引擎配套
---------------------------------------------------------------------------
M2 1、SetAbility 赋值时会触发QF的[@SetAbility_XX],属性过期后将触发[@ResetAbility_XX] // 参考之前SetAbility的更新说明
2、添加NPC命令:PetPickupItemRange 宠物名字 范围(0-15)
宠物自动拾取范围,宠物名字为“H”时指英雄,宠物名字为“Self”时指自己(挂机用),“*”指非英雄的所有宠物,范围0时关闭自动拾取,可结合上条更新进行定时。
3、添加NPC命令:Lockdown 1 // 锁定,不可攻击、移动、魔法等,Lockdown 0是解锁
4、重点的性能优化,在玩家/怪物/物品集中情况下,引擎CPU占用率有大改善,改善人怪假象,
适当调整!Setup.txt的maxviewrangex、maxviewrangey,以便适应大分辨率的客户端,建议分辨设置为16、15,无需适应大屏幕设置12、12即可,较小的值可以节约CPU占用。
5、添加NPC命令:FakePlayer 0/1 // 0踢假人,1加载假人
6、添加NPC命令:GuildStat 行会名 统计玩家等级 过滤同机器码(0/1) P1 // 统计行会在线玩家数,数量返回P1,行会名为Self时指自己行会,可结合IsGuildMaster使用。
7、行会成员超过一定数量编辑不了封号问题
客户端
英雄不能在死尸上进行守护bug
修正微端因拉取大文件丢包问题
优化网络接发能力,优化性能
提高后台FPS,改善体验
修正连续多次弹出消息窗口bug
行会成员超过一定数量编辑不了封号问题
被顶号,网络异常断开等情况下,可以选择返回登录界面再次进游戏(带防护盾的登录器可能不支持)
聊天栏命令:~history // 历史记录,Ctrl+L
~clear // 清理聊天栏,Ctrl+K
2020/5/17
---------------------------------------------------------------------------
M2 1、添加NPC命令:EndGuildWar 行会名1 行会名2 // 结束行会战,两个参数可以使用通配符*
2、添加条件判断:
#if
true // 代替checklevelex >= 0之类的语句
#act
...
3、修正上个版本对MonDropRate的改进,导致爆率计算有可能因计算溢出而造成掉落概率错乱问题
4、优化部分逻辑代码
2020/5/2
---------------------------------------------------------------------------
M2 命令扩展:Kick 1 // 让在线玩家执行小退
killSlaveName * // 杀死所有随从;可以放在[@OnLogout_OffLinePlaying]执行,实现离线挂机再次登录的免踢功能
修改 MonDropRate 对于爆率文件中 1/xxx 的写法也起作用,计算公式:xxx/yyy / 100 * MonDropRate,假如MonDropRate=200,即在原来爆率基础上提高一倍
附带条件的爆率条目,有所有权才会爆出
2020/4/13 全套程序配套更新
---------------------------------------------------------------------------
M2/Client 增加战斗中小退时间限制,默认0秒,在参数设置-时间限制面板调节 // 限于PK,打怪不受限制
Client 修正自动挂机自定义怪物过滤列表位置不正确问题
添加变量$TIMESTAMP,获取当前时间,格式:年-月-日 时:分:秒,CompVal增加对此时间格式的比较支持,
添加NPC指令:CalcVal 数值1 操作符(+-*/=) 数值2,结果返回在变量$CALCRESULT中,对于字符串和时间的操作,只支持+-,
例如:CalcVal $TIMESTAMP + 1,返回结果在$CALCRESULT,对于时间计算单位为秒,
此条更新主要时为了支持自定义数据表中时间格式字段的运用,也适用于非MySQL版本的引擎。
M2 修正刀刀刺杀非刺杀位也有忽视防御效果bug
Client Tiles,SmTiles,Objects支持到255
2020/3/27 客户端+微端服务器
---------------------------------------------------------------------------
M2 屏蔽掉护体神盾的释放动作
微端 启用参数:expiry_time // 连接空闲超时(秒),默认43200
2020/3/27 客户端+微端服务器
---------------------------------------------------------------------------
优化微端速度,解决微端小黑块问题
修正微端服务器有几率因包未发送完连接被掉导致崩溃bug
M2 修正武器+诅咒卖商店价格异常问题
M2 修正召唤英雄时,自己偶尔不能及时看到英雄问题
M2 战士英雄技能释放时机更准确
M2 扩展 Take/TakeW 物品1|物品2|物品3|物品4... 数量 P0 // P0返回删除的数量,TAKE物品不要和金币混用
--------------------------------------
M2 细化英雄处理粒度;改进英雄组合速度,开启可以细调英雄各种组合动作
之间的间隔,让英雄的动作看起来更合理、更像玩家的动作;
不开启,则英雄各种组合动作有点不均匀,看起来像使用了加速。
2020/3/20 配套更新
---------------------------------------------------------------------------
DBServer去掉对dbserver.dll的调用
M2 修正怪物设置可挖,导致怪物的爆率扩展检测失效问题
M2 会导致ini文件产生重复项问题
M2/Client 修复城墙状态和特效显示问题
修复客户端物品管理有几率崩溃问题
修正客户端显示+HP/MP与实际不符问题
客户端可以自动解包自定义的可吃物品包
--------------------------------------
DBServer 增加文件缓冲开关,默认开启
开启此项,将大幅度提高数据文件的读写性能,但在大多数时刻外部程序
对DB文件不能操作:即无法复制DB文件,GameCenter也无法实现自动备份。
如过想通过GameCenter自动备份,可以关闭此选项,但最好开启角色数据缓存,
既能保证性能,也可以实现自动备份。
2020/3/19 登录器 + 客户端
---------------------------------------------------------------------------
登录器的服务器列表支持加密
2020/2/28 全套程序配套更新
---------------------------------------------------------------------------
登录器/客户端
改进搜索传奇目录方式
默认分辨率修改为1024*768(原800*600)
修正英雄频繁使用物品导致主人使用物品也受限制问题 // M2/RunGate/客户端 需配套更新
修正频繁使用药品时手动使用其他物品导致物品消失假象 // M2/RunGate/客户端 需配套更新
修正智能双龙斩识别bug
M2 极品几率还原为原先多加1点的方式,但是不会超过最高点数限制;
合计命中微调;
套装数最多支持到2048套(原255套)
修正人物打出的龙影剑法/双龙斩可能他人看不到效果bug
优化封包下发效率
合区工具 还原重命名规则
2020/2/20 全套程序配套更新
---------------------------------------------------------------------------
M2 爆率变量检测扩展爆出才扣代币参数:
1/x 装备名称 数量 $变量 检测符(><=!?) 检测数值 扣除(负数扣除,正数增加) 爆出才扣代币(默认0爆出才扣,1未爆出也扣)
M2 修正Give未刷新角色负重问题,修正技能面板调节[流星火雨]范围失效问题
M2 db数据的AC可以设置聚灵珠使用最大等级限制,AC=0不限制最大使用等级,AC不应该小于NeedLevel的值
客户端 优化微端速度
PLAYEFFECT 扩展修改: // 需要M2/客户端配套
--------------------------------------
PLAYEFFECT WIL名称 X Y 起始图片 帧数 间隔 循环次数 声音 声音循环(0/1) 对象(""/Self/All/Guild/地图名)
修改为
PLAYEFFECT WIL名称/X/Y 起始图片 帧数 间隔 循环次数 声音 声音循环(0/1) 对象(""/Self/All/Guild/地图名) 特效模式(0/1)
注意:WIL名称 X Y -> WIL名称/X/Y;特效模式:0普通,1技能特效模式(默认);可以利用微端模式下的~cui.txt自定义资源
2020/2/16 全套程序配套更新
---------------------------------------------------------------------------
客户端支持png制作的wzl,!注意:大量使用png作为图片素材可能会导致客户端因显存不足而崩溃
1、增加制作wzl文件的WzlMaker工具,支持导入png文件,使用png制作出来的wzl只有对应的新客户端才兼容
制作png的wzl,最好使用此工具,效率最佳,其他工具制作的wzl,客户端读取效率差,会导致性能不强的机器卡顿。
2、增加自定义素材列表文本,放在传奇目录\data\~cui.txt,格式: // 目前暂应用于物品特效
;ID(1~100) 文件名
1 .\data\~beam.wil
2 .\data\~beam_png.wil
可以用登录器自动更新功能自动更新~cui.txt至data目录,
然后使用微端即可,微端服务器data目录需要放相应的wzl文件。
3、物品特效设置的CustomItemNameColors.txt格式扩展为: // !注意:物品特效设置图片不再在lui.pkg里调用,因为不支持微端,图片也没有偏移设置
;自定义物品名字颜色和地面物品特效
;格式:物品名字 颜色(1..255) 特效图片索引 特效图片数量 自定义素材ID(对应~cui.txt中定义的ID)
魔杖 0 90 10 2
命运之刃 0 90 10 1
4、更新微端支持png格式的wzl
5、GameCenter 支持定时开/关服务器;定时开服之前会执行GameCenter所在目录下BeforeStartGame.bat
2020/2/11 全套程序配套更新
---------------------------------------------------------------------------
M2 英雄支持双龙斩/龙影剑法,保存龙影剑法剑气值;改善合击体验
Client 支持智能双龙斩/龙影剑法
LoginSrv 两步验证码错误累计3次才踢下线,配套客户端有提示
Launcher 首次运行提示否直接在当前目录以微端模式运行游戏,需要配套此版本的客户端
DataTool 支持师徒和结婚数据修正
2020/2/10 全套程序配套更新
---------------------------------------------------------------------------
Client 主界面自定义按钮扩展为40个,@MainBtnFunc_40 变成主按钮触发
M2 人物设置为免毒/符释放技能时,英雄也将免毒/符放技能
M2 修复英雄PowerRate时间到了不清理问题
------------------------------------------
M2 添加针对A/S字符变量的NPC命令:INS S1 位置(1~S1的长度+1) 插入字符 重复次数(默认1)
M2 添加针对P/G/D/M/I/H等整数型变量的NPC命令:
AND,OR,XOR,NOT运算,CompVal支持与运算(&号)比较,这组操作相比下面的命令会比较晦涩难懂,但是一次可以批量开关;
针对0~31位的操作和比较:SetBit,UnSetBit,FlipBit,IsBitSet,第二参数表示第几位(0~31)
结合以上命令可以给一个int类型的整数设置32个开关,节省变量的开销,有关操作请上网查阅。
// AND,OR,XOR,NOT,CompVal 例子:
[@OR]
#act
OR P1 5 // 或运算,1位和3位设置为1(1是低1位,4是低3位,可以用计算器查看BIN数据)
SendMsg 7 <$STR(P1)>
[@XOR]
#if
CompVal <$STR(P1)> & 1
#act
XOR P1 1 // 异或运算,1位设置为0
#if
CompVal <$STR(P1)> & 4 // 异或运算,3位设置为0
#act
XOR P1 4
[@CheckSwitchState]
#if
CompVal <$STR(P1)> & 1 // 于运算 比较
#act
SendMsg 7 P1低1位二进制数值为1
#elseact
SendMsg 7 P1低1位二进制数值为0
#if
CompVal <$STR(P1)> & 2
#act
SendMsg 7 P1低2位二进制数值为1
#elseact
SendMsg 7 P1低2位二进制数值为0
#if
CompVal <$STR(P1)> & 4
#act
SendMsg 7 P1低3位二进制数值为1
#elseact
SendMsg 7 P1低3位二进制数值为0
// SetBit,UnSetBit,FlipBit,IsBitSet 例子:
[@SetBit]
#if
!IsBitSet P1 22 // 第22位是否关闭
#act
SetBit P1 22
SendMsg 7 P1的22位现在处于开启状态
#if
IsBitSet P1 22 // 第22位是否开启
#act
UnSetBit P1 22
SendMsg 7 P1的22位现在处于关闭状态
[@FilpBit]
#if
checklevelex > 0
#act
FlipBit P1 31 // 切换状态,开<->关来回切换
#if
IsBitSet P1 31 // 第31位是否开启
#act
SendMsg 7 P1的31位现在处于开启状态
#elseact
SendMsg 7 P1的31位现在处于关闭状态
------------------------------------------
M2 添加NPC命令:MakePoison 类型(0~11) 秒数 点数,第一参数为cleanup时,清理掉状态;类型:0绿毒/1红毒/3雷击/4冰冻/5石化/6禁锢(同石化)/7重伤(丧失防御)
M2 添加获取SetAbility数值变量:$ABILITIES0~500;增加$TARINFO_ISSLAVE变量,是否是随从
例子:
[@SetAbility]
#act
SetAbility 50 20 900 石化技能恢复正常
SendMsg 7 获得20%几率的石化技能,持续15分钟
QF:
[@Attack]
#if
CompVal <$TARINFO_RACE> ! 1 // 非人物
CompVal <$TARINFO_ISSLAVE> = 0 // 非随从
CompVal <$ABILITIES50> > 0 // Abilities的50位置有数值
#act
SetRandomNo 100 // 按100随机
#elseact
break
#if
CompVal <$ABILITIES50> > <$RANDOMNO> // 命中触发
#act
T.MakePoison 5 5
------------------------------------------
M2/Client 扩展CustomItemNameColors.txt,格式:物品名字 颜色(1..255) 特效图片索引 特效图片数量
其中特效图片放在lui.pkg中,文件名格式为:beam_xxxxx.png,x为0~9的阿拉伯数字;
例如文件中定义:法杖 254 200 10,则lui.pkg中应该放上:beam_00200.png~beam_00209.png等文件
批量图片重命名可以使用everything,搜到所有用到的图片按F2操作即可;
png文件制作有一定规格,中心点需要按像素对齐。
------------------------------------------
2020/2/7 全套程序配套更新
---------------------------------------------------------------------------
M2 修正SetAbility隐身不恢复正常问题;武器减速问题;其他极品属性的地面物品也闪绿光
M2 修正在[@Pickup]触发字段里删除拾取的物品出现物品假象问题;攻击触发T.操作只触发一个问题
M2 QueryValue 命令增加对QChatMission的支持,第6参数为:QC
M2 限制爆出数量物品规则代码优化
Client 客户端内挂修改物品规则及时更新地面物品显示,优化战士隔位刺杀走位
Client 修正浏览他人摊位时,有几率被关闭问题,需要同时更新M2和客户端
Rungate 修正一处可导致崩溃的漏洞
2020/2/3 全套程序配套更新
---------------------------------------------------------------------------
M2/Rungate 增强稳定性,需要配套使用
M2/Client 在英雄控制面板可以开关【人物免药粉/护身符释放相应技能】
DBServer 禁用角色:玩家不可恢复角色,不能登录,可以在角色管理界面恢复启用;删除角色数据:不可恢复,不能登录。
DataTool 提高性能,添加ini重复项清理功能,恢复装备说明导出功能
2020/1/29 全套程序配套更新
---------------------------------------------------------------------------
M2 修正魔龙教主/火龙的特殊攻击可以对死亡角色有效bug
M2 修改物理攻击打不到城墙bug
M2 优化角色下线/上线地图管理对象处理,减少假人假怪现象
M2 优化CHECKUSERDATE的兼容性
Rungate 解决因为封加速计算bug可能导致卡住几秒
Client 大幅度减少假怪现象,优化物品管理,解决26号版本因物品系统优化引起卡死bug
Client 两步验证二维码添加当前服务器名为提供者,解决不同服同账号扫描二维码被覆盖问题,现在两步验证使用
也方便,可在手机上搜索安装APP或微信小程序:二次验证器、TOTP、动态验证、两步验证、Authenticator等等...
别再使用微信公众号那种文本读写的方式去验证,使用久了文本体积变大会导致游戏卡顿!
2020/1/18 全套程序配套更新
---------------------------------------------------------------------------
M2 去掉部分加载/保存角色数据日志;修正SetAutoGetExp命令第三参数为空时出错bug
DBS 优化代码
2020/1/15 全套程序配套更新
---------------------------------------------------------------------------
修正DBS使用缓存情况下,因关闭保存缓存间隔太长,导致被GameCenter强制关闭而导致回档问题
2020/1/14 全套程序配套更新
---------------------------------------------------------------------------
M2 修正装备单独爆率设置读取不到问题
M2 优化角色DB存取逻辑,释放主线程压力
RunGate 优化ClientSocket,提高稳定性
DBS 优化角色数据的存取IO性能;优化读写逻辑,防止文件读写失败问题
2020/1/13 全套程序配套更新
---------------------------------------------------------------------------
M2/DBS 优化角色数据的存取逻辑
2020/1/9 全套程序配套更新
---------------------------------------------------------------------------
!重要: M2修因角色数据个别错误可能导致登录黑屏问题
!重要: DBS修正可能死锁问题
M2优化角色数据的存取逻辑
DBS允许将缓存数量设置为0
2020/1/6 全套程序配套更新
---------------------------------------------------------------------------
!重要: 修正DBServer未能正确处理[创建英雄/改名/英雄改名]和其他存储问题
!重要: 修正因底层函数优化引起的各种小bug,比如微端部分资源更新不了...
修正拾取规则未加载bug
自定义怪物名字颜色,Envir目录的CustomMonNameColors.txt,动态修改文本后重新加载怪物数据库生效,格式:怪物名字 颜色(1..255),客户端会默认显示自定义怪物的名字,可在内挂选择关闭
自定义物品名字颜色,Envir目录的CustomItemNameColors.txt,动态修改文本后重新加载物品数据库生效,格式:物品名字 颜色(1..255) // 非176版本才有此功能
M2修正死亡之眼技能能打到非本地图怪物问题
M2修正聚灵珠不能在DB设置爆出为满经验问题
2019/10/22 !全套程序配套使用
---------------------------------------------------------------------------
M2加入自动更新功能,可在关于菜单设置是否自动检测更新
M2可储存ints从0~9扩展到0~29,尽量使用此变量,避免使用直接读写文本的自定义变量
M2每1开网关端口的人数限制从6000提高到8000
提高M2处理游戏流量的能力
修正上个版本可能存在跑位空气墙问题
游戏网关接收缓冲区大小自适应,增加发送缓存以提高处理流量能力(内存相对上个版本会多一些)
游戏网关修正关闭程序时的一个bug
M2/DBS改写人物数据存取逻辑,大幅度提高存取数据的效率
修正很小的可能造成个别玩家数据存储错误bug,需要配套更新M2和DBServer
修正挂机假人会攻击人物下线时刻的英雄
扩展NPC命令:compval <$USERID> ^ "userid" // $USERID是否以userid开头
扩展NPC命令:compval <$USERID> ` "userid" // $USERID是否以userid结尾
登录器支持自配置自动刷新服务器列表
登录器配置器可自定义客户端Logo,png格式,可利用登陆器更新功能下载至传奇目录,留空使用默认logo(建议使用PS裁剪掉透明部分以减少文件大小)
KillMonGetFullExp +/-/= 秒数 // 高等级杀怪获取全部经验时间(秒),存库
REFITEMSHAPE 位置 数值 // 引用某同类型物品外观,位置:0衣服 1武器,数值参考stditems.db中的物品idx,存库,(连击合击版本才支持)
---------------------------------------
增加角色改名功能,详见附件示意脚本,改名之前,如果有武器正在升级,需要取回
---------------------------------------
推广ID功能
登录器配置器增加“推广ID”的填写,最多14字节(7个汉字)
游戏内获取推广ID的脚本变量:<$ADID>
---------------------------------------
增加NPC命令:SetAbility 位置(0~500) 数值 持续秒数 结束时的提示字符(留空不提示)
其中有如下49个固有属性,其他的50-100可以用作临时计时变量,也可以作为计时器使用。
[@SetAbility]
#ACT
SetAbility 10 15 30 暴击附加属性恢复正常。
SENDMSG 5 获得暴击附加属性15点,持续30秒。
;SetAbility 10 0 0 暴击附加属性恢复正常。 // 立即清理位置10的属性
;SetAbility cleanup // 清理所有属性
位置对应属性:
0 // 腕力
1 // 负重
2 // 背包重量
3 // 准确
4 // 敏捷
5 // 魔法躲避 每一点代表10%,10点即为100%。
6 // 毒物躲避 每一点代表10%,10点即为100%。
7 // 中毒恢复 每一点代表10%,10点即为100%。
8 // 生命恢复 每一点代表10%,10点即为100%。
9 // 魔法恢复 每一点代表10%,10点即为100%。
10 // 暴击
11 // 目标爆率
12 // 防爆
13 // 忽视 属性为百分比,最大为100。
14 // 增伤 属性为百分比,最大为100。
15 // 反射 属性为百分比,最大为100。
16 // 物减 属性为百分比,最大为100。
17 // 魔减 属性为百分比,最大为100。
18 // 吸血
19 // 幸运
20 // GM隐身(观察模式)
21 // GM无敌
22 // 禁止使用物品
23 // 禁止丢弃
24 // 禁止移动
25 // 禁止跑步
26 // 禁止物理攻击
27 // 禁止魔法攻击
28 // 稳如泰山(不可被野蛮推动)
29 // 禁止召唤英雄
30 // 禁止修改攻击模式
31 // 禁止使用仓库
32 // 麻痹模式
33 // 魔道麻痹
34 // 复活
35 // 护身
36 // 传送
37 // 探测
38 // 隐身
39 // 破麻
40 // 防毒
41 // 破复活
42 // 破护身
43 // 背包不掉
44 // 装备不掉
45 // 攻击加速(10点以下为减速度,10点以上为加速度,与武器一致)
46 // 禁止交易
47 // 禁止摆摊
48 // 禁止出售物品
---------------------------------------
新增爆率文件引入用法,可以和以前的爆率混搭使用,支持多个文件被同时调用,方便编辑爆率
比如在 白野猪.txt 写入如下内容: // MonDropItems目录位于MonItems目录下
#CALL [MonDropItems\药品爆率.txt]
#CALL [MonDropItems\衣服爆率.txt]
---------------------------------------
支持爆率变量检测,兼容老格式,满足指定条件,物品才会爆出:
1/x 装备名称 数量 $检测变量 检测符(><=!?) 检测数 扣除“$检测变量”的数量(负数扣除,正数增加) 普通随机掉落是否必定扣除(0/1),设置1即使没有掉落也扣除,默认关闭
检测符: ?表示>=,^和`用于字符串检查
扣除: 和爆率没有关系,只关联检查条件,设置数值为0不进行扣除
例子:
1/1 强效太阳水 1 $GOLDCOUNT ? 0 100000 // 增加10万金币
1/3 强效太阳水 1 $GAMEGOLD ? 100 -100 // 元宝>=100时,有1/3几率计算掉落物品,否则不掉;元宝>=100时,扣除100元宝
1/8 某区物品 1 $SERVERNAME = XX传奇1区 // XX传奇1区 才有可能爆出
1/8 某物品 1 $USERID ^ head // 账号以head开头 才有可能爆出
1/8 某物品 1 $USERNAME ` tail // 角色名以tail结尾 才有可能爆出
支持变量:
$SERVERNAME
$SERVERIP
$WEBSITE
$BBSSITE
$CLIENTDOWNLOAD
$QQ
$PHONE
$BANKACCOUNT0
$BANKACCOUNT1
$BANKACCOUNT2
$BANKACCOUNT3
$BANKACCOUNT4
$BANKACCOUNT5
$BANKACCOUNT6
$BANKACCOUNT7
$BANKACCOUNT8
$BANKACCOUNT9
$GAMEGOLDNAME
$GAMEPOINTNAME
$USERCOUNT
$MACRUNTIME // 服务器开启天数
$SERVERRUNTIME // 引擎开启分钟数
$DATETIME: // 当前日期,格式:2019-11-12
$CURRENTMAPDESC // 地图名
$CURRENTMAP // 地图文件名
$CURRENTX
$CURRENTY
$GENDER // 0,1
$JOB //0,1,2
$ABILITYADDPOINT0..ABILITYADDPOINT6
$ABILITYADDTIME0..ABILITYADDTIME6
$USERNAME
$USERID
$CURITEMID
$ATTINFO_SKILLID
$ATTINFO_RACE
$ATTINFO_ISHERO
$ATTINFO_NAME
$ATTINFO_FNAME
$ATTINFO_MNAME
$CURTITLENAME
$MEMBRETYPE
$MEMBRELEVEL
$RANDOMNO
$RELEVEL
$GUILDHUMCOUNT
$GUILDNAME
$RANKNAME
$LEVEL
$COLLECTEXP
$COLLECTIPEXP
$HP
$MAXHP
$MP
$MAXMP
$AC
$MAXAC
$MAC
$MAXMAC
$DC
$MAXDC
$MC
$MAXMC
$SC
$MAXSC
$HIT
$SPD
$BONUSPOINT
$BONUSABIL_AC
$BONUSABIL_MAC
$BONUSABIL_DC
$BONUSABIL_MC
$BONUSABIL_SC
$BONUSABIL_HP
$BONUSABIL_MP
$BONUSABIL_HIT
$BONUSABIL_SPD
$BONUSABIL_X2
$EXP
$MAXEXP
$PKPOINT
$HW
$MAXHW
$BW
$MAXBW
$WW
$MAXWW
$HUNGER
$CREDITPOINT // 支持扣除操作
$GOLDCOUNT // 支持扣除操作
$GAMEGOLD // 支持扣除操作
$NIMBUS // 支持扣除操作
$GAMEPOINT // 支持扣除操作
$GAMEDIAMOND // 支持扣除操作
$GAMEGIRD // 支持扣除操作
$INTS0..INTS30 // 支持扣除操作
$LOGINLONG // 登录时长,分钟
$DRESS // 衣服名
$WEAPON // 武器名
$RIGHTHAND
$HELMET
$NECKLACE
$RING_R
$RING_L
$ARMRING_R
$ARMRING_L
$HELMETEX // 非176版本
$BUJUK // 非176版本
$BELT // 非176版本
$BOOTS // 非176版本
$CHARM // 非176版本
$DRUM // 非176版本
$HORSE // 非176版本
$FASHION // 非176版本
$HWID
$YEAR
$MONTH
$DAY
$HOUR
$MINUTE
$SECOND
$MILLISECONDS
$MONDROPRATE
$IPADDR
$IPLOCAL
$GUILDBUILDPOINT
$GUILDAURAEPOINT
$GUILDSTABILITYPOINT
$GUILDFLOURISHPOINT
$STR(XX) // 支持扣除操作,其中的全局变量不要频繁使用,否则造成服务器卡顿
$H.STR(XX) // 支持扣除操作,其中的全局变量不要频繁使用,否则造成服务器卡顿
$HUMAN(XX) // 支持扣除操作,定义为内存操作将会自动保存,否则不自动保存;此变量不要高频使用,否则有效率问题
$H.HUMAN(XX) // 支持扣除操作,定义为内存操作将会自动保存,否则不自动保存;此变量不要高频使用,否则有效率问题
$GUILD(XX) // 支持扣除操作,定义为内存操作将会自动保存,否则不自动保存;此变量不要高频使用,否则有效率问题
$GLOBAL(XX) // 支持扣除操作,定义为内存操作将会自动保存,否则不自动保存;此变量不要高频使用,否则有效率问题
$PARAM(0..7)
攻击触发:
---------------------------------------
!setup.txt AttackTrigger=0 // 攻击触发总开关,默认0关闭,1开启触发QF的[@Attack]
Envir\MonAttackTrigger.txt // 可以被攻击触发的怪物名称列表,每行一个
// 下列为[@Attack][@UnderAttack]攻击触发字段的【专属】变量,不能用于其他字段,否则引擎会发生崩溃
$TARINFO_RACE // 目标Race
$TARINFO_ISHERO // 目标是否英雄 {'0', '1'}
$TARINFO_NAME // 目标名称
$TARINFO_FNAME // 目标全名
$ATTINFO_SKILLID // 攻击使用技能ID
$ATTINFO_RACE // 攻击者Race
$ATTINFO_ISHERO // 攻击者是否英雄
$ATTINFO_NAME // 攻击者名称
$ATTINFO_FNAME // 攻击者全名
// 目标变量
$T.CURRENTMAPDESC
$T.CURRENTMAP
$T.CURRENTX
$T.CURRENTY
$T.USERNAME
$T.MONKILLER
$T.KILLER
$T.LEVEL
$T.HP
$T.MAXHP
$T.MP
$T.MAXMP
$T.AC
$T.MAXAC
$T.MAC
$T.MAXMAC
$T.DC
$T.MAXDC
$T.MC
$T.MAXMC
$T.SC
$T.MAXSC
$T.HIT
$T.SPD
// QF例子
[@Attack] // 人或随从攻击列表指定怪物,会触发
#IF
COMPVAL <$TARINFO_FNAME> = 蜈蚣
COMPVAL <$T.HP> > 50
#ACT
T.HUMANHP - 50
SENDMSG 7 目标【<$TARINFO_NAME>】血量<$T.HP>
#IF
COMPVAL <$ATTINFO_RACE> ! 1 // Race=1 是玩家,这里就是非玩家(即随从)
#ACT
SENDMSG 7 你的随从<$ATTINFO_NAME>正在攻击<$TARINFO_NAME>
[@UnderAttack] // 被人或随从或列表指定怪物攻击,会触发
#IF
COMPVAL <$ATTINFO_FNAME> = 蜈蚣 // 蜈蚣打随从或自己
#ACT
HUMANHP - 50 // 主人扣血
#IF
COMPVAL <$ATTINFO_MNAME> ! "" // 攻击者主人名称不为空
#ACT
SENDMSG 7 【<$ATTINFO_MNAME>】的随从<$ATTINFO_NAME>正在攻击你
#ELSEIF
COMPVAL <$TARINFO_RACE> ! 1 // 自己的随从
#ACT
SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你的随从【<$TARINFO_NAME>】
#ELSEACT
SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你
---------------------------------------
主界面自定义按钮,最多20个,参考附件,可利用登陆自动更新配置
客户端data目录下增加配置文件:MainWidgetCfg.ini // 主界面自定义按钮,最多20个,参考附件,可利用登陆自动更新配置
MainWidgetCfg.ini的wmlib=Lui时,会调用Lui.pkg的图片,图片名为lui.pkg内的文件名,非lui库的图片索引大于0才生效
MainWidgetCfg.ini LoginShowChildButton=0/1 字段,登陆是否显示各个子按钮
点击按钮会根据按钮序号执行QChatMission-0.txt脚本对应的[@MainBtnFunc_0至20]字段,[@MainBtnFunc_20]是显示开关的触发
相应的NPC控制脚本命令如下:
MAIN_FUNC_BTN_SHOW 序号 0/1 // 显示或隐藏
MAIN_FUNC_BTN_FLASH 序号 0/1 // 按钮是否闪烁
MAIN_FUNC_BTN_POS 序号 X Y // 调整按钮位置,当X或Y数值在5000~15000是居中对齐,偏移量=X-10000;当X或Y数值在15000~25000是右对齐,右边偏移量=X-20000
!Setup.txt OpenMainFuncBtns=0/1 // 开启或关闭主界面功能按钮功能,默认关闭
2019/9/29
---------------------------------------------------------------------------
!setup.txt参数,MagicHitRateCompensate // 对奔跑的目标魔法命中率调节,默认0,数字越大命中越高,设置3基本可以达到100%命中;可以设置负数来减少命中率,-1大概相当于复古参数
修正偶尔出现被攻击21E问题
英雄守护模式:HeroGuardMode=1 // 默认1可以飞到目标点,0则是飞到主人身边再跑往目标点
修正21E版DBServer第一个角色读取不到问题
2019/9/16 !引擎和DBS需要配套
---------------------------------------------------------------------------
优化DBS,避免因为一些删除操作造成数据混乱
INI_RENAME_SECTION 文件 节名 新节名 // 重命名Ini的节点名
StringsReplace 文件名 原字符 新字符 1 HardDisk // 将文本中的原字符替换为新字符;其中的1表示忽略大小写,0不忽略大小写;
// HardDisk表示直接使用文本读写模式(强烈建议内存模式操作,直接读写文本严重降低引擎性能)
RenameFile 源文件名 新文件名 // 重命名文件名,支持内存中的文件操作,例如:
-----------------------------------
mov S1 <$PARAMSTR(1)>
inc S1 ".txt"
mov S2 <$PARAMSTR(2)>
inc S2 ".txt"
RenameFile <$STR(S1)> <$STR(S2)>
2019/9/07
---------------------------------------------------------------------------
使用聚灵珠触发QF的[@OnUseExpBall] [@OnHeroUseExpBall] <$PARAM(1)>:物品名 <$PARAM(2)>:价格 <$PARAM(3)>:价格类型(0-4)
购买摆摊物品触发QF的[@OnBuyItemFromStall] <$PARAM(1)>:物品名 <$PARAM(2)>:价格 <$PARAM(3)>:价格类型(金币/元宝) <$PARAM(4)>:卖家名
2019/9/06 !RunGate/DBS/M2/客户端 需要配套使用
---------------------------------------------------------------------------
修正一个怪物攻击力计算不准确问题
修正部分几率计算溢出问题
修复极品属性多出1点bug,对此项要求严格的请重新调节极品属性的最高点数
普通属性支持21亿,RunGate/DBS/M2/客户端 需要配套使用(测试)
2019/9/04
---------------------------------------------------------------------------
!修正丢金币方式来刷金币的漏洞
现在英雄守护可以直接飞到目标点
设置SearchTargetWhenIdle=1自动打怪空闲时随机搜寻,否则停留原地等待刷怪
设置SkillMedusaEyeEffectPlayer=0【美杜莎之瞳】不对玩家起作用,默认设置=1可以起作用;SkillMedusaEyeUseInterval=45技能间隔时间(秒)
修复商店价格问题
2019/9/01
---------------------------------------------------------------------------
!封交易重叠物品的漏洞
修正战士连击导致对方持续不可移动状态(测试)
优化地图对象转移处理流程
优化地图单元处理流程,少占用点内存
普通药品回血速率规范化
注意:没有鉴定次数的物品不会有实际属性
2019/8/12
---------------------------------------------------------------------------
修正GM命令失效:@DelDenyIPLogon
开放OfflinePlayEx(测试版)
隐身技能可能出现时间计算错误
优化部分代码
添加ProcessHurryMsg开关,默认开启能优化消息延迟,提高PK体验,但能耗会稍微增加
2019/7/30
---------------------------------------------------------------------------
尝试修复人物变黑问题
增加地图参数:NoHeroGuard,禁止英雄守护
2019/7/28
---------------------------------------------------------------------------
提高大/小火球,雷电术,灵魂火符等魔法对奔跑对象的击中率
提高[道战合击]道术对伤害加成的比例,输出和之前版本比较有差异,请自定调节威力比例
修改[法战合击]的输出计算,输出和之前版本比较有差异,请自定调节威力比例
尝试修复status混乱问题
2019/7/21
---------------------------------------------------------------------------
修正受攻击触发bug
提示:如果要让战士技能(不包含普攻)发挥最高幸运攻击,编辑magic.db的穿透属性,阅读以往穿透的相关更新,
刺杀默认应该是Penetrate=3 PenetrateRate=100,其他技能自行发挥设置
2019/7/19
---------------------------------------------------------------------------
修正拾取物品触发获得的makeIndex为0的bug
修正中毒状态混乱bug
攻击触发:
---------------------------------------------------------------------------
!setup.txt AttackTrigger=0 // 攻击触发总开关,默认0关闭,1开启触发QF的[@Attack]
Envir\MonAttackTrigger.txt // 可以被攻击触发的怪物名称列表,每行一个
// 攻击触发专属变量
$TARINFO_RACE // 目标Race
$TARINFO_ISHERO // 目标是否英雄 {'0', '1'}
$TARINFO_NAME // 目标名称
$TARINFO_FNAME // 目标全名
$ATTINFO_SKILLID // 攻击使用技能ID
$ATTINFO_RACE // 攻击者Race
$ATTINFO_ISHERO // 攻击者是否英雄
$ATTINFO_NAME // 攻击者名称
$ATTINFO_FNAME // 攻击者全名
// 目标变量
$T.CURRENTMAPDESC
$T.CURRENTMAP
$T.CURRENTX
$T.CURRENTY
$T.USERNAME
$T.MONKILLER
$T.KILLER
$T.LEVEL
$T.HP
$T.MAXHP
$T.MP
$T.MAXMP
$T.AC
$T.MAXAC
$T.MAC
$T.MAXMAC
$T.DC
$T.MAXDC
$T.MC
$T.MAXMC
$T.SC
$T.MAXSC
$T.HIT
$T.SPD
// QF例子
[@Attack] // 人或随从攻击列表指定怪物,会触发
#IF
COMPVAL <$TARINFO_FNAME> = 蜈蚣
COMPVAL <$T.HP> > 50
#ACT
T.HUMANHP - 50
SENDMSG 7 目标【<$TARINFO_NAME>】血量<$T.HP>
#IF
COMPVAL <$ATTINFO_RACE> ! 1 // Race=1 是玩家,这里就是非玩家(即随从)
#ACT
SENDMSG 7 你的随从<$ATTINFO_NAME>正在攻击<$TARINFO_NAME>
[@UnderAttack] // 被人或随从或列表指定怪物攻击,会触发
#IF
COMPVAL <$ATTINFO_FNAME> = 蜈蚣 // 蜈蚣打随从或自己
#ACT
HUMANHP - 50 // 主人扣血
#IF
COMPVAL <$ATTINFO_MNAME> ! "" // 攻击者主人名称不为空
#ACT
SENDMSG 7 【<$ATTINFO_MNAME>】的随从<$ATTINFO_NAME>正在攻击你
#ELSEIF
COMPVAL <$TARINFO_RACE> ! 1 // 自己的随从
#ACT
SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你的随从【<$TARINFO_NAME>】
#ELSEACT
SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你
2019/7/15
---------------------------------------------------------------------------
优化游戏PK体验
修正仓库存取重叠物品严重漏洞!及时更新至此新版本。
修正上个版本怪物会有几率变人形的bug
调整忽视防御优先于技能穿透的计算(注:忽视防御属性不作用于魔法盾的抵御,要忽视魔法盾请在magic.db配置技能的穿透属性)
增加地图参数:SensitiveCreature,作用:(已废弃)
一旦人物/宠物进入怪物视觉范围,怪物马上有反应,表现上怪物更为灵活,例如随机到怪物旁边,怪物不会再像以前一样反应迟钝
在开启了SensitiveCreature参数的地图上,道士的隐身技能更能凸显作用。
合区工具日志查询功能增加【沙城收入/沙城提取/升级武器取回】的日志查询,修正【武器升级成功/失败】查询不到bug
2019/6/13
---------------------------------------------------------------------------
添加两步验证Key的获取,引擎 + LoginSvr配套,应用例子:
--------------------------------------------------
[@main]
<获取两步验证绑定状态/@GetTotpKey>\ \<关闭/@exit>
[@GetTotpKey]
#act
GetTotpKey // 请求状态,成功后将回调[@OnGetTotpKey]标签
[@OnGetTotpKey]
#act
GetStrLenght <$TOTPKEY> M0
goto ~OnGetTotpKey
[~OnGetTotpKey]
#if
equal M0 16
#say
你的账号已经绑定两步验证, <解除绑定/@@totp>\ \<关闭/@exit>
#elsesay
你的账号还没有绑定两步验证, <进行绑定/@@totp>\ \<关闭/@exit>
--------------------------------------------------
死亡取消交易
离线数据修改记录日志(注:即使玩家不存在也记录)
小优化
2019/4/28
---------------------------------------------------------------------------
游戏网关添加喊话过滤:ChatCmds.txt,在此列表的命令,喊话内容会进行脏话检测过滤,每行一个命令,默认只有一条:“@传 ”(不包含双引号,注意后面有空格)
Abusive.txt 格式修改为:过滤字符 规则(0全部替换 1命中字符替换为* 2踢下线),例如:操 1;每行一条规则
引擎自定义命令参数也采用GuildRankNameFilter.txt中的字符进行过滤
修复仓库存储【重叠物品】的严重漏洞
增加拾取物品规则列表PickItemRule.txt,格式:物品名称 1,物品为队伍打怪产出,只有队长可以拾取
LoginSvr完善两步验证
LoginGate // 用 登陆器配置器.exe 生成新的LoginGate(注:登录器和客户端没有更新)
同一IP在一定时间内,连续密码错误,累计到指定数量会加入临时封IP列表,参数可以在[安全过滤-新建账号过滤]面板调节
LoginServer
两步验证版本,密码错误累计禁止登录的时间大幅度缩减
M2Server
增加参数
SaveDataTimeoutMs=10000 // 保存数据超时(毫秒),超时后会中断保存数据循环,给加载数据时间片。注:M2压力大时人物登陆会黑屏,设置10000即等10秒左右会进游戏,较短的设置值,黑屏时间更短,但不能太短,否则保存数据效率变低,默认10000即可
DBSvrConnections=16 // M2和DBServer的连接数,默认16,较多的连接对数据保存/加载有效率加成,一般设置8-64之间,建议16-32。(假如设置为32,相比未扩展此参数之前,效率提升大概有15倍)
KeepSaveDataCache=1 // 人物保存数据缓存是否保留,默认1,不保留可能会引起回档,保留则引擎的保存列队有可能出现比较多的情况(关系不大),请保持默认值,除非用于测试。
以上三个参数,一般只调节DBSvrConnections即可,其他保持默认。
DBServer
主界面显示更多的连接信息
2018/8/15
---------------------------------------------------------------------------
聚灵珠增加使用等级限制,设置db的needLevel
修正loginsvr写日志奔溃bug
$CURTITLENAME 当前使用称号
!setup.txt ShowQueryStateInfoTips=1 // 别人查看自己装备信息时,是否提示
[@PickupItem] [@DropItem] 支持第七参数,参数值为物品ID
增加[@HeroDie] 英雄死亡,<$PARAM(0)>:主人角色名 <$PARAM(1)>:英雄角色名 <$PARAM(2)>:地图名 <$PARAM(3)>:X坐标 <$PARAM(4)>:Y坐标
记录 金刚石/灵符 的 获取/消耗 日志,合区工具支持查询
NPC命令:TakeOff 位置 // 脱下装备,连击版本位置:0..16,176/四格位置:0..13,TakeOff All 全身脱下
HUMANHP 减血有飘血效果
引擎设置需要蜡烛时,内挂禁止免蜡开关(基本没什么用)
客户端窗口层叠关系优化
重叠物品操作优化
黑夜模式下,技能亮光补全
--------------------------------------
PLAYEFFECT WIL名称 X Y 起始图片 帧数 间隔 循环次数 声音 声音循环(0/1) 对象(""/All/Guild/地图名)
// X=-1则跟随人物坐标播放,否则固定坐标;
// 对象:空字符("")自己和周围的人,all在线所有人 guild行会在线的人 地图给某指定地图发送
// 执行效果并触发当前脚本的[@OnPlayEffect]
例:
<播放特效/@PlayEffect>\
[@PlayEffect]
#act
PLAYEFFECT Prguse2 -1 -1 110 15 80 1 Wav\powerup.wav 0 ""
[@OnPlayEffect]
#act
SENDMSG 3 播放了一个动画效果
--------------------------------------
新加QF触发标签:
[@BuildGuild] // 创建行会,<$PARAM(0)>行会名
[@JoinGuild] // 加入行会,<$PARAM(0)>行会名
[@LeaveGuild] // 退出行会,<$PARAM(0)>行会名
[@KickOutOfGuild] // 踢出行会,<$PARAM(0)>行会名
[@DismissGuild] // 解散行会,<$PARAM(0)>行会名
--------------------------------------
技能基础面板增加:技能升级威力附加万分比参数,比值越高,技能级别差体现的攻击力差别越大,目的是为了改善变态版本(自身高攻击力)各职业的技能
升级后攻击力增加不明显的问题,默认为0,不附加威力,请根据版本自行测试调节。
--------------------------------------
防盗号加强:去掉二级密码,换为两步验证,需要【引擎/LoginSvr/客户端】配套。
同时修改MD5密码版的LoginSvr支持合区,不兼容之前的MD5版本数据;明文密码版本的LoginSvr数据兼容。
#SAY
<绑定或解绑两步验证/@@totp>\\
修改LoginSvr对密码错误的临时冻结更加严格;密码/验证码错误次数越多,临时冻结越长,基本呈指数级增长。
--------------------------------------
合区工具增加清理账号二级密码功能
两步验证是二级密码的升级版,不兼容原来的二次密码数据,
想要使用新的两步验证功能,请先清理原先的二级密码,再让用户到游戏里的NPC处自行绑定两步验证。
2018/7/01
---------------------------------------------------------------------------
英雄锁定范围检测更严格
客户端显示武器强度,调节武器属性位置7可以获得强度
修改SETRANDOMNO:可以指定范围参数 // SETRANDOMNO 1000000
NPC检测命令:COMPVAL 数值1 >/</=/! 数值2,比较数值1和数值2 //例如:COMPVAL <$USERNAME> = 名称,COMPVAL $STR(N1) > 50
增加 #ELSEIF #ELSEIFSAY #ELSEIFACT(或#ACT) // 成对编写,例:
------------------------------------
[@test]
#ACT
SETRANDOMNO 1000000 // 0~999999
#IF
COMPVAL <$RANDOMNO> < 100
#ACT
SENDMSG 3 特等奖<$RANDOMNO>
#ELSEIF
COMPVAL <$RANDOMNO> < 1000
#ACT
SENDMSG 5 一等奖<$RANDOMNO>
#ELSEIF
COMPVAL <$RANDOMNO> < 2000
#ACT
SENDMSG 6 二等奖<$RANDOMNO>
#ELSEIF
COMPVAL <$RANDOMNO> < 4000
#ACT
SENDMSG 7 三等奖<$RANDOMNO>
#ELSEIF
COMPVAL <$RANDOMNO> < 8000
#ACT
SENDMSG 7 鼓励奖<$RANDOMNO>
#ELSEACT
SENDMSG 7 谢谢参与<$RANDOMNO>
2018/6/15 引擎和客户端需要配套更新
---------------------------------------------------------------------------
修复多引擎负载过图有几率造成随从丢失bug
修正客户端频繁向微端服务器发送请求bug
修正聚灵珠摆摊价格显示错误bug
时间使用类的物品计时更准确,stdmode=2 shape=18类物品在客户端可显示剩余时间
修复多引擎负载过图后法师召唤下属属性不对应bug
修复多引擎负载过图后蓝量异常bug
修复多引擎负载有概率小退黑屏bug (复活地图所属的引擎与死亡地图所属引擎不同)
修复多引擎负载出生点新角色登陆黑屏bug
优化日志处理
可以重新加载动态创建的NPC(之前有bug才去掉?)
NPC命令:GOHOME // 回安全区
NPC条件命令:FINDDELETELINE // 检测文本行并删除保存
---------------------------------------
#IF
FINDDELETELINE 文本路径 <$USERID> // 充值提取专用,避免文本写入冲突造成刷元宝bug
#ACT
GAMEGOLD + XX
#ELSESAY
操作失败,稍等片刻再操作
2018/5/13
---------------------------------------------------------------------------
客户端修正使用部分远程攻击类新怪物引起出错bug
客户端支持24/32位的wil/wzl
ChangeExp/ChangeIPExp 第三参数不为空时,聚灵珠不会聚集经验
英雄支持必定掉落的物品
修正授予英雄称号不激活称号bug
拾取HintItemList.txt中的物品触发QF的[@PickupItem] <$PARAM(1)>:物品名 <$PARAM(2)>:Looks <$PARAM(3)>:角色名 <$PARAM(4)>:地图名 <$PARAM(5)>:X坐标 <$PARAM(6)>:Y坐标 <$PARAM(7)>:物品ID <$PARAM(8)>:种族ID(玩家1,英雄60) <$PARAM(9)>:是否装备(0/1)
丢弃HintItemList.txt中的物品触发QF的[@DropItem] <$PARAM(1)>:物品名 <$PARAM(2)>:Looks <$PARAM(3)>:角色名 <$PARAM(4)>:地图名 <$PARAM(5)>:X坐标 <$PARAM(6)>:Y坐标 <$PARAM(7)>:物品ID <$PARAM(8)>:种族ID(玩家1,英雄60) <$PARAM(9)>:是否装备(0/1)
修正上个版本怪物移动/攻击速度异常
QM增加[@OnInit],执行时机优先于[@Login],用于初始化人物私有变量(注:[@Login]初始化变量时机不够早,会造成一些的脚本变量应用报错)
2018/4/5
---------------------------------------------------------------------------
聚灵珠金币/元宝消耗记录日志
客户端修正鼠标乱移动bug
NPC检测命令增加取反支持: !CHECKLEVELEX > 10 // 检测等级是否小于等于10
2018/2/4 !需要修改脚本
---------------------------------------------------------------------------
自定义变量Var相关操作去掉HardDisk操作,统一为在声明变量是确定是否为实时硬盘读写,例如:
[@login]
VAR INTEGER HUMAN player_level "" hardDisk // "" 表示第四参数为空参数
LOADVAR GUILD player_level ..\QUESTDIARY\UserData\PlayerData.txt
[@dynvar_human_level]
#act
CALCVAR HUMAN player_level = <$LEVEL>
SAVEVAR HUMAN player_level ..\QuestDiary\UserData\PlayerData.txt force //force 耗时操作的实时保存,操作频繁游戏卡顿
对于以上例子,如果PlayerData.txt已经使用hardDisk参数操作,所有其他读写于PlayerData.txt的变量都要统一为hardDisk
注:hardDisk 是非常耗时的操作,非必要的情况下,不要使用,否则只会造成游戏卡顿
修正部分会使用技能的怪物追击目标逻辑,完善一些新怪。
开箱子得到存在于HintItemList.txt的物品,触发:QFunction的[@OpenTreasureChest],<$PARAM(1)>:物品名 <$PARAM(2)>:数量 <$PARAM(3)>:Looks
2018/1/29
---------------------------------------------------------------------------
修正部分Win10版本客户端Alt+Enter切换窗口/全屏模式bug
商铺购买,并列入HintItemList.txt的物品,触发QFunction的[@shopping],<$PARAM(1)>:物品名 <$PARAM(2)>:价格 <$PARAM(3)>:Looks
客户端兼容win10秋季创意版(属于windows10FCU的bug)
修正174 129 4116 怪物普通攻击无效bug
2018/01/10
---------------------------------------------------------------------------
修正一个严重bug,可能导致出现变态装备
去掉实验性封包优化模块,略减少内存占用
2017/12/28 测试版引擎,测试用
---------------------------------------------------------------------------
优化封包接收/发送流程,测试:一次刷12000只怪(怪会暴出物品),火墙烧,对比优化前后烧完怪的时间,还有卡顿对比情况
[@HeroTakeOn+位置] [@HeroTakeOff+位置] // 英雄穿戴/取下装备触发,参考人物的穿戴触发
IsNearby H/人物名 // 检测指定角色名玩家/怪物等是否在附近,H指自己的英雄
修正内存池申请bug
修正NPC商店物品处理可能导致引擎崩溃bug
2017/12/10
---------------------------------------------------------------------------
客户端新功能修正完善
客户端消息处理优化
客户端渲染优化
修正完善1208增加的新功能
2017/12/08
---------------------------------------------------------------------------
增加NPC命令:
KillMonGetFullExp +/-/= 秒数 // 高等级杀怪获取全部经验时间(秒),存库
REFITEMSHAPE 位置 数值 // 引用某同类型物品外观,位置:0衣服 1武器,数值参考stditems.db中的物品idx,存库,(连击合击版本才支持)
修正游戏网关可能丢包,造成卡包,或其登陆黑屏问题
修正游戏网关CD版本 下发较大的包可能出现丢失BUG,比如卡包
引擎修正完善内存池的应用
MonSpAbilList.txt 第13项,破盾修改为几率(0~100)
PIC=功能扩展2: // 配置后面增加两项:绝对X,绝对Y(不参与自动换行计算)
<PIC=items,55,1,0,0,0,8,11,22,100 LABEL=@execlab HINT=裁决> //items=wil文件名,索引,图片数,循环,透明,偏移X,偏移Y,绝对X,绝对Y(不参与自动换行计算),帧间隔(毫秒)
NPC文字信息配置新用法:
----------------------------------------
文字{X=2,Y=3,C=clBlue,T=tips,AX=11,AY=22} // X,Y偏移,C颜色,T提示,AX绝对X,{}内的系列配置会覆盖掉color=,hint=等的参数
// AX/AY为绝对值(不参与自动换行计算,最终坐标Y=Y+AY)
颜色用法可以这样:
color=#321321 或 color=$321321,{c=#321321} 或 {c=$321321} 可以用吸色器获取各种颜色的数值
例如:
<color=clgreen 文字{X=11,Y=22,AX=11,AX=22} HINT=tips> <PIC=items,55,1,0,0,-40,8,0 LABEL=@execlab HINT=裁决>裁决图片{c=cllime}</> <脚本标签{c=cllime,T=tips}/@execlab> \ \
“<color=clgreen 文字{X=11,Y=22} HINT=tips>” 等同于 “文字{X=11,Y=22,c=clgreen,T=tips}”
----------------------------------------
SETMERCHANTDLGIMGNAME 图片名 索引 // 索引不为0,图片名为有效素材文件名,会调用素材指定索引的图片
增加NPC命令:
----------------------------------------
NPC_DLG_OPTIONS 地图 NPC名字 参数 排列 对话框图片名 索引 // 可以在登陆脚本定义,只需要定义一次,除非参数改变
地图:NPC所在地图号(土城就是3),地图为""时,会根据NPC名字搜索
参数:1隐藏拉条,2对话框可移动,4闪烁,是复合参数,例如:1 + 2 = 3 表示可移动并隐藏拉条
排列:0或1默认,2居中,3右上,4左下,5右下
对话框图片名:空默认,索引不填写或等于0,调用lui.pkg图片,索引有效,调用素材文件的指定索引图片(素材文件名不要写扩展名)
一些特殊NPC名字和所属地图:QFunction/0,QMapEvent/0,QManage/0,RobotManage/0,QChatMission/0
建议:
不要再使用SETMERCHANTDLGIMGNAME,而使用NPC_DLG_OPTIONS代替,能有更好的体验
例子:
QManage.txt 中的
[@login]
#act
NPC_DLG_OPTIONS 0149 盟重张家布衣 7 2 MerchantDlg.png
NPC_DLG_OPTIONS 0149 盟重手套店 3 3 ui1 2731
NPC_DLG_OPTIONS 0149 盟重老张头盔店 3 4 ui1 2924
NPC_DLG_OPTIONS 0 QFunction 3 4 ui1 3020
----------------------------------------
2017/11/27
---------------------------------------------------------------------------
处理引擎和网关因通讯丢包引起个别玩家登陆黑屏(测试)
2017/11/16
---------------------------------------------------------------------------
修正#IF(X)多条件判断
优化性能,负载能力应该提升不少
2017/9/19
---------------------------------------------------------------------------
修正NPC获取
修正挖肉卡顿
修正完善内存池调用
2017/9/9
---------------------------------------------------------------------------
修正掉线重新召唤的随从行走速度异常
优化NPC获取
修正技能等级变化没有刷新技能套装威力
修正游戏网关停止服务发生崩溃,优化性能
引擎加载脚本检测到存在重复标签时增加提示(重复标签只会执行其中一条,是错误写法)
2017/8/21
---------------------------------------------------------------------------
以下脚本提供是否实时读写硬盘操作的参数,默认不写InTime参数,都是内存操作方式,
除非需要外部操作特定的文本去实现某些功能,才依据情况去添加InTime参数。
为什么要更新这个功能,因为实时硬盘操作文本数据效率特别低;特别是文本到一定大小以后,很容易造成游戏卡顿。
注:UnMarry.txt 为内存操作;之前针对以下命令的更新被此次更新覆盖
!setup.txt UseFastTextFile=0,可以恢复到全硬盘读写模式(旧模式),但是不建议这样做。
只需要对特性的文件做HardDisk操作就可以,这样能提升游戏的性能。
//第2参数为:HardDisk,实时读写硬盘数据,否则在内存操作
ADDNAMELIST
ADDGUILDLIST
ADDACCOUNTLIST
ADDIPLIST
DELNAMELIST
DELGUILDLIST
DELACCOUNTLIST
DELIPLIST
CHECKNAMELIST
CHECKACCOUNTLIST
CHECKIPLIST
CHECKGUILDLIST
AddNameDateList
DelNameDateList
ClearNameList
CheckAccountIPList
CheckNameIPList
CheckCodeList
AddUseDateList
DelUseDateList
//第3参数为:HardDisk,实时读写硬盘数据,否则在内存操作
CHECKSTRINGLIST
ReadRandomLine
ReadRandomStr
DelCodeList
WriteLineList
DeleteLineList
//第4参数为:HardDisk,实时读写硬盘数据,否则在内存操作
ReadLine
DeleteLine
WriteLine
InsertLine
CheckNameListPostion
//第6参数为:HardDisk,实时读写硬盘数据,否则在内存操作
CheckUserDateType
//第7参数为:HardDisk,实时读写硬盘数据,否则在内存操作
CheckNameDateList
2017/7/01 此次更新引擎+网关需要配套,否则会造成下发流量增加
---------------------------------------------------------------------------
修正2017/6/20版出现随机卡顿bug
游戏网关CD版优化封包下发
游戏网关增加 “@传 文字”,可以脏话过滤
优化NPC命令:MOVETOCELL X Y NPC名称 //X和Y等于0,取人物当前坐标,如果有“NPC名称”,此命令功能相当于点击人物可视范围内的指定NPC。
增加单独点击NPC命令:CLICKNPC NPC名称 //引擎客户端都需要更新
客户端修正连击补丁失效问题(类似:~hum_she75.wil 的文件)
ClearNameList 第二参数不为空,则清理内存中的文本数据。默认为空,清理硬盘上的文本数据。
以下更新适用于外部程序修改硬盘文件数据
----------------------------------------
LoadVar 第4参数为:InTime,实时读写硬盘数据
SaveVar 第4参数为:InTime,实时读写硬盘数据
第4参数为:Force,将实时保存内存数据至硬盘;即使不使用force参数,引擎也会每间隔1分钟自动存盘
CalcVar 第5参数为有效的文件名时,将保存到该文件内存中,并且第6参数为:InTime时,还将实时读写硬盘数据
之前的更新:magic.db的Power/MaxPower/DefPower/DefMaxPower魔法输出计算修改为受个人的幸运值影响,
现为以上更新增加开关:!Setup.txt增加开关(默认关闭):CalcDBPowerWithLuck=0,开启则攻击输出受个人的幸运值影响
物理攻击现在可以使用Power/MaxPower调节威力,一般情况下,此2项的值都是0
优化游戏网关
穿戴龙神装备现在需要激活龙神状态才会增加攻击输出(原来不需要激活龙神状态也能获得输出增益)
2017/6/20 此次更新引擎+网关需要配套,否则会造成下发流量增加
---------------------------------------------------------------------------
移动时撞到人或怪物反弹后,下次移动不列入加速检测(引擎+游戏网关配套)
优化游戏网关,修正网关启动服务时立即有连接接入时崩溃bug
2017/5/2
---------------------------------------------------------------------------
优化微端功能,提升效率,需要同时更新登录器、客户端和微端服务器
修正客户端连击扩展补丁读取bug
<$USERID> 用户账号
优化攻击模式检测
优化日志的管理
注意:
--------------------------------------
文本操作NPC命令路径统一为NPC当前路径,
写法: addLineList QuestDiary\rolelist.txt <$USERNAME> 需要修改为:
addLineList ..\QuestDiary\rolelist.txt <$USERNAME> // “..\”表示上一目录
--------------------------------------
修正NPC命令参数为变量时,可能获取错误bug
增强引擎IOPS能力
修正游戏网关停止服务时,可能出现崩溃的bug
Ini系列NPC操作命令增加自动保存功能
--------------------------------------
<$CURITEMID> //Give,GiveEx,GiveOK,GM制造物品时,可以使用<$CURITEMID>得到当前物品的ID
GETDLGITEMID P/G/D/M/H //获取物品ID值到变量P/G/D/M/H (P0~9,其他0~99)
CHECKDLGITEMID 123456 //检测物品框力的物品ID是否等于123456
例:
Give 物品名
INI_WRITE_INTEGER 文件名 <$USERNAME> 某任务_物品名 <$CURITEMID> //记录物品ID,下次需要校验时,可以用 INI_READ_INTEGER 读取
sendMsg 1 <$CURITEMID>
INI_READ_INTEGER 文件名 <$USERNAME> 某任务_物品名 P0
#if
CHECKDLGITEMID P0
--------------------------------------
2017/4/12
---------------------------------------------------------------------------
mysql版本引擎增加金币交易行,参数设置-游戏参数二可以调节相关参数
优化mysql版本引擎,dbserver的数据存取效率
优化LoginGate,SelGate,LoginSvr_mysql版,mysql表结构改变!!!
--------------------------------------
优化NPC文本操作命令,文本会载入到内存中操作,直接修改文本操作现在不会生效。
恢复旧模式:!setup.txt UseFastTextFile=0,不建议
NPC文本操作命令非常消耗资源,特别时文本较大、操作频繁或脚本不合理时,服务器会严重卡顿。
!!! 强烈建议使用UseFastTextFile=1下的模式,如果你有大量的这类文本操作,可能会导致引擎内存不足,那么请设置UseFastTextFile=0
!!! 合理设计好版本,滥用文本操作容易导致游戏卡顿
AddAccountList,AddNameList,AddIPList,AddGuildList
DelAccountList,DelNameList,DelIPList,DelGuildList
CheckAccountList,CheckNameList,CheckIPList,CheckGuildList 等...保持不变,兼容充值系统(文本稍微大点会严重影响效率,造成游戏卡顿)
--------------------------------------
---------------------------------------
增加个人打怪爆率控制变量:
数值操作NPC命令:MonDropRate +/-/= 数值,默认值100,越小打怪爆率越低,设置为0将不爆物品,挖取和带有“;GETITEMFLAG”的爆率控制不受影响
条件检测NPC命令:CheckMonDropRate >/</= 数值
对应显示变量:<$MONDROPRATE>
---------------------------------------
称号计时间隔减少,更准确
优化游戏网关
2016/8/28
---------------------------------------------------------------------------
修正引擎手动关闭或开启网关服务报错
完善合区工具对文本的分析添加
道道合击伤害计算不再受地钉攻击调节影响
治愈术:目标无效时,自动治愈自己
流星火雨增加范围调节
完善心灵召唤,并修改为达到4级下属才会飞到目标进行攻击
客户端暂时去掉小退/大退保护
客户端修正集体隐身术释放效果
客户端修正黄泉教主效果
客户端ObjectsX.wzl支持到60
增加新怪物...参考monster.txt
GameCenter可以配置CastleFile和DBServer的MapFile
英雄守护距离限制为15格
修正重新加载物品提示列表 无效问题
登录脚本支持ISCASTLEMASTER
行会联盟增加刷新
道力水和无极真气修改为独立计算
修正淬炼物品叠加材料消失问题
增加地图参数:NOSHOPPING //禁止商铺购物和赠送
NORECOVERINGSTONE //使用魔血石失效
优化M2使登陆游戏过程更顺畅
参数设置-环境设置,物品怪物数据库倍率 增加物品+HP/MP 倍数调节
小bug修正
英雄自由加点准确和敏捷现在有效
英雄参数调节面板增加开关:允许[英雄锁定目标]后瞬移至目标身边,默认关闭了;英雄守护需要英雄在视野外才可以瞬移
修复挖怪物尸体获得物品可能导致引擎无响应BUG
增加race=211怪物,不攻击人物,不受攻击,可以攻击怪物
装备,套装经验吸收百分比属性 生效
setup.txt 增加参数:TaosNomAtkDiffLvVal=0,非0时,道士英雄比怪物多X级时,只使用普通攻击,精神力战法开关可以控制
QF加入组队触发:[@JoinGroup] 离开组队触发:[@LeaveGroup]
增加地图参数:HERONOATTACKHUMAN //英雄不攻击人物,包含人物的随从
MonSpAbilList.txt 保留1修改为:攻击特点,值为1时不攻击人物及其随从
飘血能超过65535
增加NPC命令:
#IF(3) //扩展,如果众多条件中只要满足3条件,即可执行#ACT,#SAY...等
StringReplace S1 $STR(S2) $STR(S3) //替换字符串,S1源字符串,搜索S2->替换为S3
CHECKCONTAINSSTR 字符串 符 //检测“字符串”是否包含“符”,大小写敏感
CHECKCONTAINSTEXT 字符串 符 //检测“字符串”是否包含“符”,不区分大小写
CHECKRANGEPLAYERCOUNT 地图 X Y 范围 >/</= 数量 包含死亡(0不包含 1包含) //检测指定地图 指定范围内 玩家数量
GOTO LABEL 模式(1,2,3,4) 参数2 //扩展
模式=1 小组成员触发
模式=2 行会成员触发
模式=3 当前地图的人物触发
模式=4 以自己坐标为中心指定范围人物触发,参数3指定范围
减少登录器/客户端误报情况
登录器配置器支持对lui.pkg设置密码(lui.pkg使用的压缩密码)
Var相关操作优化,性能提升幅度非常大:
-----------------------------------------
SaveVar 参数1 参数2 文件名 Force //第四参数字符为Force,将实时保存数据至硬盘;即使不使用force参数,引擎也会每间隔1分钟自动存盘
//等介于:Ini_Save 文件名。
//Var系列相关操作,也可以适当修改后,使用INI_系列命令代替。
CalcVar 第五参数为有效的文件名时,变更将自动保存到内存中
鉴定系统改进:
-----------------------------------------
鉴定不再出现多项相同属性
鉴定可以设置最多的出属性的条数
鉴定师处,可以进行装备属性转移:
-----------------------------------------
允许普通属性转移列表(指目标装备):AllowInheritItemList.txt,格式:装备名称 需要元宝数量 需要装备碎片数量(装备碎片stdmode=41) 允许保留高数值属性(0/1 需要传承精华stdmode=41)
允许鉴定属性转移列表(指目标装备):AllowInheritTIItemList,格式:装备名称 需要元宝数量 需要卷轴碎片数量(卷轴碎片stdmode=41) 允许保留高数值属性(0/1 需要传承精华stdmode=41)
修改以上列表,新加载列表配置生效
允许保留高数值属性:指相同的2项属性,都存在数值,并且被转移装备的属性高于将要转移的装备属性值,才生效
允许5分钟内掉线重连,自动召唤出掉线前的属下,同批属下只能自动召唤一次,怪物设置面板可以开关,默认关闭
ReadRandomStr,ReadRandomLine,ReadLine 文件路径参数支持NPC所在路径
修正stringreplace S变量操作失效bug
增加NPC指令:StrTok S1 S2 |, 以“|”为分隔符,分解字符串,S1源字符串,S2存放分解子字符串,S1存放分解剩余部分;第三参数为空代表空格,“#9”代表Tab;第一、二参数支持S,A变量
优化NPC参数解释
大幅度提升mysql版本数据存取效率
2016/8/25 更新:引擎
---------------------------------------------------------------------------
修正8月份引擎大型活动场面卡问题
护体神盾的敏捷附加可以在魔法设置面板调节;抵挡伤害计算略微调整,最多抵挡1/3伤害
修正护体神盾,护身戒指作用下引起飘血数字不正确问题
完善伤害反射的计算
修正购买重叠物品数量可能都是1的问题
LoginSrv支持二级密码(md5)
客户端修正下属血条不按百分比显示问题,WebBrowser打开的网页内置于游戏窗口
2016/8/15 更新:引擎 + 客户端
---------------------------------------------------------------------------
SendScrollMsg 文字内容不可过长,否则会导致客户端在部分XP系统运行出现异常!
客户端完善一些细节,如套装的技能要学习了才显示为激活颜色...
修正0806英雄安全区不穿人
减少下发流量
性能参数面板增加防T心跳包时间调节,默认60秒,使用鼠标移动到控件查看说明
增加<$NPCEXECUTECOUNT>,用于显示NPC被执行的次数
Give 不限制上限个数,原来是1-50
PIC=功能扩展:
<PIC=items,55,1,0,0,0,8 LABEL=@execlab HINT=裁决> //items=wil文件名,索引,图片数,循环,透明,偏移X,偏移Y
<PIC=magic,1630,6,1,1,0,8 LABEL=@execlabfirecross HINT=火墙>
SendScrollMsg <$DLGITEMSHOW>`PIC=magic,0,10,1,1,0,-33&LABEL=@xxxxx~
增加简单的物品展示功能: //需要引擎和客户端配套使用
-----------------------------------------
(@@inputstring)
[@main]
<执行脚本/@ExecuteLabel>\ \
<我要查询物品/@@inputstring1> <展示我的物品/@@inputstring2>\ \<关闭/@exit>
[@@inputstring1]
#ACT
SETDLGITEM <$STR(S1)>
#SAY
物品信息:\ \ <$DLGITEMSHOW>\ \<返回/@back> <关闭/@exit>
[@@inputstring2]
#SAY
请放上你要展示的物品。\ \<返回/@back> <关闭/@exit>
#ACT
QUERYITEMDLG 放上展示的物品 @showMyItem 0
[@showMyItem]
#SAY
我的物品:<$DLGITEMSHOW>\ \<返回/@back> <关闭/@exit>
#ACT
SENDMSG 1 <$USERNAME>:<$DLGITEMSHOW>...<$STR(S2)> 255 241 65000
SendScrollMsg `NAME=%s:~<$DLGITEMSHOW>...<$STR(S2)>
CLOSE
[@ExecuteLabel]
#SAY
<CMD=@ExecNPCLabel HINT=提示...\第二行提示...>执行当前NPCLabel</>
#ACT
SendScrollMsg <PIC=DscStart0.bmp&LABEL=@qclabel&HINT=提示...>执行QChatMission</>
[@ExecNPCLabel]
#ACT
SENDMSG 5 @Label_executed... 255 168
-----------------------------------------
2016/8/10 更新:引擎 + 客户端
---------------------------------------------------------------------------
客户端普通下属和友军下属的血条颜色显示为粉紫色
客户端内挂的回城/下线保护优先于吃药
修正心灵召唤,达到3级可以使用鼠标指向怪物设定目标
修正英雄怪迟钝问题
修正服务器开启一段时间后,96怪物复活立即死亡bug
修正NPC对话内容加:HINT=提示信息... 后点击失效bug
减少引擎和网关的空包通讯间隔,可防止引擎网关分机情况下被机房防火墙踢掉
2016/8/08 更新:引擎 + 客户端
---------------------------------------------------------------------------
客户端刷新包裹后物品会排列
客户端挂机功能更好用
客户端输入用户密码可以一路回车进游戏,确认框确认可以按回车或空格
客户端修正套装宝石位置显示不正确问题
客户端可以自定义部分技能是否锁定,按F11技能面板设置,是否开放该功能可在新版本登录器配置器中设置
客户端修正在部分XP系统运行一段时间后会出现按钮消失问题(滚动公告不可过长)
登录器可自定义服务器里列表,可自定义调用的客户端名称,看登录器配置器下的"说明.txt"
客户端普通下属和友军下属的血条颜色显示为粉紫色
客户端内挂的回城/下线保护优先于吃药
修正心灵召唤,达到3级可以使用鼠标指向怪物设定目标
变量迁移
修正带升级武器标识的武器,砍下报错
修正几处内存泄漏_724
减少内存占用
英雄使用火墙更灵活
InputInteger/InputString 不再需要使用DelayGoto,需要修改脚本
简单增加摆摊交易税,功能设置可以调节,0不收税
商人商品数据保存时自动创建相关文件夹,关闭引擎自动保存商人商品数据
stditem.db扩展DropRatePlus字段,死亡掉落该物品附加机率:比如原来身上某件装备掉落几率为1/30,DropRatePlus非0时,掉落几率变为:1/(30+DropRatePlus)
中毒身亡,<$KILLER>等变量有效显示
h.takeon 会刷新英雄装备内观
修正@ReloadMonItems 报错
修正淬炼扣除重叠材料造成材料消失假象
修正NPC定时器BUG
怪物魔法躲避%10变更为%0
修正被怪物被召唤,该地方不会再刷出bug
修正96怪物不复活
增加开关:只让道士对中了红毒的对象产生加攻效果
增加装备无持久损毁提示,衣服武器无持久损毁外观修正
OffLine 命令:参数3<=0时,无限时间脱机挂着,否则为脱机的时间限制(分钟),超过该时间踢下线
pk控制面板增加人物登陆和切换地图的保护时间调节,默认3秒,建议调节到2.5秒
升级经验面板增加一直保留聚灵珠经验开关,默认关闭。聚灵珠吸收经验比率也迁移到升级经验面板
修正护体神盾不及时刷新属性,减少护体神盾增加的敏捷
增加简单搜索最低价的摆摊物品NPC条件命令:
----------------------------
SEARCHONSALEITEM 物品名 出售类型(元宝/金币) 返回最高个数(1-10) //返回信息自动以sendmsg形式发送给玩家
例子:
#IF
CHECKGAMEGOLD ~ 1
SEARCHONSALEITEM 开天 元宝 3
#ACT
GAMEGOLD - 1
#ELSEACT
SENDMSG 5 找不到指定的物品
----------------------------
客户端素材文件扩展的应用:
----------------------------
装备内发光:
shine>=100 对应 data\~witemsshine.wil 文件,每50张图一个效果,有效图片的请保持连续,例:shine=100调用0~49的图片,shine=101调用50~99的图片
衣服:
shape>=75 对应 data\~hum_shape的数字.wil 文件,例:shape=75 对应~hum_75.wil,连击~hum_s75.wil
翅膀:
anicount>=75 对应 data\~hum_he+anicount的数字.wil 文件,例:anicount=75 对应~hum_he75.wil,连击~hum_she75.wil
武器:
shape>=100 对应 data\~weapon_shape的数字.wil 文件,例:shape=105 对应~weapon_105.wil,每1200张图一个武器(男+女),连击~weapon_s105.wil
武器外发光:
shine>=100 对应 data\~weapon_we+shine的数字.wil 文件,例:shine=105 对应~weapon_we105.wil,每1200张图一个武器(男+女),连击~weapon_swe105.wil
怪物:
Appr>=5000的,读取:data\~mon_(Appr 整除 100).wil,例:appr=5005 对应~mon_50.wil,每360张图片为一只怪,支持一个文件99只怪
NPC:
Appr>=1000的,读取:data\~npc_(Appr 整除 100).wil,例:appr=1005 对应~npc_10.wil,每60张图片为一个NPC
背包物品:
Looks>=20000,读取:data\~item_bg+(looks 整除 10000).wil,例:looks=20005 对应~item_bg2.wil 索引5的图
身上物品:
Looks>=20000,读取:data\~item_st+(looks 整除 10000).wil,例:looks=20005 对应~item_st2.wil 索引5的图
地面物品:
Looks>=20000,读取:data\~item_dn+(looks 整除 10000).wil,例:looks=20005 对应~item_dn2.wil 索引5的图
如果加了新怪,声音文件可以自行编辑,然后使用自动更新,声音文件:\Wav\sound2.lst
发现怪物 200 + Appr * 10;
怪物行走 200 + Appr * 10 + 1;
怪物攻击 200 + Appr * 10 + 2;
武器发声 200 + Appr * 10 + 3;
受攻击 200 + Appr * 10 + 4;
死亡 200 + Appr * 10 + 5;
特殊攻击 200 + Appr * 10 + 6;
一般情况下,只增加“发现怪物”和“怪物攻击”和“死亡”的声音
----------------------------
2016/7/23 更新:引擎 + 客户端
---------------------------------------------------------------------------
祝福油控制面板增加+幸运的模拟计算
修正上版本#define失效问题
修正个别怪物报错,需测试
Race:60/61 人形怪物使用英雄创建(注:62是带连击的人形怪)
修正176版合区工具问题,重要!
合区工具的【数据维护-查询】增加金币/元宝/金刚石/灵符等的统计
减少客户端/CD客户端的CPU占用
完善装备限制爆出功能
假如怪物被重叠,现在可以攻击周围目标
SETSCTIMER 扩展到15个,原来是10个
优化英雄技能判别
优化物品规则列表
优化物品引用
优化走路/跑步/广播/搜寻...
怪物不再受HM/MP恢复速率调节的影响
优化怪物/人物流程,现在占用更少的CPU资源
2016/07/08 更新:引擎
---------------------------------------------------------------------------
更好用的英雄守护模式
英雄设置二:增加老的工作速度模式开关
旗舰版网关/CD网关 魔法ID范围检测由1~127修改为1~254,关闭时间精度开关
优化延迟脚本
2016/07/05 更新:引擎
---------------------------------------------------------------------------
修正装备限制爆出系统bug
修正寒冰掌技能bug
修正个别怪物报错
优化人物数据读写
道道合击提高命中率
更好用的英雄守护模式
英雄设置二:增加老的工作速度模式开关
旗舰版网关/CD网关 魔法ID范围检测由1~127修改为1~254,关闭时间精度开关
2016/07/01 更新:引擎
---------------------------------------------------------------------------
修正0628道道合击放不出bug
修正NPC执行bug,重要!
修正优化其他代码
2016/6/28 更新:引擎 + StdItemConverter
---------------------------------------------------------------------------
修正 INI_SORT_READ_SECTION_VALUES 节名下数据为空时不读取问题
增加 INI_SORT_DELETE 保存到内存的标识名(All=删除所有) //删除对应内存标志名的列表信息
修正 TUserEngine::ProcessHumans -> Ready, Save, Load...报错
修正可能出现物品显示假象
NPC命令:DropItemMap 增加参数7,为物品可拾取的倒计时秒数,0立即可以拾取
修正reloadnpc all 可能引起一系列奇怪报错的问题
引擎修正变异骷髅攻杀报错,客户端修复变异骷髅攻杀效果
magic.db的Power/MaxPower/DefPower/DefMaxPower魔法输出计算修改为受个人的幸运值影响
magic.db增加Penetrate,PenetrateRate字段,使用stditemConverter工具进行扩展,Penetrate的值:1忽视防御,2忽视魔法盾,4忽视魔御,1+2=3则忽视防御和魔法盾;PenetrateRate为穿透几率(百分比)
优化魔法
CHECKITEMDURACOUNT 物品名 是否聚满(0=未满的,1=已满的) >/</= 数量 //检测包裹指定物品名是否满持久数量(可用于聚灵珠等...)
TakeDuraItem 物品名 是否聚满(0=未满的,1=已满的) 数量 //拿走背包指定条件物品(三个参数)(可用于聚灵珠等...)
2016/6/12 更新:引擎 + 控制台 + 客户端 + 合区工具
---------------------------------------------------------------------------
控制台增加保存插件目录
套装增加保留兼容模式开关,按原来计算方式计算属性
修正扩展套装功能引起的内存泄漏
修正带了附加套装技能效果后,更换为无效果装备,自身魔法举手效果依然存在的问题,虽然其他人看到的是正常效果
修正刺杀不忽视魔法盾情况下的伤害错误计算
修正个别版本会报"%d ..."的错误
优化限制物品曝出功能,并改为保存相关数值
临时取消老的物品绑定账号/IP/角色功能,效率太低;建议在DB设置物品绑定,同时在功能设置-全局功能页面调节绑定相关设置
客户端增加套装技能威力显示
客户端增强反外挂
stditem.db增加MaxOverlap参数,允许重叠最高数量,使用最新的StditemConvert.exe扩展下stditem.db
give,giveex后自动重叠
优化性能
修正合区工具日志分析查不到泡点
补充:
READLINE 文件 行数 S10 //获取指定行数的一行字符到S10,或A10(全局)
DELETELINE 文件 行数 S10 //获取指定行数的一行字符到S10,或A10(全局),并删除该行
WRITELINE 文件 行数 S10/文字/变量 //写文字到指定行数,覆盖方式
INSERTLINE 文件 行数 S10/文字/变量 //插入文字到指定行数,非覆盖
高效率的Ini文件NPC操作命令:
-----------------------------------------------------------
INI_READ_STRING 文件 节名 键名 S/A //从Ini的【文件-节-键】获取字符串值到S/A
INI_WRITE_STRING 文件 节名 键名 S/A/文字/变量 //写入字符串值到Ini的【文件-节-键】
INI_READ_INTEGER 文件 节名 键名 P/G/D/M/H //从Ini的【文件-节-键】获取整数值到P/G/D/M/H
INI_WRITE_INTEGER 文件 节名 键名 P/G/D/M/H/整数 //写入整数值到Ini的【文件-节-键】
INI_WRITE_INTEGER_EX 文件 节名 键名 +/-/= P/G/D/M/H/整数 //按操作符写入整数值到Ini的【文件-节-键】
INI_DELETE_KEY 文件 节名 键名 //删除Ini的【文件-节-键】
INI_SECTION_COUNT 文件 节名 P/G/D/M/H //获取Ini的【文件-节】下的键值数量到P/G/D/M/H
INI_CLEAR_SECTION 文件 节名 //清理Ini的【文件-节】下的键值
INI_ERASE_SECTION 文件 节名 //删除Ini的【文件-节】,包括键值
INI_SAVE 文件 //保存到文件,上面的操作不自动保存,保存频繁会消耗比较多的CPU资源
INI_RELOAD 文件 //重新加载文件,可以用于手动修改了文本文件的情况下。
INI_SORT_READ_SECTION_VALUES 文件 节名 排序键或值(0=键/1=值) 排序类型(0=字符串/1=整数) 升序降序(0/1) 保存到内存的标识名 保存到文件(0/1)
INI_SORT_SECTION_VALUES_COUNT 保存到内存的标识名 P/G/D/M/H //获取指定标识名的列表数量到P/G/D/M/H(包含了节,在列表第一个)
INI_SORT_GET_SECTION_STRING 保存到内存的标识名 S/A //获取指定标识名的字符串“节名”到S/A
INI_SORT_GET_IDENT_STRING 保存到内存的标识名 索引 S/A //获取指定标识名和指定索引的字符串“键” 到S/A
INI_SORT_GET_VALUE_STRING 保存到内存的标识名 索引 S/A //获取指定标识名和指定索引的字符串“值” 到S/A
INI_SORT_GET_IDENT_VALUE_STRING 保存到内存的标识名 索引 S/A //获取指定标识名和指定索引的字符串“键值”到S/A
INI_SORT_GET_VALUE_INTEGER 保存到内存的标识名 索引 P/G/D/M/H //获取指定标识名和指定索引的整数 “值” 到P/G/D/M/H
INI_SORT_DELETE 保存到内存的标识名(All=删除所有) //删除对应内存标志名的列表信息
-----------------------------------------------------------
上述NPC命令使用可以参考:INI_SORT 脚本例子.txt
2016/4/18
---------------------------------------------------------------------------
修正上个版本英雄休息状态失效问题,改变跟随路径规则,英雄流程小优化
对可以挖的怪物,死亡3秒后挖取动作才有效,游戏网关挖取间隔建议设置为900
套装修改:
----------------------------
编辑套装可以设置激活提示为空,即可以隐藏套装属性,最多同时激活5套
套装现在可以选择【按百分比】或【按点数】
多套装激活现在修改为独立计算属性,原先是合并后计算属性,计算后属性和原来算法有小差别
套装增加技能支持,可以调节技能效果和技能威力,一个套装最多可以支持30个技能 //+效果不参与攻击输出计算,+威力具体多少需要自行测试,会受幸运和对方防御的影响
淬炼功能扩展:
配置中的条目,增加2个参数,第一个:最多只能炼出N条极品属性,第一个:成功提示自定义,例如:
------------------------------------------------------------
[火云石碎片+魔龙冰晶+弩牌] ;禁止极品属性装备淬炼 ;最多2个附加属性 ;成功的弹窗提示
光芒项链 70 100 0 70 1-5,1-5,0-5,0-5,1-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5, 1 2 成功附加了属性|成功但是未附加属性|淬炼失败
烈焰项链 70 100 0 70 1-5,1-5,0-5,1-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5, 1 2 123456|654321
雷霆项链 70 100 0 70 1-5,1-5,1-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5,0-5, 1 2
------------------------------------------------------------
淬炼开始时清理的属性现在只限在0~13的位置,原来是所有属性都清理。
2016/3/26
---------------------------------------------------------------------------
CHECKMAPMONCOUNT 地图名可以是Self,表示当前地图
增加:CHECKMAPRANGEMONNAMECOUNT 地图名(Self指当前地图) X Y 范围 怪物名字(*指所有) >/</=/? 数量 //检测指定地图坐标范围内的怪物数量
优化聊天处理
优化消息列队和发送
物品规则列表增加【死亡消失】选项
英雄得到其他经验可以设置为0%
法师英雄现在修改为跟随状态也可以持续开盾
修正GM命令调整元宝不刷新BUG
修正英雄有几率在安全区攻击bug
2016/3/19
---------------------------------------------------------------------------
---------------------------------------
发型,性别,职业,等级,金币,元宝,泡点,整数0~9的对应GM命令支持离线修改,
即人物不在线时直接修改数据,需要更新M2和DBServer,建议使用,少用文本操作的NPC命令,以提高效率
---------------------------------------
增加7级GM命令:@ints 0~9 角色名 +/-/= 数值,可以修改上个版本增加的10个整数变量,支持离线修改
loginsvr_mysql修正注册ID可能出错问题
2016/3/14
---------------------------------------------------------------------------
---------------------------------------
增加NPC命令:INTS 0~9 +/-/= 数量
提供对十个整数操作,记录日志在元宝类型中,搜索日志以关键字“整数”进行过滤,
可以使用<$INTS0~9>获取和显示,英雄以<$H.INTS0~9>获取和显示
MYSQL版本需要更新数据库的TBL_ADDON表和DBServer,以读取和保存新数据,最新数据库结构参考legendofmir.sql
如果需要把当前版本的普通数据转换到MYSQL数据,同样需要使用本次更新的DB2MySQL.exe
增加NPC检测命令:CHECKINTS 0~9 >/</= 数量
---------------------------------------
修正全局变量操作(Var/CheckVar/LoadVar等...)的严重BUG,并大幅度提高此等操作的效率
增加稳定性
2016/3/09
---------------------------------------------------------------------------
修正带有;GETITEMFLAG运行数天后,偶尔出现爆不出物品问题
修正几个小bug
2016/1/20
---------------------------------------------------------------------------
修正上个版本(2016/01/11~13)报错
修正引擎开启超过29天后,多进程之间的行会战消息整数越界问题
2016/1/13
---------------------------------------------------------------------------
减少英雄飞到主人身边的检测距离
加快英雄远程锁定目标的攻击反映
包裹不存在聚灵珠情况下,人物不再一直积累聚灵珠的经验
连击引擎的怪物被召唤后,可以再次刷新(176引擎不会,除非怪物死亡或消失)
优化微端内存申请释放,修正出现死锁情况;微端修改为需要激活使用。
修正引擎,三个网关刚开启时遇到接入连接的出错Bug
改善数据读取和保存线程逻辑
2016/1/2
---------------------------------------------------------------------------
英雄远程锁定目标可以飞到目标身边进行攻击
解决引擎,网关下发封包顺序BUG
优化微端服务器读取性能和下发带宽
改善英雄对目标的锁定
设置英雄杀人增加主人PK值时,武器增加诅咒也作用在主人身上
完善连击的释放和攻击
完善英雄对目标的锁定
MonSayMsg.txt 支持以下变量:SERVERNAME,SERVERIP, WEBSITE 等全局变量
CURRENTMAPDESC, CURRENTMAP, CURRENTX, CURRENTY, USERNAME, MONKILLER, KILLER
HP, MAXHP, MP, MAXMP ... MAXSC, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECONDS
改进客户端的隔位刺杀
客户端增加角色(人物、怪物、NPN等)提示列表,适用于BOSS提示,PK目标人物更醒目等
完善属下对友军的识别
2015/12/31 全套更新!!!
---------------------------------------------------------------------------
改善法师/道士职业英雄
改善英雄回到主人身边的反映
改善丢包被T
修正英雄有时动作速度异常问题,增加英雄野蛮时间补偿,现在看起来更接近于玩家的动作
修正客户端使用微端时,个别资源因解压校验错误而未能显示问题
修正几个怪物重刷后不能移动问题
修正合区工具问题
2015/12/18 M2 + RunGate配套使用
---------------------------------------------------------------------------
将mCryptModule.dll分别复制到M2,LoginGate,Rungate目录下,会加密保存激活码。
客户端增加极品物品的坐标和方向提示
客户端修正怪物出现时,声音调节失效问题
修正类似虎卫被召唤,无限刷新问题
修正客户端对NPC:WebBrowser命令部分网页打不开问题
mysql版本的dbserver,loginsvr的配置文件中,如果LoginPrompt=1,则每次开启都需要输入密码,这时ini中不要保存sql密码。
优化LogServer
2015/12/12
---------------------------------------------------------------------------
取消任务导航支持执行QF脚本功能,取消聊天栏支持执行QF脚本功能,存在漏洞!!!
并改为执行独立脚本:QChatMission-0.txt,因为客户端可以直接执行该脚本的任意标签,要注意脚本写法,防止漏洞。
------------------------
优化NPC执行流程
优化修正引擎接收封包处理封包的bug,大幅度提升引擎对客户端封包处理效率
客户端自定义输入字符默认过滤“@<>/\”5个字符,防止标签被非法执行
修正2015/11/30修改引起的杀怪触发脚本报错
取消金币交易市场
2015/11/30
---------------------------------------------------------------------------
优化客户端纹理加载和管理
优化客户端操作体验
修正物品被拾取后偶尔留下的物品假象
被登陆脚本踢下线后不再接受客户端封包
优化引擎IOCP封包处理部分的性能
优化客户端聊天栏字体渲染效率
优化客户端数字飘血和数字显血
提高火球术,大火球,灵魂火符对移动目标的命中率
增加释放魔法触发QFunction的[@MagSelfFuncXX]和[@MagTagFuncXX]的开关,默认关闭
引擎修正火墙假象
现在[@KillPlayXX][@KillPlayMonXX]触发时,可以使用KILLERTYPE区分杀怪/人的主体
比如:
[@KillPlay1]
#IF
KILLERTYPE = 1 //1人物,2英雄,3宝宝
#ACT
SENDMSG 5 人物杀死
2015/11/10
---------------------------------------------------------------------------
修复上个版本客户端运行片刻会出现崩溃退出bug
修复游戏网关一个严重的死循环漏洞,会导程序致崩溃退出
修复上个版本引擎因优化地图管理器引起脚本缓存不能读取问题,如:升级武器记录文件,已卖商店的物品不加载等...
提高数据工具的日志查询效率
怪物设置增加开关:所有怪物使用新的刷新模式;如果开启,相当于MonGen.txt下所有怪物都使用新的刷新模式(重启生效)
修正LoginSvr找回密码bug,修正LoginSvr一个封包漏洞
LoginSvr找回密码修改为:问题1答案1,问题2答案2都正确才能成功找回,修正账号的创建日期和更新日期错乱bug。
LoginSvr mysql版本优化语句,完善防注入检测
LoginSvr mysql版本增加二级密码,密码现在使用MD5密文
优化怪物运行管理,修正上个版本的引擎会出现怪物迟钝BUG,
提高引擎启动速度,提高动态变量(LoadVar,SaveVar)效率
2015/10/25
---------------------------------------------------------------------------
改进刷怪和怪物运行管理,现在由地图管理器接管
改进,优化镜像地图功能
修正完善英雄怪
客户端增加拒绝全服喊话开关(@传 之类的喊话信息),需配合最新引擎;同时引擎有控制开关,游戏参数-信息控制-允许屏蔽全局喊话
简单增加好友上线提示,私聊字体个性颜色等
添加黑名单会在服务器上禁止私聊
将simli.ttf更新至客户端data目录下,可以启用个性化NPC名字字体
提高客户端对Wzl的读取效率
2015/10/14
---------------------------------------------------------------------------
修正师傅不在线情况下,记录徒弟出师文档BUG
修正跨服属下属性异常问题
连续申请行会战,最高可持续12小时
完善客户端细节
刷怪文件增加一个参数,现在格式如下:
;代码 x y 名称 范围 数量 时间 任务几率(0~100) 刷新模式(0~1)
-------------------------------------------------------------------
刷新模式=0时,刷怪模式不变,和以前一样,可能boss刚被杀死,未到间隔时间会重新刷一只。 //不添“刷新模式”参数,默认为0
刷新模式=1时,假设怪物刷新间隔时间是1小时,杀死怪物后,经过1小时才会再次
刷出该怪物。
建议boss类的怪物开启新的刷怪模式,更加合理。
增加几个变量:
$YEAR //年
$MONTH //月
$DAY //日
$HOUR //时
$MINUTE //分
$SECOND //秒
$MILLISECONDS //毫秒
增加NPC命令: //因为需要申请和释放比较大的内存,不建议频繁使用
AddMirrorMap 源地图 镜像地图 镜像地图描述 小地图编号 使用期限(分钟) 刷怪(0,1)
DelMirrorMap 镜像地图
MirrorMapTime 镜像地图 +/-/= 时间(分钟) //MirrorMapTime 镜像地图,直接获取剩余使用时间
在镜像地图中可以使用<$MIRRORMAPTIME>查看剩余使用时间,新客户端可以直接右上角显示
MobNpc 地图名 X Y NPC名称 脚本文件名 外观 属沙城(0/1) 脚本文件不带地图名(0/1) 存活时间(默认0秒不自动消失) // 脚本文件不带地图名=1时脚本文件名不需要带地图名
DelNpc 地图名 X Y // 删除指定地图位置的NPC
脚本示例:
----------------------------------------
[@AddMirrorMap]
#ACT
AddMirrorMap D71615 MRD71615 [D71615]的镜像 0 2 1
[@AddMirrorMap_Success]
#ACT
SENDMSG 5 创建镜像地图成功。 255 168
AddMapRoute 3 333 333 M71615 22 33 0
AddMapRoute M71615 21 33 3 332 333 0
[@AddMirrorMap_Failed_SourceMapNotExists]
#SAY
创建镜像地图失败,源地图不存在!\ \
<返回/@main>
[@AddMirrorMap_Failed_MirrorMapExists]
#SAY
创建镜像地图失败,镜像地图已经存在!\ \
<返回/@main>
[@DelMirrorMap]
#ACT
DelMirrorMap MRD71615
[@DelMirrorMap_Success]
#ACT
SENDMSG 5 删除镜像地图成功。 255 168
[@DelMirrorMap_Failed_MirrorMapNotExists]
#SAY
删除镜像地图失败,镜像地图不存在!\ \
<返回/@main>
[@DelMirrorMap_Failed_NotMirrorMap]
#SAY
删除镜像地图失败,目标非镜像地图!\ \
<返回/@main>
[@MirrorMapTime]
#ACT
;;MirrorMapTime MRD71615
MirrorMapTime MRD71615 + 1
[@MirrorMapTime_Success]
#SAY
镜像地图使用剩余时间:<$STR(M98)>分钟<$STR(M97)>秒\ \
<返回/@main>
[@MirrorMapTime_Failed_NotMirrorMap]
#SAY
目标非镜像地图!\ \
<返回/@main>
[@MirrorMapTime_Failed_MirrorMapNotExists]
#SAY
目标镜像地图不存在!\ \
<返回/@main>
----------------------------------------
2015/10/10
---------------------------------------------------------------------------
修正浑水摸鱼模式名字显示问题
修正几个封包漏洞,会可能导致物品属性混乱。
修正登录可能出现串号问题
修正LoginGate有大量连接时会出现错误并不能接受连接BUG
引擎启动后,执行QManageNPC [@OnStart]
修正绿毒的爆出物品占有权过大问题
跨服系统喊话
跨服行会传送GM命令和NPC命令
跨服跟踪
跨服传唤
跨服夫妻传送
跨服夫妻上线提示
跨服行会战
跨服全局变量同步
修正可能同时爆出多个装备极品属性的问题
2015/9/30
---------------------------------------------------------------------------
暂时去掉部分分线程,保证稳定性
更改英雄攻击模式的限制时间调整为200ms
修复神兽有大量目标仍边攻击边回头走问题(包括其他怪物属下)
修复属下远离情况下,CTRL+A切换攻击模式,属下不回到身边问题
增加NPC命令:MOVETOCELL X Y NPC名称 //自动移动到坐标点,并点击NPC;“NPC名称”可忽略。
怪物设置面板增加怪物灵敏度调节
修正关闭M2加速功能不完善问题
优化人物流程
修正英雄组合速度难调节问题
修正怪物过于灵敏问题并完善怪物灵敏度调节
客户端:
修正按住施毒术会导致毒药消失假象问题
输入法使用Windows的原始界面
全角输入法状态下,可以按1~6吃药,使用字母释放魔法,以及使用如~!@等快捷字符
包裹界面增加刷新包裹按钮
增加安全区右上角标识
2015/9/24
---------------------------------------------------------------------------
修正2015/9/23因改进英雄流程引起召唤不出英雄的问题
怪物设置增加是否可以立即拾取大刀杀怪物爆出的物品
修正属下的反应比较慢的问题
Logingate将现在起需要引擎的激活码,Confing.ini [Strings] ActivateCode=激活码
登陆网关和客户端的登陆流程修改
客户端:
增加音量调节
中文状态可以按“`”或“~”建拾取物品
修正按住施毒术会导致毒药消失假象问题
增加使用字母自定义技能快捷键,并且修改原先快捷键为(防冲突):
CTRL+Z -> ALT+A 自动挂机
V -> ALT+V 隐藏怪物尸体
O -> CTRL+O 查看任务
P -> CTRL+P 查看组队
T -> CTRL+T 交易
2015/9/23
---------------------------------------------------------------------------
开启引擎后,自动开始2分钟时长的快速刷怪
改善英雄和怪物的运行效率
修正上个版本可能出现药品不自动解包问题(注:红药包Anicount=1,蓝药包Anicount=2, 特殊药包药包Anicount=3)
修正地狱雷光/瞬息移动之类的魔法,超过魔法距离释放失败问题
改进英雄的群体技能的释放
修正提交镖车,镖车不消失bug
优化多线程下物理地图对象存取
2015/9/20
---------------------------------------------------------------------------
修复一个严重bug,特定情况下会消耗大量的流量和CPU
多线程处理人物/英雄/怪物/通讯等流程,流畅度是否提升,需测试!
修正行会时,攻击模式计算缓慢问题
噬魂沼泽释放后,在释放地面范围内将中毒,5秒持续时间(如果使用新客户端0920以上,可将Magic.DB中噬魂沼泽释的EffectType=2,这样毒雾不会随目标移动)。
客户端:
走路判断更灵活,内挂细节修正,隐藏尸体修正,优化CPU开销
2015/9/12
---------------------------------------------------------------------------
修复一处可导致引擎自动关闭的溢出漏洞
修复客户端飘血与实际掉血量不相等BUG
大量减少引擎下发流量
修正快速使用物品可能导致内存溢出bug
修正特性情况下交易物品消失bug
2015/8/22 引擎+客户端 需要配套
---------------------------------------------------------------------------
将获得的激活码填写在!Setup.txt的
[Server]
ActivateCode=激活码
第一次激活比较久,稍等3分钟左右,重新开启程序即可。
修正NPC下发脚本小bug
修正挖肉品质bug,修正肉品价格错误
修正丢物品到地面偶尔看不到bug(客户端)
地面极品装备会闪烁,选项-物品装备-有开关设置
修正引用时间函数的错误运算
修正偶尔出现GM隐身被看见bug
客户端修正部分素材看不到bug(客户端)
--------------------
MonItems目录下的爆率文件,第一行增加标志:;GETITEMFLAG(3),数字3,表示将随机必爆爆率为1/99999999的其中3样物品
白野猪.txt 爆率文件内容格式如下:
;GETITEMFLAG(3)
1/5 金币 200
1/2 强效魔法药
1/2 强效金创药
1/5 太阳水
1/5 强效太阳水
1/99999999 上古神甲
1/99999999 上古宝甲
1/99999999 上古披风
1/99999999 上古羽衣
1/99999999 上古道袍
1/99999999 上古长袍
--------------------
2015/8/11
---------------------------------------------------------------------------
MapInfo.txt的地图增加参数:OPTI,带有该参数的地图,会提前申请需要的部分内存进行优化。PS:适合用于怪多,人经常去升级,或PK多的地图,建议使用。
网关封掉利用部分技能制造类似“暗杀”的效果
完善个别脚本命令
任务导航支持执行QF脚本:
-------------------------
[1-1] 任务1
移动到<英雄特使(比奇城)(334,270)/@_automove 334:270:比奇省>\脚本执行方式1<LABEL=@QFLabel>执行脚本</>\脚本执行方式2<执行脚本/@QFLabel>...\脚本执行方式3<PIC=DscStart0.bmp&LABEL=@QFLabel>普通文字
2015/8/7
---------------------------------------------------------------------------
优化部分封包,减少引擎下发流量
优化封包模块,性能有比较大的提升(影响所有服务器程序)
改进新刷怪模式,刷怪速度几乎等同老模式,性能更好刷怪更合理!同时增加回老的刷怪模式提供选择
改善怪物流程稳定性
修正挖动物获取到的物品看不见bug
性能设置增加怪物灵活度兼容开关,开启后,怪物灵活度等同于以前版本引擎的。
优化聊天处理代码
增加稳定性
2015/7/30
---------------------------------------------------------------------------
修正周围有人取消摆摊失败bug
修正账号在其他地方登录时,偶尔不提示信息bug
修正有时怪物不显示名字
修正偶尔出现个别怪物报错
修正发现死亡人形怪/人物时外观不正确显示bug
增加视觉范围控制,在参数设置,坐标范围,建议X=18 Y=16
DBS修正当前使用称号和显示时装开关不保存bug (MySQL版本)
SENDMSG 5 普通文字1<LABEL=@QFLabel&HINT=点击运行脚本功能>[执行脚本]</>普通文字2 255 168 65000 //聊天栏置顶文字+执行脚本
SENDMSG 5 普通文字1<PIC=DscStart0.bmp&LABEL=@QFLabel>普通文字2 255 168 65000 //聊天栏置顶文字+按钮执行脚本,DscStart0.bmp必须存在lui.pkg中
SENDMSG 5 <URL=www.XXXXX.com&HINT=点击打开网站>访问官方网</> 255 168
聊天栏置顶文字需要最新客户端支持。
2015/7/19
---------------------------------------------------------------------------
引擎:
修正上个版本引擎一个比较大的内存泄漏
修正加载脱机人物地图对象重复bug
修正镖车可能引起的内存错误
修正偶尔出现怪物假象
修正ReQuestBuildGuild bug...
优化ReGetHumanName,HumamOperation...
优化地图对象流程,增加地图对象内存管理
网关通讯采用多线程IOCP模式,提高数据吞吐量
改进地图对象架构,提高性能,减少内存碎片
增加地图对象管理,减少内存开支
修正火龙之心bug
db里,称号的 weight = 1,图片和名字分为上下显示
性能设置增加了快速刷怪开关
优化全局变量相关应用部分
服务器数据存取方式采用MySQL(MySQL版本)
m2 改进怪物内存流程,提高怪物灵敏度,降低CPU使用率,改善其他部分代码的性能
m2和dbs数据存取部分改用多线程模式,性能提升大(MySQL版本)
GameCenter增加‘最高服务器上线人数’设置,支持MySQL备份与恢复(压缩备份与恢复需要在MySQL的bin目录下放上gzip.exe)(MySQL版本)
登陆排队功能:(网关 + 引擎 + 客户端 配合)
---------------------------------------------------------------------------
MaxUserForLoginWait=8000 实际在线人数超过此数量,登陆游戏会排队,赋值0将关闭登陆排队功能。
LoginWaitTimeRate=0.800000 登陆等待时间 = (实际在线人数 - MaxUserForLoginWait) * LoginWaitTimeRate
OnlinePlayerCountRate=13.240000 排队时报告的在线人数倍数,报告数量 = 实际在线人数 * OnlinePlayerCountRate
连击:
---------------------------------------------------------------------------
增加种族伤害属性
首先扩展HeroDB数据库,使用StditemConvert工具,然后设置数值,
Monster.DB的:
RaceEx 0=未定义,1=人族,2=兽族,3=无生命,4=不死族,5=恶魔族
ShapeEx 0=未定义,1=小型,2=中型,3=大型(注:目前未启用)
Stditem.DB的:
RaceDamage 种族伤害值 0~255
ShapeDamage 体型伤害值 0~255
@supermake 1 24 0~255 //种族伤害值,调整所有种族伤害的伤害值.如果当前武器有3种种族伤害,则3种种族伤害的伤害值同时调整一致
@supermake 1 25 1~31 //种族伤害针对的种族,1=人族,2=兽族,4=无生命,8=不死族,16=恶魔族,可以多个并存,将对应的数值相加即可,如果该值不正确或未设置,客户端显示附加种族伤害 +xx%(未激活)字样
//比如要人族和兽族2种属性共存就@supermake 1 25 3
//如果要人族,兽族,无生命三种属性共存就@supermake 1 25 7
脚本命令:GIVE,GIVEEX,UPGRADEITEM,UPGRADEITEMEX 同样可以调整
1、装备的PK目标爆率 修改为 击杀爆率,使用百分比计算,现在不止对人有效,对怪物也有效。
公式:爆率 = 原爆率 + ((击杀爆率 - 防爆) / 100 * 原爆率);
注:爆率/原爆率/击杀爆/防爆 都是百分比,
比如原来爆率是10%,击杀爆率 50%,防爆0%,根据公式:10 + (( 50 - 0) / 100 * 10) = 15,最终爆率就是15%
比如原来爆率是10%,击杀爆率100%,防爆0%,根据公式:10 + ((100 - 0) / 100 * 10) = 20,最终爆率就是20%
2、防爆 修改为使用百分比计算
3、改善英雄类怪物的灵敏度,RECE=61人形怪支持连击
4、改进刷怪机制(复活模式),大幅度提高性能,减少服务器内存碎片,更准确的刷怪时间
5、HGE客户端优化,即使用火墙同时烧2000怪,CPU基本也保持为0~1%
6、大量性能优化,在服务器硬件配备够好情况下,经测试,万人在线不卡(3000人同时参与沙战不卡)
MonSpAbilList 增加 防红毒 防绿毒 破盾
菜单-怪物设置-基本参数:增加怪物死亡重新计算刷新时间 开关,默认关闭
菜单-物品装备-基本设置:增加装备持久0是否消失 开关,选择不消失则属性失效
修改赋予称号时自动激活
HGE客户端支持怪物:(附加)
瘟疫毒牙;81;124;360;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫金蟾;81;124;361;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫鱼人;81;124;362;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫蛋;115;124;363;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫使者;81;124;364;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫长老;81;124;365;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
瘟疫统帅;81;124;366;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
醉拳熊猫;210;124;367;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
邪恶沙虫;127;125;370;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
秃鹫;81;125;371;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1250;0;0;0;
掷刀兽人;87;125;372;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
矿工兽人;81;125;373;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
梭镖兽人;87;125;374;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
大刀兽人;128;125;375;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
训狼兽人;81;125;376;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
坐骑兽人;81;125;377;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
巫师兽人;129;125;378;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;2000;1;0;2050;0;0;0;
厨师兽人;81;125;379;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
流星锤兽人;159;125;3710;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
m38_11;160;125;3711;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
m38_12;160;125;3712;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;
m38_13;160;125;3713;50;1;30;16000;6000;0;80;80;88;99;0;0;30;30;1000;1;0;1050;0;0;0;