热点推荐

小喇叭+ 发布

01-16 02:17
01-16 02:04
01-13 17:30
查看: 3375|回复: 1

BLUE引擎2020年11月29日更新

[复制链接]
avatar

签到天数: 350 天

[LV.8]以坛为家I

7651

主题

255

回帖

31万

积分

司徒主管

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
1
司徒币
260203
传世币
3000
元宝
0
在线时间
266 小时

最佳新人灌水之王

QQ
online_admin 发表于 2021-1-26 21:15:26 | 显示全部楼层 |阅读模式
免费正式版M2引擎下载
2020年11月29日
      BLUE引擎2020年11月29日更新57 / 作者:admin / 帖子ID:3360 新建文本文档.txt (168 Bytes, 下载次数: 4)




!微信验证码功能因使用外部文本,当文本达到一定体积(1M以上),会严重影响服务器性能,建议优化思路或者使用两步验证功能替换

2021/1/23        !全套程序配套使用
---------------------------------------------------------------------------
M2  技能ID=72,是否允许飞到物品上开关DoFlyOnItem=0,默认0关闭,1开启
   修正1229更新造成SetAbility的GM隐身不恢复问题
   修正MonGen.txt集中点刷法,在新的刷怪模式下失效问题
   去掉五行阵法功能!
   远程脚本插件安全更新:
   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) 远程脚本服务器、远程脚本插件需要配套更新!



2020/12/31        !全套程序配套使用
---------------------------------------------------------------------------
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 标识 M 源标识 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)不等

帖子地址: 





上一篇:GEE引擎版本号(20201201)更新
下一篇:HGE引擎20200814正式版
回复

使用道具 举报

avatar

签到天数: 1 天

[LV.1]初来乍到

0

主题

57

回帖

131

积分

司徒二星

UID
1491
司徒币
74
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2022-4-2 10:02:41 | 显示全部楼层
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【乱回复灌水将给予禁言处理】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则