Neuronix 6 Опубликовано 4 апреля, 2014 Добрый день! Обращаюсь к опытным товарищам - есть проблема (думаю, что общеизвестная) - на осаде форта человек может кастовать флаг в любой точке При помощи деббагера выяснил, что проблемный участок в классе 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 - т.е. тут тоже все нормально. Может, кто подскажет, куда ковырять? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RastaDev 54 Опубликовано 4 апреля, 2014 (изменено) Добрый день! Обращаюсь к опытным товарищам - есть проблема (думаю, что общеизвестная) - на осаде форта человек может кастовать флаг в любой точке При помощи деббагера выяснил, что проблемный участок в классе 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; } Изменено 4 апреля, 2014 пользователем RastaDev Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neuronix 6 Опубликовано 4 апреля, 2014 Спасибо, я уже во всем разобрался, сейчас все ок. Этот кусок (который есть в Skills) тоже кстати влияет, мне непонятно, почему там getCastRange() вместо угла указан - закомментировал пока. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 5 апреля, 2014 (изменено) ну там ошибка тупейшая, сам в свое время столкнулся с ней - в данном случае в качестве таргета берется сам кастующий и в итоге логично что проверка на расстояние до цели всегда проходит успешно. просто заменить на что-то типа: if (!player.isInRangeZ(flagPole, getCastRange())) { player.sendPacket(SystemMsg.YOUR_TARGET_IS_OUT_OF_RANGE); return false; } Изменено 5 апреля, 2014 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты