Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Разбор XML
#1
Всем добрый вечер столкнулся с проблемой при редактировании дропа в сборке L2Jserver, Что за <group chance="33.52899932861328"> ?
И как напримет мне сделать шанс дропа 10.92% — 13.28% на
<item id="118" min="1" max="1" chance="22.8201" /> <!-- Necklace of Magic -->

<drop_lists>
<death>
<group chance="70">
<item id="57" min="30" max="42" chance="100" /> <!-- Adena -->
</group>
<group chance="33.52899932861328">
<item id="112" min="1" max="1" chance="30.627" /> <!-- Apprentice's Earring -->
<item id="118" min="1" max="1" chance="22.8201" /> <!-- Necklace of Magic -->
<item id="116" min="1" max="1" chance="46.5529" /> <!-- Magic Ring -->
</group>
<group chance="6.698800086975098">
<item id="1864" min="1" max="1" chance="29.1262" /> <!-- Stem -->
<item id="1865" min="1" max="1" chance="14.5631" /> <!-- Varnish -->
<item id="1866" min="1" max="1" chance="9.7087" /> <!-- Suede -->
<item id="1873" min="1" max="1" chance="5.8252" /> <!-- Silver Nugget -->
<item id="1868" min="1" max="1" chance="29.1262" /> <!-- Thread -->
<item id="1788" min="1" max="1" chance="11.6506" /> <!-- Recipe: Bow -->
</group>
</death>
<corpse>
<item id="1871" min="1" max="1" chance="5.6617" /> <!-- Charcoal -->
<item id="116" min="1" max="1" chance="45.2932" /> <!-- Magic Ring -->
<item id="1786" min="1" max="1" chance="4.5293" /> <!-- Recipe: Broad Sword -->
</corpse>
</drop_lists>
<collision>
Ответ
#2
group chance - шанс что итемы из списка выпадут гурппе

<group chance="100">
<item id="118" min="1" max="1" chance="13.2801" /> <!-- Necklace of Magic -->
</group>
Ответ
#3
<group chance="33.52899932861328"> это шанс что выпадет именно эта группа предметов, а из этой группы выпадет предмет с своим шансом.

то есть 33% что выпадет группа
Код:
<group chance="33.52899932861328">
<item id="112" min="1" max="1" chance="30.627" /> <!-- Apprentice's Earring -->
<item id="118" min="1" max="1" chance="22.8201" /> <!-- Necklace of Magic -->
<item id="116" min="1" max="1" chance="46.5529" /> <!-- Magic Ring -->
</group>
а потому уже из данной группы какой то предмет

Добавлено через 1 минуту
BaldIriskin Написал:И как напримет мне сделать шанс дропа 10.92% — 13.28% на

ну, сделать можно, вот только зачем разброс? или вы насмотрелись всяких баз данных по л2, где шанс указан в приблизительных цифрах с определенным разбросом?
Ответ
#4
Спасибо, что про группу объяснили, так с разбросам не как не указать?
Ответ
#5
BaldIriskin Написал:Спасибо, что про группу объяснили, так с разбросам не как не указать?

Дописывайте парсер дропа, с добавлением параметров minChance - maxChance, и радуйтесь жизни, в чем проблема то?
Ответ
#6
Carline Написал:Дописывайте парсер дропа, с добавлением параметров minChance - maxChance, и радуйтесь жизни, в чем проблема то?
Есть сборки в каких реализовано это?
Ответ
#7
BaldIriskin Написал:Есть сборки в каких реализовано это?

Что вам мешает добавить новые переменные getMin() и getMax() за место getChance(), а при вызове шанса дропа вызывать его как-то так:
[SRC="java"]if (getMin() != getMax())
double chance = Rnd.get(getMin(), getMax());
else
double chance = getMax();[/SRC]
Родился, живу и когда-нибудь умру.
Ответ
#8
только вот в итоге будет та еще порнография, разве что играться именно с шансом группы, но никак не с шансами вещей внутри группы, ибо для адекватных расчетов, в большинстве сборок, требуется чтобы суммарный шанс всех вещей внутри группы был равен 100%.
да и если как-то умудрится сделать изменение шанса какой-то вещи внутри группы в определенном диапазоне - это будет влиять и на шансы всех остальных вещей в этой группе.

в принципе на уровне шанса группы такое и правда достаточно легко делается - пара строк в парсер дропа, да парочка непосредственно в сами расчеты, определяющие выпадение группы.

З.Ы. а конечный шанс дропа той или иной вещи получается как (шанс_группы * шанс_вещи_внутри_группы) / 100

Добавлено через 6 минут
BaldIriskin Написал:Есть сборки в каких реализовано это?
ни разу не видел
ты видимо первый, кому такое извращение потребовалось
Ответ
#9
Заметка по дроп движку.

Общий шанс всех предметов в группе должен быть ровно 100%.

На счет рандом шанса по потолкам как и написал Donatte, создайте новую переменную шанса и обработчик.

Строка дропа в группе
[SRC="xml"]
<item id="118" min="1" max="1" chance="10.92;13.28" /> <!-- Necklace of Magic -->
[/SRC]


В парсер дропа (Скорей всего в парсере нпц)
[SRC="java"]
final String[] chance = element.attributeValue("chance").split(";");
final double min = Double.parseDouble(chance[0]);
final double max = chance.length > 1 ? Double.parseDouble(chance[1]) : min;
drop.setChance(min, max);
[/SRC]


В модель дропа
[SRC="java"]
// Метод присвоения разброса шанса
public void setChance(final double min, final double max)
{
_min = min;
_max = max;
}

// Метод получения рандом шанса.
public double getChance()
{
return _min != _max ? Rnd.get(_min, _max) : _max;
}
[/SRC]
Ответ
#10
L2CCCP Написал:Заметка по дроп движку.

Общий шанс всех предметов в группе должен быть ровно 100%.

На счет рандом шанса по потолкам как и написал Donatte, создайте новую переменную шанса и обработчик.

Строка дропа в группе
[SRC="xml"]
<item id="118" min="1" max="1" chance="10.92;13.28" /> <!-- Necklace of Magic -->
[/SRC]


В парсер дропа (Скорей всего в парсере нпц)
[SRC="java"]
final String[] chance = element.attributeValue("chance").split(";");
final double min = Double.parseDouble(chance[0]);
final double max = chance.length > 1 ? Double.parseDouble(chance[1]) : min;
drop.setChance(min, max);
[/SRC]


В модель дропа
[SRC="java"]
// Метод присвоения разброса шанса
public void setChance(final double min, final double max)
{
_min = min;
_max = max;
}

// Метод получения рандом шанса.
public double getChance()
{
return _min != _max ? Rnd.get(_min, _max) : _max;
}
[/SRC]
Спасибо, буду пробывать
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)