 |
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
oddgamer Advanced Cheater
Reputation: 0
Joined: 19 Jan 2013 Posts: 60
|
Posted: Fri Feb 01, 2019 3:17 pm Post subject: Copy/Paste Groups? |
|
|
So I've got a game where I'm setting myself up to adjust an absolute ton of info, and thus I've put it into groups to make it easier to find what I want to change at this point.
A LOT of those groups, though, are basically the same thing over and over, such as putting all the information for a character under a header and then all of the info for another char under a different group. In the worst cases there were dozens of groups (again, to make it easier).
As such, I wanted to copy and paste my groups. So I collapsed them all to make it easier to copy and paste multiple groups at the same time, pressed ctrl+c, then crtl+v, and it asked for an offset and changes. Put those in, told it to go ahead, opened the newly created collapsed groups... and no changes in address!
Do I have a setting somewhere that causes this, or is this something in the program? If it's in the program... may I suggest it be altered? Either to do the updates generally or, if there's a reason one might want to NOT change the addresses within (can't think of one myself right now, but hey), then have the program set up to HAVE a setting that decides what to do with sub-items in those cases?
|
|
Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Fri Feb 01, 2019 11:21 pm Post subject: |
|
|
Make the child memory records have addresses relative to the parent's record by specifying them as "+X", where X is some hexadecimal string.
e.g. a memory record with address "+10" placed under another memory record with effective address "07918AEC" will have an effective address of "07918AFC".
Lua code to automate this (make a backup before you execute this):
Code: | local i = 0
while i < AddressList.Count do
local memrec = AddressList[i]
local parent = memrec.Parent
if parent and memrec.Address:find'^%x+$' and memrec.OffsetCount == 0 then
local offs = memrec.CurrentAddress - parent.CurrentAddress
if offs < 0x10000 and offs >= 0 then
memrec.Address = ('+%X'):format(offs)
end
end
i = i + 1
end |
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
oddgamer Advanced Cheater
Reputation: 0
Joined: 19 Jan 2013 Posts: 60
|
Posted: Sat Feb 02, 2019 1:42 am Post subject: |
|
|
ParkourPenguin wrote: | Make the child memory records have addresses relative to the parent's record by specifying them as "+X", where X is some hexadecimal string. |
That works for some things, but not all of them, and doesn't get to my question.
I take it, from this, that this is a part of the program, in which case I would suggest the improvement I mentioned. While it makes some sense for certain things to be subsets of other things that have actual values, this isn't always the case. For instance one of my groups is a 'direction' group that specifies the bits that determine which directions a piece can attack in. I wanted that to be collapsible for two reasons, first to make it smaller when dealing with the records, and second for the ability to just set all of them at once very easily. While I COULD make all the others a 'subset' of 'up', that doesn't seem to make much sense at all.
Moreover, it seems to me that if you ARE copy/pasting a group set like that it really SHOULD go through all the parts of it and increase any addresses that exist by the amount selected. As I mentioned, I can't see a reason for this to NOT be the behavior of a copy/paste of that sort.
|
|
Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Sat Feb 02, 2019 11:11 am Post subject: |
|
|
If the address adjust in copy/pasting memory records affected children, it would break the already existing feature I just mentioned.
Setting child memory records' addresses relative to their parent allows you to change all of them easily by simply changing the parent memory record. This is how I'd set it up based on what you described. If you don't like that, use Lua to automate it however you want.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
oddgamer Advanced Cheater
Reputation: 0
Joined: 19 Jan 2013 Posts: 60
|
Posted: Sat Feb 02, 2019 5:42 pm Post subject: |
|
|
Can a header have an address, then? I was mostly thinking it should apply just to sub-fields of headers, not of ones that already have an address. As it stands, the program seems to treat headers as if they were normal address entries just like any other.
|
|
Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4702
|
Posted: Sat Feb 02, 2019 7:43 pm Post subject: |
|
|
By default, it's 0. Lua can change it:
Code: | AddressList.getMemoryRecordByDescription'Group 1'.Address = '03E12A04' |
Otherwise, just use a normal memory record and put the type as string or AoB with size 0. Not as aesthetically pleasing but easier to change.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|