|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум » Корзина форума » Корзина » Деспавн моба при выхода игроки из игры (внимание: ядро) |
Деспавн моба при выхода игроки из игры |
Всем привет, попытался написать код, который будет отзывать моба, если игрок, находящийся в определенной зоне и определенной области выходит из игры. Не знаю , будет ли он работать , MVS ругается , что переменная Map* map неинициализирована. И если я что-то не так написал , то подскажите , как исправить , и туда ли я копаю вообще? P.S. на запрос в таблицу BattleGuild_activate не обращайте внимания, т.к. это мне тоже нужно залить , при выходе игрока. Вот мой код: на paste2.org
и тут: Код #include "ScriptPCH.h" class player_battleguild : public PlayerScript { public: player_battleguild() : PlayerScript("player_battleguild") {} void OnLogout(Player* player) { Map* map = player->GetMap(); float x = player->GetPositionX(); float y = player->GetPositionY(); float z = player->GetPositionZ(); uint32 guid; if ((player->GetAreaId() == 2177) && ((player->GetZoneId() == 5287) || (player->GetZoneId() == 33))) { uint32 status; QueryResult result2; result2 = CharacterDatabase.PQuery("UPDATE `BattleGuild_activate` SET `status` = 0"); if(result2) { Field *fields = result2->Fetch(); status = fields[0].GetUInt32(); } if ((map->GetAreaId(x,y,z) == 2177) && ((map->GetZoneId(x,y,z) == 5287) || (map->GetZoneId(x,y,z) == 33))) { QueryResult result3; result3 = WorldDatabase.PQuery("SELECT `guid` FROM `creature` WHERE `id` = 600500"); if(result3) { Field *fields = result3->Fetch(); guid = fields[0].GetUInt32(); } map->GetCreature(guid)->DespawnOrUnsummon(); } } } }; void AddSC_player_battleguild() { new player_battleguild(); } Добавлено (29.03.2013, 00:45) --------------------------------------------- up |
Цитата float x = player->GetPositionX(); float y = player->GetPositionX(); float z = player->GetPositionX(); Как же так? Цитата if ((map->GetAreaId(x,y,z) == 2177) && ((map->GetZoneId(x,y,z) == 5287) || (map->GetZoneId(x,y,z) == 33))) забавно выйдет |
Если нужно деспавнить призванного моба, когда игрок выйдет из игры, то не лучше ли обработать это через EnterEvadeMode в скрипте моба?
[судя по коду выходит предположение, что на этого моба кто-то должен был нападать, поэтому и такой вывод] |
Сообщение # 6 написано 29.03.2013 в 03:39
|
Цитата (Tw1nk_1) По поводу твоего кода, вполне возможно, что во время логаута игрок уже вышел из этой карты и гетнуть так карту не выйдет. Тебе нужно придумать другие методы для поиска координат, чем геттер карты . нууу, данные о мапе хранятся в тиблице characters , и на стадии выхода игрока OnLogout , все равно должно брать данные. Ну да ладно, а что скажите насчет функции Код player->FindNearestCreature
Сообщение # 7 написано 29.03.2013 в 11:23
|
Данная тема была перемещена из раздела [TrinityCore] Help.
Причина перемещения: Ответы даны. Переместил: Dimitro.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
| |||
| |||