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; } }
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)); } }
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); } }
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()); }
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); } } }
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}"); // } //} } }
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); }
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()); } }
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; } }
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); } }
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; } }
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; }
public void AddClient(GSocket client) { this._listener_ClientArrived(null, client); }