ну если в статах нет вложенных кондишнов то можно конечно, но это такое костылище и извращение...а если раз в пару минут делать проверочный полный пересчет? типа как в кодеках видео вроде такая фишка. базовый кадр через определенные промежутки, а потом только дельта до следующего эталонного полного. и так циклами
ну если в статах нет вложенных кондишнов то можно конечно, но это такое костылище и извращение...
а вот если есть кондишны, то никаких кэширований и т.п. быть не может по определению, т.к. нам всегда в этом случае надо пробегаться по всем зареганным в калькуляторе функциям для статы, чтобы получать всегда актуальное финальное значение с учетом условий кондишнов.
условия для юза скиллов/учета в данный момент знаечния статы в калькуляторенубский вопрос - кондишены это....?
<skill id="10001" levels="10" name="Великое Владение Мечом / Дробящим Оружием" pts_name="[s_knight_sword_blunt_mastery1]">
<stat name="icon" value="icon.skill10001" />
<stat name="magicLevel" value="{85 90 95 99 100 102 104 106 108 110}" />
<stat name="operateType" value="P" />
<for>
<set order="0x10" stat="skillCritical" value="1" />
<add order="0x40" stat="STR" value="2" />
<add order="0x40" stat="powerShock" value="75" />
<add order="0x40" stat="pAccuracy" value="8">
<using weapon="sword;buster;twohandsword;blunt;staff;twohandblunt;twohandstaff" />
</add>
<add order="0x40" stat="pAtk" value="{1689 1958 2270 2555 2895 3071 3258 3457 3667 3890}">
<using weapon="sword;buster;twohandsword;blunt;staff;twohandblunt;twohandstaff" />
</add>
<mul order="0x30" stat="pAtk" value="20;per">
<using weapon="sword;buster;twohandsword;blunt;staff;twohandblunt;twohandstaff" />
</mul>
<mul order="0x30" stat="hateBonus" value="560;per">
<using weapon="sword;buster;twohandsword;blunt;staff;twohandblunt;twohandstaff" />
</mul>
<mul order="0x30" stat="pvePDamageBonus" value="30;per" />
<mul order="0x30" stat="pvePSkillDamageBonus" value="30;per" />
<mul order="0x30" stat="pveMSkillDamageBonus" value="30;per" />
<mul order="0x30" stat="pSkillPower" value="{0 0 0 0 0 0 0 2 3 5};per" levels="8+" />
</for>
</skill>
У вас есть пример кода как такие conditions используются в калькуляторах? Все то что я видел основывается на использование conditions у скиллов. Ну перед тем как скилл использовать будет проверка на условия (conditions) . Но я не видел примеров кода где они могли бы использоватся в функцияx калькулятора. Скажем так, в L2J есть код под condition для функций калькулятора, но сами conditions не создаются при парсинге XML от брони или же прeдметов. То есть единственное место то что я видел где conditions действительно существуют, так это скиллы.условия для юза скиллов/учета в данный момент знаечния статы в калькуляторе
Кстати немного неправильно сказал. Условия как таковые существуют на придметаx, но не на функциях калькуляторов. Но вот интересно то что кто и где именно используюет conditions именно для вычисления статов.У вас есть пример кода как такие conditions используются в калькуляторах? Все то что я видел основывается на использование conditions у скиллов. Ну перед тем как скилл использовать будет проверка на условия (conditions) . Но я не видел примеров кода где они могли бы использоватся в функцияx калькулятора. Скажем так, в L2J есть код под condition для функций калькулятора, но сами conditions не создаются при парсинге XML от брони или же прeдметов. То есть единственное место то что я видел где conditions действительно существуют, так это скиллы.
Да в том же овере к примеру это повсеместно в баффах или пассивках разных используется для того чтобы например конкретизировать, при наличии какого экипированного оружия или брони давать прибавки.У вас есть пример кода как такие conditions используются в калькуляторах? Все то что я видел основывается на использование conditions у скиллов. Ну перед тем как скилл использовать будет проверка на условия (conditions) . Но я не видел примеров кода где они могли бы использоватся в функцияx калькулятора. Скажем так, в L2J есть код под condition для функций калькулятора, но сами conditions не создаются при парсинге XML от брони или же прeдметов. То есть единственное место то что я видел где conditions действительно существуют, так это скиллы.
Это видел. Но какое имеет отношение использование условий в бафаx и пассивных скиллах к калькуляторам статов? Статы ведь изменяются спомощью функций статов, а не самими эффектами/баффами/скиллами или же предметами. Я к тому что эффекты скиллов сами производят функции которые добавляются к мобу или персонажу. Ну а при пересчете определенного значения сами условия conditions не используются.Да в том же овере к примеру это повсеместно в баффах или пассивках разных используется для того чтобы например конкретизировать, при наличии какого экипированного оружия или брони давать прибавки.
Без подобного пришлось бы например для всех видов оружия заводить отдельные статы (например pAtkForSword или pAtkForBlunt), чтобы корректно считать итоговые значения при использовании разных видов оружия. Ну или передавать условия параметрами статы/эффекта.
Они в эффектах, в птс есть такая функция CheckPumpCondition, которая для эффектов типа pump (то есть все что связано с p_* эффектами)У вас есть пример кода как такие conditions используются в калькуляторах? Все то что я видел основывается на использование conditions у скиллов. Ну перед тем как скилл использовать будет проверка на условия (conditions) . Но я не видел примеров кода где они могли бы использоватся в функцияx калькулятора. Скажем так, в L2J есть код под condition для функций калькулятора, но сами conditions не создаются при парсинге XML от брони или же прeдметов. То есть единственное место то что я видел где conditions действительно существуют, так это скиллы.
<skill id="10001" fromLevel="1" toLevel="12" name="Superior Sword/Blunt Weapon Mastery" updatedFromClientData="true">
<icon>icon.skill10001</icon>
<operateType>P</operateType>
<magicLevel>
<value level="1">85</value>
<value level="2">90</value>
<value level="3">95</value>
<value level="4">99</value>
<value level="5">100</value>
<value level="6">102</value>
<value level="7">104</value>
<value level="8">106</value>
<value level="9">108</value>
<value level="10">110</value>
<value level="11">115</value>
<value level="12">120</value>
</magicLevel>
<automaticUse>NONE</automaticUse>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="p_skill_critical">
<stat>STR</stat>
</effect>
<effect name="p_stat_up">
<stat>STR</stat>
<amount>2</amount>
</effect>
<effect name="p_physical_attack">
<weaponType>
<item>SWORD</item>
<item>BUSTER</item>
<item>TWOHANDSWORD</item>
<item>BLUNT</item>
<item>STAFF</item>
<item>TWOHANDBLUNT</item>
<item>TWOHANDSTAFF</item>
</weaponType>
<amount>
<value level="1">1689</value>
<value level="2">1958</value>
<value level="3">2270</value>
<value level="4">2555</value>
<value level="5">2895</value>
<value level="6">3071</value>
<value level="7">3258</value>
<value level="8">3457</value>
<value level="9">3667</value>
<value level="10">3890</value>
<value level="11">4279</value>
<value level="12">4707</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="p_physical_attack">
<weaponType>
<item>SWORD</item>
<item>BUSTER</item>
<item>TWOHANDSWORD</item>
<item>BLUNT</item>
<item>STAFF</item>
<item>TWOHANDBLUNT</item>
<item>TWOHANDSTAFF</item>
</weaponType>
<amount>
<value level="1">15</value>
<value level="2">20</value>
<value level="3">25</value>
<value level="4">30</value>
<value level="5">35</value>
<value level="6">40</value>
<value level="7">45</value>
<value level="8">50</value>
<value level="9">55</value>
<value level="10">60</value>
<value level="11">65</value>
<value level="12">65</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="p_hit">
<weaponType>
<item>SWORD</item>
<item>BUSTER</item>
<item>TWOHANDSWORD</item>
<item>BLUNT</item>
<item>STAFF</item>
<item>TWOHANDBLUNT</item>
<item>TWOHANDSTAFF</item>
</weaponType>
<amount>8</amount>
<mode>DIFF</mode>
</effect>
<effect name="p_hate_attack">
<weaponType>
<item>SWORD</item>
<item>BUSTER</item>
<item>TWOHANDSWORD</item>
<item>BLUNT</item>
<item>STAFF</item>
<item>TWOHANDBLUNT</item>
<item>TWOHANDSTAFF</item>
</weaponType>
<amount>560</amount>
<mode>PER</mode>
</effect>
<effect name="p_pve_physical_attack_dmg_bonus">
<type>ENEMY_ALL</type>
<amount>
<value level="1">30</value>
<value level="2">33</value>
<value level="3">36</value>
<value level="4">39</value>
<value level="5">42</value>
<value level="6">45</value>
<value level="7">48</value>
<value level="8">51</value>
<value level="9">54</value>
<value level="10">57</value>
<value level="11">61</value>
<value level="12">65</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="p_pve_physical_skill_dmg_bonus">
<type>ENEMY_ALL</type>
<amount>
<value level="1">30</value>
<value level="2">33</value>
<value level="3">36</value>
<value level="4">39</value>
<value level="5">42</value>
<value level="6">45</value>
<value level="7">48</value>
<value level="8">51</value>
<value level="9">54</value>
<value level="10">57</value>
<value level="11">61</value>
<value level="12">65</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="p_skill_power" fromLevel="8" toLevel="12">
<amount>
<value level="8">1</value>
<value level="9">2</value>
<value level="10">3</value>
<value level="11">4</value>
<value level="12">5</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="p_skill_critical_probability" fromLevel="8" toLevel="12">
<amount>
<value level="8">1</value>
<value level="9">2</value>
<value level="10">3</value>
<value level="11">4</value>
<value level="12">5</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="p_physical_skill_critical_damage" fromLevel="8" toLevel="12">
<amount>
<value level="8">5</value>
<value level="9">10</value>
<value level="10">15</value>
<value level="11">17</value>
<value level="12">20</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
Я согласен что есть и работает. Но фишка в том что это не работa калькуляторa статов, а просто проверка условий работы скилла или же эффекта скилла. Ну а если еффект прекращает работу, то фсе функции эффекта будут убраны. Вот и все. Работают условия проверки (conditions) ? Конечно да. Но в смысле пересчета статов там ничего не происходит. Пересчет будет тогда когда нужно, ну например другой скилл что-то проверяет. А без кеширования у нас может пересчет постоянно проходить, даже если у тебя уж много бафов с pump видом.Они в эффектах, в птс есть такая функция CheckPumpCondition, которая для эффектов типа pump (то есть все что связано с p_* эффектами)
Он вызывается при пересчете статов CCreature::ValidateSkillModЯ согласен что есть и работает. Но фишка в том что это не работa калькуляторa статов, а просто проверка условий работы скилла или же эффекта скилла. Ну а если еффект прекращает работу, то фсе функции эффекта будут убраны. Вот и все. Работают условия проверки (conditions) ? Конечно да. Но в смысле пересчета статов там ничего не происходит. Пересчет будет тогда когда нужно, ну например другой скилл что-то проверяет. А без кеширования у нас может пересчет постоянно проходить, даже если у тебя уж много бафов с pump видом.
А в каком случае все пересчитывается?Он вызывается при пересчете статов CCreature::ValidateSkillMod
Примерно в 100 местах, если судить по вызову ValidateChanged с маской 0x100 или 0x2000А в каком случае все пересчитывается?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?