Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
У слота игрока получившего PROTOCOL_BATTLE_PRESTARTBATTLE_ACK уже должно быть состояние PreBattle (12) и у комнаты PreBattle (4).
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
PROTOCOL_ROOM_CHANGE_ROOMINFO_ACK
[SRC="csharp"]public override void WriteImpl()
{
Write<uint>(room.Id);
WriteUnicode(room.Title, RoomModel.TitleLength);
Write<StageId>(room.StageId);
Write<bool>(room.StageSmall);
Write<byte>(room.StageType);
Write<RoomState>(room.State); // <-- Состояние комнаты
// ...
}
[/SRC]
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
[SRC="csharp"]namespace PiercingBlow.Common.Models.Room
{
public enum RoomState : byte
{
Ready,
Countdown,
Loading,
Rendezvous,
PreBattle,
Unknown,
Battle,
BattleEnd,
Empty
}
}
[/SRC]
Ну как, пришёл игроку PROTOCOL_BATTLE_STARTBATTLE_REQ, проставляешь его слоту нужный State и отправляешь PROTOCOL_ROOM_GET_SLOTINFO_ACK.
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Конечно же нет.
PROTOCOL_ROOM_GET_SLOTINFO_ACK содержит слоты всех игроков, а статус меняется только у того, кто получил PROTOCOL_BATTLE_STARTBATTLE_REQ, другие же в этот момент могут ещё грузиться.