• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Батлпас 2024-11-18

Нет прав для скачивания

Chipercu

Выдающийся
Местный
Сообщения
66
Розыгрыши
0
Репутация
168
Реакции
71
Баллы
1 353

Вложения

  • BattlePassTextures.rar
    653,6 КБ · Просмотры: 29

Кто под л2ждев адаптирует?)
 
ну я могу)
 
50/50 оплату делим по брацки))
 
Для адаптации нужны сурсы, я могу конечно закостылить все это дело, но это время и костыли все таки
 
Вроде работает. Код написан неплохо. Попросили меня его адаптировать. Несколько функций отсутствуют, но их логику легко можно угадать и заменить. Привязки к считанию очки для задач БП тоже нет, и вам придётся её сделать. Короче, шар хороший и на том спасибо.

Кстати, для тех, кому слишком лень сделать поддержку json

Код:
# List of battle pass simple rewards.
# Example: Index1,ItemId1,ItemCount1;Index2,ItemId2,ItemCount2
BattlePassSimpleRewardItems = 0,6574,20;\
                             1,6574,15;\
                             2,6572,10;\
                             3,6570,5;\
                             4,6578,3;\
                             5,57,1000000;\
                             6,4037,10;\
                             7,57,10000000;\
                             8,4037,100;\
                             9,16025,1;\
                             10,8191,1;\
                             11,6659,1;\
                             12,6658,1;\
                             13,6656,1;\
                             14,14961,1;\
                             15,21579,1;\
                             16,6661,1;\
                             17,6660,1;\
                             18,21874,100;\
                             19,7679,1;\

# List of battle pass simple rewards.
# Example: Index1,ItemId1,ItemCount1;Index2,ItemId2,ItemCount2
BattlePassPremiumRewardItems = 0,6576,20;\
                               1,6574,15;\
                               2,6572,10;\
                               3,6570,5;\
                               4,6578,3;\
                               5,57,1000000;\
                               6,4037,10;\
                               7,57,10000000;\
                               8,4037,100;\
                               9,16025,1;\
                               10,8191,1;\
                               11,6659,1;\
                               12,6658,1;\
                               13,6656,1;\
                               14,14961,1;\
                               15,21579,1;\
                               16,6661,1;\
                               17,6660,1;\
                               18,21874,100;\
                               19,7679,1;\

Java:
    public static List<RewardItem> BATTLE_PASS_SIMPLE_REWARD_ITEMS = Collections.emptyList();
    public static List<RewardItem> BATTLE_PASS_PREMIUM_REWARD_ITEMS = Collections.emptyList();

...
    
    
    BATTLE_PASS_SIMPLE_REWARD_ITEMS = Arrays.stream(properties.getProperty("BattlePassSimpleRewardItems", "").split(";")).map(RewardItem::parse).collect(Collectors.toList());
    BATTLE_PASS_PREMIUM_REWARD_ITEMS = Arrays.stream(properties.getProperty("BattlePassPremiumRewardItems", "").split(";")).map(RewardItem::parse).collect(Collectors.toList());

...
    
    public static RewardItem parse(String string)
    {
        final String[] split = string.trim().split(",");
        if (split.length != 3)
        {
            throw new IllegalArgumentException("Comma split for string must have 3 parts: " + string);
        }
        
        final RewardItem item = new RewardItem();
        item.setId(Integer.parseInt(split[0]));
        item.setItemId(Integer.parseInt(split[1]));
        item.setCount(Integer.parseInt(split[2]));
        
        return item;
    }
 
Вроде работает. Код написан неплохо. Попросили меня его адаптировать. Несколько функций отсутствуют, но их логику легко можно угадать и заменить. Привязки к считанию очки для задач БП тоже нет, и вам придётся её сделать. Короче, шар хороший и на том спасибо.

Кстати, для тех, кому слишком лень сделать поддержку json

Код:
# List of battle pass simple rewards.
# Example: Index1,ItemId1,ItemCount1;Index2,ItemId2,ItemCount2
BattlePassSimpleRewardItems = 0,6574,20;\
                             1,6574,15;\
                             2,6572,10;\
                             3,6570,5;\
                             4,6578,3;\
                             5,57,1000000;\
                             6,4037,10;\
                             7,57,10000000;\
                             8,4037,100;\
                             9,16025,1;\
                             10,8191,1;\
                             11,6659,1;\
                             12,6658,1;\
                             13,6656,1;\
                             14,14961,1;\
                             15,21579,1;\
                             16,6661,1;\
                             17,6660,1;\
                             18,21874,100;\
                             19,7679,1;\

# List of battle pass simple rewards.
# Example: Index1,ItemId1,ItemCount1;Index2,ItemId2,ItemCount2
BattlePassPremiumRewardItems = 0,6576,20;\
                               1,6574,15;\
                               2,6572,10;\
                               3,6570,5;\
                               4,6578,3;\
                               5,57,1000000;\
                               6,4037,10;\
                               7,57,10000000;\
                               8,4037,100;\
                               9,16025,1;\
                               10,8191,1;\
                               11,6659,1;\
                               12,6658,1;\
                               13,6656,1;\
                               14,14961,1;\
                               15,21579,1;\
                               16,6661,1;\
                               17,6660,1;\
                               18,21874,100;\
                               19,7679,1;\

Java:
    public static List<RewardItem> BATTLE_PASS_SIMPLE_REWARD_ITEMS = Collections.emptyList();
    public static List<RewardItem> BATTLE_PASS_PREMIUM_REWARD_ITEMS = Collections.emptyList();

...
   
   
    BATTLE_PASS_SIMPLE_REWARD_ITEMS = Arrays.stream(properties.getProperty("BattlePassSimpleRewardItems", "").split(";")).map(RewardItem::parse).collect(Collectors.toList());
    BATTLE_PASS_PREMIUM_REWARD_ITEMS = Arrays.stream(properties.getProperty("BattlePassPremiumRewardItems", "").split(";")).map(RewardItem::parse).collect(Collectors.toList());

...
   
    public static RewardItem parse(String string)
    {
        final String[] split = string.trim().split(",");
        if (split.length != 3)
        {
            throw new IllegalArgumentException("Comma split for string must have 3 parts: " + string);
        }
       
        final RewardItem item = new RewardItem();
        item.setId(Integer.parseInt(split[0]));
        item.setItemId(Integer.parseInt(split[1]));
        item.setCount(Integer.parseInt(split[2]));
       
        return item;
    }
Ну там выдачу очков не так сложно сделать
пример за убийство закена , вставить в метод MY_DYING
1732382482898.png
Олимп в метод winGame
1732382585438.png На счет json, достаточно подключить либу Gson ( нравится она мне)) )
и закинуть себе куда то в утил метод
Java:
    public <T> List<T> loadJsonEntity(String path, Class<T> tClass) {
        Gson gson = new Gson();
        if (!new File(path).exists()) {
            try (FileWriter writer = new FileWriter(path)) {
                gson.toJson(new ArrayList<>(), writer); // Запись в файл
            } catch (IOException e) {
                _log.warning(e.getMessage());
            }
        }
        try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
            Type type = TypeToken.getParameterized(List.class, tClass).getType();
            return gson.fromJson(reader, type);
        } catch (IOException e) {
            _log.warning(e.getMessage());
            throw new RuntimeException(e);
        }
    }
 
Кстати) надеюсь ни кто не блеванул с моего хтмл билдера))
1732383267755.png
нужен совет какого ни будь гуру) нормальная фигня или в htm файлы держать код и потом реплэйсить данные лучше?
 
Ну там выдачу очков не так сложно сделать
пример за убийство закена , вставить в метод MY_DYING
не лучше ли на листенерах всю нужную обработку сделать, вместо того чтобы вносить дополнения в конкретные аи?
 
не лучше ли на листенерах всю нужную обработку сделать, вместо того чтобы вносить дополнения в конкретные аи?
Согласен, паттерн наблюдатель ни кто не отменял) но я не задавался целью сделать из шары опенов топ сборку) так что кому набросок понравится я думаю доведёт его до ума у себя.
 
Ну там выдачу очков не так сложно сделать
пример за убийство закена , вставить в метод MY_DYING
Не сложно, да. Но мне не нравится, когда они разбросаны везде по коду. Сделаешь так с 5 штуками и потом будешь страдать, потому-что код скопился там, где его не должно быть. Лучше на листенерах, как Gaikotsu сказал. Я люблю когда всё кастомное в одном месте. Поэтому и я сделал новые листенеры для этой цели.

json, достаточно подключить либу Gson ( нравится она мне)) )
и закинуть себе куда то в утил метод
Да, у каждого свои предпочтения. Я подумал, что лучше сделать конфиги. Для других - json наверное :)

Кстати) надеюсь ни кто не блеванул с моего хтмл билдера))
Было интересно встретить такого чудовища. Не блеванул, но оно испугало меня :D

нужен совет какого ни будь гуру) нормальная фигня или в htm файлы держать код и потом реплэйсить данные лучше?
Я традиционалист. Вероятно есть варианты лучше традиционного хтм и реплэйс, но я не остановился ни на одном. У каждого плюсы и минусы. Иногда производительность очень важна. А традиционный формат имеет неплохую производительность (несмотря на спагетти код).
 
Не сложно, да. Но мне не нравится, когда они разбросаны везде по коду. Сделаешь так с 5 штуками и потом будешь страдать, потому-что код скопился там, где его не должно быть. Лучше на листенерах, как Gaikotsu сказал. Я люблю когда всё кастомное в одном месте. Поэтому и я сделал новые листенеры для этой цели.


Да, у каждого свои предпочтения. Я подумал, что лучше сделать конфиги. Для других - json наверное :)


Было интересно встретить такого чудовища. Не блеванул, но оно испугало меня :D


Я традиционалист. Вероятно есть варианты лучше традиционного хтм и реплэйс, но я не остановился ни на одном. У каждого плюсы и минусы. Иногда производительность очень важна. А традиционный формат имеет неплохую производительность (несмотря на спагетти код).
если вы привыкли как лучше то делайте сами зачем это пихать в тему или исправьте как удобнее и выдайте другим - а пока это пустословные слова , вам дали уже рабочий продукт допиливайте как хотите ( это не в обиду а чисто мнение)
 
Вроде как считается добавлять либы из-за такой ерунды это не очень хорошо:) как и менять работающий код, даже java говорит что его нужно расширять, а не изменять :). А чистый код говорит что нужно все делать в одном и том же стиле т.к нужно учитывать что другие программисты будут читать и модифицировать твой код и он должен быть максимально просто и одинаков
 
если вы привыкли как лучше то делайте сами зачем это пихать в тему или исправьте как удобнее и выдайте другим - а пока это пустословные слова , вам дали уже рабочий продукт допиливайте как хотите ( это не в обиду а чисто мнение)
?

Нам нельзя размышлять над кодом?
Если для вас это всего лишь продукт/халява, то для других это ещё и повод изучать код и размышлять над разными реализациями.
 
Вроде как считается добавлять либы из-за такой ерунды это не очень хорошо:) как и менять работающий код, даже java говорит что его нужно расширять, а не изменять :). А чистый код говорит что нужно все делать в одном и том же стиле т.к нужно учитывать что другие программисты будут читать и модифицировать твой код и он должен быть максимально просто и одинаков
Это в рамках 1 проекта) я допустим прикрутил себе Gson, и использую его так как намного проще сериализовать\десериализовать объекты
Я же не делал это как продукт который должен быть совместим со всеми сборками линейки из коробки

Если кто то критикует или показывает на слабые места кода, я только рад) никогда не узнаешь на сколько хорошо ты делаешь если это видишь только ты
 
Любое решение имеет место быть, все зависит от целей разработчика. Если один хочет сделать конфигурацию наиболее предсказуемой, и считает необходимым добавление gson, который облегчает десериализацию конфигов - пожалуйста. Добавление (лишней) либы в этом случае не проблема. Если у другого цель сделать парсинг конфигов нативным + легковесным, и он решает разделять поля по строкам и другим разделителям - тоже пойдет.
Тут возникает конфликт интересов, зачем их вообще сравнивать ?
Имхо, Л2 давно нуждается в чем то типо gson, fasterxml.jackson для парсинга всего.
К слову, в энтерпрайз разработке уже давно все используют тот же gson, jackson
 
Кроме переделки отслеживания прогресса на листенеры, есть смысл и вобще всю конфигурацию сделать более читабельной, понятной и масштабируемой.
А для этого выкинуть всю фигню с конфигами, а так же кучей хардкода и нормально все расписать к примеру в виде хмл с понятной и читабельной структурой, через которую и управлять всем, без необходимости что-то постоянно добавлять в код при добавлении новых заданий.
Просто как пример из системы one day rewards / clan missions, смысл которых достаточно близок к БП - выполняешь миссии, получаешь награды.
XML:
    <!-- Охота на монстров выше 101 ур. | Убейте 800 монстров в любой зоне охоты. (Засчитывается только при получении очков опыта.) -->
    <mission id="1101" category="1" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="101" />
        <listener name="hunting">
            <param name="value" value="101" />
            <param name="count" value="800" />
        </listener>
        <rewards>
            <reward id="-200" count="280" />    <!-- Репутация клана -->
            <reward id="-300" count="1500" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Охота на элитных монстров | Убейте 80 элитных монстров. -->
    <mission id="1102" category="1" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="105" />
        <listener name="hunting">
            <param name="target" value="24426;24377;20941;24466;24451;24420;24485;24491;24495;24499;24505;24510;24523" />
            <param name="count" value="80" />
        </listener>
        <rewards>
            <reward id="-200" count="280" />    <!-- Репутация клана -->
            <reward id="-300" count="1500" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Рыбалка | Поймайте 100 любых рыб на рыбном месте. -->
    <mission id="1104" category="1" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="fishing">
            <param name="count" value="100" />
        </listener>
        <rewards>
            <reward id="-200" count="220" />    <!-- Репутация клана -->
            <reward id="-300" count="1000" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Выполнить зачарование | Проведите 5 зачарований. Ранг предмета и материалы не имеют значения. -->
    <mission id="1105" category="1" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="item_action">
            <param name="type" value="augmentation" />
            <param name="count" value="5" />
        </listener>
        <rewards>
            <reward id="-200" count="220" />    <!-- Репутация клана -->
            <reward id="-300" count="1000" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Выполнить синтез | Синтезируйте предметы 5 раз. Итоговый предмет не имеет значения. -->
    <mission id="1106" category="1" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="item_action">
            <param name="type" value="combination" />
            <param name="count" value="5" />
        </listener>
        <rewards>
            <reward id="-200" count="220" />    <!-- Репутация клана -->
            <reward id="-300" count="1000" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Участие в Олимпиаде | Примите участие в Олимпиаде 5 раз. -->
    <mission id="1107" category="1" repeatable="true">
        <requirements clan_level="10" clan_mastery="14" player_level="85" />
        <listener name="olympiad">
            <param name="result" value="any" />
            <param name="count" value="5" />
        </listener>
        <rewards>
            <reward id="-200" count="250" />    <!-- Репутация клана -->
            <reward id="-300" count="1500" />    <!-- Личная репутация -->
            <reward id="81053" count="1" />    <!-- Энергия -->
        </rewards>
    </mission>
    <!-- Успешная осада | Примите участие в осаде и добейтесь 1 победы в атаке. -->
    <mission id="2103" category="2" repeatable="true">
        <requirements clan_level="10" clan_mastery="14" player_level="85" />
        <listener name="siege">
            <param name="type" value="castle" />
            <param name="mode" value="1" />
            <param name="count" value="1" />
        </listener>
        <rewards>
            <reward id="-200" count="250" />    <!-- Репутация клана -->
            <reward id="-300" count="2500" />    <!-- Личная репутация -->
        </rewards>
    </mission>
    <!-- Достичь 100 ур. в основном классе | Достигните 100 ур. в основном классе в составе клана. -->
    <mission id="3002" category="3" repeatable="false">
        <requirements clan_level="0" clan_mastery="0" player_level="99" />
        <listener name="level">
            <param name="type" value="base" />
            <param name="value" value="100" />
        </listener>
        <rewards>
            <reward id="-200" count="450" />    <!-- Репутация клана -->
            <reward id="-300" count="4500" />    <!-- Личная репутация -->
            <reward id="45812" count="1" />    <!-- Награда Клана -->
        </rewards>
    </mission>
    <!-- Крупный игрок аукциона | Заключите 10 успешных сделок на аукционе редких предметов. -->
    <mission id="3048" category="3" repeatable="false">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="player_action">
            <param name="type" value="obtained_auction_item" />
            <param name="count" value="10" />
        </listener>
        <rewards>
            <reward id="-200" count="1000" />    <!-- Репутация клана -->
            <reward id="-300" count="10000" />    <!-- Личная репутация -->
        </rewards>
    </mission>
    <!-- Новичок в переработке | Проведите кристаллизацию или алхимическое смешивание 10 раз. -->
    <mission id="3049" category="3" repeatable="false">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="item_action">
            <param name="type" value="disassemble" />
            <param name="count" value="10" />
        </listener>
        <rewards>
            <reward id="-200" count="100" />    <!-- Репутация клана -->
            <reward id="-300" count="1000" />    <!-- Личная репутация -->
        </rewards>
    </mission>
    <!-- Зачарование: Оружие | Зачаруйте оружие 100 раз с помощью следующих Камней Духа: Камень Духа Высокого Ранга, Камень Духа Высшего Ранга, Камень Жизни с Силой Гигантов -->
    <mission id="3055" category="3" repeatable="false">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="item_action">
            <param name="type" value="augmentation" />
            <param name="target" value="45931;45932;36731" />
            <param name="count" value="100" />
        </listener>
        <rewards>
            <reward id="-200" count="1000" />    <!-- Репутация клана -->
            <reward id="-300" count="10000" />    <!-- Личная репутация -->
        </rewards>
    </mission>
    <!-- Оружие Кровавого Хелиоса +20 | Усильте Оружие Кровавого Хелиоса до +20 хотя бы 1 раз. -->
    <mission id="3074" category="3" repeatable="false">
        <requirements clan_level="0" clan_mastery="0" player_level="85" mission="3073" />
        <listener name="item_action">
            <param name="type" value="enchant" />
            <param name="target" value="35193;35194;35195;35196;35197;35198;35199;35200;35201;35202;35203;35204;35205;35206" />
            <param name="value" value="20" />
            <param name="count" value="1" />
        </listener>
        <rewards>
            <reward id="-200" count="2000" />    <!-- Репутация клана -->
            <reward id="-300" count="20000" />    <!-- Личная репутация -->
        </rewards>
    </mission>
    <!-- Сила Ледяной Розы Фреи | Используйте любой из следующих предметов 8 раз: Ледяная Роза Фреи, Ледяная Роза Фреи (Ивент), Ледяная Роза для ПА -->
    <mission id="4103" category="4" repeatable="true">
        <requirements clan_level="0" clan_mastery="0" player_level="85" />
        <listener name="item_action">
            <param name="type" value="use" />
            <param name="target" value="48830;48848;80745;80612" />
            <param name="count" value="8" />
        </listener>
        <rewards>
            <reward id="-200" count="25" />    <!-- Репутация клана -->
            <reward id="-300" count="250" />    <!-- Личная репутация -->
        </rewards>
    </mission>
это чисто пример нескольких заданий, всего их к примеру у меня реализовано более 120. при этом все это обрабатывается минимумом кода в виде меньше чем десятка разных небольших листенеров, при помощи которых я могу отслеживать следующие действия:
- убийство мобов с определенными ид или определенных уровней;
- участие в осаде по определенным критериям (атака/защита);
- участие в олли/фестивале хаоса по определенным критериям;
- получение игроком определенных уровней на основе/сабе/дуале;
- ловлю рыбы;
- выполнение определенных квестов;
- покупки в аукционе предметов;
- разные действия с предметами: заточка, аугментация, вставка атрибута, синтез, кристаллизация/разбор в алхимии, вставка энсоула, крафт, использование (поушны и т.п.).
 
Это в рамках 1 проекта) я допустим прикрутил себе Gson, и использую его так как намного проще сериализовать\десериализовать объекты
Я же не делал это как продукт который должен быть совместим со всеми сборками линейки из коробки

Если кто то критикует или показывает на слабые места кода, я только рад) никогда не узнаешь на сколько хорошо ты делаешь если это видишь только ты
Это вполне понятно, когда делаешь для своего проекта, и понятно, что шар и есть из твоего проекта, поэтому реализация такая. А я, просто сказал вариант для тех, кто не хочет делать подобную реализацию)

Кстати, идея о jackson хороша. Оно так легко парсит и xml и json. А вот здесь xml действительно подходит, потому что есть ещё кое-что анхардкодит (макс. количество очков, цены, ид монстров, инстанций и пр.).

Вот вам пример:
XML:
<list>
    <settings>
        <buyPoints>
            <amount>50</amount>
            <cost>
                <item id="4037" count="50" />
            </cost>
        </buyPoints>
        <buyPremium>
            <cost>
                <item id="4037" count="300" />
            </cost>
        </buyPremium>
    </settings>
    <tasks>
        <task name="BP_MOBS" desc="За убийство монстров +-5 лвл" maxPoints="10">
            <listener type="ON_KILL">
                <npc type="MONSTER" minLevelDiff="-5" maxLevelDiff="5" />
            </listener>
        </task>
        <task name="BP_RAID" desc="За убийство Рейд Боссов" maxPoints="20">
            <listener type="ON_KILL">
                <npc type="RAID" minLevelDiff="-8" maxLevelDiff="8" />
            </listener>
        </task>
        <task name="BP_ONLINE" desc="За время в онлайне" maxPoints="10">
            <listener type="ONLINE_TIME">
                <duration>10minutes</duration>
            </listener>
        </task>
        <task name="BP_OLY" desc="За проведенный бой на олимпиаде" maxPoints="10">
            <listener type="OLYMPIAD_MATCH_FINISH" />
        </task>
        <task name="BP_FREYA" desc="Успешно пройти инстанс Фреи" maxPoints="15">
            <listener type="INSTANCE_COMPLETE">
                <instanceId>139</instanceId>
                <instanceId>144</instanceId>
            </listener>
        </task>
        <task name="BP_FRINTEZA" desc="Успешно пройти инстанс Фринтезы" maxPoints="15">
            <listener type="INSTANCE_COMPLETE">
                <instanceId>136</instanceId>
            </listener>
        </task>
        <task name="BP_ZAKEN" desc="Успешно пройти инстанс Закена" maxPoints="10">
            <listener type="INSTANCE_COMPLETE">
                <instanceId>114</instanceId>
                <instanceId>133</instanceId>
                <instanceId>135</instanceId>
            </listener>
        </task>
        <task name="BP_OLY_WIN" desc="За победу на олимпиаде" maxPoints="10">
            <listener type="OLYMPIAD_MATCH_FINISH">
                <isWinner>true</isWinner>
            </listener>
        </task>
    </tasks>
    <rewards>
        <rewardList type="SIMPLE">
            <reward id="0">
                <item id="6574" count="20" />
                <item id="57" count="1" />
            </reward>
            <reward id="1">
                <item id="6574" count="15" />
            </reward>
            <reward id="2">
                <item id="6572" count="10" />
            </reward>
            <reward id="3">
                <item id="6570" count="5" />
            </reward>
            <reward id="4">
                <item id="6578" count="3" />
            </reward>
            <reward id="5">
                <item id="57" count="1000000" />
            </reward>
            <reward id="6">
                <item id="4037" count="10" />
            </reward>
            <reward id="7">
                <item id="57" count="10000000" />
            </reward>
            <reward id="8">
                <item id="4037" count="100" />
            </reward>
            <reward id="9">
                <item id="16025" count="1" />
            </reward>
            <reward id="10">
                <item id="8191" count="1" />
            </reward>
            <reward id="11">
                <item id="6659" count="1" />
            </reward>
            <reward id="12">
                <item id="6658" count="1" />
            </reward>
            <reward id="13">
                <item id="6656" count="1" />
            </reward>
            <reward id="14">
                <item id="14961" count="1" />
            </reward>
            <reward id="15">
                <item id="21579" count="1" />
            </reward>
            <reward id="16">
                <item id="6661" count="1" />
            </reward>
            <reward id="17">
                <item id="6660" count="1" />
            </reward>
            <reward id="18">
                <item id="21874" count="100" />
            </reward>
            <reward id="19">
                <item id="7679" count="1" />
            </reward>
        </rewardList>
        <rewardList type="PREMIUM">
            <reward id="0">
                <item id="6576" count="20" />
                <item id="57" count="1" />
                <item id="5575" count="1" />
            </reward>
            <reward id="1">
                <item id="6574" count="15" />
            </reward>
            <reward id="2">
                <item id="6572" count="10" />
            </reward>
            <reward id="3">
                <item id="6570" count="5" />
            </reward>
            <reward id="4">
                <item id="6578" count="3" />
            </reward>
            <reward id="5">
                <item id="57" count="1000000" />
            </reward>
            <reward id="6">
                <item id="4037" count="10" />
            </reward>
            <reward id="7">
                <item id="57" count="10000000" />
            </reward>
            <reward id="8">
                <item id="4037" count="100" />
            </reward>
            <reward id="9">
                <item id="16025" count="1" />
            </reward>
            <reward id="10">
                <item id="8191" count="1" />
            </reward>
            <reward id="11">
                <item id="6659" count="1" />
            </reward>
            <reward id="12">
                <item id="6658" count="1" />
            </reward>
            <reward id="13">
                <item id="6656" count="1" />
            </reward>
            <reward id="14">
                <item id="14961" count="1" />
            </reward>
            <reward id="15">
                <item id="21579" count="1" />
            </reward>
            <reward id="16">
                <item id="6661" count="1" />
            </reward>
            <reward id="17">
                <item id="6660" count="1" />
            </reward>
            <reward id="18">
                <item id="21874" count="100" />
            </reward>
            <reward id="19">
                <item id="7679" count="1" />
            </reward>
        </rewardList>
    </rewards>
</list>
 
Последнее редактирование:
Назад
Сверху Снизу