Example #1
0
 private void button2_Click(object sender, EventArgs e)
 {
     if (SelectedLoc == -1)
     {
         MessageBox.Show("Select location first!", "Farm helper info.", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     MainForm.WayPoints New = new MainForm.WayPoints();
     wow.Read();
     New.X            = wow.Objects[0].X;
     New.Y            = wow.Objects[0].Y;
     New.Z            = wow.Objects[0].Z;
     New.NextWaypoint = WayPoints.Count + 1;
     WayPoints.Add(New);
     FillListBox();
 }
Example #2
0
 private void MainTimer_Tick(object sender, EventArgs e)
 {
     try
     {
         String[] Files = Directory.GetFiles(Application.StartupPath, "*.exe");
         for (int i = 0; i < Files.Length; i++)
         {
             if (Files[i].Substring(Files[i].Length - 14, 14) == "Newversion.exe")
             {
                 File.Delete(Files[i]);
             }
         }
         if (wow.wow.ProcessId != 0)
         {
             wow.Read();
             label18.Text = wow.LoadingState.ToString() + wow.LoginState.ToString() + wow.Combopoints.ToString();
             if ((Autoreconnect == true) & (Running == true))
             {
                 CheckWowState();
             }
             ProcessMainPage();
             if ((wow.Objects.ToArray().Length > 0) & (wow.Online == true))
             {
                 if (Running == true)
                 {
                     if (WowControl.WaitTime > DateTime.Now)
                     {
                         //wow.GoTo(0, 0, 0, 0, 3);
                         WowControl.UpdateStatus("Waiting.");
                         return;
                     }
                     ProcessFarm();
                 }
             }
             wow.ReadChat();
             ProcessChat();
         }
         else
         {
             InitMain();
             ProcessMainPage();
         }
     } catch (Exception) { }
 }
Example #3
0
        public static bool IsValidGObjectsAddress(IntPtr chunksAddress)
        {
            if (JsonReflector.StructsList.Count == 0)
            {
                throw new NullReferenceException("You must init `JsonReflector` first.");
            }

            // => Get information
            var objectItem     = JsonReflector.GetStruct("FUObjectItem");
            var objectItemSize = objectItem.GetSize();

            var objectInfo       = JsonReflector.GetStruct("UObject");
            var objOuter         = objectInfo["Outer"].Offset;
            var objInternalIndex = objectInfo["InternalIndex"].Offset;
            var objNameIndex     = objectInfo["Name"].Offset;
            // => Get information

            IntPtr addressHolder = chunksAddress;

            if (MemObj == null)
            {
                throw new NullReferenceException("`MemObj` is null !!");
            }

            if (!IsValidRemoteAddress(addressHolder))
            {
                return(false);
            }

            /*
             * NOTE:
             * Nested loops will be slow, split-ed best.
             */
            const int objCount = 2;
            var       objects  = new IntPtr[objCount];
            var       vTables  = new IntPtr[objCount];

            // Check (UObject*) Is Valid Pointer
            for (int i = 0; i < objCount; i++)
            {
                int offset = objectItemSize * i;
                if (!IsValidRemotePointer(addressHolder + offset, out objects[i]))
                {
                    return(false);
                }
            }

            // Check (VTable) Is Valid Pointer
            for (int i = 0; i < objCount; i++)
            {
                if (!IsValidRemotePointer(objects[i], out vTables[i]))
                {
                    return(false);
                }
            }

            // Check (InternalIndex) Is Valid
            for (int i = 0; i < objCount; i++)
            {
                int internalIndex = MemObj.Read <int>(objects[i] + objInternalIndex);
                if (internalIndex != i)
                {
                    return(false);
                }
            }

            // Check (Outer) Is Valid
            // first object must have Outer == nullptr(0x0000000000)
            int uOuter = MemObj.Read <int>(objects[0] + objOuter);

            if (uOuter != 0)
            {
                return(false);
            }

            // Check (FName_index) Is Valid
            // 2nd object must have FName_index == 100
            int uFNameIndex = MemObj.Read <int>(objects[1] + objNameIndex);

            return(uFNameIndex == 100);
        }