public bool Join(WorldClient client) { try { IEnumerator ienum = Users.GetEnumerator(); int index = 0; while (ienum.MoveNext()) { if (((WorldClient)ienum.Current).Player.Name == client.Player.Name) { Users.RemoveAt(index); Flags.RemoveAt(index); break; } index++; } BinWriter w = new BinWriter(); w.Write((byte)CHANNEL.JOIN2); w.Write((string)name); if (Users.Count == 0) { w.Write((byte)0x00); } else { w.Write((byte)0x01); } w.Write((byte)0x00); w.Write((byte)0x00); w.Write((byte)0x00); client.Send(SMSG.CHANNEL_NOTIFY, w); Users.Add(client); int nb_users = NbUsers(); if (client.Player.AccessLvl >= ACCESSLEVEL.GM || nb_users == 1) { Flags.Add(new RightFlag((string)"o")); } else { Flags.Add(new RightFlag()); } BinWriter w3 = new BinWriter(); w3.Write((byte)CHANNEL.JOIN1); w3.Write((string)name); w3.Write(client.Player.GUID); BinWriter w2 = new BinWriter(); w2.Write((string)name); w2.Write((byte)0x00); w2.Write((int)nb_users); for (int i = 0; i < nb_users; i++) { w2.Write(((WorldClient)(Users[i])).Player.GUID); w2.Write((byte)((RightFlag)(Flags[i])).GetRightFlag()); if (announcment) { ((WorldClient)Users[i]).Send(SMSG.CHANNEL_NOTIFY, w3); } } client.Send(SMSG.CHANNEL_LIST, w2); return(true); } catch (Exception e) { Console.WriteLine("Channel Exception (Join): " + e.Message); return(false); } }
static void OnKick(WorldClient client, CMSG msgID, BinReader data) { Console.WriteLine("Kick1!"); }
public static void System(WorldClient client, string msg) { System(msg, client.CharacterID); }