feat: 添加偷窃系统和自己服装备功能
- 新增偷窃系统(Steal)模块及相关UI界面 - 添加自己服(MySelf)装备功能及显示界面 - 在folder-alias.json中添加新系统路径映射 - 为BaseTool_Class添加DrawNineBoxAlpha方法支持透明度 - 修改NewItemInfoWindow装备判断逻辑 - 在FileConfig.json中为多个系统添加Enabled配置项 - 在ObjectConvert.nut中添加装备掉落相关函数
This commit is contained in:
@@ -53,32 +53,32 @@ function sq_SetObjectAbilityFloatWithDecrypt(obj, ObjectAddressOffset, Value) {
|
||||
|
||||
|
||||
|
||||
//[human damage rate]
|
||||
// print(DATK(AtkC, 0x294).readFloat());
|
||||
//[human damage rate]
|
||||
// print(DATK(AtkC, 0x294).readFloat());
|
||||
|
||||
//[fort damage rate]
|
||||
// print(DATK(AtkC, 0x2A0).readFloat());
|
||||
//[fort damage rate]
|
||||
// print(DATK(AtkC, 0x2A0).readFloat());
|
||||
|
||||
//[monster damage rate]
|
||||
// print(DATK(AtkC, 0x2AC).readFloat());
|
||||
//[monster damage rate]
|
||||
// print(DATK(AtkC, 0x2AC).readFloat());
|
||||
|
||||
//[critical hit]
|
||||
// print(DATK(AtkC, 0x68).readFloat());
|
||||
//[critical hit]
|
||||
// print(DATK(AtkC, 0x68).readFloat());
|
||||
|
||||
//[damage]
|
||||
// print(DATK(AtkC, 0x0).readFloat());
|
||||
//[damage]
|
||||
// print(DATK(AtkC, 0x0).readFloat());
|
||||
|
||||
//[damage bonus]
|
||||
// print(DATK(AtkC, 0x24).readInt());
|
||||
//[damage bonus]
|
||||
// print(DATK(AtkC, 0x24).readInt());
|
||||
|
||||
//[absolute damage]
|
||||
// print(DATK(AtkC, 0x18).readInt());
|
||||
//[absolute damage]
|
||||
// print(DATK(AtkC, 0x18).readInt());
|
||||
|
||||
//[damage reaction]
|
||||
// print(NativePointer(AtkC + 0x4C).readInt());
|
||||
//[damage reaction]
|
||||
// print(NativePointer(AtkC + 0x4C).readInt());
|
||||
|
||||
//[knuck back]
|
||||
// print(DATK(AtkC, 0x8C).readInt());
|
||||
//[knuck back]
|
||||
// print(DATK(AtkC, 0x8C).readInt());
|
||||
|
||||
|
||||
function EncodeAttackMemoryData(AtkC, Offset) {
|
||||
@@ -130,37 +130,32 @@ function sq_SetCurrentAttackInfoDamage(attackInfo, damage) {
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x0, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoAbsoluteDamage(attackInfo)
|
||||
{
|
||||
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)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoAbsoluteDamage(attackInfo, damage) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x18, damage);
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoBonusRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoBonusRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x24);
|
||||
return Res;
|
||||
}
|
||||
// print(DATK(AtkC, 0x1c8).readFloat());
|
||||
// print(DATK(AtkC, 0x1ec).readInt());
|
||||
// print(DATK(AtkC, 0x234).readInt());
|
||||
function sq_GetCurrentAttackInfoChangeStatus(attackInfo)
|
||||
{
|
||||
// print(DATK(AtkC, 0x1c8).readFloat());
|
||||
// print(DATK(AtkC, 0x1ec).readInt());
|
||||
// print(DATK(AtkC, 0x234).readInt());
|
||||
function sq_GetCurrentAttackInfoChangeStatus(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Info = [EncodeAttackMemoryData(AtkC, 0x1c8).readFloat(), EncodeAttackMemoryData(AtkC, 0x1ec).readInt(), EncodeAttackMemoryData(AtkC, 0x234).readInt()];
|
||||
return Info;
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoChangeStatus(attackInfo, Data1, Data2, Data3)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoChangeStatus(attackInfo, Data1, Data2, Data3) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(Data1, 'f');
|
||||
@@ -176,8 +171,7 @@ function sq_SetCurrentAttackInfoChangeStatus(attackInfo, Data1, Data2, Data3)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x234, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoHumanDamageRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoHumanDamageRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x294);
|
||||
local B = blob();
|
||||
@@ -186,8 +180,7 @@ function sq_GetCurrentAttackInfoHumanDamageRate(attackInfo)
|
||||
return B.readn('f');
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoHumanDamageRate(attackInfo, rate)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoHumanDamageRate(attackInfo, rate) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(rate, 'f');
|
||||
@@ -195,8 +188,7 @@ function sq_SetCurrentAttackInfoHumanDamageRate(attackInfo, rate)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x294, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoFortDamageRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoFortDamageRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x2A0);
|
||||
local B = blob();
|
||||
@@ -205,8 +197,7 @@ function sq_GetCurrentAttackInfoFortDamageRate(attackInfo)
|
||||
return B.readn('f');
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoFortDamageRate(attackInfo, rate)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoFortDamageRate(attackInfo, rate) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(rate, 'f');
|
||||
@@ -214,8 +205,7 @@ function sq_SetCurrentAttackInfoFortDamageRate(attackInfo, rate)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x2A0, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoMonsterDamageRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoMonsterDamageRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x2AC);
|
||||
local B = blob();
|
||||
@@ -224,8 +214,7 @@ function sq_GetCurrentAttackInfoMonsterDamageRate(attackInfo)
|
||||
return B.readn('f');
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoMonsterDamageRate(attackInfo, rate)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoMonsterDamageRate(attackInfo, rate) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(rate, 'f');
|
||||
@@ -233,8 +222,7 @@ function sq_SetCurrentAttackInfoMonsterDamageRate(attackInfo, rate)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x2AC, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoCriticalRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoCriticalRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x68);
|
||||
local B = blob();
|
||||
@@ -243,8 +231,7 @@ function sq_GetCurrentAttackInfoCriticalRate(attackInfo)
|
||||
return B.readn('f');
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoCriticalRate(attackInfo, rate)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoCriticalRate(attackInfo, rate) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(rate, 'f');
|
||||
@@ -252,35 +239,30 @@ function sq_SetCurrentAttackInfoCriticalRate(attackInfo, rate)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x68, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoDamageReaction(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoDamageReaction(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x4C);
|
||||
return Res;
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackeHitStunTime(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackeHitStunTime(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x138);
|
||||
return Res;
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoKnuckBackType(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoKnuckBackType(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x8C);
|
||||
return Res;
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoKnuckBackType(attackInfo, type)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoKnuckBackType(attackInfo, type) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x8C, type);
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackInfoStuckRate(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackInfoStuckRate(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x74);
|
||||
local B = blob();
|
||||
@@ -289,8 +271,7 @@ function sq_GetCurrentAttackInfoStuckRate(attackInfo)
|
||||
return B.readn('f');
|
||||
}
|
||||
|
||||
function sq_SetCurrentAttackInfoStuckRate(attackInfo, rate)
|
||||
{
|
||||
function sq_SetCurrentAttackInfoStuckRate(attackInfo, rate) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local B = blob();
|
||||
B.writen(rate, 'f');
|
||||
@@ -298,16 +279,37 @@ function sq_SetCurrentAttackInfoStuckRate(attackInfo, rate)
|
||||
MemoryTool.EncodeMemoryData(AtkC + 0x74, B.readn('i'));
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackUpForce(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackUpForce(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x5c);
|
||||
return Res;
|
||||
}
|
||||
|
||||
function sq_GetCurrentAttackBackForce(attackInfo)
|
||||
{
|
||||
function sq_GetCurrentAttackBackForce(attackInfo) {
|
||||
local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]);
|
||||
local Res = MemoryTool.DecodeMemoryData(AtkC + 0x50);
|
||||
return Res;
|
||||
}
|
||||
}
|
||||
|
||||
function sq_DropEquipmentUnique(id, posX, posY) {
|
||||
local T = {
|
||||
op = 21016001,
|
||||
id = id,
|
||||
posX = posX,
|
||||
posY = posY,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
function sq_DropEquipment(rarity, posX, posY)
|
||||
{
|
||||
local T = {
|
||||
op = 21016003,
|
||||
rarity = rarity,
|
||||
posX = posX,
|
||||
posY = posY,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user