Exemple #1
0
        private void LoadAndInitializeScripts()
        {
            foreach (Scripts.EnhancedScript script in Scripts.EnhancedScripts.Values.ToList())
            {
                script.Stop();
                script.Reset();
            }

            Scripts.EnhancedScripts.Clear();

            scriptlistView.BeginUpdate();
            scriptlistView.Items.Clear();

            DataTable scriptTable = RazorEnhanced.Settings.Dataset.Tables["SCRIPTING"];

            foreach (DataRow row in scriptTable.Rows)
            {
                string filename  = (string)row["Filename"];
                bool   wait      = (bool)row["Wait"];
                bool   loop      = (bool)row["Loop"];
                string status    = (string)row["Status"];
                bool   passkey   = (bool)row["HotKeyPass"];
                Keys   key       = (Keys)Convert.ToInt32(row["HotKey"]);
                bool   autostart = (bool)row["AutoStart"];

                bool run = false;
                if (status == "Running")
                {
                    run = true;
                }

                string result = LoadFromFile(filename, wait, loop, run, autostart);

                if (result == "Loaded")
                {
                    ListViewItem listitem = new ListViewItem();

                    listitem.SubItems.Add(filename);

                    listitem.SubItems.Add(status);

                    if (loop)
                    {
                        listitem.SubItems.Add("Yes");
                    }
                    else
                    {
                        listitem.SubItems.Add("No");
                    }

                    if (autostart)
                    {
                        listitem.SubItems.Add("Yes");
                    }
                    else
                    {
                        listitem.SubItems.Add("No");
                    }

                    if (wait)
                    {
                        listitem.SubItems.Add("Yes");
                    }
                    else
                    {
                        listitem.SubItems.Add("No");
                    }


                    listitem.SubItems.Add(HotKey.KeyString(key));

                    if (passkey)
                    {
                        listitem.SubItems.Add("Yes");
                    }
                    else
                    {
                        listitem.SubItems.Add("No");
                    }

                    scriptlistView.Items.Add(listitem);

                    row["Status"] = "Stopped";
                }
                else
                {
                    // 17/08/2020 Removed loading not exist script file
                    // 2/15/2021 added back to avoid hotkey issue,
                    //    removed bad file entries at load in settings so should never happen
                    ListViewItem listitem = new ListViewItem();
                    listitem.SubItems.Add("File Not Found");
                    listitem.SubItems.Add("Error");
                    listitem.SubItems.Add("No");
                    listitem.SubItems.Add("No");
                    listitem.SubItems.Add("No");
                    listitem.SubItems.Add(HotKey.KeyString(key));
                    listitem.SubItems.Add("No");
                    scriptlistView.Items.Add(listitem);
                    row["Status"] = "Error";
                }
            }
            scriptlistView.EndUpdate();
        }
Exemple #2
0
        private static void TargetResponse(PacketReader p, PacketHandlerEventArgs args)
        {
            TargetInfo info = new TargetInfo();

            info.Type   = p.ReadByte();
            info.TargID = p.ReadUInt32();
            info.Flags  = p.ReadByte();
            info.Serial = p.ReadUInt32();
            info.X      = p.ReadUInt16();
            info.Y      = p.ReadUInt16();
            info.Z      = p.ReadInt16();
            info.Gfx    = p.ReadUInt16();

            m_ClientTarget = false;

            // check for cancel
            if (info.X == 0xFFFF && info.X == 0xFFFF && (info.Serial <= 0 || info.Serial >= 0x80000000))
            {
                m_HasTarget = false;

                if (m_Intercept)
                {
                    args.Block = true;
                    Timer.DelayedCallbackState(TimeSpan.Zero, m_OneTimeRespCallback, info).Start();
                    EndIntercept();

                    if (m_PreviousID != 0)
                    {
                        m_CurrentID   = m_PreviousID;
                        m_AllowGround = m_PreviousGround;
                        m_CurFlags    = m_PrevFlags;

                        m_PreviousID = 0;

                        ResendTarget();
                    }
                }
                else if (m_FilterCancel.Contains((uint)info.TargID) || info.TargID == LocalTargID)
                {
                    args.Block = true;
                }

                m_FilterCancel.Clear();
                return;
            }

            ClearQueue();

            if (m_Intercept)
            {
                if (info.TargID == LocalTargID)
                {
                    Timer.DelayedCallbackState(TimeSpan.Zero, m_OneTimeRespCallback, info).Start();

                    m_HasTarget = false;
                    args.Block  = true;

                    if (m_PreviousID != 0)
                    {
                        m_CurrentID   = m_PreviousID;
                        m_AllowGround = m_PreviousGround;
                        m_CurFlags    = m_PrevFlags;

                        m_PreviousID = 0;

                        ResendTarget();
                    }

                    m_FilterCancel.Clear();

                    return;
                }
                else
                {
                    EndIntercept();
                }
            }

            m_HasTarget = false;

            if (CheckHealPoisonTarg(m_CurrentID, info.Serial))
            {
                ResendTarget();
                args.Block = true;
            }

            if (info.Serial != World.Player.Serial)
            {
                if (info.Serial.IsValid)
                {
                    // only let lasttarget be a non-ground target

                    m_LastTarget = info;
                    if (info.Flags == 1)
                    {
                        m_LastHarmTarg = info;
                    }
                    else if (info.Flags == 2)
                    {
                        m_LastBeneTarg = info;
                    }

                    LastTargetChanged();
                }

                m_LastGroundTarg = info;                 // ground target is the true last target

                if (Macros.MacroManager.AcceptActions)
                {
                    MacroManager.Action(new AbsoluteTargetAction(info));
                }
            }
            else
            {
                if (Macros.MacroManager.AcceptActions)
                {
                    KeyData hk = HotKey.Get((int)LocString.TargetSelf);
                    if (hk != null)
                    {
                        MacroManager.Action(new HotKeyAction(hk));
                    }
                    else
                    {
                        MacroManager.Action(new AbsoluteTargetAction(info));
                    }
                }
            }

            m_FilterCancel.Clear();
        }
Exemple #3
0
        public void MakeDefault()
        {
            m_Props.Clear();

            AddProperty("ShowMobNames", false);
            AddProperty("ShowCorpseNames", false);
            AddProperty("DisplaySkillChanges", false);
            AddProperty("TitleBarText",
                        @"UO - {char} {crimtime}- {mediumstatbar} {bp} {bm} {gl} {gs} {mr} {ns} {ss} {sa} {aids}");
            AddProperty("TitleBarDisplay", true);
            AddProperty("AutoSearch", true);
            AddProperty("NoSearchPouches", true);
            AddProperty("CounterWarnAmount", (int)5);
            AddProperty("CounterWarn", true);
            AddProperty("ObjectDelay", (int)600);
            AddProperty("ObjectDelayEnabled", true);
            AddProperty("AlwaysOnTop", false);
            AddProperty("SortCounters", true);
            AddProperty("QueueActions", false);
            AddProperty("QueueTargets", false);
            AddProperty("WindowX", (int)400);
            AddProperty("WindowY", (int)400);
            AddProperty("CountStealthSteps", true);

            AddProperty("SysColor", (int)0x03B1);
            AddProperty("WarningColor", (int)0x0025);
            AddProperty("ExemptColor", (int)0x0480);
            AddProperty("SpeechHue", (int)0x03B1);
            AddProperty("BeneficialSpellHue", (int)0x0005);
            AddProperty("HarmfulSpellHue", (int)0x0025);
            AddProperty("NeutralSpellHue", (int)0x03B1);
            AddProperty("ForceSpeechHue", false);
            AddProperty("ForceSpellHue", false);
            AddProperty("SpellFormat", @"{power} [{spell}]");

            AddProperty("ShowNotoHue", true);
            AddProperty("Opacity", (int)100);

            AddProperty("AutoOpenCorpses", false);
            AddProperty("CorpseRange", (int)2);

            AddProperty("BlockDismount", false);

            AddProperty("CapFullScreen", false);
            AddProperty("CapPath",
                        Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "RazorScreenShots"));
            AddProperty("CapTimeStamp", true);
            AddProperty("ImageFormat", "jpg");

            AddProperty("UndressConflicts", true);
            AddProperty("HighlightReagents", true);
            AddProperty("Systray", false);
            AddProperty("TitlebarImages", true);

            AddProperty("SellAgentMax", (int)99);
            AddProperty("SkillListCol", (int)-1);
            AddProperty("SkillListAsc", false);

            AddProperty("AutoStack", true);
            AddProperty("ActionStatusMsg", true);
            AddProperty("RememberPwds", false);

            AddProperty("SpellUnequip", true);
            AddProperty("RangeCheckLT", true);
            AddProperty("LTRange", (int)12);

            AddProperty("ClientPrio", "Normal");
            AddProperty("FilterSnoopMsg", true);
            AddProperty("OldStatBar", false);

            AddProperty("SmartLastTarget", false);
            AddProperty("LastTargTextFlags", true);
            //AddProperty("SmartCPU", false);
            AddProperty("LTHilight", (int)0);

            AddProperty("AutoFriend", false);

            AddProperty("AutoOpenDoors", true);

            AddProperty("MessageLevel", 0);

            AddProperty("ForceIP", "");
            AddProperty("ForcePort", 0);

            AddProperty("ForceSizeEnabled", false);
            AddProperty("ForceSizeX", 1000);
            AddProperty("ForceSizeY", 800);

            AddProperty("PotionEquip", false);
            AddProperty("BlockHealPoison", true);

            AddProperty("SmoothWalk", false);

            AddProperty("Negotiate", true);

            AddProperty("MapX", 200);
            AddProperty("MapY", 200);
            AddProperty("MapW", 200);
            AddProperty("MapH", 200);

            AddProperty("LogPacketsByDefault", false);

            AddProperty("ShowHealth", true);
            AddProperty("HealthFmt", "[{0}%]");
            AddProperty("ShowPartyStats", true);
            AddProperty("PartyStatFmt", "[{0}% / {1}%]");

            AddProperty("HotKeyStop", false);
            AddProperty("DiffTargetByType", false);
            AddProperty("StepThroughMacro", false);

            // Map options

            /*AddProperty("ShowPlayerPosition", true);
             * AddProperty("TrackPlayerPosition", true);
             * AddProperty("ShowPartyMemberPositions", true);
             * AddProperty("TiltMap", true);*/

            AddProperty("ShowTargetSelfLastClearOverhead", true);
            AddProperty("ShowOverheadMessages", false);
            AddProperty("CaptureMibs", false);

            //OverheadFormat
            AddProperty("OverheadFormat", "[{msg}]");
            AddProperty("OverheadStyle", 1);

            AddProperty("GoldPerDisplay", false);

            AddProperty("LightLevel", 31);
            AddProperty("LogSkillChanges", false);
            AddProperty("StealthOverhead", false);

            AddProperty("ShowBuffDebuffOverhead", true);
            AddProperty("BuffDebuffFormat", "[{action}{name} ({duration}s)]");

            AddProperty("BlockOpenCorpsesTwice", false);

            AddProperty("ScreenshotUploadNotifications", false);
            AddProperty("ScreenshotUploadClipboard", true);
            AddProperty("ScreenshotUploadOpenBrowser", true);

            AddProperty("ShowAttackTargetOverhead", true);

            AddProperty("RangeCheckTargetByType", false);
            AddProperty("RangeCheckDoubleClick", false);

            AddProperty("ShowContainerLabels", false);
            AddProperty("ContainerLabelFormat", "[{label}] ({type})");
            AddProperty("ContainerLabelColor", 88);
            AddProperty("ContainerLabelStyle", 1);

            AddProperty("Season", 5);

            AddProperty("BlockTradeRequests", false);
            AddProperty("BlockPartyInvites", false);
            AddProperty("AutoAcceptParty", false);

            AddProperty("MaxLightLevel", 31);
            AddProperty("MinLightLevel", 0);
            AddProperty("MinMaxLightLevelEnabled", false);
            AddProperty("ShowStaticWalls", false);
            AddProperty("ShowStaticWallLabels", false);

            AddProperty("ShowTextTargetIndicator", false);
            AddProperty("ShowAttackTargetNewOnly", false);

            AddProperty("FilterDragonGraphics", false);
            AddProperty("FilterDrakeGraphics", false);
            AddProperty("DragonGraphic", 0);
            AddProperty("DrakeGraphic", 0);

            AddProperty("ShowDamageDealt", false);
            AddProperty("ShowDamageDealtOverhead", false);
            AddProperty("ShowDamageTaken", false);
            AddProperty("ShowDamageTakenOverhead", false);

            AddProperty("ShowInRazorTitleBar", false);
            AddProperty("RazorTitleBarText", "{name} on {account} ({profile} - {shard}) - Razor v{version}");

            AddProperty("EnableUOAAPI", true);
            AddProperty("UOAMPath", string.Empty);
            AddProperty("UltimaMapperPath", string.Empty);

            AddProperty("TargetIndicatorFormat", "* Target *");

            AddProperty("NextPrevTargetIgnoresFriends", false);

            AddProperty("StealthStepsFormat", "Steps: {step}");

            AddProperty("ShowFriendOverhead", false);

            AddProperty("DisplaySkillChangesOverhead", false);

            AddProperty("GrabHotBag", "0");

            // Enable it for OSI client by default, CUO turn it off
            AddProperty("MacroActionDelay", Client.IsOSI);

            AddProperty("AutoOpenDoorWhenHidden", false);

            AddProperty("DisableMacroPlayFinish", false);

            AddProperty("ShowBandageTimer", false);
            AddProperty("ShowBandageTimerFormat", "Bandage: {count}s");
            AddProperty("ShowBandageTimerLocation", 0);
            AddProperty("OnlyShowBandageTimerEvery", false);
            AddProperty("OnlyShowBandageTimerSeconds", 1);
            AddProperty("ShowBandageTimerHue", 88);

            AddProperty("FriendOverheadFormat", "[Friend]");
            AddProperty("FriendOverheadFormatHue", 0x03F);

            AddProperty("TargetIndicatorHue", 10);

            AddProperty("FilterSystemMessages", false);
            AddProperty("FilterRazorMessages", false);
            AddProperty("FilterDelay", 3.5);
            AddProperty("FilterOverheadMessages", false);

            AddProperty("OnlyNextPrevBeneficial", false);
            AddProperty("FriendlyBeneficialOnly", false);
            AddProperty("NonFriendlyHarmfulOnly", false);

            AddProperty("ShowBandageStart", false);
            AddProperty("BandageStartMessage", "Bandage: Starting");
            AddProperty("ShowBandageEnd", false);
            AddProperty("BandageEndMessage", "Bandage: Ending");

            AddProperty("BuffDebuffSeconds", 20);
            AddProperty("BuffHue", 88);
            AddProperty("DebuffHue", 338);
            AddProperty("DisplayBuffDebuffEvery", false);
            AddProperty("BuffDebuffFilter", string.Empty);
            AddProperty("BuffDebuffEveryXSeconds", false);

            AddProperty("CaptureOthersDeathDelay", 0.5);
            AddProperty("CaptureOwnDeathDelay", 0.5);
            AddProperty("CaptureOthersDeath", false);
            AddProperty("CaptureOwnDeath", false);

            AddProperty("TargetFilterEnabled", false);

            AddProperty("FilterDaemonGraphics", false);
            AddProperty("DaemonGraphic", 0);

            AddProperty("SoundFilterEnabled", false);
            AddProperty("ShowFilteredSound", false);
            AddProperty("ShowPlayingSoundInfo", false);
            AddProperty("ShowMusicInfo", false);

            AddProperty("AutoSaveScript", false);
            AddProperty("AutoSaveScriptPlay", false);

            AddProperty("HighlightFriend", false);

            AddProperty("ScriptTargetTypeRange", false);
            AddProperty("ScriptDClickTypeRange", false);
            AddProperty("ScriptFindTypeRange", false);

            Counter.Default();
            Filter.DisableAll();
            DressList.ClearAll();
            HotKey.ClearAll();
            Agent.ClearAll();
            PasswordMemory.ClearAll();
            FriendsManager.ClearAll();
            DressList.ClearAll();
            OverheadMessages.ClearAll();
            ContainerLabels.ClearAll();
            MacroVariables.ClearAll();
            ScriptVariables.ClearAll();
            FriendsManager.ClearAll();
        }
Exemple #4
0
        public void Save()
        {
            string profileDir = Config.GetUserDirectory("Profiles");
            string file       = Path.Combine(profileDir, String.Format("{0}.xml", m_Name));

            if (m_Name != "default" && !m_Warned)
            {
                try
                {
                    m_Mutex = new System.Threading.Mutex(true, String.Format("Razor_Profile_{0}", m_Name));

                    if (!m_Mutex.WaitOne(10, false))
                    {
                        throw new Exception("Can't grab profile mutex, must be in use!");
                    }
                }
                catch
                {
                    //MessageBox.Show( Engine.ActiveWindow, Language.Format( LocString.ProfileInUse, m_Name ), "Profile In Use", MessageBoxButtons.OK, MessageBoxIcon.Warning );
                    //m_Warned = true;
                    return; // refuse to overwrite profiles that we don't own.
                }
            }

            XmlTextWriter xml;

            try
            {
                xml = new XmlTextWriter(file, Encoding.Default);
            }
            catch
            {
                return;
            }

            xml.Formatting  = Formatting.Indented;
            xml.IndentChar  = '\t';
            xml.Indentation = 1;

            xml.WriteStartDocument(true);
            xml.WriteStartElement("profile");

            foreach (KeyValuePair <string, object> de in m_Props)
            {
                xml.WriteStartElement("property");
                xml.WriteAttributeString("name", de.Key);
                if (de.Value == null)
                {
                    xml.WriteAttributeString("type", "-null-");
                }
                else
                {
                    xml.WriteAttributeString("type", de.Value.GetType().FullName);
                    xml.WriteString(de.Value.ToString());
                }

                xml.WriteEndElement();
            }

            xml.WriteStartElement("filters");
            Filter.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("counters");
            Counter.SaveProfile(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("agents");
            Agent.SaveProfile(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("dresslists");
            DressList.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("hotkeys");
            HotKey.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("passwords");
            PasswordMemory.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("overheadmessages");
            OverheadMessages.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("containerlabels");
            ContainerLabels.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("macrovariables");
            MacroVariables.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("scriptvariables");
            ScriptVariables.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("friends");
            FriendsManager.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("targetfilters");
            TargetFilterManager.Save(xml);
            xml.WriteEndElement();

            xml.WriteStartElement("soundfilters");
            SoundMusicManager.Save(xml);
            xml.WriteEndElement();

            xml.WriteEndElement(); // end profile section

            xml.Close();
        }
Exemple #5
0
        //private DateTime m_LastActivate;
        public override bool OnMessage(MainForm razor, uint wParam, int lParam)
        {
            bool retVal = true;

            switch ((UONetMessage)(wParam & 0xFFFF))
            {
            case UONetMessage.Ready:     //Patch status
                if (lParam == (int)InitError.NO_MEMCOPY)
                {
                    if (MessageBox.Show(Engine.ActiveWindow, Language.GetString(LocString.NoMemCpy),
                                        "No Client MemCopy", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) ==
                        DialogResult.No)
                    {
                        m_Ready    = false;
                        ClientProc = null;
                        Engine.MainWindow.CanClose = true;
                        Engine.MainWindow.Close();
                        break;
                    }
                }

                byte *baseAddr = (byte *)GetSharedAddress().ToPointer();

                m_InRecv   = (Buffer *)baseAddr;
                m_OutRecv  = (Buffer *)(baseAddr + sizeof(Buffer));
                m_InSend   = (Buffer *)(baseAddr + sizeof(Buffer) * 2);
                m_OutSend  = (Buffer *)(baseAddr + sizeof(Buffer) * 3);
                m_TitleStr = (byte *)(baseAddr + sizeof(Buffer) * 4);

                SetServer(m_ServerIP, m_ServerPort);

                CommMutex = new Mutex();
#pragma warning disable 618
                CommMutex.Handle = GetCommMutex();
#pragma warning restore 618

                try
                {
                    string path = Ultima.Files.GetFilePath("art.mul");
                    if (path != null && path != string.Empty)
                    {
                        SetDataPath(Path.GetDirectoryName(path));
                    }
                    else
                    {
                        SetDataPath(Path.GetDirectoryName(Ultima.Files.Directory));
                    }
                }
                catch
                {
                    SetDataPath("");
                }

                if (Config.GetBool("OldStatBar"))
                {
                    RequestStatbarPatch(true);
                }

                m_Ready = true;
                Engine.MainWindow.MainForm_EndLoad();
                break;

            case UONetMessage.NotReady:
                m_Ready = false;
                FatalInit((InitError)lParam);
                ClientProc = null;
                Engine.MainWindow.CanClose = true;
                Engine.MainWindow.Close();
                break;

            // Network events
            case UONetMessage.Recv:
                OnRecv();
                break;

            case UONetMessage.Send:
                OnSend();
                break;

            case UONetMessage.Connect:
                m_ConnStart = DateTime.UtcNow;
                try
                {
                    m_LastConnection = new IPAddress((uint)lParam);
                }
                catch
                {
                }

                break;

            case UONetMessage.Disconnect:
                OnLogout(false);
                break;

            case UONetMessage.Close:
                OnLogout(true);
                ClientProc = null;
                Engine.MainWindow.CanClose = true;
                Engine.MainWindow.Close();
                break;

            // Hot Keys
            case UONetMessage.Mouse:
                HotKey.OnMouse((ushort)(lParam & 0xFFFF), (short)(lParam >> 16));
                break;

            case UONetMessage.KeyDown:
                retVal = HotKey.OnKeyDown(lParam, ModKeys.None);
                break;

            // Activation Tracking
            case UONetMessage.Activate:
                /*if ( Config.GetBool( "AlwaysOnTop" ) )
                 * {
                 *  if ( (lParam&0x0000FFFF) == 0 && (lParam&0xFFFF0000) != 0 && razor.WindowState != FormWindowState.Minimized && razor.Visible )
                 *  {// if uo is deactivating and minimized and we are not minimized
                 *      if ( !razor.ShowInTaskbar && razor.Visible )
                 *          razor.Hide();
                 *      razor.WindowState = FormWindowState.Minimized;
                 *      m_LastActivate = DateTime.UtcNow;
                 *  }
                 *  else if ( (lParam&0x0000FFFF) != 0 && (lParam&0xFFFF0000) != 0 && razor.WindowState != FormWindowState.Normal )
                 *  { // is UO is activating and minimized and we are minimized
                 *      if ( m_LastActivate+TimeSpan.FromSeconds( 0.2 ) < DateTime.UtcNow )
                 *      {
                 *          if ( !razor.ShowInTaskbar && !razor.Visible )
                 *              razor.Show();
                 *          razor.WindowState = FormWindowState.Normal;
                 *          //SetForegroundWindow( FindUOWindow() );
                 *      }
                 *      m_LastActivate = DateTime.UtcNow;
                 *  }
                 * }*/
                break;

            case UONetMessage.Focus:
                if (Config.GetBool("AlwaysOnTop"))
                {
                    if (lParam != 0 && !razor.TopMost)
                    {
                        razor.TopMost = true;
                        Platform.SetForegroundWindow(FindUOWindow());
                    }
                    else if (lParam == 0 && razor.TopMost)
                    {
                        razor.TopMost = false;
                        razor.SendToBack();
                    }
                }

                // always use smartness for the map window
                if (razor.MapWindow != null && razor.MapWindow.Visible)
                {
                    if (lParam != 0 && !razor.MapWindow.TopMost)
                    {
                        razor.MapWindow.TopMost = true;
                        Platform.SetForegroundWindow(FindUOWindow());
                    }
                    else if (lParam == 0 && razor.MapWindow.TopMost)
                    {
                        razor.MapWindow.TopMost = false;
                        razor.MapWindow.SendToBack();
                    }
                }

                break;

            case UONetMessage.DLL_Error:
            {
                string error = "Unknown";
                switch ((UONetMessage)lParam)
                {
                case UONetMessage.StatBar:
                    error = "Unable to patch status bar.";
                    break;
                }

                MessageBox.Show(Engine.ActiveWindow, "An Error has occured : \n" + error, "Error Reported",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;
            }

            case UONetMessage.OnTick:
                // Game engine tick
                Timer.Slice();
                break;

            // Unknown
            default:
                MessageBox.Show(Engine.ActiveWindow, "Unknown message from uo client\n" + ((int)wParam).ToString(),
                                "Error?");
                break;
            }

            return(retVal);
        }
Exemple #6
0
        public bool Load()
        {
            if (m_Name == null || m_Name.Trim() == "")
            {
                return(false);
            }

            string path = Config.GetUserDirectory("Profiles");
            string file = Path.Combine(path, String.Format("{0}.xml", m_Name));

            if (!File.Exists(file))
            {
                return(false);
            }

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load(file);
            }
            catch
            {
                MessageBox.Show(Engine.ActiveWindow, Language.Format(LocString.ProfileCorrupt, file),
                                "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return(false);
            }

            XmlElement root = doc["profile"];

            if (root == null)
            {
                return(false);
            }

            Assembly exe = Assembly.GetCallingAssembly();

            if (exe == null)
            {
                return(false);
            }

            foreach (XmlElement el in root.GetElementsByTagName("property"))
            {
                try
                {
                    string name    = el.GetAttribute("name");
                    string typeStr = el.GetAttribute("type");
                    string val     = el.InnerText;

                    if (typeStr == "-null-" || name == "LimitSize" || name == "VisRange")
                    {
                        //m_Props[name] = null;
                        if (m_Props.ContainsKey(name))
                        {
                            m_Props.Remove(name);
                        }
                    }
                    else
                    {
                        Type type = Type.GetType(typeStr);
                        if (type == null)
                        {
                            type = exe.GetType(typeStr);
                        }

                        if (m_Props.ContainsKey(name) || name == "ForceSize")
                        {
                            if (type == null)
                            {
                                m_Props.Remove(name);
                            }
                            else
                            {
                                m_Props[name] = GetObjectFromString(val, type);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(Engine.ActiveWindow, Language.Format(LocString.ProfileLoadEx, e.ToString()),
                                    "Profile Load Exception", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

            Filter.Load(root["filters"]);
            Counter.LoadProfile(root["counters"]);
            Agent.LoadProfile(root["agents"]);
            DressList.Load(root["dresslists"]);
            TargetFilterManager.Load(root["targetfilters"]);
            SoundMusicManager.Load(root["soundfilters"]);
            FriendsManager.Load(root["friends"]);
            HotKey.Load(root["hotkeys"]);
            PasswordMemory.Load(root["passwords"]);
            OverheadMessages.Load(root["overheadmessages"]);
            ContainerLabels.Load(root["containerlabels"]);
            MacroVariables.Load(root["macrovariables"]);
            //imports previous absolutetargets and doubleclickvariables if present in profile
            if ((root.SelectSingleNode("absolutetargets") != null) ||
                (root.SelectSingleNode("doubleclickvariables") != null))
            {
                MacroVariables.Import(root);
            }

            ScriptVariables.Load(root["scriptvariables"]);

            GoldPerHourTimer.Stop();
            DamageTracker.Stop();

            if (m_Props.ContainsKey("ForceSize"))
            {
                try
                {
                    int x, y;
                    switch ((int)m_Props["ForceSize"])
                    {
                    case 1:
                        x = 960;
                        y = 600;
                        break;

                    case 2:
                        x = 1024;
                        y = 768;
                        break;

                    case 3:
                        x = 1152;
                        y = 864;
                        break;

                    case 4:
                        x = 1280;
                        y = 720;
                        break;

                    case 5:
                        x = 1280;
                        y = 768;
                        break;

                    case 6:
                        x = 1280;
                        y = 800;
                        break;

                    case 7:
                        x = 1280;
                        y = 960;
                        break;

                    case 8:
                        x = 1280;
                        y = 1024;
                        break;

                    case 0:
                    default:
                        x = 800;
                        y = 600;
                        break;
                    }

                    SetProperty("ForceSizeX", x);
                    SetProperty("ForceSizeY", y);

                    if (x != 800 || y != 600)
                    {
                        SetProperty("ForceSizeEnabled", true);
                    }

                    m_Props.Remove("ForceSize");
                }
                catch
                {
                }
            }

            //if ( !Language.Load( GetString( "Language" ) ) )
            //	MessageBox.Show( Engine.ActiveWindow, "Warning: Could not load language from profile, using current language instead.", "Language Error", MessageBoxButtons.OK, MessageBoxIcon.Warning );

            return(true);
        }
Exemple #7
0
        static Spell()
        {
            string filename = Path.Combine(Config.GetInstallDirectory(), "spells.def");

            m_SpellsByPower = new Dictionary <string, Spell>(64 + 10 + 16);
            m_SpellsByID    = new Dictionary <int, Spell>(64 + 10 + 16);
            m_SpellsByName  = new Dictionary <string, Spell>(64 + 10 + 16);

            if (!File.Exists(filename))
            {
                MessageBox.Show(Engine.ActiveWindow, Language.GetString(LocString.NoSpells), "Spells.def",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            using (StreamReader reader = new StreamReader(filename))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    line = line.Trim();
                    if (line.Length <= 0 || line[0] == '#')
                    {
                        continue;
                    }
                    string[] split = line.Split('|');

                    try
                    {
                        if (split.Length >= 5)
                        {
                            string[] reags = new string[split.Length - 5];
                            for (int i = 5; i < split.Length; i++)
                            {
                                reags[i - 5] = split[i].ToLower().Trim();
                            }
                            Spell s = new Spell(split[0].Trim()[0], Convert.ToInt32(split[1].Trim()),
                                                Convert.ToInt32(split[2].Trim()), /*split[3].Trim(),*/ split[4].Trim(), reags);

                            m_SpellsByID[s.GetID()] = s;

                            line = Language.GetString(s.Name);
                            if (string.IsNullOrEmpty(line))
                            {
                                line = split[3].Trim();
                            }
                            if (!string.IsNullOrEmpty(line))
                            {
                                m_SpellsByName[line.ToLower()] = s;
                            }

                            if (s.WordsOfPower != null && s.WordsOfPower.Trim().Length > 0)
                            {
                                m_SpellsByPower[s.WordsOfPower] = s;
                            }
                        }
                    }
                    catch
                    {
                    }
                }
            }

            HotKeyCallback = new HotKeyCallbackState(OnHotKey);
            foreach (Spell s in m_SpellsByID.Values)
            {
                HotKey.Add(HKCategory.Spells, HKSubCat.SpellOffset + s.Circle, s.Name, HotKeyCallback,
                           (ushort)s.GetID());
            }
            HotKey.Add(HKCategory.Spells, LocString.HealOrCureSelf, new HotKeyCallback(HealOrCureSelf));
            HotKey.Add(HKCategory.Spells, LocString.MiniHealOrCureSelf, new HotKeyCallback(MiniHealOrCureSelf));
            HotKey.Add(HKCategory.Spells, LocString.GHealOrCureSelf, new HotKeyCallback(GHealOrCureSelf));
            HotKey.Add(HKCategory.Spells, LocString.Interrupt, new HotKeyCallback(Interrupt));
        }
        private static void InitNextPrevTargets()
        {
            //Next targets
            HotKey.Add(HKCategory.Targets, LocString.NextTarget, NextTarget);
            HotKey.Add(HKCategory.Targets, LocString.NextTargetFriend, NextTargetFriend);

            // Next humanoids
            HotKey.Add(HKCategory.Targets, LocString.NextTargetHumanoid, NextTargetHumanoid);

            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetEnemy, LocString.NextTargetEnemyHumanoid,
                       NextTargetEnemyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetCriminal, LocString.NextTargetCriminalHumanoid,
                       NextTargetCriminalHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetMurderer, LocString.NextTargetMurdererHumanoid,
                       NextTargetMurdererHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetInnocent, LocString.NextTargetInnocentHumanoid,
                       NextTargetInnocentHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetFriendly, LocString.NextTargetFriendlyHumanoid,
                       NextTargetFriendlyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetGrey, LocString.NextTargetGreyHumanoid,
                       NextTargetGreyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetNonFriendly, LocString.NextTargetNonFriendlyHumanoid,
                       NextTargetNonFriendlyHumanoid);

            // Next monsters
            HotKey.Add(HKCategory.Targets, LocString.NextTargetMonster, NextTargetMonster);

            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetEnemy, LocString.NextTargetEnemyMonster,
                       NextTargetEnemyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetCriminal, LocString.NextTargetCriminalMonster,
                       NextTargetCriminalMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetMurderer, LocString.NextTargetMurdererMonster,
                       NextTargetMurdererMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetInnocent, LocString.NextTargetInnocentMonster,
                       NextTargetInnocentMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetFriendly, LocString.NextTargetFriendlyMonster,
                       NextTargetFriendlyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetGrey, LocString.NextTargetGreyMonster,
                       NextTargetGreyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetNonFriendly, LocString.NextTargetNonFriendlyMonster,
                       NextTargetNonFriendlyMonster);

            //Previous targets
            HotKey.Add(HKCategory.Targets, LocString.PrevTarget, PrevTarget);

            HotKey.Add(HKCategory.Targets, LocString.PrevTargetHumanoid, PrevTargetHumanoid);
            HotKey.Add(HKCategory.Targets, LocString.PrevTargetMonster, PrevTargetMonster);
            HotKey.Add(HKCategory.Targets, LocString.PrevTargetFriend, PrevTargetFriend);

            // Previous humanoids
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetEnemy, LocString.PrevTargetEnemyHumanoid,
                       PrevTargetEnemyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetFriendly, LocString.PrevTargetFriendlyHumanoid,
                       PrevTargetFriendlyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetGrey, LocString.PrevTargetGreyHumanoid,
                       PrevTargetGreyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetNonFriendly, LocString.PrevTargetNonFriendlyHumanoid,
                       PrevTargetNonFriendlyHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetCriminal, LocString.PrevTargetCriminalHumanoid,
                       PrevTargetCriminalHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetMurderer, LocString.PrevTargetMurdererHumanoid,
                       PrevTargetMurdererHumanoid);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetInnocent, LocString.PrevTargetInnocentHumanoid,
                       PrevTargetInnocentHumanoid);

            // Previous monsters
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetEnemy, LocString.PrevTargetEnemyMonster,
                       PrevTargetEnemyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetFriendly, LocString.PrevTargetFriendlyMonster,
                       PrevTargetFriendlyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetGrey, LocString.PrevTargetGreyMonster,
                       PrevTargetGreyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetNonFriendly, LocString.PrevTargetNonFriendlyMonster,
                       PrevTargetNonFriendlyMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetCriminal, LocString.PrevTargetCriminalMonster,
                       PrevTargetCriminalMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetMurderer, LocString.PrevTargetMurdererMonster,
                       PrevTargetMurdererMonster);
            HotKey.Add(HKCategory.Targets, HKSubCat.SubTargetInnocent, LocString.PrevTargetInnocentMonster,
                       PrevTargetInnocentMonster);
        }
Exemple #9
0
        private static void TargetResponse(PacketReader p, PacketHandlerEventArgs args)
        {
            TargetInfo info = new TargetInfo
            {
                Type   = p.ReadByte(),
                TargID = p.ReadUInt32(),
                Flags  = p.ReadByte(),
                Serial = p.ReadUInt32(),
                X      = p.ReadUInt16(),
                Y      = p.ReadUInt16(),
                Z      = p.ReadInt16(),
                Gfx    = p.ReadUInt16()
            };

            m_ClientTarget = false;

            OverheadTargetMessage(info);

            // check for cancel
            if (info.X == 0xFFFF && info.X == 0xFFFF && (info.Serial <= 0 || info.Serial >= 0x80000000))
            {
                m_HasTarget      = false;
                m_FromGrabHotKey = false;

                if (m_Intercept)
                {
                    args.Block = true;
                    Timer.DelayedCallbackState(TimeSpan.Zero, m_OneTimeRespCallback, info).Start();
                    EndIntercept();

                    if (m_PreviousID != 0)
                    {
                        m_CurrentID   = m_PreviousID;
                        m_AllowGround = m_PreviousGround;
                        m_CurFlags    = m_PrevFlags;

                        m_PreviousID = 0;

                        ResendTarget();
                    }
                }
                else if (m_FilterCancel.Contains((uint)info.TargID) || info.TargID == LocalTargID)
                {
                    args.Block = true;
                }

                m_FilterCancel.Clear();
                return;
            }

            ClearQueue();

            if (m_Intercept)
            {
                if (info.TargID == LocalTargID)
                {
                    Timer.DelayedCallbackState(TimeSpan.Zero, m_OneTimeRespCallback, info).Start();

                    m_HasTarget      = false;
                    m_FromGrabHotKey = false;
                    args.Block       = true;

                    if (m_PreviousID != 0)
                    {
                        m_CurrentID   = m_PreviousID;
                        m_AllowGround = m_PreviousGround;
                        m_CurFlags    = m_PrevFlags;

                        m_PreviousID = 0;

                        ResendTarget();
                    }

                    m_FilterCancel.Clear();

                    return;
                }
                else
                {
                    EndIntercept();
                }
            }

            m_HasTarget = false;

            if (CheckHealPoisonTarg(m_CurrentID, info.Serial))
            {
                ResendTarget();
                args.Block = true;
            }

            if (info.Serial != World.Player.Serial)
            {
                if (info.Serial.IsValid)
                {
                    // only let lasttarget be a non-ground target

                    m_LastTarget = info;
                    if (info.Flags == 1)
                    {
                        m_LastHarmTarg = info;
                    }
                    else if (info.Flags == 2)
                    {
                        m_LastBeneTarg = info;
                    }

                    LastTargetChanged();
                    LastBeneficialTargetChanged();
                    LastHarmfulTargetChanged();
                }

                m_LastGroundTarg = info; // ground target is the true last target

                if (Macros.MacroManager.AcceptActions)
                {
                    MacroManager.Action(new AbsoluteTargetAction(info));
                }

                ScriptManager.AddToScript(info.Serial == Serial.Zero
                    ? $"target 0x0 {info.X} {info.Y} {info.Z}"
                    : $"target {info.Serial}");


                if (ScriptManager.Recording)
                {
                    if (info.Serial == Serial.Zero)
                    {
                    }
                    else
                    {
                    }
                }
            }
            else
            {
                if (Macros.MacroManager.AcceptActions)
                {
                    KeyData hk = HotKey.Get((int)LocString.TargetSelf);
                    if (hk != null)
                    {
                        MacroManager.Action(new HotKeyAction(hk));

                        ScriptManager.AddToScript($"hotkey '{hk.DispName}'");
                    }
                    else
                    {
                        MacroManager.Action(new AbsoluteTargetAction(info));

                        ScriptManager.AddToScript($"target {info.Serial}");
                    }
                }
            }

            if (World.Player.LastSpell == 52 && !GateTimer.Running)
            {
                GateTimer.Start();
            }

            m_FilterCancel.Clear();
        }
Exemple #10
0
 public static void Initialize()
 {
     HotKey.Add(HKCategory.Misc, LocString.TakeSS, new HotKeyCallback(CaptureNow));
 }
Exemple #11
0
 public static void Initialize()
 {
     try { File.Delete("DragDrop.log"); } catch {}
     HotKey.Add(HKCategory.Misc, LocString.DropCur, new HotKeyCallback(DropCurrent));
 }
Exemple #12
0
        public void MakeDefault()
        {
            m_Props.Clear();

            AddProperty("ShowMobNames", false);
            AddProperty("ShowCorpseNames", false);
            AddProperty("DisplaySkillChanges", false);
            AddProperty("TitleBarText", @"UO - {char} {crimtime}- {mediumstatbar} {bp} {bm} {gl} {gs} {mr} {ns} {ss} {sa} {aids}");
            AddProperty("TitleBarDisplay", true);
            AddProperty("AutoSearch", true);
            AddProperty("NoSearchPouches", true);
            AddProperty("CounterWarnAmount", (int)5);
            AddProperty("CounterWarn", true);
            AddProperty("ObjectDelay", (int)600);
            AddProperty("AlwaysOnTop", false);
            AddProperty("SortCounters", true);
            AddProperty("QueueActions", true);
            AddProperty("QueueTargets", true);
            AddProperty("WindowX", (int)400);
            AddProperty("WindowY", (int)400);
            AddProperty("CountStealthSteps", true);
            AddProperty("AlwaysStealth", false);

            AddProperty("SysColor", (int)0x03B1);
            AddProperty("WarningColor", (int)0x0025);
            AddProperty("ExemptColor", (int)0x0480);
            AddProperty("SpeechHue", (int)0x03B1);
            AddProperty("BeneficialSpellHue", (int)0x0005);
            AddProperty("HarmfulSpellHue", (int)0x0025);
            AddProperty("NeutralSpellHue", (int)0x03B1);
            AddProperty("ForceSpeechHue", false);
            AddProperty("ForceSpellHue", false);
            AddProperty("SpellFormat", @"{power} [{spell}]");

            AddProperty("ShowNotoHue", true);
            AddProperty("Opacity", (int)100);

            AddProperty("AutoOpenCorpses", false);
            AddProperty("CorpseRange", (int)2);

            AddProperty("FilterSpam", false);
            AddProperty("BlockDismount", false);

            AddProperty("UndressConflicts", true);
            AddProperty("HighlightReagents", true);
            AddProperty("TitlebarImages", true);

            AddProperty("SellAgentMax", (int)99);
            AddProperty("SkillListCol", (int)-1);
            AddProperty("SkillListAsc", false);

            AddProperty("AutoStack", false);
            AddProperty("ActionStatusMsg", true);
            AddProperty("RememberPwds", false);

            AddProperty("SpellUnequip", false);
            AddProperty("RangeCheckLT", true);
            AddProperty("LTRange", (int)12);

            AddProperty("FilterSnoopMsg", true);

            AddProperty("SmartLastTarget", false);
            AddProperty("LastTargTextFlags", true);
            AddProperty("LTHilight", (int)0);

            AddProperty("AutoFriend", false);

            AddProperty("MessageLevel", 0);

            AddProperty("ForceIP", "");
            AddProperty("ForcePort", 0);

            AddProperty("PotionEquip", false);
            AddProperty("BlockHealPoison", false);

            AddProperty("SmoothWalk", false);

            AddProperty("Negotiate", true);

            AddProperty("MapX", 200);
            AddProperty("MapY", 200);
            AddProperty("MapW", 200);
            AddProperty("MapH", 200);

            AddProperty("ShowHealth", false);
            AddProperty("HealthFmt", "[{0}%]");
            AddProperty("ShowPartyStats", false);
            AddProperty("PartyStatFmt", "[{0}% / {1}%]");

            Counter.Default();
            Filter.DisableAll();
            DressList.ClearAll();
            HotKey.ClearAll();
            Agent.ClearAll();
        }
Exemple #13
0
        public bool Load()
        {
            if (m_Name == null || m_Name.Trim() == "")
            {
                return(false);
            }

            string path = Config.GetUserDirectory("Profiles");
            string file = Path.Combine(path, String.Format("{0}.xml", m_Name));

            if (!File.Exists(file))
            {
                return(false);
            }

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load(file);
            }
            catch
            {
                MessageBox.Show(Engine.ActiveWindow, Language.Format(LocString.ProfileCorrupt, file), "Profile Load Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return(false);
            }

            XmlElement root = doc["profile"];

            if (root == null)
            {
                return(false);
            }

            Assembly exe = Assembly.GetCallingAssembly();

            if (exe == null)
            {
                return(false);
            }

            foreach (XmlElement el in root.GetElementsByTagName("property"))
            {
                try
                {
                    string name    = el.GetAttribute("name");
                    string typeStr = el.GetAttribute("type");
                    string val     = el.InnerText;

                    if (typeStr == "-null-" || name == "LimitSize" || name == "VisRange")
                    {
                        //m_Props[name] = null;
                        if (m_Props.ContainsKey(name))
                        {
                            m_Props.Remove(name);
                        }
                    }
                    else
                    {
                        Type type = Type.GetType(typeStr);
                        if (type == null)
                        {
                            type = exe.GetType(typeStr);
                        }

                        if (m_Props.ContainsKey(name))
                        {
                            if (type == null)
                            {
                                m_Props.Remove(name);
                            }
                            else
                            {
                                m_Props[name] = GetObjectFromString(val, type);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(Engine.ActiveWindow, Language.Format(LocString.ProfileLoadEx, e.ToString()), "Profile Load Exception", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

            Filter.Load(root["filters"]);
            Counter.LoadProfile(root["counters"]);
            Agent.LoadProfile(root["agents"]);
            DressList.Load(root["dresslists"]);
            HotKey.Load(root["hotkeys"]);

            return(true);
        }