Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Приоритетный Победный раж

Упомянутые в теме пользователи:

Показано с 1 по 12 из 28

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    14.04.2015
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 0 (сообщений: 0).
    Репутация: 0
    Если это не считается багом и необходимы копания со стороны игроков в поисках причины неработоспособности, тогда почему на максимальный дамаг стоит ограничение, убрали бы его, раз раны норм тикают.
    У нас случаем нигде не выкладывают код/формулы того как все это на серкле расчитыается? А то догадываться о том, как все работает, по логам и визуальным наблюдениям - довольно времязатратное занятие.

  2. #2
    Дедушка форума Аватар для ciklopper
    Регистрация
    12.01.2012
    Адрес
    SPb
    Сообщений
    6,461
    Поблагодарил(а)
    671
    Получено благодарностей: 1,541 (сообщений: 904).
    Репутация: 2676
    Цитата Сообщение от Nicholay Посмотреть сообщение
    У нас случаем нигде не выкладывают код/формулы того как все это на серкле расчитыается? А то догадываться о том, как все работает, по логам и визуальным наблюдениям - довольно времязатратное занятие.
    Там код такой, что одна функция переход в другую, та еще использует 10 и т.д. в итоге кода типо это работает вот так, его просто напросто нет, а так же, если имеются коэффициенты от апа или тому подобные то они хранятся в SQL базе, а еще часть данных хранится в dbc файлах, которые хранятся, как на сервере так и в клиенте у игрока и должны совпадать.

    https://github.com/TrinityCore/Trini...scripts/Spells
    https://github.com/TrinityCore/Trini...ll_warrior.cpp
    Код:
    // -12162 - Deep Wounds
    class spell_warr_deep_wounds : public SpellScriptLoader
    {
        public:
            spell_warr_deep_wounds() : SpellScriptLoader("spell_warr_deep_wounds") { }
    
            class spell_warr_deep_wounds_SpellScript : public SpellScript
            {
                PrepareSpellScript(spell_warr_deep_wounds_SpellScript);
    
                bool Validate(SpellInfo const* /*spellInfo*/) override
                {
                    if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_2) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_3))
                        return false;
                    return true;
                }
    
                void HandleDummy(SpellEffIndex /*effIndex*/)
                {
                    int32 damage = GetEffectValue();
                    Unit* caster = GetCaster();
                    if (Unit* target = GetHitUnit())
                    {
                        ApplyPct(damage, 16 * GetSpellInfo()->GetRank());
    
                        SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC);
                        uint32 ticks = uint32(spellInfo->GetDuration()) / spellInfo->Effects[EFFECT_0].Amplitude;
    
                        // Add remaining ticks to damage done
                        if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC, EFFECT_0, caster->GetGUID()))
                            damage += (aurEff->GetAmount() + aurEff->GetBonusAmount()) * aurEff->GetDonePct() * int32(ticks - aurEff->GetTickNumber());
    
                        damage /= int32(ticks);
    
                        caster->CastCustomSpell(target, SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC, &damage, NULL, NULL, true);
                    }
                }
    
                void Register() override
                {
                    OnEffectHitTarget += SpellEffectFn(spell_warr_deep_wounds_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
                }
            };
    
            SpellScript* GetSpellScript() const override
            {
                return new spell_warr_deep_wounds_SpellScript();
            }
    };
    Так работает на паблик ядре, у wowcircle, ядро более старго образца, но со своими наработками за N лет, так что оно сильно отличается, но если вы сделаете верный код, то думаю разработчик сможет его интегрировать под это ядро.
    Мой канал: https://www.youtube.com/c/CiklopperPlay
    Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.

    Циклоппер x300 Ршам

    Этот мир спасёт шаман танк!

  3. 1 пользователь сказал cпасибо ciklopper за это полезное сообщение:

    alexdubovyck (12.08.2016)

Похожие темы

  1. Ответов: 5
    Последнее сообщение: 09.12.2015, 22:00
  2. Ответов: 1
    Последнее сообщение: 25.08.2014, 20:01
  3. Ответов: 4
    Последнее сообщение: 28.12.2012, 12:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •