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

Gaikotsu

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

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

  • Посещение

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

    62
  • Отзывы

    0%

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

  1. Gaikotsu

    Эссенция Хаоса

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

    cron время

    Некоторым походу сложно даже в ту же вики заглянуть... https://ru.wikipedia.org/wiki/Cron
  3. кстати да, мог кто-то приколоться и сделать навешивание AVE с ид 17 при взятии моба в таргет.
  4. я с серверами говноинтерлюда слава богу не работаю. а если уж вобще приспичило сделать так чтобы к примеру глад не лупил с лука слишком сильно - не надо резать глобально ему атаку, полностью портя класс. можно же сделать более изощренно - дать нужным классам доп. пассивку, ослабляющую для этих классов непрофильное оружие, чтобы например глад стрелял из лука в несклько раз медленнее и т.п.
  5. скорее всего автор осознал какой ад ему предстоит хотя бы в плане переделки пакетов и решил что нафиг ему это все надо
  6. Вот после серверов с такими админами, режущими или бустящими определенные классы по причине "мне кажется должно быть не так" и вылезают на нормальных серверах всякие "гуру-игроки" требующие так же порезать или забустить какие-то классы, мотивируя тем что они играли на каком-то там другом сервере и там было именно так.
  7. Пример, для овера package ai; import org.apache.commons.lang3.ArrayUtils; import l2p.commons.util.Rnd; import l2p.gameserver.ai.CtrlEvent; import l2p.gameserver.ai.Fighter; import l2p.gameserver.config.NpcConfig; import l2p.gameserver.model.Creature; import l2p.gameserver.model.instances.NpcInstance; import l2p.gameserver.utils.Location; /** * @[member='Authority'] Gaikotsu */ public class MonsterAttacker extends Fighter { private final int[] _targets; private final int _checkRange; private final int _aggroPoints; private final boolean _ignorePlayerAttacks; public MonsterAttacker(NpcInstance actor) { super(actor); _targets = actor.getParameter("targets", new int[0]); _checkRange = actor.getParameter("checkRange", 2000); _aggroPoints = actor.getParameter("aggroPoints", 100); _ignorePlayerAttacks = actor.getParameter("ignorePlayerAttacks", true); } @[member='override'] protected boolean thinkActive() { NpcInstance actor = getActor(); if (actor.isDead()) return false; for (NpcInstance npc : actor.getAroundNpc(_checkRange, 500)) if (ArrayUtils.contains(_targets, npc.getNpcId())) { if (actor.isImmobilized() && !actor.isInRange(npc, (long) (actor.getPhysicalAttackRange() + npc.getColRadius()))) continue; actor.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, npc, Rnd.get(_aggroPoints, _aggroPoints * 2)); } return super.thinkActive(); } @[member='override'] protected void onEvtAttacked(Creature attacker, int damage) { if (attacker == null || (attacker.isPlayable() && _ignorePlayerAttacks)) return; super.onEvtAttacked(attacker, damage); } @[member='override'] public int getMaxAttackTimeout() { return 0; } @[member='override'] protected boolean maybeMoveToHome() { NpcInstance actor = getActor(); Location pos = Location.findPointToStay(actor, actor.getSpawnedLoc(), 0, NpcConfig.MAX_DRIFT_RANGE); if (!actor.moveToLocation(pos.x, pos.y, pos.z, 0, true) || !actor.isInRangeZ(actor.getSpawnedLoc(), _checkRange)) teleportHome(); else actor.setWalking(); return true; } @[member='override'] protected boolean randomWalk() { return false; } }
  8. так же. по твоему бонус к опыту руны дают каким-то особым способом что ли? если конечно реализацию рун писали не извращенцы, то это так же дается обычным скиллом в предмете-руне.
  9. Gaikotsu

    unhandled action type 1099

    Существует, но только в ГоД+ - это экшн-команда атаки для всех суммонов при мультипризыве на этом то и палятся не особо умные сам понимаешь кто.
  10. я же выше уже написал как такое делается...вот как варианту меня на одном предмете висит такой диалог Книга Жизни Тома: Привет, я Мастер Тома. Позвольте мне дать вам парочку советов. Следуйте им, и вы станете великим старцем, как я... э-э, я имею в виду, станете великим героем! Я написал их прямо тут. Вы сможете найти там советы о том, где охотиться, как получать разные предметы и еще многое многое другое. <button ALIGN=LEFT ICON="NORMAL" action="URL http://google.com">Перейти к книге жизни Тома</button> А основную информацию об игре вы можете узнать, выбрав в основном меню игры пункт *Сервис* > *Помощь*. и вполне себе работает
  11. окей, передал ты на сервер свой url через байпас и дальше что? как ты собрался дальше сервером обратно клиенту сообщать что он должен открыть такой-то адрес в инете? изврщения типа "а я в защиту/экстендер клиента добавлю перехват нужных байпасов или же пакетов от сервера" - не считаются.
  12. :рукалицо: нука, расскажи мне как ты собрался в html-движке клиента выполнять яву?
  13. url !xxx где xxx - номер строки из sysstring с ссылкой. с каких конкретно хроник работает - не в курсе, но в IL вроде такой байпас клиенту неведом. так же в GoD, не помню с какой именно части точно, можно сразу же указывать в этом байпасе ссылку, а не ее номер из sysstring.
  14. потому-что тебе надо писать или например так ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable() { @[member='override'] public void run() { нужный код } }, 60000L, 60000L); или так ThreadPoolManager.getInstance().scheduleAtFixedRate(new MyTask(), 60000L, 60000L);не забыв объявить вызываемый класс MyTask, наследный от Runnable
  15. а что, сам сервер экстрасенсорным методом определит что в конфигах есть новый параметр и его надо использовать в определенных местах?
  16. Делать подобное через квестовые механизмы - это конечно максимум идитотизма нечто...
  17. проверить, не срабатывавет ли эта порнография в расчетах if ((Config.USE_LEVEL_PENALTY) && (skill != null) && (!skill.isItemSkill()) && (skill.getMagicLvl() > 40) && ((attacker instanceof L2PlayableInstance))) { int lvl = attacker.getActingPlayer().getLevel(); int sklvl = skill.getLevel() > 100 ? 76 : skill.getMagicLvl(); if (lvl - sklvl < -2) { damage *= 1 / (skill.getMagicLvl() - lvl); } } или эта if ((!Config.USE_CHAR_LEVEL_MOD) && ((attacker instanceof L2PlayableInstance)) && ((target instanceof L2PlayableInstance))) { damage /= 2.0D; а вобще конечно через задницу все расчеты описаны.
  18. как вариант вызовы определенных эффектов захардкодены где-то еще. И что еще за SoulShot.dat? может имелся в виду SoulShot.int?
  19. необязательно все перекидывать чтобы зря код не дублировать, можно просто зарегав байпас, вызвать там войс команду, дергая там войс-хэндлер с нужными значениями
  20. Gaikotsu

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

    не половина, а 95%
  21. Автор, тебе уже выше зравый совет сказали - не изобретай велосипед, тем более что с твоими познаяниями ничего кроме самоката с квадратными колесами не получится. Возьми уже апнутую до каких нибудь ГоД-хроник сборку и пробуй на базе нее что-то делать. Возьми к примеру отсюда http://forummaxi.ru/topic/55957-архив-исходников-lineage-2-java/ сборку FT - я к приеру примерно с нее же и начинал когда-то делать сервер, сначала глори дейс а потом как-то плавно все перобразовалось в сервер линда (а сейчас уже и в сервер Артеи). Базируется эта сборка на овере, так что все достаточно понятно и привычно. Если там примерно то же самое что и было у меня когда-то в начале, то это сборка для хроник Таути - поднять до Линда 531 протокола - не составит особого труда, расхождений в пакетке там не очень много.
  22. если речь про продажу через мультисел, то параметры fireAttr, waterAttr и т.д. для ноды production
  23. Ну у тебя другая библиотека логгера. По приведенному пути похоже та же что к примеру в фениксе юзалась. ты кстати так и не указал даже что за сборка у тебя. но если сделано по аналогии с фениксом, то поищи у себя в ядре класс ConsoleLogFormatter, а там уже по содержимому понятно что делать.
  24. Ну я же не знаю какую библиотеку логгирования ты используешь в сервере. к примеру в log4j в конфигурационном xml-файле можно указать, каким конкретно классом требуется обрабатывать данные для логгирования к примеру для вывода в консоль испольузется класс org.apache.log4j.ConsoleAppender, делаешь у себя наследный от этого класс, и указываешь его в качестве обработчика а в самом этом классе, в его конструкторе, просто задаешь нужную кодировку - для этого там есть метод setEncoding и всех делов по сути <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss}] %5p %m%n" /> </layout> </appender>
×
×
  • Создать...