Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Отвергнутые патчи

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

Отвергнутые патчи Патчи, отвергнутые от приёма в GIT

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2011, 16:40   #1
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию [FIX] SMSG_ATTACKSTOP

Стало интересно, что же это за неизвестные 4 байта. Копая снифф я заметил, что значение колеблется в зависимости от типа таргета(victim - а) Если victim == player - 1, а если unit или pet - 0

Код:
--- /src/game/Unit.cpp	Thu Feb 24 12:31:30 2011
+++ /src/game/Unit.cpp	Sun Feb 27 16:36:36 2011
@@ -2855,7 +2855,7 @@
     WorldPacket data( SMSG_ATTACKSTOP, (4+16) );            // we guess size
     data << GetPackGUID();
     data << victim->GetPackGUID();                          // can be 0x00...
-    data << uint32(0);                                      // can be 0x1
+    data << uint32(victim->GetTypeId()==TYPEID_PLAYER ? 1 : 0); // victim is player
     SendMessageToSet(&data, true);
     DETAIL_FILTER_LOG(LOG_FILTER_COMBAT, "%s %u stopped attacking %s %u", (GetTypeId()==TYPEID_PLAYER ? "player" : "creature"), GetGUIDLow(), (victim->GetTypeId()==TYPEID_PLAYER ? "player" : "creature"),victim->GetGUIDLow());

Последний раз редактировалось Lordronn; 27.02.2011 в 16:45.
Lordronn вне форума   Ответить с цитированием
Старый 27.02.2011, 17:59   #2
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Почему 4 байта, а не 1? В некоторых других пакетах bool передается в 1 байте.
zergtmn вне форума   Ответить с цитированием
Старый 27.02.2011, 18:11   #3
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Также в некоторых пакетах почему-то булл идет в 4 байта. В коде мангоса и тринити отправляются 4 байта, в парсере своем тоже читаю 4 байта и все нормально - не крашит.
Lordronn вне форума   Ответить с цитированием
Старый 27.02.2011, 18:14   #4
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Предположение не верно.

Код:
S->C: SMSG_ATTACKSTOP (0x144), Size: 20, Timestamp: 2010-09-17 07:29:06
-----------------------------------------------------------------------------
GUID: { 0xF13000747010EBCE, Type: Creature, Entry: 29808, Counter: 1108942 }
Victim GUID: { 0xF13000746110E54D, Type: Creature, Entry: 29793, Counter: 1107277 }
Unknown (dword): 1
zergtmn вне форума   Ответить с цитированием
Старый 27.02.2011, 18:27   #5
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Код:
Attacker: GUID (High: Unit Entry: 48029, Counter: 986876)
Target: GUID (High: Player Entry: 0, Counter: 47358415)
Target is player: true
Код:
Attacker: GUID (High: Player Entry: 0, Counter: 47358415)
Target: GUID (High: Unit Entry: 48029, Counter: 986876)
Target is player: false
Код:
Attacker: GUID (High: Unit Entry: 48029, Counter: 987159)
Target: GUID (High: Player Entry: 0, Counter: 47358415)
Target is player: true
Код:
Attacker: GUID (High: Unit Entry: 48267, Counter: 983783)
Target: GUID (High: Player Entry: 0, Counter: 51678088)
Target is player: true
Хотя возможно это просто случайность)
Lordronn вне форума   Ответить с цитированием
Старый 27.02.2011, 18:58   #6
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Судя по коду в клиенте, этот параметр как-то влияет на позицию/ориентацию юнитов относительно друг друга, если ида все правильно декомпилировала, то значения могут быть только 0 или 1.
TOM_RUS вне форума   Ответить с цитированием
Старый 01.04.2015, 03:28   #7
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Если установить 1 то моб будет стараться "смотреть" в сторону цели, даже если цель убита.

На оффе используется довольно часто, но смысл и как это можно использовать (особенно когда цель игрок) понять не могу.
SeT вне форума   Ответить с цитированием
Старый 01.04.2015, 09:45   #8
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Может, установка параметра в 1 решит проблему https://github.com/cmangos/issues/issues/590 ?
Там как раз нпц не хватает ориентации на игрока при наложении на него ауры.
virusav вне форума   Ответить с цитированием
Старый 01.04.2015, 15:13   #9
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

раз уж мы некропостим, то у меня вот так:
Код:
function msgBuild(var Buf: TBuffer; var m: T_SMSG_ATTACKSTOP): longint; overload;
begin
  pkt.InitCmd      (Buf, SMSG_ATTACKSTOP);
  pkt.AddGUID      (Buf, m.AttackerGUID);
  pkt.AddGUID      (Buf, m.TargetGUID);
  pkt.AddLong      (Buf, m.Following);
  result:= pkt.pktLen;
end;
это от классика 1.12
вообще булеан у близзов мнооооого где передается в виде инта, а мнооооого где в виде байта. это нормально. просто одну фичу делала одна команда программистов (которая не экономит трафик), другую - другая (которая экономит).
RomanRom2 вне форума   Ответить с цитированием
Старый 01.04.2015, 17:15   #10
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Может, установка параметра в 1 решит проблему https://github.com/cmangos/issues/issues/590 ?
Там как раз нпц не хватает ориентации на игрока при наложении на него ауры.
Я не помню такой проблемы на TC, там тоже всегда шлется 0.
Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
раз уж мы некропостим, то у меня вот так:
Код:
function msgBuild(var Buf: TBuffer; var m: T_SMSG_ATTACKSTOP): longint; overload;
begin
  pkt.InitCmd      (Buf, SMSG_ATTACKSTOP);
  pkt.AddGUID      (Buf, m.AttackerGUID);
  pkt.AddGUID      (Buf, m.TargetGUID);
  pkt.AddLong      (Buf, m.Following);
  result:= pkt.pktLen;
end;
это от классика 1.12
вообще булеан у близзов мнооооого где передается в виде инта, а мнооооого где в виде байта. это нормально. просто одну фичу делала одна команда программистов (которая не экономит трафик), другую - другая (которая экономит).
И при каких случаях вы шлете 1? ) Я не могу вспомнить случаев, когда после остановки атаки цели нужно продолжать держать ориентацию на цель. Если еще можно что то придумать у существ в скриптах, то зачем это надо делать для игроков, ума не представляю.

Последний раз редактировалось SeT; 01.04.2015 в 17:18.
SeT вне форума   Ответить с цитированием
Старый 01.04.2015, 23:33   #11
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
Сообщение от SeT Посмотреть сообщение
Я не помню такой проблемы на TC, там тоже всегда шлется 0.


И при каких случаях вы шлете 1? ) Я не могу вспомнить случаев, когда после остановки атаки цели нужно продолжать держать ориентацию на цель. Если еще можно что то придумать у существ в скриптах, то зачем это надо делать для игроков, ума не представляю.
Некоторые мобы, когда добивают игрока, некоторое время все еще смотрят на него, а потом продолжают делать свои дела - переключаются на другую цель, или убегают на точку спавна
Amaru вне форума   Ответить с цитированием
Старый 03.04.2015, 20:51   #12
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

это скорее всего какие то нетипичные сценарии. в основном конечно посылается ноль. просто был вопрос про "неизвестное" поле following, я рассказал. это действительно и было открыто/выяснено мной лично в свое время: сначала я анализировал сниффы на предмет, какие значения бывают. затем экспериментировал на сандбоксе, подставляя эти значения и смотрел как ведет себя клиент. по другому не умею.
RomanRom2 вне форума   Ответить с цитированием
Старый 04.04.2015, 02:12   #13
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Это не нетипичные сценарии, этот параметр называется NowDead. 1 шлется в том случае, если атака была остановлена по причине смерти цели. И да, это отвечает за facing нападавшего относительно виктима. Почему uint32 в классике и до каты? Возможно дело не только в команде программистов, на альфе была другая боевая система, возможно здесь предполагалась причина (reason) остановки атаки и делать какие-то действия нападающим в зависимости от переданного значения. Систему переделали, отказались от фичи, а пакет остался.

Последний раз редактировалось MaS0n; 04.04.2015 в 02:17.
MaS0n вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
RomanRom2 (04.04.2015), SeT (04.04.2015)
Старый 04.04.2015, 02:42   #14
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Это не нетипичные сценарии, этот параметр называется NowDead. 1 шлется в том случае, если атака была остановлена по причине смерти цели. И да, это отвечает за facing нападавшего относительно виктима. Почему uint32 в классике и до каты? Возможно дело не только в команде программистов, на альфе была другая боевая система, возможно здесь предполагалась причина (reason) остановки атаки и делать какие-то действия нападающим в зависимости от переданного значения. Систему переделали, отказались от фичи, а пакет остался.
Так называется параметр у ТС в 6.х. Они взяли это имя с клиента?
Все равно дурацкая система выходит, сначала посылается true, а потом еще надо послать false, чтобы клиент перестал смотреть на цель...
SeT вне форума   Ответить с цитированием
Старый 04.04.2015, 11:19   #15
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

во, точно, по причине смерти цели. я стал забывать всё... печально...
спасибо за подробный ответ. да, назавания полей у меня порой самовыдуманные, как и у всех остальных наверное. каким образом узнали название NowDead? были какие то билды с дебаг инфой?
RomanRom2 вне форума   Ответить с цитированием
Старый 04.04.2015, 12:16   #16
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

https://www.ownedcore.com/forums/wor...ml#post3159112

TOM_RUS же упоминал, дебаг клиент MacOS x64. Есть и 4.1.0 тоже где-то же в этой теме

Этот пакет не менялся, поэтому название параметра в нем с тех далеких времен.

PS:
Ну и из альфа-дебаг клиента

Цитата:
void __thiscall CGUnit_C::OnAttackStop(CGUnit_C *this, unsigned __int64 previousTarget, int nowDead)

Последний раз редактировалось MaS0n; 04.04.2015 в 12:33.
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
SeT (21.11.2015)
Старый 04.04.2015, 20:20   #17
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

ок, спасибо.
у себя я еще не дошел, что бы эти нюансы реализовывать. помню что разбирал, а сделать не сделал еще.
RomanRom2 вне форума   Ответить с цитированием
Ответ

« dynamic vmap system | Следующей темы нет »

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

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



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


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