Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Это говорит о том, что ошибка в пакете PROTOCOL_BASE_GET_USER_INFO_ACK (Auth) скорее всего там где список персонажей. Попробуй снифануть этот пакет с помощью PointShark и сравни блок персонажей (их нужно слать 9 шт даже если у тебя 1 персонаж) с тем, что передаешь.
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
PROGRAMMATOR Написал:Это говорит о том, что ошибка в пакете PROTOCOL_BASE_GET_USER_INFO_ACK (Auth) скорее всего там где список персонажей. Попробуй снифануть этот пакет с помощью PointShark и сравни блок персонажей (их нужно слать 9 шт даже если у тебя 1 персонаж) с тем, что передаешь.
Не мог бы помочь с реализацией пакета PROTOCOL_LOBBY_GET_ROOMLIST_ACK
Он у меня разобран но мне его не реализовать
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Так приведи листинг того, что реализовано в пакете и укажи, что не получается.
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
01-10-2016, 02:43 PM
(Сообщение последний раз редактировалось: 01-10-2016, 02:46 PM Boris2105.)
PROGRAMMATOR Написал:Так приведи листинг того, что реализовано в пакете и укажи, что не получается.
Скриншоты
Добавлено через 3 минуты
PROGRAMMATOR Написал:Так приведи листинг того, что реализовано в пакете и укажи, что не получается.
если закоментить ch.RemoveEmptyRooms();
то получается так
Код: writeH(3078);
CLogger.getInstance().info("Send: PROTOCOL_LOBBY_GET_ROOMLIST_ACK");
writeQ(_client.getRooms().Count); //Макс кол-во комнат
writeD(_client.getRooms().Count); //Создано комнат
for (int i = 0; i < _client.getRooms().Count; i++)
{
Room r = _client.getRooms()[i];
writeD(_client.getRooms()[i].getRoomId()); //Ид комнаты
writeS(r.name, 23); // Название комнаты
writeC((byte)r.map_id); //Карта
writeC(0); //unk
writeC(0); //unk
writeC((byte)r.room_type); //Режим игры (1-Death Match,2-Bomb Mode,3-Destroy, 4-Eleminate, 5-Defense, 6-Sudden Death, 7-Escape, 8-Head Hunter, 9-Head Killer (вроде не работает), 10-Tutorial, 11-Domination, 12-Cross Counter, 13-Convoy, 14-non)
writeC((byte)r.isBattleInt()); //0-Ожидание, 1-Играют
writeC((byte)r.getAllPlayers().Count); //Количество игроков в команте
writeC((byte)r.getSlotCount()); //Макс кол игроков в комнате
writeC(3); //Пинг
writeC((byte)r.allweapons); // Weapon Flag
writeC(0x20);
writeC((byte)r.special);
writeC(0x00);
writeC(0x00);
writeC(0x00);
writeC(0x00);
}
writeQ(_client.getAllPlayers().Count);
writeD(_client.getAllPlayers().Count);
for (int i = 0; i < _client.getAllPlayers().Count; i++)
{
Account pl = _client.getAllPlayers()[i];
writeD(0xb1);
writeBS("ffffffff");
writeS("", 17);
writeH((short)pl.getRank());
writeS(pl.getPlayerName(), 33);
writeC(1);
}
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Видимо клиенту не проставлен id канала. Проверь, в PROTOCOL_BASE_SELECT_CHANNEL_REQ устанавливается ли channelId. Ну или не создано ни одного канала.
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Разбор пакета PROTOCOL_ROOM_JOIN_ACK, данные подойдут для PROTOCOL_ROOM_CHANGE_ROOMINFO_ACK и PROTOCOL_ROOM_CREATE_ACK, только удалить те 32 байта, что выделены под слоты (так и не понял для чего они их ввели, но на оффе пока видел только 0).
Код: /**
* 00 00 00 00 // result
* 02 // current slot
* 00 00 00 00 // id
* 53 68 6F 77 20 4D 65 20 59 6F 75 72 20 53 6B 69 6C 6C 21 21 00 6E 00 // title
* 01 00 // stage id
* 00 // stage small
* 01 // stage type
* 06 // state
* 02 // current accounts
* 08 // max accounts
* 05 // main ping
* 0F // weapon flag
* 24 // info flag
* 03 // mode (AI == 3)
* 00 00 00 00 00 // ?
* 5A 6F 6E 65 47 61 6D 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // main account
* 42 01 00 00 // limit times/rounds
* 00 // cannot join during match
* 00 // watch options
* 02 // team balance
* 00 // ?
* // ?
* 00 00 // first slot
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00
* 00 00 // last slot
* 31 31 31 31 // password
* 00 // ?
* 00 // main slot
* 02 // accounts
* 01 // enemies
* 01 // difficulty
* 00 // ?
*/
* main - это хост игрок.
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Добавил список серверных пакетов Udp сервера, а так же событий передаваемых в данных пакетах.
Будет полезно для тех, кто пишет "off like" сервер с UdpState = 3.
UdpState = 3 может так :
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
PROGRAMMATOR Написал:Добавил список серверных пакетов Udp сервера, а так же событий передаваемых в данных пакетах.
Будет полезно для тех, кто пишет "off like" сервер с UdpState = 3.
UdpState = 3 может так :
Id и Data пакетов бы добавили ещё,а то снифать не очень хочется:redlol:
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Id = 0x03, 0x04 kappa
Структура динамическая, в зависимости от событий.
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
PROGRAMMATOR Написал:Id = 0x03, 0x04 kappa
Структура динамическая, в зависимости от событий.
Я правильно понял?То что клиент отправил серверу то и разослать игрокам?
|