Emulator Server Discussion World of Warcraft Emulator Server general chat . [NO Questions here]
[Release] Skill Npc 2.0
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
[Release] Skill Npc 2.0 -
03-01-2008
Completely redone by me. I wrote this WHOLE script. Everyone on my servers say its a big help for them!
What's new in Ver. 2.0? All class spells New layout Major cpu fixes Spells that cannot be trained by regular trainers Mount spells Pet spells SkillNPC.cpp Code:
// Major Updates, Fixes, and Core by Nebels
// Some help by insanesk8123 <3
#include "StdAfx.h"
#include "Setup.h"
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::GossipEnd(Object * pObject, Player* Plr){ GossipScript::GossipEnd(pObject, Plr); }
void SkillNPC::GossipHello(Object *pObject, Player *Plr, bool AutoSend){
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
if (Plr->getClass() == 1)
{
Menu->AddItem(0, "What spells can warriors learn?", 1);
}
if (Plr->getClass() == 2)
{
Menu->AddItem(0, "What spells can paladins learn?", 2);
}
if (Plr->getClass() == 3)
{
Menu->AddItem(0, "What spells can hunters learn?", 3);
}
if (Plr->getClass() == 9)
{
Menu->AddItem(0, "What spells can warlocks learn?", 4);
}
if (Plr->getClass() == 11)
{
Menu->AddItem(0, "What spells can druids learn?", 5);
}
if (Plr->getClass() == 4)
{
Menu->AddItem(0, "What spells can rogues learn?", 6);
}
if (Plr->getClass() == 5)
{
Menu->AddItem(0, "What spells can priests learn?", 7);
}
if (Plr->getClass() == 7)
{
Menu->AddItem(0, "What spells can shamans learn?", 8);
}
if (Plr->getClass() == 8)
{
Menu->AddItem(0, "What spells can mages learn?", 9);
}
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;
GossipMenu * Menu;
switch(IntId){
case 0: // Return to start
GossipHello(pObject, Plr, true);
break;
case 1:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Taunt", 10);
Menu->AddItem(5, "Intercept", 13);
Menu->AddItem(5, "Mortal Strike", 14);
Menu->AddItem(5, "Defensive Stance", 11);
Menu->AddItem(5, "Beserker Stance", 12);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 2:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Redemption", 22);
Menu->AddItem(5, "Summon Warhorse", 20);
Menu->AddItem(5, "Summon Charger", 21);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 3:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Pet spells", 30);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 4:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Pet Spells", 40);
Menu->AddItem(5, "Summon Felstead", 41);
Menu->AddItem(5, "Summon Dreadstead", 42);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 5:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Growl", 50);
Menu->AddItem(5, "Bear Form", 51);
Menu->AddItem(5, "Normal Flight Form", 52);
Menu->AddItem(5, "Epic Flight Form", 53);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 6:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 7:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 8:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 9:
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 10: // Warrior-Taunt
if(Plr->getLevel() >= 10)
{
Plr->addSpell(355);
Plr->BroadcastMessage("You have learned Taunt.");
}else{
Plr->BroadcastMessage("You must be level 10 to learn Taunt.");
}
break;
case 11: // Warrior-Defensive Stance
if(Plr->getLevel() >= 10)
{
Plr->addSpell(71);
Plr->BroadcastMessage("You have learned Defensive Stance.");
}else{
Plr->BroadcastMessage("You must be level 10 to learn Defensive Stance.");
}
break;
case 12: // Warrior-Beserker Stance
if(Plr->getLevel() >= 30)
{
Plr->addSpell(2458);
Plr->BroadcastMessage("You have learned Berseker Stance.");
}else{
Plr->BroadcastMessage("You must be level 30 to learn Berseker Stance.");
}
break;
case 13: // Warrior-Intercept
if(Plr->getLevel() >= 10)
{
Plr->addSpell(25275);
Plr->BroadcastMessage("You have learned Intercept.");
}else{
Plr->BroadcastMessage("You must be level 10 to learn Intercept.");
}
break;
case 14: // Warrior-Mortal Strike
if(Plr->getLevel() >= 40)
{
Plr->addSpell(30330);
Plr->BroadcastMessage("You have learned Mortal Strike.");
}else{
Plr->BroadcastMessage("You must be level 40 to learn Mortal Strike.");
}
break;
case 20: // Paladin-Warhorse
if(Plr->getLevel() >= 40)
{
Plr->addSpell(13819);
Plr->BroadcastMessage("You have learned Summon Warhorse.");
}else{
Plr->BroadcastMessage("You must be level 40 to learn Summon Warhorse.");
}
break;
case 21: // Paladin-Charger
if(Plr->getLevel() >= 60)
{
Plr->addSpell(34767);
Plr->BroadcastMessage("You have learned Summon Charger.");
}else{
Plr->BroadcastMessage("You must be level 60 to learn Summon Charger.");
}
break;
case 22: // Paladin-Redemption
if(Plr->getLevel() >= 10)
{
Plr->addSpell(20773);
Plr->BroadcastMessage("You have learned Redemption.");
}else{
Plr->BroadcastMessage("You must be level 10 to learn Redemption.");
}
break;
case 30: // Hunter-Pet Spells
if(Plr->getLevel() >= 10)
{
Plr->addSpell(1515);
Plr->addSpell(883);
Plr->addSpell(5149);
Plr->BroadcastMessage("You have learned your Hunter Pet Spells.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You are below level 10.");
Plr->Gossip_Complete();
}
break;
case 40: // Warlock-Pet Spells
if(Plr->getLevel() >= 10)
{
Plr->addSpell(688);
Plr->addSpell(697);
Plr->addSpell(712);
Plr->addSpell(691);
Plr->BroadcastMessage("You have learned your Warlock Pet Spells.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You are below level 10.");
Plr->Gossip_Complete();
}
break;
case 41: // Warlock-Felsteed
if(Plr->getLevel() >= 40)
{
Plr->addSpell(5784);
Plr->BroadcastMessage("You have learned Summon Felsteed.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 40 to learn Summon Felsteed.");
Plr->Gossip_Complete();
}
break;
case 42: // Warlock-Dreadsteed
if(Plr->getLevel() >= 60)
{
Plr->addSpell(23161);
Plr->BroadcastMessage("You have learned Summon Dreadsteed.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 60 to learn Summon Dreadsteed.");
Plr->Gossip_Complete();
}
break;
case 50: // Druid-Growl
if(Plr->getLevel() >= 10)
{
Plr->addSpell(6795);
Plr->BroadcastMessage("You have learned Growl.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 10 to learn Growl.");
Plr->Gossip_Complete();
}
break;
case 51: // Druid-Dire Bear Form
if(Plr->getLevel() >= 30)
{
Plr->addSpell(9634);
Plr->BroadcastMessage("You have learned Dire Bear Form.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 30 to learn Dire Bear Form.");
Plr->Gossip_Complete();
}
break;
case 52: // Druid-Normal Flight Form
if(Plr->getLevel() >= 68)
{
Plr->addSpell(33943);
Plr->BroadcastMessage("You have learned Summon Normal Flight Form.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 68 to learn Normal Flight Form.");
Plr->Gossip_Complete();
}
break;
case 53: // Druid-Epic Flight Form
if(Plr->getLevel() >= 70)
{
Plr->addSpell(40120);
Plr->BroadcastMessage("You have learned Summon Epic Flight Form.");
Plr->Gossip_Complete();
}else{
Plr->BroadcastMessage("You must be level 60 to learn Epic Flight Form.");
Plr->Gossip_Complete();
}
break;
case 99: //Main Menu
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
if (Plr->getClass() == 1)
{
Menu->AddItem(0, "What spells can warriors learn?", 1);
}
if (Plr->getClass() == 2)
{
Menu->AddItem(0, "What spells can paladins learn?", 2);
}
if (Plr->getClass() == 3)
{
Menu->AddItem(0, "What spells can hunters learn?", 3);
}
if (Plr->getClass() == 9)
{
Menu->AddItem(0, "What spells can warlocks learn?", 4);
}
if (Plr->getClass() == 11)
{
Menu->AddItem(0, "What spells can druids learn?", 5);
}
if (Plr->getClass() == 4)
{
Menu->AddItem(0, "What spells can rogues learn?", 6);
}
if (Plr->getClass() == 5)
{
Menu->AddItem(0, "What spells can priests learn?", 7);
}
if (Plr->getClass() == 7)
{
Menu->AddItem(0, "What spells can shamans learn?", 8);
}
if (Plr->getClass() == 8)
{
Menu->AddItem(0, "What spells can mages learn?", 9);
}
Menu->SendTo(Plr);
break;
}
}
void SetupSkillNPC(ScriptMgr * mgr)
{
mgr->register_gossip_script(30010, (GossipScript*) new SkillNPC());
}
Setup.cpp Code:
#include "StdAfx.h"
#include "Setup.h"
#include <scriptSetup.h>
extern "C" SCRIPT_DECL uint32 _exp_get_version()
{
return MAKE_SCRIPT_VERSION(SCRIPTLIB_VERSION_MAJOR, SCRIPTLIB_VERSION_MINOR);
}
extern "C" SCRIPT_DECL void _exp_script_register(ScriptMgr* mgr)
{
SetupSkillNPC(mgr);
}
#ifdef WIN32
extern "C" SCRIPT_DECL uint32 _exp_get_script_type()
{
return SCRIPT_TYPE_MISC;
}
#endif
Setup.h Code:
#ifndef INSTANCE_SCRIPTS_SETUP_H
#define INSTANCE_SCRIPTS_SETUP_H
void SetupSkillNPC(ScriptMgr * mgr);
#endif
Sql Code Code:
INSERT INTO `creature_names` VALUES ('30010', 'Mrs. Whatsitstoya', 'Skill NPC', ' ', '0', '7', '0', '0', '0', null, '0', '10432', '0', '0', '1', '1', '0', null);
INSERT INTO `creature_proto` VALUES ('30010', '1', '1', '35', '2300', '2300', '0', '1', '1', '1400', '0', '3', '3.87', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '20', '0', '0', '0', '0', '0', '0', '2', '0.3', '0', '0', '0', '0', '0', '2.5', '8', '14', '0');
This is tested and seems to be working. Hope you guys enjoy this one as much as the Twink Npc!
Downloads: 4.0 Stable
Last edited by Sylex; 03-04-2008 at 12:19 AM ..
Donate to remove ads. Why so serious...?
Legendary User Rep Power: 7
Posts: 1,654
Join Date: Feb 2007
Location: 4Chan
03-01-2008
Excellent work. Posted the source, credit given, and nice contribution +6 rep
And the emulators shall tremble. You are responsible for any broken rule, regardless if you "didn't know" or not.
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
Thanks Gastricpenguin! :-)
Why so serious...?
Legendary User Rep Power: 7
Posts: 1,654
Join Date: Feb 2007
Location: 4Chan
03-01-2008
You forgot one thing, add: Code:
#include <scriptSetup.h> To the top of Setup.cpp. Or else you will get a "version mismatch" error in ascent.exe
And the emulators shall tremble. You are responsible for any broken rule, regardless if you "didn't know" or not.
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
In stable 4.0, it works fine without it :P But, I'll go ahead and add it to the script.
Banned
Rep Power: 0
Posts: 410
Join Date: Oct 2007
Location: Denmark
03-01-2008
awesome and thx for the source (: +rep 2x
Contributor
Rep Power: 3
Posts: 768
Join Date: Jun 2007
Location: Sweden
03-01-2008
Really Nice! A great contribution x2
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
Your welcome kanqaz. If you have any problems, please post it and I'll try to answer it the best I can. Any suggestions are welcome too.
Master Sergeant
Rep Power: 2
Reputation: 22 Posts: 113
Join Date: Oct 2007
03-01-2008
Very nice release Nebels. Goes above and beyond. + what little rep I can give. =)
Also,
Not sure if you want it, but I compiled up a pet trainer script a couple of weeks ago you are welcome to merge into yours if you wished. The thread was
[Only registered and activated users can see links. ] .
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
Thanks vb4evr. If you want me to add it, get me the source through pm.
Elite User
Rep Power: 3
Posts: 420
Join Date: Feb 2008
Location: HeaveN
03-01-2008
nice work
x2 Nebels
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
Thank you MysterioussouL.
))
Master Sergeant
Rep Power: 2
Reputation: 22 Posts: 113
Join Date: Oct 2007
03-01-2008
Sure thing, although just tried to send it and is too large for PM.
I can send via email if you would like you can PM me your email and I can send it or I can post here?
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
You can post it here if you want.
Banned
Rep Power: 0
Reputation: 101 Posts: 141
Join Date: May 2007
Location: Localhost
03-01-2008
No suggestions? That means its got everything? :P
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by
vBSEO 3.2.0
vBulletin Skin developed by:
vBStyles.com