Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Опкоды, Формулы, Клиент (http://mangos.ytdb.ru/forumdisplay.php?f=9)
-   -   [4.3.4] Проверка ролей (http://mangos.ytdb.ru/showthread.php?t=7382)

Dubstep 20.08.2013 03:53

[4.3.4] Проверка ролей
 
Доброго времени суток, может кто подсказать одну вещь, вообщем:
Есть такая штука как Проверка ролей, жму от клиента идёт 0x0430 как я понимаю пустышка, он вызывает 0x70B0, составил маску, но есть там поле, оно первое uint8, что туда закинуть нужно? Кинул туда любое число, вроде как окошко появляется с выбором роли, но правильно ли это...

Amaru 20.08.2013 10:55

этот uint8 - маска байтов в гуиде
http://paste2.org/9a20gPsC
гуид, очевидно, - гуид инициировавшего role poll

RomanRom2 20.08.2013 12:46

как то не похоже на гуид, после этого байта идут инты32, в странном порядке до кучи, 1, 5, 7, 3, 2. у гуида после маски идут байты (инт8 по вашему).
больше смахивает на количество гуидов, которые в пакете наличествуют.

Amaru 20.08.2013 13:38

не вижу int32. 1, 5, 7, 3, 2 это порядок вытаскивания битов из маски. ну а потом да, идет считывание байтов.

Код:

ObjectGuid guid;
recv_data.ReadGuidMask<1, 5, 7, 3, 2, 4, 0, 6>(guid);
recv_data.ReadGuidBytes<4, 7, 0, 5, 1, 6, 2, 3>(guid);


Dubstep 20.08.2013 14:44

спасибо

RomanRom2 20.08.2013 16:39

Цитата:

Сообщение от Amaru (Сообщение 31898)
не вижу int32.

ммм... вот. не?
Код:

  CDataStore_GetInt8(a2, (int)&v13);
  v6 = 2 * v13;
  v5->guid[1] = (unsigned int)v13 >> 7;
  v7 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[5] = v7;
  v8 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[7] = v8;
  v9 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[3] = v9;
  v10 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[2] = v10;

и еще вопрос: а близы поменяли (меняют?) порядок следования байт в гуиде? :) раньше они шли по порядку. вот извращенцы...

Amaru 20.08.2013 21:18

Цитата:

Сообщение от RomanRom2 (Сообщение 31900)
ммм... вот. не?
Код:

  CDataStore_GetInt8(a2, (int)&v13);
  v6 = 2 * v13;
  v5->guid[1] = (unsigned int)v13 >> 7;
  v7 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[5] = v7;
  v8 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[7] = v8;
  v9 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[3] = v9;
  v10 = (unsigned int)v6 >> 7;
  v6 *= 2;
  v5->guid[2] = v10;

и еще вопрос: а близы поменяли (меняют?) порядок следования байт в гуиде? :) раньше они шли по порядку. вот извращенцы...

ну тут же все равно, инты или нет, потом проверка != будет.

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

Цитата:

recv_data.ReadGuidMask<1, 5, 7, 3, 2, 4, 0, 6>(guid);
recv_data.ReadGuidBytes<4, 7, 0, 5, 1, 6, 2, 3>(guid);


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

ru-mangos.ru - Русское сообщество MaNGOS