• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Где в исходниках найти расчет крита?
codys
Скаут
А точнее в какой переменной это дело хранится, или какая функция отвечает за шанс крита ( у мага к примеру ), и в каком файле исходников искать. надеюсь понятно написал.

И еще вот кусок кода

Что делает эта функция, желательно по подробней чтобы самому разобраться. Спасибо
Или например в скайпе сможет кто-нибудь объяснить, буду благодарен
Сообщение # 1 отредактировано codys - Вторник, 15.07.2014, 19:33
_dm666
<3 Death Metal
Цитата codys ()
Что делает эта функция

Цитата codys ()
if (AuraEffect* aurEff = GetCaster()->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_MAGE, ICON_MAGE_IMPROVED_MANA_GEM, EFFECT_0))

Если мы получаем эффект этой ауры, то
Цитата codys ()
int32 bp = CalculatePct(GetCaster()->GetMaxPower(POWER_MANA), aurEff->GetAmount());

рассчитываем basepoints( количество восполняемой маны в данном случаем) и
Цитата codys ()
GetCaster()->CastCustomSpell(GetCaster(), SPELL_MAGE_IMPROVED_MANA_GEM_TRIGGERED, &bp, &bp, NULL, true);

кастуем триггерный спел.
Сообщение # 2 написано 16.07.2014 в 00:28
codys
Скаут
Спасибо! А не подскажешь в каком файле для мага крит расчитывается?
Сообщение # 3 написано 16.07.2014 в 06:47
_dm666
<3 Death Metal
Нет, не знаю.
Сообщение # 4 написано 16.07.2014 в 09:09
admiirall
Центурион
codys, крипт рассчитывается для всех сразу, а не для каждого класса по отдельности насколько я помню. если почитать комиты https://github.com/ProjectSkyfire/SkyFire_5xx/commits/master можно найти это..
Сообщение # 5 написано 16.07.2014 в 12:28
codys
Скаут
Спасибо
Сообщение # 6 написано 16.07.2014 в 21:12
infinium
Маршал
Если я не ошибаюсь, то крит имеет разные подкатегории например такие как мили, рендж, спелл. Для любого спела можно выставить свой шанс. Вообще это довольно широкая тема, чтобы в пару строк можно было дать ответ тс.
Сообщение # 7 написано 16.07.2014 в 21:17
staford11
^s†af0rd f0rever^
Цитата admiirall ()
крипт рассчитывается для всех сразу, а не для каждого класса по отдельности

Да, но что мешает добавить проверку на класс?
src/server/game/Entities/Unit/StatSystem.cpp:
Код
void Player::UpdateSpellCritChance(uint32 school)
{
         // For normal school set zero crit chance
         if (school == SPELL_SCHOOL_NORMAL)
         {
         SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f);
         return;
         }
         // For others recalculate it from:
         float crit = 0.0f;
         // Crit from Intellect
         crit += GetSpellCritFromIntellect();
         // Increase crit from SPELL_AURA_MOD_SPELL_CRIT_CHANCE
         crit += GetTotalAuraModifier(SPELL_AURA_MOD_SPELL_CRIT_CHANCE);
         // Increase crit from SPELL_AURA_MOD_CRIT_PCT
         crit += GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_PCT);
         // Increase crit by school from SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL
         crit += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, 1<<school);
         // Increase crit from spell crit ratings
         crit += GetRatingBonusValue(CR_CRIT_SPELL);

         // Store crit value
+      if (getClass() == CLASS_MAGE)
+         SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1 + school, crit); // в этой формуле ты можешь увеличивать или уменьшать крит магам как угодно
+      else
             SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1 + school, crit);
}
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 8 отредактировано staford11 - Среда, 16.07.2014, 21:33
codys
Скаут
staford11, Спасибо, это то что нужно!
Сообщение # 9 написано 17.07.2014 в 10:50
  • Страница 1 из 1
  • 1
Поиск: