• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Форум » Корзина форума » Корзина » Деспавн моба при выхода игроки из игры (внимание: ядро)
Деспавн моба при выхода игроки из игры
Vitalya7
Ну просто умничка=))
Всем привет, попытался написать код, который будет отзывать моба, если игрок, находящийся в определенной зоне и определенной области выходит из игры. Не знаю , будет ли он работать , 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
Сообщение # 1 отредактировано Vitalya7 - Пятница, 29.03.2013, 02:09
Tw1nk_1
Представитель WoWCircle.com
Цитата
float x = player->GetPositionX();
float y = player->GetPositionX();
float z = player->GetPositionX();


Как же так? smile

Цитата
if ((map->GetAreaId(x,y,z) == 2177) && ((map->GetZoneId(x,y,z) == 5287) || (map->GetZoneId(x,y,z) == 33)))


забавно выйдет wink

Разработка сайтов и любой графики.
Создание серверов и улучшение вашего сервера.
Сообщение # 2 отредактировано Tw1nk_1 - Пятница, 29.03.2013, 01:49
Vitalya7
Ну просто умничка=))
Цитата (Tw1nk_1)
Как же так?

вот я дурачок) накопипастил и забыл х на y и z поменять)))) Спасибо , щас пробну

Добавлено (29.03.2013, 02:09)
---------------------------------------------
Но так тогда краш(((

Сообщение # 3 написано 29.03.2013 в 02:09
Tw1nk_1
Представитель WoWCircle.com
ну гадать на кофейной гуще не охота, крашлог кидай smile

Разработка сайтов и любой графики.
Создание серверов и улучшение вашего сервера.
Сообщение # 4 отредактировано Tw1nk_1 - Пятница, 29.03.2013, 02:12
Прадмур
~
Если нужно деспавнить призванного моба, когда игрок выйдет из игры, то не лучше ли обработать это через EnterEvadeMode в скрипте моба?
[судя по коду выходит предположение, что на этого моба кто-то должен был нападать, поэтому и такой вывод]
Сообщение # 5 отредактировано Прадмур - Пятница, 29.03.2013, 03:41
Tw1nk_1
Представитель WoWCircle.com
По поводу твоего кода, вполне возможно, что во время логаута игрок уже вышел из этой карты и гетнуть так карту не выйдет. Тебе нужно придумать другие методы для поиска координат, чем геттер карты .

Разработка сайтов и любой графики.
Создание серверов и улучшение вашего сервера.
Сообщение # 6 написано 29.03.2013 в 03:39
Vitalya7
Ну просто умничка=))
Цитата (Tw1nk_1)
По поводу твоего кода, вполне возможно, что во время логаута игрок уже вышел из этой карты и гетнуть так карту не выйдет. Тебе нужно придумать другие методы для поиска координат, чем геттер карты .

нууу, данные о мапе хранятся в тиблице characters , и на стадии выхода игрока OnLogout , все равно должно брать данные. Ну да ладно, а что скажите насчет функции
Код
player->FindNearestCreature
?
Сообщение # 7 написано 29.03.2013 в 11:23
_dm666
<3 Death Metal
А если попробовать сделать поиск игрока НИПом в определенном радиусе?
Сообщение # 8 написано 29.03.2013 в 12:22
Vitalya7
Ну просто умничка=))
Цитата (std_Suicide)
А если попробовать сделать поиск игрока НИПом в определенном радиусе?

подскажи пожалуйста функцию эту, на будущее) А так , я с Neket007 уже решил эту проблему)
Сообщение # 9 написано 29.03.2013 в 12:56
_dm666
<3 Death Metal
me->IsWithinDistInMap
в ф-цию void MoveInLineOfSight(Unit *who)
Сообщение # 10 написано 29.03.2013 в 13:42
Vitalya7
Ну просто умничка=))
Благодарю , очень пригодилось)
Сообщение # 11 написано 29.03.2013 в 14:36
Dimitro
Praise the sun!
Данная тема была перемещена из раздела [TrinityCore] Help.
Причина перемещения: Ответы даны.

Переместил: Dimitro.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 12 отредактировано Dimitro - Пятница, 12.04.2013, 02:28
Форум » Корзина форума » Корзина » Деспавн моба при выхода игроки из игры (внимание: ядро)
  • Страница 1 из 1
  • 1
Поиск: