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

Gaikotsu

Постоялец
  • Публикаций

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

  • Посещение

  • Победитель дней

    61
  • Отзывы

    0%

Весь контент Gaikotsu

  1. Gaikotsu

    .acp как соулшоты

    на тогглах как раз таки и самый простой и быстрый способ запилить нормальное ацп
  2. Переполнение буфера данных пакета. Как вариант хтмлка слишком большая.
  3. код в блокноте чтоли пишется? Мне вот что интерестно - религия чтоли не позволяет пользоваться эклипсом/идеей, в которых подобыне проблемы, типа неправильных импортов, исправляются на раз, т.к. сама IDE подскажет набиболее вероятные правильные импорты.
  4. Доработать указанный класс, чтобы исключал ид проф 58-87, 119-122 ибо это ид-пустышки, не используемые ни одной из проф.
  5. эм... неужели в этом вашем пвсофт для суммонов не обрабатывается телепортация их хозяина? по моему даже в самых ущербных сборках для суммонов/петов есть обработка события "хозяин телепортировался", телепортирующий суммонов/петов за хоязином.
  6. Брать что-то с исходниками и допиливать до нужных хроник. Я в свое время так и поднимал сырцы одной сборки полухармони/полутаути сначала до линдвиора, а потом уже и до артеи. А готовые сборки в состоянии "все работает" ты в шаре не найдешь.
  7. Gaikotsu

    кнопки диалогов

    public static enum ButtonType { SMALL("L2UI_CT1.Button_DF_Small", "L2UI_CT1.Button_DF_Small_Down", -1, 24), NORMAL("L2UI_CT1.Button_DF", "L2UI_CT1.Button_DF_Down", -1, 26), LARGE("L2UI_CT1.Button_DF_Large", "L2UI_CT1.Button_DF_Large_Down", -1, 35), UP("L2UI_CH3.UpButton", "L2UI_CH3.upbutton_down", 15, 15), DOWN("L2UI_CH3.DownButton", "L2UI_CH3.downbutton_down", 15, 15), PREV("L2UI_CH3.prev1", "L2UI_CH3.prev1_down", 15, 15), NEXT("L2UI_CH3.next1", "L2UI_CH3.next1_down", 15, 15), ABOUT("L2UI_CH3.aboutotpicon", "L2UI_CH3.aboutotpicon_down", 15, 15), INPUT("L2UI_CT1.Button_DF_Input", "L2UI_CT1.Button_DF_Input_Down", 15, 15), LIST("L2UI_CT1.PostWnd_DF_Btn_List", "L2UI_CT1.PostWnd_DF_Btn_List_Down", 15, 15), OLYMPIAD_APPLY("L2UI_CT1.OlympiadWnd_DF_Apply", "L2UI_CT1.OlympiadWnd_DF_Apply_Down", 197, 29), OLYMPIAD_BACK("L2UI_CT1.OlympiadWnd_DF_Back", "L2UI_CT1.OlympiadWnd_DF_Back_Down", 197, 29), OLYMPIAD_BUY_EQUIP("L2UI_CT1.OlympiadWnd_DF_BuyEquip", "L2UI_CT1.OlympiadWnd_DF_BuyEquip_Down", 197, 29), OLYMPIAD_BUY_ETC("L2UI_CT1.OlympiadWnd_DF_BuyEtc", "L2UI_CT1.OlympiadWnd_DF_BuyEtc_Down", 197, 29), OLYMPIAD_FIGHT_1("L2UI_CT1.OlympiadWnd_DF_Fight1None", "L2UI_CT1.OlympiadWnd_DF_Fight1None_Down", 197, 29), OLYMPIAD_FIGHT_3("L2UI_CT1.OlympiadWnd_DF_Fight3None", "L2UI_CT1.OlympiadWnd_DF_Fight3None_Down", 197, 29), OLYMPIAD_HERO_CONFIRM("L2UI_CT1.OlympiadWnd_DF_HeroConfirm", "L2UI_CT1.OlympiadWnd_DF_HeroConfirm_Down", 197, 29), OLYMPIAD_INFO("L2UI_CT1.OlympiadWnd_DF_Info", "L2UI_CT1.OlympiadWnd_DF_Info_Down", 197, 29), OLYMPIAD_REWARD("L2UI_CT1.OlympiadWnd_DF_Reward", "L2UI_CT1.OlympiadWnd_DF_Reward_Down", 197, 29), OLYMPIAD_WATCH("L2UI_CT1.OlympiadWnd_DF_Watch", "L2UI_CT1.OlympiadWnd_DF_Watch_Down", 197, 29); private final String _foreTexture; private final String _backTexture; private final int _width; private final int _height; private ButtonType(String foreTexture, String backTexture, int width, int height) { _foreTexture = foreTexture; _backTexture = backTexture; _width = width; _height = height; } public String getForeTexture() { return _foreTexture; } public String getBackTexture() { return _backTexture; } public int getWidth(int width) { return _width > 0 ? _width : width; } public int getHeight(int height) { return _height > 0 ? _height : height; } } ну тут само собой далеко не все + не все из этого могут быть в хрониках которые ты юзаешь З.Ы. можете спросить на кой этот изврат с энумом? дык чтоб на лету генерить кнопки нужного вида и при этом не писать кучу хтмл-кода, в просто писать что-то типа HtmlUtils.button(ButtonType.SMALL, "Вкл.", "bypass -h admin_event_start " + event.getImpl(), 40); и получать готовый код для кнопки.
  8. :рукалицо: З.Ы. но вы продолжайте, продолжайте - иногда весело всякий бред почитать.
  9. Опираться на мозги и прямые руки. Понять как писать новые инстансы можно изучив реализацию уже имеющихся - это самый простой путь.
  10. Gaikotsu

    Проблема с bypass

    у твоего другого нпс должен быть такой же класс как у старого или же с наследованием от оного.
  11. Gaikotsu

    Пойду учиться!

    Я даже не знаю - смеяться с этой темы или же плакать...
  12. Для примера можно посмотреть реализацию клан гейта, правда я не помню - была ли уже эта функция в интерлюде.
  13. Gaikotsu

    Проблема с Fear

    :рукалицо: ты хоть понял что ты посоветовал? ты посоветовал убрать из проверок на возможность кастовать и атаковать проверку на наличие наложенного фира. т.е. если нигде более нет доп проверок на эту тему - под наложенным фиром после твоего фикса можно будет кастовать скиллы и т.д.
  14. Gaikotsu

    Проблема с Fear

    какой п...цкод сообщением выше - не лучше. автор, сомтри как феар реализован в овероподобных сборках, а конкретно расчет движения и пробуй адаптировать под свою сборку package l2p.gameserver.skills.effects; import l2p.gameserver.ai.CtrlIntention; import l2p.gameserver.geodata.GeoEngine; import l2p.gameserver.model.Effect; import l2p.gameserver.model.Player; import l2p.gameserver.model.entity.events.impl.SiegeEvent; import l2p.gameserver.model.instances.SummonInstance; import l2p.gameserver.network.serverpackets.components.SystemMsg; import l2p.gameserver.stats.Env; import l2p.gameserver.utils.PositionUtils; public final class EffectFear extends Effect { public static final double FEAR_RANGE = 900; public EffectFear(Env env, EffectTemplate template) { super(env, template); } @[member='override'] public boolean checkCondition() { if (_effected.isOutOfControlImmune()) { getEffector().sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET); return false; } // Fear нельзя наложить на осадных саммонов Player player = _effected.getPlayer(); if (player != null) { SiegeEvent<?, ?> siegeEvent = player.getEvent(SiegeEvent.class); if (_effected.isServitor() && siegeEvent != null && siegeEvent.containsSiegeSummon((SummonInstance) _effected)) { getEffector().sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET); return false; } } if (_effected.isInPeaceZone()) { getEffector().sendPacket(SystemMsg.YOU_MAY_NOT_ATTACK_IN_A_PEACEFUL_ZONE); return false; } return super.checkCondition(); } @[member='override'] public void onStart() { super.onStart(); if (!_effected.startFeared()) { if (_effected.isServitor()) _effected.saveAttackTarget(); _effected.abortAttack(true, true); _effected.abortCast(true, true); _effected.stopMove(); } onActionTime(); } @[member='override'] public void onExit() { super.onExit(); _effected.stopFeared(); _effected.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE); if (_effected.isServitor()) _effected.restoreAttackTarget(); } @[member='override'] public boolean onActionTime() { final double angle = Math.toRadians(PositionUtils.calculateAngleFrom(_effector, _effected)); final int oldX = _effected.getX(); final int oldY = _effected.getY(); final int x = oldX + (int) (FEAR_RANGE * Math.cos(angle)); final int y = oldY + (int) (FEAR_RANGE * Math.sin(angle)); _effected.setRunning(); _effected.moveToLocation(GeoEngine.moveCheck(oldX, oldY, _effected.getZ(), x, y, _effected.getGeoIndex()), 0, false); return true; } } что представляет собой calculateAngleFrom public static double calculateAngleFrom(GameObject obj1, GameObject obj2) { return calculateAngleFrom(obj1.getX(), obj1.getY(), obj2.getX(), obj2.getY()); } public static double calculateAngleFrom(int obj1X, int obj1Y, int obj2X, int obj2Y) { double angleTarget = Math.toDegrees(Math.atan2(obj2Y - obj1Y, obj2X - obj1X)); if (angleTarget < 0) angleTarget = 360 + angleTarget; return angleTarget; }
  15. а зачем вводить отдельные предметы и модифицировать клиент на эту тему, если можно обойтись без этого?
  16. hardcode way наше все З.Ы. это сарказм, если что
  17. как вариант не под той версией явы запускаешь, если у тебя их стоит несколько в системе в этом случае указывай полностью путь до нужной java.exe
  18. И причем интересно тут мульттиселлы? если список наносимых красок у татуировщика вобще-то не мультиселл, а отдельный список, генерируемый отлеьным пакетом.
  19. ну так собери из class-файлов jar если делаешь компиляцию при помощи инструкций в build.xml или подобном, то в нем добавь еще операцию по сбору компиленного в jar
  20. ни сборки ни еще каких подоробностей... а вобще если у тебя такое поведение в мультиселах, то тебе только один путь - лезть в исходники ядра и дорабатывать процесс покупки/продажи через мультиселы.
  21. 1. запускаю сервер в режиме отладки непосредственно в IDE, таким образом все изменения в коде сразу же вносятся в работающий сервер. Рассинхронизация и значит невозможность применить изменения обычно происходят только при достаточно серьезных изменениях кода, так что в целом рестартить сервер для их применения приходится редко. 2. работаю в эклипсе, в идее наверняка тоже есть возможность запускать сервер в режиме отладки.
  22. Вопрос не очень понятен. где получить objId, когда, зачем?
  23. но вобще-то это неправильно. сам сервер на ссылку [npc_%objectId%_Quest|Квест] должен был отправить в onTalk на: 1. в случае когда квест не взят в ветку if(cond == 0) 2. если квест взят то на другие варианты, в зависимости от текущего cond а ссылки типа [npc_%objectId%_Quest имя квеста параметры|бла-бла] отправляют в onEvent, а не в onTalk З.Ы. за поаторяемость квеста отвечает параметр метода exitCurrentQuest - если в нем задавать true, то все записи о квесте стирает при окончании квеста и значит квест типа можно снова повторить, если false, то по завершении все стирает но после оставляет одну запись с состоянием квеста, в котором выставляет статус "завершено". есть еще один вариант, но тебе он в данный момент не нужен - я про квесты делающиеся раз в сутки.
  24. не знаю как там в ваших люцерах, но в том же овере/фениксе цвета имени/титула - это обычное десятичное число. и причем здесь RGB? если ты про представление цвета в виде RRGGBB, то это опять же всего навсего число в хексе, т.к. в хексе как раз удобно (и наглядно) задавать значения количества трех основных цветов в конечном цвете. З.Ы. и кстати если что, в линейке используется "перевернутое" значение цвета, не RGB, а BGR.
×
×
  • Создать...