Иконка ресурса

Pts Data Viewer 2

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

Алиос

Выдающийся
Участник
Сообщения
44
Розыгрыши
0
Решения
1
Репутация
184
Реакции
55
Баллы
1 338
Алиос добавил(а) новый ресурс:

- Программа для более удобного просмотра PTS скриптов и поиска по ним


 
Алиос обновил(а) ресурс новой записью:




 
Работа проделана большая) PTS конечно не занимаюсь, но может и пригодится когда-то)
 
Спасибо) Да я и сам PTS не занимаюсь. Она мне нужна, чтобы оттуда что-то вытаскивать для своей явы. Парсить там, смотреть как должно работать и т.д. Так что, если тоже делаете что-то подобное - авось и вам пригодится.
 

Через пару нажатий ошибка итемнейма ушла, что изменилось не ясно.
Не совсем понял для чего тхт файлы из клиента.



Отдельно файл не дает загрузить, с клиентскими тхт тоже.
 
Клиентские файлы подключать необязательно. Они нужны для того, чтобы работал поиск по частичному совпадению в имени скилла/предмета/npc. Например, можно в поиске по скиллам ввести "страх", и программа найдет все скиллы, в клиентском имени которых присутствует данное слово. По поводу вашей ошибки: возможно, вы подключали сами датники напрямую из клиента, но программа не умеет их декодировать. Чтобы это работало, откройте файл-эдитом npcname-e и прочие подобные файлы, после чего просто скопируйте содержимое в обычный текстовик и подключайте его. Также можете почитать руководство в архиве - возможно, там найдутся ответы на некоторые ваши вопросы.

P.S. Прошу прощения за дабл-постинг - не успел отредактировать сообщение за 5 минут.

Если не хочет читать npcdata - прикрепите сюда файл, который Вы подключали и укажите хроники pts-сборки, с которой Вы его брали. Программа тестировалась лишь на Epilogue и HF адвексов. Если у вас другие хроники, и не работает - я попробую посмотреть ваш файл и раздебажить ошибки. Тогда, возможно, завезу поддержку ваших хроник.
 
хроники Grand Crusade, Salvation, Fafurion

Архив данных отправил вам в личку.
 
Практически прикрутил поддержку GOD+ хроник, но есть проблема: реальные статы считает, скорее всего, неправильно, ввиду изменения формулы на этих хрониках. Я знаю формулы расчета на Gracia/HF, но понятия не имею, по каким формулам считать Hp/Mp/атаку/защиту и прочее. Если есть знающие люди, готовые помочь - буду вам крайне признателен за любую информацию. Интересуют формулы для хроник выше GOD, а также интересно, менялись ли они между этими хрониками, и если да, то на каких что менялось, за что отвечают новые атрибуты, такие как LUC и CHA?

P.S. Имею ввиду вот эти формулы.

Java:
public static int calcExp(final int level, final float acquire_exp_rate)
{
    return (int) (acquire_exp_rate * level * level);
}

public static double getLevelMod(final int level)
{
    return (89. + level) / 100.0;
}

public static int calcMaxHp(final float base, final int CON)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getConBonus(CON);
            break;
    }

    return (int) result;
}

public static int calcMaxMp(final float base, final int MEN)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getMenBonus(MEN);
            break;
    }

    return (int) result;
}

public static int calcPhysAtk(final float base, final int STR, final int level)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getStrBonus(STR) * getLevelMod(level);
            break;
    }

    return (int) result;
}

public static int calcMagAtk(final float base, final int INT, final int level)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getIntBonus(INT) * getLevelMod(level);
            break;
    }

    return (int) result;
}

public static int calcPhysDef(final float base, final int level)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getLevelMod(level);
            break;
    }

    return (int) result;
}

public static int calcMagDef(final float base, final int MEN, final int level)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getMenBonus(MEN) * getLevelMod(level);
            break;
    }

    return (int) result;
}

public static int calcMoveSpd(final float base, final int DEX)
{
    double result = base;
    switch(config.CHRONICLES)
    {
        case GRACIA_HF:
        case GOD:
            result = base * getDexBonus(DEX);
            break;
    }

    return (int) result;
}
 
Можно вопрос? Зачем считать реальные статы мобов без пассивок? Зачем в принципе нужны эти данные, если они по сути ничего не значат?
 
Согласен. С каким нибудь exp\sp это ещё применимо, но вот по статам уже вопрос. Для подобного нужно реализовывать дополнительное чтение массива мульти_скилл_листа, с последующим чтением самих скиллов и их бонусов, что бы привести статы НПЦ в реальную реальность.
Да и то всё равно останутся некоторые мобы\боссы, который помимо мультилиста имею ещё и какие то бонусные эффекты в АИ, которые аналогично поменяют их статы при тех или иных условиях.

А по факту да - статы то посчитать можно, но то, что в моба забито +35% м дефа, 70% м атаки и допустим 200% хп - уже никто не учтёт и конечный стат из тулзы всё равно будет не тот, что в игре.

Слишком заморочно и по факту имеет крайне мало смысла. Я бы лучше озаботился шарами тулз для генерации дроплистов\рандом\капсюлед, что бы малюткам было удобнее. Вот такие вещи действительно имеют место.
 
Хороший вопрос! Причин несколько:
1) Никто и не говорит об идеальной точности соответствия с реальными статами мобов, но согласитесь, что основные характеристики NPC с учетом CON-ов и левелбонусов всяких, пусть даже без пассивок и баффов из АИ, куда ближе к правде, чем лишь их базовые значения. У большинства же мобов, за редким исключением, пассивки и баффы в из АИ лишь незначительно влияют на статы, в то время как базовые значения от реальных отличаются кардинально, то есть, таким образом, в большинстве случаев можно будет примерно понять, что моб из себя представляет. Саму программу, в идеале, хотелось бы сделать универсальной и полезной как для ПТС-админов, так и для ява-разрабов, а также продвинутых игроков, сделать из неё некую универсальную базу знаний, которая кушает данные из ПТС-сборки и клиента интересующих человека хроник, и отображает их в более-менее читаемом виде. А если учесть тот факт, что в доброй половине ява-сборок у нпц отсутствует куча стат-функций, а те же хп/атаки/защиты вписываются сразу посчитанными с учетом конов/левелов, но без учета пассивок - то, что покажет программа, будет +/- соответствовать тому, что прописано в XML нпц их явы, а также всяких базах знаний в инете.
2) Я подумываю в будущем добавить возможность считать статы с учетом пассивок, а если это делать - без просчетов до скиллов все равно не обойтись.
3) Если этот функционал уже есть, не хотелось бы его урезать или выпускать обнову, в которой для других поддерживаемых хроник эти статы будут считаться ошибочно.

P.S. По поводу тулзов для генерации дроплистов: эта программа позиционируется больше как информер, чем как редактор/генератор. Если такое и делать, то отдельным софтом. А вот с чем действительно стоит заморочиться, так это с читаемостью имеющихся данных.
Например, при дабл-клике на дроплист форматировать его вывод, приводя в более читаемый вид в стиле xml в явах.

 


Правда для нпц она бесполезна, там в базе у всех 40, что дает бонус множителя 1
 
У кого как - я к примеру в хмл держу именно базовые значения, т.е. такие же как в птс.
А к конечным значениям, к которым применяются уже бонусы от пассивок и т.п., я эти базовые значения привожу при загрузке хмлок при старте сервера.
---
Формулы расчета этого всего по идее никак не поменялись - те же что во времена до ГоД, просто отличия в конечных результатах из-за того что поменялись значения бонусов базовых стат, ну т.е. от STR/CON/INT и т.д.
Ну и еще левелмод для 100+ уровней чуть по другому считается, не как для 1-99 уровней.
 
бля, ну все правильно сделал.
 
Реакции: kick
Может и не менялись, но я посмотрел, какую белиберду мне насчитало по старым формулам у того же Баюма в хрониках Grand Crusade - мне статы показались нелогичными. Но может я и ошибаюсь.
 
Возможно из-за того, что бонус от статов считается по какой-то старой формуле, а не берется статично из скриптов.
 
Смотря какие статы ты имеешь ввиду? Если бонусы от STR, CON и т.д, то их подтянул из скриптов гранд крусейда.
 
Да, именно их и имел ввиду. Тогда нужно вникать. Это первое, что пришло в голову.
 
ну вот для примера у меня Баюм -
С такими базовыми статами (у меня некоторые статы отличаются от оффовских, т.к. я его усилял немного - слишком он слабоват по сути получается с стандартными значениями)
XML:
    <!-- Баюм / Baium -->
    <npc id="29020" name="Баюм" title="">
        <stat name="type" value="Boss" />
        <stat name="ai" value="Baium" />
        <stat name="class" value="LineageMonster.baium" />
        <stat name="level" value="78" />
        <stat name="rewardExp" value="11090077" />
        <stat name="rewardSp" value="2661" />
        <stat name="collisionHeight" value="174.00" />
        <stat name="collisionRadius" value="65.00" />
        <stat name="baseSTR" value="164" />
        <stat name="baseCON" value="111" />
        <stat name="baseDEX" value="55" />
        <stat name="baseINT" value="188" />
        <stat name="baseWIT" value="78" />
        <stat name="baseMEN" value="149" />
        <stat name="baseHpMax" value="53342293" />
        <stat name="baseHpReg" value="750" />
        <stat name="baseMpMax" value="18000" />
        <stat name="baseMpReg" value="99" />
        <stat name="basePAtk" value="6616.34824" />
        <stat name="basePDef" value="3240.718563" />
        <stat name="baseMAtk" value="25862.37832" />
        <stat name="baseMDef" value="2395.807785" />
        <stat name="basePAtkSpd" value="253" />
        <stat name="baseMAtkSpd" value="2362" />
        <stat name="baseRunSpd" value="120" />
        <stat name="baseWalkSpd" value="80" />
        <stat name="baseAtkRange" value="40" />
        <stat name="baseCritRate" value="40" />
        <stat name="pAccuracyMod" value="4.75" />
        <stat name="pEvasionMod" value="7" />
        <stat name="aggroRange" value="1000" />
        <ai_params>
            <set name="maxPursueRange" value="20000" />
            <set name="selfAggroChance" value="100" />
            <set name="madnessChance" value="5" />
        </ai_params>
        <minions>
            <minion npc_id="29021" count="5" />    <!-- Архангел / Archangel -->
        </minions>
        <skills>
            <skill id="4045" level="1" />    <!-- Устойчивость к Обессиливанию Босса / Full Magic Attack Resistance -->
            <skill id="4127" level="1" />    <!-- Атака Баюма / Baium Attack -->
            <skill id="4256" level="1" />    <!-- Устойчивость к Оглушению / Stun Resistance -->
            <skill id="4415" level="3" />    <!-- Одноручный Меч / One-handed Sword -->
            <skill id="4416" level="1" />    <!-- Нежить / Undead -->
            <skill id="14765" level="4" />    <!-- Сопротивление Вампиризму / Blood Siphon Resistance -->
        </skills>
        <attributes>
            <defence attribute="fire" value="0" />
            <defence attribute="water" value="0" />
            <defence attribute="wind" value="0" />
            <defence attribute="earth" value="0" />
            <defence attribute="holy" value="0" />
            <defence attribute="unholy" value="0" />
        </attributes>
    </npc>