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

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

nikitawasa 01.07.2011 00:52

CON STR DEX WIT MEN INT
 
Такой вопрос, в формулах есть код
Код:

        private static final double[] STRCompute = new double[]{1, 30}; //{1.016, 28.515}; for C1
        private static final double[] INTCompute = new double[]{1, 30}; //{1.020, 31.375}; for C1
        private static final double[] DEXCompute = new double[]{1, 30}; //{1.009, 19.360}; for C1
        private static final double[] WITCompute = new double[]{1, 30}; //{1.050, 20.000}; for C1
        private static final double[] CONCompute = new double[]{1, 30}; //{1.015, 12.488}; for C1
        private static final double[] MENCompute = new double[]{1, 30}; //{1.010, -0.060}; for C1

        protected static final double[] WITbonus = new double[MAX_STAT_VALUE];
        protected static final double[] MENbonus = new double[MAX_STAT_VALUE];
        protected static final double[] INTbonus = new double[MAX_STAT_VALUE];
        protected static final double[] STRbonus = new double[MAX_STAT_VALUE];
        protected static final double[] DEXbonus = new double[MAX_STAT_VALUE];
        protected static final double[] CONbonus = new double[MAX_STAT_VALUE];

        // These values are 100% matching retail tables, no need to change and no need add
        // calculation into the stat bonus when accessing (not efficient),
        // better to have everything precalculated and use values directly (saves CPU)
        static
        {
                for (int i = 0; i < STRbonus.length; i++)
                        STRbonus[i] = i/STRCompute[1];
                for (int i = 0; i < INTbonus.length; i++)
                        INTbonus[i] = i/INTCompute[1];
                for (int i = 0; i < DEXbonus.length; i++)
                        DEXbonus[i] = i/DEXCompute[1];
                for (int i = 0; i < WITbonus.length; i++)
                        WITbonus[i] = i/WITCompute[1];
                for (int i = 0; i < CONbonus.length; i++)
                        CONbonus[i] = i/CONCompute[1];
                for (int i = 0; i < MENbonus.length; i++)
                        MENbonus[i] = i/MENCompute[1];
        }

Код:

        static class FuncPAtkMod extends Func
        {
                static final FuncPAtkMod _fpa_instance = new FuncPAtkMod();

                static Func getInstance()
                {
                        return _fpa_instance;
                }

                private FuncPAtkMod()
                {
                        super(Stats.POWER_ATTACK, 0x30, null);
                }

                @Override
                public void calc(Env env)
                {
                        env.value *= STRbonus[env.player.getSTR()] * env.player.getLevelMod();
                }
        }

Вопрос такой. Я бы хотел что бы при стате в 30, модификатор был 0, а далее вверх или вниз шёл по 3.33(3)%.
Я пытался изменить на
Код:

                public void calc(Env env)
                {
                        env.value *= (int)(env.player.getSTR()/30) * env.player.getLevelMod();
                }

Неполучилось. Пытался
Код:

for (int i = 0; i < STRbonus.length; i++)
                        STRbonus[i] = i/30;

Неполучилось. Думаю надо добавить значения в
Код:

        private static final double[] STRCompute = new double[]{1, 30}; //{1.016, 28.515}; for C1
Но где то то уже должно быть это прописано. Кто знает где дайте наводочку ^^

PaInKiLlEr 01.07.2011 04:37

Re: CON STR DEX WIT MEN INT
 
(в формулах шарю но) не хрена не понял что и как хотите, что бы выглядело

Ultimate 01.07.2011 05:02

Re: CON STR DEX WIT MEN INT
 
Цитата:

Сообщение от PaInKiLlEr (Сообщение 129131)
(в формулах шарю но) не хрена не понял что и как хотите, что бы выглядело

есть такая игра как Vincitus. И там значения STR\DEX и т.д. идут огромные, от 100 до 2к. И там прибавка к динамичным параметрам идет исходя из этих показателей. дак вот, обьясню на примере.
STR<100 => 1str=2 p.atk
STR>100 => 1str=3 p.atk
имея больше 100 str, ты получаешь прибавку в 3 p.att за каждый str))
так понятно?)думаю ТС это и имел ввиду.

nikitawasa 01.07.2011 12:14

Re: CON STR DEX WIT MEN INT
 
Я имел ввиду что хотел в файле формул изменить прибавку от базовых статов. Тоесть если стат равен 30 прибавки нету. При стате в + или - 30 идёт прибавка\уменьшение на 3% за единицу стата

Azagthtot 01.07.2011 12:17

Re: CON STR DEX WIT MEN INT
 
Ключевой вопрос. 3% от чего? Потому что 3% от 0 будет примерно 0 :)

nikitawasa 01.07.2011 13:23

Re: CON STR DEX WIT MEN INT
 
3% от базового значения

Azagthtot 01.07.2011 13:25

Re: CON STR DEX WIT MEN INT
 
Вариант
Код:

for (int i = 0; i < STRbonus.length; i++)
                        STRbonus[i] = i/30;

Правильный, и
Код:

public void calc(Env env)
                {
                        env.value *= STRbonus[env.player.getSTR()];
                        env.value = env.value == 0 ? 1 : env.value;
                }


nikitawasa 01.07.2011 17:00

Re: CON STR DEX WIT MEN INT
 
Неа не помогает становится 1 П атака... да кстати такая прабла же с откатом. Хочу сделать зависимость отката от каста
Код:

                else
                {
                        if(skill.isMagic())
                        {
                                reuseDelay = (int)(skill.getReuseDelay() * getStat().getMReuseRate(skill));
                        }
                        else
                        {
                                reuseDelay = (int)(skill.getReuseDelay() * getStat().getPReuseRate(skill));
                        }
                }

я изменил
Код:

                                reuseDelay = (int)(skill.getReuseDelay() * getStat().getMReuseRate(skill))*(int)(getMAtkSpd()/1000));
При умножении на число(допустим 0,75) откат нормальный но если (int)(getMAtkSpd()/1000) становится меньше 1, то откат становится походу то же 1...

Добавлено через 10 часов 43 минуты
Вобщем прабла была в том что переменные должны были быть double, т.е. писать не \30 а \30.0

Astend 04.07.2011 16:26

Re: CON STR DEX WIT MEN INT
 
XD ой как мне смешно :)))

а зачем то сразу лесть в ядро? при том не зная явы :D

Если ты про l2
Есть у всех персов (Абсолютно у всех) скил common mastery (пассивный)
допиши в этот скил что то типа такого плана
<mul order="0x30" stat="DEX" val="1.03" />
где 1.03 и = 3%

даже если нету такого скила то сделать самому и выдать всем не пробелма

или вообще создать свой скил выдать всем и некто нечего не увидит!

Archiel 07.07.2011 17:43

Re: CON STR DEX WIT MEN INT
 
Привет, Эрозек-конкурент=) Помогу немного чтоли.

Вот как бы что можно сделать (и я сделал), чтобы адекватно прибавлять (и отнимать) бонус.
Вот на примере рассчёта ХП, для п.атаки сделаешь себе сам думаю:

Код:

public void calc(Env env)
                {
                        L2PcInstance p = (L2PcInstance) env.player;
                        L2PcTemplate t = (L2PcTemplate) env.player.getTemplate();

                        env.value *= (1 + (p.getCON() - t.baseCON) / 10 + p.getLevel() / 100);
                }

Нужное тебе я выделил.
Удачи.

Добавлено через 3 минуты
Цитата:

Сообщение от Astend (Сообщение 129656)
XD ой как мне смешно :)))

а зачем то сразу лесть в ядро? при том не зная явы :D

Если ты про l2
Есть у всех персов (Абсолютно у всех) скил common mastery (пассивный)
допиши в этот скил что то типа такого плана
<mul order="0x30" stat="DEX" val="1.03" />
где 1.03 и = 3%

даже если нету такого скила то сделать самому и выдать всем не пробелма

или вообще создать свой скил выдать всем и некто нечего не увидит!

Вась, ты вообще понял что требуется и что сделал ты? Ты умножил параметр DEX на 3%. И зачем?
Автору требуется при прибавке +1 DEX от какого-нить шмота или оружия, добавлять 3% п.атаки персу. Не вообще давать бонус, а именно прибавлять и отнимать при изменении параметра. Думай что пишешь, если уж пытаешься советовать, да ещё в такой хамской форме.


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

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