↑ ↓

NPC и геодата

Тема в разделе "Помощь", создана пользователем meridianblade, 13 дек 2017.

  1. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Всем доброго дня, у меня возник вопрос по внутренностям сервера. Решил я на досуге изучить java и покопать сборку Please login or register to view links, первый раз взялся изучать сервер айона, да и вообще сервер, и решил сразу же делом попытаться пофиксить известный мне баг, а именно: моб встает на одно место и не двигается/атакует после того, как 2 раза с коротким интервалом (где-то <3 сек) отагрится за препятствием, параметр cansee в geoКонфиге.
    Изучая структуру сервера, я пришел к выводу, что за поведение нпс отвечает некий ai2, но когда я закоментил все строки, которые отсылали к геодате и ничего не поменялось (мобы вели себя так, как будто геодата включена). Ну думаю ладно, попробую пойти от обратного, нашел единственный в сборке GeoService, в котором используется параметр cansee из конфигов, в нем был метод, который рассчитывает возможность видимости цели в игре. Что бы подтвердить свою догадку, я скомпилил сервер и в методе с расчетами стер всё, и поставил всегда true на выдачу.
    Захожу на сервер, и что я вижу? Ничего не поменялось! Мобы как отагривались за стенами, так и отагриваются, выключаю cansee в конфигах и перестают отагриватся, т.е. мои манипуляции не дали никакого эффекта.
    Так вот, скажите пожалуйста, как вообще связаны поведение мобов и геодата в сервере айона?
     
  2. Offline

    romanz Ефрейтор Модератор

    743
    165
    76
    Кредиты:
    $26.070,43
    Репутация:
    23
    в правильном направлении ищешь , посмотри что в ядре отвечает за вкл\выкл cansee и от него отталкивайся .
    а вообще по сути гео двиг кривой нах (( , нужно полностью переписывать , вроде один чел занялся но хз что получится ( не Алекс )))
     
  3. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    Зависание мобов при частом отагре, это не геодвиг. Если кому-то нужен фикс могу продать, писать в пм :)
     
  4. Offline

    romanz Ефрейтор Модератор

    743
    165
    76
    Кредиты:
    $26.070,43
    Репутация:
    23
    с твоим рейтингом только продавать ))
     
    klubheads нравится это.
  5. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Перекопал весь сервер, но так и не смог понять, как нпс взаимодействуют с геодатой. Какие бы запросы к гео я не перестраивал, даже вручную задавал переменную cansee в конфигах через исходники (убирал считывание с файла), всё равно работает как надо.
     
  6. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    Так а что конкретно ты хочешь?
     
  7. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Хочу сделать так, что бы в конфигах cansee было включено, а на деле не работало. Вроде бы разобрался, что и как связано, но на деле при изменении ничего не происходит. Пытался даже менять GeoDataConfig с
    @Property(key = "gameserver.geodata.cansee.enable", defaultValue = "true")
    public static boolean CANSEE_ENABLE;
    на
    final public static boolean CANSEE_ENABLE=false;
    но в игре ничего не изменилось. Это я уже объяснить не могу, т.к. конфиги больше никуда не пишутся, насколько я понял
     
  8. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    Какие изменения ты хочешь увидеть?) Это проверка на препятствие,если тебе нужно исправить баг с зависанием мобов при частом отагре, это отдельно фиксить во всех сборках. Если ты хочешь чтобы мобы обходили препятствие - такого с роду в шаровых сборках не было никогда. Выруби canSee и мобы будут сквозь тексты ходить, но и игроки смогут дамажить сквозь тексты, тогда какой тебе смысл от гео будет? И что это за наркомания "в конфиге включено а не деле нет" :)
     
  9. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Я понял суть бага, он делает проверку cansee когда моб агрится, т.е. либо момент агра либо начало движения, т.к. если зайти за препятствие когда моб уже начал движение, то он отагрится только когда попытается атаковать/передвигаться ещё в вашу сторону.
    Но проблема в том, что все мои изменения в геосервисе и аи2 вообще не возымели эффекта, хотя я нашёл через компилер все обращения к cansee и почистил их. "в конфиге включено а на деле нет" я пытаюсь сделать, что бы понять, в правильном ли направлении иду
     
  10. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    я если честно не понимаю чем тебе помочь потому что не понимаю что ты хочешь.Перерой всю сборку меняй аи там или сервисы осад может оно тебе поможет, потому что по моему мнению ты лезишь непонятно куда непонятно зачем. Формулируй мысль правильно. Пока
     
  11. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    дай бог терпения...
     
  12. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    это ты про этот рейтинг говоришь, что неучам помогаешь и плюсики ставят? И что-ж это за форум такой хороший что рейтинг здеся имеет значение больше чем рейтинг знаний?)
     
  13. Offline

    klubheads Сержант Команда форума Модератор

    2.005
    354
    189
    Кредиты:
    $2.106,68
    Репутация:
    53
    Please login or register to view links, а сам то ты кто такой ? (хотя я догадываюсь :D)
    Да фикс о котором ты говоришь есть в нормальных сборках и даже в шаре.
     
  14. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    А ты кто ?) епт, было бы что править. Запускаем сборку в отладке, включаем логирование и смотрим по каким причинам моб ведет себя именно так и какие методы в этот момент работают\не работают в сборке. Дальше смотрим что может этому мешать и делаем следующее:
    В MoveTaskManager добавить метод:
    public Creature getCreature(Creature creature) {
    return movingCreatures.get(creature.getObjectId());
    }
    В NpcMoveController в методе moveToTargetObject() под условием if (started.compareAndSet(false, true)) добавляем:
    else if (MoveTaskManager.getInstance().getCreature(owner) == null
    && owner.getAi2().getState() == AIState.FIGHT
    && owner.getTarget() != null) {
    owner.getAi2().onGeneralEvent(AIEventType.TARGET_GIVEUP);
    }
    Сложно пиздец да?
     
  15. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    Тут хоть кто-то на форуме есть кто шарит в Java или все самонедоучки?
     
  16. Offline

    klubheads Сержант Команда форума Модератор

    2.005
    354
    189
    Кредиты:
    $2.106,68
    Репутация:
    53
    Alex тебе скучно ? :LOL:
     
  17. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    ага... спалился (
     
  18. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Проблема, как оказалось, была не в соурсах, а в папке, откуда я запускал клиент. Непонятно откуда, там оказался старый компил сервера под другим названием, и я его долго не замечал, а он всё это время грузился вместо нового, что я скидывал в libs, вот на сервере ничего и не менялось)
     
  19. Offline

    Sikri Рядовой

    28
    1
    22
    Кредиты:
    $107,00
    Репутация:
    0
    это очень хорошо :)
     
  20. TopicStarter Overlay
    Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Запускал сервер*
    Так что прошу прощения за путаницу