Тема: 1.12.1 realmlist
Показать сообщение отдельно
Старый 27.10.2012, 03:35   #14
Archon64
Новичок
 
Регистрация: 05.04.2010
Сообщений: 18
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
Archon64 На верном пути
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Я проверял, запускал логин сервер без ворлд, список реалмов все равно показывает, да судя по коду клиента - коннект происходит только после выбора реалма

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

Типа такого
Код:
int __cdecl Lua_RequestRealmList(int a1)
{
  int v2; // eax@1

  v2 = FrameScript__GetParamValue(a1, 1, 0);
  CGlueMgr__GetRealmList(v2);
  return 0;
}
А это уже код интерфейса
Код:
function RealmList_OnLoad()
	this:RegisterEvent("OPEN_REALM_LIST");
	this.currentRealm = 0;
	this.offset = 0;
end

function RealmList_OnEvent()
	if ( event == "OPEN_REALM_LIST" ) then
		if ( this:IsVisible() ) then
			RealmListUpdate();
		else
			this:Show();
		end
	end
end
Вот как интерфейс запрашивает инфу о реалме

Код:
name, numCharacters, invalidRealm, realmDown, currentRealm, pvp, rp, load = GetRealmInfo(RealmList.selectedCategory, realmIndex);
Посмотрите сами, Interface/GlueXML/Realmlist.lua

Я сам в недоумении, думаю сериализация тут ни при чем, попробуйте сами собрать пакет, без сравнений с прочими работающими и отснифанными

В идеале надо дебажить клиент и смотреть почему он не принимает этот список и вообще смотреть всю процедуру принятия пакета, ясно одно, эвент, который я показал выше - не активируется
Спасибо. Пакет собираю сам, конечно же. После того, как не увидел реалмлиста решил сравнить с 100% правильным пакетом.

Всем спасибо за многие разъяснения, решение проблемы нашёл. Вся беда была совершенно в другом 0х01 пакете приходящем от сервера, вторая стадия авторизации (что странно, т.к. после принятия неправильного 0х01 пакета, клиент шлёт сервера запрос реалм-листа 0х10).

Я считал что его структура такова:
Код:
0x0	uint8	Command	
0x1	uint8	Error	
0x2	uint8[20]	M2	
0x16	uint32	unk1	
0x1A	uint32	unk2	
0x1E	uint16	unk3
Оказалось что там были лишние 6 байтов.

Последний раз редактировалось NeatElves; 27.10.2012 в 11:42.
Archon64 вне форума   Ответить с цитированием