Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void OnGossipSelect(Player* player, Item* item, uint32 sender, uint32 action) override
- {
- if (sender != GOSSIP_SENDER_MAIN)
- return;
- player->PlayerTalkClass->ClearMenus();
- QueryResult gossip_item = CharacterDatabase.PQuery("SELECT locname, number FROM characters_save_position WHERE guid = %u", player->GetGUID());
- if (!gossip_item)
- {
- player->CLOSE_GOSSIP_MENU();
- ChatHandler(player->GetSession()).PSendSysMessage("У вас нет мест для телепортации");
- return;
- }
- else
- {
- if (action == GOSSIP_ACTION_INFO_DEF + 1)
- {
- do
- {
- Field* fields = gossip_item->Fetch();
- const char* gossip_name = fields[0].GetCString();
- const int16 gossip_action = fields[1].GetInt16();
- player->ADD_GOSSIP_ITEM(0, gossip_name, GOSSIP_SENDER_MAIN, gossip_action);
- } while (gossip_item->NextRow());
- player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
- }
- 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);
- if (gossip_)
- {
- Field* f = gossip_->Fetch();
- int16 number = f[0].GetInt16();
- if (number == gossip_action)
- {
- uint32 mapid = f[1].GetInt16();
- float pos_x = f[2].GetFloat();
- float pos_y = f[3].GetFloat();
- float pos_z = f[4].GetFloat();
- float orientation = f[5].GetFloat();
- if (action == gossip_action)
- {
- player->PlayerTalkClass->ClearMenus();
- player->ADD_GOSSIP_ITEM(0, "Телепортироваться", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
- player->ADD_GOSSIP_ITEM(0, "Удалить", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
- player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
- }
- if (action == GOSSIP_ACTION_INFO_DEF + 4)
- {
- player->CLOSE_GOSSIP_MENU();
- player->TeleportTo(mapid, pos_x, pos_y, pos_z, orientation);
- ChatHandler(player->GetSession()).PSendSysMessage("Вы телепортировались");
- }
- if (action == GOSSIP_ACTION_INFO_DEF + 5)
- {
- player->CLOSE_GOSSIP_MENU();
- CharacterDatabase.PQuery("DELETE FROM characters_save_position WHERE number = %u", gossip_action);
- ChatHandler(player->GetSession()).PSendSysMessage("Вы удалили место для телепортации");
- }
- if (action == GOSSIP_ACTION_INFO_DEF + 3)
- {
- player->CLOSE_GOSSIP_MENU();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement