static void OnChatPacket(object p, PacketEventArgs e) { try { Client c = (Client)e.lnk.AttachedObject; switch (e.pak.ContainerID) { case SEND_MESSAGE.ContID: Debug.WriteLine("Server> SEND_MESSAGE Packet"); if (SendM3.UnpackContainer(e.pak, OPTIONS.Chat)) { SendM3.UserID = c.ID; Client.BCastContainer(SendM3, SEND_MESSAGE.ContID); } else { Console.WriteLine("Chat error > packet decode error > " + c.Username + " > " + e.pak.link.IPv4Address); e.pak.link.Dispose(); } break; } } catch (Exception ex) { Console.WriteLine("Chat error > " + ex.ToString() + " > " + e.pak.link.IPv4Address); e.pak.link.Dispose(); } }
private static void OnChatPaket(object sender, PacketEventArgs e) { switch (e.pak.ContainerID) { case SEND_MESSAGE.ContID: Debug.WriteLine("SEND_MESSAGE Packet"); if (SendM1.UnpackContainer(e.pak, OPTIONS.Chat)) { Message msg = new Message(); msg.command = 10; // message msg.UserID = SendM1.UserID; msg.Messagedata = SendM1.Message; msg.Username = msg.UserID.ToString(); try { msg.Username = ClientArray[msg.UserID].Username; } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } IncommingChat.Enqueue(msg); } break; case SEND_USER.ContID: Debug.WriteLine("SEND_USER Packet"); if (SendU1.UnpackContainer(e.pak, OPTIONS.Chat)) { int statID = SendU1.StatusID; if (statID == STATUS.USER_NEW) { uint ID = SendU1.UserID; string Username = SendU1.Username; Client c = new Client(); c.Username = Username; c.ID = ID; ClientArray[ID] = c; Message msg = new Message(); msg.command = 11; // new msg.cli = c; msg.UserID = SendU1.UserID; msg.Username = SendU1.Username; msg.Messagedata = "new client '" + c.Username + "' connected."; IncommingChat.Enqueue(msg); Debug.WriteLine("New User: "******" ID: " + c.ID); } if (statID == STATUS.USER_DISCONNECT) { uint ID = SendU1.UserID; try { Client c = ClientArray[ID]; Message msg = new Message(); msg.command = 12; // Delete msg.Messagedata = "Client '" + c.Username + "' disconnected."; msg.cli = c; IncommingChat.Enqueue(msg); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } } } break; } }