How to change multiple item values at once @ Last Remnant

Need Help With an Existing Feature in Memory Hacking Software? Ask Here

Moderators: g3nuin3, SpeedWing, WhiteHat, mezzo

How to change multiple item values at once @ Last Remnant

Postby warbaque » Mon Aug 10, 2009 10:47 am

Hi, I've just started to learn how to use MHS, basics of Assembly and C few days ago. I've used MHS few years ago when playing around with FF7 and changing few spell effects and values, but never actually put time to learn how to effectively utilise this tool.

For now I'd like to edit simply item amounts in Last Remnant. Or more precisely learn to how to. If I just wanted to edit number of items I have I would have used one of the available trainers there already are.
Give a man a fish and you feed him for a day. Teach a man to fish and I'll propably be asking tomorrow how to bake a cake... Anyway.
I already know addresses for all items ingame and their order I just don't know what would be the most effient way to edit them.

List of all items in Last Remnant
http://spreadsheets.google.com/pub?key= ... utput=html

Is there any easy/fast way to add multiple addresses to MHS? Let's assume I wanted to make a tool that let's me choose individual item or item group and change all values accordingly. Sure I could add all those addresses manually 1 by 1 but that would be very tedious and time consuming since after all there's like 1705 different item (equipment excluded).

What tutorials and other sources of information would you suggest?
I have currently done 7 steps of CE tutorial and read most of MHS help file and 30% of Dr Paul Carter's PC Assembly Tutorial: http://www.drpaulcarter.com/pcasm/

There's a lot I don't yet understand or am overly confused with. For example what's the difference between
[010000000] and
010000000
The brackets do something, I'm just not sure what.
warbaque
I Have A Few Questions
 
Posts: 4
Joined: Thu Jun 26, 2008 2:43 am
Location: Finland

Postby L. Spiro » Mon Aug 10, 2009 1:27 pm

#1: Use scripts to add the values you want. The full MHS API is in the help file. Specifically refer to AddAddress().

#2: [] means “get the value at this address”.
010000000 = 010000000.
[010000000] = The value at address 010000000.


L. Spiro
Our songs remind you of songs you’ve never heard.
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan

Postby warbaque » Mon Aug 10, 2009 1:38 pm

Thanks. I'll look into it.
Btw, can I get both item name and addresses from spreadsheet from example?

LPSTOREDADDRESS AddAddress(
LPADDADDRESS lpaAddress)

I found this from MHS help file and I have to confess that I have completely no idea how to utilise that. Amount of scripting I've done is minimal. Some use of my calculators BASIC and some modding in Bethesda's games.

How would I add addresses for example
Cureleaf Herb 07B70004
Cureroot Herb 07B70004+C (07B70010)
Curebulb Herb 07B70004+2*C (07B7001C)

How could I then search for Cureroot from all off the addresses? Or select all herbs for modding value?
warbaque
I Have A Few Questions
 
Posts: 4
Joined: Thu Jun 26, 2008 2:43 am
Location: Finland

Postby L. Spiro » Mon Aug 10, 2009 4:02 pm

If you had to add addresses one-by-one it would defeat the purpose.

Use a loop:
Code: Select all
for ( DWORD I = 0; I < 1024; ++I ) {
   …
   ADDADDRESS aaAddress = { 0 };
   aaAddress.aAddress = 0x07B70004 + I * 0xC;
   aaAddress.iType = MT_ULONG;
   …
   AddAddress(  &aaAddress );
   …
}



Get the name of the item from RAM.
If you feel you can not, use an aggregated array:
Code: Select all
const char * pcItemNames[] = {
   "Cureleaf   Herb",
   "Cureroot   Herb",
   "Curebulb   Herb",
   …
};


for ( DWORD I = 0; I < 1024; ++I ) {
   …
   ADDADDRESS aaAddress = { 0 };
   aaAddress.aAddress = 0x07B70004 + I * 0xC;
   aaAddress.iType = MT_ULONG;
   aaAddress.pcDescr = pcItemNames[I];
   …
   AddAddress(  &aaAddress );
   …
}



L. Spiro
Our songs remind you of songs you’ve never heard.
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan

Postby warbaque » Mon Aug 10, 2009 4:37 pm

How many times is that looped. There's 1705 different items and addresses. Also the reason why I wouldn't even consider adding them one by one.

I get syntax error on line
for ( DWORD I = 0; I < 1024; ++I ) {


Can you recommend any good document or tutorial for grasping the basics.
warbaque
I Have A Few Questions
 
Posts: 4
Joined: Thu Jun 26, 2008 2:43 am
Location: Finland

Postby L. Spiro » Mon Aug 10, 2009 8:41 pm

There are plenty of tutorials in the help file.

It loops 1024 times. You said you started learning C already…

There are plenty of resources available all over Google for learning the basics of C and plenty of examples in the MHS help file for showing how you were supposed to use that snippet I provided. Hint: It needs to be inside a function.


L. Spiro
Our songs remind you of songs you’ve never heard.
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan

Postby warbaque » Tue Aug 11, 2009 5:01 am

L. Spiro wrote:There are plenty of tutorials in the help file.

I found only Tile 'Map Tutorial' from 'Misc->Tutorials' and using search I also found using 'Scripted Address' at 'Address Modifications' did you mean this?

It loops 1024 times. You said you started learning C already…

I wasn't 100% and wanted to clarify. I've read only bits and pieces from here and there. It was suprisingly hard to find even what for() standed for using google.

There are plenty of resources available all over Google for learning the basics of C and plenty of examples in the MHS help file for showing how you were supposed to use that snippet I provided.

That's ironically part of the problem. There's such an overwhelming amounts of information available I can't really figure out where should I start. It's like reading german mathbook and trying to solve those problems. Sure the equations, numbers and patterns look familiar, but I can't understand what do I need to calculate or what's the actual problem.

I'll just need to give it some time. It's not a skill I'll learn in one night, weekend or even a week.

[Hint: It needs to be inside a function.]

By "It" do you mean that snipped you provided?
I must be getting old. Learning new has never been so unfun.
warbaque
I Have A Few Questions
 
Posts: 4
Joined: Thu Jun 26, 2008 2:43 am
Location: Finland

Postby L. Spiro » Tue Aug 11, 2009 6:59 am

Search for Snippets and Examples.

You need to search for a beginner’s tutorial on C.
You also need to go to irc.freenode.net, ##C++, where you can ask questions and get real-time help. They will also know of C/C++ tutorials. I do not.


L. Spiro
Our songs remind you of songs you’ve never heard.
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan


Return to Help

Who is online

Users browsing this forum: No registered users and 0 guests