Перейти к содержанию
Авторизация  
Neuronix

First-Team, Каст Флага В Любой Точке Осады

Рекомендуемые сообщения

Добрый день!

 

Обращаюсь к опытным товарищам - есть проблема (думаю, что общеизвестная) - на осаде форта человек может кастовать флаг в любой точке

При помощи деббагера выяснил, что проблемный участок в классе TakeFortress:

 

 if(!player.isInRangeZ(target, getCastRange()) || !player.isInRange(target, getCastRange()))
 {
  activeChar.sendPacket(new SystemMessage2(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this));
  return false;
 }

 

По каким-то неведомым причинам, isInRangeZ и isInRange возвращают не False (хотя я убегаю от древка далеко-далеко), в датапаке у скилла Flag Display castRange = 85 - т.е. тут тоже все нормально.

Может, кто подскажет, куда ковырять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

Обращаюсь к опытным товарищам - есть проблема (думаю, что общеизвестная) - на осаде форта человек может кастовать флаг в любой точке

При помощи деббагера выяснил, что проблемный участок в классе TakeFortress:

 

if(!player.isInRangeZ(target, getCastRange()) || !player.isInRange(target, getCastRange()))
{
activeChar.sendPacket(new SystemMessage2(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this));
return false;
}

По каким-то неведомым причинам, isInRangeZ и isInRange возвращают не False (хотя я убегаю от древка далеко-далеко), в датапаке у скилла Flag Display castRange = 85 - т.е. тут тоже все нормально.

Может, кто подскажет, куда ковырять?

попробуй замени проверку эту на вот эту
if(!PositionUtils.isFacing(player, target, getCastRange())){
player.sendPacket(SystemMsg.YOUR_TARGET_IS_OUT_OF_RANGE);
return false;
}

Изменено пользователем RastaDev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, я уже во всем разобрался, сейчас все ок.

Этот кусок (который есть в Skills) тоже кстати влияет, мне непонятно, почему там getCastRange() вместо угла указан - закомментировал пока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну там ошибка тупейшая, сам в свое время столкнулся с ней - в данном случае в качестве таргета берется сам кастующий и в итоге логично что проверка на расстояние до цели всегда проходит успешно.

 

просто заменить на что-то типа:

if (!player.isInRangeZ(flagPole, getCastRange()))
{
	player.sendPacket(SystemMsg.YOUR_TARGET_IS_OUT_OF_RANGE);
	return false;
}

Изменено пользователем Gaikotsu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...