-
-
Post Thanks / Like - 2 Thanks
-
Member
Thank you! Still getting the error on memory, you don't have any keyreader/memory reader? xD Want it to work in war within without the ban so the ahk is not the best right?
/best regards smyggan and btw thanks for the sitcone file from last time ^^
Last edited by smyggan; 09-29-2024 at 06:50 PM.
-
Member
Originally Posted by
smyggan
Thank you! Still getting the error on memory, you don't have any keyreader/memory reader? xD Want it to work in war within without the ban so the ahk is not the best right?
/best regards smyggan and btw thanks for the sitcone file from last time ^^
Same here. failed to read memory
-
Member
-
Contributor
Originally Posted by
CarterStewart
Same here.
Um, did i not mention you have to edit memory read?
ok, replace ReadStringFromAddress with that:
Code:
public static string ReadStringFromAddress(int pid, string addressString)
{
long addressLong = Convert.ToInt64(addressString, 16);
IntPtr address = new IntPtr(addressLong);
if (processHandle == IntPtr.Zero)
{
processHandle = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, false, pid);
if (processHandle == IntPtr.Zero)
{
int errorCode = Marshal.GetLastWin32Error();
throw new Exception($"Failed to open process. Error code: {errorCode}");
}
}
try
{
byte[] buffer = new byte[256];
int bytesRead;
if (ReadProcessMemory(processHandle, address, buffer, (uint)buffer.Length, out bytesRead))
{
int nullIndex = Array.IndexOf(buffer, (byte)0);
return System.Text.Encoding.ASCII.GetString(buffer, 0, nullIndex >= 0 ? nullIndex : bytesRead);
}
else
{
int errorCode = Marshal.GetLastWin32Error();
throw new Exception($"Failed to read memory. Error code: {errorCode}");
}
}
finally
{
if (processHandle != IntPtr.Zero)
{
CloseHandle(processHandle);
processHandle = IntPtr.Zero;
}
}
}
p.s re-uploaded .exe
Last edited by Kirasaka; 10-11-2024 at 08:38 AM.
AyyyLmao:

-
Member
CE crashes my game when I'm doing address searches, not sure if it's just because I dont know what I'm doing though. ^^
NVM after a few restarts, got it to let me search.
This is pretty fucking nice, thanks a lot for sharing!
It'd be perfect if you could let it be toggled (lets say [ and ] key) and edit the clicks per second 
Kinda cool how you got these from chatgpt
Last edited by cawcaw; 10-12-2024 at 11:10 AM.
-
Member
Code:
import pymem
import pyautogui
import time
import keyboard
import random # For generating random delay times
# Assuming you have the WoW process open and attach via PyMem
wow_process_name = "Wow.exe"
hekili_string_address = 0x1EEEEEEEEEE # Memory address for the Hekili string
pm = pymem.Pymem(wow_process_name)
game_module = pymem.process.module_from_name(pm.process_handle, wow_process_name).lpBaseOfDll
# Toggle state for automation
automation_active = False
# Function to simulate a key press (based on Hekili string output)
def press_key(key):
pyautogui.press(key)
# Function to extract the Hekili string from memory
def get_hekili_spell_string():
# Read the string from memory (assuming it is a null-terminated string)
hekili_spell = pm.read_string(hekili_string_address)
if hekili_spell and hekili_spell.isdigit():
return hekili_spell
else:
return None
# Toggle the automation state when "0" is pressed
def toggle_automation():
global automation_active
automation_active = not automation_active
if automation_active:
print("Automation Enabled")
else:
print("Automation Disabled")
# Combat routine loop (check for health, spell availability, etc.)
def combat_routine():
while True:
if automation_active:
# Step 1: Get the spell or action from Hekili
hekili_spell = get_hekili_spell_string()
if hekili_spell:
# Step 2: Press the keybind
press_key(hekili_spell)
# Step 3: Random delay to mimic human-like behavior (between 1.5 and 2.0 seconds)
delay_time = random.uniform(1.5, 2.0)
time.sleep(delay_time)
if __name__ == "__main__":
# Set up a hotkey to toggle automation (listening for the "0" key)
keyboard.add_hotkey('0', toggle_automation)
try:
combat_routine()
except KeyboardInterrupt:
print("Exiting combat routine.")
Thank you!!! here is updated code edit to ur liking, chatgpt automated so variables (or w/e) may be named wonky names, but other than that . it works . find the string urself . no downloads needed . theres a guide for undetected cheat engine (editing the names upon compiling it , the drivers are detected AFAIK.)
does 1-9 keys.... keybindings doesnt work . i could fix it but this is the most basic design... can add weak auras + external screenshot capabilities with python for range check if u want.. idk if hekili does that automatically... i may edit it to include a display within the game to see if its enabled... combat checks... etc.
Edit: Updated to include an overlay within WoW so that between combat you can disable it so you don't pull before the tank does .
Code:
import pymem
import pyautogui
import time
import keyboard
import random
import tkinter as tk
import threading # For running the combat routine in a separate thread
# Assuming you have the WoW process open and attach via PyMem
wow_process_name = "Wow.exe"
hekili_string_address = 0x1EEEEEEEEE # Memory address for the Hekili string
pm = pymem.Pymem(wow_process_name)
game_module = pymem.process.module_from_name(pm.process_handle, wow_process_name).lpBaseOfDll
# Toggle state for automation
automation_active = False
# Function to simulate a key press (based on Hekili string output)
def press_key(key):
pyautogui.press(key)
# Function to extract the Hekili string from memory
def get_hekili_spell_string():
# Read the string from memory (assuming it is a null-terminated string)
hekili_spell = pm.read_string(hekili_string_address)
if hekili_spell and hekili_spell.isdigit():
return hekili_spell
else:
return None
# Overlay window setup
def setup_overlay_window():
# Create the main tkinter window
window = tk.Tk()
window.title("Automation Status")
# Make the window transparent and topmost
window.attributes('-topmost', True)
window.attributes('-alpha', 0.4) # Adjust the transparency (0.0 is fully transparent, 1.0 is opaque)
# Remove window borders
window.overrideredirect(True)
# Set window size and position (you can adjust the position as needed)
window.geometry("300x50+100+100") # Width x Height + X position + Y position
# Create a label to show the automation status
label = tk.Label(window, text="Automation Disabled", font=("Helvetica", 16), bg="black", fg="white")
label.pack(fill=tk.BOTH, expand=tk.YES)
return window, label
# Toggle the automation state and update overlay text
def toggle_automation(label):
global automation_active
automation_active = not automation_active
if automation_active:
# Schedule the label update on the main thread
label.after(0, lambda: label.config(text="Automation Enabled"))
print("Automation Enabled")
else:
label.after(0, lambda: label.config(text="Automation Disabled"))
print("Automation Disabled")
# Combat routine loop (check for health, spell availability, etc.)
def combat_routine():
while True:
if automation_active:
# Step 1: Get the spell or action from Hekili
hekili_spell = get_hekili_spell_string()
if hekili_spell:
# Step 2: Press the keybind
press_key(hekili_spell)
# Step 3: Random delay to mimic human-like behavior (between 1.5 and 2.0 seconds)
delay_time = random.uniform(1.5, 2.0)
time.sleep(delay_time)
# Function to run the combat routine in a separate thread
def run_combat_routine():
combat_thread = threading.Thread(target=combat_routine)
combat_thread.daemon = True # This makes sure the thread will close when the program exits
combat_thread.start()
if __name__ == "__main__":
# Set up the overlay window and label
window, label = setup_overlay_window()
# Set up a hotkey to toggle automation (listening for the "0" key)
keyboard.add_hotkey('0', lambda: toggle_automation(label))
# Start the combat routine in a background thread
run_combat_routine()
# Start the tkinter main loop for the overlay window
window.mainloop()
threading on Tkinter is handled differently , documentation here ...
tkinter — Python interface to Tcl/Tk — Python 3.13.0 documentation
Last edited by Delta3; 10-24-2024 at 09:06 PM.
-
Post Thanks / Like - 1 Thanks
Kirasaka (1 members gave Thanks to Delta3 for this useful post)
-
Member
Is there a pointer for hekili string that doesn't change every restart?
-
Member
Can someone plz update this script with any toggle key???
-
Member
Same here on my side also.
Last edited by DanielRogers; 12-11-2024 at 12:13 AM.
-
Member
It works just as well with oval or other rotation addon. Thanks for sharing.
My english is bad, sorry.
-
Member
Last edited by HarperFlores; 02-03-2025 at 02:50 AM.
-
Member
Originally Posted by
Delta3
Code:
import pymem
import pyautogui
import time
import keyboard
import random # For generating random delay times
# Assuming you have the WoW process open and attach via PyMem
wow_process_name = "Wow.exe"
hekili_string_address = 0x1EEEEEEEEEE # Memory address for the Hekili string
pm = pymem.Pymem(wow_process_name)
game_module = pymem.process.module_from_name(pm.process_handle, wow_process_name).lpBaseOfDll
# Toggle state for automation
automation_active = False
# Function to simulate a key press (based on Hekili string output)
def press_key(key):
pyautogui.press(key)
# Function to extract the Hekili string from memory
def get_hekili_spell_string():
# Read the string from memory (assuming it is a null-terminated string)
hekili_spell = pm.read_string(hekili_string_address)
if hekili_spell and hekili_spell.isdigit():
return hekili_spell
else:
return None
# Toggle the automation state when "0" is pressed
def toggle_automation():
global automation_active
automation_active = not automation_active
if automation_active:
print("Automation Enabled")
else:
print("Automation Disabled")
# Combat routine loop (check for health, spell availability, etc.)
def combat_routine():
while True:
if automation_active:
# Step 1: Get the spell or action from Hekili
hekili_spell = get_hekili_spell_string()
if hekili_spell:
# Step 2: Press the keybind
press_key(hekili_spell)
# Step 3: Random delay to mimic human-like behavior (between 1.5 and 2.0 seconds)
delay_time = random.uniform(1.5, 2.0)
time.sleep(delay_time)
if __name__ == "__main__":
# Set up a hotkey to toggle automation (listening for the "0" key)
keyboard.add_hotkey('0', toggle_automation)
try:
combat_routine()
except KeyboardInterrupt:
print("Exiting combat routine.")
Thank you!!! here is updated code edit to ur liking, chatgpt automated so variables (or w/e) may be named wonky names, but other than that . it works . find the string urself . no downloads needed . theres a guide for undetected cheat engine (editing the names upon compiling it , the drivers are detected AFAIK.)
does 1-9 keys.... keybindings doesnt work . i could fix it but this is the most basic design... can add weak auras + external screenshot capabilities with python for range check if u want.. idk if hekili does that automatically... i may edit it to include a display within the game to see if its enabled... combat checks... etc.
Edit: Updated to include an overlay within WoW so that between combat you can disable it so you don't pull before the tank does .
Code:
import pymem
import pyautogui
import time
import keyboard
import random
import tkinter as tk
import threading # For running the combat routine in a separate thread
# Assuming you have the WoW process open and attach via PyMem
wow_process_name = "Wow.exe"
hekili_string_address = 0x1EEEEEEEEE # Memory address for the Hekili string
pm = pymem.Pymem(wow_process_name)
game_module = pymem.process.module_from_name(pm.process_handle, wow_process_name).lpBaseOfDll
# Toggle state for automation
automation_active = False
# Function to simulate a key press (based on Hekili string output)
def press_key(key):
pyautogui.press(key)
# Function to extract the Hekili string from memory
def get_hekili_spell_string():
# Read the string from memory (assuming it is a null-terminated string)
hekili_spell = pm.read_string(hekili_string_address)
if hekili_spell and hekili_spell.isdigit():
return hekili_spell
else:
return None
# Overlay window setup
def setup_overlay_window():
# Create the main tkinter window
window = tk.Tk()
window.title("Automation Status")
# Make the window transparent and topmost
window.attributes('-topmost', True)
window.attributes('-alpha', 0.4) # Adjust the transparency (0.0 is fully transparent, 1.0 is opaque)
# Remove window borders
window.overrideredirect(True)
# Set window size and position (you can adjust the position as needed)
window.geometry("300x50+100+100") # Width x Height + X position + Y position
# Create a label to show the automation status
label = tk.Label(window, text="Automation Disabled", font=("Helvetica", 16), bg="black", fg="white")
label.pack(fill=tk.BOTH, expand=tk.YES)
return window, label
# Toggle the automation state and update overlay text
def toggle_automation(label):
global automation_active
automation_active = not automation_active
if automation_active:
# Schedule the label update on the main thread
label.after(0, lambda: label.config(text="Automation Enabled"))
print("Automation Enabled")
else:
label.after(0, lambda: label.config(text="Automation Disabled"))
print("Automation Disabled")
# Combat routine loop (check for health, spell availability, etc.)
def combat_routine():
while True:
if automation_active:
# Step 1: Get the spell or action from Hekili
hekili_spell = get_hekili_spell_string()
if hekili_spell:
# Step 2: Press the keybind
press_key(hekili_spell)
# Step 3: Random delay to mimic human-like behavior (between 1.5 and 2.0 seconds)
delay_time = random.uniform(1.5, 2.0)
time.sleep(delay_time)
# Function to run the combat routine in a separate thread
def run_combat_routine():
combat_thread = threading.Thread(target=combat_routine)
combat_thread.daemon = True # This makes sure the thread will close when the program exits
combat_thread.start()
if __name__ == "__main__":
# Set up the overlay window and label
window, label = setup_overlay_window()
# Set up a hotkey to toggle automation (listening for the "0" key)
keyboard.add_hotkey('0', lambda: toggle_automation(label))
# Start the combat routine in a background thread
run_combat_routine()
# Start the tkinter main loop for the overlay window
window.mainloop()
threading on Tkinter is handled differently , documentation here ...
tkinter — Python interface to Tcl/Tk — Python 3.13.0 documentation
I'm a TOTAL noob.
What do I do with this?
Do I need to download python, create a python script with this code and put that code in the folder with the other things? no idea what i'm doing and I want to give it a try.
At the moment the source files open in visual studio and i can't find anywhere that I would put that, i imagine it's in the keysender or the mem file, but if you're using python and the source files are in c# then uh.. i dont know, i'm confused.
Sorry i hate to even ask, i'm sure it's annoying lol
-
Member
Ah, so it's basically a DIY cheat day, huh? Why pay $40 when you can do all the work yourself, right? I love the 'let’s fucking go' moment, but I’m sure my game will be more like 'let's crash!' after I start tweaking everything. At least I’ll get my coding skills up... or just end up in a wall of bugs! My cousin was in his final year of university and had multiple assignments piling up. He was stressed and struggling to keep up. I recommended a UKWritings paper writing service, which we can find here ukwritings.com since I had used them before. They helped him with research papers, essays, and even a presentation. His grades improved, and he was able to manage his workload much better. This service has been a lifesaver for many students!
Last edited by StephanieReid; 02-20-2025 at 07:55 AM.
-
Member
open CE and find hekili current key string
I’d be cautious with this—using Cheat Engine (CE) and modifying game memory can violate Terms of Service for many games, leading to bans. If you’re set on doing it, rewriting the key sender and memory reader from scratch makes sense, but be aware of the risks.