Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PROTOCOL_BATTLE_PRESTARTBATTLE_ACK
#11
PROGRAMMATOR Написал:Этот пакет пришёл от клиента, что в ответ ему отсылаешь?

Client.SendPacket(new PROTOCOL_BATTLE_PRESTARTBATTLE_ACK());
[SRC=CSharp]
WriteD(1); //unk
WriteD(0); //slotId
//udp server
WriteC(2);
WriteB(new byte[] { 0x7F, 0x00, 0x00, 0x01 }); //ip
WriteB(new byte[] { 0x40, 0x9C }); //port
//room info
WriteB(new byte[] { 0x3d, 0x01, 0x00, 0x00 }); //UniqueId
WriteB(new byte[] { 0x02, 0x58, 0x00, 0x00 }); //Seed
WriteB(new byte[35]); //hitParts
[/SRC]
Client.SendPacket(new PROTOCOL_ROOM_GET_SLOTINFO_ACK(SlotState.Load));
Ответ
#12
У слота игрока получившего PROTOCOL_BATTLE_PRESTARTBATTLE_ACK уже должно быть состояние PreBattle (12) и у комнаты PreBattle (4).
Ответ
#13
PROGRAMMATOR Написал:У слота игрока получившего PROTOCOL_BATTLE_PRESTARTBATTLE_ACK уже должно быть состояние PreBattle (12) и у комнаты PreBattle (4).

То есть у комнаты?
Ответ
#14
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]
Ответ
#15
PROGRAMMATOR Написал: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]

А ты не мог бы дать список State у комнаты?

И еще вопрос тут при вызове пакета PROTOCOL_BATTLE_STARTBATTLE_REQ
SlotState сначала 14, а потом 15.
Как это реализовать?
Ответ
#16
[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.
Ответ
#17
PROGRAMMATOR Написал:[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.

Client.SendPacket(new PROTOCOL_BATTLE_STARTBATTLE_ACK());
Client.SendPacket(new PROTOCOL_BATTLE_MISSION_ROUND_PRE_START_ACK());
Client.SendPacket(new PROTOCOL_BATTLE_MISSION_ROUND_START_ACK());
Client.SendPacket(new PROTOCOL_ROOM_GET_SLOTINFO_ACK(SlotState.PreBattle));
Client.SendPacket(new PROTOCOL_ROOM_GET_SLOTINFO_ACK(SlotState.Battle));

Так что ли?
Ответ
#18
Конечно же нет.

PROTOCOL_ROOM_GET_SLOTINFO_ACK содержит слоты всех игроков, а статус меняется только у того, кто получил PROTOCOL_BATTLE_STARTBATTLE_REQ, другие же в этот момент могут ещё грузиться.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  PROTOCOL_BATTLE_PRESTARTBATTLE_ACK XRoro 1 1,302 01-16-2017, 03:08 PM
Последний пост: Awiion
  PROTOCOL_BATTLE_PRESTARTBATTLE_ACK Dewalon 1 1,236 09-19-2016, 07:47 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 6 Гость(ей)