Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент

Важная информация

Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2011, 16:48   #1
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию Каст заклинания на ходу

В клизме добавили возможность кастовать некоторые заклинания на ходу. Наблюдая за клиентом я думаю, что нужно отправить какой-то флаг клиенту в SMSG_CAST_GO чтобы каст у него не прерывался при движении. Кто-нибудь в курсе что это за флаг?
HuntsMan вне форума   Ответить с цитированием
Старый 18.06.2011, 17:05   #2
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от HuntsMan Посмотреть сообщение
В клизме добавили возможность кастовать некоторые заклинания на ходу. Наблюдая за клиентом я думаю, что нужно отправить какой-то флаг клиенту в SMSG_CAST_GO чтобы каст у него не прерывался при движении. Кто-нибудь в курсе что это за флаг?
Да уж открытие они и на вотлк есть. Lord Marrowgar. У него огонь движется по прямой и там идет каст с 0.2с каст таймером. все кастуется при движении. Причем я много встречал спеллов которые кастуются на ходу.
MaxXx2021 вне форума   Ответить с цитированием
Старый 18.06.2011, 21:10   #3
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Да уж открытие они и на вотлк есть. Lord Marrowgar. У него огонь движется по прямой и там идет каст с 0.2с каст таймером. все кастуется при движении. Причем я много встречал спеллов которые кастуются на ходу.
Наш спелл посылает при попытке движения CMSG_CANCEL_CAST, поэтому нужно как-то заставить клиент не прерывать каст при движении. Что собственно я и хочу. На сервере продолжать каст 0 проблем, а вот как заставить клиент его не прерывать - это уже сложность.
Цитата:
Некоторые гоблинкие мины всегда можно было кастовать на ходу.
Не встречал таких. Можно конкретно пример?
Цитата:
Да у паладина половина спелов таких
Я не про инстант касты, а про реально кастующиеся спеллы при движении (вы двигаетесь, а полоска каста бежит)
Пример: http://ru.wowhead.com/spell=56641. http://ru.wowhead.com/spell=2948 + http://ru.wowhead.com/spell=86914

Последний раз редактировалось HuntsMan; 18.06.2011 в 21:14.
HuntsMan вне форума   Ответить с цитированием
Старый 18.06.2011, 17:12   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Можно подумать раньше таких спелов не было...
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 18.06.2011, 17:17   #5
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Некоторые гоблинкие мины всегда можно было кастовать на ходу.
SeT вне форума   Ответить с цитированием
Старый 18.06.2011, 20:18   #6
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Да у паладина половина спелов таких
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 18.06.2011, 20:39   #7
Rave
Новичок
 
Регистрация: 30.04.2010
Сообщений: 12
Сказал(а) спасибо: 5
Поблагодарили 0 раз(а) в 0 сообщениях
Rave На верном пути
По умолчанию

К примеру?
Rave вне форума   Ответить с цитированием
Старый 18.06.2011, 21:18   #8
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

К примеру вот, квесты бк:
http://www.wowhead.com/quest=11008
http://www.wowhead.com/quest=11023

Каст идет при движении.
Den вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (18.06.2011)
Старый 18.06.2011, 21:51   #9
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Как я понял, на ограничения по движению влияет Interrupt Flags (у спеллов предоставленных Den он равен 0, и поэтому клиент нормально кастует). Но например у того же 56641 Interrupt Flags: 0x0000000F. Поэтому клиент будет слать и шлет CMSG_CANCEL_CAST при движении. Я думаю, что нужно какой-то флаг указывать в SMSG_SPELL_GO (меняющий Interrupt Flags у клиента чтоли) чтобы все ок было, но вот вопрос какой?

Есть конечно вариант захакать Spell.dbc у клиента, или забивать на CMSG_CANCEL_CAST при определенных условиях, но сами понимаете что это не тру
HuntsMan вне форума   Ответить с цитированием
Старый 19.06.2011, 01:35   #10
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Возможно это просто modifier? SMSG_SET_FLAT_SPELL_MODIFIER.
LordJZ вне форума   Ответить с цитированием
Старый 19.06.2011, 02:02   #11
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Может быть. Просто смущает следующее:
Код:
Caster: (High: Zero (0x000), Counter: 175,292,137)
Target: (High: Zero (0x000), Counter: 175,292,137)
Pending Cast: 22
Spell Id: Автоматическая стрельба (75)
Cast Flags: 0x00040100 262400
TicksCount: 975712495
GO Hit Target 0: (High: Unit (0xF13), Entry: 47659, Counter: 391,911)
TargetFlags: 0x00000002 TARGET_FLAG_UNIT
ObjectTarget: 247

-- Read 42 bytes, have 49
Выделенное присутствует по большей части у нужных спеллов.

Если я правильно понял, SMSG_SET_FLAT_SPELL_MODIFIER позволяет менять только BasePoints, или ещё что-то?

Последний раз редактировалось HuntsMan; 19.06.2011 в 02:05.
HuntsMan вне форума   Ответить с цитированием
Старый 19.06.2011, 04:55   #12
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

Если вопрос про ауру 330, использующуюся например в Spiritwalker's Grace, то я делал так.
Chameleon вне форума   Ответить с цитированием
Старый 19.06.2011, 05:13   #13
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Chameleon Посмотреть сообщение
Если вопрос про ауру 330, использующуюся например в Spiritwalker's Grace, то я делал так.
Т.е. клиент сам при движении под аурой не прерывает чтение заклинания?
LordJZ вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (19.06.2011)
Старый 19.06.2011, 05:54   #14
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Т.е. клиент сам при движении под аурой не прерывает чтение заклинания?
По-моему да, клиент не посылает CMSG_CANCEL_CAST, когда эта аура активна. Но т.к. дело было 3 месяца назад уже точно не помню.
Chameleon вне форума   Ответить с цитированием
Старый 19.06.2011, 08:03   #15
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Chameleon Посмотреть сообщение
По-моему да, клиент не посылает CMSG_CANCEL_CAST, когда эта аура активна.
...
В таком случае тема не имеет смысла
LordJZ вне форума   Ответить с цитированием
Старый 19.06.2011, 09:50   #16
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
В таком случае тема не имеет смысла
Вобщем-то да

Цитата:
Сообщение от Chameleon Посмотреть сообщение
По-моему да, клиент не посылает CMSG_CANCEL_CAST, когда эта аура активна. Но т.к. дело было 3 месяца назад уже точно не помню.
Не по-моему, а точно

void __cdecl Spell_C_CancelCastingSpellByMovement(C_Player * player)
Код:
      if ( v7 >= v8
        && v7 <= *(&g_spellInterruptsDB + 2)
        && (v9 = *(_DWORD *)(*(&g_spellInterruptsDB + 6) + 4 * (v7 - v8))) != 0
        && *(_BYTE *)(v9 + 20) & 1
        && !(unsigned __int8)CGUnit_C__HasAuraMatchingSpellClass(a1, 330, v6) )
      {
        Spell_C_CancelSpell(v10, 0, 1, 42);
        v1 = s_pendingCasts;
LABEL_4:
        ++v2;
        v11 += 90;
        if ( v2 >= v1 )
          return;
      }
      else
      {
LABEL_28:
        v1 = s_pendingCasts;
        ++v2;
        v11 += 90;
        if ( v2 >= s_pendingCasts )
          return;
      }
Проверяются интерапт флаги, еще что-то в новой dbc, ну и выделено красным - аура 330
MaS0n вне форума   Ответить с цитированием
Старый 19.06.2011, 10:06   #17
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Хм, тогда осталось выловить ауру, которая накладывается на персов для нужных заклинаний. Всем спасибо за помощь в изысканиях

Хм, странно, при наличии ауры на плеере (http://ru.wowhead.com/spell=86914 к примеру) клиент все равно шлет CMSG_CANCEL_CAST. Т.е. даже если дело было б в реализации на сервере, клиент поидее все равно не должен был его слать. Что за...

Add: А не, для Верного выстрела работает нормально, вот почему для таланта не хочет(

Последний раз редактировалось HuntsMan; 19.06.2011 в 11:29.
HuntsMan вне форума   Ответить с цитированием
Старый 15.10.2011, 20:44   #18
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

Не кто не решил проблему с http://ru.wowhead.com/spell=86914 ?
У этой ауры в отлии от других есть значение misc
Код:
Effect 0: Id 6 (SPELL_EFFECT_APPLY_AURA)
BasePoints = 5
Targets (1, 0) (TARGET_SELF, NO_TARGET)
Aura Id 330 (SPELL_AURA_ALLOW_CAST_WHILE_MOVING), value = 6, misc = 12 (12), miscB = 0, periodic = 0
SpellClassMask = 00000000 00000000 00000010
Возможно нужно слать клиенту какой то мод для спела, или ещё что то делать. У кого есть идеи?
Если просто игнорировать опкод отмены каста, то в клиенте визуально пропадает каст, а через время урон наносится жертве.

А может кто нибудь выложить код функции
Код:
CGUnit_C__HasAuraMatchingSpellClass
по идеи тут она должна истину вернуть, но возвращает лож.

Последний раз редактировалось NeatElves; 16.10.2011 в 15:28.
Easy вне форума   Ответить с цитированием
Старый 16.10.2011, 09:30   #19
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

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

Обычно это проверятся в отладчике напрямую, смотрится где и как идут переходы на выход из функции

Код вот :
База TOM_RUS, 4.2.2.14545

Код:
char __thiscall CGUnit_C::HasAuraMatchingSpellClass(void *this, signed int auraEffect, int a3)
{
  void *v3; // esi@1
  unsigned int v4; // ebx@2
  int v5; // edi@3
  unsigned int v6; // eax@4
  int v7; // ebx@8
  int v8; // eax@11
  int v9; // edi@13
  int v10; // esi@14
  int v11; // eax@15
  void *v13; // [sp+Ch] [bp-14h]@1
  int v14; // [sp+10h] [bp-10h]@14
  int v15; // [sp+14h] [bp-Ch]@3
  unsigned int v16; // [sp+18h] [bp-8h]@2
  unsigned int v17; // [sp+1Ch] [bp-4h]@14

  v3 = this;
  v13 = this;
  if ( !((unsigned __int8)(1 << auraEffect % 8) & *((_BYTE *)this + auraEffect / 8 + 4064))
    || (v4 = 0, v16 = 0, !CGUnit_C::GetAuraCount(this)) )
    return 0;
  v5 = 0;
  v15 = 0;
  while ( 1 )
  {
    v6 = *((_DWORD *)v3 + 932);
    if ( v6 == -1 )
      v6 = *((_DWORD *)v3 + 773);
    if ( v4 >= v6 )
    {
      v7 = 0;
    }
    else
    {
      if ( *((_DWORD *)v3 + 932) == -1 )
        v7 = v5 + *((_DWORD *)v3 + 774);
      else
        v7 = (int)((char *)v3 + v5 + 3088);
    }
    v8 = *(_DWORD *)(v7 + 8);
    if ( v8 < g_SpellDB.minIndex
      || v8 > g_SpellDB.maxIndex
      || (v9 = *((_DWORD *)g_SpellDB.Rows + v8 - g_SpellDB.minIndex)) == 0 )
      goto LABEL_21;
    v10 = 0;
    v14 = SpellGetEffects(*(_DWORD *)v9, &v17);
    if ( v17 )
      break;
LABEL_20:
    v3 = v13;
LABEL_21:
    v5 = v15 + 40;
    ++v16;
    v4 = v16;
    v15 += 40;
    if ( v16 >= CGUnit_C::GetAuraCount(v3) )
      return 0;
  }
  while ( 1 )
  {
    v11 = *(_DWORD *)(v14 + 8) + 4 * v10;
    if ( *(_DWORD *)v11 )
    {
      if ( *(_DWORD *)(*(_DWORD *)v11 + 12) == auraEffect
        && *(_WORD *)(v7 + 12) & (1 << v10)
        && SpellMatchesAuraSpellClass(a3, v9, v10) )
        return 1;
    }
    ++v10;
    if ( v10 >= v17 )
      goto LABEL_20;
  }
}
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Easy (16.10.2011)
Старый 16.10.2011, 13:02   #20
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

мдя... наверное проще всего было бы, если бы кто нибудь смог снифнуть момент вкачивания таланта поджигатель, по любому что то отправляется клиенту, так как с талом этим на ходу клиент не позволяет даже начать каст, серверу не чего не шлётся при кликанье по кнопке. Но на сколько я слышал в данный момент нет возможности снифать офф
Easy вне форума   Ответить с цитированием
Старый 16.10.2011, 13:17   #21
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Нет, я сниффал. Там ничего не шлется как и при касте спелла 75
Lordronn вне форума   Ответить с цитированием
Старый 16.10.2011, 13:25   #22
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

хм... ну не может же просто так не работать.
100% клиент блокирует, значит что то должно влиять. Мб аура несколько раз шлётся, мб бп меняются, мб в пакете ауры дополнительная инфа о которой мы не знаем прикреплена.
Easy вне форума   Ответить с цитированием
Старый 16.10.2011, 13:57   #23
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

а другие талы под 330 аурой работают? как выглядит отмена каста? вы бежите, начинаете кастовать, прилетает CMSG_CANCEL_CAST, и все?

Есть 2 вида проверок, одна - срабатывающая при любом изменении движения, т.е хоть на миллиметр сдвинулись, чек идет, вторая проверка при касте

Так вот при первой CMSG_CANCEL_CAST шлется, при 2 пока не обнаружил, там если ауры нету, идут SpellFailed 34, SpellFailed 53

Отладка бы помогла - расставить бряки на Spell_C_CancelSpell и посмотреть call stack, откуда ноги растут
MaS0n вне форума   Ответить с цитированием
Старый 16.10.2011, 14:16   #24
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

Вообщем всё что выяснил пока.
Есть аура 330 у ханта и шамы
В сервере просто проверка на 330 ауру, и если она есть, то кастовать можно.
Собственно ссылка на функцию есть выше, на скайфаер.

А есть тал мага (возможно и лока тоже, пока не проверял)

Так вот, вкачиваем тал мага и на сервере видит что аура у него 330 и не блочит.

Дальше два варианта, которые говорят о том что клиент блочит:

1) Начинаем кастовать, и потом бежать, приходит опкод CMSG_CANCEL_CAST
Если мы его просто игнорируем, то на сервере каст продолжается, и урон будет нанесён, но визуально в клиенте всё равно обрыв каста.

2) Начинаем бежать, а потом пытаемся начать кастовать - не чего не происходит, в клиенте сообщение "вы не можете этого делать на ходу" а на сервер опкод старта каста даже не приходит.

То что сервер не блочит, легко проверить ещё так:
Начинаем бежать и пишем .cast 2948, и чар начнёт кастовать, так как сервер пошлёт команду старта каста. Но стоит остановится и опять попытаться побежать, как каст прервётся опкодом отмены каста.

Добавлено через 2 минуты
Цитата:
Сообщение от MaS0n Посмотреть сообщение
Отладка бы помогла - расставить бряки на Spell_C_CancelSpell и посмотреть call stack, откуда ноги растут
беда в том, что у меня клиент 4.0.6 и у меня нет базы где есть эти функции.

Но основная проблема в том, что я не когда этого не делал И я даже не смог через IDA запустить клиент, ошибки сыпятся и не чего не выходит

Ну что ещё видно, это то что у ханта и шамы бп = 0 для аур 330, а у мага и лока бп != 0

Последний раз редактировалось NeatElves; 16.10.2011 в 15:27.
Easy вне форума   Ответить с цитированием
Старый 16.10.2011, 14:37   #25
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

если глянуть на код проверки самой функции, там есть условие при котором возвращается 1

Код:
      if ( *(_DWORD *)(*(_DWORD *)v11 + 12) == auraEffect
        && *(_WORD *)(v7 + 12) & (1 << v10)
        && SpellMatchesAuraSpellClass(a3, v9, v10) )
        return 1;
Первая часть, сверка номера эффекта, вторая проверка какой-то маски, третья - функция SpellMatchesAuraSpellClass и вот там используется новая дбц - SpellClassOption.dbc как-то так, мб там что зарыто, мб value - номер связанный с этой дбц, отладку надо, я могу сказать адрес функции этой и других нужных, но сам проверить не могу увы

Поправка - не misc, а value = basepoints, он же бп

ПС : мб бредово звучит, я посмотрел что за дбц, мб 6 - это spellfamily, попробуйте дать тал и спелл тому классу, у кого спеллфэмили 6, в кате хз кто, в личе был прист

Последний раз редактировалось MaS0n; 16.10.2011 в 14:51. Причина: Упс
MaS0n вне форума   Ответить с цитированием
Старый 16.10.2011, 14:53   #26
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

да, есть запись в дбц для этого спела
Цитата:
9749,0,0x0,0x0,0x0,3,"",
и вот в ядре структура
Код:
// SpellClassOptions.dbc
struct SpellClassOptionsEntry
{
    uint32    Id;                                           // 0        m_ID
    //uint32    modalNextSpell;                             // 1        m_modalNextSpell not used
    flag96    SpellFamilyFlags;                             // 2-4
    uint32    SpellFamilyName;                              // 5      m_spellClassSet
    //DBCString Description;                                // 6 4.0.0
};
Это видимо как раз строка
Family SPELLFAMILY_MAGE, flag 0x00000000 00000000 00000000

для ожога это
Family SPELLFAMILY_MAGE, flag 0x00000000 00000000 00000010

ну и условие для ауры
SpellClassMask = 00000000 00000000 00000010

То есть тут вроде бы всё в порядке.

Кто может проверить отладкой? Или кинуть ссылочку на мануал как вов отладить под вин 7 х64

У приста тоже отмена каста идёт от клиента.

Кстати. Если нажать правую кнопку мышки, и во время каста влево или вправо, то под талом маг побежит и каст не собьётся, то есть это как раз говорит о том что сервер не блочит.
А клиент в таком случае не шлёт опкод. но если бежать так а потом попытаться кастануть то всё равно не разрешит клиент.

Последний раз редактировалось NeatElves; 16.10.2011 в 15:27.
Easy вне форума   Ответить с цитированием
Старый 16.10.2011, 15:09   #27
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

в ПМ загляни, чтоб не флудить тут)
MaS0n вне форума   Ответить с цитированием
Старый 19.10.2011, 19:54   #28
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Распишите и тут что-ли Остальным тоже интересна эта проблема
HuntsMan вне форума   Ответить с цитированием
Старый 19.10.2011, 21:58   #29
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

да легко

Суть опущу, желающие могут взять и подебажить клиент

В функции идет проверка двух значений, одного, который считается из номера эффекта ауры и второго, значения по адресу в какой-то структуре, возможно это клиентская структура Aura. Соотвественно начат был поиск где же устанавливается значение в этот адрес.

Второе значение выставляется/изменяется только в одном месте - в функции, названной близами AuraEffectUpdateMask - внутри клиентской функции OnAuraUpdate, родителем которой является пакет хандлер SMSG_AURA_UPDATE. Там пишется значение в этот адрес, причем расчет аналогичен - по номеру эффекта ауры

Шама и хант, имеют активные эффекты, для них шлется пакет SMSG_AURA_UPDATE, а маг - не имеет, это талант, и пакет для него не шлется

По сути этот пакет для ауры/таланта мага служит активатором, который переводит состояние откл. в состояние вкл.
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (20.10.2011)
Старый 21.10.2011, 07:17   #30
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Шама и хант, имеют активные эффекты, для них шлется пакет SMSG_AURA_UPDATE, а маг - не имеет, это талант, и пакет для него не шлется

По сути этот пакет для ауры/таланта мага служит активатором, который переводит состояние откл. в состояние вкл.
общий вывод - для пассивных аур тоже необходимо отправлять SMSG_AURA_UPDATE, а текущий метод мангоса, когда обновляются только активные ауры, неверен в принципе?
кул как меня, помнится, за подобное предположение на гетмангосе обо...ли...
rsa вне форума   Ответить с цитированием
Старый 21.10.2011, 11:15   #31
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
общий вывод - для пассивных аур тоже необходимо отправлять SMSG_AURA_UPDATE, а текущий метод мангоса, когда обновляются только активные ауры, неверен в принципе?
кул как меня, помнится, за подобное предположение на гетмангосе обо...ли...
Там шлются не все, а только определенные. Иначе куева туча талантов была бы в снифах, чего я не наблюдаю.
HuntsMan вне форума   Ответить с цитированием
Старый 21.10.2011, 12:25   #32
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от HuntsMan Посмотреть сообщение
Там шлются не все, а только определенные. Иначе куева туча талантов была бы в снифах, чего я не наблюдаю.
даже единственное исключение из правила говорит что это не правило, а д...мо.
rsa вне форума   Ответить с цитированием
Старый 21.10.2011, 13:58   #33
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
даже единственное исключение из правила говорит что это не правило, а д...мо.
В каждом правиле есть исключение. Правило без исключений - это исключение из правил.
SeT вне форума   Ответить с цитированием
Старый 22.10.2011, 00:02   #34
Laise
MaNGOS Dev
 
Аватар для Laise
 
Регистрация: 09.03.2010
Сообщений: 33
Сказал(а) спасибо: 27
Поблагодарили 26 раз(а) в 11 сообщениях
Laise На верном пути
По умолчанию

Цитата:
а текущий метод мангоса, когда обновляются только активные ауры, неверен в принципе?
в SpellAuraHolder::IsNeedVisibleSlot уже больше года как добавлены отловленные исключения (общего между спеллами пока не найдено, поэтому все и разом добавить не получилось).Ауры типа SPELL_AURA_ALLOW_CAST_WHILE_MOVING может туда же ?
Laise вне форума   Ответить с цитированием
Старый 22.10.2011, 13:52   #35
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Laise Посмотреть сообщение
в SpellAuraHolder::IsNeedVisibleSlot уже больше года как добавлены отловленные исключения
разговор как раз и был после этого добавления (впрочем, точно установить не выйдет, большая часть моих писем на гетмангосе вычищена). я предполагал тогда что ауры надо обновлять и без наличия/требования наличия слота.
rsa вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Mayss (26.10.2011)
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каст триггерных спеллов virusav Баг-репорты 1 08.12.2010 16:54
[10696] Каст спеллов с EffectImplicitTarget на нпц virusav Принятые патчи 2 08.11.2010 02:09
Каст спеллов объектами virusav Запросы 9 30.05.2010 10:01
Каст спелла объектом на нпц virusav Новичкам 9 13.03.2010 14:19


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


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot