Hotfix outfit random component crash (#1124)

This commit is contained in:
Aure7138 2023-03-20 20:23:43 +08:00 committed by GitHub
parent d12c7fe69c
commit 66f23ae57a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 29 deletions

View File

@ -52,6 +52,8 @@ BOOL APIENTRY DllMain(HMODULE hmod, DWORD reason, PVOID)
EnableMenuItem(GetSystemMenu(GetConsoleWindow(), 0), SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
std::srand(std::chrono::system_clock::now().time_since_epoch().count());
try
{
LOG(INFO) << "Yim's Menu Initializing";

View File

@ -4,6 +4,11 @@
namespace big
{
static int range(int lower_bound, int upper_bound)
{
return std::rand() % (upper_bound - lower_bound + 1) + lower_bound;
}
void view::outfit_editor()
{
struct outfit_t
@ -59,7 +64,12 @@ namespace big
});
components::button("OUTFIT_RANDOM_COMPONENT"_T, [] {
PED::SET_PED_RANDOM_COMPONENT_VARIATION(self::ped, 0);
for (auto& item : components)
{
int drawable_id = range(0, PED::GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(self::ped, item.id) - 1);
int texture_id = range(0, PED::GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(self::ped, item.id, drawable_id) - 1);
PED::SET_PED_COMPONENT_VARIATION(self::ped, item.id, drawable_id, texture_id, PED::GET_PED_PALETTE_VARIATION(self::ped, item.id));
}
});
ImGui::SameLine();
@ -93,26 +103,26 @@ namespace big
std::stringstream ss(ImGui::GetClipboardText());
for (auto& item : components)
{
int id = 0;
int draw_id = 0;
int texture_id = 0;
int id = 0;
int drawable_id = 0;
int texture_id = 0;
ss >> id;
ss >> draw_id;
ss >> drawable_id;
ss >> texture_id;
PED::SET_PED_COMPONENT_VARIATION(self::ped, id, draw_id, texture_id, PED::GET_PED_PALETTE_VARIATION(self::ped, id));
PED::SET_PED_COMPONENT_VARIATION(self::ped, id, drawable_id, texture_id, PED::GET_PED_PALETTE_VARIATION(self::ped, id));
}
for (auto& item : props)
{
int id = 0;
int draw_id = 0;
int texture_id = 0;
int id = 0;
int drawable_id = 0;
int texture_id = 0;
ss >> id;
ss >> draw_id;
ss >> drawable_id;
ss >> texture_id;
if (draw_id == -1)
if (drawable_id == -1)
PED::CLEAR_PED_PROP(self::ped, id, 1);
else
PED::SET_PED_PROP_INDEX(self::ped, id, draw_id, texture_id, TRUE, 1);
PED::SET_PED_PROP_INDEX(self::ped, id, drawable_id, texture_id, TRUE, 1);
}
});
@ -237,9 +247,9 @@ namespace big
std::stringstream ss(item.key());
int id = 0;
ss >> id;
int draw_id = item.value()["drawable_id"];
int texture_id = item.value()["texture_id"];
PED::SET_PED_COMPONENT_VARIATION(self::ped, id, draw_id, texture_id, PED::GET_PED_PALETTE_VARIATION(self::ped, id));
int drawable_id = item.value()["drawable_id"];
int texture_id = item.value()["texture_id"];
PED::SET_PED_COMPONENT_VARIATION(self::ped, id, drawable_id, texture_id, PED::GET_PED_PALETTE_VARIATION(self::ped, id));
}
for (auto& item : j["props"].items())
@ -247,12 +257,12 @@ namespace big
std::stringstream ss(item.key());
int id = 0;
ss >> id;
int draw_id = item.value()["drawable_id"];
int texture_id = item.value()["texture_id"];
if (draw_id == -1)
int drawable_id = item.value()["drawable_id"];
int texture_id = item.value()["texture_id"];
if (drawable_id == -1)
PED::CLEAR_PED_PROP(self::ped, id, 1);
else
PED::SET_PED_PROP_INDEX(self::ped, id, draw_id, texture_id, TRUE, 1);
PED::SET_PED_PROP_INDEX(self::ped, id, drawable_id, texture_id, TRUE, 1);
}
}
});

View File

@ -89,24 +89,24 @@ namespace big
std::stringstream ss(ImGui::GetClipboardText());
for (auto& item : components)
{
int id = 0;
int draw_id = 0;
int texture_id = 0;
int id = 0;
int drawable_id = 0;
int texture_id = 0;
ss >> id;
ss >> draw_id;
ss >> drawable_id;
ss >> texture_id;
*outfit::get_component_drawable_id_address(slot, id) = draw_id;
*outfit::get_component_drawable_id_address(slot, id) = drawable_id;
*outfit::get_component_texture_id_address(slot, id) = texture_id;
}
for (auto& item : props)
{
int id = 0;
int draw_id = 0;
int texture_id = 0;
int id = 0;
int drawable_id = 0;
int texture_id = 0;
ss >> id;
ss >> draw_id;
ss >> drawable_id;
ss >> texture_id;
*outfit::get_prop_drawable_id_address(slot, id) = draw_id;
*outfit::get_prop_drawable_id_address(slot, id) = drawable_id;
*outfit::get_prop_texture_id_address(slot, id) = texture_id;
}
});