something like "64D". Now, everything I try to use in micromacro (64D, 1613, 1316 etc) will result in bad parameters. So how do I convert this

But it won't workelverion wrote:Precede that data with a 0x. 0x will typically tell the programming language to use hex notation. 0x64D should work flawlessly. You could also use the Windows Calculator to convert it to decimal, but...who actually does that?
I weren't actually talking about Cheat Engine being faster than ArtMoney, It's just that I don't know ArtMoney well so I assume your way is the only one finding pointers. While in CheatEngine I can add the debugger (like you said) and find the right pointer in no time with almost never restarting the client.elverion wrote: And yes, ArtMoney's pointer lookup may be a bit slower than Cheat Engines. The difference is in the way the search works. Depending on how the game was programmed, the two different approaches may return different results (and by results, I mean in effectiveness, not necessarily different addresses).
Code: Select all
HasTarget_addr = 0x01093B28;
HasTarget_offset = 0x64D;
function LookForTarget()
HasTarget = memoryReadByte(proc, HasTarget_addr, HasTarget_offset);
Well, that solved it. Now it's just pointing to a different value. Even as 0x0 format or in dec.elverion wrote:Correct you are. memoryReadByte is for reading the value directly. memoryReadBytePtr is what you're looking for: it reads the value from the address pointed to.
Yes, I'm checking a 1 byte adress for a value between 1 - 60. I'm using print to display the value and it displays that the current value is 12 while in Cheat Engine its 0.elverion wrote:What do you mean it's pointing to a "different" value? Do you mean you are reading the wrong thing (ie. getting the wrong value returned)?
First, what is it you are trying to read? Are you sure it fits the size of a byte (what is the possible range of the expected value? 0 to 255, 0 to 65,535, 0 to 4,294,967,295?)? Is it even an integer (or character) you are trying to read, or could it be a float/double?
I just noticed that I were using a Float of course, silly me.elverion wrote:Well, that's odd. Endianness couldn't be the issue, then. Can you show more code? And what game is this for?
Code: Select all
HasTarget_addr = 0x04A40A3B;
PrimaryRange_addr = 0x120789C8;
PrimaryRange_offset = 0x630;
function LookForTarget()
HasTarget = memoryReadByte(proc, HasTarget_addr);
PrimaryRange = memoryReadFloatPtr(proc, PrimaryRange_addr, PrimaryRange_offset);
if( HasTarget == 0 ) then
-- Looking For Target
keyboardPress( key.VK_TAB );
keyboardPress( key.VK_D );
end
if ( PrimaryRange < 45 ) then
-- Adjust View Angle To Target
keyboardPress( key.VK_Q );
keyboardPress( key.VK_E );
-- Use Weapons
rest(2);
keyboardPress( key.VK_1 );
rest(2);
else
keyboardPress( key.VK_TAB );
keyboardPress( key.VK_D );
end
end
function main()
attach( findWindow("AGE OF ARMOR") );
proc = openProcess( findProcess("AGE OF ARMOR") );
setPriority(PRIORITY_HIGH);
while(true) do
LookForTarget();
rest(2);
end
end
So it works now? I've never heard of Age of Armor, but it sounds interesting. How long has it been out? Is it actually worth playing?I just noticed that I were using a Float of course, silly me.
Nah it doesn't, just that it is a 1 byte adress etc was false.elverion wrote:So it works now? I've never heard of Age of Armor, but it sounds interesting. How long has it been out? Is it actually worth playing?I just noticed that I were using a Float of course, silly me.
Users browsing this forum: No registered users and 0 guests