文章编辑:雪舞
本内容需配套引擎动态库:https://waylee.net/thread-3513-1-1.html
适合版本:X64位客户端 + X64位服务端 武道三版本
脚本下载地址(1金币):
回调脚本文件下载.zip
(3.86 KB, 下载次数: 0)
如果不想下载附件,直接复制下面内容粘贴到你的版本里也可以!
ScriptGlobal.lua 添加内容
--MDEX属性引擎读取位
SYS_MAX_HP = 200 --血上限
SYS_MAX_MP = 201 --气上限
SYS_STR = 202 --力量
SYS_SPR = 203 --灵气
SYS_CON = 204 --体力
SYS_INT = 205 --定力
SYS_DEX = 206 --身法
SYS_WG = 207 --外功攻击
SYS_WF = 208 --外功防御
SYS_NG = 209 --内功攻击
SYS_NF = 210 --内功防御
SYS_MISS = 211 --MISS
SYS_HIT = 212 --HIT
SYS_HUIXINGONG = 213 --会心攻击
SYS_HUIXINFANG = 214 --会心防御
SYS_ICE_ATTR = 215 --冰攻
SYS_FIRE_ATTR = 216 --火攻
SYS_LIGHT_ATTR = 217 --玄攻
SYS_POSION_ATTR = 218 --毒攻
SYS_ICE_DEC = 219 --冰抗
SYS_FIRE_DEC = 220 --火抗
SYS_LIGHT_DEC = 221 --玄抗
SYS_POSION_DEC = 222 --毒抗
SYS_ICE_SUB_DEC = 223 --减冰抗
SYS_FIRE_SUB_DEC = 224 --减火抗
SYS_LIGHT_SUB_DEC = 225 --减玄抗
SYS_POSION_SUB_DEC = 226 --减毒抗
SYS_ICE_SUB_LIMIT = 227 --减冰抗下限
SYS_FIRE_SUB_LIMIT = 228 --减火抗下限
SYS_LIGHT_SUB_LIMIT = 229 --减玄抗下限
SYS_POSION_SUB_LIMIT = 230 --减毒抗下限
SYS_MAX_HP_PERSENT = 231 --血上限增加百分比
Script.dat 脚本注册:
注意,下面代码任何字都要复制,包括 @WAYLEE 这一行代码
;穿戴完成\脱下完成
888892=\event\system\Callback_HumanEquip.lua
;属性结算脚本
866010=\event\system\EquipAttrComputeNew.lua
;@WAYLEE脚本加载结束@WAYLEE
结算脚本:
/home/tlbb1/Public/Data/Script/event/system/EquipAttrComputeNew.lua
--===================================================
-- 人物装备属性计算 EQUIP_COMPUTE
-- @雪舞制作 2025-12-20 V1.2
--===================================================
--**********************************
--刷新人物属性函数
--**********************************
function x866010_StartComputeHumanData(sceneId,selfId,Update)
if sceneId < 0 or selfId < 14999 or selfId > 29999 then
return
end
if LuaFnIsObjValid(sceneId,selfId) ~= 1 or LuaFnIsCanDoScriptLogic(sceneId,selfId) ~= 1 then
return
end
local nLevel = GetLevel(sceneId,selfId)
--**********************************
--基础属性
--**********************************
local STR,SPR,CON,INT,DEX,HP,MP,HP_PERSENT = 0,0,0,0,0,0,0,0
--百分比血上限
HP_PERSENT = 0
--血量:
HP = 0
--蓝量:
MP = 0
--力量:
STR = 0
--灵气:
SPR = 0
--体力:
CON = 0
--定力:
INT = 0
--身法:
DEX = 0
--**********************************
--二级属性
--**********************************
local AttackPhysics,AttackMagic,DefencePhysics,DefenceMagic,Hit,Miss,CriticalAttack,CriticalDefence = 0,0,0,0,0,0,0,0
--外功攻击:
AttackPhysics = 0
--内功攻击:
AttackMagic = 0
--外功防御:
DefencePhysics = 0
--内功防御:
DefenceMagic = 0
--命中:
Hit = 0
--闪避:
Miss = 0
--会心攻击:
CriticalAttack = 0
--会心防御:
CriticalDefence = 0
--**********************************
--冰火玄毒属性:属性攻击
--**********************************
local IceAttack,FireAttack,LightAttack,PosionAttack = 0,0,0,0
IceAttack = 0
FireAttack = 0
LightAttack = 0
PosionAttack = 0
--**********************************
--冰火玄毒属性:属性抗
--**********************************
local IceDefence,FireDefence,LightDefence,PosionDefence = 0,0,0,0
IceDefence = 0
FireDefence = 0
LightDefence = 0
PosionDefence = 0
--**********************************
--属性减抗
--**********************************
local IceSubDefence,FireSubDefence,LightSubDefence,PosionSubDefence = 0,0,0,0
IceSubDefence = 0
FireSubDefence = 0
LightSubDefence = 0
PosionSubDefence = 0
--**********************************
--属性减抗下限
--**********************************
local IceSubDefenceLimit,FireSubDefenceLimit,LightSubDefenceLimit,PosionSubDefenceLimit = 0,0,0,0
IceSubDefenceLimit = 0
FireSubDefenceLimit = 0
LightSubDefenceLimit = 0
PosionSubDefenceLimit = 0
--**********************************
--引擎计算部分
--**********************************
--百分比增加血上限
SetMissionDataEx(sceneId,selfId,SYS_MAX_HP_PERSENT,HP_PERSENT)
--血上限
SetMissionDataEx(sceneId,selfId,SYS_MAX_HP,HP)
--气上限
SetMissionDataEx(sceneId,selfId,SYS_MAX_MP,MP)
--一级属性
SetMissionDataEx(sceneId,selfId,SYS_STR,STR)
SetMissionDataEx(sceneId,selfId,SYS_SPR,SPR)
SetMissionDataEx(sceneId,selfId,SYS_CON,CON)
SetMissionDataEx(sceneId,selfId,SYS_INT,INT)
SetMissionDataEx(sceneId,selfId,SYS_DEX,DEX)
--二级属性
SetMissionDataEx(sceneId,selfId,SYS_WG,AttackPhysics)
SetMissionDataEx(sceneId,selfId,SYS_WF,DefencePhysics)
SetMissionDataEx(sceneId,selfId,SYS_NG,AttackMagic)
SetMissionDataEx(sceneId,selfId,SYS_NF,DefenceMagic)
SetMissionDataEx(sceneId,selfId,SYS_MISS,Miss)
SetMissionDataEx(sceneId,selfId,SYS_HIT,Hit)
SetMissionDataEx(sceneId,selfId,SYS_HUIXINGONG,CriticalAttack)
SetMissionDataEx(sceneId,selfId,SYS_HUIXINFANG,CriticalDefence)
--属性攻击
SetMissionDataEx(sceneId,selfId,SYS_ICE_ATTR,IceAttack)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_ATTR,FireAttack)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_ATTR,LightAttack)
SetMissionDataEx(sceneId,selfId,SYS_POSION_ATTR,PosionAttack)
--属性减免 抗性
SetMissionDataEx(sceneId,selfId,SYS_ICE_DEC,IceDefence)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_DEC,FireDefence)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_DEC,LightDefence)
SetMissionDataEx(sceneId,selfId,SYS_POSION_DEC,PosionDefence)
--减抗
SetMissionDataEx(sceneId,selfId,SYS_ICE_SUB_DEC,IceSubDefence)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_SUB_DEC,FireSubDefence)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_SUB_DEC,LightSubDefence)
SetMissionDataEx(sceneId,selfId,SYS_POSION_SUB_DEC,PosionSubDefence)
--减抗下限
SetMissionDataEx(sceneId,selfId,SYS_ICE_SUB_LIMIT,IceSubDefenceLimit)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_SUB_LIMIT,FireSubDefenceLimit)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_SUB_LIMIT,LightSubDefenceLimit)
SetMissionDataEx(sceneId,selfId,SYS_POSION_SUB_LIMIT,PosionSubDefenceLimit)
--GM超级属性
-- if GetMissionFlag(sceneId,selfId,MF_GM_ATTRMAX) == 1 then
-- x866010_GM_ATTRMAX(sceneId,selfId)
-- end
--刷新引擎人物结算属性
if Update ~= nil then
LuaFnRefreshEngine( sceneId, selfId )
end
--刷新角色评分
-- x866010_LuaFnGetEquipGride(sceneId,selfId)
end
--**********************************
--GM超级属性
--**********************************
function x866010_GM_ATTRMAX(sceneId,selfId)
SetMissionData(sceneId,selfId,SYS_MAX_HP,55800000)
SetMissionData(sceneId,selfId,SYS_MAX_MP,5000000)
--一级属性
SetMissionDataEx(sceneId,selfId,SYS_STR,19500)
SetMissionDataEx(sceneId,selfId,SYS_SPR,19500)
SetMissionDataEx(sceneId,selfId,SYS_CON,19500)
SetMissionDataEx(sceneId,selfId,SYS_INT,19500)
SetMissionDataEx(sceneId,selfId,SYS_DEX,19500)
--属性攻击
SetMissionDataEx(sceneId,selfId,SYS_ICE_ATTR,198808)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_ATTR,198808)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_ATTR,198808)
SetMissionDataEx(sceneId,selfId,SYS_POSION_ATTR,198088)
--属性减免
SetMissionDataEx(sceneId,selfId,SYS_ICE_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_POSION_DEC,1024)
--减抗
SetMissionDataEx(sceneId,selfId,SYS_ICE_SUB_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_SUB_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_SUB_DEC,1024)
SetMissionDataEx(sceneId,selfId,SYS_POSION_SUB_DEC,1024)
--减抗下限
SetMissionDataEx(sceneId,selfId,SYS_ICE_SUB_LIMIT,100)
SetMissionDataEx(sceneId,selfId,SYS_FIRE_SUB_LIMIT,100)
SetMissionDataEx(sceneId,selfId,SYS_LIGHT_SUB_LIMIT,100)
SetMissionDataEx(sceneId,selfId,SYS_POSION_SUB_LIMIT,100)
end
--**********************************
-- 屏幕中间提示
--**********************************
function x866010_Tips(sceneId,selfId,msg)
BeginEvent(sceneId)
AddText(sceneId,msg);
EndEvent(sceneId)
DispatchMissionTips(sceneId,selfId)
end
穿戴回调脚本:
/home/tlbb1/Public/Data/Script/event/system/Callback_HumanEquip.lua
--装备变动回调
x888892_g_scriptId = 888892
--**********************************
--装备完成穿戴前回调 0放行,其他值拦截
--**********************************
function x888892_OnUesEquipCallback(sceneId,selfId,nEquipPointn,BagPos)
-- x888892_Tips(sceneId,selfId,"完成穿戴前拦截")
return 0;
end
--**********************************
--装备完成穿戴后回调
--**********************************
function x888892_OnEquipUseFinishCallback(sceneId,selfId,nEquipPointn,BagPos)
x888892_Tips(sceneId,selfId,"装备完成穿戴后回调")
CallScriptFunction(866010, "StartComputeHumanData", sceneId,selfId);
end
--**********************************
--装备卸下 0放行,其他值拦截
--**********************************
function x888892_UnEquipCallback(sceneId,selfId,nEquipPoint,nBagPos)
return 0;
end
--**********************************
-- 装备完成摘除后回调
-- nEquipPoint:发生脱下的装备点
-- nBagPos:装备回到的背包位置
--**********************************
function x888892_OnEquipUnFinishCallback(sceneId,selfId,nEquipPoint,nBagPos)
x888892_Tips(sceneId,selfId,"装备完成摘除后回调")
CallScriptFunction(866010, "StartComputeHumanData", sceneId,selfId);
end
--**********************************
-- 屏幕中间提示
--**********************************
function x888892_Tips(sceneId,selfId,msg)
BeginEvent(sceneId)
AddText(sceneId,msg);
EndEvent(sceneId)
DispatchMissionTips(sceneId,selfId)
end