新增扩展装备项目及全局信息类描述,更新Hacker_RegApi.nut以支持装备穿戴回调
This commit is contained in:
364
Base/CallBack/RegistPushString.nut
Normal file
364
Base/CallBack/RegistPushString.nut
Normal file
@@ -0,0 +1,364 @@
|
||||
/*
|
||||
文件名:RegistPushString.nut
|
||||
路径:Base/CallBack/RegistPushString.nut
|
||||
创建日期:2025-12-27 03:32
|
||||
文件用途:注册推送字符串
|
||||
*/
|
||||
|
||||
_o_procAppend_All_Map_ <- {}
|
||||
function _o_procAppend_All_(obj) {
|
||||
foreach (Func in _o_procAppend_All_Map_) {
|
||||
Func(obj);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onBeforeAttack_All_Map_ <- {}
|
||||
function _o_onBeforeAttack_All_(obj, damager, boundingBox, isStuck) {
|
||||
foreach (Func in _o_onBeforeAttack_All_Map_) {
|
||||
Func(obj, damager, boundingBox, isStuck);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onAfterAttack_All_Map_ <- {}
|
||||
function _o_onAfterAttack_All_(obj, damager, boundingBox, isStuck) {
|
||||
foreach (Func in _o_onAfterAttack_All_Map_) {
|
||||
Func(obj, damager, boundingBox, isStuck);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onAttackParent_appendage_plugins_Map_ <- {}
|
||||
function _o_onAttackParent_appendage_plugins(appendage, realAttacker, damager, boundingBox, isStuck) {
|
||||
foreach (Func in _o_onAttackParent_appendage_plugins_Map_) {
|
||||
Func(appendage, realAttacker, damager, boundingBox, isStuck);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onBeforeDamage_All_Map_ <- {}
|
||||
function _o_onBeforeDamage_All_(obj) {
|
||||
foreach (Func in _o_onBeforeDamage_All_Map_) {
|
||||
Func(obj);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onDamageParent_appendage_plugins_Map_ <- {}
|
||||
function _o_onDamageParent_appendage_plugins(appendage, attacker, boundingBox, isStuck) {
|
||||
foreach (Func in _o_onDamageParent_appendage_plugins_Map_) {
|
||||
Func(appendage, attacker, boundingBox, isStuck);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onSetHp_appendage_plugins_Map_ <- {}
|
||||
function _o_onSetHp_appendage_plugins(appendage, hp, attacker) {
|
||||
foreach (Func in _o_onSetHp_appendage_plugins_Map_) {
|
||||
Func(appendage, hp, attacker);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
_o_sendSetMpPacket_All_Map_ <- {}
|
||||
function _o_sendSetMpPacket_All_(obj, mp, sendInstant) {
|
||||
foreach (Func in _o_sendSetMpPacket_All_Map_) {
|
||||
Func(obj, mp, sendInstant);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onApplyHpDamage_appendage_plugins_Map_ <- {}
|
||||
function _o_onApplyHpDamage_appendage_plugins(appendage, newHpDamage, attacker) {
|
||||
foreach (Func in _o_onApplyHpDamage_appendage_plugins_Map_) {
|
||||
Func(appendage, newHpDamage, attacker);
|
||||
}
|
||||
return newHpDamage;
|
||||
}
|
||||
|
||||
_o_getImmuneTypeDamageRate_appendage_plugins_Map_ <- {}
|
||||
function _o_getImmuneTypeDamageRate_appendage_plugins(appendage, damageRate, attacker) {
|
||||
foreach (Func in _o_getImmuneTypeDamageRate_appendage_plugins_Map_) {
|
||||
Func(appendage, damageRate, attacker);
|
||||
}
|
||||
return damageRate;
|
||||
}
|
||||
|
||||
_o_onDestroyObject_appendage_plugins_Map_ <- {}
|
||||
function _o_onDestroyObject_appendage_plugins(appendage, destroyObj) {
|
||||
foreach (Func in _o_onDestroyObject_appendage_plugins_Map_) {
|
||||
Func(appendage, destroyObj);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
_o_onStartDungeon_All_Map_ <- {}
|
||||
function _o_onStartDungeon_All_(obj) {
|
||||
foreach (Func in _o_onStartDungeon_All_Map_) {
|
||||
Func(obj);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onStartMap_All_Map_ <- {}
|
||||
function _o_onStartMap_All_(obj) {
|
||||
foreach (Func in _o_onStartMap_All_Map_) {
|
||||
Func(obj);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onEndMap_All_Map_ <- {}
|
||||
function _o_onEndMap_All_(obj) {
|
||||
foreach (Func in _o_onEndMap_All_Map_) {
|
||||
Func(obj);
|
||||
}
|
||||
}
|
||||
|
||||
_o_onChangeSkillEffect_All_Map_ <- {}
|
||||
function _o_onChangeSkillEffect_All_(obj, skillIndex, reciveData) {
|
||||
foreach (Func in _o_onChangeSkillEffect_All_Map_) {
|
||||
Func(obj, skillIndex, reciveData);
|
||||
}
|
||||
}
|
||||
|
||||
_o_useSkill_before_All_Map_ <- {}
|
||||
function _o_useSkill_before_All_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate)
|
||||
{
|
||||
foreach (Func in _o_useSkill_before_All_Map_) {
|
||||
Func(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);
|
||||
}
|
||||
}
|
||||
|
||||
_o_useSkill_after_All_Map_ <- {}
|
||||
function _o_useSkill_after_All_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate)
|
||||
{
|
||||
foreach (Func in _o_useSkill_after_All_Map_) {
|
||||
Func(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);
|
||||
}
|
||||
}
|
||||
|
||||
_o_setState_All_Map_ <- {}
|
||||
function _o_setState_All_(obj, state, datas, isResetTimer)
|
||||
{
|
||||
foreach (Func in _o_setState_All_Map_) {
|
||||
Func(obj, state, datas, isResetTimer);
|
||||
}
|
||||
}
|
||||
|
||||
//注册 procAppend 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_procAppend_%s_(obj) {" +
|
||||
"\n _o_procAppend_All_(obj);" +
|
||||
"\n try {" +
|
||||
"\n return procAppend_%s(obj);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n return 1;" +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("procAppend_" + jobname, "_o_procAppend_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onBeforeAttack 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onBeforeAttack_%s_(obj, damager, boundingBox, isStuck) {" +
|
||||
"\n _o_onBeforeAttack_All_(obj, damager, boundingBox, isStuck);" +
|
||||
"\n try {" +
|
||||
"\n onBeforeAttack_%s(obj, damager, boundingBox, isStuck);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onBeforeAttack_" + jobname, "_o_onBeforeAttack_" + jobname + "_");
|
||||
}
|
||||
|
||||
|
||||
//注册 onAttackParent 函数
|
||||
L_sq_RegistSqrPushStringMap("onAttackParent_appendage_plugins", "_o_onAttackParent_appendage_plugins");
|
||||
|
||||
|
||||
|
||||
//注册 onAfterAttack 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onAfterAttack_%s_(obj, damager, boundingBox, isStuck) {" +
|
||||
"\n _o_onAfterAttack_All_(obj, damager, boundingBox, isStuck);" +
|
||||
"\n try {" +
|
||||
"\n onAfterAttack_%s(obj, damager, boundingBox, isStuck);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onAfterAttack_" + jobname, "_o_onAfterAttack_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onBeforeDamage 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onBeforeDamage_%s_(obj) {" +
|
||||
"\n _o_onBeforeDamage_All_(obj);" +
|
||||
"\n try {" +
|
||||
"\n onBeforeDamage_%s(obj);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onBeforeDamage_" + jobname, "_o_onBeforeDamage_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onDamageParent 函数
|
||||
L_sq_RegistSqrPushStringMap("onDamageParent_appendage_plugins", "_o_onDamageParent_appendage_plugins");
|
||||
|
||||
//注册 onSetHp 函数
|
||||
L_sq_RegistSqrPushStringMap("onSetHp_appendage_plugins", "_o_onSetHp_appendage_plugins");
|
||||
|
||||
//注册 sendSetMpPacket 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_sendSetMpPacket_%s_(obj, mp, sendInstant) {" +
|
||||
"\n _o_sendSetMpPacket_All_(obj, mp, sendInstant);" +
|
||||
"\n try {" +
|
||||
"\n return sendSetMpPacket_%s(obj, mp, sendInstant);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("sendSetMpPacket_" + jobname, "_o_sendSetMpPacket_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onApplyHpDamage 函数
|
||||
L_sq_RegistSqrPushStringMap("onApplyHpDamage_appendage_plugins", "_o_onApplyHpDamage_appendage_plugins");
|
||||
|
||||
//注册 onApplyHpDamage 函数
|
||||
L_sq_RegistSqrPushStringMap("getImmuneTypeDamageRate_appendage_plugins", "_o_getImmuneTypeDamageRate_appendage_plugins");
|
||||
|
||||
//注册 onApplyHpDamage 函数
|
||||
L_sq_RegistSqrPushStringMap("onDestroyObject_appendage_plugins", "_o_onDestroyObject_appendage_plugins");
|
||||
|
||||
|
||||
//注册 onStartDungeon 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onStartDungeon_%s_(obj) {" +
|
||||
"\n _o_onStartDungeon_All_(obj);" +
|
||||
"\n try {" +
|
||||
"\n return onStartDungeon_%s(obj);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onStartDungeon_" + jobname, "_o_onStartDungeon_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onStartMap 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onStartMap_%s_(obj) {" +
|
||||
"\n _o_onStartMap_All_(obj);" +
|
||||
"\n try {" +
|
||||
"\n onStartMap_%s(obj);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onStartMap_" + jobname, "_o_onStartMap_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onEndMap 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onEndMap_%s_(obj) {" +
|
||||
"\n _o_onEndMap_All_(obj);" +
|
||||
"\n try {" +
|
||||
"\n onEndMap_%s(obj);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onEndMap_" + jobname, "_o_onEndMap_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 onChangeSkillEffect 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_onChangeSkillEffect_%s_(obj, skillIndex, reciveData) {" +
|
||||
"\n _o_onChangeSkillEffect_All_(obj, skillIndex, reciveData);" +
|
||||
"\n try {" +
|
||||
"\n onChangeSkillEffect_%s(obj, skillIndex, reciveData);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("onChangeSkillEffect_" + jobname, "_o_onChangeSkillEffect_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 useSkill_before 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_useSkill_before_%s_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate) {" +
|
||||
"\n _o_useSkill_before_All_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);" +
|
||||
"\n try {" +
|
||||
"\n return useSkill_before_%s(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n return true;" +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("useSkill_before_" + jobname, "_o_useSkill_before_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 useSkill_after 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_useSkill_after_%s_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate) {" +
|
||||
"\n _o_useSkill_after_All_(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);" +
|
||||
"\n try {" +
|
||||
"\n return useSkill_after_%s(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n return true;" +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("useSkill_after_" + jobname, "_o_useSkill_after_" + jobname + "_");
|
||||
}
|
||||
|
||||
//注册 setState 函数
|
||||
foreach(jobname in getroottable()._Global_Info_.JobName) {
|
||||
local funcStr = "function _o_setState_%s_(obj, state, datas, isResetTimer) {" +
|
||||
"\n _o_setState_All_(obj, state, datas, isResetTimer);" +
|
||||
"\n try {" +
|
||||
"\n setState_%s(obj, state, datas, isResetTimer);" +
|
||||
"\n } catch (exception) {" +
|
||||
"\n " +
|
||||
"\n }" +
|
||||
"\n}";
|
||||
funcStr = format(funcStr, jobname, jobname);
|
||||
local func = compilestring(funcStr, jobname + "GenerateScript");
|
||||
func();
|
||||
L_sq_RegistSqrPushStringMap("setState_" + jobname, "_o_setState_" + jobname + "_");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -368,4 +368,43 @@ Rindro_Haker.LoadHook(0x67C560, ["pointer", "int", "int", "int", "int", "void"],
|
||||
// // print(format("%02x", args.pop()));
|
||||
// // TTTAni <- args.pop();
|
||||
// return null;
|
||||
// });
|
||||
// });
|
||||
|
||||
|
||||
//右边窗口公告
|
||||
|
||||
/*
|
||||
|
||||
StrIII <- Memory.allocUtf8String("sadasda");
|
||||
L_Sq_CallFunc(0x9536C0, "void", FFI_FASTCALL, ["int", "int", "pointer", "int", "int", "int", "int", "int"], NativePointer(NativePointer(0x1A5FB20).readInt()).add(0x40).readInt(), 0, StrIII.C_Object, 0xFF9BC8E6, 16, 0, 0, 0);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
//穿戴或脱下装备
|
||||
getroottable().WearOrRemoveEquipmentCallBackFunc <- {};
|
||||
Rindro_Haker.LoadHook(0x7B64BA, ["int", "int", "bool"],
|
||||
function(args) {
|
||||
// foreach (Func in WearOrRemoveEquipmentCallBackFunc) {
|
||||
// Func(args);
|
||||
// }
|
||||
// print(args[1]);
|
||||
// local ThisC = NativePointer(0x1A5FB24).readInt();
|
||||
// local Slot = NativePointer(Rindro_Haker.CpuContext.ebp).add(8).readInt();
|
||||
|
||||
// local EquiObj = L_Sq_CallFunc(0x7B03C0, "int", FFI_FASTCALL, ["int", "int", "int"], ThisC, 0, Slot);
|
||||
// if (EquiObj) {
|
||||
// local Index = NativePointer(EquiObj).add(0x1c).readInt();
|
||||
// print(Index);
|
||||
// }
|
||||
return null;
|
||||
},
|
||||
function(args) {
|
||||
foreach (Func in WearOrRemoveEquipmentCallBackFunc) {
|
||||
Func(args);
|
||||
}
|
||||
// print(666);
|
||||
// print(format("%02x", args.pop()));
|
||||
// TTTAni <- args.pop();
|
||||
return null;
|
||||
});
|
||||
|
||||
29
Base/_Z_Data/Global.nut
Normal file
29
Base/_Z_Data/Global.nut
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
文件名:Global.nut
|
||||
路径:Base/_Z_Data/Global.nut
|
||||
创建日期:2025-12-27 03:50
|
||||
文件用途:全局信息类
|
||||
*/
|
||||
class _GlobalInfoClass_ {
|
||||
//职业名称
|
||||
JobName = null;
|
||||
|
||||
constructor() {
|
||||
|
||||
InitJobNmae();
|
||||
}
|
||||
|
||||
function InitJobNmae() {
|
||||
JobName = [];
|
||||
Rindro_Script.GetFileData("character/character.lst", function(DataTable, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Index = Data.Get();
|
||||
local Name = Data.Get();
|
||||
Name = Name.slice(Name.find("/") + 1, Name.find(".chr"));
|
||||
JobName.append(Name);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()._Global_Info_ <- _GlobalInfoClass_();
|
||||
Reference in New Issue
Block a user