★BLUE官方代理、QQ群487184004、QQ：1592180  
！微信验证码功能因使用外部文本，当文本达到一定体积(1M以上)，会严重影响服务器性能，建议优化思路或者使用两步验证功能替换
！请注意，从2021年开始的程序版本，不再支持windows XP、2003及以下的操作系统



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加载速度
  整数是否记录日志与元宝分开，默认不记录，需要请修改日志过滤列表，增加：整数 即可






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
  获取到属性会触发本NPC的[@OnGetEquipProps]字段，附带返回变量如下，其他请查看附带示例：GetEquipProps.txt
		$PARAM(0)	// 物品ID
		$PARAM(1)	// stdmode
		$PARAM(2)	// looks
		$PARAM(3)	// 装备位置
		$PARAM(4)	// 鉴定基础属性有效条数
		$PARAM(5)	// 鉴定神秘属性有效条数
		
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)
例1：
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[@MonDropItemDown]
#act
; 下面几句是为了显示为一条信息，可能不太准确
mov MDropItemID <$PARAM(7)>
inc SMonDropDownItems <$ITEM(MDropItemID)>
DelayGoto 64 ~MonDropItemDown

[~MonDropItemDown]
#if
compval <$STR(SMonDropDownItems)> ! ""
#act
SendScrollMsg <$PARAM(4)>的<$PARAM(3)>掉落：<$STR(SMonDropDownItems)>(点击物品可暂停漂移) 151 16
mov SMonDropDownItems ""

例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) 方法，有以下几种：
L  从文件加载，不要频繁使用，否则有性能问题！！！
S  保存到文件，不要频繁使用，否则有性能问题！！！
A  添加
E  赋值
C  清理
D  删除指定名称的子结点
P  解析给定的字符串
O  排序，格式：
   1) JSON 标识 O 是否按名称排序(0/1) 是否排序子结点(0/1)
Y  复制，格式：
   1) JSON 标识 Y 源标识 0 			// 从“源标识”复制一份到“标识”
M  合并，格式：
   1) JSON 目标标识 M 源标识 0 		// 0 不重复，重复项目将以“目标标识”为准，默认
   2) JSON 目标标识 M 源标识 1		// 1 不重复，重复项目将以“源标识”为准
   3) JSON 目标标识 M 源标识 2		// 2 可重复，将“源标识”项目追加至“标识”中

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"}
注意：数值最好不要有空格，如果必须带空格，请使用双引号""包围起来以表示为一个参数

5) 取值的变量：
<$JSON(标识)JSON>				// 固定格式，JSON对象的字符串，单行
<$JSON(标识)FORMAT>				// 固定格式，JSON对象格式化后的字符串（换行）
<$JSON(标识)path>				// 某路径或名称下的数值

例：
#act
JSON myjson C
JSON myjson A 整数 12345
JSON myjson A 字符串 这是字符串...
JSON myjson A 布尔值 True
JSON myjson A 浮点数 2.532
JSON myjson E 日期时间 "2018-11-12 06:12:11"
JSON myjson E 数组 ["字符串",100,null,true,false,123.4]
JSON myjson E 对象 {"name":"Object_Name","value":"Object_Value"}
sendmsg 7 myjson格式化字符串是：<$JSON(myjson)FORMAT>
; 第一个位置以0开始
sendmsg 7 “数组”第二位置的值是：<$JSON(myjson)数组[1]>
; 保存到文件
JSON myjson S ..\QuestDiary\example.json

; 从字符串解释到JSON
JSON myjson P {"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>

JSON myjson D array[3]
JSON myjson D myobj.subobj[1]
JSON myjson D myobj.subobj.int2
sendmsg 7 删除后的结果<$JSON(myjson)FORMAT>

; 合并例子
JSON myjson1 P {a:10000,b:200,c:"id"}
JSON myjson2 P {a:"str",d:500,e:7002}

; 不重复，重复项目将以“目标标识”为准，默认
JSON cpyjson Y myjson1
JSON cpyjson M myjson2 0
sendmsg 7 合并结果0：<$JSON(cpyjson)JSON>

; 不重复，重复项目将以“源标识”为准
JSON cpyjson Y myjson1
JSON cpyjson M myjson2 1
sendmsg 7 合并结果1：<$JSON(cpyjson)JSON>

; 追加项目，允许重复
JSON cpyjson Y myjson1
JSON cpyjson M myjson2 2
sendmsg 7 合并结果2：<$JSON(cpyjson)JSON>

; 赋值
JSON myjson E object.赋值.int 87654321
JSON myjson E object.赋值.float 5.76
JSON myjson E object.赋值.string abcdefg...
JSON myjson E object.赋值.datetime "2022-11-22 11:22:33.123"
JSON myjson E object.赋值.子对象.int 12345678
JSON myjson E object.赋值.子对象.ishum true
JSON myjson E object.赋值.子对象.float 5.76
JSON myjson E object.赋值.子对象.array [12345,1.76,false,string,2022-11-22T11:22:33.123]
sendmsg 7 赋值结果<$JSON(myjson)FORMAT>

添加NPC检测命令CheckJson，格式：CheckJson 标识 方法 标识|名称|路径 选项
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各个参数意义：
1) 标识，类似自由变量，指定一个唯一标识

2) 方法，有以下几种：
X  判断是否包含指定路径的子结点，格式：
   1) CheckJson myjson X path
N  判断是否包含指定的子结点名称，格式：
   1) CheckJson myjson N name 是否嵌套检查子结点(0/1)
V  判断是否包含指定的子结点数值，格式：
   1) CheckJson myjson N value 是否嵌套检查子结点(0/1)
E  判断JSON内容是否相同，格式：
   1) 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[3]
#act
sendmsg 6 路径存在，取数值方法一：<$JSON(myjson1)array[3][0]>，方法二：<$JSON(myjson1)array[3].str>，方法三（整个对象）：<$JSON(myjson1)array[3]>
#elseact
sendmsg 5 路径不存在

#if
CheckJson myjson1 N name2
#act
sendmsg 6 1)包含名称
#elseact
sendmsg 5 1)不包含名称

#if
CheckJson myjson1 N name2 1
#act
sendmsg 6 2)包含名称（检查子结点），数值是：<$JSON(myjson1)myobj.subobj.name2>
#elseact
sendmsg 5 2)不包含名称（检查子结点）

#if
CheckJson myjson1 V 123456
#act
sendmsg 6 3)包含数值
#elseact
sendmsg 5 3)不包含数值

#if
CheckJson myjson2 V 1.23 1
#act
sendmsg 6 4)包含数值（检查子结点）:<$JSON(myjson1)array[0]>
#elseact
sendmsg 5 4)不包含数值（检查子结点）

#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支持到99






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) 对象(""/All/Guild/地图名)	
修改为
PLAYEFFECT WIL名称/X/Y 起始图片 帧数 间隔 循环次数 声音 声音循环(0/1) 对象(""/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) 秒数 点数，第一参数为clearup时，清理掉状态；类型：0绿毒/1红毒/3雷击/4冰冻/5石化/6禁锢(同石化)/7重伤(丧失防御)
M2 添加获取SetAbility数值变量：$ABILITIES0~100；增加$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，第五参数为：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~100) 数值 持续秒数 结束时的提示字符(留空不提示)
其中有如下49个固有属性，其他的50-100可以用作临时计时变量，也可以作为计时器使用。

[@SetAbility]
#ACT
SetAbility 10 15 30 暴击附加属性恢复正常。
SENDMSG 5 获得暴击附加属性15点，持续30秒。
;SetAbility 10 0 0 暴击附加属性恢复正常。  // 立即清理位置10的属性
;SetAbility clearup // 清理所有属性

位置对应属性:
  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 强效太阳水 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				// 调整按钮位置
!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坐标
丢弃HintItemList.txt中的物品触发QF的[@DropItem] <$PARAM(1)>:物品名 <$PARAM(2)>:Looks <$PARAM(3)>:角色名 <$PARAM(4)>:地图名 <$PARAM(5)>:X坐标 <$PARAM(6)>:Y坐标
修正上个版本怪物移动/攻击速度异常
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 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>
---------------------------------------
称号计时间隔减少，更准确
优化游戏网关

mysql版本增加邮件系统（目前只开放系统邮件，为后续游戏功能提供支持）
可以使用NPC命令发送邮件：
;参数4：金币，参数5：元宝，参数5：元宝，参数6：物品(上限5个)，参数7：附加属性，参数8：普通鉴定属性|神秘鉴定属性|特殊属性|神技|几鉴	//类似GiveEx，针对装备类
sendMail 玩家名 邮件标题 邮件内容 1000 10 回城卷|命运之刃 1=11,2=12,3=13,9=15   1=11,2=12,3=13,9=15|6=11,10=12,11=13,12=15|67|127|2






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 以自己坐标为中心指定范围人物触发


减少登录器/客户端误报情况
登录器配置器支持对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)	//刷NPC；脚本文件不带地图名=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=大型，4=巨型 （注：目前未启用）

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;


