Перейти к содержанию

Anon

Пользователи
  • Публикаций

    23
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Репутация

2

2 Подписчика

Информация о Anon

  • Звание
    Только пришел

Информация

  • Пол
    Мужчина

Контакты

  • ICQ
    499-477-798
  1. Anon

    Synchronized В Сборках

    Насколько мне известно, пакеты отправляются в отдельном потоке, когда обновление базы происходит в том же самом. Учитывая что JVM необходимо некоторое время на создание потока, его запуск и исполнение инструкций, то как ни крути запись в БД произойдет раньше, да и к тому же что отправка пакета, что запись в БД, будет требовать от класса только "get" методы. Т.е. информация, что в пакете уйдет клиенту, что будет записываться в БД одинаковая. Но есть интересный вопрос в таком случае. Каким обзаром синхронизация метода updateDatabase в классе L2ItemInstance спасет от того, что если один поток вошел в синхронизированный метод updateDatabase, а другой параллельный поток в этот момент взял и воспользовался например методом setCount, тем самым изменив значения количества предмета. Получается, что в таком случае в БД может записаться одно значение, а вот уже пакетом информация к клиенту уйдет с другим значением.
  2. Здравствуйте. Было замечено, что у некоторых методах, например в L2ItemInstance, метод updateDatabase синхронизирован. Вопрос1: целесообразно использовать synchronized в методах, которые считывают/записывают данные в MySQL базу? Вопрос2: в каких ещё случаях в сборках может потребоваться использовать synchronized?
  3. Спасибо за направление. Дело действительно оказалось в файле "hennagrp-e.dat" 2 параметра(id и dye_id) в этом файле не совпадали с теми что я завел в базу и в 2 других файла клиента(ItemName-e.dat и etcitemgrp.dat)
  4. Я раньше всегда этот параметр использовал, пока не стал все диалоги в community переделывать и все нормально работало. и что ты имел ввиду говоря
  5. Если в этом меню выбрать саму краску или нажать на крестик вверху справа Выкидывает из клиента с такой ошибкой Из-за чего такое может быть?
  6. Проблему решил своими силами. Если кто-то сталкнется с подобной проблемой, то дело в следующем: <a action="bypass -h xxxxxx">ссылка</a> Убираем из команды параметр "-h", чтобы получилось <a action="bypass xxxxxx">ссылка</a> и проблема решена.
  7. Во-первых, на странице нет никаких текстур, там только текст. Во-вторых, страница не не открывается, а просто не показывает сразу текст на ней. Показывает только если нажать на вкладку сверху любую. Сервером, ни как не обрабатываются команды приходящие от клиента при нажатии на вкладки сверху. Поэтому я и не могу понять почему после того как я перешел на другую страницу там пусто и чтобы отобразился текст необходимо сделать впринципе "пустое" действие, которое никак сервером не обрабатывается.
  8. Проблема: Если нажать на кнопку для перехода на другую страницу, то, почему-то получаю пустую страницу Но, если нажать снова например на "ТОП" То страница прекрасным образом отображается. Вопрос: Как избежать этого тыкания на верхние кнопки, чтобы текст после нажатия на кнопку сразу отображался?
  9. Anon

    Walkerai + Attackai

    А почему у тебя setIntention(CtrlIntention.AI_INTENTION_ATTACK); закоменчено? Оно вообще у тебя должно выглядеть как setIntention(CtrlIntention.AI_INTENTION_ATTACK, player, 1); Насколько я осведомлен, последняя цыфра в этом setIntention записывает в агролист игрока, а параментр player нужен для того чтобы АИ знало кого ему атаковать и что _log.info("ATTACK"); не выводит инфу что условия удовлетворяют? а _log.info("ATTACK_OFF"); перемести до условий вот так @Override protected void thinkAttack() { _log.info("ATTACK_OFF"); if (player.isPlayer() && !player.isInRange(loc, 300)) { Чтобы убедиться что АИ сюда вообще попадает
  10. Anon

    Walkerai + Attackai

    Так в чем проблема после входа в метод thinkActive делай что я писал выше про поиск игроков через KnownList что-то типо for (L2PcInstance player : getActor().getKnowList().getKnownPlayerInRadius(2000)) { setIntention(CtrlIntention.AI_INTENTION_ATTACK, player); } реализовывай thinkAttack() а возврат из него делай что-то типо того же самого, только в обратном смысле если игроков нет в радиусе if (getActor().getKnowList().getKnownPlayerInRadius(2000)).isEmpty()) { setIntention(CtrlIntention.AI_INTENTION_ACTIVE); }
  11. Anon

    Walkerai + Attackai

    Я так понял у тебя он CtrlIntention.AI_INTENTION_ACTIVE занимается тем что бегает и с этим проблем нет. Незнаю как там код устроен, но могу посоветовать сделай проверку переходит ли моб которого ты бьешь в другой АИ или только в активе и остается? 1. Сперва вычесли какой objectId моба, можешь сдлеать это через метод setTarget присав себе туда System.out.println(target.getObjectId()) 2. узнав ид моба там где происходит setIntention в АИ делай проверку if (getActor().getObjectId() == ид который узнал) { System.out.println(Intention) } вывод System.out.println(Intention) для того чтобы понять в какой АИ он переходит.
  12. Anon

    Walkerai + Attackai

    А Instance у твоего моба какой? Просто в Instance есть ещё такой метод как isAttackeble() он переопределяется, возможно в Instance под которым у тебя моб бегает этот метод возвращает false и тогда мобу хоть на прямую говори чтобы он бил он бить не будет
  13. Выложи текст ошибки на что компилятор ругается
  14. Anon

    Walkerai + Attackai

    Как вариант можешь когда моб должен идти к новой точке или когда прибежит на точку, делать проверку из KnownList'а типо если в радиусе N есть игроки или игрок бежать бить его. Заставить бить можно хоть напримую через присвоение АИ статуса атаки, либо через методы типо isAutoAttackable(target);
  15. Anon

    Анимация Ударов

    В любом случае все сводится к редактированию клиента. Спасибо за направление. Думаю оставлю все как есть.
×
×
  • Создать...