Ru-MaNGOS

Ru-MaNGOS (http://ru-mangos.ru/index.php)
-   Опкоды, Формулы, Клиент (http://ru-mangos.ru/forumdisplay.php?f=9)
-   -   Спеллы (http://ru-mangos.ru/showthread.php?t=8303)

Vai Konteh 11.10.2014 10:17

Спеллы
 
Подскажите, когда срабатывает спелл к примеру: безрассудство - ид1719,то я так понимаю ,что накладывается 3 ауры на игрока. Так вот как узнать в коде сервера выполняется ли они или узнать время выполнения?
В общем вот такая вот проблема, при срабатывании этого спелла мне удалось на 20% увеличить урон атакующему но как при окончании этого спелла вернуть базовое значение, если кто поможет с проблемой за ранее спасибо!
Код:

if (GetSpellProto()->Id == 1719)
{
    float minbasevalue, mindefferencevalue, minnewbasevalue;
    if(target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT))
    {
        SpellAuraHolder* holder = target->GetSpellAuraHolder(1719);
        Unit::AttackerSet attacker = target->getAttackers();
        for(Unit::AttackerSet::iterator itra = attacker.begin();itra != attacker.end(); ++itra)
        {
            minbasevalue = (*itra)->GetFloatValue(UNIT_FIELD_MINDAMAGE);
            mindefferencevalue = minbasevalue * 2000 /100;
            minnewbasevalue = minbasevalue + mindefferencevalue;
            (*itra)->SetFloatValue(UNIT_FIELD_MINDAMAGE, minnewbasevalue);
            if(!holder)
            {
                (*itra)->SetFloatValue(UNIT_FIELD_MINDAMAGE, minbasevalue);
                break;
            }
        }
    }
}


MaS0n 11.10.2014 11:25

Сама технология в корне неверна. Есть уже ауры и обработка целиком аур эффектов. Примеров масса в SpellAuras.cpp/SpellAuraEffects.cpp. По ID ауры есть обработка снятие/наложение и делаются действия.

Т. е вам нужно найти для спелла вашу ауру, и убедится, что она реализована. Например для аур типа Dummy нужен свой серверный скрипт.
См.
Цитата:

HandleAuraDummy
Там масса примеров, можно быстро понять что к чему, если хорошо владеете С++

Vai Konteh 11.10.2014 11:51

Да это то понятно, вопрос в другом что я не нашел ни чего подобного с чего можно было бы опереться.Если кто реально может помочь в моей проблеме ,а не писать наводящие вопросы на вопросы,за ранее спасибо!

Vai Konteh 11.10.2014 16:44

Цитата:

Сообщение от Vai Konteh (Сообщение 33355)
а не писать наводящие вопросы на вопросы

Извиняюсь за эти слова, вот только ,что дошло в коде все намного проще чем я думал! Просто я пытался в наглую менять значения у всех единиц, а оказалось при внимательном изучении кода и правильном его понимании все просто ,что все значения уже есть в переменных нужного класса,в общем Mason сори за дерзость и спасибо за совет!!!

Amaru 11.10.2014 18:25

Цитата:

Сообщение от Vai Konteh (Сообщение 33353)
Так вот как узнать в коде сервера выполняется ли они или узнать время выполнения?

https://ru.wikipedia.org/wiki/%D0%9E...87%D0%B8%D0%BA

MaS0n 12.10.2014 01:16

http://ru-mangos.ru/showthread.php?p=13813

всю тему читать запоем :)

Vai Konteh 21.10.2014 04:08

Всем привет, подскажите пожалуйста как спелу вихрь у воина изменить время восстановления, весь код перерыл примеров не нашел!
Пытался отправить клиенту пакет: SMSG_SPELL_COOLDOWN ,но он только увеличивает время восстановления ,я так понимаю что в клиенте уже есть код который изменяет время при получении какого-то пакета ,но вот какого я не знаю или может я не прав?Если кто знает подскажите пожж!
P.S. Mason cпасибо за инфу с отладкой!!!

Konctantin 21.10.2014 10:12

Кулдауны заклинаний находятся в SpellCooldowns.dbc

Den 22.10.2014 15:08

Перепутал...

Vai Konteh 26.10.2014 13:30

Всем привет, да я знаю ,что все колдауны там находятся ,только не понятно вы хотели мне посоветовать: изменить значения в SpellCooldowns.dbc или что-то другое? Кстати вот еще вопрос у этого спела вихрь есть эффект: 64, это урон от левой руки , почему не реализовано не в тринити не в мангосе?

Vai Konteh 27.10.2014 12:15

Блин вот я невежда ,все там реализовано, только не понятно почему способность наносит урон 2 раза?

Amaru 27.10.2014 14:33

Цитата:

Сообщение от Vai Konteh (Сообщение 33383)
Блин вот я невежда ,все там реализовано, только не понятно почему способность наносит урон 2 раза?

2 урон эффекта - 2 раза урон

Vai Konteh 28.10.2014 06:11

Всем здравствуйте, ну подскажите кто ни-будь, как сократить колдаун способности вихрь при условии если способность наносит 4 целям урон!Как проверить есть ли в радиусе 4 цели я понял в роди и как проверить есть ли у воина в правой руке оружие, тоже в роди разобрался ,а вот с колдауном не как не могу весь мозг уже вынес себе, если кто знает подскажите пожалуйста!

Добавлено через 1 час 57 минут
Все нашел решение, спасибо TrinityCore и их реализованной функции: void Player::ModifySpellCooldown(uint32 spellId, int32 cooldown)!!!

Vai Konteh 29.10.2014 04:19

Всем привет, кстати реализация левой руки-44949 у способности вихрь-1680 не правильная, потому-что в клиенте реализована правая рука по другому то есть наноситься нормал урон эфф. и 65% от оружия только в том случае если тип оружия для правой руки ,а другими типами на пример просто одноручным или двуручным только нормал,и исходя из этой логики левая должна работать так же ,но она наносит 2 урон-эффекта ,любым типом оружия ,то есть на сервере нет должной обработки этого события!Вот сижу думаю как исправить!

А нет блин все правильно работает, это я что-то туплю!! Но вот есть реальный вопрос, почему бывает ,что не срабатывает 64-ый эффект у спелла вихрь?

Vai Konteh 30.10.2014 15:20

Всем привет, Кружась в смертоносном вихре, вы атакуете всех противников в радиусе $a1 м, нанося каждому из них $m2% урона от оружия ближнего боя как правой, так и левой рукой. Если способность наносит урон 4 и более целям оружием в правой руке, время ее восстановления снижается до $m3 сек., это описание спелла в spell.dbc!!!Кто нибудь объясните как это расшифровать $m2% или это dbc редактор не правильно считывает данные?

qvip 30.10.2014 19:59

кажется я знаю, почему на форум больше никто не заходит...

Konctantin 30.10.2014 22:22

Просветите?

Vai Konteh 31.10.2014 06:28

народ подскажите , сколько урона должен наносить ,спелл удар?

Den 01.11.2014 13:40

Цитата:

Сообщение от qvip (Сообщение 33393)
кажется я знаю, почему на форум больше никто не заходит...

Народ хочет знать. =)))

Karazhan 01.11.2014 17:55

Версии:
1)На Cmangos форум перебрались.
2)Вов задолбал.
3)Придумайте сами XD
Цитата:

народ подскажите , сколько урона должен наносить ,спелл удар?
Код:

// SpellEffect.dbc
struct SpellEffectEntry
{
    //uint32    Id;                                          // 0        m_ID
    uint32    Effect;                                      // 73-75    m_effect
    float    EffectMultipleValue;                          // 106-108  m_effectAmplitude
    uint32    EffectApplyAuraName;                          // 100-102  m_effectAura
    uint32    EffectAmplitude;                              // 103-105  m_effectAuraPeriod
    int32    EffectBasePoints;                            // 82-84    m_effectBasePoints (don't must be used in spell/auras explicitly, must be used cached Spell::m_currentBasePoints)
    //float  unk_320_4;                                    // 169-171  3.2.0
    float    DmgMultiplier;                                // 156-158  m_effectChainAmplitude
    uint32    EffectChainTarget;                            // 109-111  m_effectChainTargets
    int32    EffectDieSides;                              // 76-78    m_effectDieSides
    uint32    EffectItemType;                              // 112-114  m_effectItemType
    uint32    EffectMechanic;                              // 85-87    m_effectMechanic
    int32    EffectMiscValue;                              // 115-117  m_effectMiscValue
    int32    EffectMiscValueB;                            // 118-120  m_effectMiscValueB
    float    EffectPointsPerComboPoint;                    // 124-126  m_effectPointsPerCombo
    uint32    EffectRadiusIndex;                            // 94-96    m_effectRadiusIndex - spellradius.dbc
    uint32    EffectRadiusMaxIndex;                        // 97-99    4.0.0
    float    EffectRealPointsPerLevel;                    // 79-81    m_effectRealPointsPerLevel
    ClassFamilyMask EffectSpellClassMask;                  // 127-129  m_effectSpellClassMask
    uint32    EffectTriggerSpell;                          // 121-123  m_effectTriggerSpell
    uint32    EffectImplicitTargetA;                        // 88-90    m_implicitTargetA
    uint32    EffectImplicitTargetB;                        // 91-93    m_implicitTargetB
    uint32    EffectSpellId;                                // new 4.0.0
    uint32    EffectIndex;                                  // new 4.0.0
    //uint32 unk;                                          // 24 - 4.2.0

    // helpers

    int32 CalculateSimpleValue() const { return EffectBasePoints; }

    uint32 GetRadiusIndex() const
    {
        if (EffectRadiusIndex != 0)
            return EffectRadiusIndex;

        return EffectRadiusMaxIndex;
    }
};

int32 EffectBasePoints; // 82-84 m_effectBasePoints (don't must be used in spell/auras explicitly, must be used cached Spell::m_currentBasePoints)

Это с Катаклизма правда, но всё таки вот - Base Point отвечают за то, сколько урона он нанесёт. В ядре же CalculateSimpleValue(Рассчитать простое значение)
Код:

UNIT_FLAG_IN_COMBAT
Не по существу вопрос конечно. Но что даёт установка этого флага скажем скриптом?
Код:

case EVENT_T_TIMER_IN_COMBAT:
            if (!m_creature->isInCombat())
                return false;

Моб будет думать, что он в бою? Или нет? Если да, то круто. Если нет, досадно!

Den 01.11.2014 21:36

Код:

case EVENT_T_TIMER_IN_COMBAT:
            if (!m_creature->isInCombat())
                return false;

Если существо не в бою, то скрипт не сработает.

Цитата:

Моб будет думать, что он в бою? Или нет? Если да, то круто. Если нет, досадно!
Моб вообще думать ничего не будет, потому что у него мозгов нету. ))))) Моб будет в бою.

Amaru 02.11.2014 00:23

Цитата:

Сообщение от Karazhan (Сообщение 33398)
Версии:
1)На Cmangos форум перебрались.
2)Вов задолбал.
3)Придумайте сами XD

4)Задолбали эмуляторы
5)Задолбались на тупые вопросы отвечать

Karazhan 02.11.2014 08:53

Цитата:

4)Задолбали эмуляторы
Глядя то, что творится на оффе - даже туда возвращаться неохото.
Цитата:

5)Задолбались на тупые вопросы отвечать
Каждому своё.
Цитата:

Моб вообще думать ничего не будет, потому что у него мозгов нету. ))))) Моб будет в бою.
Попробую ему флаг при спавне присандалить - посмотрю что выйдет.

Konctantin 02.11.2014 17:17

6) появились другие интересы.

Amaru 03.11.2014 02:12

7) Лайфят по-черному

Vladimir 04.11.2014 02:28

и чернят по лайфному)


Текущее время: 10:43. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS