public static byte[] EmtryMessage(StocMessage message){ byte[] data =null; using(GameServerPacket packet=new GameServerPacket(message)){ data = packet.Content; } return data; }
public static void LobbyError(this GameSession client, string message, bool isNow = true) { using (GameServerPacket join = new GameServerPacket(StocMessage.JoinGame)){ join.Write(0U); join.Write((byte)0); join.Write((byte)0); join.Write(0); join.Write(0); join.Write(0); // C++ padding: 5 bytes + 3 bytes = 8 bytes for (int i = 0; i < 3; i++) { join.Write((byte)0); } join.Write(0); join.Write((byte)0); join.Write((byte)0); join.Write((short)0); client.Send(join, false); } using (GameServerPacket enter = new GameServerPacket(StocMessage.HsPlayerEnter)){ enter.WriteUnicode("[err]" + message, 20); enter.Write((byte)0); client.Send(enter, isNow); } }
public static byte[] EmtryMessage(StocMessage message) { byte[] data = null; using (GameServerPacket packet = new GameServerPacket(message)){ data = packet.Content; } return(data); }
public static void ServerMessage(this GameSession client, string msg, PlayerType type = PlayerType.Yellow, bool isNow = true) { string finalmsg = "[Server] " + msg; using (GameServerPacket packet = new GameServerPacket(StocMessage.Chat)){ packet.Write((short)type); packet.WriteUnicode(finalmsg, finalmsg.Length + 1); client.Send(packet, isNow); } }
public static void SendTypeChange(this GameSession client) { if (client == null || client.Game == null) { return; } using (GameServerPacket packet = new GameServerPacket(StocMessage.TypeChange)){ packet.Write((byte)(client.Type + (client.Equals(client.Game.HostPlayer) ? (int)PlayerType.Host : 0))); client.Send(packet); } }
public static void OnUpdateDeck(GameSession client, GameClientPacket packet) { if (client.Game == null || client.Type == (int)PlayerType.Observer || client.Type == (int)PlayerType.Undefined) { return; } Deck deck = new Deck(); int main = packet.ReadInt32(); int side = packet.ReadInt32(); for (int i = 0; i < main; i++) { deck.AddMain(packet.ReadInt32()); } for (int i = 0; i < side; i++) { deck.AddSide(packet.ReadInt32()); } if (client.Game.State == GameState.Lobby) { client.Deck = deck; client.Game.IsReady[client.Type] = false; } else if (client.Game.State == GameState.Side) { if (client.Game.IsReady[client.Type]) { return; } if (!client.Deck.Check(deck)) { using (GameServerPacket error = new GameServerPacket(StocMessage.ErrorMsg)){ error.Write((byte)3); error.Write(0); client.Send(error); } return; } client.Deck = deck; client.Game.IsReady[client.Type] = true; client.Game.ServerMessage(string.Format(Messages.MSG_READY, client.Name)); client.Send(GameServerPacket.EmtryMessage(StocMessage.DuelStart)); client.Game.MatchSide(); } }
public static void OnChat(GameSession client, GameClientPacket packet) { if (!client.IsAuthentified) { return; } string msg = packet.ReadUnicode(256); if (client.Game == null) { return; } if (!client.OnChatCommand(msg)) { using (GameServerPacket chat = new GameServerPacket(StocMessage.Chat)){ chat.Write((short)client.Type); chat.WriteUnicode(msg, msg.Length + 1); client.Game.SendToAllBut(chat, client); } } }
public void Send(GameServerPacket packet, bool isNow = true) { // Logger.Debug("send "+packet.PacketMsg); Send(packet.Content, isNow); }