mirror of
https://github.com/0O0o0oOoO00/Alas.git
synced 2026-05-14 12:29:25 +08:00
add: hooked lua function trace
This commit is contained in:
@@ -52,12 +52,10 @@ static fnset_TimeScaleT get_Time_set_timeScale() {
|
||||
SPDLOG_INFO("Disable {}", #n); \
|
||||
m_flag.n.store(false)
|
||||
|
||||
|
||||
#ifdef DEBUG_MODE
|
||||
#define CALLED(f) SPDLOG_INFO("{} called", #f)
|
||||
#else
|
||||
#define CALLED(f)
|
||||
#endif
|
||||
#define CALLED(f) \
|
||||
if (IS_ENABLED(HOOKED_LUA_FUNCTION_TRACE)) { \
|
||||
SPDLOG_INFO("{} called", #f); \
|
||||
}
|
||||
|
||||
Cracker::Cracker()
|
||||
: m_state([]() -> lua_State* {
|
||||
@@ -226,6 +224,7 @@ std::optional<Cracker::StorageItemCount> Cracker::get_storage_item_count(Storage
|
||||
}
|
||||
|
||||
void Cracker::disable_all() {
|
||||
disable_hooked_lua_function_trace();
|
||||
disable_global_ship_properties_crack();
|
||||
disable_fast_stage_move();
|
||||
disable_remove_hard_mode_ship_properties_limit();
|
||||
@@ -248,6 +247,14 @@ void Cracker::disable_all() {
|
||||
disable_opsi_no_map_fog();
|
||||
}
|
||||
|
||||
void Cracker::enable_hooked_lua_function_trace() {
|
||||
ENABLE(HOOKED_LUA_FUNCTION_TRACE);
|
||||
}
|
||||
|
||||
void Cracker::disable_hooked_lua_function_trace() {
|
||||
DISABLE(HOOKED_LUA_FUNCTION_TRACE);
|
||||
}
|
||||
|
||||
void Cracker::enable_opsi_force_auto() {
|
||||
ENABLE(OPSI_FORCE_AUTO);
|
||||
}
|
||||
@@ -1114,6 +1121,7 @@ void Cracker::better_global_speedup_set_rate(double rate) {
|
||||
Cracker::Config Cracker::get_config() {
|
||||
Config config = {
|
||||
.flag = {
|
||||
SET_CONFIG_FLAG(HOOKED_LUA_FUNCTION_TRACE),
|
||||
SET_CONFIG_FLAG(GLOBAL_SHIP_PROPERTIES_CRACK),
|
||||
SET_CONFIG_FLAG(FAST_STAGE_MOVE_CRACK),
|
||||
SET_CONFIG_FLAG(REMOVE_HARD_MODE_SHIP_PROPERTIES_LIMIT),
|
||||
@@ -1146,6 +1154,12 @@ Cracker::Config Cracker::get_config() {
|
||||
#define IS_CONFIG_ENABLED(n) config.flag.n
|
||||
|
||||
void Cracker::apply_config(Config& config) {
|
||||
if(IS_CONFIG_ENABLED(HOOKED_LUA_FUNCTION_TRACE)) {
|
||||
enable_hooked_lua_function_trace();
|
||||
} else {
|
||||
disable_hooked_lua_function_trace();
|
||||
}
|
||||
|
||||
if(IS_CONFIG_ENABLED(OPSI_FORCE_AUTO)) {
|
||||
enable_opsi_force_auto();
|
||||
} else {
|
||||
|
||||
@@ -69,6 +69,7 @@ public:
|
||||
|
||||
struct Config {
|
||||
struct {
|
||||
bool HOOKED_LUA_FUNCTION_TRACE = false;
|
||||
bool GLOBAL_SHIP_PROPERTIES_CRACK = false;
|
||||
bool FAST_STAGE_MOVE_CRACK = false;
|
||||
bool REMOVE_HARD_MODE_SHIP_PROPERTIES_LIMIT = false;
|
||||
@@ -124,6 +125,9 @@ public:
|
||||
|
||||
void disable_all();
|
||||
|
||||
void enable_hooked_lua_function_trace();
|
||||
void disable_hooked_lua_function_trace();
|
||||
|
||||
void enable_opsi_force_auto();
|
||||
void disable_opsi_force_auto();
|
||||
|
||||
@@ -206,6 +210,7 @@ private:
|
||||
static void clear_hard_mode_ship_properties_limit(Lua::Table& t);
|
||||
|
||||
struct {
|
||||
std::atomic<bool> HOOKED_LUA_FUNCTION_TRACE = false;
|
||||
std::atomic<bool> GLOBAL_SHIP_PROPERTIES_CRACK = false;
|
||||
std::atomic<bool> FAST_STAGE_MOVE_CRACK = false;
|
||||
std::atomic<bool> REMOVE_HARD_MODE_SHIP_PROPERTIES_LIMIT = false;
|
||||
|
||||
@@ -24,6 +24,28 @@ CrackerServer::CrackerServer() {
|
||||
CRACK_OK();
|
||||
});
|
||||
|
||||
Post("/enable_hooked_lua_function_trace", [](const httplib::Request& req, httplib::Response& res) {
|
||||
try {
|
||||
Cracker::Instance().enable_hooked_lua_function_trace();
|
||||
} catch (std::exception& e) {
|
||||
SPDLOG_ERROR("Enable hooked lua function trace failed: {}", e.what());
|
||||
res.status = 500;
|
||||
return;
|
||||
}
|
||||
CRACK_OK();
|
||||
});
|
||||
|
||||
Post("/disable_hooked_lua_function_trace", [](const httplib::Request& req, httplib::Response& res) {
|
||||
try {
|
||||
Cracker::Instance().disable_hooked_lua_function_trace();
|
||||
} catch (std::exception& e) {
|
||||
SPDLOG_ERROR("Disable hooked lua function trace failed: {}", e.what());
|
||||
res.status = 500;
|
||||
return;
|
||||
}
|
||||
CRACK_OK();
|
||||
});
|
||||
|
||||
Post("/enable_global_ship_properties_crack", [](const httplib::Request& req, httplib::Response& res) {
|
||||
try {
|
||||
Cracker::Instance().enable_global_ship_properties_crack();
|
||||
|
||||
@@ -220,6 +220,7 @@ void CrackerUI::draw_menu() {
|
||||
}
|
||||
if(ImGui::BeginTabItem("调试")) {
|
||||
ImGui::Checkbox("不渲染", &g_no_rander);
|
||||
ImGui::Checkbox("Lua函数追踪", &CONFIG_FLAG(HOOKED_LUA_FUNCTION_TRACE));
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
ImGui::EndTabBar();
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
|
||||
POST http://{{Host}}:{{Port}}/disable_all
|
||||
|
||||
###
|
||||
POST http://{{Host}}:{{Port}}/enable_hooked_lua_function_trace
|
||||
|
||||
###
|
||||
POST http://{{Host}}:{{Port}}/disable_hooked_lua_function_trace
|
||||
|
||||
###
|
||||
POST http://{{Host}}:{{Port}}/enable_global_ship_properties_crack
|
||||
|
||||
|
||||
@@ -203,7 +203,8 @@
|
||||
"InjectMethod": "local_patch",
|
||||
"RequestTimeLimit": 10,
|
||||
"UpdateServer": null,
|
||||
"GameLibDir": null
|
||||
"GameLibDir": null,
|
||||
"HookedLuaFunctionTrace": false
|
||||
},
|
||||
"Misc": {
|
||||
"GlobalSpeedup": 1.0,
|
||||
|
||||
@@ -809,6 +809,10 @@
|
||||
"GameLibDir": {
|
||||
"type": "textarea",
|
||||
"value": ""
|
||||
},
|
||||
"HookedLuaFunctionTrace": {
|
||||
"type": "checkbox",
|
||||
"value": false
|
||||
}
|
||||
},
|
||||
"Misc": {
|
||||
|
||||
@@ -837,6 +837,7 @@ HookGeneral:
|
||||
GameLibDir:
|
||||
value: ""
|
||||
type: textarea
|
||||
HookedLuaFunctionTrace: false
|
||||
ShipProperty:
|
||||
Method:
|
||||
value: disable
|
||||
|
||||
@@ -493,6 +493,7 @@ class GeneratedConfig:
|
||||
HookGeneral_RequestTimeLimit = 10
|
||||
HookGeneral_UpdateServer = None
|
||||
HookGeneral_GameLibDir = None
|
||||
HookGeneral_HookedLuaFunctionTrace = False
|
||||
|
||||
# Group `ShipProperty`
|
||||
ShipProperty_Method = 'disable' # disable, gg_factor, final_properties
|
||||
|
||||
@@ -139,6 +139,7 @@ class FullGeneratedConfig:
|
||||
Hook_HookGeneral_RequestTimeLimit = None
|
||||
Hook_HookGeneral_UpdateServer = None
|
||||
Hook_HookGeneral_GameLibDir = None
|
||||
Hook_HookGeneral_HookedLuaFunctionTrace = None
|
||||
Hook_Misc_GlobalSpeedup = None
|
||||
Hook_Misc_BetterGlobalSpeedup = None
|
||||
Hook_Misc_ChapterMove = None
|
||||
|
||||
@@ -2931,6 +2931,10 @@
|
||||
"GameLibDir": {
|
||||
"name": "HookGeneral.GameLibDir.name",
|
||||
"help": "HookGeneral.GameLibDir.help"
|
||||
},
|
||||
"HookedLuaFunctionTrace": {
|
||||
"name": "HookGeneral.HookedLuaFunctionTrace.name",
|
||||
"help": "HookGeneral.HookedLuaFunctionTrace.help"
|
||||
}
|
||||
},
|
||||
"ShipProperty": {
|
||||
|
||||
@@ -2931,6 +2931,10 @@
|
||||
"GameLibDir": {
|
||||
"name": "HookGeneral.GameLibDir.name",
|
||||
"help": "HookGeneral.GameLibDir.help"
|
||||
},
|
||||
"HookedLuaFunctionTrace": {
|
||||
"name": "HookGeneral.HookedLuaFunctionTrace.name",
|
||||
"help": "HookGeneral.HookedLuaFunctionTrace.help"
|
||||
}
|
||||
},
|
||||
"ShipProperty": {
|
||||
|
||||
@@ -2931,6 +2931,10 @@
|
||||
"GameLibDir": {
|
||||
"name": "游戏库目录",
|
||||
"help": "以x86架构为例,目录一般为/data/app/<一串乱码>/<一串乱码>/lib/x86"
|
||||
},
|
||||
"HookedLuaFunctionTrace": {
|
||||
"name": "Lua函数追踪",
|
||||
"help": "仅供调试使用,平时使用不要开"
|
||||
}
|
||||
},
|
||||
"ShipProperty": {
|
||||
|
||||
@@ -2931,6 +2931,10 @@
|
||||
"GameLibDir": {
|
||||
"name": "HookGeneral.GameLibDir.name",
|
||||
"help": "HookGeneral.GameLibDir.help"
|
||||
},
|
||||
"HookedLuaFunctionTrace": {
|
||||
"name": "HookGeneral.HookedLuaFunctionTrace.name",
|
||||
"help": "HookGeneral.HookedLuaFunctionTrace.help"
|
||||
}
|
||||
},
|
||||
"ShipProperty": {
|
||||
|
||||
@@ -319,3 +319,9 @@ class CrackApi:
|
||||
|
||||
def disable_opsi_no_map_fog(self):
|
||||
self.post("disable_opsi_no_map_fog")
|
||||
|
||||
def enable_hooked_lua_function_trace(self):
|
||||
self.post("enable_hooked_lua_function_trace")
|
||||
|
||||
def disable_hooked_lua_function_trace(self):
|
||||
self.post("disable_hooked_lua_function_trace")
|
||||
|
||||
@@ -17,6 +17,7 @@ from module.luahook.api import CrackApi
|
||||
from module.luahook.op import CrackOp
|
||||
|
||||
ALL_ENABLE_OPS = [
|
||||
CrackOp.EnableHookedLuaFunctionTrace,
|
||||
CrackOp.EnableGlobalShipProperties,
|
||||
CrackOp.EnableChapterFastMove,
|
||||
CrackOp.EnableRemoveHardModeLimit,
|
||||
@@ -95,6 +96,11 @@ def do_crack_op(config: AzurLaneConfig, device: Device, ops: Union[Type[CrackOp.
|
||||
for op in l:
|
||||
if op == CrackOp.DisableAll:
|
||||
api.disable_all()
|
||||
elif op == CrackOp.EnableHookedLuaFunctionTrace:
|
||||
if full_config.Hook_HookGeneral_HookedLuaFunctionTrace:
|
||||
api.enable_hooked_lua_function_trace()
|
||||
elif op == CrackOp.DisableHookedLuaFunctionTrace:
|
||||
api.disable_hooked_lua_function_trace()
|
||||
elif op == CrackOp.EnableGlobalShipProperties:
|
||||
if config.full_config.Hook_ShipProperty_Method != "final_properties":
|
||||
continue
|
||||
@@ -283,6 +289,7 @@ def luahook_disable_all(config: AzurLaneConfig, device: Device):
|
||||
|
||||
|
||||
CHAPTER_CRACK_OPS = [
|
||||
CrackOp.EnableHookedLuaFunctionTrace,
|
||||
CrackOp.EnableChapterFastMove,
|
||||
CrackOp.EnableNoBBAnimation,
|
||||
CrackOp.EnableNoEmotionWarning,
|
||||
@@ -309,6 +316,7 @@ def chapter_task_crack(f):
|
||||
|
||||
|
||||
OPSI_CRACK_OPS = [
|
||||
CrackOp.EnableHookedLuaFunctionTrace,
|
||||
CrackOp.EnableNoBBAnimation,
|
||||
CrackOp.EnableOpsiFastMove,
|
||||
CrackOp.EnableGlobalShipProperties,
|
||||
|
||||
@@ -8,6 +8,12 @@ class CrackOp:
|
||||
class DisableAll(Op):
|
||||
...
|
||||
|
||||
class EnableHookedLuaFunctionTrace(Op):
|
||||
...
|
||||
|
||||
class DisableHookedLuaFunctionTrace(Op):
|
||||
...
|
||||
|
||||
class EnableGlobalShipProperties(Op):
|
||||
...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user