Example #1
0
        public static void UserConnection(Packet p)
        {
            bool   login    = p.ReadBool();
            string username = p.ReadASCII(p.ReadByte());

            UserObject user = RenderObjectsManager.GetUser(username);

            if (user == null)
            {
                if (login)
                {
                    UOClientManager.SysMessage("[Login][" + username + "]: Connected.", 83);
                    RenderObjectsManager.AddUser(new UserObject(username));
                }
            }
            else
            {
                if (!login)
                {
                    if (Global.TrackedUser != null && Global.TrackedUser == user)
                    {
                        Global.TrackedUser = null;
                    }

                    UOClientManager.SysMessage("[Logout][" + username + "]: Disconnected.", 83);
                    user.Dispose();
                }
            }
        }
Example #2
0
        private static void NewLoginAccepted(Packet p)
        {
            if (!NetworkManager.SocketClient.IsConnected)
            {
                return;
            }

            if (p.ReadByte() == 0x01)
            {
                NetworkManager.SocketClient.AccessLevel = (AccessLevel)p.ReadByte();
                string username = p.ReadASCII(p.ReadByte());

                if (NetworkManager.SocketClient.Protocol != (Protocol)p.ReadByte())
                {
                    UOClientManager.SysMessage("[Login] Wrong protocol. Update your map!", 83);
                    NetworkManager.Disconnect(false);
                }
                else
                {
                    NetworkManager.SocketClient.CanSend = true;
                    SocketClient.InvokeConnect();
                    UOClientManager.SysMessage("[Login] Accepted on server!", 83);
                }
            }
            else
            {
                UOClientManager.SysMessage("[Login] Refused from server :(", 83);
                NetworkManager.Disconnect(false);
            }
        }
Example #3
0
        private static void SharedLabel(Packet p)
        {
            bool  toremove = p.ReadBool();
            short x        = (short)p.ReadUShort();
            short y        = (short)p.ReadUShort();
            byte  map      = p.ReadByte();

            if (toremove)
            {
                UserObject        user  = RenderObjectsManager.GetUser(p.ReadASCII(p.ReadByte()));
                SharedLabelObject label = RenderObjectsManager.Get <SharedLabelObject>().FirstOrDefault(s => s.Parent == user && s.Position.X == x && s.Position.Y == y && s.Map == map);
                label?.Dispose();

                UOClientManager.SysMessage(string.Format("[SharedLabel][{0}] Removed a shared label!", user.Name), 83);
            }
            else
            {
                string     description = p.ReadASCII(p.ReadByte());
                string     username    = p.ReadASCII(p.ReadByte());
                UserObject user        = RenderObjectsManager.GetUser(username);
                if (user == null)
                {
                    RenderObjectsManager.AddUser(user = new UserObject(username));
                }

                RenderObjectsManager.AddSharedLabel(new SharedLabelObject(user, x, y, map, description));
                UOClientManager.SysMessage(string.Format("[SharedLabel][{0}] Added a shared label!", user.Name), 83);
            }
        }
Example #4
0
        private static void NewChatMessage(Packet p)
        {
            ushort msglen  = p.ReadUShort();
            int    color   = (int)p.ReadUInt();
            string message = p.ReadASCII(msglen);

            string     username = p.ReadASCII(p.ReadByte());
            UserObject user     = RenderObjectsManager.GetUser(username);

            ChatManager.Add(username, message);
            user.UpdateLifeTime();
            UOClientManager.SysMessage("[Chat][" + username + "]: " + message, 83);
        }
Example #5
0
        private static void NewAlert(Packet p)
        {
            int    x        = (short)p.ReadUShort();
            int    y        = (short)p.ReadUShort();
            string username = p.ReadASCII(p.ReadByte());

            UserObject   user   = RenderObjectsManager.GetUser(username);
            SignalObject signal = new SignalObject(x, y);

            RenderObjectsManager.AddSignal(signal);

            UOClientManager.SysMessage(string.Format("[Alert][{0}] sends an alert!", user.Name), 83);
        }
Example #6
0
        public void ReloadClients()
        {
            comboBoxClientNum.Items.Clear();
            _checkSelected = false;

            var clients = UOClientManager.GetClientsWindowTitles();

            foreach (KeyValuePair <IntPtr, string> c in clients)
            {
                comboBoxClientNum.Items.Add(new ClientInfo {
                    windowText = c.Value, handle = c.Key
                });
                if (UOClientManager.hWnd == c.Key)
                {
                    comboBoxClientNum.SelectedIndex = comboBoxClientNum.Items.Count - 1;
                }
            }

            _checkSelected = true;
        }
Example #7
0
        private static void ChatMessageResponse(Packet p)
        {
            if (p.ReadBool())
            {
                if (_messagesQueue.Count < 1)
                {
                    return;
                }

                lock (_messagesQueue)
                {
                    string msg = _messagesQueue.Dequeue();

                    if (!string.IsNullOrEmpty(msg))
                    {
                        UOClientManager.SysMessage("[Chat][" + Global.PlayerInstance.Name + "]: " + msg, 83);
                        ChatManager.Add(Global.PlayerInstance.Name, msg);
                    }
                }
            }
        }
Example #8
0
 private static void ServerMessage(Packet p)
 {
     UOClientManager.SysMessage("[EnhancedMapServer]: " + p.ReadASCII(p.ReadUShort()), (int)p.ReadUInt());
 }
Example #9
0
        public static void PlayerData(Packet p)
        {
            ushort x     = p.ReadUShort();
            ushort y     = p.ReadUShort();
            byte   facet = p.ReadByte();

            ushort hits    = p.ReadUShort();
            ushort stam    = p.ReadUShort();
            ushort mana    = p.ReadUShort();
            ushort maxhits = p.ReadUShort();
            ushort maxstam = p.ReadUShort();
            ushort maxmana = p.ReadUShort();

            byte flag = p.ReadByte();

            p.Skip(1);
            bool panic = p.ReadBool();

            Color msgCol = Color.FromArgb((int)p.ReadUInt());

            string fontName = p.ReadASCII(p.ReadByte());

            float fontSize;

            unsafe
            {
                uint n = p.ReadUInt();
                fontSize = *(float *)&n;
            }


            FontStyle fontStyle = (FontStyle)p.ReadByte();

            FontFamily f = FontFamily.Families.FirstOrDefault(s => s.Name == fontName);

            if (f == null)
            {
                fontName = "Arial";
            }
            else if (!f.IsStyleAvailable(fontStyle))
            {
                fontStyle = FontStyle.Regular;
            }

            string     username = p.ReadASCII(p.ReadByte());
            UserObject user     = RenderObjectsManager.GetUser(username);

            if (user == null)
            {
                RenderObjectsManager.AddUser(user = new UserObject(username));
            }

            user.UpdatePosition(x, y);
            user.Map = facet;
            user.Hits.Set(hits, maxhits);
            user.Stamina.Set(stam, maxstam);
            user.Mana.Set(mana, maxmana);

            switch (flag)
            {
            case 1:
                user.IsPoisoned = true;
                break;

            case 2:
                user.IsYellowHits = true;
                break;

            case 3:
                user.IsParalyzed = true;
                break;

            case 4:
                if (!user.IsDead)
                {
                    RenderObjectsManager.AddDeathObject(new DeathObject(user, user.Position, user.Map));
                }
                user.IsDead = true;
                break;

            case 5:
                user.IsHidden = true;
                break;

            default:
                user.IsHidden = user.IsPoisoned = user.IsYellowHits = user.IsParalyzed = user.IsDead = false;
                break;
            }

            if (user.InPanic && panic) // already panic, ignore
            {
                if (DateTime.Now > user.LastPanicUpdate)
                {
                    UOClientManager.SysMessage($"[Panic][{user.Name}] Needs help to: {user.Position} - Map: {user.Map}", 83);
                    user.LastPanicUpdate = DateTime.Now.AddSeconds(5);
                }
            }
            else if (!user.InPanic && panic) // receive panic signal
            {
                if (Global.SettingsCollection["panicsounds"].ToBool())
                {
                    SoundsManager.Play(SOUNDS_TYPE.PANIC);
                }
                UOClientManager.SysMessage($"[Panic][{user.Name}] Starts to panic!", 83);
                user.LastPanicUpdate = DateTime.Now.AddSeconds(5);
            }
            else if (user.InPanic && !panic) // receve remove panic signal
            {
                UOClientManager.SysMessage($"[Panic][{user.Name}] Stopped to panic.", 83);
            }

            user.InPanic = panic;
            user.Font    = new Font(fontName, fontSize, fontStyle, GraphicsUnit.Pixel);
            user.Hue     = new SolidBrush(msgCol);

            user.UpdateLifeTime();
        }
Example #10
0
        private void AssignEvents()
        {
            comboBoxClientNum.SelectedIndexChanged += (sender, e) =>
            {
                if (!_checkSelected)
                {
                    return;
                }

                if (comboBoxClientNum.Items.Count > 0 && comboBoxClientNum.SelectedIndex >= 0)
                {
                    ClientInfo client = (ClientInfo)comboBoxClientNum.Items[comboBoxClientNum.SelectedIndex];
                    UOClientManager.AttachToClient(client.handle);
                }
            };

            customButtonRefreshClients.Click += (sender, e) => { ReloadClients(); };


            customButtonRebuildMaps.Click += (sender, e) =>
            {
                if (MessageBox.Show("All maps will be lost.\r\n\r\nAre you sure to continue?", "Attention!", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }

                ParentForm.Hide();
                MapsManager.RemoveMapsFiles();
                Global.MainWindow.RebuildMaps(true);
                Global.MainWindow.Show();
            };

            numericUpDownFPS.ValueChanged += (sender, e) =>
            {
                Global.SettingsCollection["fps"] = numericUpDownFPS.Value;
                Global.MainWindow.SetTimerIntervalByFps((int)numericUpDownFPS.Value);
            };

            radioButtonDetailed.CheckedChanged += (sender, e) =>
            {
                if (radioButtonDetailed.Checked)
                {
                    Global.SettingsCollection["mapkind"] = 0;
                    Global.Facet = Global.Facet;
                }
            };
            radioButtonNormal.CheckedChanged += (sender, e) =>
            {
                if (radioButtonNormal.Checked)
                {
                    Global.SettingsCollection["mapkind"] = 1;
                    Global.Facet = Global.Facet;
                }
            };
            customFlatButtonCheckNewVersion.Click += (sender, e) => { Core.Network.Update.CheckUpdates(); };

            radioButtonEnhanced.CheckedChanged += (sender, e) => { label3.Visible = textBoxClientPath.Visible = customButtonClientPath.Visible = radioButtonEnhanced.Checked; };

            customButtonClientPath.Click += (sender, e) =>
            {
                FolderBrowserDialog dialog = new FolderBrowserDialog {
                    Description = "Select enhanced client folder"
                };
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    Global.SettingsCollection["clientpath"] = Global.UOPath = textBoxClientPath.Text = dialog.SelectedPath;
                }
            };

            numericUpDownChatFontSize.ValueChanged += (sender, e) =>
            {
                Global.SettingsCollection["chatfontsize"] = (int)numericUpDownChatFontSize.Value;
                Global.MainWindow.ChatWindow?.ChangeFontSize();
            };
        }