Heres an example script using the function Player::CompleteQuest(). I didnt test the script and don't expect it to work
#define GOSSIP_COMPLETESOMEQUEST "Complete some quest"
#define GOSSIP_COMPLETESOMEOTHERQUEST "Complete some other quest"
#define QUEST1 quest_id
#define QUEST2 quest_id
bool GossipHello_quest_fixer(Player* pPlayer, Creature* pCreature)
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_COMPLETESOMEQUEST , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_COMPLETESOMEOTHERQUEST , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->SEND_GOSSIP_MENU(1, pCreature->GetGUID());
return true;
}
void SendDefaultMenu_quest_fixer(Player* pPlayer, Creature* pCreature, uint32 uiAction)
{
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF + 1:
pPlayer->CompleteQuest(QUEST_1);
break;
case GOSSIP_ACTION_INFO_DEF + 2:
pPlayer->CompleteQuest(QUEST_2);
break;
}
}
bool GossipSelect_quest_fixer(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
switch (uiSender)
{
case GOSSIP_SENDER_MAIN: SendDefaultMenu_quest_fixer(pPlayer, pCreature, uiAction); break;
}
return true;
}
CreatureAI* GetAI_quest_fixer(Creature* pCreature)
{
return new creatureAI(pCreature);
}
void AddSC_quest_npc()
{
Script *newscript;
newscript = new Script;
newscript->Name = "quest_fixer";
newscript->pGossipHello = &GossipHello_quest_fixer;
newscript->pGossipSelect = &GossipSelect_quest_fixer;
newscript->GetAI = &GetAI_quest_fixer;
newscript->RegisterSelf();
}