Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. void OnGossipSelect(Player* player, Item* item, uint32 sender, uint32 action) override
  2. {
  3. if (sender != GOSSIP_SENDER_MAIN)
  4. return;
  5.  
  6. player->PlayerTalkClass->ClearMenus();
  7.  
  8. QueryResult gossip_item = CharacterDatabase.PQuery("SELECT locname, number FROM characters_save_position WHERE guid = %u", player->GetGUID());
  9. if (!gossip_item)
  10. {
  11. player->CLOSE_GOSSIP_MENU();
  12. ChatHandler(player->GetSession()).PSendSysMessage("У вас нет мест для телепортации");
  13. return;
  14. }
  15. else
  16. {
  17. if (action == GOSSIP_ACTION_INFO_DEF + 1)
  18. {
  19. do
  20. {
  21. Field* fields = gossip_item->Fetch();
  22. const char* gossip_name = fields[0].GetCString();
  23. const int16 gossip_action = fields[1].GetInt16();
  24.  
  25. player->ADD_GOSSIP_ITEM(0, gossip_name, GOSSIP_SENDER_MAIN, gossip_action);
  26. } while (gossip_item->NextRow());
  27. player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
  28. }
  29.  
  30. QueryResult gossip_ = CharacterDatabase.PQuery("SELECT number, mapid, pos_x, pos_y, pos_z, orientation FROM characters_save_position WHERE guid = %u AND number = %u", player->GetGUID(), gossip_action);
  31. if (gossip_)
  32. {
  33. Field* f = gossip_->Fetch();
  34. int16 number = f[0].GetInt16();
  35. if (number == gossip_action)
  36. {
  37. uint32 mapid = f[1].GetInt16();
  38. float pos_x = f[2].GetFloat();
  39. float pos_y = f[3].GetFloat();
  40. float pos_z = f[4].GetFloat();
  41. float orientation = f[5].GetFloat();
  42.  
  43. if (action == gossip_action)
  44. {
  45. player->PlayerTalkClass->ClearMenus();
  46. player->ADD_GOSSIP_ITEM(0, "Телепортироваться", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  47. player->ADD_GOSSIP_ITEM(0, "Удалить", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  48. player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
  49. }
  50.  
  51. if (action == GOSSIP_ACTION_INFO_DEF + 4)
  52. {
  53. player->CLOSE_GOSSIP_MENU();
  54. player->TeleportTo(mapid, pos_x, pos_y, pos_z, orientation);
  55. ChatHandler(player->GetSession()).PSendSysMessage("Вы телепортировались");
  56. }
  57.  
  58. if (action == GOSSIP_ACTION_INFO_DEF + 5)
  59. {
  60. player->CLOSE_GOSSIP_MENU();
  61. CharacterDatabase.PQuery("DELETE FROM characters_save_position WHERE number = %u", gossip_action);
  62. ChatHandler(player->GetSession()).PSendSysMessage("Вы удалили место для телепортации");
  63. }
  64.  
  65. if (action == GOSSIP_ACTION_INFO_DEF + 3)
  66. {
  67. player->CLOSE_GOSSIP_MENU();
  68. }
  69. }
  70. }
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement