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

Gaikotsu

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

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

  • Посещение

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

    62
  • Отзывы

    0%

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

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

    applyTaxes

    обычно непись привязывается к замку указанием в его свойствах ai-параметра указывающего id замка. еще бывает просто в самом классе типа NpcInstance/MerchantInstance и.д. детектится самый ближайший по координатам замок и идет автоматическая привязка к нему. все зависит от сборки
  3. и зря - это ты сделал так, что у тебя все предметы нпс будут продавать игрокам по 5 аден
  4. ага, так и вижу что прям авторы сборки думали "вот точно кому-то потом потребуется такая фигня - обязательно добавим такое" и вобще куда уж проще то может быть? написать листенер по сути в несколько строк и при старте серва пркреплять его к зоне/зонам с определенным типом или именем.
  5. написать и зарегать листенер для нее и в обработке входа в зону делать что душе угодно. надеюсь у тебя в сборке поддержка таких листенеров имеется. пример простого листенера для овероподобных сборок package listeners.zones; import l2p.commons.util.Rnd; import l2p.gameserver.enums.AbnormalVisualEffect; import l2p.gameserver.enums.ZoneType; import l2p.gameserver.listener.zone.OnZoneEnterLeaveListener; import l2p.gameserver.model.Creature; import l2p.gameserver.model.Zone; import l2p.gameserver.scripts.ScriptFile; import l2p.gameserver.utils.ReflectionUtils; /** * При входе в зону воды вешает на игрока случайный абнормал, меняющий внешний вид одетой брони на купальник, а при выходе из зоны убирает его обратно. * * @author Gaikotsu */ public class WaterZone implements ScriptFile { private static final AbnormalVisualEffect[] _ae = { AbnormalVisualEffect.SHAPE_BIKINI_A, AbnormalVisualEffect.SHAPE_BIKINI_B, AbnormalVisualEffect.SHAPE_BIKINI_C }; private static final ZoneListener _zoneListener = new ZoneListener(); @Override public void onLoad() { for (Zone zone : ReflectionUtils.getZonesByType(ZoneType.water)) zone.addListener(_zoneListener); } @Override public void onReload() {} @Override public void onShutdown() {} public static class ZoneListener implements OnZoneEnterLeaveListener { @Override public void onZoneEnter(Zone zone, Creature cha) { if (!cha.isPlayer()) return; cha.startAbnormalEffect(_ae[Rnd.get(_ae.length)]); } @Override public void onZoneLeave(Zone zone, Creature cha) { if (!cha.isPlayer()) return; for (AbnormalVisualEffect ae : _ae) cha.stopAbnormalEffect(ae); } } }
  6. сделать можно комбинируя 1 и 2 как вариант могу посоветовать за основу взять мои скрипты бз - они достаточно простые и понятные и переработать их под себя можно имея даже базовые познания в HTML/CSS/PHP/JS но сразу предупреждаю, что то что там у меня выложено - это писалось еще под феникс, в котором все требуемые серверные данные хранятся в бд. если необходимо будет парсить данные из овероподобной сборки, то парсеры данных придется почти полностью переписывать, т.к. в таких сборках все нужное лежит в xml-файлах. З.Ы. если что, в шаре у меня есть и более новые версии бз, с переработанными парсерами. но лежат они не на этом форуме.
  7. Даже если запилят двигло на UE4, то графические ресурсы то один фиг будут использовать от старого клиента - врд ли кто возьмется все модели создавать новые и делать новые текстуры. А значит один фиг докопаться повод останется.
  8. Но опять же без фришардов линейка была бы еще одной корейской гриндилкой, о которой почти никто бы не знал за пределами Кореи. Все же фришарды вольно и невольно делали и делают просто огромную рекламу игре.
  9. да никак по сути - один фиг банят как только хоть сколько-то нормальное количество подписчиков в группе появляется. мы дак уже по сути забили на группу в вк, ибо банят слишком быстро...
  10. а, ну может в старых хрониках так называлось - я то глянул в ини от крусейда
  11. user.ini выставить для нужных вариантов FixedDefaultCameraMaxDist большое значение, к примеру 65535
  12. Чет меня терзают подозрения что медленная работа с бд в наличии. и все фризится из-за того что одномоментно идет куча запросов в бд на изменение инфы о предметах. А если еще там на каждое обращение в бд идут действия "соединение с бд -> запрос -> закрытие соединения", то тут еще и может упереться в лимит соединений. Т.е. части запросов к бд еще и придется ждать своей очереди на освобожденные коннекты
  13. потому что корейцы при реализации показа анимаций каста и т.п. не рассчитывали на извращенцев, которым вздумается обходить официальное ограничение в 1999 скорости каста.
  14. я так подозреваю там сделан костыль, в виде того что одетое в слот нижнего белья на самом деле модифицирует отображаемые ид других слотов эквипа. в любом случае изменение внешнего вида эквипа через одевание отдельного итема в какой-то слот - это кривой костыль в плане реализации функции смены внешнего вида, т.к. слот то может и для чего друго понадобиться. если уж реализовывать подобное, то за основу можно взять офф реализацию подобного функционала, появившуюся с глори дейс - у предметов просто появилось еще одно свойство, где можно хранить ид внешнего вида, и при его наличии - оно и шлется в CI / UI. Конечно там для этого выделены отдельные поля в пакетах, то в ХФ и ниже этим ид можно просто подменять реальный ид одетого предмета. чисто для примера моя реализация. никаких доп. одеваемых предметов - все данные о внешнем виде предмета хранятся в этом самом предмете, а не где-то извне.
  15. ну для хроник хф и ниже, слот нижнего белья никак на внешности перса не отображается.
  16. Я бы честно говоря посоветовал ограничиться апом до того же крусейда - намного меньше геммороя будет, т.к. данных по пакетке крусейда найти можно много. На худой конце можно даже сразу взять сборку крусейда из шары, ту же юнити к примеру, и уже на базе ее дальше пытаться пилить.
  17. В качестве источника инфы по структурам можно было бы порекомендовать NetPro, но конкретно по орфену тут помощи будет мало - там более менее полные структуры только до крусейда (включительно)
  18. пусть и по мелочам, но отличия в пакетке есть. так что удачи искать правильные структуры пакетов под орфен, затем тщательно у себя сравнивать все пакеты и исправлять отличия.
  19. Gaikotsu

    Проблема с тп к рб

    У нас тут не филиал ТНТ - экстрасенсов нет.
  20. Gaikotsu

    Выручайте

    ты как я понимаю про Аура Сигеля / Аура Тира и т.п. тогглы? опять же все обрабатывается в эффекте таких тогглов - какой дополнительный скилл включать например у меня так: <!-- Аура Сигеля / Sigel Aura --> <skill id="1927" levels="1" name="Аура Сигеля"> <!-- Дает члену группы Силу Сигеля. Физ. Атк. +1%. --> <stat name="icon" value="icon.icon_sigel" /> <stat name="reuseDelay" value="5000" /> <stat name="target" value="SELF" /> <stat name="skillType" value="CONT" /> <stat name="operateType" value="OP_TOGGLE" /> <stat name="magicType" value="3" /> <stat name="magicLevel" value="85" /> <for> <effect name="ForceAura" count="0x7fffffff" time="5"> <def name="forceSkill" value="1928" /> </effect> </for> </skill> <!-- Сила Сигеля / Sigel Force --> <skill id="1928" levels="1" name="Сила Сигеля"> <!-- Физ. Атк. +1%. --> <stat name="icon" value="icon.icon_sigel_01" /> <stat name="reuseDelay" value="5000" /> <stat name="affectRange" value="1600" /> <stat name="target" value="PARTY" /> <stat name="skillType" value="BUFF" /> <stat name="operateType" value="OP_TOGGLE" /> <stat name="magicType" value="3" /> <stat name="hideStartMessage" value="true" /> <stat name="hideUseMessage" value="true" /> <stat name="magicLevel" value="85" /> <stat name="effectPoint" value="2" /> <for> <effect name="ForceAura" count="0x7fffffff" time="5" stackOrder="1" stackType="synergy_sigel"> <def name="auraSkill" value="1927" /> <mul order="0x30" stat="pAtk" value="1.01" /> </effect> </for> </skill> + эффект ForceAura кладет еще один дополнительный бафф (Сила Единства Группы) на пати, если в ней активировано не менее 4 аур, и среди этих аур есть ауры сигеля и альгиза. наверняка в мобиусе что-то подобное тоже сделано
  21. Gaikotsu

    Выручайте

    как вариант через листенеры equip/unequip идет выдача/забирание доп. скиллов от комбинации надетых предметов. а как конкретно это в мобиусе запилено - в ядре или в дп - без понятия
  22. я не знаю что тут сложного вобще? вот, чисто ради интересу буквально за 10 минут набросал рабочий вариант, правда для овероподобных сборок, но все же package managers; import l2p.commons.threading.RunnableImpl; import l2p.gameserver.ThreadPoolManager; import l2p.gameserver.listener.actor.player.OnPickupItemListener; import l2p.gameserver.model.Location; import l2p.gameserver.model.Player; import l2p.gameserver.model.actor.listener.PlayerListenerList; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.scripts.ScriptFile; import l2p.gameserver.utils.ItemUtils; /** * @author Gaikotsu */ public class AutoDropManager implements ScriptFile { private static boolean _enabled = true; private static final int _itemId = 57; private static final long _itemCount = 1000L; private static final long _dropDelay = 10_000L; private static final Location _dropLoc = new Location(83473, 149223, -3300); // Giran private static final PickupItemListener _listener = new PickupItemListener(); private static int _objId = 0; @Override public void onLoad() { if (!_enabled) return; PlayerListenerList.addGlobal(_listener); dropItem(); } @Override public void onReload() {} @Override public void onShutdown() {} private static void dropItem() { ItemInstance item = ItemUtils.createItem(_itemId); item.setCount(_itemCount); item.dropMe(null, Location.coordsRandomize(_dropLoc, 50, 150)); _objId = item.getObjectId(); } private static class PickupItemListener implements OnPickupItemListener { @Override public void onPickupItem(Player player, ItemInstance item) { if (item.getObjectId() != _objId) return; ThreadPoolManager.getInstance().schedule(new RunnableImpl() { @Override public void runImpl() throws Exception { dropItem(); } }, _dropDelay); } } }
  23. Клиент линейки и так базируется на UE2. Ты корее всего видел попытки портирования на UE3 или UE4, коих было уже не одна попытка, но все обычно ограничивается самым минимумом, после чего все забрасывается.
  24. В методе расчета маг урона вызвывать (или в скилтайпе MDAM), если произошел крит
  25. данный вывод текста вроде как не юзает системный шрифт, а вместо него используется шрифт из текстур. и такое вроде как от некорректных данных в файлах *.gly - если не ошибаюсь, то заданы не те размеры глифов, какие реально есть в текстуре с шрифтами.
×
×
  • Создать...