|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Где в исходниках найти расчет крита? |
Где в исходниках найти расчет крита? |
А точнее в какой переменной это дело хранится, или какая функция отвечает за шанс крита ( у мага к примеру ), и в каком файле исходников искать. надеюсь понятно написал.
И еще вот кусок кода Что делает эта функция, желательно по подробней чтобы самому разобраться. Спасибо Или например в скайпе сможет кто-нибудь объяснить, буду благодарен |
if (AuraEffect* aurEff = GetCaster()->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_MAGE, ICON_MAGE_IMPROVED_MANA_GEM, EFFECT_0)) Если мы получаем эффект этой ауры, то рассчитываем basepoints( количество восполняемой маны в данном случаем) и GetCaster()->CastCustomSpell(GetCaster(), SPELL_MAGE_IMPROVED_MANA_GEM_TRIGGERED, &bp, &bp, NULL, true); кастуем триггерный спел.
Сообщение # 2 написано 16.07.2014 в 00:28
|
Если я не ошибаюсь, то крит имеет разные подкатегории например такие как мили, рендж, спелл. Для любого спела можно выставить свой шанс. Вообще это довольно широкая тема, чтобы в пару строк можно было дать ответ тс.
Сообщение # 7 написано 16.07.2014 в 21:17
|
Да, но что мешает добавить проверку на класс? 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); } |
| |||
| |||