I have created a Memory pointer tester and submitted it to the repository, please give it a try, to test the memory pointers on your system.
This is what the code looks like for the macro:
(The top part is just a copy of the hunting macro, as it is the pointers from that macro we are testing here)
Code:
begin
// Settings:
Variable.Set("processName", "elementclient")
Variable.Set("windowName", "Element Client")
// Store memory addresses / window name in variables, to make it easier to update if the memory addresses change with a game update
Variable.Set("maxHPMemoryAddress", "elementclient.exe+65BFCC,20,4b4")
Variable.Set("maxMPMemoryAddress", "elementclient.exe+65BFCC,20,4b8")
Variable.Set("currentHPMemoryAddress", "elementclient.exe+65BFCC,20,474")
Variable.Set("currentMPMemoryAddress", "elementclient.exe+65BFCC,20,478")
Variable.Set("currentLevelMemoryAddress", "elementclient.exe+65BFCC,20,46c")
Variable.Set("currentLocationXMemoryAddress", "elementclient.exe+65bfcc,20,384,3c")
Variable.Set("currentLocationYMemoryAddress", "elementclient.exe+65bfcc,20,384,44")
Variable.Set("currentLocationHeightMemoryAddress", "elementclient.exe+65bfcc,20,384,40")
Variable.Set("hasTargetMemoryAddress", "elementclient.exe+65BFCC,20,1088,38")
Variable.Set("topMostDialogLocationXMemoryAddress", "elementclient.exe+0065BFCC,4,8,70,98")
Variable.Set("topMostDialogLocationYMemoryAddress", "elementclient.exe+0065BFCC,4,8,70,9c")
Variable.Set("deathDialogLocationXMemoryAddress", "elementclient.exe+0065BFCC,4,8,4a0,98")
Variable.Set("deathDialogLocationYMemoryAddress", "elementclient.exe+0065BFCC,4,8,4a0,9c")
Variable.Set("reachDestinationCheckBoxMemoryAddress", "elementclient.exe+65BFE4,270,2bc,1f0,119")
Variable.Set("windowActiveMemoryAddress", "elementclient.exe+65B90C,48c")
// Test all of them
Window.Display message box("Please make sure Perfect World is running, and your logged in. Press ok to begin", "yes")
Memory.Get value("{processName}", "{currentHPMemoryAddress}", "4", "currentHP")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{maxHPMemoryAddress}", "4", "maxHP")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{currentMPMemoryAddress}", "4", "currentMP")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{maxMPMemoryAddress}", "4", "maxMP")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{currentLevelMemoryAddress}", "4", "lvl")
Function.Execute("Check errors")
Function.Execute("Get player location")
Variable.Evaluate (Text)("Level: {lvl}, HP: {currentHP}/{maxHP}, MP: {currentMP}/{maxMP}, Location: X:{x}, Y:{y}, Z:{z}", "output")
Function.Execute("Check errors")
Window.Display message box("{output}", "yes")
if Memory.Value is("{processName}", "{hasTargetMemoryAddress}", "1", "1")
begin
Window.Display message box("You currently have a monster, player or npc targeted", "yes")
end
Function.Execute("Check errors")
if Memory.Value is("{processName}", "{hasTargetMemoryAddress}", "1", "0")
begin
Window.Display message box("You do not have a target", "yes")
end
Function.Execute("Check errors")
if Memory.Value is("{processName}", "{windowActiveMemoryAddress}", "1", "0")
begin
Window.Display message box("The game window is currently not the active window", "yes")
end
Function.Execute("Check errors")
if Memory.Value is("{processName}", "{windowActiveMemoryAddress}", "1", "1")
begin
Window.Display message box("The game window is currently the active window", "yes")
end
Function.Execute("Check errors")
if Memory.Value is("{processName}", "{reachDestinationCheckBoxMemoryAddress}", "1", "0")
begin
Window.Display message box("'Reach Destination' is currently disabled for the coordinates assistant", "yes")
end
Function.Execute("Check errors")
if Memory.Value is("{processName}", "{reachDestinationCheckBoxMemoryAddress}", "1", "1")
begin
Window.Display message box("'Reach Destination' is currently enabled for the coordinates assistant", "yes")
end
Function.Execute("Check errors")
Memory.Get value("{processName}", "{topMostDialogLocationXMemoryAddress}", "4", "topMostX")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{topMostDialogLocationYMemoryAddress}", "4", "topMostY")
Function.Execute("Check errors")
Variable.Evaluate (Text)("The current top most dialog inside the game is located at: X:{topMostX}, Y:{topMostY}", "output2")
Function.Execute("Check errors")
Window.Display message box("{output2}", "yes")
Memory.Get value("{processName}", "{deathDialogLocationXMemoryAddress}", "4", "deathDialogX")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{deathDialogLocationYMemoryAddress}", "4", "deathDialogY")
Function.Execute("Check errors")
Variable.Evaluate (Text)("The 'You are dead' dialog is currently located at: X:{deathDialogX}, Y:{deathDialogY}", "output3")
Function.Execute("Check errors")
Window.Display message box("{output3}", "yes")
end
function("Check errors")
if Macro.Any errors occurred()
begin
Macro.Get last error("errorMsg")
Variable.Evaluate (Text)("The following error occured (For help, go to www.blueeye-macro.com): {errorMsg}", "errorOutput")
Window.Display message box("{errorOutput}", "yes")
Macro.Reset error has occured()
end
function
function("Get player location")
begin
// Get our current location
Memory.Get value("{processName}", "{currentLocationXMemoryAddress}", "float", "x")
Function.Execute("Check errors")
Variable.Evaluate (Math)("401+({x}/10)", "x")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{currentLocationYMemoryAddress}", "float", "y")
Function.Execute("Check errors")
Variable.Evaluate (Math)("551+({y}/10)", "y")
Function.Execute("Check errors")
Memory.Get value("{processName}", "{currentLocationHeightMemoryAddress}", "float", "z")
Function.Execute("Check errors")
Variable.Divide (Math)("z", "10")
Variable.Round (Math)("x", "1")
Variable.Round (Math)("y", "1")
Variable.Round (Math)("z", "1")
end
function