kusanagy

Npc Promo

Nov 24th, 2017
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.62 KB | None | 0 0
  1. /*********************
  2. *  Made by: KuSaNaGy *
  3. *********************/
  4.  
  5. #include "ScriptPCH.h"
  6.  
  7. class npc_promo : public CreatureScript
  8.  
  9. {
  10. public:
  11.     npc_promo() : CreatureScript("npc_promo") { }
  12.  
  13.     bool OnGossipHello(Player* player, Creature* creature)
  14.     {
  15.       player->ADD_GOSSIP_ITEM(7, "Seleccione tu Promo: ", GOSSIP_SENDER_MAIN, 99);
  16.         switch (player->getClass())
  17.         {
  18.                 case CLASS_DRUID: player->ADD_GOSSIP_ITEM(10, "Promoción - Druida", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+30); break;
  19.                 case CLASS_SHAMAN: player->ADD_GOSSIP_ITEM(10, "Promoción - Shaman", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+31); break;
  20.                 case CLASS_PALADIN: player->ADD_GOSSIP_ITEM(10, "Promoción - Paladin", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+32); break;
  21.                 case CLASS_WARRIOR: player->ADD_GOSSIP_ITEM(10, "Promoción - Guerrero", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+33); break;
  22.                 case CLASS_PRIEST: player->ADD_GOSSIP_ITEM(10, "Promoción - Sacerdote", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+34); break;
  23.                 case CLASS_DEATH_KNIGHT: player->ADD_GOSSIP_ITEM(10, "Promoción - DK", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+35); break;
  24.                 case CLASS_ROGUE: player->ADD_GOSSIP_ITEM(10, "Promoción - Picaro", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+36); break;
  25.                 case CLASS_HUNTER: player->ADD_GOSSIP_ITEM(10, "Promoción - Cazador", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+37); break;
  26.                 case CLASS_MAGE: player->ADD_GOSSIP_ITEM(10, "Promoción - Mago", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+38); break;
  27.                 case CLASS_WARLOCK: player->ADD_GOSSIP_ITEM(10, "Promoción - Brujo", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+39); break;
  28.         }
  29.       player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  30.       return true;
  31.     }
  32.  
  33.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 actions)
  34.     {
  35.         if (player->getLevel() == 1)
  36.         {
  37.             uint32 accountID = player->GetSession()->GetAccountId();
  38.             QueryResult result = CharacterDatabase.PQuery("SELECT COUNT(`guid`) FROM `characters` WHERE `account`=%u", accountID);
  39.             Field *fields = result->Fetch();
  40.             uint32 personajes = fields[0].GetUInt32();
  41.  
  42.             if (personajes == 1)       
  43.                {
  44.                         if (actions == 99)
  45.                         {
  46.                             player->CLOSE_GOSSIP_MENU();
  47.                             return false;
  48.                         }
  49.                         player->GetSession()->SendAreaTriggerMessage("Felicidades!! has obtenido tu Promoción!.");
  50.                   player->GiveLevel(80);
  51.                         player->SetMoney(50000000);
  52.                         switch(actions)
  53.                           {                              
  54.                                   case GOSSIP_ACTION_INFO_DEF+30: // Druid
  55.                                   player->AddItem(200000, 1);
  56.                                   player->AddItem(200000, 1);
  57.                                   player->AddItem(200000, 1);
  58.                                   player->AddItem(200000, 1);
  59.                                   player->AddItem(200000, 1);
  60.                                   break;
  61.  
  62.                                   case GOSSIP_ACTION_INFO_DEF+31: // Shaman
  63.                                   player->AddItem(200000, 1);
  64.                                   player->AddItem(200000, 1);
  65.                                   player->AddItem(200000, 1);
  66.                                   player->AddItem(200000, 1);
  67.                                   player->AddItem(200000, 1);
  68.                                   break;
  69.  
  70.                                   case GOSSIP_ACTION_INFO_DEF+32: // Paladin
  71.                                   player->AddItem(200000, 1);
  72.                                   player->AddItem(200000, 1);
  73.                                   player->AddItem(200000, 1);
  74.                                   player->AddItem(200000, 1);
  75.                                   player->AddItem(200000, 1);
  76.                                   break;
  77.  
  78.                                   case GOSSIP_ACTION_INFO_DEF+33: // Warrior
  79.                                   player->AddItem(200000, 1);
  80.                                   player->AddItem(200000, 1);
  81.                                   player->AddItem(200000, 1);
  82.                                   player->AddItem(200000, 1);
  83.                                   player->AddItem(200000, 1);
  84.                                   break;
  85.  
  86.                                   case GOSSIP_ACTION_INFO_DEF+34: // Priest
  87.                                   player->AddItem(200000, 1);
  88.                                   player->AddItem(200000, 1);
  89.                                   player->AddItem(200000, 1);
  90.                                   player->AddItem(200000, 1);
  91.                                   player->AddItem(200000, 1);
  92.                                   break;
  93.  
  94.                                   case GOSSIP_ACTION_INFO_DEF+35: // DK
  95.                                   player->AddItem(200000, 1);
  96.                                   player->AddItem(200000, 1);
  97.                                   player->AddItem(200000, 1);
  98.                                   player->AddItem(200000, 1);
  99.                                   player->AddItem(200000, 1);
  100.                                   break;
  101.  
  102.                                   case GOSSIP_ACTION_INFO_DEF+36: // Rogue
  103.                                   player->AddItem(200000, 1);
  104.                                   player->AddItem(200000, 1);
  105.                                   player->AddItem(200000, 1);
  106.                                   player->AddItem(200000, 1);
  107.                                   player->AddItem(200000, 1);
  108.                                   break;
  109.  
  110.                                   case GOSSIP_ACTION_INFO_DEF+37: // Hunter
  111.                                   player->AddItem(200000, 1);
  112.                                   player->AddItem(200000, 1);
  113.                                   player->AddItem(200000, 1);
  114.                                   player->AddItem(200000, 1);
  115.                                   player->AddItem(200000, 1);
  116.                                   break;
  117.  
  118.                                   case GOSSIP_ACTION_INFO_DEF+38: // Mage
  119.                                   player->AddItem(200000, 1);
  120.                                   player->AddItem(200000, 1);
  121.                                   player->AddItem(200000, 1);
  122.                                   player->AddItem(200000, 1);
  123.                                   player->AddItem(200000, 1);
  124.                                   break;
  125.  
  126.                                   case GOSSIP_ACTION_INFO_DEF+39: // Warlock
  127.                                   player->AddItem(200000, 1);
  128.                                   player->AddItem(200000, 1);
  129.                                   player->AddItem(200000, 1);
  130.                                   player->AddItem(200000, 1);
  131.                                   player->AddItem(200000, 1);
  132.                                   break;
  133.                            }
  134.                }
  135.                    
  136.                        if (personajes > 1)
  137.                     {
  138.                         player->GetSession()->SendAreaTriggerMessage("La promoción solo es para 1 Personaje por Cuenta.");
  139.                               return true;
  140.                     }
  141.            
  142.             player->CLOSE_GOSSIP_MENU();
  143.         }
  144.         return true;
  145.     }
  146. };
  147.  
  148. void AddSC_npc_promo()
  149. {
  150.     new npc_promo();
  151. }
Add Comment
Please, Sign In to add comment