Beispiel #1
0
        public void OnEvent(ref TNetMsg Msg)
        {
            byte      kind     = GSocket.GetBufToByte(ref Msg.Value);
            ushort    itemIdx  = GSocket.GetBufToWord(ref Msg.Value);
            byte      refresh  = GSocket.GetBufToByte(ref Msg.Value);
            sSaveItem saveItem = new sSaveItem();

            switch (kind)
            {
            case 1:
                if (GSocket.GetBufToType(ref Msg.Value, ref saveItem))
                {
                    //Console.WriteLine("背包新增物品");
                    //Console.WriteLine($"Item索引:{itemIdx}, 物品ID:{saveItem.ID}");
                }
                break;

            case 2:
                //Console.WriteLine("背包刪除物品");
                //Console.WriteLine($"Item索引:{itemIdx}");
                break;
            }

            if (refresh == 1)
            {
                //Console.WriteLine("刷新背包");
            }
        }
        public void OnEvent(ref TNetMsg Msg)
        {
            var kind = GSocket.GetBufToByte(ref Msg.Value);

            switch (kind)
            {
            case SUCCESS:
                // 關閉效能監測工具,並儲存此次紀錄結果
                _monitorUnit.StopAndSaveToMonitorManager(true, "禮包碼兌換成功");
                Console.WriteLine($"{_monitorUnit.GetTag()}禮包碼兌換成功");
                break;

            case HTTP_FAILED:
                _monitorUnit.StopAndSaveToMonitorManager(false, "禮包碼兌換失敗");
                Console.WriteLine($"{_monitorUnit.GetTag()}禮包碼兌換失敗");
                break;

            case BAG_IS_FULL:
                _monitorUnit.StopAndSaveToMonitorManager(false, "背包已滿");
                Console.WriteLine($"{_monitorUnit.GetTag()}背包已滿");
                break;

            case ADD_PRIZE_FAILED:
                _monitorUnit.StopAndSaveToMonitorManager(false, "新增禮包碼到背包中失敗");
                Console.WriteLine($"{_monitorUnit.GetTag()}新增禮包碼到背包中失敗");
                break;
            }
        }
Beispiel #3
0
        void Client_DataArrived(GSocket sender, byte[] Data)
        {
            if (InvokeRequired)
            {
                // We're not in the UI thread, so we need to call BeginInvoke
                BeginInvoke(new GSocket.DataArrivedHandler(Client_DataArrived), new object[] { sender, Data });
                return;
            }
            Log("[" + sender.Name + "]:", Color.DarkBlue);
            Log(ToLiteral(new System.Text.ASCIIEncoding().GetString(Data)) + "\n", Color.LightBlue);

            if (this.cbNotification.Checked)
            {
                Console.Beep(500, 200);
            }

            if (this.OnDataArrived != null)
            {
                this.OnDataArrived(sender, Data);
            }

            if (this.cbSpeech.Checked)
            {
                this.speaker.SpeakAsync(new System.Text.ASCIIEncoding().GetString(Data));
            }
        }
Beispiel #4
0
        void _listener_ClientArrived(GSocketListener sender, GSocket Client)
        {
            if (InvokeRequired)
            {
                // We're not in the UI thread, so we need to call BeginInvoke
                BeginInvoke(new GSocketListener.ClientArrivedHandler(_listener_ClientArrived), new object[] { sender, Client });
                return;
            }

            string name = sender != null ? "S:" : "C:";

            name       += Client.TCP_Client.Client.RemoteEndPoint.ToString();
            Client.Name = name;

            Client.DataArrived += new GSocket.DataArrivedHandler(Client_DataArrived);
            Client.Closed      += new GSocket.ClosedHandler(Client_Closed);

            lvConnections.Items.Add(new ListViewItem(name)
            {
                Tag = Client
            });

            Log("[" + Client.Name + "]: New Connection\n", Color.DarkGreen);

            if (this.cbNotification.Checked)
            {
                Console.Beep(2000, 200);
            }

            if (this.OnNewClient != null)
            {
                this.OnNewClient(sender, Client);
            }
        }
Beispiel #5
0
        public GSocket[] GetConnections()
        {
            List <GSocket> tmpList = new List <GSocket>();

            foreach (ListViewItem item in lvConnections.Items)
            {
                try {
                    GSocket sock = item.Tag as GSocket;
                    tmpList.Add(sock);
                } catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
            return(tmpList.ToArray());
        }
Beispiel #6
0
 void BtnSendClick(object sender, EventArgs e)
 {
     foreach (ListViewItem item in lvConnections.SelectedItems)
     {
         try
         {
             GSocket sock = item.Tag as GSocket;
             sock.Send(new System.Text.ASCIIEncoding().GetBytes(tbSend.Text));
             Log("[" + sock.Name + "]:", Color.DarkGray); Log(tbSend.Text + "\n", Color.LightGray);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
     }
 }
Beispiel #7
0
        public void OnEvent(ref TNetMsg Msg)
        {
            ushort bagCapacity = GSocket.GetBufToWord(ref Msg.Value);
            ushort itemCount   = GSocket.GetBufToWord(ref Msg.Value);

            if (itemCount > 0)
            {
                ushort    ItemIdx  = 0;
                sSaveItem saveItem = new sSaveItem();

                //for (int i = 1; i <= itemCount; i++)
                //{
                //    ItemIdx = GSocket.GetBufToWord(ref Msg.Value);
                //    if (GSocket.GetBufToType(ref Msg.Value, ref saveItem))
                //    {
                //        Console.WriteLine($"Item索引:{ItemIdx}, 物品ID:{saveItem.ID}");
                //    }
                //}
            }
        }
Beispiel #8
0
        public SocketHandler(Action <bool> callback, MonitorUnit monitorUnit)
        {
            GSocket = new GSocket();
            GSocket.Initialization();

            GSocket.Cmds.NetMsgProcs[1, 71]  = CreateEvent(EventCode.LoginFakeEvent);
            GSocket.Cmds.NetMsgProcs[1, 72]  = CreateEvent(EventCode.SignupFakeEvent);
            GSocket.Cmds.NetMsgProcs[1, 111] = CreateEvent(EventCode.RedemptionActivationFakeEvent);
            GSocket.Cmds.NetMsgProcs[3, 1]   = CreateEvent(EventCode.BagEvent);
            GSocket.Cmds.NetMsgProcs[3, 2]   = CreateEvent(EventCode.BagUpdateEvent);
            GSocket.Cmds.NetMsgProcs[3, 100] = CreateEvent(EventCode.DisplayRewardInfoEvent);

            AddListener(EventCode.LoginFakeEvent, new LoginListener(GSocket, monitorUnit));
            AddListener(EventCode.SignupFakeEvent, new SignupListener(GSocket, monitorUnit));
            AddListener(EventCode.RedemptionActivationFakeEvent, new RedemptionActivationFakeListener(monitorUnit));
            AddListener(EventCode.BagEvent, new BagListener());
            AddListener(EventCode.BagUpdateEvent, new BagUpdateListener());
            AddListener(EventCode.DisplayRewardInfoEvent, new DisplayRewardInfoListener());

            GSocket.Connect(GSIP, GSPort, false, callback);
        }
Beispiel #9
0
        void ConnectionFormClosing(object sender, FormClosingEventArgs e)
        {
            foreach (ListViewItem item in lvConnections.Items)
            {
                try
                {
                    GSocket sock = item.Tag as GSocket;
                    sock.Kill();
                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            if (_openListenerThread != null)
            {
                if (_openListenerThread.ThreadState == ThreadState.Running)
                {
                    _openListenerThread.Abort();
                }
                _openListenerThread = null;
            }

            foreach (GSocketListener listener in _lListener)
            {
                listener.Kill();
                Log("[SERVER]: Stop listening on Port " + listener.Port.ToString() + "\n", Color.DarkRed);
            }
            _lListener.Clear();
            try {
                StreamWriter sw = new StreamWriter("Lib\\lastIP.txt");
                sw.WriteLine(this.tbClientIP.Text);
                sw.WriteLine(this.tbClientPort.Text);
                sw.Close();
            } catch (Exception ex) {
                MessageBox.Show(ex.ToString());
            }
        }
Beispiel #10
0
        public void OnEvent(ref TNetMsg Msg)
        {
            byte kind = GSocket.GetBufToByte(ref Msg.Value);
            //Console.WriteLine("登入結果(kind):" + kind);
            byte sex     = 0;
            byte armType = 0;

            switch (kind)
            {
            case 1:
                // 登入成功
                var        gsid      = GSocket.GetBufToWord(ref Msg.Value);
                int        timeRange = GSocket.GetBufToInt(ref Msg.Value);
                sLoginType role      = new sLoginType(true);
                if (GSocket.GetBufToType <sLoginType>(ref Msg.Value, ref role))
                {
                    // 啟動效能監測工具
                    _monitorUnit.StartMonitor();
                    _monitorUnit.SetTag(role.Account);

                    Console.WriteLine($"{role.Account}發送 註冊禮包碼");
                    _socket.PushDWord(10);
                    _socket.PushString("sayhello2you");
                    _socket.SendMsg(1, 111);
                }
                break;

            case 3:
                // 創角帳號
                Thread.Sleep(2000);
                Console.WriteLine("創角帳號(kind):" + kind);
                var randomGenerator = new RandomStringGenerator();
                _socket.PushString(randomGenerator.RandomCreateCharacterName());
                _socket.PushByte(sex);
                _socket.PushByte(armType);
                _socket.SendMsg(1, 72);
                break;
            }
        }
Beispiel #11
0
        void Client_Closed(GSocket sender)
        {
            if (InvokeRequired)
            {
                // We're not in the UI thread, so we need to call BeginInvoke
                BeginInvoke(new GSocket.ClosedHandler(Client_Closed), new object[] { sender });
                return;
            }

            List <ListViewItem> toDelete = new List <ListViewItem>();

            foreach (ListViewItem item in lvConnections.Items)
            {
                if (item.Tag == sender)
                {
                    toDelete.Add(item);
                }
            }

            foreach (ListViewItem item in toDelete)
            {
                lvConnections.Items.Remove(item);
            }

            Log("[" + sender.Name + "]: Closed Connection\n", Color.DarkRed);

            if (this.cbNotification.Checked)
            {
                Console.Beep(50, 200);
            }

            if (this.OnClosedClient != null)
            {
                this.OnClosedClient(sender);
            }
        }
Beispiel #12
0
        public void OnEvent(ref TNetMsg Msg)
        {
            byte kind = GSocket.GetBufToByte(ref Msg.Value);
            byte Num  = GSocket.GetBufToByte(ref Msg.Value);

            sPrizeReward[] prizeAy = new sPrizeReward[Num];

            for (int i = 0; i < Num; i++)
            {
                ushort ID      = GSocket.GetBufToWord(ref Msg.Value);
                uint   ItemNum = GSocket.GetBufToDWord(ref Msg.Value);
                Console.WriteLine("Award ID : " + ID.ToString() + "  ItemNum : " + ItemNum.ToString());
                prizeAy[i].ItemID = ID;
                prizeAy[i].Num    = ItemNum;
            }

            switch (kind)
            {
            case 1:
                // 戰鬥獎勵
                break;

            case 2:
                // 副本獎勵
                break;

            case 3:
                //掃蕩獎勵
                break;

            case 5:     //野怪 中央訊息
                break;

            case 11:    // 尋訪武將
                break;

            case 12:
            case 33:
                // 使用物品
                break;

            case 13:     // 使用物品
            case 14:     // 活動、成就獎勵
            case 15:     // 活躍值獎勵
            case 23:     // 邊境巡邏隊兌換
            case 25:     // 合成獎勵
            case 26:     // 副本全制霸獎勵(物品)
            case 27:     // 物品信件獎勵
            case 28:     // 限時購買
            case 34:     // 內政收益
            case 35:     // 內政(幫助獎勵)
            case 36:     // 內政(掠奪獎勵)
                         //中央訊息 訊息連跳
                //foreach(var prize in prizeAy)
                //{
                //    Console.WriteLine($"中央訊息:恭喜獲得 物品ID:{prize.ItemID}, 物品數量:{prize.Num}");
                //}
                break;

            case 17:        // 酒館武將回禮,錄用
                break;

            case 18:        // 七星續命燈獎勵
                break;

            case 19:        // 熔爐獲得
                break;

            case 20:        // 關卡全制霸獎勵
                break;

            case 21:        // 武列全制霸獎勵(必定是武將)
                break;

            case 22:        // 地牢錄用獎勵
                break;

            case 24:        // 神來一翻翻牌獎勵
                break;

            case 29:        // 首儲活動
                break;

            case 30:    //採集  中央訊息
                break;

            case 31:     // 虛寶兌換
                break;

            case 32:     // 轉轉樂
                break;

            default:
                break;
            }
        }
Beispiel #13
0
 public LoginListener(GSocket socket, MonitorUnit monitor)
 {
     _socket      = socket;
     _monitorUnit = monitor;
 }
        public void OnEvent(ref TNetMsg Msg)
        {
            byte kind = GSocket.GetBufToByte(ref Msg.Value);

            Console.WriteLine("創角結果(kind):" + kind);
        }
 public SignupListener(GSocket socket, MonitorUnit monitor)
 {
     _socket      = socket;
     _monitorUnit = monitor;
 }
Beispiel #16
0
 public void AddClient(GSocket client)
 {
     this._listener_ClientArrived(null, client);
 }