Code:
#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305)
#endif
class SCRIPT_DECL skillnpc : public GossipScript
{
public:
void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
void GossipEnd(Object * pObject, Player* Plr);
void Destroy()
{
delete this;
}
};
void skillnpc::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(7, "welcum to the professions npc, click on each to learn that profession.", 5);
Menu->AddItem(8, "enchanting", 96);
Menu->AddItem(8, "tailoring", 95);
Menu->AddItem(8, "engineering", 94);
Menu->AddItem(8, "jewelcrafting", 93);
Menu->AddItem(8, "alchemy", 92);
Menu->AddItem(8, "black smith", 91);
Menu->AddItem(8, "herbalism", 90);
Menu->AddItem(8, "leather working", 89);
Menu->AddItem(8, "mining", 88);
Menu->AddItem(8, "skinning", 87);
Menu->AddItem(8, "cooking", 86);
Menu->AddItem(8, "first aid", 85);
Menu->AddItem(8, "fishing", 84);
Menu->AddItem(5, "set my profession skills to 375", 50);
if(AutoSend)
Menu->SendTo(Plr);
}
void skillnpc::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
if(pCreature==NULL)
return;
GossipMenu * Menu;
switch(IntId)
{
case 0:
GossipHello(pObject, Plr, true);
break;
case 96: // enchanting
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 28030, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "enchanting learned" );
Menu->SendTo(Plr);
}break;
case 95: // tailoring
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 3912, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "tailoring learned" );
Menu->SendTo(Plr);
}break;
case 94: // engineering
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 30351, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "engineering learned" );
Menu->SendTo(Plr);
}break;
case 93: // jewelcrafting
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 28901, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "jewelcrafting learned" );
Menu->SendTo(Plr);
}break;
case 92: // alchemy
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 28597, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "alchemy learned" );
Menu->SendTo(Plr);
}break;
case 91: // black smith
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 29845, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "blacksmith learned" );
Menu->SendTo(Plr);
}break;
case 90: //herbalism
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 28696, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "hrbalism learned" );
Menu->SendTo(Plr);
}break;
case 89: // leatherworking
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 32550, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "leatherworking learned" );
Menu->SendTo(Plr);
}break;
case 88: // mining
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 29355, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "mining learned" );
Menu->SendTo(Plr);
}break;
case 87: // skinning
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 32679, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "skinning learned" );
Menu->SendTo(Plr);
}break;
case 86: //cooking
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 33360, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "cooking learned" );
Menu->SendTo(Plr);
}break;
case 85: //first aid
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 33894, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "first aid learned" );
Menu->SendTo(Plr);
}break;
case 84: //fishing
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
pCreature->CastSpell(Plr, 33098, 0);
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "fishing learned" );
Menu->SendTo(Plr);
}break;
case 50: //Advance all skills
{
{Plr->_AdvanceSkillLine(333, 375);}
{Plr->_AdvanceSkillLine(197, 375);}
{Plr->_AdvanceSkillLine(202, 375);}
{Plr->_AdvanceSkillLine(755, 375);}
{Plr->_AdvanceSkillLine(171, 375);}
{Plr->_AdvanceSkillLine(164, 375);}
{Plr->_AdvanceSkillLine(182, 375);}
{Plr->_AdvanceSkillLine(165, 375);}
{Plr->_AdvanceSkillLine(186, 375);}
{Plr->_AdvanceSkillLine(393, 375);}
{Plr->_AdvanceSkillLine(185, 375);}
{Plr->_AdvanceSkillLine(129, 375);}
{Plr->_AdvanceSkillLine(356, 375);}
Plr->Gossip_Complete();
}break;
case 99: //main menu
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(7, "welcum to the professions npc, click on each to learn that profession.", 5);
Menu->AddItem(8, "enchanting", 96);
Menu->AddItem(8, "tailoring", 95);
Menu->AddItem(8, "engineering", 94);
Menu->AddItem(8, "jewelcrafting", 93);
Menu->AddItem(8, "alchemy", 92);
Menu->AddItem(8, "black smith", 91);
Menu->AddItem(8, "herbalism", 90);
Menu->AddItem(8, "leather working", 89);
Menu->AddItem(8, "mining", 88);
Menu->AddItem(8, "skinning", 87);
Menu->AddItem(8, "cooking", 86);
Menu->AddItem(8, "first aid", 85);
Menu->AddItem(8, "fishing", 84);
Menu->AddItem(5, "set my profession skills to 375", 50);
Plr->Gossip_Complete();
}break;
}
}
void skillnpc::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void Setupskillnpc(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new skillnpc();
mgr->register_gossip_script(111700, gs);
}
Code:
INSERT INTO creature_names
(`entry`, `name`, `subname`, `info_str`, `Flags1`, `type`, `family`, `rank`, `unk4`, `spelldataid`, `male_displayid`, `female_displayid`, `male_displayid2`, `female_displayid2`, `unknown_float1`, `unknown_float2`, `civilian`, `leader`)
VALUES
(111700, 'learn PROFFESIONS off me', 'crazyWOW', '0', 0, 0, 0, 3, 0, 0, 11179, 0, 0, 0, 1, 1, 0, 0);
INSERT INTO creature_proto
(`entry`, `minlevel`, `maxlevel`, `faction`, `minhealth`, `maxhealth`, `mana`, `scale`, `npcflags`, `attacktime`, `attacktype`, `mindamage`, `maxdamage`, `rangedattacktime`, `rangedmindamage`, `rangedmaxdamage`, `mountdisplayid`, `equipmodel1`, `equipinfo1`, `equipslot1`, `equipmodel2`, `equipinfo2`, `equipslot2`, `equipmodel3`, `equipinfo3`, `equipslot3`, `respawntime`, `armor`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `combat_reach`, `bounding_radius`, `auras`, `boss`, `money`, `invisibility_type`, `death_state`, `walk_speed`, `run_speed`, `fly_speed`, `extra_a9_flags`, `spell1`, `spell2`, `spell3`, `spell4`, `spell_flags`)
VALUES
(111700, 73, 73, 35, 1000000, 1000000, 1000000, 3, 1, 150, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360000, 6807, 5, 5, 5, 5, 5, 5, 1, 0, '0', 0, 50000000, 0, 0, 2.5, 8, 14, 0, 0, 0, 0, 0, 0);