Пример #1
0
		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);
 }