多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[danger] PS:请将VMProtectedSDK32.dll放到C:/Windows/System下因为没有再使用VMP加壳程序依赖这个dll(客户端程序加壳所以发布登录器并不会依赖这个dll) ## 2019年12月31日更新 1. \[修正\]物品CustomValue无效修复 2. \[修正\]引擎启动第一次判断Player.Wepon会为nil的bug 3. \[修正\]上一版本爆率过高的问题。 4. \[增加\]TActor.CustomEffect\[1..10\]:Integer自定义特效。可用于实现自定义动态称号功能。ID为UI设计中自定义特效ID ## 2019年12月29日更新【测试版】 >[danger] 注意:此版本为测试版本存在不稳定因素更新过程人物数据会进行升级请注意备份玩家数据。 1. \[优化\]优化客户端流畅度 2. \[优化\]物品附加属性从word修改为int64。突破65535限制 3. \[优化\]物品宝石镶嵌孔从3个扩充为5个。 4. \[优化\]物品的元素属性值从word修改为int64突破65535限制 5. \[优化\]物品MakeIndex从Integer修改为int64(为跨服做准备) 6. \[新增\]物品增加CustomValue\[0..10\]为自定义值方便对物品做额外标记操作。 7. \[优化\]TPlayObject.N变量数量由50个扩展为300个TPlayObject.P变量数量由50个扩展为300个TPlayObject.S变量数量由50个扩展为300个 8. \[优化\]套装属性值从Word扩充修改为int64 9. \[新增\]增加函数GameLib.RandomRange(const Min,Max:Int64):Int64;用于获取一个指定范围内的随机数和random()不一样是random返回的是integer类型这个返回的是int64。 >[info] 例:A:=GameLib.RandomRange(1000000000000,200000000000);意思就是从随机从1000000000000-200000000000中间取一个数包含1000000000000,200000000000; ## 2019年12月13日更新 1. \[修正\]登录时给玩家添加任务客户端会显示两条的问题。 2. \[新增\]QFunction添加穿戴装备且属性变化后触发OnAfterTakeOnItem,与之前的OnTakeOnItem不同是OnTakeOnItem触发执行的时候装备附加的属性没有加到人身上。OnAfterTakeOnItem是属性已经附加到人物身上了。函数原型 ``` procedure OnAfterTakeOnItem(Player:TPlayObject; TakeOnItem:TUserItem; TakeOffItem:TUserItem; AItemWhere:TItemWhere); ``` 注意当穿戴位置原先没有装备的时候TakeOffItem是为nil的请先判断再做操作。 3. \[新增\]QFunction添加脱下装备且属性属性变化后触发OnAfterTakeOffItem.区别同上 ``` procedure OnAfterTakeOffItem(Player:TPlayObject; TakeOffItem:TUserItem; AItemWhere:TItemWhere); ``` 4. \[新增\]增加`TActor.IsFrindlyTarget(Actor:TActor):Boolean;`用于判断对方是否友方单位,该结果会受到切换攻击模式的影响。 5. \[修正\]物品提示信息栏宝石镶嵌增加UI设置修改是否显示宝石图标以及样式 6. \[修正\]完善物品提示信息栏属性自定义 7. \[修正\]优化客户端流畅度 ## 2019年12月8日更新 1. \[新增\]技能魔法施毒术增加配置毒死怪物必掉物品 2. \[新增\]UI物品提示框增加属性自定义以及属性颜色自定义 3. \[新增\]M2-选项-参数设置增加怪物简装和人物简装设置。客户端内挂须为仿及时雨盛大模式暂未支持 4. \[新增\]开发者客户端增加实时修改预览物品提示框和实时预览修改物品来源描述。达到实时修改无需重启M2和版本管理器的功能提升开发效率 5. \[修正\]若干小bug修正。 ## 2019年12月3日更新 1. \[新增\]物品悬浮提示框物品产出来源信息支持图片和文字混排,形如1={I=12;F=prguse.data}神来之笔{I=13;F=prguse.data}{S=攻击力+;C=123}{S=255;C=#00FFFF}{S=AABBCE;C=#FFFF00}{H=24}{M=163-165;T=200;F=Prguse.data}这类混排指令已被支持。 2. \[修正\]自定义BUFF时间和BUFF图标时间显示不对的问题 3. \[新增\]增加网络数据包性能分析报告将在MIR200下生成91NetMessage\*.csv用于分析流量负载情况。 4. \[修正\]逐日剑法伤害失效的问题 5. \[新增\]自定义技能施法动作增加无动作类型。 6. 修正致命额外伤害客户端标签显示数值异常 7. 注意此版本修改了协议封包必须客户端和服务端同时更新否则会导致行走卡住 ## 2019年11月25日更新 1. \[新增\]GameLib增加 >[info] QueryPerformanceFrequency 获取CPU每秒震荡次数, > QueryPerformanceCounter 获取获取当前震荡总数(两次震荡总数相减就是两次间隔的CPU震荡次数)用于获取超高精度的时间计算。可用于精确到纳秒的计时器可以用于脚本中做性能测试分析。 > 具体使用可以百度QueryPerformanceCounter以及QueryPerformanceFrequency 2. \[修正\]M2重启游戏网关不会重新连接上来的问题 3. \[新增\]版本管理器刷怪配置增加重复使用怪物模式,此模式下怪物死亡后会立即重新刷新。保证在一些升级地图玩家始终有怪可打。 4. \[优化\]M2性能略微提升版本管理器编译效率 ## 2019年11月22日更新 1. \[新增\]控制台增加性能测试模式开启后可对M2程序以及脚本中的代码进行性能分析,将会在程序关闭的时候生成报告。(无需关闭控制台只需停止M2)Mir200目录下生成91Prof.csv(程序性能分析)91PorfScript.csv(脚本性能分析)RunGate下也会生成性能报告。(生成的csv可用excel直接打开)性能分析将会轻微降低M2性能约5%性能下降脚本性能将下降15%左右 2. \[新增\]压力测试工具公布(使用需要M2开启GM权限并且控制台开启压力测试并且网络密码必须为空)以及压力测试工具需要使用以下GM命令如果命令名称不对请自行修改 >[info] ##### @Superman 无敌 > @Level 调整等级 > @MoveMap 随机地图移动 > @trainingSkill 学习技能 3. \[新增\]版本管理器批量导出资源增加跳过空图片选项。 4. \[新增\]物品特殊属性脚本化。 ## 2019年11月15日更新 1. \[修正\]网关增加用户Socket用户断线原因日志 2. \[修正\]副本释放可能导致玩家掉线的问题 3. \[修正\]创建角色使用内存类工具修改创建角色名长度可以导致挂机以及在线两个同名角色的问题\[严重\] ## 2019年10月21日更新 1. \[修正\]角色顶号会导致数据库报错的问题 2. \[修正\]人形怪无S以及N运行期变量无效的问题。 3. \[新增\]M2选项-参数设置-城堡参数增加是否允许飞行魔法攻击城墙的设置 4. \[修正\]上一版本人物大退实际没有离线的问题。 5. \[修正\]摆摊礼券收益无法从摊位取回的问题。 ## 2019年10月19日更新 1. \[修正\]禁止穿人的模式下穿过死亡怪物或者玩家会被弹回的问题。 2. \[修正\]摆摊上架礼券有时候会无法编辑的问题。 3. \[新增\]GameLib.GetGuildCount()获取服务器上总共的行会数量。 4. \[新增\]GameLib.GetGuildByIndex()获取具体的行会对象。配合和GameLib.GetGuildCount()共同使用例如//遍历获取服务器上的所有行会 ``` for i=0 to GameLib.GetGuildCount() - 1 do begin  Guild = GameLib.GetGuildByIndex(i); end; ``` 5. \[新增\]顶戴静态称号增加xy偏移调整Player.TitleName={I=1;X=5;Y=10} 6. \[修正\]游戏网关玩家下线还能在在线列表看到的问题 ## 2019年10月14日更新 1. \[修正\]接取任务(AddMissionLink)会导致任务人物数据不保存的问题 2. \[修正\]开启生肖以及首饰盒功能设置不会被保存的问题。 3. \[修正\]聚灵珠在商城看到是满的实际买到是空的的问题。 4. \[修正\]自动挂机战士攻击特效异常的问题。 5. \[优化\]客户端字体绘制性能,修正因为字体内存泄漏导致客户端会白屏的问题。 6. \[修正\]网关防攻击功能无法关闭导致误封无法解除的问题。 ## 2019年9月26日更新 1. \[修正\]上一版本合区后修改分区数据名字无效的问题 2. \[新增\]添加 `GameLib.AsyncHttpPostJson(Ident:String; URL:String; Json:String; TimeOut:Cardinal=5000)` 函数,用于支持http提交json功能。 >[info] 参数说明: > ident:请求标志自定义数据这个当httpost完成或者错误的时候此数据会原封不动传递到下文的OnAsyncHttpPostResult中URL:远程服务器URLJson:要提交的json字符串内容。TimeOut:超时时间单位秒。 3. 同时在ManangerNpc添加结果触发函数 ``` procedure OnAsyncHttpPostResult( Npc:TNormNpc; const Ident:String; const URL:String; const Response:string; const ErrorStr:String) ``` 当成功或者失败会调用此函数。(异步模式同步会导致引擎主线程逻辑卡) >[info] 参数说明 > Ident:请求标志自定义数据URL:远程服务器URLResponse:服务器返回的数据(失败为空字符串,但是服务器如果返回的就是空串那要根据ErrorStr来判定成功与否)ErrorStr:成功为空字符串失败为失败的错误描述信息。可以根据是否为空串判定是否成功 4. \[修正\]物品事件触发为拾取时修改物品属性无效的问题。 5. \[新增\]摆摊增加礼券货币。对应的摆摊回调触发函数新添加有GamePoint函数。请根据M2报错信息修改触发函数声明。(注意更新91自带素材补丁) 6. \[新增\]控制台增加是否开启异常守护者(不开启的话可以嵌入程序到控制台,开启并且同时嵌入控制台会导致无响应) 7. \[修正\]上一版网关不稳定的问题。 8. \[修正\]武僧天雷阵MP不足不会失效的问题 ## 2019年9月2日更新 1. \[新增\]TActor.TitleEffect使怪物也可以头顶上有动态称号。 2. \[修正\]十二生肖物品指定了穿戴位置会导致穿戴不上去的问题。 3. \[修正\]交易物品UI修改支持自己名字和金币位置自定义。 4. \[修正\]数据库设置了物品幸运脚本中获取依旧为0的问题。 5. \[修正\]盾牌自定义特效在装备内观中不显示的问题 6. \[修正\]合区工具没有重复角色名依旧会被识别为重复并且加上1的问题。 7. \[修正\]备份功能不会备份非UTF8编码TXT文件的问题。 8. \[修正\]GameLib.ReNamePlayer修改玩家名称函数在DBServer开启了非法字符过滤会总是更名失败的问题。 9. \[新增\]登录器列表编辑器增加复制插入功能。 10. \[优化\]游戏网关性能优化。 11. \[新增\]地图预览增加导出小地图图片功能。 12. \[修正\]数据库导入json不管选什么都会导入到物品数据库的问题。注意此版本将摆摊全局仓库(GameLib.SaveItemToStore)以及任务数据从二进制修改为了sqlite数据库这些数据将被丢弃。有玩家数据的请不要更新到此版本.新区可以。 ## 2019年8月16日更新 1. \[新增\]日志查看增加目标NPC字段过滤配置。 2. \[修正\]开发者客户端保存过UI到其他目录会导致地图以及声音无法读取的问题。 3. \[优化\]M2内存占用降低怪物内存占用,(优化前5W怪物占用内存1G,优化后20W怪物占用内存1G) 4. \[修正\]自定义技能使用功能网关会报错的问题。 5. \[修正\]部分地图寻路路径会有问题的bug 6. \[修正\]导入EXCEL数据物品会被清空的问题。 7. \[新增\]物品DropEff属性,属性值为Word,取DropEff.data文件中每10个图片为一组,显示为地面掉落特效从1开始0为无特效。 8. \[修正\]若干内存访问BUG ## 2019年8月3日更新 1. \[修正\]一个一个技能会导致报错的问题。 2. \[优化\]优化合区工具合并自定义物品名称耗时很久的问题(效率提升1000倍以上,原来合并一个小时优化后只需要2秒) 3. \[修正\]脚本图片{F}增加可以支持目录结构如{I=55;F=Interface.Data}可修改为:{I=55;F=$Data/Interface.Data}因为反斜杠被\\识别为换行所以F支持正斜杠/表示路径分割 4. \[修正\]微端当图片切割部分有空图片会导致该部分所有图片不进行下载的问题,以及修正微端当91Resource目录下有和盛大目录下相同文件名导致微端冲突不下载该文件的问题。(需要重新生成登录器以及更新客户端91Client.dat微端资源文件不需要,不需要,不需要重新构建) 5. \[新增\]开放自定义游戏启动LOGO使用方法放一张图片名为91Logo.png放在客户端目录下即可。(建议搭配登录器强制释放资源使用) 6. \[修正\]TActor.SearchViewRange异常的问题。 7. \[优化\]日志服务器SQL插入优化改为批量INSERTINTO降低数据库IO提高性能。 ## 2019年8月1日更新 1. \[修正\]上一版本玩家大退不会大退的问题(修正两次小退触发导致的问题) 2. \[新增\]游戏网关增加连接攻击设置在设定时间内同IP建立连接超过指定次数将被识别为攻击。 ## 2019年7月31日更新 1. \[修正\]上一个版本DBServer报错的问题 2. \[新增\]版本管理器资源编辑器删除图片增加\[空图片微端标记\]模式.旨在提供细化到单张图片的微端资源控制,以便减少微端客户端的体积。使用场景,举例说明在使用微端功能的时候,挑选一部分资源文件打包成一个最小微端客户端,提供给玩家。其中有些图片是可以进行优化到运行中下载的比如:Prguse.data图片中有300张图片,只有序号0-100是希望集成在最小微端客户端中的。序号101-299希望在运行中下载的。这个时候我们使用这个功能将序号101-299的图片用\[空图片微端标记\]删除模式将其删除,即可。通过这个功能,可大幅度的优化最小微端客户端体积。我把一个微端客户端从100M优化为了20M。进行更细化的控制优化到10M以内是没有问题的。注意:这个删除模式不能用于普通图片编辑.就是说你不能用他来编辑资源文件后又用微端资源生成器生成。这个功能是删除图片并且标记这张图片数据在运行期通过微端获取。 3. \[新增\]版本管理器数据库增加导入导出到Excel方便使用Excel对数据库进行编辑后再导入到数据库。 4. \[修正\]离线挂机会触发两次QManager.PlayerReconnection会执行两次的问题。 5. \[新增\]微端资源构建器增加支持iismime.web.config增加对应的mime类型描述信息。 6. \[修正\]远程版本管理不能使用的问题 7. \[修正\]一个导入版本会报错失败的问题。PS.发现严重的脚本BUG,且修复工程量大,暂时不会修正请按下文规避。 >[danger] 1.当脚本中产生异常的时候全局变量String类型会被重置为空值 > 例: > var > GlobalS:String=‘元宝’ > 发生异常时候GlobalS会被修改为空值 > 建议String不需要改变的使用 > const > GlobalS:String=‘元宝’ > 这样不会被改变。 > \[danger\] 2.TObject类型如果被赋值有初值则会被初值 > 例: > var > GlobalList:TStringList=nil; > 然后再其他地方 > GlobalList:=TStringList.Create; > 发生异常GlobalList会被重新赋值为nil > 建议修改为: > \[danger\] var > GlobalList:TStringList; > 然后再其他地方 > GlobalList:=TStringList.Create; > 对于全局String数组请用TStringList进行替代。 ## 2019年7月27日更新 1. \[修正\]OutWay会被识别为未知途径的问题。 2. \[新增\]增加\[GameLib.ReloadScriptEngine可以在脚本中重载脚本引擎 3. \[修正\]一些M2稳定性更新。 ## 2019年7月25日更新 1. \[修正\]勋章不显示刺书箭术武术的问题。 2. \[修正\]OutWay超过255会被阶段为255以下的问题(需要同步更新客户端) 3. \[修正\]脚本刷怪伤害触发不生效的问题 4. \[修正\]TPlayObject.AddItemToStroage会报错的问题。 5. \[修改\]物品产出来源修改为默认不显示划分横线如果要显示那么可以在标题文本中设置为类似的划分:{line}\\产出来源 ## 2019年7月22日更新 1. \[修正\]仓库存取日志不正常的问题,修改为:普通仓库日志为存仓取仓无限仓库为无限仓库存仓无限仓库取仓。 2. \[新增\]装备TIPS增加是否显示产出途径标题配置。 3. \[修正\]套装属性攻击倍数增加属性错误以及魔法倍数和道术倍数无效的问题。 4. \[修正\]套装客户端TIP显示部分属性排版不一致的问题。 5. \[修正\]Npc.GiveItem会报错的问题。 ## 2019年7月20日更新 1. \[修正\]摆摊元宝溢出导致杯被刷的问题。 2. \[新增\]登录日志增加玩家IP 3. \[新增\]控制台增加封机器码功能。 4. \[新增\]脚本中添加元宝以及给与物品增加记录相应的函数和行号方便追溯物品的给与。 5. \[修正\]版本管理器修改地图标志会报错的问题。 6. \[修正\]邮件功能异常的问题。(需要更新客户端) 7. \[修正\]M2修改在线人物货币无效的问题。 ## 2019年7月15日更新 1. \[修正\]M2监视怪物NPC刷新会报异常的问题。 2. \[修正\]修改版本管理器版本加密方式,防止用泄漏的91代码可以绕过加密破解版本的问题。 ## 2019年7月14日更新 1. **\[重要\]因自定义UI中的脚本按钮有安全隐患可以让玩家不经过任何限制执行服务器的脚本函数导致M2崩溃,故将原来脚本按钮中的调用QM脚本函数。修改为调用固定函数,当脚本按钮被点击将不在允许调用任意函数,新的方式会执行QManagerNPC中的OnScriptButton函数中。Flag参数为脚本按钮中设置的的标志字段。** 函数原型: `procedure OnScriptButton(Npc:TNormNpc; Player:TPlayObject; const Flag:String);` 举例说明: ``` procedure OnScriptButton(Npc:TNormNpc; Player:TPlayObject; const Flag:String);  begin   Player.SendMessage('你点击了脚本按钮,按钮标志:'+Flag);  end; ``` 2. \[新增\]增加脚本安全性防止因为异常导致M2崩溃。 ## 2019年7月3日更新 1. \[修正\]日志服务器记录日志错误的问题。(日志重复并且丢失) 2. \[修正\]脚本中使用Exit退出函数会导致异常的问题。 3. \[新增\]开放自动打怪ctrl+z 4. \[修正\]OutWayValue没有被替换格式化为OutWay2对应的值的问题。(UserItem.OutWay\[i\]中对应的字符串包含Value时候将被替换为UserItem.OutWay2\[i\]中的值,此功能可以做一些物品自定义描述,例如附加属性说明等) 5. \[新增\]UserItem.OutWay描述增加支持{Line}控制符例如在物品来源描述表中配置1={Line}\\分割横线测试。当UserItem.OutWay=1时候客户端将会显示一条分割的横线和一行分割横线测试。 6. \[修正\]地图配置中设置自动扣减元宝不管设置多少值始终只扣减1元宝的问题 ## 2019年6月27日更新 1. \[新增\]ManagerNPC增加脚本引擎启动以及销毁触发可用于引擎在启动或者重载时候进行一次性或者需要数据持久化的操作。(应当避免在脚本中使用finalizationinitialization引擎对这类用法的支持有bug) ``` //当脚本引擎启动时 isReload 表示是否重载脚本 procedure OnScriptEngineInit(isReload:Boolean); //当脚本引擎销毁时 isReload 表示是否重载脚本 procedure OnScriptEngineFinal(isReload:Boolean); 例如: procedure OnScriptEngineInit(isReload:Boolean); begin if isReload then begin Debug('OnScriptEngineInit重载'); end else beginDebug('OnScriptEngineInit启动'); end; //从硬盘加载数据 end; procedure OnScriptEngineFinal(isReload:Boolean); begin if isReload then begin Debug('OnScriptEngineFinal重载'); end else begin Debug('OnScriptEngineInit关闭'); end; ``` ## 2019年6月26日更新 1. \[新增\]增加GameLib.MonPlaceEX函数,详情如下: >[info] Function GameLib.MobPlaceEX(const AEnvir:TEnvirnoment; AMissionX,AMissionY:Integer; const AMonName:String; AX,AY:Integer; ACount:Integer=1; ARange:Integer=0; ACamp:Byte=0; ANation:Byte=0; ATag:Integer=0; ARevivalEvent:Boolean=0; ADieEvent:Boolean=0; AKillerEvent:Boolean=0; ADamageEvent:Boolean=0):TActorList; > //在指定的地图上刷怪,AEnvir所在地图对象:TEnvirnoment;并且向AMissionX、AMissionY坐标集中, > //AMissionX刷新后自动前往集中坐标X;AMissionY刷新后自动前往集中坐标Y;AX,AY刷新坐标X,Y;其他参数与Mongen一样 2. \[新增\]增加GameLib.MonGenEX函数,详情如下: >[info] function GameLib.MonGenEX(const AEnvir:TEnvirnoment;const AMonName:String; AMonCount,AMapX,AMapY,ARange:Integer; ACamp:Byte=0; ANation:Byte=0; ATag:Integer=0; ARevivalEvent:Boolean=0; ADieEvent:Boolean=0; AKillerEvent:Boolean=0; ADamageEvent:Boolean=0):TActorList; > //在指定的地图上刷怪。AEnvir所在地图对象:TEnvirnoment;AMonName怪物名称;AMonCount,刷怪数量;AMapX,AMapY,ARange刷怪的坐标X,坐标Y,刷怪范围; > //ACamp阵营ID;ANation国家ID;ATag怪物标记;ARevivalEvent是否刷新触发;ADieEvent是否死亡触发;AKillerEvent是否杀人触发;ADamageEvent是否受到伤害触发; 3. \[新增\]GameLib.MobPlace和GameLib.MonGen增加ADamageEvent是否受到伤害触发 4. \[修正\]一个会导致游戏网关卡死未响应的问题。 ## 2019年6月24日更新 1. \[新增\]UseItem.outway修改为array\[0..15\]ofword,取物品自定义备注对照表中的对应数值文字增加outway2=array\[0..15\]ofinteger;outway2\[0..15\]的值必须在物品自定义备注对照表中添加关键字Value才会显示。举例说明item.outway\[0\]:=100;对照表中此处文字为.100={S=神力附体HP+:Value;c=251};则客户端会自动解析outway2\[0\]的值替换Value这一关键字给客户端显示。如果版本管理器提示OutWay编译错误请将UserItem.OutWay修改为UserItem.OutWay\[0\] 2. \[修正\]绑定绑定物品可以被摊位收购出售的问题。 3. \[修正\]合区GuildList.txt行会列表行会名称会被添加两次的问题。以及行会变量没有被复制到主区的问题。 4. \[修正\]网关会断开客户端连接的问题(需要同步更新客户端内核) ## 2019年6月22日更新 1. \[修正\]游戏流量过大封包无法发送到客户端的问题.(表现为一些版本的可视化仓库无法打开) 2. \[修正\]客户端发送封包可能异常的问题。 3. \[优化\]将游戏网关启动后增加到M2异常守护者列表用于监视游戏网关是否异常(依赖RunGate.map) ## 2019年6月21日更新 1. \[修正\]重写网关后游戏速度调整失效的问题。 2. \[修正\]MonitorDamageEx不能识别自定义技能ID的问题 3. \[修正\]使用瞬回药物血量和蓝量不会立即更新的问题。 ## 2019年6月20日更新 1. \[修正\]登录器释放附加资源有时候会无效的问题。 2. \[修正\]M2一处会导致卡死的问题。 3. \[修正\]上一版本扣减元宝实际扣减的是金币的问题。 4. \[修正\]游戏网关性能优化。 ## 2019年6月19日更新 1. \[修正\]合区工具账号本身达到10位账号冲突会把老区账号多加一位变成11位导致不能登录的问题 2. \[修正\]利用删除人物再恢复恢复的时候是从数据库调取人物数据这样可以导致刷货币的bug 3. \[修正\]M2稳定性增强 4. \[修正\]因为改封包导致登录器无法注册的问题。 5. \[修正\]RunGate的一些小BUG 6. \[重构\]重构货币系统以及日志,加上日志消耗的所有可能的渠道,不再建议直接操作TPlayObject.Gold和GameGold以及GamePoint等货币类型对象直接修改货币值未来这些字段将被移除。 >[info] 货币类型: > GAME\_MONEY\_TYPE\_GOLD=1;//金币 > GAME\_MONEY\_TYPE\_GAMEGOLD=2;//元宝 > GAME\_MONEY\_TYPE\_GAMEPOINT=3;// > 游戏点GAME\_MONEY\_TYPE\_GAME\_GIRD=4;//灵符 > GAME\_MONEY\_TYPE\_DIAMOND=5;//金刚石 > TPlayObject增加货币扣减以及检查函数 > 1.function TPlayObject.GetGameMoney(Type:Byte):Cardinal;//获取对应货币的数量 > 2.procedure TPlayObject.SetGameMoney(Type:Byte;Value:Cardinal;const Log:String);//设置货币的数量。Log为日志描述 > 3.function TPlayObject.CanTakeGameMoney(Type:Byte;Value:Cardinal):Boolean;//是否可以扣减玩家对应数量的货币Value为需要增加货币的数量 > 4.function TPlayObject.CanAddGameMoney(Type:Byte;Value:Cardinal):Boolean;//是否可以给玩家增加货币Value为需要增加的货币数量 > 5.function TPlayObject.AddGameMoney(Type:Byte;Value:Cardinal;const Log:String):Boolean;//给玩家增加对应数量的货币Log为日志描述成功则为返回True失败返回False; > 6.function TPlayObject.TakeGameMoney(Type:Byte;Value:Cardinal;const Log:String):Boolean;//扣除玩家对应数量的货币成功返回True失败返回False; ``` //示例: procedure CanTake(Npc:TNormNpc;Player:TPlayObject;Args:TArgs); begin if Player.CanTakeGameMoney(1,100000000) then Player.SendMessage('可以拿走') else Player.SendMessage('不可以拿走'); end; procedure CanAdd(Npc:TNormNpc;Player:TPlayObject;Args:TArgs); begin if Player.CanAddGameMoney(1,100000000) then Player.SendMessage('可以给') else Player.SendMessage('不可给'); end; procedure Take(Npc:TNormNpc;Player:TPlayObject;Args:TArgs); begin if Player.TakeGameMoney(1,100000000,'流浪汉拿走') then Player.SendMessage('扣除成功') else Player.SendMessage('扣除失败'); end; procedure Add(Npc:TNormNpc;Player:TPlayObject;Args:TArgs); begin if Player.AddGameMoney(1,100000000,'流浪汉给与') then Player.SendMessage('给与成功') else Player.SendMessage('给与失败'); end; ``` ## 2019年6月14日更新 1. \[修正\]TActor.Exp增加可写方便动态修改怪物经验(仅支持非玩家对象TPlayObject.Exp修改了也不会有效果的) 2. \[修正\]ManagerNpc.MonitorDamageEx冰咆哮爆裂火焰火龙气焰技能ID识别错误的问题 3. \[修正\]M2关闭游戏网关不会断开客户端链接的问题。 4. \[新增\]QFunctionNPC新增OnSendHotKey函数,用来做自定义热键触发。 ``` procedure OnSendHotKey(Npc:TNormNpc; Player:TPlayObject; Akey:Byte; KeyCtrl,KeyAlt:Boolean; ATargetActor:TActor;X,Y:Integer); //Akey的值代表按下的按键字符值KeyCtrl,KeyAlt代表Ctrl,Alt按键的状态False为没有按下True为按下。 //ATargetActor代表客户端鼠标指向的TActor,X,Y代表TActor所在位置坐标,如果TActor为nil,则X,Y代表客户端鼠标指向的坐标。 ``` 5. \[新增\]QFunctionNpc新增PlayerAction函数,可以用来脚本封挂。Accept值为True则执行动作,反之则不执行。默认为True,《[示例](http://ml-%7b0b702192-e3c2-4d1b-933f-777aac0138bd%7d/)》。 ``` procedure PlayerAction(Npc:TNormNpc; Player:TPlayObject; Action:Byte; var Accept:Boolean); //Action值代表不同的动作:1攻击2魔法3骑马跑动4跑动5走路6转向7挖肉8点击脚本 ``` ## 2019年6月13日更新 1. \[新增\]支持最新盛趣传奇归来客户端 2. \[变更\]重新编写跨平台游戏网关,修改通讯封包。 3. \[修正\]M2稳定性增强,修正若干可能造成引擎异常的BUG 4. \[修正\]DBServer会异常卡死的问题。 5. \[修正\]刺客武器没有带武器外观特效不能单独生效的问题。 6. \[新增\]增加压力测试模式,使用压力测试工具可测试引擎的承载量和稳定性(压力测试工具未完善暂不发布,压力测试模式将跳过所有的反攻击措施) 7. \[修正\]M2内存增强支持使用到4G的内存。 8. \[修正\]同一个账号可以同时登录的bug ## 2019年5月27日更新 1. \[修正\]几个会导致玩家游戏中掉线的bug 2. \[修正\]客户端毒符持久显示不正确的bug ## 2019年5月26日更新 1. \[修正\]客户端毒符不显示持久的问题 2. \[修正\]技能编辑器无法打开的问题 3. \[修正\]一个会导致玩家挂机掉线的异常 4. \[变更\]网上有人恶意用泄漏的91代码增加了一个提权后门版本号为20180222重新修改登录器加密方式不再支持老版本的91Client.dat ## 2019年5月25日更新 1. \[修正\]M2发送数据到网关会访问非法内存的问题。 2. \[修正\]客户端不会显示持久和重量的问题。 3. \[修正\]改进引擎一些底层函数性能提升10%以上。 ## 2019年5月24日更新 1. \[修正\]重新调整怪物处理方式,尝试修正因刷怪导致的死M2. ## 2019年5月23日更新 1. \[修正\]因为VMP加壳导致的客户端在部分机器上非常卡的问题。 2. \[修正\]控制台正常关闭程序再开启不会注入调试M2的问题。 ## 2019年5月21日更新 1. \[修正\]勾选清理尸体会导致死亡的名字在屏幕上固定位置的问题。 2. \[修正\]检测扣除金币实际检测的是元宝数量的问题。(此问题导致检测错误实际消耗了金币但是没有扣除的可能当元宝数量等于需要扣除的金币数量的时候) 3. \[新增\]控制台增加M2异常守护者功能。可以监测M2所有的线程状态以及异常堆栈依赖M2Server.map文件。 4. \[修正\]所有的服务端程序不再加壳,方便查错(客户端程序依旧加壳)PS:请将VMProtectedSDK32.dll放到C:/Windows/System下因为没有再使用VMP加壳程序依赖这个dll(客户端程序加壳所以发布登录器并不会依赖这个dll)因为源码曾经泄漏过修改了程序中用于上报M2异常信息的邮箱。