25.03.2014, 17:24 | #1 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
QUEST_POI
Сегодня запросил с сервера список всех QUEST_POI.
Отсылал такие пакеты: Код:
Packet:CMSG (0x16B8) CMSG_QUEST_POI_QUERY, Data size: 7 |---------------------------------------------------------------------------| | OFFSET | 0 1 2 3 4 5 6 7 8 9 A B C D E F |0123456789ABCDEF| |----------------------------------------------------------|----------------| |00000000| 00 00 04 BD 0C 00 00 -- -- -- -- -- -- -- -- -- |................| |----------------------------------------------------------|----------------| Если данных нет, то приходит 3 байта: Код:
Packet:SMSG (0x0957) SMSG_QUEST_POI_QUERY_RESPONSE, Data size: 3 |---------------------------------------------------------------------------| | OFFSET | 0 1 2 3 4 5 6 7 8 9 A B C D E F |0123456789ABCDEF| |----------------------------------------------------------|----------------| |00000000| 00 00 00 -- -- -- -- -- -- -- -- -- -- -- -- -- |................| |----------------------------------------------------------|----------------| Код:
Packet:SMSG (0x0957) SMSG_QUEST_POI_QUERY_RESPONSE, Data size: 14 |---------------------------------------------------------------------------| | OFFSET | 0 1 2 3 4 5 6 7 8 9 A B C D E F |0123456789ABCDEF| |----------------------------------------------------------|----------------| |00000000| 00 00 08 00 00 20 3B 0D 00 00 BD 0C 00 00 -- -- |..... ;.........| |----------------------------------------------------------|----------------| Код:
unsigned int __thiscall sub_6B760F(void *this, int a2, int a3) { void *v3; // esi@1 unsigned int v4; // eax@1 unsigned int result; // eax@1 int v6; // eax@3 int v7; // edi@4 int v8; // eax@5 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@7 int v12; // [sp+14h] [bp-Ch]@1 unsigned int v13; // [sp+18h] [bp-8h]@1 int v14; // [sp+1Ch] [bp-4h]@2 LOBYTE(v12) = 0; v3 = this; v4 = CDataStore__Read21Bits(v12); sub_6B718B((char *)v3 + 16, v4); result = 0; v13 = 0; if ( *((_DWORD *)v3 + 4) ) { v14 = 0; do { LOBYTE(v12) = 0; v6 = CDataStore__Read22Bits(v12); CDataStore__StoreAndCheck22Bits_0(v6); ++v13; result = v13; v14 += 20; } while ( v13 < *((_DWORD *)v3 + 4) ); } v7 = 0; v13 = 0; if ( *((_DWORD *)v3 + 4) ) { do { v8 = *((_DWORD *)v3 + 5); v12 = 0; if ( *(_DWORD *)(v7 + v8 + 4) ) { do { v14 = 0; CDataStore__GetInt32(&v14); v9 = v12; *(_DWORD *)(*(_DWORD *)(v7 + *((_DWORD *)v3 + 5) + 8) + 4 * v12) = v14; v10 = *((_DWORD *)v3 + 5); v12 = v9 + 1; } while ( (unsigned int)(v9 + 1) < *(_DWORD *)(v7 + v10 + 4) ); } v12 = 0; CDataStore__GetInt32(&v12); v11 = *((_DWORD *)v3 + 5); ++v13; *(_DWORD *)(v7 + v11) = v12; result = v13; v7 += 20; } while ( v13 < *((_DWORD *)v3 + 4) ); } return result; } Но вот прикол в том, что поменялось содержимое пакета. Если раньше в пакете содержались координаты областей и т.п. то сейчас непонятно что: Код:
QuestCount: 1 Block_0 size: 1 Unk_0_0: 3387 Quest_0 Id: 3261 Но вот что и где, не знаю. ЗЫ. Запрашивал POI так: Код:
#define CMSG_QUEST_POI_QUERY 0x16B8 // opcode #define CLIENT_SERVICES_SEND2 0x8F9A #define CDATA_STORE_V_TABLE 0x9298F0 // proto typedef void(__stdcall *Send2)(CDataStore *pData); void SendQuestPOIQuery(int max_entry) { CDataStore packet = { (void*)(baseAddress + CDATA_STORE_V_TABLE) }; for (int entry = 1; entry < max_entry; ++entry) { packet.Init(4 + 3 + 4); // write opcode *(DWORD*)(packet.buffer + 0) = CMSG_QUEST_POI_QUERY; *(BYTE*)(packet.buffer + 4) = 0; *(BYTE*)(packet.buffer + 5) = 0; *(BYTE*)(packet.buffer + 6) = 1 << 2; // 22 bits *(DWORD*)(packet.buffer + 7) = entry; printf("Send packet CMSG_QUEST_POI_QUERY, entry %i\n", entry); Send2(baseAddress + CLIENT_SERVICES_SEND2)(&packet); free(packet.buffer); Sleep(50); } } |
25.03.2014, 17:51 | #2 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
|
|
25.03.2014, 19:34 | #3 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Оптимизирует обучение вычитания в столбик.
Добавлено через 1 час 36 минут Нашел QuestPOIPoints.dbc, вот часть его содержимого: Код:
entry X Y poi_id 72756, 2148, -5252, 22280 72757, 2172, -1169, 22281 72759, -10499, -1158, 22283 72760, -9056, -461, 22284 72761, -8934, -137, 22285 72762, -8797, -259, 22286 72763, -8766, -253, 22286 72764, -8754, -193, 22286 72765, -8751, -160, 22286 72766, -8750, -115, 22286 72767, -8766, -93, 22286 72768, -8795, -117, 22286 72769, -8811, -217, 22286 72770, -8809, -234, 22286 72771, -8806, -244, 22286 72772, -8903, -163, 22287 |
27.03.2014, 06:28 | #4 |
Новичок
Регистрация: 14.09.2013
Адрес: пос.Усть-Омчуг
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Опкоды
Здравствуйте извените что не много не по теме, подскажите пожалуйста, как найти опкоды для квестов?
И еще вопрос я пытаюсь снифить трафик через Wireshark. И увидел различие между заголовками пакетов которые снифят самодельные сниферы и между заголовками пакетов которые снифит Wireshark. Вообщем различие такое к примеру пакет CMD_AUTH_LOGON_CHELLENGE имеет заголовок В 1 байт 0х00 или CMD_AUTH_LOGON_PROF 0x01 ,а у самодельных заголовок состоит из 2 байт почему? |
29.03.2014, 00:54 | #5 |
Новичок
Регистрация: 25.06.2010
Адрес: Lipetsk
Сообщений: 21
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
|
Заголовки шифруются просто так ты с помощью Wireshark ты их не расшифруешь
|