MOTR logo
    • Категории
    • Последние
    • Популярные
    • Метки
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    РО калькулятор

    Запланировано Прикреплена Закрыта Перенесена Архив Оффтопика
    110 Сообщения 28 Posters 10.8k Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • mjaffkM Не в сети
      mjaffk
      отредактировано

      sivka, напиши программу, рассчитывающую статы для максимальных повреждений кузнеца - будет хоть что-то полезное.

      1 ответ Последний ответ Ответить Цитировать 0
      • sivkaS Не в сети
        sivka
        отредактировано

        mjaffk,

        будет и не только для кузнеца, но и для всех остальных тоже.

        правда до этого зделаю ещё arrows, items, monsters (и surveyor).

        1 ответ Последний ответ Ответить Цитировать 0
        • Т Не в сети
          ТаргаШ Заблокирован
          отредактировано

          sivka, чё твоя ссылка здохла...

          1 ответ Последний ответ Ответить Цитировать 0
          • mjaffkM Не в сети
            mjaffk
            отредактировано

            sivka, вах, ню-ню, дерзай. только что-то медленно пишешь, я, когда рассчитывал наилучший билд ханта, на паскале за два дня написал (в общей сложности часа 3-4).

            1 ответ Последний ответ Ответить Цитировать 0
            • ОтшельникО Не в сети
              Отшельник
              отредактировано

              sivka, а линк действительно не пашет, либо у мя руки не оттуда растут =(

              1 ответ Последний ответ Ответить Цитировать 0
              • sivkaS Не в сети
                sivka
                отредактировано

                @"ТаргаШ":
                sivka, чё твоя ссылка здохла...

                тока что проверил, всё пашет.

                проверь на первой странице, ты всё зделал как я описал?

                1 ответ Последний ответ Ответить Цитировать 0
                • sivkaS Не в сети
                  sivka
                  отредактировано

                  @"mjaffk":
                  sivka, вах, ню-ню, дерзай. только что-то медленно пишешь, я, когда рассчитывал наилучший билд ханта, на паскале за два дня написал (в общей сложности часа 3-4).

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

                  очень хотелось бы поглядеть на твой калькулятор, который ты за 3-4
                  часа написал 😉

                  1 ответ Последний ответ Ответить Цитировать 0
                  • ОтшельникО Не в сети
                    Отшельник
                    отредактировано

                    sivka, кароч хз, походу руки у мя действительно не оттуда растут, загрузил я твой линк .... и что ты думаешь....а там пусто о_О

                    1 ответ Последний ответ Ответить Цитировать 0
                    • Т Не в сети
                      ТаргаШ Заблокирован
                      отредактировано

                      sivka, всё равно МёртваЯ скин мне на мыло лутше , если не трудно 🙂

                      1 ответ Последний ответ Ответить Цитировать 0
                      • mjaffkM Не в сети
                        mjaffk
                        отредактировано

                        sivka, это только для хантов ;):

                        [code:17hy64tm]program hunt;

                        var
                        myBaseStr, myBaseAgi, myBaseVit, myBAseInt, myBaseDex, myBaseLuk,
                        myStrPlus, myAgiPlus, myVitPlus, myIntPlus, myDexPlus, myLukPlus,
                        enStr, enAgi, enVit, enInt, enDex, enLuk : longint;

                        myImpositioManus, myUpgradeBonus, myAtkCards, myEnvenomSkill,
                        myBaneSkill, myUpgrades, myElementalModifier,
                        myDamageBonusModifiers, enDamageReductionModifiers,
                        myNumberOfMultiHits, enKyrieEleisonEffect,
                        mySizeModifier, mySkillModifiers : longint;

                        enDef, enVitDef : longint;

                        mySpeedMods, myWeaponDelay, myWeaponLevel : longint;

                        statpoints : longint;
                        neededstatpoints, releasedstatpoints : longint;

                        falconDmg, steelCrowSL, ICSL,
                        swingDmg, falconDmgPm, swingDmgPm,
                        bowAtk, myArrowAtk: longint;

                        swingsPm, falconPercentage, myCritical,
                        weaponAtkMax, weaponAtkMin, weaponAtkCrit,
                        swingMaxDmg, swingMinDmg, swingCritDmg, swingAvgDmg,
                        ICImprovementRate : real;

                        alldmg, prevmaxdmg : longint;

                        function getAgi: longint;
                        begin
                        getAgi := trunc((myBaseAgi + myAgiPlus)*ICImprovementRate)
                        end;

                        function getDex: longint;
                        begin
                        getDex := trunc((myBaseDex + myDexPlus)*ICImprovementRate)
                        end;

                        function increase(var param: longint) : boolean;
                        begin
                        neededstatpoints := ((param - 1) div 10) + 2;

                         if (statpoints >= neededstatpoints) and (param < 99) then
                         begin
                             inc(param);
                             dec(statpoints, neededstatpoints);
                             increase := true;
                         end else begin
                             increase := false;
                         end;
                        

                        end;

                        function increaseable(var param: longint) : boolean;
                        begin
                        neededstatpoints := ((param - 1) div 10) + 2;

                         if (statpoints >= neededstatpoints) and (param < 99) then
                         begin
                             increaseable := true;
                         end else begin
                             increaseable := false;
                         end;
                        

                        end;

                        function decrease(var param: longint) : boolean;
                        begin
                        releasedstatpoints := ((param - 2) div 10) + 2;

                         if param > 1 then
                         begin
                             dec(param);
                             inc(statpoints, releasedstatpoints);
                             decrease := true;
                         end else begin
                             decrease := false;
                         end;
                        

                        end;

                        function min(a, b : real) : real;
                        begin
                        if a > b then min := b else min := a;
                        end;

                        function max(a, b : real) : real;
                        begin
                        if a > b then max := a else max := b;
                        end;

                        function ceil(a:real):real;
                        begin;
                        if int(a) <> a then
                        ceil := int(a) + 1
                        else
                        ceil := int(a);
                        end;

                        function figsk(a: real): real;
                        begin
                        figsk := int(max(0,a));
                        end;

                        {####################################################}

                        function calcSwingDmg(weapAtk: real; crit: boolean) : real;
                        var
                        tempEnVit, tempEnDef : longint;
                        calcSwingDmgT: real;
                        begin
                        if crit then begin
                        tempEnVit := enVit; enVit := 0;
                        tempEnDef := enDef; enDef := 0;
                        end;

                        calcSwingDmgT := int(
                        (
                        int(
                        (
                        figsk(
                        (
                        getDex + sqr(getDex div 10) +
                        ((myBaseStr + myStrPlus) div 5) + ((myBaseLuk + myLukPlus) div 5) +
                        myUpgradeBonus + myImpositioManus + myATKCards +
                        (weapAtk * mySizeModifier)
                        ) * mySkillModifiers * (1 - enDEF/100)
                        - enVitDEF + myBaneSkill + myUpgrades
                        ) + myEnvenomSkill
                        ) * myElementalModifier * myDamageBonusModifiers * enDamageReductionModifiers
                        ) * myNumberOfMultiHits - enKyrieEleisonEffect
                        ) / myNumberOfMultiHits
                        );

                        if crit then begin
                        enVit := tempEnVit;
                        enDef := tempEnDef;
                        end;

                        calcSwingDmg := calcSwingDmgT;

                        end;

                        {####################################################}

                        function calculateDmgPm: longint;
                        begin

                        swingsPm := 3000/(mySpeedMods * (myWeaponDelay - (((myWeaponDelaygetAgi) div 25) +
                        ((myWeaponDelay
                        getDex) div 100))/10));
                        write (' swpm ', swingsPm:5:2);
                        falconPercentage := 0.3*(myBaseLuk + myLukPlus);
                        write (' falconprctg ', falconpercentage:5:2);
                        myCritical := 1 + (myBaseLuk + myLukPlus)0.3;
                        write (' cri ', mycritical:5:2);
                        falconDmg := 5
                        (6SteelCrowSL + (40 + (getDex div 10) + ((myBaseInt + myIntPlus) div 2))2);
                        write (' falcondmg ', falcondmg);
                        weaponAtkMin := ceil(bowATK/100
                        min(bowATK, getDex
                        (0.8+0.2*myWeaponLevel)));

                        weaponAtkMax := int(max(bowATK, bowATK/100min(bowATK, getDex(0.8+0.2*myWeaponLevel))) + myArrowATK - 1);

                        weaponAtkCrit := bowAtk + myArrowAtk;

                        {!}
                        swingMinDmg := calcSwingDmg(weaponAtkMin , false); {nocrit}
                        swingMaxDmg := calcSwingDmg(weaponAtkMax , false); {nocrit}
                        swingCritDmg := calcSwingDmg(weaponAtkCrit, true); {crit}

                        swingAvgDmg := 0.5*(swingMaxDmg + swingMinDmg);
                        {!}

                        write (' swingdmgs [', swingMindmg:5:2, ' ', swingMaxDmg:5:2, ' ', swingCritdmg:5:2, '] ');

                        swingDmgPm := trunc(swingsPm*(1 - myCritical/100)swingAvgDmg) + trunc(swingsPm(myCritical/100) * swingCritDmg);
                        falconDmgPm := trunc(swingsPm*(falconPercentage/100)*falconDmg);

                        alldmg := swingDmgPm + falconDmgPm;

                        write('dmgpm [', swingdmgpm, ' + ', falcondmgpm, ' = ', alldmg, '] ');

                        calculatedmgpm := alldmg;
                        end;

                        {####################################################}

                        begin

                        prevmaxdmg := 0;

                        {initialising, statpoints = 1273}
                        {we are changing only AGI, DEX and LUK, considering Int as 9}

                        statpoints := 1273;

                        myBaseStr := 1; myStrPlus := 4 + 0; {right number for clothes pluses}
                        myBaseAgi := 1; myAgiPlus := 6 + 0;
                        myBaseVit := 1; myVitPlus := 2 + 0;
                        myBaseInt := 1; myIntPlus := 4 + 0;
                        myBaseDex := 1; myDexPlus := 10 + 10;
                        myBaseLuk := 1; myLukPlus := 4 + 0;

                        enStr := 0;
                        enAgi := 0;
                        enVit := 70;
                        enInt := 0;
                        enDex := 0;
                        enLuk := 0;

                        myImpositioManus := 0;
                        myUpgradeBonus := 0;
                        myAtkCards := 0;
                        myEnvenomSkill := 0;
                        myBaneSkill := 0;
                        myUpgrades := 0;
                        myElementalModifier := 1;
                        myDamageBonusModifiers := 1;
                        enDamageReductionModifiers := 1;
                        myNumberOfMultiHits := 1;
                        enKyrieEleisonEffect := 0;
                        mySizeModifier := 1;
                        mySkillModifiers := 1; {3.8 for double strafe}

                        enDef := 50;

                        enVitDef := enVIT + (sqr(enVIT div 20)-1) div 2; {he's monster}

                        steelCrowSL := 10;
                        ICSL := 10;

                        {hb}

                        bowAtk := 125;
                        myArrowAtk := 25;
                        myWeaponDelay := 60;
                        myWeaponLevel := 3;

                        mySpeedMods := 1;

                        {init complete}

                        if ICSL > 0 then ICImprovementRate := 1 + (ICSL+2)/100;

                        while myBaseInt <> 14 do increase(myBaseInt);

                        while true do begin
                        {agi-increasing cycle}
                        while true do begin
                        {dex-increasing cycle}
                        while true do begin
                        {luk-increasing cycle}
                        {###} if not increaseable(myBaseAgi) and not increaseable(myBaseDex)
                        {###} and not increaseable(myBaseLuk) then
                        {###} begin
                        {###} write('AGI ', myBaseAgi,'+', myAgiPlus,' [',getAgi,']',
                        {###} ' DEX ', myBaseDex,'+', myDexPlus,' [',getDex,']',
                        {###} ' LUK ', myBaseLuk,'+', myLukPlus, ' *');
                        {###} if calculateDmgPm > prevmaxdmg then
                        {###} begin
                        {###} writeln ('!!!');
                        {###} prevmaxdmg := alldmg;
                        {###} end else writeln;
                        {###} end;
                        if not increase(myBaseLuk) then break;
                        end;
                        while decrease(myBAseLuk) do begin end;
                        if not increase(myBaseDex) then break;
                        end;
                        while decrease(myBAseDex) do begin end;
                        while decrease(myBaseLuk) do begin end;
                        if not increase(myBaseAgi) then break;
                        end;

                        end.[/code:17hy64tm]

                        делаешь

                        [code:17hy64tm]hunter.exe > hun.txt[/code:17hy64tm]

                        и в hun.txt ищешь последнюю строку с восклецательными знаками) это и будет супер-мега-билд))

                        для вит 70 деф 50 монстра результат такой:

                        [code:17hy64tm]AGI 79+6 [95] DEX 79+20 [110] LUK 76+4 * swpm 98.04 falconprctg 24.00 cri 25.00 falcondmg 900 swingdmgs [128.00 140.00 324.00] dmgpm [17793 + 21176 = 38969] !!![/code:17hy64tm]

                        упс, обнаружил ошибку: крит учитывает def... но исправлять лениво) UPDATE: исправил, криво, косо, но исправил))

                        1 ответ Последний ответ Ответить Цитировать 0
                        • sivkaS Не в сети
                          sivka
                          отредактировано

                          ТаргаШ,
                          Отшельник,

                          вы меня в сети найти не можете наверное, у мя в сутки раз IP
                          меняется, поэтому я не всегда на сервере который я указал выше.

                          я все серваки у себя выкинул только один оставил, думаю терь
                          легче будет меня найти:
                          <!-- m --><a class="postlink" href="ed2k://|server|195.245.244.243|4661|/">ed2k://|server|195.245.244.243|4661|/</a><!-- m -->

                          1 ответ Последний ответ Ответить Цитировать 0
                          • sivkaS Не в сети
                            sivka
                            отредактировано

                            mjaffk,

                            посмотрим, буду писать свой статс-кальк может у тебя какой
                            алгоритм слябзю 😉

                            я просто хотел посмотреть на комфортность и проверить
                            юзабельность твоего калькулятора 😉

                            1 ответ Последний ответ Ответить Цитировать 0
                            • sivkaS Не в сети
                              sivka
                              отредактировано

                              всем привет!

                              новый набор супер-пупер калькуляторов готов 🙂

                              <!-- m --><a class="postlink" href="ed2k://|file|sivkas_ragnarok_calculator_133.rar|260841|807FD84FF284AA5D12B6F4A03AE56C71|/">ed2k://|file|sivkas_ragnarok_calculator ... 3AE56C71|/</a><!-- m -->

                              <!-- m --><a class="postlink" href="ed2k://|file|bitmap_base_v10.rar|14099721|581034935EF901150C7A421E9DD2B110|/">ed2k://|file|bitmap_base_v10.rar|140997 ... 9DD2B110|/</a><!-- m -->

                              более подробная информацыя на первой странице!

                              sivka

                              PS: будут вопросы обращайтесь!

                              1 ответ Последний ответ Ответить Цитировать 0
                              • sivkaS Не в сети
                                sivka
                                отредактировано

                                пару фоточек 🙂

                                1 ответ Последний ответ Ответить Цитировать 0
                                • 4e6yp4 Не в сети
                                  4e6yp
                                  отредактировано

                                  Есть большое желание заценить данный труд - не мог бы кто-нибудь выложить файл в более доступное место?
                                  Andy the Skrontz - ты вроде собирался - может сделаешь доброе дело?

                                  1 ответ Последний ответ Ответить Цитировать 0
                                  • sivkaS Не в сети
                                    sivka
                                    отредактировано

                                    готово!

                                    версию v1.33.00 можно тянуть с FTP сервера:

                                    ftp://noname:noname@sivka.no-ip.info

                                    доступ ограничен на 2 клинта, максимальный download 10k/s.

                                    sivka

                                    1 ответ Последний ответ Ответить Цитировать 0
                                    • Кай КрапивникК Не в сети
                                      Кай Крапивник
                                      отредактировано

                                      @sivka:
                                      новый набор супер-пупер калькуляторов готов 🙂

                                      <!-- m --><a class="postlink" href="ed2k://|file|sivkas_ragnarok_calculator_133.rar|260841|807FD84FF284AA5D12B6F4A03AE56C71|/">ed2k://|file|sivkas_ragnarok_calculator ... 3AE56C71|/</a><!-- m -->

                                      <!-- m --><a class="postlink" href="ed2k://|file|bitmap_base_v10.rar|14099721|581034935EF901150C7A421E9DD2B110|/">ed2k://|file|bitmap_base_v10.rar|140997 ... 9DD2B110|/</a><!-- m -->

                                      более подробная информацыя на первой странице!
                                      PS: будут вопросы обращайтесь!

                                      это осел?

                                      1 ответ Последний ответ Ответить Цитировать 0
                                      • Кай КрапивникК Не в сети
                                        Кай Крапивник
                                        отредактировано

                                        с фтп че то картинки не грузятся, говорит логин/пасс икоррект, кальк слил

                                        хех, терь начало качать

                                        1 ответ Последний ответ Ответить Цитировать 0
                                        • sivkaS Не в сети
                                          sivka
                                          отредактировано

                                          Кай Крапивник,

                                          1. да осёл, найти меня можеш на <!-- m --><a class="postlink" href="ed2k://|server|195.245.244.243|4661|/">ed2k://|server|195.245.244.243|4661|/</a><!-- m -->

                                          2. странно, только что потестил -> всё работает 🙂
                                            FTP: sivka.no-ip.info
                                            ACC: noname
                                            PWD: noname

                                          1 ответ Последний ответ Ответить Цитировать 0
                                          • Кай КрапивникК Не в сети
                                            Кай Крапивник
                                            отредактировано

                                            почти докачал терь 😃 все ок

                                            1 ответ Последний ответ Ответить Цитировать 0
                                            • Первое сообщение
                                              Последнее сообщение