测试版本更新至12月2日的内部测试版
内部测试版:
1. 新增:道具模板表增加“套装通用装备”选项。该字段设置为“是”后,穿上该装备会为任意套装的套装件数加1。
如果有多个同类型的装备,根据套装表中的“计算套装件数类型”的选项值来计算套装件数。
例如:有两个戒指配置均为套装通用装备,若按装备的类型计算套装件数,则对应套装的套装件数加1;若按装备的数量计算套装件数,则对应套装的套装件数加2。
该选项访问路径为:神途游戏管理平台→游戏配置→装备&道具→修改道具模板表→其他配置区域。
2. 改善:以下角色属性类型通知到客户端,可调用客户端接口CL:GetPlayerSelfProperty32来获取属性值。
3. 新增:全局表增加“使用新的角色受伤害前触发”选项。
同时,增加触发类型lua_trigger_role_pre_harm_ex和回调函数on_pre_harm_ex。
新的触发类型和回调函数可以传递损失的蓝量的数值,并支持修改损失的蓝量的值。
该字段设置为开启时,角色受伤害前触发会调用注册lua_trigger_role_pre_harm_ex对应的回调函数;该字段设置为关闭时,则调用注册lua_trigger_role_pre_harm对应的回调函数。
该选项访问路径为:神途游戏管理平台→游戏配置→全局表→修改全局模板表→其他设置→杂项区域。
/**
* @b 被攻击者受到伤害即将损血/蓝前回调.
* 当被攻击者受到伤害即将损血/蓝前,回调此接口.
* @param strRole 被攻击者的GUID,比如玩家、怪物、英雄.
* @param strAttacker 攻击者的GUID,比如玩家、怪物、英雄.
* @param iHp 被攻击者即将损失的血量,正数表示补血,负数表示损血.
* @param iMp 被攻击者即将损失的蓝量,正数表示补蓝,负数表示损蓝.
* @param iDefense 本次攻击被攻击者发挥出的防御值,该值必定是正数.
* @param strKillKey 本次攻击所使用的技能KeyName.
* @param IsBurst 本次攻击是否为暴击: 1代表是 ;0代表否.
* @return 返回一个包含两个整数的table,该table第一个元素表示血量,第二个元素表示蓝量。如果返回负数则损血/蓝,返回正数则补血/蓝.数值对应损/补的血/蓝量.
* @remarks 无.
* @verbatim
* 示例代码:
*lualib:AddTrigger("0", lua_trigger_role_pre_harm_ex , "on_pre_harm_ex")
*function on_pre_harm_ex(role, attacker, hp, mp, def, skill, is_burst)
* return { hp - 1, mp - 1 }
*end
* @endverbatim
* @warning 注意返回正负数的区别.如果系统、地图、角色分别都使用了这类触发器,生效顺序为系统、地图、角色.
* @note@verbinclude on_pre_harm_ex.lua
* @version 0.926及以上版本.
* @see CScriptLib::eTriggerType
*/
lua_script::lua_table on_pre_harm_ex(const std::string& strRole, const std::string& strAttacker, int iHp, int iMp, int iDefense,const std::string& strKillKey, UINT8 IsBurst);
4. 新增以下接口函数。
根据套装的计算类型获取角色身上指定套装中装备数量
/**
* @b 根据套装的计算类型,获得角色身上指定套装中装备数量
* 根据套装的计算类型,获得角色身上指定套装中装备数量
* @param player_guid 角色guid.
* @param equip_guid 装备的guid.
* @param item_id 物品id.
* @param suit_id 套装id.
* @return 角色身上指定套装中的装备数量
* @remarks equip_guid、item_id和suit_id三个参数填写任意一个即可
* @warning 无.
* @note@verbinclude GetEquipSuitCountEx.lua
* @version 0.926及以上版本.
*/
UINT8 GetEquipSuitCountEx(const std::string& player_guid, const std::string& equip_guid, UINT16 item_id, UINT16 suit_id);
配置需要通知到客户端的玩家属性
/**
* @b 配置需要通知到客户端的玩家属性
* 配置需要通知到客户端的玩家属性
* @param attrs 属性table 如:{1,2,3,4}.
* @return 无.
* @remarks 无.
* @warning 玩家不存在的属性或者引擎已经配置过的属性无法配置.
* @note@verbinclude SetSelfNotifyAttrs.lua
* @version 0.926及以上版本.
*/
void SetSelfNotifyAttrs(const lua_script::lua_table& attrs);
移除通知到客户端的玩家属性
/**
* @b 移除通知到客户端的玩家属性
* 移除通知到客户端的玩家属性
* @param attrs 属性table 如:{1,2,3,4}.
* @return 无.
* @remarks 无.
* @warning 玩家不存在的属性或者引擎已经配置过的属性无法移除.
* @note@verbinclude RemoveSelfNotifyAttrs.lua
* @version 0.926及以上版本.
*/
void RemoveSelfNotifyAttrs(const lua_script::lua_table& attrs);
5. 新增以下回调函数。
/**
* @b 玩家被打断读条前触发
* 玩家被打断读条前触发.非系统级回调,需要手动添加触发器.
* @param role_guid 玩家guid
* @param type 打断的类型: 0为移动打断读条;1为离开地图打断读条;2为受到攻击被打断;3为释放技能打断
* @param detail 打断详情:打断类型为1时,detail为地图keyname;打断类型为2时,detail为攻击者guid;打断类型为3时,detail为技能keyname
* @return 是否打断
* @remarks 无.
* @warning 无.
* @note@verbinclude pre_cancel_processing.lua
* @version 0.926及以上版本.
* @see CScriptLib::eTriggerType
*/
static bool pre_cancel_processing(const std::string& role_guid, UINT8 type, const std::string& detail);