Get coordinates of Nodes

01/28/2016 09:25 saikohayn#1
I'm currently working on getting coordinates of nodes (on map load) but I can only get nearby node coordinates. If node shows on the minimap, I can then get the coordinates. I filter out the coordinates I don't want then write the coordinates that I do want near my "body coordinates".

Now I ask, if anyone knows of a way to load all nodes on the map you are currently in? PM if you can help. Below is the scrip I use in CE, and a video of it working.

ArrayOfBytes: F3 0F 10 56 20 F3 0F 10 4E
You can use the AOB to find the address of this opcode. Feel free to use this, and if you do credit and thanks would be good. :D
Code:
{ Game   : Gw2.exe
  Version: 
  Date   : 2016-01-25
  Author : saikohayn

  This script gets harvesting node coordinates in range and writes it to gw2.exe+abc
}



[ENABLE]

aobscanmodule(INJECT,Gw2.exe,F3 0F 10 56 20 F3 0F 10 4E) // should be unique
alloc(newmem,$1000)

label(code)
label(default)
label(return)

newmem:
  mov ecx, 00000003             //value of toxic seedlings, haven't tested much of this
  cmp ecx, [esi+44]
  je code
  mov ecx, 00000000             //value all nodes have @esi+88
  cmp ecx, [esi+88]
  jne default
  mov ecx, 3f800000             //value all nodes have @esi+88
  cmp ecx, [esi+8c]
  jne default
  mov ecx, 000001cf             //value all nodes have @esi+88
  cmp ecx, [esi+a0]
  jne default

code:
  movaps xmm2,[esi+20]
  movaps [[[[["Gw2.exe"+01702078]+44]+1c]+88]+e0], xmm2       //writes coordinates to ["body coordinates"+10]
  jmp return

default:
  movss xmm2,[esi+20]
  jmp return

INJECT:
  jmp newmem

return:
registersymbol(INJECT)



[DISABLE]

INJECT:
  movss xmm2,[esi+20]

unregistersymbol(INJECT)
dealloc(newmem)
01/29/2016 17:17 Agedyn#2
The client is not aware of nodes outside of your minimap's range. So if you want to find out all node locations in the current map, you have to divide the map into minimap's range sized chunks and teleport onto them.
01/29/2016 20:38 saikohayn#3
That's a good idea, thanks for the tip
02/11/2016 00:39 sethzar#4
Hey there,

. I've been trying to scan up the coordinates in CE to replicate what you accomplished with that code, but am having some difficulty.

I'm definitely not trying to step on your toes, but would you mind sharing what you had to scan for to find those memory addresses? I'm not new to CE - so not expecting a walkthrough. If you could just give me a general idea of how you scanned the initial values that would be great. I'll also attempt to go through the assembly and try to see if I can weed out the function that keeps sending you to heart quest items.
02/13/2016 21:37 Agedyn#5
Quote:
Originally Posted by sethzar View Post
Hey there,

. I've been trying to scan up the coordinates in CE to replicate what you accomplished with that code, but am having some difficulty.

I'm definitely not trying to step on your toes, but would you mind sharing what you had to scan for to find those memory addresses? I'm not new to CE - so not expecting a walkthrough. If you could just give me a general idea of how you scanned the initial values that would be great. I'll also attempt to go through the assembly and try to see if I can weed out the function that keeps sending you to heart quest items.
Search for GadgetCliContext there should be m_gadgets assert somewhere in the function that accesses the gadget list. Then find out pointer to the GadgetCliContext by finding references to the constructor/destructor.