Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Final Fantasy XIV
You last visited: Today at 22:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Memory Location for FFXIV?

Discussion on Memory Location for FFXIV? within the Final Fantasy XIV forum part of the MMORPGs category.

Reply
 
Old 02/04/2012, 21:24   #16
 
elite*gold: 0
Join Date: Feb 2006
Posts: 629
Received Thanks: 195
Sorry I was mistaken... do the "W" in "Window_"

In your image, you would do a pointerscan, Lv1 Max 1024 for anything pointing to the address 035B97FA (which is the "W" in "Window_MainMenuWidget")

You should only get 1 result from the pointerscan. If you get more than 1, rescan it.

Once you find the pointer chain, then you have a valid pointer to the top of the widget stack. You can iterate over them to read the data programmatically.
lucid is offline  
Old 02/04/2012, 21:49   #17
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
Look, i isolated target name. I know static address, offset for MainMenu. Which should be my next step?

Millenia1983 is offline  
Old 02/04/2012, 22:10   #18
 
elite*gold: 0
Join Date: Feb 2006
Posts: 629
Received Thanks: 195
Target name is not stored in the widget structure AFAIK. I don't have an active account so I can't check but I am 99% sure that is not the case.

You will probably need to find more information and look in the memory region around the target name in order to determine what the contents of the larger memory structure are, then find the first of those contents (like you did with Window_MainMenuWidget). This means the pointers for the target would be entirely separate from the pointers for the widgets.

If it is stored in the widget struct and you don't know how to find it then you probably need more general programming experience before getting involved in this. There are many lessons you would learn in a context where they'll be easier to correct without having to worry about things like dec<->hex, pointers, and all of the uncontrollable variables that come into play. Having solid programming skills would make understanding and dealing with data much easier than it will be if you're learning both memory-related skills in addition to programming. Not to say you couldn't do it, but you will likely spend most of your time correcting issues which arise out of lack of programming experience.
lucid is offline  
Old 02/04/2012, 23:02   #19
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
***, i'm not even programmer i just ask how to find offset between 2 address'.
Millenia1983 is offline  
Old 02/04/2012, 23:33   #20
 
elite*gold: 0
Join Date: Sep 2008
Posts: 382
Received Thanks: 141
Target name/ID are not related to the offset you found. This means no offset exists between target and main widget.

If you wish to find an offset for target name, then you need to perform a pointer scan (either by hand or CE) for that offset.

I recommend you change tactics. It is much easier to find a target ID address than target name, no offsets needed!
Cooleko is offline  
Old 02/05/2012, 14:01   #21
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
Thanx. So.
Step1. Find offset between base address and parent widget.
Step2. Find offset (or offsets) between parent widget and widget part.
Step3. Final offset to access ui part is base adress -> offset from step1 -> offset (or offsets) from step2. Right?

Is inventory menu also related to main menu? truly, what i need is to find the currently selected item name from inventory.
Millenia1983 is offline  
Old 02/05/2012, 14:55   #22
 
elite*gold: 0
Join Date: Feb 2006
Posts: 629
Received Thanks: 195
Scroll through the widgets in the memory views, you'll get a good idea of what is there.

Basically, the high-level values of each widget will be stored in there, but not the contents of the widget. For example the "active" craft widget has the progress, durability, quality. Many widgets also have a byte which indicates if the widget is active or not.

Inventory is not stored in there, no list-style data is since each widget block is a fixed length as I previously mentioned. This means no variable-length data will be stored in the widgets.

For widgets you will:
  1. (prep) Determine the pointers (as you have) - you'll need to do this after each patch too
  2. (runtime) Read the pointer values so you get the address of "W" in "Window_"
  3. (runtime) Iterate over the widget struct
  4. (runtime) Add offsets to widget struct to get values internal to widget

If you don't know how to do that, I'd recommend getting more comfortable with programming. You will need to do math on the address you are reading with some dec<->hex converting.

So the whole thing might look like this (pseudo code):

Code:
' This will get the base of the game'
FFXIVBaseAddress = ReadAddressAsIntPtr(BaseOffsets)

' This will get the base of the widgets ("W" in "Window_")'
WidgetBase = ReadAddressAsIntPtr(FFXIVBaseAddress + BaseOffset)

' This will give us the base of the widget we are after, you would need to get CraftWidgetOffset'
CraftWidgetAddress = WidgetBase + CraftWidgetOffset

' Progress is 72 bytes (dec), or 0x48 (hex) from the start of the widget'
Progress = ReadAddressAsInteger(CraftWidgetAddress + 0x48)
' Now Progress should be set to whatever the in-game progress was when this code was run'
As you can see, programming is very much a requirement of making these things work. This means if you would struggle to come up with any of the above numbers (for example, CraftWidgetOffset), you would probably benefit from more programming experience before you jump in. I would also add that these lines of code will not be as they appear in a well-written program. Those features would be abstracted into functions and other programming structures, so you wouldn't see them back-to-back as they are.

Though you say you're not a programmer, you have your in the other thread. Is that your first attempt at programming anything, or are you just saying that you don't have a lot of prior programming experience?

Based upon the fact that you use pixel detection, I assume your tools are written using AutoIt or AutoHotKey. You'll want to move away from those at some point since they cause problems which cannot be resolved. For example, when sending keystrokes they send a lot of "noise" commands like WM_NULL and other bad stuff. Those platforms can also cause keys like the caps lock or left shift to become stuck if you ever press them while the bot is sending keystrokes.

Finally, a good part of the programming will involve what I showed you above with the memory reading functions. You will need to write or find someone else' code to perform the memory reading and to return the proper data types. ReadAddressAsIntPtr() and ReadAddressAsInteger(), you'll of course need ReadAddressAsString() and probably eventually ReadAddressAsByte().

In short, there is no quick answer anyone can provide about how to do this. There are several different aspects to creating tools like this and any gaps in your skill-set could make things significantly more challenging from a maintenance perspective.
lucid is offline  
Old 02/05/2012, 16:33   #23
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
Quote:
Originally Posted by lucid View Post
Though you say you're not a programmer, you have your tools pack in the other thread. Is that your first attempt at programming anything, or are you just saying that you don't have a lot of prior programming experience?
My tools work with graphics, but i completely have no experience with memory. Craftbot and most of tools work fine, but memory analysis can be impletented in selling tool and fishbot logic. All i want is just improving my project.

Quote:
For example, when sending keystrokes they send a lot of "noise" commands like WM_NULL and other bad stuff. Those platforms can also cause keys like the caps lock or left shift to become stuck if you ever press them while the bot is sending keystrokes.
I solved it by just disabling user's input while sending keystrokes (ReDresser does so).

OH GODS FINALY!!!!



THANK YOU
Millenia1983 is offline  
Old 02/06/2012, 22:36   #24
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
How do you get fishing messages like "Fish is taking line", "You feel no bite" etc? They are not stored in FishingInputWidget, but all that messages have some prefix ~150 bytes above.
Millenia1983 is offline  
Old 02/07/2012, 00:03   #25
 
elite*gold: 0
Join Date: Sep 2008
Posts: 382
Received Thanks: 141
they are sent to the chat log
Cooleko is offline  
Old 02/07/2012, 01:23   #26
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
Is chatlog an another widget or array with pointer?

Im' stuck here



Fishing bot works perfectly in alt-tab, but i still cannot read messages.
Millenia1983 is offline  
Old 02/07/2012, 11:09   #27
 
13ouncer's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 271
Received Thanks: 28
Try searching for text in the memory viewer, but before you search for the text follow these steps:

1.Have the widget window open.
2.Have the memory viewer search open.
3.Type the text that will appear in chat, after you click a button on the widget, in the memory viewer search box (the white area that shows all sorts of text and periods), but don't search for it yet (leave it open and ready to search)
4. Quickly press the widget button you chose and then perform the search in the memory viewer (almost simultaneously)

The reason you must do it quickly: SE scrambles the text and then logs it, almost as soon as it pops up. If you do it fast enough you can locate the address.

This is how I did it anyways.

GL!
13ouncer is offline  
Old 02/07/2012, 17:29   #28
 
elite*gold: 0
Join Date: Sep 2008
Posts: 382
Received Thanks: 141
the chatlog is its own block of memory, maybe about 0x4000 long. the memory structure for the chat log holds where every line is as well as where the next line to be written to is.
Cooleko is offline  
Old 02/07/2012, 21:02   #29
 
elite*gold: 0
Join Date: Feb 2012
Posts: 27
Received Thanks: 1
Quote:
Originally Posted by Cooleko View Post
the chatlog is its own block of memory, maybe about 0x4000 long. the memory structure for the chat log holds where every line is as well as where the next line to be written to is.
look at pic, i've found it. last string is at top, older go downward. but it has no 1lvl pointer, only 5+
Millenia1983 is offline  
Old 02/07/2012, 21:22   #30
 
elite*gold: 0
Join Date: Sep 2008
Posts: 382
Received Thanks: 141
From the looks of that picture you have not found the chat log, which is why i piped up. However, you may not be looking for the chatlog I am familiar with.
Cooleko is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
ffxiv bot or ffxiv hacks?
07/26/2015 - Final Fantasy XIV - 40 Replies
is there any ffxiv bot around? I'm also interested in ffxiv hacks, something like mr. argus or mr. rabbit would be nice, please reply in this thread or contact me through pm. I'm also interested to help you people to develop a ffxiv bot or ffxiv hacks.
Quick Memory Editor - Alternative Memory Hacking Software
11/21/2009 - Cabal Hacks, Bots, Cheats, Exploits & Macros - 11 Replies
This might be detected or not by GameGuard, I have not tested this on Official servers however it worked perfectly fine on other private servers. http://imagenic.net/images/x0jxwzwpg2zxmkdtcf36.p ng This is just an alternative memory editing tool. Press thanks if this helps. Remember, scan before using this. Cause its 5.5MB.



All times are GMT +1. The time now is 22:41.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.