예제 #1
0
 private void handleRecvChat(PR2Packet m_Pkt)
 {
     if (m_Pkt.opCode.Equals("chat"))
     {
         String m_User = m_Pkt.data[0];
         String m_Chat = m_Pkt.data[2];
         Console.WriteLine("Chat message from " + m_User + ":" + m_Chat);
     }
 }
예제 #2
0
        private void handlePacket(PR2Packet m_Pkt)
        {
            m_Event(m_Pkt);

            /*  Console.Write("Packet opCode: " + m_Pkt.opCode + " Data:");
             * for(int i = 0; i < m_Pkt.data.Length; i++)
             *    Console.Write(m_Pkt.data[i] + ",");
             * Console.Write("\n");*/
        }
예제 #3
0
 private void handleRecvLoginID(PR2Packet m_Pkt)
 {
     if (m_Pkt.opCode.Equals("setLoginID"))
     {
         String m_Result = HttpHandler.Send(user, pass, Int32.Parse(m_Pkt.data[0]), server_id);
         pass = "";
         dynamic m_Exp = new ExpandoObject();
         m_Exp   = JsonConvert.DeserializeObject(m_Result);
         token   = m_Exp.token;
         m_Level = new LevelHandler(HttpHandler.getCampaign(token));
         Send("get_customize_info`", null);
         Send("set_chat_room`", new String[] { "main" });
         Send("set_right_room`", new String[] { "campaign" });
         m_Level.WriteLevels(true);
     }
 }
예제 #4
0
        private void ReceiveCallback(IAsyncResult result)
        {
            StateObject m_Result   = (StateObject)result.AsyncState;
            int         byteToRead = EndReceive(result);

            if (byteToRead > 0)
            {
                using (MemoryStream stream = new MemoryStream(m_Result.buffer))
                {
                    using (BinaryReader read = new BinaryReader(stream))
                    {
                        while (true)
                        {
                            byte[] buf = new byte[4096];
                            int    i   = 0;
                            while (read.PeekChar() != '\u0004' && i < buf.Length)
                            {
                                buf[i++] = read.ReadByte();
                            }
                            String    m_Pkt   = Encoding.UTF8.GetString(buf, 0, i);
                            String[]  m_Vars  = m_Pkt.Split('`');
                            String    m_Hash  = m_Vars[0];
                            int       m_Write = Int32.Parse(m_Vars[1]);
                            PR2Packet pack    = new PR2Packet();
                            pack.opCode = m_Vars[2];
                            pack.data   = new String[m_Vars.Length - 2];
                            for (int k = 3; k < m_Vars.Length; k++)
                            {
                                pack.data[k - 3] = m_Vars[k];
                            }

                            handlePacket(pack);

                            read.ReadByte();
                            var a = Int32.Parse(read.PeekChar().ToString());
                            if (a == 0 || i >= buf.Length)
                            {
                                break;
                            }
                        }
                    }
                }
                m_Result.buffer = new byte[StateObject.BufferSize];
            }
            BeginReceive(m_Result.buffer, 0, StateObject.BufferSize, 0,
                         new AsyncCallback(ReceiveCallback), m_Result);
        }
예제 #5
0
 private void handleRecvSlot(PR2Packet m_Pkt)
 {
     if (m_Pkt.opCode.Contains("fillSlot"))
     {
         String   m_LevelData = m_Pkt.opCode.Substring(8);
         String[] m_Data      = m_LevelData.Split("_");
         int      m_LevelID   = Int32.Parse(m_Data[0]);
         short    slot        = short.Parse(m_Pkt.data[0]);
         string   name        = m_Pkt.data[1];
         int      rank        = Int32.Parse(m_Pkt.data[2]);
         m_Level.updateLevelSlot(slot, name, rank, m_LevelID);
     }
     else if (m_Pkt.opCode.Contains("clearSlot"))
     {
         String   m_LevelData = m_Pkt.opCode.Substring(9);
         String[] m_Data      = m_LevelData.Split("_");
         short    slot        = short.Parse(m_Pkt.data[0]);
         int      m_LevelID   = Int32.Parse(m_Data[0]);
         m_Level.updateLevelSlot(slot, "", -1, m_LevelID);
     }
 }