>[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异常信息的邮箱。
- 更新日志
- 2021年更新日志
- 2020年更新日志
- 2019年更新日志
- 2017年更新日志
- 2016年更新日志
- 2015年更新日志
- 2014年更新日志
- 2013年更新日志
- 游戏对象
- GameLib
- TActor
- TActorList
- TAddedAbility
- TAddLevelItem
- TAddPointItem
- TArgs
- TAttatckMode
- TDBEngine
- TEnvirnoment
- TFunctionFlag
- TGuild
- TItemState
- TItemWhere
- TMissionItem
- TMissionLinkItem
- TMissions
- TNormNpc
- TPlayMonster
- TPlayMonsterNPC
- TPlayObject
- TStdItem
- TStoreItemList
- TToptenz
- TUserCastle
- TUserItem
- TUserMagic
- TVarValue
- Tbuff
- TBuffCategory
- TBuffAbilityType
- TBuffStatusType
- TBuffIntervalType
- 固定NPC
- AINpc
- ExternalNPC
- MagicNpc
- ManagerNPC
- MapEventNPC
- MissionsNpc
- QFunctionNPC
- RobotManagerNPC
- TimeManagerNPC
- 自定义功能
- 自定义客户端UI
- Buffer效果自定义设计
- UI管理界面预览
- 如何实现物品放入或取下时的函数触发
- 自定义窗口
- 自定义界面中编辑框参数发送方式
- 自定义客户端装备提示效果
- 自定义特效
- 自定义装备提示样式
- Buff系统说明
- 自定义技能编辑器
- 技能扩展自定义
- 自定义技能初识
- 被动技能属性定义
- 技能模式定义
- 客户端效果定义
- 主动技能动作定义
- 新自定义技能编辑器
- 初始编辑器
- 自定义编辑器使用说明
- 如何实现自定义怪物
- 脚本实例
- NPC对话编辑
- 宝宝叛变的启动和停止
- 创建脚本单元
- 创建一个藏匿于地图上的攻击事件
- 地图传送
- 获取服务器名称
- 获取玩家任务信息
- 检测是否为沙城成员
- 角色称号、头顶花翎、头顶特效设置
- 判断PK值
- 判断队伍信息
- 判断角色对面是一个什么对象
- 判断角色金币、元宝及礼金等数量
- 判断角色所在的地图信息
- 判断角色性别
- 判断角色职业
- 判断两个角色之间的距离
- 判断是否为队长
- 判断是否为行会掌门
- 判断是否为沙巴克城主
- 判断有某一物品的数量
- 判断转生等级及等级
- 让目标移动到指定的坐标
- 让玩家回城
- 如何播放一个声音文件
- 如何操作Check状态检查
- 如何操作数据库
- 如何查看玩家IP来源
- 如何查看装备是否可被穿戴或取下
- 如何查找一个行会
- 如何充值角色的属性点
- 如何初始化全局变量
- 如何穿戴或取下一件装备
- 如何创建一个副本地图
- 如何创建一个行会
- 如何打开一个宝箱
- 如何打开指定的URL
- 如何弹出对话框让玩家选择执行
- 如何读写个人变量、行会变量及全局变量
- 如何读写文本文件
- 如何发送各种文字信息
- 如何访问其他角色
- 如何复活
- 如何给客户端发送一个标题栏闪动
- 如何给玩家发放物品
- 如何更新自定义窗口上的内容
- 如何关闭进度条
- 如何关闭一个打开的自定义窗口
- 如何过滤字符串中的文字
- 如何获得地图上全部玩家的信息
- 如何获得地图上指定范围内的怪物数量
- 如何获取丢在地上物品对象
- 如何获取角色当前使用的称号
- 如何获取角色负重
- 如何获取角色在线时长
- 如何获取排行榜信息
- 如何获取人物当前获得的称号信息
- 如何获取坐标上指定范围内的全部怪物
- 如何加入或离开队伍
- 如何加入一个指定的行会
- 如何加载和保存自定义的配置文件(INI文件读写
- 如何监控攻击模式的更改
- 如何监控玩家扔物品
- 如何检查目标是否处于某种状态
- 如何将NPC设置为当前玩家的雕像
- 如何将地图上的角色全部随机传送到另外一个地图上
- 如何将指定玩家传送到身边
- 如何将装备显示在NPC对话框上
- 如何脚本封速
- 如何脚本刷怪
- 如何脚本增加和删除一个NPC
- 如何脚本增加和删除一个怪物NPC
- 如何禁止玩家聊天
- 如何开启及停止自动增加经验值
- 如何克隆玩家为人形怪
- 如何判断当前等级的经验值上限
- 如何判断队伍中是否为不同职业的角色
- 如何判断角色是否为新人
- 如何判断玩家曾经是否接过某任务
- 如何清除地图上的怪物
- 如何请求一个URL
- 如何取得地图上的怪物数量
- 如何取得行会全部称号及全部成员信息
- 如何取得全部在线用户信息
- 如何取得玩当前机器的机器码
- 如何取得物品的数据库单价和销售价格
- 如何取得邮件的数量信息
- 如何取得自定义界面里面玩家放入的物品信息
- 如何让打开客户端的背包、商城及市场
- 如何让他人执行指定的脚本
- 如何删除或修改行会称号
- 如何删除玩家的物品
- 如何删除一个称号
- 如何删除一个副本地图
- 如何删除一个扩展按钮
- 如何删除一个延时调用函数
- 如何设置当前称号
- 如何设置角色死亡不爆出
- 如何实现充值平台对接
- 如何实现骰子
- 如何实现无敌隐身
- 如何实现物品属性转移(物品复制)
- 如何实现一个带参数的输入框
- 如何实现一个机器人
- 如何实现自定义装备爆出提示
- 如何使用JSON对象
- 如何使用角色S、P及N变量
- 如何使用静态数组和动态数组
- 如何使用升级加属性点
- 如何收取城堡金币
- 如何随机刷新物品属性
- 如何踢出在线人物
- 如何添加一个称号
- 如何调整角色的HP、MP值
- 如何调整角色声望值
- 如何调整人物攻击模式
- 如何调整人物转生等级
- 如何调整限时杀怪经验倍率
- 如何调整装备属性上限
- 如何完全控制他人
- 如何显示一个进度条
- 如何修改怪物名称
- 如何修改行会帮主
- 如何修改人物技能属性
- 如何修改一个物品的属性
- 如何延时调用一个函数
- 如何以爆物的方式将一个怪物的爆率给玩家
- 如何用脚本存取物品
- 如何在地图上爆出一个指定的物品
- 如何在行会指定的称号里面添加成员
- 如何在脚本中引用外部DLL
- 如何在客户端显示一个特效
- 如何增加和移除一个个人时钟事件
- 如何增加或减少角色经验值
- 如何增加一个地图连接点
- 如何增加一个行会的称号
- 如何增加一个扩展按钮
- 如何召唤下属
- 如何指定删除角色身上的装备
- 如何重新计算排行榜
- 如何转职
- 如何自动增加或减少元宝
- 如何做一个感叹号提示
- 实现自定义的客户端命令集
- 推开指定的目标
- 修改怪物的爆率为一个指定的爆率文件
- 循环自身全部技能
- 如何设置装备掉落触发脚本处理
- 如何设置装备掉落提示
- 给玩家添加一个未接任务
- 给玩家添加一个已接任务
- 补丁规则
- NPC补丁设置
- Prguse.data文件编辑的注意事项
- 引擎补丁规则
- 地图补丁规则
- 盾牌补丁
- 怪物补丁设置
- 头发补丁设置
- 武器及衣服补丁设置方法
- 坐骑补丁设置
- 操作相关
- 数据库设置
- 版本数据库管理
- 锄头设置方法
- 攻速及幸运设置
- 技能特殊设置
- 扩展数据管理
- 魔法数据设置要点
- 人形怪穿戴及技能设置
- 人形怪攻击速度设置
- 人形怪数据库设置
- 如何配置宝箱及钥匙
- 如何设置解包物品
- 如何设置一个固定位置的传送道具
- 设计采集类怪物
- 设置自定义物品种类名称
- 数据库报错问题
- 特殊物品属性设置说明
- 添加宝石物品
- 添加可穿戴宝石、气血石及魔血石物品
- 物品数据库设置说明
- 游戏数据库的导入导出
- 服务端操作
- [M2]开启物品属性下限功能
- 摆摊相关
- 备份与恢复
- 防外挂设置
- 服务端部署
- 合区
- 角色成长属性调整
- 配置排行榜系统
- 如何查看M2Server所在机器的机器码
- 如何实现多机负载
- 网关防攻击配置
- 游戏网关性能设置
- 任务系统
- 脚本混编说明
- Call命令说明
- 参数Args的读取
- 存在的意义
- 让他人执行脚本
- 如何定义常量
- 如何读写变量
- 如何实现混编
- 特殊标志段说明
- 特殊的CHECK和SET
- 调整杀怪倍率
- 支持编译时错误提示
- 地图配置
- 地图NPC配置
- 地图安全区编辑
- 地图创建及属性说明
- 地图杀怪任务触发
- 地图事件编辑
- 地图刷怪配置
- 地图挖矿设置
- 附属地图配置
- 关联到盛大新格式地图
- 检查地图文件使用情况
- 卫士配置
- 登陆器操作
- 登陆器自我更新
- 登录器界面组件介绍
- 登录器设计界面初识
- 管理登陆器列表
- 将登陆器列表部署到服务器
- 客户端控制
- 客户端样式选择
- 列表设计界面初识
- 如何创建登陆器皮肤
- 如何生成登陆器文件
- 玩家登陆器选项
- 微端控制
- 版本管理器
- NPC对话内容编辑
- 版本文件二次注册使用方法
- 查看程序是否更新
- 创建新的版本文件
- 单个脚本加密方法
- 额外数据库信息配置
- 给版本设置一个唯一ID
- 怪物爆率配置
- 将版本运行所需的配置文件植入版本文件中
- 角色登陆提示信息
- 脚本分类说明
- 脚本机器人配置
- 配置宝箱
- 配置怪物说话
- 如何开启技能自动追踪目标的功能
- 如何实现登陆器图标及客户端Logo的替换
- 如何下载最新版本
- 商城(元宝、礼金)管理
- 商贩贩卖物品配置
- 设置版本工具环境变量
- 套装配置
- 添加一个盾牌物品
- 系统提示信息配置
- 一键导入其他引擎的版本
- 远程管理
- 资源数据管理
- 如何添加一个任务模板中的任务
- 其他辅助说明
- [重要]脚本编写注意项
- 256颜色值
- IP库
- Mir200_Envir下的列表文件详解
- 各种时间控制方法
- 怪物DB数据
- 怪物Race设置
- 键盘码对应数值表
- 脚本系统与系统安全说明
- Pascal基础说明
- Pascal变量类型
- Pascal数据类型
- 基础函数及单元
- 客户端标签变量
- 疑问/建议/反馈/留言
- 在线教程
- 引擎下载