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!");
 }
Example #3
0
 public static void System(WorldClient client, string msg)
 {
     System(msg, client.CharacterID);
 }