Easy
13.03.2011, 17:00
Здравствуйте!
Хотелось бы реализовать возможность распределение игроков в определённом месте по фазам.
то есть что то типо, добавить поле игроку с ИД маски фазы. И когда он попадёт в определённое место, например поставить невидимых нпц, что бы он переносился в эту фазу. Но, перед тем как он уйдёт, фаза восстанавливалась.
Есть несколько мыслей:
1) В плеер апдейт запихнуть проверку, если игрок рядом с нпц, то
if (!player->isMyPhase())
{
if (player возле моба)
{
player->setTempPhase(player->getPhase());
player->setPhase(player->getMyPhase());
plaeyr->setMyPhase(true);
}
}else{
if (player не возле моба)
{
player->setPhase(player->getTempPhase());
player->setMyPhase(false);
}
}
минусы в том, что у каждого игрока будет постоянно проверка if (!player->isMyPhase()), возможно увеличит нагрузку, но главный минус, что вдрур он телепортнётся куда то туда где фаза должна стать другой, не такой как была в самом начале, а после этого выполнится player->setPhase(player->getTempPhase()); что опять собьет фазу :)
2) Написать скрипт мобу, который при попадании в его радиус игрока поставить ему фазу нужную, но как вернуть начальну перед тем как игрок телепортнётся?
3) привязать как то к местности, как это например в борейской тундре на берегу терзающего бича, я не совсем понял как это реализовано, видимо спелл нужно какой-то использовать, тогда вопрос можно ли добавить свой спелл в ядро? если его нет в dbc
Может есть более простой способ?
Хотелось бы реализовать возможность распределение игроков в определённом месте по фазам.
то есть что то типо, добавить поле игроку с ИД маски фазы. И когда он попадёт в определённое место, например поставить невидимых нпц, что бы он переносился в эту фазу. Но, перед тем как он уйдёт, фаза восстанавливалась.
Есть несколько мыслей:
1) В плеер апдейт запихнуть проверку, если игрок рядом с нпц, то
if (!player->isMyPhase())
{
if (player возле моба)
{
player->setTempPhase(player->getPhase());
player->setPhase(player->getMyPhase());
plaeyr->setMyPhase(true);
}
}else{
if (player не возле моба)
{
player->setPhase(player->getTempPhase());
player->setMyPhase(false);
}
}
минусы в том, что у каждого игрока будет постоянно проверка if (!player->isMyPhase()), возможно увеличит нагрузку, но главный минус, что вдрур он телепортнётся куда то туда где фаза должна стать другой, не такой как была в самом начале, а после этого выполнится player->setPhase(player->getTempPhase()); что опять собьет фазу :)
2) Написать скрипт мобу, который при попадании в его радиус игрока поставить ему фазу нужную, но как вернуть начальну перед тем как игрок телепортнётся?
3) привязать как то к местности, как это например в борейской тундре на берегу терзающего бича, я не совсем понял как это реализовано, видимо спелл нужно какой-то использовать, тогда вопрос можно ли добавить свой спелл в ядро? если его нет в dbc
Может есть более простой способ?