Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Новый стат (https://forum.zone-game.info/showthread.php?t=18613)

finfan 11.03.2012 20:37

Новый стат
 
Интересует вопрос, где лопатить, чтобы создать новый стат аля "pDefSpec"
и т.д.
копал в L2Character, Formulas, Stats, куда еще мои кривые руки должны залезть?

Azagthtot 11.03.2012 20:40

Re: Новый стат
 
в Stats и туда, где вы будете его использовать.

finfan 11.03.2012 21:40

Re: Новый стат
 
Семпай, а вот наприме элементарный стат pDef, который мы используем в .xml, где он прописывается? как ява понимает, что pDef увеличивает именно pDef персонажа, т.е. это.. я немогу выразить правильно свою мысль =(.

Как персонаж получает защиту от простой грубо говоря строчки вписанной в .xml? как эта строчка. скажем:
<mul order="0x50" stat="pDef" val="1.1">
она увеличит защиту на 10% от той, которую мы имеем. А вот как где прпоисывается это высчитывание?, лазил в формулах, нашел там фанк PDEF, является ли он "родоначальником" нашего стата котоырй мы пишем в .xml...

Я создаю стат, который увеличивал бы мне физ. защиту на n% от физ. атаки. например создаю скил увеличивающий физ. деф на 30% от 100% физ. атаки.
<mul order="0x50" stat="pDefSpec" val="30"/>
следовательно если в строчке вал будет число 150, значит физ. деф увеличится на 150% от физ атаки.

Вроде бы и расчеты приготовил, что как делится, ан что умножается, чтобы получить проценты, но не понимаю как правильно и куда вписать pDefSpec, в статы внес, а дальше тупик.

извените за такой конченный текст, я не знаю как более доступно можно охарактеризовать "это"

Т_Т

Azagthtot 11.03.2012 21:42

Re: Новый стат
 
в формулу рассчета физзащиты вписывайте.

finfan 12.03.2012 00:33

Re: Новый стат
 
Чтобы приступить к работе, я все таки удостоверюсь точно:

Код:

        static class FuncPDefMod extends Func
        {
                static final FuncPDefMod _fmm_instance = new FuncPDefMod();
               
                static Func getInstance()
                {
                        return _fmm_instance;
                }

                private FuncPDefMod()
                {
                        super(Stats.POWER_DEFENCE, 0x20, null);
                               
                }
               
                @Override
                public void calc(Env env)
                {
                        if(env.player instanceof L2PcInstance)
                        {
                                L2PcInstance p = (L2PcInstance) env.player;
                                boolean hasMagePDef = (p.getClassId().isMage() || p.getClassId().getId() == 0x31); // orc mystics are a special case
                                if (p.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD) != null)
                                        env.value -= 12;
                                L2ItemInstance chest = p.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);
                                if (chest != null)
                                        env.value -= hasMagePDef ? 15 : 31;
                                if (p.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) != null || (chest != null && chest.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR))
                                        env.value -= hasMagePDef ? 8 : 18;
                                if (p.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) != null)
                                        env.value -= 8;
                                if (p.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) != null)
                                        env.value -= 7;
                        }
                        if(env.player instanceof L2PcInstance)
                        {
                       
                        }
                        env.value *= env.player.getLevelMod();
                }
        }

В эту формулу необходимо вносить?

Azagthtot 12.03.2012 08:49

Re: Новый стат
 
в формулу вносить ничего не надо. А вот в алгоритм вычисления - да.
ищем метод getPDef() в CharStats


Текущее время: 08:54. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot