Code :
/* ScriptData
SDName: xp_giver
SD%Complete: 100
SDComment: Offre de l'XP contre de l'or
SDCategory: PNJ
SDAuthor: PixelPirate
EndScriptData */
#include "precompiled.h"
#include "sc_creature.h"
#include "sc_gossip.h"
enum
{
SAY_COMBAT = -1960200,
SAY_NOMONEY = -1960201,
SAY_FAILLEVEL = -1960202,
GOSSIP_XP01 = -3000060,
GOSSIP_XP02 = -3000061,
GOSSIP_XP03 = -3000062,
GOSSIP_XP04 = -3000063,
GOSSIP_XP05 = -3000064,
GOSSIP_XP06 = -3000065,
GOSSIP_MENU_XP_GIVER = 11001,
};
bool GossipHello_xp_giver(Player* pPlayer, Creature* pCreature)
{
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP01, GOSSIP_SENDER_MAIN, 1000);
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP02, GOSSIP_SENDER_MAIN, 1001);
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP03, GOSSIP_SENDER_MAIN, 1002);
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP04, GOSSIP_SENDER_MAIN, 1003);
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP05, GOSSIP_SENDER_MAIN, 1004);
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP06, GOSSIP_SENDER_MAIN, 1005);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_MENU_XP_GIVER, pCreature->GetGUID());
return true;
}
void SendDefaultMenu_xp_giver(Player* pPlayer, Creature* m_creature, uint32 uiAction)
{
if (!pPlayer->getAttackers().empty())
{
pPlayer->CLOSE_GOSSIP_MENU();
DoScriptText(SAY_COMBAT, m_creature);
return;
}
gold = pPlayer->GetMoney();
costgold = 10000;
if (gold < costgold)
{
pPlayer->CLOSE_GOSSIP_MENU();
DoScriptText(SAY_NOMONEY, m_creature);
return;
}
if (pPlayer->getLevel() >= 80)
{
pPlayer->CLOSE_GOSSIP_MENU();
DoScriptText(SAY_FAILLEVEL, m_creature);
return;
}
switch(uiAction)
{
case 1000:
pPlayer->ModifyXPValue(+1000);
pPlayer->ModifyMoney(-1*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
case 1001:
pPlayer->ModifyXPValue(+10000);
pPlayer->ModifyMoney(-10*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
case 1002:
pPlayer->ModifyXPValue(+100000);
pPlayer->ModifyMoney(-100*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
case 1003:
pPlayer->ModifyXPValue(+500000);
pPlayer->ModifyMoney(-5000*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
case 1004:
pPlayer->ModifyXPValue(+1000000);
pPlayer->ModifyMoney(-10000*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
case 1005:
pPlayer->ModifyXPValue(+5000000);
pPlayer->ModifyMoney(-50000*costgold);
pPlayer->CLOSE_GOSSIP_MENU();
break;
}
pPlayer->CLOSE_GOSSIP_MENU();
}
bool GossipSelect_xp_giver(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
// Main menu
if (uiSender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_xp_giver(pPlayer, pCreature, uiAction);
return true;
}
void AddSC_xp_giver()
{
Script* pNewScript;
pNewScript = new Script;
pNewScript->Name = "xp_giver";
pNewScript->pGossipHello = &GossipHello_xp_giver;
pNewScript->pGossipSelect = &GossipSelect_xp_giver;
pNewScript->RegisterSelf();
}
Version PastBin
Enjoy