From b12768eb2f8dd147124beb14cd1b20b53f580eca Mon Sep 17 00:00:00 2001 From: 55Honey <71938210+55Honey@users.noreply.github.com> Date: Thu, 24 Mar 2022 20:26:38 +0100 Subject: [PATCH 1/2] fix: restore gossip menu after lua script Cherry pick from https://github.com/ElunaLuaEngine/Eluna/pull/405 Co-authored by https://github.com/Rochet2 --- GossipHooks.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/GossipHooks.cpp b/GossipHooks.cpp index 25459bf..a4ff26d 100644 --- a/GossipHooks.cpp +++ b/GossipHooks.cpp @@ -116,22 +116,32 @@ bool Eluna::OnGossipHello(Player* pPlayer, Creature* pCreature) bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action) { START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); + auto original_menu = *pPlayer->PlayerTalkClass; pPlayer->PlayerTalkClass->ClearMenus(); Push(pPlayer); Push(pCreature); Push(sender); Push(action); - return CallAllFunctionsBool(CreatureGossipBindings, key, true); + auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); + if (!preventDefault) { + *pPlayer->PlayerTalkClass = original_menu; + } + return preventDefault; } bool Eluna::OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char* code) { START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); + auto original_menu = *pPlayer->PlayerTalkClass; pPlayer->PlayerTalkClass->ClearMenus(); Push(pPlayer); Push(pCreature); Push(sender); Push(action); Push(code); - return CallAllFunctionsBool(CreatureGossipBindings, key, true); + auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); + if (!preventDefault) { + *pPlayer->PlayerTalkClass = original_menu; + } + return preventDefault; } From 7d574d44749e21886451a50a7381a4556742a5ab Mon Sep 17 00:00:00 2001 From: 55Honey <71938210+55Honey@users.noreply.github.com> Date: Fri, 25 Mar 2022 20:26:50 +0100 Subject: [PATCH 2/2] change variable name --- GossipHooks.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/GossipHooks.cpp b/GossipHooks.cpp index a4ff26d..e9b58e6 100644 --- a/GossipHooks.cpp +++ b/GossipHooks.cpp @@ -116,7 +116,7 @@ bool Eluna::OnGossipHello(Player* pPlayer, Creature* pCreature) bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action) { START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); - auto original_menu = *pPlayer->PlayerTalkClass; + auto originalMenu = *pPlayer->PlayerTalkClass; pPlayer->PlayerTalkClass->ClearMenus(); Push(pPlayer); Push(pCreature); @@ -124,7 +124,7 @@ bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, Push(action); auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); if (!preventDefault) { - *pPlayer->PlayerTalkClass = original_menu; + *pPlayer->PlayerTalkClass = originalMenu; } return preventDefault; } @@ -132,7 +132,7 @@ bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, bool Eluna::OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char* code) { START_HOOK_WITH_RETVAL(CreatureGossipBindings, GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry(), false); - auto original_menu = *pPlayer->PlayerTalkClass; + auto originalMenu = *pPlayer->PlayerTalkClass; pPlayer->PlayerTalkClass->ClearMenus(); Push(pPlayer); Push(pCreature); @@ -141,7 +141,7 @@ bool Eluna::OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 send Push(code); auto preventDefault = CallAllFunctionsBool(CreatureGossipBindings, key, true); if (!preventDefault) { - *pPlayer->PlayerTalkClass = original_menu; + *pPlayer->PlayerTalkClass = originalMenu; } return preventDefault; }