Ru-MaNGOS

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

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.04.2011, 09:54   #41
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Еще вопросик - что присылает сервер после выбора рейда (не случайного подземелья а рейда) кроме SMSG_UPDATE_LFG_LIST, в момент нажатия кнопки "подписаться". Я тут это дело захакал но не уверен что правильно...
rsa вне форума   Ответить с цитированием
Старый 10.04.2011, 10:06   #42
finomen
Гость
 
Сообщений: n/a
По умолчанию

ну поскольку хоть сколько-нибудь вменяемое описание кже известной части протокола отсутствует - TC это один из самых доступных источников информации о структуре пакетов (правда работает ли то, что там написано я вообще говоря не уверен)

Попробую с несколькими очередями (только не 3, а 5). Для временной реализации сойдет, пока оптимального решения задачи не будет.
  Ответить с цитированием
Старый 10.04.2011, 10:11   #43
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

@finomen - ваша стопиЦЦотая попытка привинтить старый LFG патч (это не с тринити, те уже давным-давно ушли дальше) закончится так же как и все делавшиеся до этого. я уже через это прошел.
rsa вне форума   Ответить с цитированием
Старый 10.04.2011, 11:30   #44
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Еще вопросик - что присылает сервер после выбора рейда (не случайного подземелья а рейда) кроме SMSG_UPDATE_LFG_LIST, в момент нажатия кнопки "подписаться". Я тут это дело захакал но не уверен что правильно...
http://paste2.org/p/1354767
LordJZ вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
rsa (10.04.2011)
Старый 10.04.2011, 12:03   #45
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

у-у-уххх... я всегда был не очень хорошего мнения о близзовых кодерах, но по моему это перебор китайцев у них слишком много... или это просто не повезло с ответом на запрос?
rsa вне форума   Ответить с цитированием
Старый 10.04.2011, 12:17   #46
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Нет, такое всегда. Причем это нормально. Во многих местах так. http://paste2.org/p/1354836

Добавлено: Правда, у мангоса такое же есть, например при создании персонажа левые пакеты приходят
LordJZ вне форума   Ответить с цитированием
Старый 11.04.2011, 06:56   #47
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Вчера 2 часа пытался отправить клиенту SMSG_LFG_UPDATE_LIST в самых разных вариантах. Вывод - структурка не совсем та что опубликована, или какие-то из флагов работают по другому. Придется перекапывать дизасмы. Зато появилось предположение по поводу флагов unk2/unk4 (по вашей классификации) - какой-то из них ставится когда у игрока есть бинд на это подземелье и за ним отправляется uint32 с энкаунтерами.
rsa вне форума   Ответить с цитированием
Старый 12.04.2011, 12:43   #48
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Так. Очередная порция вопросов. Что шлет клиент при нажатии кнопки "обновить" в списке рейдов? Никак поймать не могу, ни один из текущих опкодов там не попался.
Нет ли у кого куска сниффа с SMSG_LFG_UPDATE_LIST в котором есть группы? Не пойму как их отправлять.
Какие статы показываются клиенту в игре при наведении мышки на члена списка райдов? Упорно не хочет давать ничего кроме класса , уровня и ролей.
И напоследок результаты раскопок - флаги в UpdateFlags должны быть взведены все обязательно, иначе у клиента едет крыша. Флаг 0x80 присылается если у таргета есть бинд на этот инстанс, "под" ним идет гуид инстанса и энкаунтер таргета.
rsa вне форума   Ответить с цитированием
Старый 12.04.2011, 16:30   #49
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

по нажатию кнопки "Обновить"

LFRFrame.xml
Код:
					<Button name="$parentRefreshButton" inherits="UIPanelButtonTemplate2" text="REFRESH">
.......
							<OnClick>
								PlaySound("UChatScrollButton");
								RefreshLFGList();
							</OnClick>
							<OnUpdate function="LFRBrowseFrameRefreshButton_OnUpdate"/>
						</Scripts>
					</Button>
lua-шка RefreshLFGList() активирует данный эвент
Код:
FrameScript__SignalEvent(EVENT_UPDATE_LFG_LIST, 0);
При активации эвента уже неинтересно, вывод списка и баловство с кнопками(включить/отключить, показать/скрыть), клиент ничего не шлет, интерфейс запрашивает данные через
Код:
local name, level, areaName, className, comment, partyMembers, status, class, encountersTotal, encountersComplete, isLeader, isTank, isHealer, isDamage = SearchLFGGetResults(index);
Код самой lua-шки очень большой, но по сути там идет забор данных
Следовательно, данные уже должны лежать в клиентских структурах/массивах/переменных

ПС : это как на примере с рандом БГ, только там глобальные переменные, значения в которые записывается через пакет SMSG_BATTLEFIELD_LIST, а забираются для интерфейса lua-шкой GetRandomBGHonorCurrencyBonuses

Последний раз редактировалось MaS0n; 12.04.2011 в 16:37.
MaS0n вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Konctantin (12.04.2011), rsa (12.04.2011)
Старый 12.04.2011, 19:30   #50
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
по нажатию кнопки "Обновить"

LFRFrame.xml
[
спасибо. значит зря т...лся, полдня коту под хвост
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 15:13   #51
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Интересующихся информирую, что LFR у меня вроде бы работает. По крайней мере все откопанные в сети скрины с этой фичей выдаются нормально, аддоны работают К сожалению я так и не получил даже устной информации, как в списке должны отображаться стоящие в очереди группы (или их лидеры?) поэтому их нет. Как будут данные - так и появятся.
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 15:24   #52
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Интересующихся информирую, что LFR у меня вроде бы работает. По крайней мере все откопанные в сети скрины с этой фичей выдаются нормально, аддоны работают К сожалению я так и не получил даже устной информации, как в списке должны отображаться стоящие в очереди группы (или их лидеры?) поэтому их нет. Как будут данные - так и появятся.
Группы отображаются в виде игрока с иконкой лидера, а в тултипе вроде было количество игроков в группе, список убитых боссов, комментарий, мб еще что забыл...

http://i.imgur.com/543t9.png

Последний раз редактировалось TOM_RUS; 17.04.2011 в 15:29.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 15:27   #53
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

список убитых боссов - точнее пройденных в этом подземелье энкаунтеров - отображается для любого игрока независимо от группы, если есть бинд на этот инстанс. это работает нормально.
по поводу иконки лидера - ни одним флагом не смог заставить ее показывать нужен снифф с хотя бы одним таким пакетом напосмотреть...
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 15:31   #54
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Добавил скриншот. Там же в тултипе отображается если в данной группе есть кто-то из вашего игнор листа/фрэнд листа (видимо где-то отправляется список всех игроков в группе и клиент сам сканирует игнор лист на предмет наличия некоторых личностей).

Последний раз редактировалось TOM_RUS; 17.04.2011 в 16:03.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
rsa (17.04.2011)
Старый 17.04.2011, 15:37   #55
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Отображаются ли в списке участники рейдов, лидеры которых стоят в очереди? Или только лидер?
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 15:42   #56
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Отображаются ли в списке участники рейдов, лидеры которых стоят в очереди? Или только лидер?
Не отображаются насколько я знаю. Даже встать в список рейдов нельзя если вы в группе и не лидер, только просматривать...

Последний раз редактировалось TOM_RUS; 17.04.2011 в 15:44.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 16:17   #57
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Кстати, SearchLFGGetResults(index) возвращает еще дополнительно 24 аргумента кроме тех что близы используют:
Код:
signed int __usercall AddLFGPlayerInfo<eax>(LFGInfoPlayer *a1<edi>, int pLuaState<esi>)
{
  signed int result; // eax@2

  if ( a1 )
  {
    FrameScript__pushboolean(pLuaState, a1->roles & 1); // isLeader
    FrameScript__pushboolean(pLuaState, a1->roles & 2); // isTank
    FrameScript__pushboolean(pLuaState, a1->roles & 4); // isHealer
    FrameScript__pushboolean(pLuaState, a1->roles & 8); // isDamage
    FrameScript__PushNumber(pLuaState, a1->Unk1);
    FrameScript__PushNumber(pLuaState, a1->Spec[0]);
    FrameScript__PushNumber(pLuaState, a1->Spec[1]);
    FrameScript__PushNumber(pLuaState, a1->Spec[2]);
    FrameScript__pushboolean(pLuaState, a1->dword8C);
    FrameScript__PushNumber(pLuaState, a1->Armor);
    FrameScript__PushNumber(pLuaState, a1->SpellDamage);
    FrameScript__PushNumber(pLuaState, a1->SpellHeal);
    FrameScript__PushNumber(pLuaState, a1->HasteMelee);
    FrameScript__PushNumber(pLuaState, a1->HasteRanged);
    FrameScript__PushNumber(pLuaState, a1->HasteSpell);
    FrameScript__PushNumber(pLuaState, a1->MP5);
    FrameScript__PushNumber(pLuaState, a1->MP5_Combat);
    FrameScript__PushNumber(pLuaState, a1->AttackPower);
    FrameScript__PushNumber(pLuaState, a1->Agility);
    FrameScript__PushNumber(pLuaState, a1->Health);
    FrameScript__PushNumber(pLuaState, a1->Mana);
    FrameScript__PushNumber(pLuaState, a1->Unk2);
    FrameScript__PushNumber(pLuaState, a1->Defence);
    FrameScript__PushNumber(pLuaState, a1->Dodge);
    FrameScript__PushNumber(pLuaState, a1->Block);
    FrameScript__PushNumber(pLuaState, a1->Parry);
    FrameScript__PushNumber(pLuaState, a1->Crit);
    FrameScript__PushNumber(pLuaState, a1->Expertise);
    result = 28;
  }
  else
  {
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushboolean(pLuaState, 0);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    FrameScript__pushnil(pLuaState);
    result = 28;
  }
  return result;
}
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 16:19   #58
Shadez
Ученый
 
Аватар для Shadez
 
Регистрация: 07.03.2010
Сообщений: 175
Сказал(а) спасибо: 64
Поблагодарили 142 раз(а) в 45 сообщениях
Shadez Обладатель прекрасной аурыShadez Обладатель прекрасной ауры
Отправить сообщение для Shadez с помощью ICQ
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
список убитых боссов - точнее пройденных в этом подземелье энкаунтеров - отображается для любого игрока независимо от группы, если есть бинд на этот инстанс. это работает нормально.
В личкинге нельзя было вставать в поиск рейда в определенный инст, если уже есть бинд на этот инстанс.
Shadez вне форума   Ответить с цитированием
Старый 17.04.2011, 16:30   #59
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

@TOM_RUS и в моей реализации все эти данные (кроме неопознанных, вроде MP5) нормально передаются. их используют аддоны.
@shadez - это было бы нелогично, потому что тогда незачем передавать энкаунтеры подземелий. нельзя встать если подземелье полностью пройдено - вот это сделано, благо таблица DungeonEncounter.dbc у меня используется.
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 16:34   #60
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
@TOM_RUS и в моей реализации все эти данные (кроме неопознанных, вроде MP5) нормально передаются. их используют аддоны.
Пример такого аддона? Все что идет после:
Код:
local name, level, areaName, className, comment, partyMembers, status, class, encountersTotal, encountersComplete, isLeader, isTank, isHealer, isDamage = SearchLFGGetResults(index);
нигде не документировано.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 16:42   #61
Shadez
Ученый
 
Аватар для Shadez
 
Регистрация: 07.03.2010
Сообщений: 175
Сказал(а) спасибо: 64
Поблагодарили 142 раз(а) в 45 сообщениях
Shadez Обладатель прекрасной аурыShadez Обладатель прекрасной ауры
Отправить сообщение для Shadez с помощью ICQ
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
@shadez - это было бы нелогично, потому что тогда незачем передавать энкаунтеры подземелий.
Убитые/живые боссы же только у групп отображаются...
Shadez вне форума   Ответить с цитированием
Старый 17.04.2011, 16:50   #62
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

LFG++ для примера.
http://wow.curse.com/downloads/wow-a...tails/lfg.aspx

Добавлено через 50 секунд
Цитата:
Сообщение от Shadez Посмотреть сообщение
Убитые/живые боссы же только у групп отображаются...
но место для передачи данных есть и у каждого игрока. думаю передаются тоже если подземелье частично пройдено. по крайней мере у меня отлично отображается, оттестировано

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

Цитата:
Сообщение от rsa Посмотреть сообщение
по поводу иконки лидера - ни одним флагом не смог заставить ее показывать нужен снифф с хотя бы одним таким пакетом напосмотреть...
Зависит от этой функции, попробуй в игре ее набрать, пропусти параметры и выведи partyMembers, я так делал когда с LFD баловался, для всего интерфейса, ибо был без снифов

Код:
	local name, level, areaName, className, comment, partyMembers, status, class, encountersTotal, encountersComplete, isLeader, isTank, isHealer, isDamage = SearchLFGGetResults(index);
Потому что вот
Код:
	if ( partyMembers > 0 ) then
		button.type = "party";
		button.partyIcon:Show();
		button.tankIcon:Hide();
		button.healerIcon:Hide();
		button.damageIcon:Hide();
	else
		button.type = "individual";
		button.partyIcon:Hide();
Где-то не посланы данные, уже надо ковырять ЛФГ пакет

TOM_RUS - жжжесть в хорошем смысле, научите плз как делать структуры клиентские, в IDA структуры то я делать умею, а вот как считать смещения для клиентских структур, мб что-то еще нужно, намекните
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
rsa (17.04.2011)
Старый 17.04.2011, 16:57   #64
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Потому что вот
спасибо. надеюсь этого "потомучто" похоже уже хватит чтобы добить пакет ибо навело на назначение одного байта в пакете...
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 18:03   #65
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Кстати, список гуидов в начале пакета SMSG_LFG_SEARCH_RESULTS помоему для удаления из списка, везде SMemFree() вызывается для LfgPlayerInfo/LfgGroupInfo по их гуиду.

Флаги 0x04, 0x08 каким-то образом связаны с группой игрока: http://paste2.org/p/1368410

Добавлено через 5 минут
Цитата:
Сообщение от rsa Посмотреть сообщение
В этом аддоне поля после isDamage не используются. Да и вообще этот аддон под старое LFG судя по скринам, там даже SearchLFGGetResults еще не было!

Добавлено через 55 минут
Цитата:
Сообщение от MaS0n Посмотреть сообщение
TOM_RUS - жжжесть в хорошем смысле, научите плз как делать структуры клиентские, в IDA структуры то я делать умею, а вот как считать смещения для клиентских структур, мб что-то еще нужно, намекните
Вручную, либо через "Create new struct type", или через "Convert to struct *" для уже созданных структур. Потом подгонять структуру по размеру, переименовывать поля, менять их тип и т.д.

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

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Вручную, либо через "Create new struct type", или через "Convert to struct *" для уже созданных структур. Потом подгонять структуру по размеру, переименовывать поля, менять их тип и т.д.
MaS0n вне форума   Ответить с цитированием
Старый 17.04.2011, 19:23   #67
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Ну конкретно для этого опкода бралось из снифов, часть можно по "документации" lua проследить.

Код:
struct LFGInfoGroup
{
  _DWORD dword0;
  _DWORD dword4;
  _DWORD dword8;
  _DWORD dwordC;
  _DWORD dword10;
  _DWORD dword14;
  WGUID guid18;
  _DWORD Index;
  char comment[256];
  char roles[4];
  WGUID instanceGuid;
  _DWORD encountersCompletedMask;
  _DWORD dword134;
  _DWORD numGroupMembers;
  LFGInfoPlayer **GroupMembers;
  _DWORD dword140;
  _DWORD dword148;
};

struct LFGInfoPlayer
{
  _DWORD dword0;
  _DWORD dword4;
  _DWORD dword8;
  _DWORD dwordC;
  _DWORD dword10;
  _DWORD dword14;
  WGUID guid18;
  _DWORD Index;
  _DWORD numGroupMembers;
  LFGInfoGroup *groupInfo;
  char Level;
  char Class;
  char Race;
  char Spec[4];
  char pad0;
  _DWORD Armor;
  _DWORD SpellDamage;
  _DWORD SpellHeal;
  _DWORD HasteMelee;
  _DWORD HasteRanged;
  _DWORD HasteSpell;
  float MP5;
  float MP5_Combat;
  _DWORD AttackPower;
  _DWORD Agility;
  _DWORD Health;
  _DWORD Mana;
  _DWORD Unk1;
  float Unk2;
  _DWORD Defence;
  _DWORD Dodge;
  _DWORD Block;
  _DWORD Parry;
  _DWORD Crit;
  _DWORD Expertise;
  _DWORD areaId;
  _DWORD status;
  _DWORD IsInGroup;
  char roles;
  char comment[256];
  char pad1[3];
  _DWORD dword94;
  WGUID instanceGuid;
  _DWORD encountersCompletedMask;
  _DWORD unk2;
};
Размер был определен исходя из:
Код:
playerInfo = (LFGInfoPlayer *)SMemAlloc(0x1A8u, (int)".\\LFGInfo.cpp", 0x2D1u, 0);
groupInfo = (LFGInfoGroup *)SMemAlloc(0x148u, (int)".\\LFGInfo.cpp", 0x2BEu, v12);

Последний раз редактировалось TOM_RUS; 17.04.2011 в 19:29.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 19:50   #68
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
@TOM_RUS и в моей реализации все эти данные (кроме неопознанных, вроде MP5) нормально передаются. их используют аддоны.
MP5 - восполнение манны
MP5_Combat - восполнение манны в бою

это общепринятое сокращение, непонятно почему неопознано -)
Йоха вне форума   Ответить с цитированием
Старый 17.04.2011, 19:51   #69
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

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

Поле "_DWORD IsInGroup" возможно IsGroupLeader..., т.к. уже есть поле с гуидом группы игрока, т.е. он уже как бы в группе...

Что значит поле "status" тоже не понятно, известно что оно может принимать только булевые значения и ни в одном клиентском скрипте не используется.

Поле areaId надо бы добавить, и соответствующий флаг поправить...

Последний раз редактировалось TOM_RUS; 17.04.2011 в 21:18.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 21:53   #70
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Всем спасибо за обсуждение, особенно TOM_RUS. Несмотря на почти полностью выясненную структуру SMSG (судя по коду, игрок начинает считаться лидером если байт под флагом 04 >0, и там же находится число членов группы), получить икону лидера в клиенте так и не удалось... Осталась последняя идея связанная с неверным формированием ObjectGuid группы - почему-то клиент не берет гуиды групп из 1 го блока данных опкода (перебор групп) и не вливает их в LFGInfoGroup *groupInfo данных игрока. Хотя гуид и там и там один и тот же... Буду колупать дальше.
Список гуидов в начале опкода - для чистки кэша клиента, там должны передаваться гуиды ушедших из очереди. Пока делать не буду, довольно сложная история.
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 22:10   #71
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Всем спасибо за обсуждение, особенно TOM_RUS. Несмотря на почти полностью выясненную структуру SMSG (судя по коду, игрок начинает считаться лидером если байт под флагом 04 >0, и там же находится число членов группы), получить икону лидера в клиенте так и не удалось... Осталась последняя идея связанная с неверным формированием ObjectGuid группы - почему-то клиент не берет гуиды групп из 1 го блока данных опкода (перебор групп) и не вливает их в LFGInfoGroup *groupInfo данных игрока. Хотя гуид и там и там один и тот же... Буду колупать дальше.
Список гуидов в начале опкода - для чистки кэша клиента, там должны передаваться гуиды ушедших из очереди. Пока делать не буду, довольно сложная история.
Количество игроков в группе клиент сам считает по гуиду группы как я понял:

Код:
int __thiscall GetPartyMembersCount(LFGInfoGroup *this)
{
  unsigned int num; // eax@1
  int result; // eax@2

  num = this->group.numGroupMembers;
  if ( num <= 1 )
    result = 0;
  else
    result = num - 1;
  return result;
}

void __thiscall sub_556E60(LFGInfoGroup *this, LFGInfoPlayer *player)
{
  LFGInfoGroup *_this; // esi@1
  int num; // edi@2
  int i; // eax@3

  _this = this;
  if ( player->numGroupMembers < 0 )
  {
    num = this->group.numGroupMembers;
    ReallocGroupMembers(&this->group, num + 1);
    if ( player->IsInGroup )
    {
      for ( i = num; i > 0; --i )
      {
        _this->group.GroupMembers[i] = _this->group.GroupMembers[i - 1];
        _this->group.GroupMembers[i]->numGroupMembers = i;
      }
      *_this->group.GroupMembers = player;
      player->numGroupMembers = 0;
    }
    else
    {
      _this->group.GroupMembers[num] = player;
      player->numGroupMembers = num;
    }
  }
}

void __thiscall ReallocGroupMembers(LFGGroup *this, unsigned int num)
{
  LFGGroup *_this; // edi@1
  unsigned int v3; // ecx@3
  unsigned int v4; // ebx@5

  _this = this;
  if ( num > this->numGroupMembers )
  {
    if ( num > this->numGroupMembers2 )
    {
      v3 = this->dword140;
      if ( !v3 )
        v3 = sub_5D0040(_this, num);
      v4 = num;
      if ( num % v3 )
        v4 = num + v3 - num % v3;
      sub_5532C0(_this, v4);
    }
  }
  _this->numGroupMembers = num;
}
GetPartyMembersCount возвращает значение, которое потом мы получаем в SearchLFGGetResults.

Последний раз редактировалось TOM_RUS; 17.04.2011 в 22:34.
TOM_RUS вне форума   Ответить с цитированием
Старый 17.04.2011, 22:18   #72
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Количество игроков в группе клиент сам считает по гуиду группы как я понял:
сорри, но я этого ни тут в коде ни в ранее приводившихся кусках не вижу. количество пляшет от numGroupMembers, но где оно заполняется я пока не вижу... есть одна мысль, можно попробовать, но вряд ли.
PS я с трудом представляю как в гуид можно затолкать число игроков. оно ж переменное...
rsa вне форума   Ответить с цитированием
Старый 17.04.2011, 22:31   #73
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Обновил код выше, numGroupMembers действительно заполняется клиентом самостоятельно.

P.S. Седня ночью тестировал опкод SMSG_LFG_SEARCH_RESULTS, иконка лидера без каких либо проблем отображается, даже если идет 0 для флага 0x04...
А вот как сделать чтобы отображалось
Код:
ERR_LFG_JOINED_LIST = "You are now listed in the Raid Browser.";
ERR_LFG_LEFT_LIST = "You are no longer listed in the Raid Browser.";
вместо
Код:
ERR_LFG_JOINED_QUEUE = "You are now queued in the Dungeon Finder.";
ERR_LFG_LEFT_QUEUE = "You are no longer queued in the Dungeon Finder.";
я так и не понял, видимо какой-то опкод недопосылаю

Последний раз редактировалось TOM_RUS; 18.04.2011 в 06:13.
TOM_RUS вне форума   Ответить с цитированием
Старый 18.04.2011, 07:04   #74
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Обновил код выше, numGroupMembers действительно заполняется клиентом самостоятельно.

P.S. Седня ночью тестировал опкод SMSG_LFG_SEARCH_RESULTS, иконка лидера без каких либо проблем отображается, даже если идет 0 для флага 0x04...
...
я так и не понял, видимо какой-то опкод недопосылаю
сообщение с постановкой в райдфиндер получаю без проблем, если надо могу пояснить как.
а вот группу и икону лидера получить не могу никак... что где отправить для этого? если надо - мой текущий код в
https://github.com/rsa/mangos/blob/m...LFGHandler.cpp
rsa вне форума   Ответить с цитированием
Старый 18.04.2011, 07:57   #75
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
сообщение с постановкой в райдфиндер получаю без проблем, если надо могу пояснить как.
а вот группу и икону лидера получить не могу никак... что где отправить для этого? если надо - мой текущий код в
https://github.com/rsa/mangos/blob/m...LFGHandler.cpp
У меня просто гуид группы в обоих местах (group и player) одинаковый, и если в списке игроков больше одного и у всех одикаковый гуид группы (а он одинаковый), то кто-то из них отображается лидером, а флагом 0x04 можно кого-то конкретного сделать лидером Сам тестовый код в мастер ветке.

Последний раз редактировалось TOM_RUS; 18.04.2011 в 08:16.
TOM_RUS вне форума   Ответить с цитированием
Старый 18.04.2011, 10:55   #76
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

надеюсь дошло где туплю - я только лидера посылал, членов группы нет, они ж все равно не отображаются. попробую всех отправить (вот тут наконец и флаги пригодятся).
rsa вне форума   Ответить с цитированием
Старый 18.04.2011, 12:31   #77
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
надеюсь дошло где туплю - я только лидера посылал, членов группы нет, они ж все равно не отображаются. попробую всех отправить (вот тут наконец и флаги пригодятся).
Надо всех слать, клиент сам разбирается что и как отображать.
TOM_RUS вне форума   Ответить с цитированием
Старый 18.04.2011, 12:41   #78
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Накалякал аддон, которых использует недокументированные поля в списке рейдов:
http://filebeam.com/d2614f5b1904584e...2ed29ef6a2.jpg
http://i.imgur.com/U6xBq.jpg

Последний раз редактировалось TOM_RUS; 18.04.2011 в 14:09.
TOM_RUS вне форума   Ответить с цитированием
Старый 18.04.2011, 13:42   #79
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Накалякал аддон, которых использует недокументированные поля в списке рейдов
Где его взять?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 18.04.2011, 13:49   #80
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
Где его взять?
http://wow.curse.com/downloads/wow-a...radvanced.aspx

Последний раз редактировалось TOM_RUS; 18.04.2011 в 18:12.
TOM_RUS вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
evilstar (18.04.2011), Shadez (19.04.2011), tempura (18.04.2011)
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по использованию Git anvd24 Новичкам 21 25.01.2012 09:17
Вопросы по базе Mediv MaNGOSZero (1.12.X) 10 13.04.2011 04:31
Вопросы от новичка Archon64 MaNGOSZero (1.12.X) 6 04.05.2010 13:25


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


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