Skip to content

Commit 08a0874

Browse files
committed
fix(Lua): Several function hook only triggering for the first registrant
1 parent 83b2a4a commit 08a0874

File tree

1 file changed

+12
-27
lines changed

1 file changed

+12
-27
lines changed

UE4SS/src/Mod/LuaMod.cpp

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5704,10 +5704,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
57045704
[](Unreal::UEngine* Engine, Unreal::FWorldContext& WorldContext, Unreal::FURL URL, Unreal::UPendingNetGame* PendingGame, Unreal::FString& Error)
57055705
-> std::pair<bool, bool> {
57065706
return TRY([&] {
5707+
std::pair<bool, bool> return_value{};
57075708
for (const auto& callback_data : m_load_map_pre_callbacks)
57085709
{
5709-
std::pair<bool, bool> return_value{};
5710-
57115710
for (const auto& [lua_ptr, registry_index] : callback_data.registry_indexes)
57125711
{
57135712
const auto& lua = *lua_ptr;
@@ -5736,21 +5735,18 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
57365735
return_value.second = callback_data.lua->get_bool();
57375736
}
57385737
}
5739-
5740-
return return_value;
57415738
}
5742-
return std::pair<bool, bool>{false, false};
5739+
return return_value;
57435740
});
57445741
});
57455742

57465743
Unreal::Hook::RegisterLoadMapPostCallback(
57475744
[](Unreal::UEngine* Engine, Unreal::FWorldContext& WorldContext, Unreal::FURL URL, Unreal::UPendingNetGame* PendingGame, Unreal::FString& Error)
57485745
-> std::pair<bool, bool> {
57495746
return TRY([&] {
5747+
std::pair<bool, bool> return_value{};
57505748
for (const auto& callback_data : m_load_map_post_callbacks)
57515749
{
5752-
std::pair<bool, bool> return_value{};
5753-
57545750
for (const auto& [lua_ptr, registry_index] : callback_data.registry_indexes)
57555751
{
57565752
const auto& lua = *lua_ptr;
@@ -5779,10 +5775,8 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
57795775
return_value.second = callback_data.lua->get_bool();
57805776
}
57815777
}
5782-
5783-
return return_value;
57845778
}
5785-
return std::pair<bool, bool>{false, false};
5779+
return return_value;
57865780
});
57875781
});
57885782

@@ -6040,9 +6034,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
60406034
[](Unreal::UObject* context, const TCHAR* str, Unreal::FOutputDevice& ar, Unreal::UObject* executor, bool b_force_call_with_non_exec)
60416035
-> std::pair<bool, bool> {
60426036
return TRY([&] {
6037+
std::pair<bool, bool> return_value{};
60436038
for (const auto& callback_data : m_call_function_by_name_with_arguments_pre_callbacks)
60446039
{
6045-
std::pair<bool, bool> return_value{};
60466040

60476041
for (const auto& [lua, registry_index] : callback_data.registry_indexes)
60486042
{
@@ -6072,21 +6066,19 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
60726066
return_value.second = callback_data.lua->get_bool();
60736067
}
60746068
}
6075-
6076-
return return_value;
60776069
}
60786070

6079-
return std::pair{false, false};
6071+
return return_value;
60806072
});
60816073
});
60826074

60836075
Unreal::Hook::RegisterCallFunctionByNameWithArgumentsPostCallback(
60846076
[](Unreal::UObject* context, const TCHAR* str, Unreal::FOutputDevice& ar, Unreal::UObject* executor, bool b_force_call_with_non_exec)
60856077
-> std::pair<bool, bool> {
60866078
return TRY([&] {
6079+
std::pair<bool, bool> return_value{};
60876080
for (const auto& callback_data : m_call_function_by_name_with_arguments_post_callbacks)
60886081
{
6089-
std::pair<bool, bool> return_value{};
60906082

60916083
for (const auto& [lua, registry_index] : callback_data.registry_indexes)
60926084
{
@@ -6116,11 +6108,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
61166108
return_value.second = callback_data.lua->get_bool();
61176109
}
61186110
}
6119-
6120-
return return_value;
61216111
}
61226112

6123-
return std::pair{false, false};
6113+
return return_value;
61246114
});
61256115
});
61266116

@@ -6221,9 +6211,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
62216211
auto command = File::StringType{ToCharTypePtr(cmd)};
62226212
auto command_parts = explode_by_occurrence_with_quotes(command, STR(' '));
62236213

6214+
std::pair<bool, bool> return_value{};
62246215
for (const auto& callback_data : m_process_console_exec_pre_callbacks)
62256216
{
6226-
std::pair<bool, bool> return_value{};
62276217

62286218
for (const auto& [lua, registry_index] : callback_data.registry_indexes)
62296219
{
@@ -6258,11 +6248,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
62586248
throw std::runtime_error{"A callback for 'RegisterProcessConsoleExecHook' must return bool or nil"};
62596249
}
62606250
}
6261-
6262-
return return_value;
62636251
}
62646252

6265-
return std::pair{false, false};
6253+
return return_value;
62666254
});
62676255
});
62686256

@@ -6273,10 +6261,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
62736261
auto command = File::StringType{ToCharTypePtr(cmd)};
62746262
auto command_parts = explode_by_occurrence_with_quotes(command, STR(' '));
62756263

6264+
std::pair<bool, bool> return_value{};
62766265
for (const auto& callback_data : m_process_console_exec_post_callbacks)
62776266
{
6278-
std::pair<bool, bool> return_value{};
6279-
62806267
for (const auto& [lua, registry_index] : callback_data.registry_indexes)
62816268
{
62826269
callback_data.lua->registry().get_function_ref(registry_index.lua_index);
@@ -6310,11 +6297,9 @@ No overload found for function 'FPackageName:IsValidLongPackageName'.
63106297
throw std::runtime_error{"A callback for 'RegisterProcessConsoleExecHook' must return bool or nil"};
63116298
}
63126299
}
6313-
6314-
return return_value;
63156300
}
63166301

6317-
return std::pair{false, false};
6302+
return return_value;
63186303
});
63196304
});
63206305

0 commit comments

Comments
 (0)