Changelog
2019-10-22
2019-10-22 BLUE引擎更新,涉及 各模块 等模块,共 304 项功能调整与问题修复。
更新内容
- 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即使没有掉落也扣除,默认关闭
- 检测符: ?表示>=,^和`用于字符串检查
- 扣除: 和爆率没有关系,只关联检查条件,设置数值为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
- $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 // 开启或关闭主界面功能按钮功能,默认关闭
