-
Публикаций
349 -
Зарегистрирован
-
Посещение
-
Победитель дней
51 -
Отзывы
N/A
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Rolo
-
C Вашего разрешения добавлю: Хроники: Lineage 2 Epic Tale of Aden Episode 2.5 Underground (Hymn of Soul) Суть ТЗ по большому счету скомпилить, ибо сама реализация это изменить таймер в StatusWnd с 300 на 0.
-
Поскольку ссылка на видео ViRus ` a, к сожалению, мертва, мне поступила просьба объяснить как это работает. Возможно информация пригодится кому-то еще, потому отвечаю здесь, а не в привате. Итак, прежде всего нам нужно раздобыть "кадры" нашей анимации, т.к. сама собой она представляет ряд быстро (или не очень) прокручивающихся по кругу текстур, такой себе зацикленный мини-мультик. Когда текстуры уже готовы, грузим их в UE2 (предполагается, что Вы это умеете, раз задались целью сделать свой анимированный логотип). Важная инфа: Давайте текстурам названия с нумeрацией, это значительно упростит Вам жизнь при сборке текстур в анимацию. При этом учтите, UE прежде поставит файл с названием texture_11, нежели texture_2. Другими словами, сортирует он по совпадающим символам, и не считывает Вашу нумeрацию. Единица идет раньше двойки, следовательно будь там хоть 100 миллионов, текстура будет впереди текстуры с двойкой. Открываем правой кнопкой нашу первую текстуру, клацаем Properties, во всплывшем окне открываем блок Animation, и смотрим: 1 - следующая текстура в нашей анимации. 2 - количество кадров в секунду (скорость прокрутки анимации). 3 - общее количество текстур в анимации. Важная инфа: Строго соблюдайте порядок добавления анимаций. Ваша цель - в строке AnimNext (сейчас будет неожиданно) указать следующую текстуру в анимации. Таким образом в Properties первой текстуры AnimNext стоит вторая текстура; В Properties второй текстуры AnimNext стоит третья текстура; В Properties третьей текстуры AnimNext стоит первая текстура; Не менее важная инфа: Не нужно в каждой текстуре казывать количество и скорость воспроизведения текстур, это делается только в первой текстуре! Все последующие должны содержать только ссылку на следующую текстуру. Есть небольшой нюанс добавления следующей текстуры, скопировать в строку название следующей текстуры - очевидный, но не верный ход. Делается это следующим образом: Выбираем текстуру, открываем ее Properties, теперь отодвигаем всплывшее окно, клацаем на следующую текстуру, и в Properties первой текстуры, в строке AnimNext клацаем use. Именно таким образом добавляем все текстуры в цепь анимации. Когда мы зациклим последнюю текстуру на первой, и перейдем в Properties первой текстуры, мы увидим саму анимацию, если ее нет, что-то дергается/пропадает - вероятнее всего, Вы пропустили какую-то текстуру, либо плохо скомпоновали ряд текстур, либо не соблюдён порядок, либо Вы изобрели новый способ все запороть с чем я Вас поздравляю и сочувствую одновременно. А на этом все, дальше сохраняйте как обычную текстуру, в HTML вставляется название самой первой текстуры, где задается количество и частота обновления кадров.
- 1 ответ
-
- 6
-
Та не за что. ) Я в обновлениях этого ресурса прикрепил HTML-ку с примером таблицы, она кривая и поплывшая ибо выдрал неаккуратно с другого шаблона, но для примера сойдет. )
-
Просмотр файла Анимированная кнопка Для использования: back="Rolo_animButtons.Rolo_anim_Button_down" fore="Rolo_animButtons.Rolo_anim_Button" Добавил Rolo Добавлено 02/06/21 Категория Серверные дополнения Автор Rolo Хроники Для всех хроник
-
-
Что касается интерфейса, там все проще. В хдат прямо можно задать насколько сильно нужно стянуть иконку, чтобы не рисовать 10 разных размеров, и там же можно легко сразу поверх основной кнопки натянуть прокликиваемую текстурку, выглядит так: <Texture file="Rolo_EffectPanel.yellow_panel" uSize="32" vSize="32" Alpha="-9999" isAnimTex="-1" layer="Normal"> <DefaultProperties name="ToggleCP" parentElement="AutoPotionsWnd" alwaysOnTop="True" alwaysOnBack="False" Virtual="True"> <Size Absolute="True" width="23" height="23"/> <Position relativeTo="BoxCP" offsetX="-1" offsetY="-1" relativePoint="CenterCenter" anchorPoint="CenterCenter" anchored="True" /> </DefaultProperties> </Texture> Просто "якорим" текстуру к нужной кнопке relativeTo="BoxCP", задаем параметр виртуальности Virtual="True", чтобы не пряталась после клика по кнопке - вытягиваем ее наверх на постоянной основе alwaysOnTop="True", не забываем указать реальный размер uSize="32" vSize="32", и до какого она будет ужата: <Size Absolute="True" width="23" height="23"/>, и все, готово. Куда быстрее и приятнее, чем HTML-ки интерлюдовские.
-
Конечно, я изначально их себе для АЦП сделал. Я - интерлюд-боец, и страдания наши велики, ибо интерлюд не понимает что такое бекграунд текстуры (в хдат понимает, в хтмлках - нет), потому извращаемся как можем. В общих чертах выглядит так: делаем таблицу с конфигурациями cellspacing, cellpadding, в ней вешаем рамки, затем под нее мостим таблицу с такими же параметрами, и уже с основными иконками. При этом все выравнивания через <center> пойдут нафиг, и в арсенале останется только отступы в стиле <td width=40></td>, но привести к порядку можно.
-
Смотря где именно, одно дело - в HTML-ке, и другое дело через интерфейс. Вас какой именно вариант интересует?
-
Просмотр файла Анимированные иконки панелей В архиве 9 разных панелек. Вот их названия для вставки: Выглядят "в движении" вот так: Добавил Rolo Добавлено 02/05/21 Категория Клиентские дополнения Автор Rolo Хроники Для всех хроник
-
-
На всякий случай, может кому-то пригодится, дублирую суть с ТГ: ТСу нужно было вместо +1 стр добавить сразу +1% п атак, аналогично по другим статам, краски должны увеличивать не базовые характеристики, а уже конкретные статы. Ответ в pwsoft\src\net\sf\l2j\gameserver\skills\Formulas.java в блоках: static class FuncHennaDEX extends Func { static final FuncHennaDEX _fh_instance = new FuncHennaDEX(); static Func getInstance() { return _fh_instance; } private FuncHennaDEX() { super(Stats.STAT_DEX, 0x10, null); } @Override public void calc(Env env) { env.value += env.cha.getHennaStatDEX(); } }
-
А что конкретно имеется ввиду: - Каким профам какие краски можно ставить? (в БД henna_trees) - Где хранятся статы красок? (в БД henna) - Где в ядре считывается инфа с БД? (в классе pwsoft\src\net\sf\l2j\gameserver\datatables\HennaTable.java и C:\L2Refren\pwsoft\src\net\sf\l2j\gameserver\datatables\HennaTreeTable.java соответственно) - Где регистрируются таблицы? (неизменно - в ГС: import net.sf.l2j.gameserver.datatables.HennaTable; import net.sf.l2j.gameserver.datatables.HennaTreeTable;) Статы в pwsoft\src\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java; Проверки: pwsoft\src\net\sf\l2j\gameserver\network\clientpackets\RequestHennaItemInfo.java pwsoft\src\net\sf\l2j\gameserver\network\clientpackets\RequestHennaEquip.java Сами функции красок в pwsoft\src\net\sf\l2j\gameserver\skills\Formulas.java Искать по статам, например: static class FuncHennaDEX extends Func Определение что есть стат инт, а что стр в pwsoft\src\net\sf\l2j\gameserver\templates\L2Henna.java public int getStatINT()
-
Включите логирование клиента, чтобы получить точный ответ, подозреваю что может какой-то текстуры нехватать (отображение языка в окошке чата, или вроде того) и из-за этого клиент критует.
-
Значит такой метод уже есть, нужно просто его найти и посмотреть какие там проверки, и добавить туда нужные Вам скиллы, это явно в ядро нужно лезть смотреть.
-
Мне кажется, если такой механики нет изначально, то в ядре нужно допилить, в самом эффекте владения умениями сделать дополнительную проверку. Статик реюз - это влияние статов на откат скилла, а скилл мастери - это отдельная механика, потому как с Избавлением Эйнахасад не выйдет, скорее всего оно не откатывается, потому что это предметное умение.
-
swat809, не видел подобных мануалов. В целом нужно понимание как сборка построена, и джаву тоже понимать, иначе такое лучше самому не делать, я не в том даже ключе, что наугад не получится, - может и получиться, может даже все будет хорошо, но есть вероятность наплодить багов/загрузить систему, особенно если речь о вычислении шанса дропа на каждый удар. ) Если есть представления о джаве и что как работает, посмотрите в ядре, в классе l2PcInstance как устроены промахи/попадания по цели, например, или как вешается дебаф, когда бьешь РБ слишком лоу лвла, это все как раз чекается на каждый удар.
-
swat809, в таком случае нужно метод onHit юзать, а не при смерти чекать.
-
Cibo, это похоже на проблемы с геодвигом/геодатой, лучше работать непосредственно с проблемой, чем заниматься кучей ненужной работы, это же не комплексная проблема, чтобы прям все механики/пакеты перелопачивать, выйдет банально дешевле и быстрее, мне кажется. А насчет того, насколько этот вопрос решен в платных сборках - попросите разработчиков дать доступ к тестовым серверам и проверьте сами,.
-
Насколько я знаю, Адвексы ПТС с эпилога до ИЛа опустили таким образом, а насчет джава сборок не знаю таких прецедентов даже.
-
Cibo, правильно ли я понимаю: Вы ищите сборку ХФа, в который вырезан весь контент ХФа, вернуты все механики ИЛа, вся пакетка опущена до ИЛа?
-
Не знаю, указанный Вами проект, но суть, кажется уловил. На самом деле, на что фантазии хватит. Но мне кажется, лучше спавнить как НПС, как Вы и сказали, сделал бы метод, проверяющий, что там на игроке надето как-то так, например: public int getItemEquipped(int loc) { return getPlayer().getInventory().getPaperdollItemId(loc); } Сделал бы проверку НПС по ид, если есть совпадения, чекал бы getItemEquipped(), если есть совпадение - тогда идет расчет шанса дропа и вся остальная магия.
-
Совсем забыл об этой теме. и так, исправление бага с отображением заточки, может кому-то пригодится еще: Вводим локальную переменную: local int CrystalChap; В блоке ITEM_WEAPON определяем ее: CrystalChap = Item.CrystalType; if (Item.CrystalType > 5) { CrystalChap = 5; } В тултипах физ/маг атаки заменяем Item.CrystalType на CrystalChap , получается что-то такое: //Physical Damage AddTooltipItemOption(94, String(GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, CrystalChap, Item.Enchanted, Item.PhysicalDamage)), true, true, false); //Masical Damage AddTooltipItemOption(98, String(GetMagicalDamage(Item.WeaponType, Item.SlotBitType, CrystalChap, Item.Enchanted, Item.MagicalDamage)), true, true, false); Готово.
-
Инфа более актуальна для ИЛа, но подойдет и для хроник выше. По данному примеру забиндить можно все что угодно, от вызова окна вставки ЛСа и релога без окна подтверждения, до байпассов с админ командами для отладки (зачем такое делать - не знаю, просто привожу примеры ). Первым делом идем в xdat, Interface\Shortcuts\GamingStateShortcutи выбираем клавишу/сочетание клавиш, например вот так: <ShortcutItem Key="IK_Space">SelfTarget</ShortcutItem> Таким образом мы забиндим на пробел взятие себя в таргет. Или так: <ShortcutItem Key="IK_Space" SubKey1="IK_Alt">SelfTarget</ShortcutItem> Теперь нужно для селф таргета нужно зажать альт и клацнуть пробел (а удобно-то как будет, рекомендую). Коды клавиш иногда очевидны ( IK_F1, IK_B, IK_Enter), а иногда не очень, на всякий случай: Далее нужно описать саму команду "SelfTarget". Самый простой вариант - залезть в скрипты Interface\Classes\Shortcut найти там function HandleShortcutCommand( String a_Param ) и добавить: case "SelfTarget": RequestSelfTarget(); break; Но, разумеется, вставить команду можно в любой класс, но тогда Вам придется создать в нем: function OnEvent( int a_EventID, String a_Param ) { switch( a_EventID ) { case EV_ShortcutCommand: HandleShortcutCommand( a_Param ); break; } } а так же сам хэндлер: function HandleShortcutCommand( String a_Param ) { local String Command; if( ParseString( a_Param, "Command", Command ) ) { switch( Command ) { case "SelfTarget": RequestSelfTarget(); break; } } }
-
Как гордый колупатель именно этого сурса, заявляю, что разница таки есть, с квестами беда, тадапаком тоже, мобы фиг пойми где заспавнены, особенно в некрополях - половина за текстурами или в коридорах, мелких неприятностей даже для 4 человек там хватает. )