예제 #1
0
파일: Bans.cs 프로젝트: hollow87/Arca4
        public static void ListBans(UserObject userobj)
        {
            int i = 0;
            Items.ForEach(x => userobj.SendPacket(AresTCPPackets.NoSuch((i++) + " - " + x.Name + " [" + x.ExternalIP + "]")));

            if (i == 0)
                userobj.SendPacket(AresTCPPackets.NoSuch("no banned users"));
        }
예제 #2
0
파일: MOTD.cs 프로젝트: hollow87/Arca4
        public static void SendMOTD(UserObject userobj)
        {
            List<byte> buf = new List<byte>();

            motd.ForEach(x =>
            {
                buf.AddRange(AresTCPPackets.NoSuch(x.Replace("+n", userobj.Name)));

                if (buf.Count > 800)
                {
                    userobj.SendPacket(AresTCPPackets.ClientCompressed(buf.ToArray()));
                    buf.Clear();
                }
            });

            if (buf.Count > 0)
                userobj.SendPacket(AresTCPPackets.ClientCompressed(buf.ToArray()));
        }
예제 #3
0
        public static void ListScripts(UserObject userobj)
        {
            if (userobj.Level < Settings.ScriptLevel)
                return;

            foreach (var script in ScriptManager.Items)
            {
                userobj.SendPacket(AresTCPPackets.NoSuch(script.ScriptName));
            }
        }
예제 #4
0
        public static void LoadScript(UserObject userobj, String args)
        {
            if (userobj.Level < Settings.ScriptLevel)
                return;

            string scriptDir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
            scriptDir = System.IO.Path.Combine(scriptDir, "Arca4", "Scripts");
            if (!Directory.Exists(scriptDir))
                Directory.CreateDirectory(scriptDir);

            // Not a javascript script
            if (!args.EndsWith(".js"))
            {
                // TODO: Localizaton support
                userobj.SendPacket(AresTCPPackets.NoSuch("File is not a javascript script"));
                return;
            }

            // file doesnt exist return false
            string filePath = Path.Combine(scriptDir, args);
            if (!File.Exists(filePath))
            {
                // TODO: Localizaton support
                userobj.SendPacket(AresTCPPackets.NoSuch("File does not exist"));
                return;
            }

            ScriptManager.Items.Remove(args);
            ScriptManager.Items.Add(args, File.ReadAllText(filePath, Encoding.UTF8));
        }
예제 #5
0
 public static void Info(UserObject userobj)
 {
     UserPool.Users.ForEach(x => { if (x.LoggedIn) userobj.SendPacket(AresTCPPackets.NoSuch(x.ID + " - " + x.Name + " -> " + x.Vroom)); });
 }
예제 #6
0
        private static void ProcessVCIgnore(UserObject userobj, AresTCPPacketReader packet)
        {
            if (Settings.CanVoiceChat)
            {
                String name = packet.ReadString();

                if (userobj.VCIgnores.Contains(name))
                {
                    userobj.SendPacket(AresTCPPackets.NoSuch(name + " is voice chat unignored"));
                    userobj.VCIgnores.RemoveAll(x => x == name);
                }
                else
                {
                    userobj.SendPacket(AresTCPPackets.NoSuch(name + " is voice chat ignored"));
                    userobj.VCIgnores.Add(name);
                }
            }
        }
예제 #7
0
        private static void ProcessVCFirstTo(UserObject userobj, AresTCPPacketReader packet)
        {
            if (Settings.CanVoiceChat)
            {
                String name = packet.ReadString();
                UserObject target = UserPool.Users.Find(x => x.LoggedIn && x.Name == name);

                if (target != null)
                    if (!target.VCIgnores.Contains(userobj.Name))
                        if (target.CanVCPrivate)
                        {
                            byte[] buffer = CustomPackets.VoiceChatFirstTo(userobj.Name, packet.ReadBytes());
                            target.SendPacket(buffer);
                        }
                        else userobj.SendPacket(CustomPackets.VoiceChatNoPrivate(target.Name));
                    else userobj.SendPacket(CustomPackets.VoiceChatIgnored(target.Name));
                else userobj.SendPacket(AresTCPPackets.OfflineUser(name));
            }
        }
예제 #8
0
파일: UserPool.cs 프로젝트: hollow87/Arca4
        public static void SendUserList(UserObject userobj)
        {
            userobj.SendPacket(AresTCPPackets.UserListBotItem());
            Users.ForEach(x => { if (x.LoggedIn && x.Vroom == userobj.Vroom) userobj.SendPacket(AresTCPPackets.UserListItem(x)); });
            userobj.SendPacket(AresTCPPackets.UserListEnd());

            Users.ForEach(x =>
            {
                if (x.LoggedIn && x.Vroom == userobj.Vroom)
                {
                    if (x.Avatar.Length > 0)
                        userobj.SendPacket(AresTCPPackets.Avatar(x));

                    if (!String.IsNullOrEmpty(x.PersonalMessage))
                        userobj.SendPacket(AresTCPPackets.PersonalMessage(x));

                    if (x.Font != null)
                        userobj.SendPacket(CustomPackets.CustomFont(x));

                    if (x.CanVCPrivate || x.CanVCPublic)
                        userobj.SendPacket(CustomPackets.VoiceChatUserSupport(x));
                }
            });
        }
예제 #9
0
파일: UserPool.cs 프로젝트: hollow87/Arca4
 public static void SendCustomEmotesToUser(UserObject userobj)
 {
     Users.ForEach(x =>
     {
         if (x.LoggedIn && x.Vroom == userobj.Vroom)
             if (x.SupportsCustomEmoticons)
                 x.CustomEmoticons.ForEach(y => userobj.SendPacket(CustomPackets.CustomEmoteItem(x, y)));
     });
 }