|
You last visited: Today at 00:10
Advertisement
[ASK] about memory address
Discussion on [ASK] about memory address within the Perfect World forum part of the MMORPGs category.
08/31/2010, 22:30
|
#31
|
elite*gold: 0
Join Date: Nov 2009
Posts: 31
Received Thanks: 0
|
@Interest07
thanks.. thanks alot lol. i found it. i can do normal attack, and auto select mobs (using asm injected code just like the russians did.) i'm so happy lol. thanks a lot..
this is the code i use.. right or wrong, i dunno, but it works. normal attack.. awesomeeeeeee.. thanks masters..
by the way, how can i pick a drop loot from the mobs?  i'can't figure it out yet. gimme a hint please lol..
|
|
|
08/31/2010, 22:31
|
#32
|
elite*gold: 0
Join Date: Nov 2009
Posts: 31
Received Thanks: 0
|
$CURRENTACTION = MEMREAD(MEMREAD(MEMREAD(MEMREAD($APP_BASE_ADDRESS) + 0X20) + 0XFE0) + 0X14)
IF ($CURRENTACTION <> $TARGETACTION) THEN
IF MEMREAD(MEMREAD(MEMREAD(MEMREAD($APP_BASE_ADDRESS) + 0X20) + 0XFE0) + 0X18) = 0 THEN ;ISACTION
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $DONEFLAG, 0) ;ANGGAP ACTION SEBELUMNYA TELAH SELESAI
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $INTERACTTYPE, $INTERACTNUMBER) ;SKILL = NORMAL ATTAC
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $OFF_CURRENTACTION, $TARGETACTION) ;WALTOTARGET N ATTACK
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $ISACTION, 1) ;(ba+20+fe+0x18) Set ISaction =1
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $STAYORWALKTO, $CURRENTACTION) ;STAYORWALKTO = CURRENTACTION
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $ACTIONSTART, 1) ;Action Start = 1
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $ACTIONNOTSTART, 0) ;Action Not Start = 0
ENDIF
ENDIF
|
|
|
08/31/2010, 22:48
|
#33
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
use the same function, but instead of the targetId you'd pass along the id of an item on floor here :
Code:
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $OFF_OBJECTID, $OBJECTID)
and instead of passing along action type 0 for the regular attack, use 1 for pick item:
Code:
_MEMORYPOINTERWRITE($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $ACTTYPE, 1)
if I remember correctly this should work. In order to get the right item id, you'll have to search the item list for items located close to the monster you have just killed.
|
|
|
09/04/2010, 14:54
|
#34
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
is there any memory address we can check to see if our char is still logged in or disconnected ? I already made a dead alarm based on HP so I'll know if my char is killed, by mob or other player but if I got disconnected, HP value is still at the last value before getting dc'ed and not zero, so still need to check back often because internet connection is unstable sometimes, could be my isp or the PW server itself.
also, is it possible to make an autologin using script ? I think ntKid's revobot has one. It'd be nice to have so the bot can avoid unnecessary interuption by unstable internet connection.
|
|
|
09/28/2010, 10:31
|
#35
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
Quote:
|
Originally Posted by Interest07
Code:
MoveTo(X, Y, Z, moveType, client, actionStruct, height=-1.0)
{
actionList := ReadMemory(actionStruct+0x30,client)
MoveAction := ReadMemory(actionList+0x4,client)
writeMemory(0, MoveAction+0x8, client) ;Action finished = 0
writeMemory(1, MoveAction+0x14, client) ;Action Start = 1
writeMemory(FloatToHex(X), MoveAction + 0x20, client)
writeMemory(FloatToHex(Y), MoveAction + 0x24, client)
writeMemory(FloatToHex(Z), MoveAction + 0x28, client)
writeMemory(FloatToHex(height), MoveAction + 0x68, client)
if(height >= 0.0)
{
writeMemory(26625, MoveAction + 0x64, client)
writeMemory(256, MoveAction + 0x6C, client)
}
else
{
writeMemory(26624, MoveAction + 0x64, client)
writeMemory(65536, MoveAction + 0x6C, client)
}
writeMemory(moveType, MoveAction + 0x2C, client) ;Not supported yet
writeMemory(MoveAction, actionstruct+0xC, client)
writeMemory(1, actionstruct+0x18, client)
writeMemory(moveAction, actionstruct+0x14, client)
}
|
@Interest07 : I just tried to make moveto function based on your function above, it works for moving my char but I'm having problem to go to a coordinate in the right float value because for example my char is at coordinate 400,550, if I want to move it to 401,550, shouldn't I just tell _memorypointerwrite to write $x=401 and $y=550 in float ?
also, isn't for Y we use it like this : Round(($movetoy[1] + 5500) / 10, 1))
but it doesn't show the correct Y coordinate.
here is the movexyz function :
Code:
func movexyz()
$moveactionplus[5]=0x8
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionplus[5]=0x14
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,1)
$moveactionplus[5]=0x20
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$x,[b]"float"[/b])
$moveactionplus[5]=0x24
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$y,[b]"float"[/b])
$moveactionplus[5]=0x2c
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0xc ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
$actionstructplus[3]=0x18 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,1)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0x14 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
endfunc
this one below is full code I made, if you have the time, could you please check why it shows the wrong Y coordinate, and also why it can't go to the exact coordinate even though I already tell to write coordinate in float. What is Z ? it shows one digit only and it's not height, I don't use Z and height though, because I only want to move to x,y coordinate, maybe later I'll use the height as well to fly from one place to somewhere else to avoid monsters.
please help, I'm really stuck
*you only need to change base address [the fake one, hehe] and the actionstruct 4064 should be dec("ff4") in pwi
Code:
#include <GUIConstants.au3>
#include <array.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#include <nomadmemory.au3>
$wintitles="Element Client"
$AppBaseAddress=10229012
$pid=wingetprocess($wintitles)
$mid2= _memoryopen($pid)
global $moveactionplus[6]
$moveactionplus[1]=32
$moveactionplus[2]=4064 ;actionstruct
$moveactionplus[3]=48 ;actionlist
$moveactionplus[4]=4 ;moveaction
$moveactionplus[5]="fillme"
global $moveaction[5]
$moveaction[1]=32
$moveaction[2]=4064 ;actionstruct
$moveaction[3]=48 ;actionlist
$moveaction[4]=4 ;moveaction
global $actionstructplus[4]
$actionstructplus[1]=32
$actionstructplus[2]=4064 ;actionstruct
$actionstructplus[3]="fillme" ;actionstruct
GuiCreate("Move value Checkers", 250, 250)
$msg=0
GuiSetState()
$LABEL_X_STATUS = GUICtrlCreateLabel("X :", 5, 5, 100, 20)
$LaBEL_X_value=GUICtrlCreateLabel("-", 105, 5, 100, 20)
$LABEL_Y_STATUS = GUICtrlCreateLabel("Y :", 5, 25, 100, 20)
$LaBEL_Y_value=GUICtrlCreateLabel("-", 105, 25, 100, 20)
$LABEL_z_STATUS = GUICtrlCreateLabel("Z :", 5, 45, 100, 20)
$LaBEL_z_value=GUICtrlCreateLabel("-", 105, 45, 100, 20)
;this is the move to x,y
$x=401
$y=550
movexyz()
;this loop is just for monitoring the x,y,z value
While $msg <> $GUI_EVENT_CLOSE
$msg = GuiGetMsg()
$moveactionplus[5]=0x20
$movetox = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_x_value, Round(($MOVETOX[1] + 4000) / 10, 2))
$moveactionplus[5]=0x24
$movetoy = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_y_value, Round(($MOVETOy[1] + 5500) / 10, 2))
$moveactionplus[5]=0x28
$movetoz = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_z_value, Round(($MOVETOz[1]) / 10, 1))
WEnd
func movexyz()
$moveactionplus[5]=0x8
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionplus[5]=0x14
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,1)
$moveactionplus[5]=0x20
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$x,"float")
$moveactionplus[5]=0x24
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$y,"float")
$moveactionplus[5]=0x2c
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0xc ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
$actionstructplus[3]=0x18 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,1)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0x14 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
endfunc
|
|
|
09/28/2010, 12:28
|
#36
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
It's because Y is height, not Z.
$x=401*10 - 4000
$z=550*10 - 5500
is the way to convert your coords to the ingame ones by the way.
so like this:
Code:
;this is the move to x,y
$x=401*10 - 4000
$z=550*10 - 5500
movexyz()
;this loop is just for monitoring the x,y,z value
While $msg <> $GUI_EVENT_CLOSE
$msg = GuiGetMsg()
$moveactionplus[5]=0x20
$movetox = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_x_value, Round(($MOVETOX[1] + 4000) / 10, 2))
$moveactionplus[5]=0x24
$movetoy = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_y_value, Round(($MOVETOy[1]) / 10, 2))
$moveactionplus[5]=0x28
$movetoz = _MEMORYPOINTERREAD($APPBASEADDRESS, $mid2, $moveactionplus,"float")
GUICtrlSetData($LABEL_z_value, Round(($MOVETOz[1] + 5500) / 10, 1))
WEnd
func movexyz()
$moveactionplus[5]=0x8
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionplus[5]=0x14
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,1)
$moveactionplus[5]=0x20
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$x,"float")
$moveactionplus[5]=0x28
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,$z,"float")
$moveactionplus[5]=0x2c
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $moveactionplus,0)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0xc ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
$actionstructplus[3]=0x18 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,1)
$moveactionvalue=_memorypointerread($APPBASEADDRESS, $mid2, $moveaction)
$actionstructplus[3]=0x14 ;actionstruct
_MEMORYPOINTERWRITE($APPBASEADDRESS, $mid2, $actionstructplus,$moveactionvalue[1])
endfunc
|
|
|
09/28/2010, 12:39
|
#37
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
lol you're right, I use the previously supposed to be Z as Y and now Y is correct!
now only need to know how to use real decimal coordinate to be written as float in the game so it'll move to the correct coordinate
-edit-
nvm, turns out the real $x and $y has to be formulated like this before writing it to float 
$xx=400
$yy=550
$x=(10*$xx)-4000
$y=(10*$yy)-5500
now I can go anywhere I like based on decimal coordinate, this function is awesome, I can go to faraway coordinate even though it's unclickable
|
|
|
09/28/2010, 12:55
|
#38
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
What I posted above should work for moving to the correct spot, doesn't it? Why would you want to use the those coordinates though? They're not very precise to say the least
|
|
|
09/28/2010, 13:01
|
#39
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
yea, it is now ! it's working great
need to find out the difference about Z and height later, sometimes Z value seems like height , maybe it needs to be adjusted just like $x 'n $y , I'll take a look at prophet's code or zevorc's bot hehe.
thanks for correcting the y and z lol I had been trying it for hours just now
-edit-
I need to go to exact coordinates to make mining bot, check if the resource is still there, dig it, then move to other resource coordinate. I made a one spot mining bot but I got greedy now LoL, 10 minutes waiting for several ground resources to respawn seems like wasting time
I have the idea but still learning a few things before I can make it, now that I can go anywhere near resource coordinate, still need to make a checker function whether or not the resource is still there because there are always a lot of people mining in indo server
|
|
|
09/28/2010, 13:09
|
#40
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
what you are using as X and Y, is actually X and Z. the Y coordinate is the height, the reason I have a separate "height" variable, is because that one is for the movement you get when clicking on the radar (or in quest log for example) to move. If you pass along that variable and it's a positive number you'll automatically equip fly gear if needed and start moving to the proper height.
|
|
|
09/28/2010, 13:19
|
#41
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
yea, I switched offsets for Y n Z and it shows correct coordinates.
So Z is equal to height then, but seems like height is better to use because can automatically fly, hope it works with x y clicking for moving so I can avoid monsters.
|
|
|
09/28/2010, 14:03
|
#42
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
@Interest07 : omg, I like this moveto function, the flyto with height works great too, but how do I get off flying after destination reached ?
|
|
|
09/28/2010, 16:36
|
#43
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
I usually send a packet to drop down again
|
|
|
09/28/2010, 17:34
|
#44
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
what sendpacket from the collection in page 1 should I use to drop down from fly, if it's useskill, what's the skill id for 'fly' ? or if it's not in the list could you please add it ?
|
|
|
09/28/2010, 21:30
|
#45
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
the useItem($index, $itemTypeId, $pid, $equip=0) function
where
$index=0xC
$itemTypeId=whatever flying gear you have
$equip=1
flygearid you can find at [$CHARACTER_DATABASE + 0x570] on pwi, can get the offset with the offsetfinder provided with my wq bot for other versions too.
|
|
|
 |
|
Similar Threads
|
about memory address
09/13/2010 - CO2 Programming - 4 Replies
hello peeps
i am trying to make a program that shows how much gold i have in my inventory without having to open it up all the time
i have been searching on how to do this in vb6 and vb.net but i cant find anything that is what i am looking for so i came here to see if there was anyone that could point me in the right way on how to do this
|
Memory Address
03/05/2010 - CO2 Programming - 10 Replies
Hey,
when i find a memory adress for Example :name = 0x5AC45(Example)
i add it to my bot and it shows my name but when i close co and open another one it doesnt show my name and when i search for the address it shows another address,i would like to know how to search for the Main address,som1 told me to look for the Pointer,am using cheat engine and idk how to look for the points i right click on the address and click search for pointer an empty box shows up plz help !!!
|
[VB]Memory Address
06/30/2009 - .NET Languages - 5 Replies
Weiß jemande wie ich eine Memory Addresse in Visual Basic einbauen kann ? :)
Ahja habe VB08 :)
Liebe Grüße,
AngelAndi
|
MP address in memory
05/06/2007 - Lineage 2 - 0 Replies
I want to make bot, I found HP address in memory, its 09DDD190 but I still can't find MP address ? Can anybody help me ?
And srry because of my english, it is bad :rolleyes:
|
All times are GMT +1. The time now is 00:13.
|
|