/// <summary> /// Write a single hack value. Tries up to 30 times, 1/10th /// of a second apart. /// </summary> /// <param name="HackValue">hack value to write</param> /// <returns>True if successful</returns> public bool WriteHackValue(TFHackValue HackValue) { if ((long)HackValue.Address == 0) { if (HackValue.OldBytes.Length > 0) { IntPtr[] Addresses = FindInMemory(HackValue.OldBytes, HackValue.MinimumAddress, HackValue.MaximumAddress); if (Addresses.Length > 0) { HackValue.Address = Addresses[0]; } else { Console.WriteLine("Failed to find old bytes."); Addresses = FindInMemory(HackValue.NewBytes, HackValue.MinimumAddress, HackValue.MaximumAddress); if (Addresses.Length > 0) { HackValue.Address = Addresses[0]; HackValue.Active = true; } else { Console.WriteLine("Failed to find new bytes."); return(false); } } } else { return(false); } } Console.WriteLine(HackValue.Address); bool result = false; if (HackValue.Active) { result = WriteMemory(HackValue.Address, HackValue.OldBytes); if (result) { Console.WriteLine("Deactivated."); HackValue.Active = false; } return(result); } else { result = WriteMemory(HackValue.Address, HackValue.NewBytes); if (result) { Console.WriteLine("Activated."); HackValue.Active = true; } } return(result); }
public void FromXML(String XML) { XmlDocument XMLdoc = new XmlDocument(); XMLdoc.LoadXml(XML); XmlNode XMLnode = XMLdoc.DocumentElement; foreach (XmlNode node in XMLnode.ChildNodes) { switch(node.Name) { case "hackvalues": this.HackValues = new TFHackValue[node.ChildNodes.Count]; for (int x=0; x < node.ChildNodes.Count; x++) { HackValues[x] = new TFHackValue(); HackValues[x].FromXML(node.ChildNodes[x].OuterXml); } break; } } }
public void FromXML(String XML) { XmlDocument XMLdoc = new XmlDocument(); XMLdoc.LoadXml(XML); XmlNode XMLnode = XMLdoc.DocumentElement; foreach (XmlNode node in XMLnode.ChildNodes) { switch (node.Name) { case "hackvalues": this.HackValues = new TFHackValue[node.ChildNodes.Count]; for (int x = 0; x < node.ChildNodes.Count; x++) { HackValues[x] = new TFHackValue(); HackValues[x].FromXML(node.ChildNodes[x].OuterXml); } break; } } }
/// <summary> /// Write a set of HackValues to the Process /// </summary> /// <param name="HackValues">HackValue to write</param> /// <returns>true if successful</returns> public bool WriteHackValues(TFHackValue[] HackValues) { bool Success = true; for (int x=0; x < HackValues.Length; x++) { bool HackSuccess = WriteHackValue(HackValues[x]); Success = Success & HackSuccess; } return Success; }
/// <summary> /// Write a single hack value. Tries up to 30 times, 1/10th /// of a second apart. /// </summary> /// <param name="HackValue">hack value to write</param> /// <returns>True if successful</returns> public bool WriteHackValue(TFHackValue HackValue) { if((long)HackValue.Address == 0) { if(HackValue.OldBytes.Length > 0) { IntPtr[] Addresses = FindInMemory(HackValue.OldBytes, HackValue.MinimumAddress, HackValue.MaximumAddress); if(Addresses.Length > 0) { HackValue.Address = Addresses[0]; } else { Console.WriteLine("Failed to find old bytes."); Addresses = FindInMemory(HackValue.NewBytes, HackValue.MinimumAddress, HackValue.MaximumAddress); if(Addresses.Length > 0) { HackValue.Address = Addresses[0]; HackValue.Active = true; } else { Console.WriteLine("Failed to find new bytes."); return false; } } } else { return false; } } Console.WriteLine(HackValue.Address); bool result = false; if(HackValue.Active) { result = WriteMemory(HackValue.Address, HackValue.OldBytes); if(result) { Console.WriteLine("Deactivated."); HackValue.Active = false; } return result; } else { result = WriteMemory(HackValue.Address, HackValue.NewBytes); if(result) { Console.WriteLine("Activated."); HackValue.Active = true; } } return result; }
public TFHackSet(TFHackValue[] HackValues) { this.HackValues = HackValues; }