GameManager: 17/06/2014
"WildStar32" 870058
"WildStar64" AAF6C8
Anything else should be the same, but don't trust me to much, i'm still learning..
Client still say 6731
GameManager: 17/06/2014
"WildStar32" 870058
"WildStar64" AAF6C8
Anything else should be the same, but don't trust me to much, i'm still learning..
Client still say 6731
Last edited by alcor75; 06-17-2014 at 06:02 AM. Reason: offset update
Did you mean a different revision?
Jesus! sorry, corrected title.
Tnx for letting me know
I can at least confirm for all the actor offsets I'm using (target, name, position, etc).
Out of curiosity, are there any tools for comparing two mostly similar versions of the same program to help look for differences?
Btw, you might want to add the architecture in the title too, since plenty of people are deving for both 32 and 64bit. Either way, thanks.Originally Posted by alcor75
Digged the 64 bit Game manager and added to first post.
Now a little question:
I'm a noob coder trying to live in this game world since many years, i have some experience in many boting fields and i'm tryng to upgrade me to a c# coder with the few time i have in my hand, i read alot, but i find little to no documentation on some critical topic, but it might be my fault.
I have this very primitive code that give me the intptr of the xyz player coordinate, but i really can't understand how to initialize GrayMagic to read the float coordinate from the memory to a variable that i can later use.
I'm digging for info to try to find the correct way to use it since weeks, i don't like to ask to be babysit-ted but i feel really stuck, probably is something behind my poor knowledge but 1 example would point me to the right direction.. i hope.Code:private void button3_Click(object sender, EventArgs e) { var proc = Process.GetProcessesByName("WildStar32").FirstOrDefault(); IntPtr WsBase = proc.MainModule.BaseAddress; IntPtr GameManagerPtr = IntPtr.Add(WsBase, (int)GameManager.GameManager.s_currentManager); IntPtr Player = IntPtr.Add(GameManagerPtr, (int)GameManager.GameManager.LocalPlayer); IntPtr Playerx = IntPtr.Add(Player, 0xEC0); IntPtr Playery = IntPtr.Add(Player, 0xEC4); IntPtr Playerz = IntPtr.Add(Player, 0xEC8); }
No problem. I'll step you through an example to do external reads.
First you want to create an ExternalProcessReader and give it the process you found.
Then you can use the Read<T> function to read in any type with an obvious size and unboxing. Thus it works for primitives like int32, int64, float, etc like so:Code:GameProcess = Process.GetProcessesByName("WildStar32").FirstOrDefault(); Memory = new GreyMagic.ExternalProcessReader(GameProcess);
It also works for basic structures (again, anything the marshaller will unbox correctly).Code:var mgr = Memory.Read<IntPtr>( WsBase + Offsets.GameManager.Base ) var player = Memory.Read<IntPtr>( mgr + Offsets.GameManager.LocalPlayer ) var currentHP = Memory.Read<int32>( player + Offsets.Actor.CurrentHP )
NB: the Sequential attribute isn't strictly necessary since that's the default, but including it helps make it clear you care about how it (un)boxes and thus people will take care before adding fields and thus breaking things.Code:[StructLayoutAttribute(LayoutKind.Sequential)] class Vector3 { public float x; public float y; public float z; } ... var playerPos = Memory.Read<Vector3>( player + Offsets.Actor.Position ) Log.Debug( "Player Z is " + playerPos.z );
That should get you started. Anything else tripping you up?
Last edited by overture2112; 06-13-2014 at 05:24 PM.
Wow, this should break my actual barrier.. tnx you so much for it, this make it very clear and simple and i can start chain my logic now..
I really appreciate the help, i'll ask as i get more problems.
Code:namespace function { enum function { VacuumLoot = 0x2C4FD0, HandleLuaEvent = 0x88F90, ClickToMove = 0x3A13D0, }; }
Surely the same logic that for finding x68 offsets -> Open IDA, look at Game.Unit:* functions, profit !
I believe I'm missing something blatantly obvious, but is there a *magic for 64 bit? All of my searches so far lead me back to 32 bit versions.
GreyMagic should be able to handle 64 bit, but don't ask me how!
Just use IntPtr/DWORD_PTR for reading memory addrs. It'll be compatible with x86 and x64 by default.