112 lines
3.3 KiB
Plaintext
112 lines
3.3 KiB
Plaintext
/*
|
|
文件名:ObjectConvert.nut
|
|
路径:Project/CustomPlugins/lulu/ObjectConvert.nut
|
|
创建日期:2026-02-09 23:33
|
|
文件用途:
|
|
*/
|
|
|
|
|
|
function sq_GetCNRDObjectToPassiveObject(obj) {
|
|
return L_Sq_ObjectAddressToSqrObject(L_Sq_GetObjectAddress(obj), "CNRDPassiveObject", 0);
|
|
}
|
|
|
|
function sq_GetCNRDObjectToSQRPassiveObject(obj) {
|
|
return L_Sq_ObjectAddressToSqrObject(L_Sq_GetObjectAddress(obj), "CNSquirrelPassiveObject", 0);
|
|
}
|
|
|
|
function sq_GetObjectAbilityInteger(obj, ObjectAddressOffset) {
|
|
return NativePointer(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset).readInt();
|
|
}
|
|
|
|
function sq_SetObjectAbilityInteger(obj, ObjectAddressOffset, Value) {
|
|
NativePointer(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset).writeInt(Value);
|
|
}
|
|
|
|
function sq_GetObjectAbilityFloat(obj, ObjectAddressOffset) {
|
|
return NativePointer(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset).readFloat();
|
|
}
|
|
|
|
function sq_SetObjectAbilityFloat(obj, ObjectAddressOffset, Value) {
|
|
NativePointer(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset).writeFloat(Value);
|
|
}
|
|
|
|
function sq_GetObjectAbilityIntegerWithDecrypt(obj, ObjectAddressOffset) {
|
|
return MemoryTool.DecodeMemoryData(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset);
|
|
}
|
|
|
|
function sq_SetObjectAbilityIntegerWithDecrypt(obj, ObjectAddressOffset, Value) {
|
|
MemoryTool.EncodeMemoryData(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset, Value);
|
|
}
|
|
|
|
function sq_GetObjectAbilityFloatWithDecrypt(obj, ObjectAddressOffset) {
|
|
local Res = MemoryTool.DecodeMemoryData(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset);
|
|
local B = blob();
|
|
B.writen(Res, 'i');
|
|
return B.readn('f');
|
|
}
|
|
|
|
function sq_SetObjectAbilityFloatWithDecrypt(obj, ObjectAddressOffset, Value) {
|
|
local B = blob();
|
|
B.writen(Value, 'f');
|
|
MemoryTool.EncodeMemoryData(L_Sq_GetObjectAddress(obj) + ObjectAddressOffset, B.readn('i'));
|
|
}
|
|
|
|
|
|
|
|
//[human damage rate]
|
|
// print(DATK(AtkC, 0x294).readFloat());
|
|
|
|
//[fort damage rate]
|
|
// print(DATK(AtkC, 0x2A0).readFloat());
|
|
|
|
//[monster damage rate]
|
|
// print(DATK(AtkC, 0x2AC).readFloat());
|
|
|
|
//[critical hit]
|
|
// print(DATK(AtkC, 0x68).readFloat());
|
|
|
|
//[damage]
|
|
// print(DATK(AtkC, 0x0).readFloat());
|
|
|
|
//[damage bonus]
|
|
// print(DATK(AtkC, 0x24).readInt());
|
|
|
|
//[absolute damage]
|
|
// print(DATK(AtkC, 0x18).readInt());
|
|
|
|
//[damage reaction]
|
|
// print(NativePointer(AtkC + 0x4C).readInt());
|
|
|
|
//[knuck back]
|
|
// print(DATK(AtkC, 0x8C).readInt());
|
|
|
|
|
|
function sq_GetCurrentAttackInfoDamage(attackInfo) {
|
|
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
|
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x0);
|
|
local B = blob();
|
|
B.writen(Res, 'i');
|
|
B.seek(0);
|
|
return B.readn('f');
|
|
}
|
|
|
|
function sq_SetCurrentAttackInfoDamage(attackInfo, damage) {
|
|
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
|
local B = blob();
|
|
B.writen(damage, 'f');
|
|
B.seek(0);
|
|
MemoryTool.EncodeMemoryData(AtkC + 0x0, B.readn('i'));
|
|
}
|
|
|
|
function sq_GetCurrentAttackInfoAbsoluteDamage(attackInfo)
|
|
{
|
|
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
|
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x18);
|
|
return Res;
|
|
}
|
|
|
|
function sq_SetCurrentAttackInfoAbsoluteDamage(attackInfo, damage)
|
|
{
|
|
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
|
MemoryTool.EncodeMemoryData(AtkC + 0x18, damage);
|
|
} |