Exemple #1
0
        static public void Handle_SC_Chat(SC_PrivateChat <Database> pkt, Database _db)
        {
            string[]      splitArr = { ", " };
            List <string> users    = new List <string>();

            users = pkt.users.Split(splitArr, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList();

            SC_Chat msg = new SC_Chat();

            msg.chatType = Helpers.Chat_Type.PrivateChat;
            msg.message  = pkt.chat + ":" + pkt.message;
            msg.from     = pkt.from;

            foreach (string user in users)
            {
                Player p = _db._server.getPlayer(user);
                if (p == null)
                {
                    continue;
                }

                if (p._alias == pkt.from)
                {
                    continue;
                }

                p._client.sendReliable(msg);
            }
        }
Exemple #2
0
        /// <summary>
        /// Handles re-routing of db related messages.
        /// </summary>
        static public void Handle_DB_Chat(SC_Chat <Database> pkt, Database db)
        {
            if (pkt.recipient == "*")
            {   //Route it to everybody
                List <Arena>  targetarenas = db._server._arenas.Values.ToList();
                List <Player> targets      = new List <Player>();
                foreach (Arena a in targetarenas)
                {
                    foreach (Player pl in a.Players)
                    {
                        targets.Add(pl);
                    }
                }
                Helpers.Social_ArenaChat(targets, pkt.message, 0);
                return;
            }

            //Route it to a single player
            Player p = db._server.getPlayer(pkt.recipient);

            if (p == null)
            {
                return;
            }
            //Route it.
            Helpers.Social_ArenaChat(p, pkt.message, 0);
        }
Exemple #3
0
        public void sendMessage(Zone zone, string player, string message)
        {
            //297 bytes is the maximum size of a chat message that can be sent without crashing the client
            int maxSize = 297;
            int size    = message.Length;

            int idx = 0;

            //Make sure that the message won't crash our player!
            //TODO: FIXME: Less Gheto
            StringBuilder sb = new StringBuilder(maxSize);

            while (size - idx > 0)
            {
                SC_Chat <Zone> msg = new SC_Chat <Zone>();
                sb.Clear();

                while ((size - idx > 0) && (sb.Length < maxSize))
                {
                    sb.Append(message[idx]);
                    idx++;
                }

                msg.recipient = player;
                msg.message   = sb.ToString();
                zone._client.send(msg);
            }
        }
Exemple #4
0
        /// <summary>
        /// Creates a new packet based on the typeID and the received content
        /// inside the buffer. The user has to create an own implementation
        /// of this interface.
        /// </summary>
        public PacketBase createPacket(NetworkClient client, ushort typeID, byte[] buffer, int offset, int size)
        {       //Ready our packet base
            PacketBase packet = null;

            size--;

            //Was it a system packet?
            if (buffer[offset++] == 0)
            {
                //Yes, find the appropriate type
                return(createSystemPacket(typeID, buffer, offset, size));
            }

            //So what was the typeid?
            switch (typeID)
            {
            case SC_Login.TypeID:
                packet = new SC_Login(typeID, buffer, offset, size);
                break;

            case SC_PatchInfo.TypeID:
                packet = new SC_PatchInfo(typeID, buffer, offset, size);
                break;

            case SC_AssetInfo.TypeID:
                packet = new SC_AssetInfo(typeID, buffer, offset, size);
                break;

            case SC_SetIngame.TypeID:
                packet = new SC_SetIngame(typeID, buffer, offset, size);
                break;

            case SC_Chat.TypeID:
                packet = new SC_Chat(typeID, buffer, offset, size);
                break;


            default:
                //An undefined packet.
                packet = new PacketDummy(typeID, buffer, offset, size);
                break;
            }

            return(packet);
        }
        /// <summary>
        /// Handles a chat packet received from the server
        /// </summary>
        static public void Handle_SC_Chat(SC_Chat pkt, Client client)
        {
            GameClient c = ((client as Client <GameClient>)._obj);

            switch (pkt.chatType)
            {
            case InfServer.Protocol.Helpers.Chat_Type.Arena:
            {
                c._wGame.updateChat(pkt.message, pkt.from, pkt.chatType, "");
            }
            break;

            case InfServer.Protocol.Helpers.Chat_Type.Normal:
            {
                c._wGame.updateChat(pkt.message, pkt.from, pkt.chatType, "");
            }
            break;

            case InfServer.Protocol.Helpers.Chat_Type.Team:
            {
                c._wGame.updateChat(pkt.message, pkt.from, pkt.chatType, "");
            }
            break;

            case InfServer.Protocol.Helpers.Chat_Type.Whisper:
            {
                c._wGame.updateChat(pkt.message, pkt.from, pkt.chatType, "");
            }
            break;

            case InfServer.Protocol.Helpers.Chat_Type.PrivateChat:
            {
                c._wGame.updateChat(pkt.message, pkt.from, pkt.chatType, pkt.chat);
            }
            break;

            default:
            {
                c._wGame.updateChat("ZoneServer", pkt.message, pkt.chatType, "");
            }
            break;
            }
        }
Exemple #6
0
        /// <summary>
        /// Handles a chat packet received from the server
        /// </summary>
        static public void Handle_SC_Chat(SC_Chat pkt, Client client)
        {
            switch (pkt.chatType)
            {
            case Helpers.Chat_Type.Arena:
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(String.Format("(Type={0}) {1}",
                                                pkt.chatType, pkt.message));
            }
            break;

            case Helpers.Chat_Type.Normal:
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine(String.Format("(Type={0}) {1}> {2}",
                                                pkt.chatType, pkt.from, pkt.message));
            }
            break;

            case Helpers.Chat_Type.Team:
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine(String.Format("(Type={0}) {1}> {2}",
                                                pkt.chatType, pkt.from, pkt.message));
            }
            break;

            case Helpers.Chat_Type.Whisper:
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(String.Format("(Type={0}) {1}> {2}",
                                                pkt.chatType, pkt.from, pkt.message));
            }
            break;
            }
        }
Exemple #7
0
    {   /// <summary>
        /// Creates a new system protocol packet.
        /// </summary>
        public PacketBase createSystemPacket(ushort typeID, byte[] buffer, int offset, int size)
        {       //Ready our packet base
            PacketBase packet = null;

            offset++;
            size--;

            //What are we dealing with?
            switch (typeID)
            {
            case SC_Initial.TypeID:
                packet = new SC_Initial(typeID, buffer, offset, size);
                break;

            case SC_Login.TypeID:
                packet = new SC_Login(typeID, buffer, offset, size);
                break;

            case SC_State.TypeID:
                packet = new SC_State(typeID, buffer, offset, size);
                break;

            case SC_PatchInfo.TypeID:
                packet = new SC_PatchInfo(typeID, buffer, offset, size);
                break;

            case SC_AssetInfo.TypeID:
                packet = new SC_AssetInfo(typeID, buffer, offset, size);
                break;

            case SC_SetIngame.TypeID:
                packet = new SC_SetIngame(typeID, buffer, offset, size);
                break;

            case SC_Chat.TypeID:
                packet = new SC_Chat(typeID, buffer, offset, size);
                break;

            case BoxPacket.TypeID:
                packet = new BoxPacket(typeID, buffer, offset, size);
                break;

            case Disconnect.TypeID:
                packet = new Disconnect(typeID, buffer, offset, size);
                break;

            case PingPacket.TypeID:
                packet = new PingPacket(typeID, buffer, offset, size);
                break;

            case Reliable.TypeID:
                packet = new Reliable(typeID, buffer, offset, size, 0);
                break;

            case Reliable.TypeID + 1:
                packet = new Reliable(typeID, buffer, offset, size, 1);
                break;

            case Reliable.TypeID + 2:
                packet = new Reliable(typeID, buffer, offset, size, 2);
                break;

            case Reliable.TypeID + 3:
                packet = new Reliable(typeID, buffer, offset, size, 3);
                break;

            case OutOfSync.TypeID:
                packet = new OutOfSync(typeID, buffer, offset, size, 0);
                break;

            case OutOfSync.TypeID + 1:
                packet = new OutOfSync(typeID, buffer, offset, size, 1);
                break;

            case OutOfSync.TypeID + 2:
                packet = new OutOfSync(typeID, buffer, offset, size, 2);
                break;

            case OutOfSync.TypeID + 3:
                packet = new OutOfSync(typeID, buffer, offset, size, 3);
                break;

            case ReliableEcho.TypeID:
                packet = new ReliableEcho(typeID, buffer, offset, size, 0);
                break;

            case ReliableEcho.TypeID + 1:
                packet = new ReliableEcho(typeID, buffer, offset, size, 1);
                break;

            case ReliableEcho.TypeID + 2:
                packet = new ReliableEcho(typeID, buffer, offset, size, 2);
                break;

            case ReliableEcho.TypeID + 3:
                packet = new ReliableEcho(typeID, buffer, offset, size, 3);
                break;

            case ReliableBox.TypeID:
                packet = new ReliableBox(typeID, buffer, offset, size, 0);
                break;

            case ReliableBox.TypeID + 1:
                packet = new ReliableBox(typeID, buffer, offset, size, 1);
                break;

            case ReliableBox.TypeID + 2:
                packet = new ReliableBox(typeID, buffer, offset, size, 2);
                break;

            case ReliableBox.TypeID + 3:
                packet = new ReliableBox(typeID, buffer, offset, size, 3);
                break;

            case DataPacketRcv.TypeID:
                packet = new DataPacketRcv(typeID, buffer, offset, size, 0);
                break;

            case DataPacketRcv.TypeID + 1:
                packet = new DataPacketRcv(typeID, buffer, offset, size, 1);
                break;

            case DataPacketRcv.TypeID + 2:
                packet = new DataPacketRcv(typeID, buffer, offset, size, 2);
                break;

            case DataPacketRcv.TypeID + 3:
                packet = new DataPacketRcv(typeID, buffer, offset, size, 3);
                break;

            default:
                //An undefined packet.
                packet = new PacketDummy(typeID, buffer, offset, size);
                break;
            }

            return(packet);
        }
Exemple #8
0
        /// <summary>
        /// Creates a new packet based on the typeID and the received content
        /// inside the buffer. The user has to create an own implementation
        /// of this interface.
        /// </summary>
        public PacketBase createPacket(NetworkClient client, ushort typeID, byte[] buffer, int offset, int size)
        {               //Ready our packet base
            PacketBase packet = null;

            size--;

            //Was it a system packet?
            if (buffer[offset++] == 0)
            {
                //Yes, find the appropriate type
                return(createSystemPacket(typeID, buffer, offset, size));
            }

            //So what was the typeid?
            switch (typeID)
            {
            case SC_Auth <T> .TypeID:
                packet = new SC_Auth <T>(typeID, buffer, offset, size);
                break;

            case SC_PlayerLogin <T> .TypeID:
                packet = new SC_PlayerLogin <T>(typeID, buffer, offset, size);
                break;

            case SC_PlayerStatsResponse <T> .TypeID:
                packet = new SC_PlayerStatsResponse <T>(typeID, buffer, offset, size);
                break;

            case SC_Whisper <T> .TypeID:
                packet = new SC_Whisper <T>(typeID, buffer, offset, size);
                break;

            case SC_JoinChat <T> .TypeID:
                packet = new SC_JoinChat <T>(typeID, buffer, offset, size);
                break;

            case SC_LeaveChat <T> .TypeID:
                packet = new SC_LeaveChat <T>(typeID, buffer, offset, size);
                break;

            case SC_PrivateChat <T> .TypeID:
                packet = new SC_PrivateChat <T>(typeID, buffer, offset, size);
                break;

            case SC_Chat <T> .TypeID:
                packet = new SC_Chat <T>(typeID, buffer, offset, size);
                break;

            case SC_Zones <T> .TypeID:
                packet = new SC_Zones <T>(typeID, buffer, offset, size);
                break;

            case Disconnect <T> .TypeID:
                packet = new Disconnect <T>(typeID, buffer, offset, size);
                break;

            default:
                //An undefined packet.
                packet = new PacketDummy(typeID, buffer, offset, size);
                break;
            }

            return(packet);
        }