Lua GossipComplete

From ArcEmu-Wiki
Jump to: navigation, search
+/-
Main Page        LuaArcEmu Website     ArcEmu Forum     Bug Tracker


Description

Used after a gossip menu is created, and a menu option is selected. This command will close the gossip window, so the player doesn't have to close it in-game.
If the gossip window is not closed with this method, the menu will freeze. Use the Gossip hello function to return to the main menu.

Example

local function NPC_GossipHello(pUnit, event, pPlayer)
	pUnit:GossipCreateMenu(100, pPlayer, 0)
	pUnit:GossipMenuAddItem(0, "Close menu", 1, 0)
	pUnit:GossipMenuAddItem(0, "Return to main menu", 2, 0)
	pUnit:GossipMenuAddItem(0, "Menu freeze test", 3, 0)
	pUnit:GossipSendMenu(pPlayer)
end
 
function NPC_GossipSelect(pUnit, event, pPlayer, id, intid, code)
	if (intid == 1) then
		pUnit:SendChatMessage(14, 0, "Closed menu")
		pPlayer:GossipComplete()
	elseif (intid == 2) then
		NPC_GossipHello(pUnit, event, pPlayer) -- Return to GossipHello
	end
end
 
RegisterUnitGossipEvent(123, 1, NPC_GossipHello)
RegisterUnitGossipEvent(123, 2, NPC_GossipSelect)



To reduce the amount of code, you can use :GossipComplete() outside the IF statement:

local function NPC_GossipHello(pUnit, event, pPlayer)
	pUnit:GossipCreateMenu(100, pPlayer, 0)
	pUnit:GossipMenuAddItem(0, "Example 1", 1, 0)
	pUnit:GossipMenuAddItem(0, "Example 2", 2, 0)
	pUnit:GossipMenuAddItem(0, "Example 3", 3, 0)
	pUnit:GossipSendMenu(pPlayer)
end
 
function NPC_GossipSelect(pUnit, event, pPlayer, id, intid, code)
	if(intid == 1) then
		pUnit:SendChatMessage(14, 0, "Example 1")
	elseif (intid == 2) then
		pUnit:SendChatMessage(14, 0, "Example 2")
	elseif (intid == 3) then
		pUnit:SendChatMessage(14, 0, "Example 3")
	end
	pPlayer:GossipComplete()
end
 
RegisterUnitGossipEvent(123, 1, NPC_GossipHello)
RegisterUnitGossipEvent(123, 2, NPC_GossipSelect)
Personal tools