Сообщений: 1,240
Тем: 29
Зарегистрирован: May 2013
Репутация:
2,505
Gaikotsu Написал:и вобще тот писец, чем является ExtractableItems.java в чистом овере стоит просто выкинуть и написать свой обработчик распаковываемых предметов, в котором данные по предметам к примеру будут храниться в хмлке, а в обработчике универсальый метод для распаковки всего этого дела.
Для этого достаточно посмотреть лыжу или ацис.
Родился, живу и когда-нибудь умру.
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
ну я хз как в лыже, я в свое время свой обработчик просто наваял для всего этого дела достаточно простой, но вроде как учитывающий все нужные варианты
сэмпл
Код: <!--
Допустимые атрибуты ноды item:
id - распаковываемый предмет
mode - режим распаковки (RANDOM - выбрать одну группу из списка, соответственно её шансу, и выдать все предметы из нее
ALL - перебрать все группы по очереди и если у группы выпал шанс, то выдать из нее предметы).
Если в списке имеется только одна группа, то распаковка идет всегда по варианту "ALL", т.к. в данном случае
используется более быстрый алгоритм. Необязательный параметр, по умолчанию равен "RANDOM".
slots - сколько свободных ячеек в инвентаре требуется для того чтобы предмет можно было распаковать.
Если не задано, то подсчитывается автоматически, с учетом режимов распаковки групп.
allow_fail - допустимость неполучения ни одной группы с наградами из списка распаковки (проверяется только для режима
распаковки "RANDOM"). Если такое недопустимо, то суммарный шанс всех предметов в списке распаковки
обязательно должен быть равен 100%. Необязательный параметр, по умолчанию равный "false".
delete - удалять ли распаковываемый предмет после использования. Необязательный параметр, по умолчанию равный "true".
skill - использование какого скилла броадкастить окружающим при распаковке. Задается в виде строки вида
"skill_id,skill_level". Необязательный параметр.
Допустимые атрибуты ноды group:
chance - шанс выдачи предметов из группы, в диапазоне от 0.001% до 100%. Поддерживается точность до тысячных долей после запятой.
level - для какого диапазона уровней игроков выдавать предметы из этой группы. Задается в виде строки "min_level,max_level".
Параметр действует только если парметру mode ноды item задано значение "ALL". Необязательный параметр,
по умолчанию равный "1,99".
mode - режим получения наград из группы (RANDOM - будет выбрана одна награда из списка, соответственно ее шансу,
ALL - будут выданы все награды из группы, соответственно их шансам, ONE - будет просто выбрана случайным образом одна
награда из списка, без учета ее шанса). Необязательный параметр, по умолчанию равен "ALL".
allow_fail - допустимость неполучения ни одной награды из списка (проверяется только для режима группы "RANDOM").
Если такое недопустимо, то суммарный шанс всех наград в группе обязательно должен быть равен 100%.
Необязательный параметр, по умолчанию равный "false".
Допустимые атрибуты ноды reward:
id - идентификатор награды:
- если одно число, больше 0, то id предмета;
- если одно число, меньше 0, то одно из трех значений: -100 - очки PC Bang, -200 - клановые очки, -300 - слава;
- если задана строка "id1,id2,...idN", то будет выдан предмет из списка, выбранный случайным образом;
- если задана строка "min_id:max_id", то будет выдан случайный предмет из заданного диапазона id.
Последние два варианта можно комбинировать друг с другом.
count - количество выдаваемой награды. Можно задавать в виде одного числа или же в виде строки "min_count,max_count".
Во втором случае будет выдано случайное количество, входящее в заданный дипазон.
chance - шанс выдачи награды, в диапазоне от 0.001% до 100%. Поддерживается точность до тысячных долей после запятой.
Необязательный параметр, по умолчанию равный 100%.
enchant - уровень энчанта выдаваемого предмета. Работает только для нестакующихся предметов. Необязательный параметр,
по умолчанию равный 0.
only_one - если задано значение "true", то данный предмет будет выдан только если у игрока в инвентаре еще нет
такого же предмета. Необязательный параметр, по умолчанию равный "false".
-->
<list>
<!-- Spellbook Page / Страница Книги Заклинаний -->
<item id="5916">
<group chance="100.0" mode="RANDOM">
<!-- [5917] Kranvel's Spellbook: Chapter of Fire / Книга Заклинаний - Огонь -->
<!-- [5918] Kranvel's Spellbook: Chapter of Water / Книга Заклинаний – Вода -->
<!-- [5919] Kranvel's Spellbook: Chapter of Wind / Книга Заклинаний – Ветер -->
<!-- [5920] Kranvel's Spellbook: Chapter of Earth / Книга Заклинаний – Земля -->
<reward id="5917:5920" count="1" chance="80.0" />
<reward id="736" count="1" chance="20.0" /> <!-- Scroll of Escape / Свиток Телепорта -->
</group>
</item>
...
<!-- Gran Kain's Gift Box [30-day] / Подарок Гран Каина [30 дней] -->
<item id="13027" delete="false">
<group chance="100.0" mode="RANDOM">
<reward id="13259" count="1" chance="0.813" /> <!-- Gran Kain's Blessed Scroll of Resurrection / Свиток Благ. Воскрешения Гран Каина -->
<reward id="13258" count="1" chance="1.626" /> <!-- Gran Kain's Blessed Scroll of Escape / Свиток Благ. Телепорта Гран Каина -->
<reward id="13260" count="1" chance="16.26" /> <!-- Gran Kain's Squeaking Shoes [10-hour] / Скрипящие Ботинки Гран Каина [10 часов] -->
<!-- [13261] Gran Kain's Echo Crystal - Theme of Journey / Музыкальный Кристалл Гран Каина: Тема - Путешествия -->
<!-- [13262] Gran Kain's Echo Crystal - Theme of Battle / Музыкальный Кристалл Гран Каина: Тема - Битва -->
<!-- [13263] Gran Kain's Echo Crystal - Theme of Love / Музыкальный Кристалл Гран Каина: Тема - Любовь -->
<!-- [13264] Gran Kain's Echo Crystal - Theme of Solitude / Музыкальный Кристалл Гран Каина: Тема - Уединение -->
<!-- [13265] Gran Kain's Echo Crystal - Theme of Festival / Музыкальный Кристалл Гран Каина: Тема - Фестиваль -->
<!-- [13266] Gran Kain's Echo Crystal - Theme of Celebration / Музыкальный Кристалл Гран Каина: Тема - Праздник -->
<!-- [13267] Gran Kain's Echo Crystal - Theme of Comedy / Музыкальный Кристалл Гран Каина: Тема - Комедия -->
<reward id="13261:13267" count="10" chance="32.515" />
<reward id="13268" count="10" chance="32.526" /> <!-- Gran Kain's Firecracker / Фейерверк Гран Каина -->
<reward id="13269" count="10" chance="16.26" /> <!-- Gran Kain's Large Firecracker / Большой Фейерверк Гран Каина -->
</group>
</item>
...
</list>
и так у меня описано уже более 3к предметов.
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Достаточно сделать все == птсу пара эффектов, пара экшеонов, профит. А та ересь что есть в классе, это да, привет полный. Мангол в свое время переработал все это дерьмище :\
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
ну я тебе в аське говорил уже вроде (или Манголу, не помню) что не всегда "по оффу" есть самое лучшее решение. ибо зачастую корейцы такое умудряются нагородить, что только за голову хватаешся - по другому можно сделать намного проще, понятнее и быстрее.
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Gaikotsu;386685 Написал:ну я тебе в аське говорил уже вроде (или Манголу, не помню) что не всегда "по оффу" есть самое лучшее решение. ибо зачастую корейцы такое умудряются нагородить, что только за голову хватаешся - по другому можно сделать намного проще, понятнее и быстрее. Под каждый экстрактбл итем есть скил(ресторейшн, кроме action_peel, их капсулед итемы описаны прямиком на самом итеме, что дико удобно и можно кастомить во все стороны) Так зачем городить тонну дерьма xD?
Если кастомить итемы, то это можно сделать как угодно. А то что есть на офе, то сделано просто шикарно и спорить с этим ой как глупо.
Код: <skill id="323" levels="1" name="Quiver of Arrow: A Grade">
<!--Done JTS (c)Mangol-->
<!--Description: Summons between 700 and 2800 Mithril arrows. Consumes 1 A-Grade Crystal.-->
<set name="magicType" val="SPECIAL"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="RESTORE_ITEM"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="magicLevel" val="66"/>
<set name="mpConsume1" val="366"/>
<set name="hitTime" val="3000"/>
<set name="hitCancelTime" val="500"/>
<set name="reuseDelay" val="600000"/>
<set name="itemConsumeId" val="1461"/>
<set name="itemConsumeCount" val="1"/>
<cond msgId="113">
<and>
<pts op_encumbered="20;10"/>
</and>
</cond>
<for>
<effect name="i_restoration_random" time="0">
<def name="extract" val="{{[1344:700]30.0};{[1344:1400]50.0};{[1344:2800]20.0}}"/>
</effect>
</for>
</skill>
Ну и поддающиеся легкой кастомизации, капсулед итемы:
Код: <etcitem id="20187" name="Extra Entrance Pass - Kamaloka (Hall of the Abyss) 10 Sheet Pack">
<set name="freightable" value="true"/>
<set name="class" value="OTHER"/>
<set name="crystal_type" value="NONE"/>
<set name="icon" value="icon.etc_pi_gift_box_i00"/>
<set name="stackable" value="true"/>
<set name="type" value="OTHER"/>
<set name="weight" value="100"/>
<set name="default_action" value="action_peel"/>
<capsuled_item>
<capsuled_items id="20026" min_count="10" max_count="10" chance="100.0"/>
</capsuled_item>
</etcitem>
Сообщений: 901
Тем: 78
Зарегистрирован: Dec 2012
Репутация:
9,514
Киллрой Папко я смотрю))) Шарит очень круто:eek::redlol:
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Temptation;386688 Написал:Киллрой Папко я смотрю))) Шарит очень круто не киЛЛрой, не "Папко". Это делал Мангол, все лавры ему. :Olen':
Сообщений: 889
Тем: 21
Зарегистрирован: May 2010
Репутация:
12,856
L2J Написал:Доброго времени суток!
Помогите пожалуйста, где в овероподобных исходниках еще могут хранится распаковывающиеся предметы?
Посмотрел в дп папке scripts файл Extractable.java, добавил свои предметы или изменяю существующие, изменений нет, мои предметы вообще не открываются.
Надеюсь на вашу помощь. А лог чистый ? (При загрузке и при юзе)
Мб инвентарь переполнен ? Поэтому и неюзаються.
оффтоп
Пришлось доставать раритет.
[SRC="java"]private static boolean canBeExtracted(Player player, ItemInstance item)
{
if(player.getWeightPenalty() >= 3 || player.getInventory().getSize() > player.getInventoryLimit() - 10)
{
player.sendPacket(Msg.YOUR_INVENTORY_IS_FULL, new SystemMessage(SystemMessage.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addItemName(item.getItemId()));
return false;
}
return true;
}[/SRC]
|