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(); }
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) { } }
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); }