• Страница 1 из 1
  • 1
Модератор форума: •••scream™•••  
Npc который меняет класс игрока
•••scream™•••Дата: Суббота, 24.10.2009, 23:25 | Сообщение # 1
Лучший из лучших
Группа: Супер Модераторы
Сообщений: 1767
Награды: 8
Репутация: 472
Статус:
Code
// CREATED BY LAAEVIE OF MMOWNED!  

#include "StdAfx.h"  
#include "Setup.h"  

#define CHANGE_CLASS_NPC 85004  

#ifdef WIN32  
#pragma warning(disable:4305)// warning C4305: 'argument' : truncation from 'double' to 'float'  
#endif  

class SCRIPT_DECL ClassChangerNPC : 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 ClassChangerNPC::GossipHello(Object * pObject, Player* Plr, bool AutoSend)  
   {  
          GossipMenu *Menu;  
          objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);  
   {  
   if(Plr->getRace()== 1||Plr->getRace()== 2||Plr->getRace()== 3||Plr->getRace()== 4||Plr->getRace()== 5||Plr->getRace()== 6||Plr->getRace()== 7||Plr->getRace()== 8||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Warrior!", 1);}  

   if(Plr->getRace()== 1||Plr->getRace()== 3||Plr->getRace()== 10||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Paladin!", 2);}  

   if(Plr->getRace()== 2||Plr->getRace()== 3||Plr->getRace()== 4||Plr->getRace()== 6||Plr->getRace()== 8||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Hunter!", 3);}  

   if(Plr->getRace()== 1||Plr->getRace()== 2||Plr->getRace()== 3||Plr->getRace()== 4||Plr->getRace()== 5||Plr->getRace()== 7||Plr->getRace()== 8||Plr->getRace()== 10)  
    {Menu->AddItem(0, "I want to be a Rogue!", 4);}  

   if(Plr->getRace()== 1||Plr->getRace()== 3||Plr->getRace()== 4||Plr->getRace()== 5||Plr->getRace()== 8||Plr->getRace()== 10||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Priest!", 5);}  

   if(Plr->getRace()== 1||Plr->getRace()== 2||Plr->getRace()== 3||Plr->getRace()== 4||Plr->getRace()== 5||Plr->getRace()== 6||Plr->getRace()== 7||Plr->getRace()== 8||Plr->getRace()== 10||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Death Knight!", 6);}  

   if(Plr->getRace()== 2||Plr->getRace()== 6||Plr->getRace()== 8||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Shaman!", 7);}  

   if(Plr->getRace()== 1||Plr->getRace()== 5||Plr->getRace()== 6||Plr->getRace()== 8||Plr->getRace()== 10||Plr->getRace()== 11)  
    {Menu->AddItem(0, "I want to be a Mage!", 8);}  

   if(Plr->getRace()== 1||Plr->getRace()== 2||Plr->getRace()== 5||Plr->getRace()== 7||Plr->getRace()== 10)  
    {Menu->AddItem(0, "I want to be a Warlock!", 9);}  

   if(Plr->getRace()== 4||Plr->getRace()== 6)  
    {Menu->AddItem(0, "I want to be a Druid!", 11);}  

    Menu->AddItem(0, "I Don't want to chage class!", 50);  
   }  

   if(AutoSend)  
    Menu->SendTo(Plr);  
};  

void ClassChangerNPC::GossipSelectOption(Object* pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)  
{  
   switch(IntId)  
   {  
    case 0:  
    {  
     GossipHello(pObject, Plr, true);  
    }break;  
    case 50:  
    {  
     Plr->Gossip_Complete();  
    }break;  

    default:  
    {  
     if (Plr->getClass() != IntId)  
     {  
      Plr->setClass((uint8)IntId);  
      Plr->Reset_Spells();  
      Plr->_RemoveAllSkills();  
      Plr->BroadcastMessage("Class change complete. Relog to see the effect.");  
        

    if (Plr->_HasSkillLine(43))  
     {Plr->_ModifySkillMaximum(43, 400);}//Swords  

    if (Plr->_HasSkillLine(44))  
     {Plr->_ModifySkillMaximum(44, 400);}//Axes  

    if (Plr->_HasSkillLine(45))  
     {Plr->_ModifySkillMaximum(45, 400);}//Bows  

    if (Plr->_HasSkillLine(46))  
     {Plr->_ModifySkillMaximum(46, 400);}//Guns  

    if (Plr->_HasSkillLine(54))  
     {Plr->_ModifySkillMaximum(54, 400);}//Maces  

    if (Plr->_HasSkillLine(95))  
     {Plr->_ModifySkillMaximum(95, 400);}//Defense  

    if (Plr->_HasSkillLine(136))  
     {Plr->_ModifySkillMaximum(136, 400);}//Staves  

    if (Plr->_HasSkillLine(160))  
     {Plr->_ModifySkillMaximum(160, 400);}//Two-Handed Swords  

    if (Plr->_HasSkillLine(162))  
     {Plr->_ModifySkillMaximum(162, 400);}//Unarmed  

    if (Plr->_HasSkillLine(172))  
     {Plr->_ModifySkillMaximum(172, 400);}//Two-Handed Axes  

    if (Plr->_HasSkillLine(173))  
     {Plr->_ModifySkillMaximum(173, 400);}//Daggers  

    if (Plr->_HasSkillLine(176))  
     {Plr->_ModifySkillMaximum(176, 400);}//Thrown  

    if (Plr->_HasSkillLine(226))  
     {Plr->_ModifySkillMaximum(226, 400);}//Crossbows  

    if (Plr->_HasSkillLine(228))  
     {Plr->_ModifySkillMaximum(228, 400);}//Wands  

    if (Plr->_HasSkillLine(229))  
     {Plr->_ModifySkillMaximum(229, 400);}//Polearms  

    if (Plr->_HasSkillLine(473))  
     {Plr->_ModifySkillMaximum(473, 400);}//Fist Weapons  
       
    if (Plr->_HasSkillLine(633))  
     {Plr->_ModifySkillMaximum(633, 400);}//Lockpicking  
        Plr->Gossip_Complete();  
}  

     else if (Plr->getClass() == IntId)  
     {      
      Plr->BroadcastMessage("ERROR: You are already that class, please choose other class!");  
      Plr->Gossip_Complete();  
     }  
    }break;  

   }  
};  

void ClassChangerNPC::GossipEnd(Object * pObject, Player* Plr)  
{  
      GossipScript::GossipEnd(pObject, Plr);  
}  

void SetupClassChangerNPC(ScriptMgr * mgr)  
{  
   GossipScript * gs = (GossipScript*) new ClassChangerNPC();  
      mgr->register_gossip_script(CHANGE_CLASS_NPC, gs);  
}


Продается аккаунт
 
  • Страница 1 из 1
  • 1
Поиск: