|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером |
|
Опции темы | Поиск в этой теме | Опции просмотра |
11.10.2014, 10:17 | #1 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Спеллы
Подскажите, когда срабатывает спелл к примеру: безрассудство - ид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; } } } } Последний раз редактировалось Konctantin; 21.10.2014 в 19:00. Причина: code tag |
11.10.2014, 11:25 | #2 | |
Модератор
|
Сама технология в корне неверна. Есть уже ауры и обработка целиком аур эффектов. Примеров масса в SpellAuras.cpp/SpellAuraEffects.cpp. По ID ауры есть обработка снятие/наложение и делаются действия.
Т. е вам нужно найти для спелла вашу ауру, и убедится, что она реализована. Например для аур типа Dummy нужен свой серверный скрипт. См. Цитата:
|
|
Пользователь сказал cпасибо: | Vai Konteh (11.10.2014) |
11.10.2014, 11:51 | #3 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Да это то понятно, вопрос в другом что я не нашел ни чего подобного с чего можно было бы опереться.Если кто реально может помочь в моей проблеме ,а не писать наводящие вопросы на вопросы,за ранее спасибо!
|
11.10.2014, 16:44 | #4 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Извиняюсь за эти слова, вот только ,что дошло в коде все намного проще чем я думал! Просто я пытался в наглую менять значения у всех единиц, а оказалось при внимательном изучении кода и правильном его понимании все просто ,что все значения уже есть в переменных нужного класса,в общем Mason сори за дерзость и спасибо за совет!!!
|
11.10.2014, 18:25 | #5 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
|
|
12.10.2014, 01:16 | #6 |
Модератор
|
|
21.10.2014, 04:08 | #7 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Всем привет, подскажите пожалуйста как спелу вихрь у воина изменить время восстановления, весь код перерыл примеров не нашел!
Пытался отправить клиенту пакет: SMSG_SPELL_COOLDOWN ,но он только увеличивает время восстановления ,я так понимаю что в клиенте уже есть код который изменяет время при получении какого-то пакета ,но вот какого я не знаю или может я не прав?Если кто знает подскажите пожж! P.S. Mason cпасибо за инфу с отладкой!!! |
22.10.2014, 15:08 | #9 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
Перепутал...
Последний раз редактировалось Den; 25.10.2014 в 09:13. |
26.10.2014, 13:30 | #10 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Всем привет, да я знаю ,что все колдауны там находятся ,только не понятно вы хотели мне посоветовать: изменить значения в SpellCooldowns.dbc или что-то другое? Кстати вот еще вопрос у этого спела вихрь есть эффект: 64, это урон от левой руки , почему не реализовано не в тринити не в мангосе?
|
27.10.2014, 12:15 | #11 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Блин вот я невежда ,все там реализовано, только не понятно почему способность наносит урон 2 раза?
|
27.10.2014, 14:33 | #12 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
|
28.10.2014, 06:11 | #13 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Всем здравствуйте, ну подскажите кто ни-будь, как сократить колдаун способности вихрь при условии если способность наносит 4 целям урон!Как проверить есть ли в радиусе 4 цели я понял в роди и как проверить есть ли у воина в правой руке оружие, тоже в роди разобрался ,а вот с колдауном не как не могу весь мозг уже вынес себе, если кто знает подскажите пожалуйста!
Добавлено через 1 час 57 минут Все нашел решение, спасибо TrinityCore и их реализованной функции: void Player::ModifySpellCooldown(uint32 spellId, int32 cooldown)!!! |
29.10.2014, 04:19 | #14 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Всем привет, кстати реализация левой руки-44949 у способности вихрь-1680 не правильная, потому-что в клиенте реализована правая рука по другому то есть наноситься нормал урон эфф. и 65% от оружия только в том случае если тип оружия для правой руки ,а другими типами на пример просто одноручным или двуручным только нормал,и исходя из этой логики левая должна работать так же ,но она наносит 2 урон-эффекта ,любым типом оружия ,то есть на сервере нет должной обработки этого события!Вот сижу думаю как исправить!
А нет блин все правильно работает, это я что-то туплю!! Но вот есть реальный вопрос, почему бывает ,что не срабатывает 64-ый эффект у спелла вихрь? Последний раз редактировалось Vai Konteh; 29.10.2014 в 11:50. |
30.10.2014, 15:20 | #15 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Всем привет, Кружась в смертоносном вихре, вы атакуете всех противников в радиусе $a1 м, нанося каждому из них $m2% урона от оружия ближнего боя как правой, так и левой рукой. Если способность наносит урон 4 и более целям оружием в правой руке, время ее восстановления снижается до $m3 сек., это описание спелла в spell.dbc!!!Кто нибудь объясните как это расшифровать $m2% или это dbc редактор не правильно считывает данные?
|
30.10.2014, 19:59 | #16 |
Новичок
Регистрация: 05.09.2010
Сообщений: 26
Сказал(а) спасибо: 2
Поблагодарили 4 раз(а) в 3 сообщениях
|
кажется я знаю, почему на форум больше никто не заходит...
|
31.10.2014, 06:28 | #18 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
народ подскажите , сколько урона должен наносить ,спелл удар?
|
01.11.2014, 13:40 | #19 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
|
01.11.2014, 17:55 | #20 | |
Пользователь
Регистрация: 26.09.2012
Сообщений: 93
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 3 сообщениях
|
Версии:
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; } }; Это с Катаклизма правда, но всё таки вот - Base Point отвечают за то, сколько урона он нанесёт. В ядре же CalculateSimpleValue(Рассчитать простое значение) Код:
UNIT_FLAG_IN_COMBAT Код:
case EVENT_T_TIMER_IN_COMBAT: if (!m_creature->isInCombat()) return false;
__________________
So foolish. Последний раз редактировалось Karazhan; 01.11.2014 в 18:02. |
|
01.11.2014, 21:36 | #21 | |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
Код:
case EVENT_T_TIMER_IN_COMBAT: if (!m_creature->isInCombat()) return false; Цитата:
Последний раз редактировалось NeatElves; 02.11.2014 в 00:10. |
|
02.11.2014, 00:23 | #22 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
|
02.11.2014, 08:53 | #23 | |||
Пользователь
Регистрация: 26.09.2012
Сообщений: 93
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 3 сообщениях
|
Цитата:
Цитата:
Цитата:
__________________
So foolish. |
|||
03.11.2014, 02:12 | #25 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
7) Лайфят по-черному
|
04.11.2014, 02:28 | #26 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
и чернят по лайфному)
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Спеллы | ObeDve | Баг-репорты | 0 | 01.11.2011 15:15 |
Спеллы (создание/иземенение) | Apocaliptyn | Корзина | 2 | 25.06.2011 17:12 |
[patch/dev]Спеллы квестов Охота на драконов [11919,11940] | virusav | Патчи на рассмотрении | 4 | 19.03.2011 00:20 |
[patch]Спеллы, учитывающие пол цели | virusav | Принятые патчи | 1 | 15.07.2010 05:32 |
Некоторые Спеллы | MaxXx2021 | Корзина | 7 | 31.03.2010 07:53 |