Advertisement
Rochet2

customizer npc

Aug 21st, 2012
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "ScriptPCH.h"
  2.  
  3. #define TOKEN 123123 // token entry here
  4.  
  5. class CUSTOMIZE_NPC : public CreatureScript
  6. {
  7. public:
  8.     CUSTOMIZE_NPC() : CreatureScript("CUSTOMIZE_NPC") { }
  9.  
  10.     bool OnGossipHello(Player* player, Creature* creature)
  11.     {
  12.         player->ADD_GOSSIP_ITEM( GOSSIP_ICON_CHAT, "Rename 1500 tokens",            1500, AT_LOGIN_RENAME           );
  13.         player->ADD_GOSSIP_ITEM( GOSSIP_ICON_CHAT, "Change appearance 1500 tokens", 1500, AT_LOGIN_CUSTOMIZE        );
  14.         player->ADD_GOSSIP_ITEM( GOSSIP_ICON_CHAT, "Change race 1000 tokens",       1000, AT_LOGIN_CHANGE_RACE      );
  15.         player->ADD_GOSSIP_ITEM( GOSSIP_ICON_CHAT, "Change faction 1000 tokens",    1000, AT_LOGIN_CHANGE_FACTION   );
  16.         player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
  17.         return true;
  18.     }
  19.  
  20.     bool OnGossipSelect(Player* player, Creature* creature, uint32 tokens, uint32 action)
  21.     {
  22.         player->PlayerTalkClass->ClearMenus();
  23.         AtLoginFlags flag = (AtLoginFlags)action;
  24.  
  25.         if(player->HasAtLoginFlag(flag))
  26.             player->GetSession()->SendNotification("Already bought! Relog to use");
  27.         else if(!player->HasItemCount(TOKEN, tokens))
  28.             player->GetSession()->SendNotification("Not enough tokens");
  29.         else
  30.         {
  31.             player->DestroyItemCount(TOKEN, tokens, true);
  32.             if(flag == AT_LOGIN_RENAME)
  33.                 player->SetAtLoginFlag(AT_LOGIN_RENAME);
  34.             else
  35.             {
  36.                 PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG);
  37.                 stmt->setUInt16(0, uint16(flag));
  38.                 player->SetAtLoginFlag(flag);
  39.                 stmt->setUInt32(1, player->GetGUIDLow());
  40.                 CharacterDatabase.Execute(stmt);
  41.             }
  42.             char* msg = "";
  43.             switch(flag)
  44.             {
  45.             case AT_LOGIN_RENAME:           msg = "Relog to change name";           break;
  46.             case AT_LOGIN_CUSTOMIZE:        msg = "Relog to change appearance";     break;
  47.             case AT_LOGIN_CHANGE_RACE:      msg = "Relog to change race";           break;
  48.             case AT_LOGIN_CHANGE_FACTION:   msg = "Relog to change faction";        break;
  49.             }
  50.             player->GetSession()->SendAreaTriggerMessage(msg);
  51.             ChatHandler(player).PSendSysMessage(msg);
  52.         }
  53.         OnGossipHello(player, creature);
  54.         return true;
  55.     }
  56. };
  57.  
  58. void AddSC_CUSTOMIZE_NPC()
  59. {
  60.     new CUSTOMIZE_NPC();
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement