Page 1 of 1

Changing values on an existing script (MGQ Paradox)

Posted: Fri Apr 10, 2020 4:09 pm
by Almorra
I have this script for MGQ Paradox but the value for the hp is set to 60 and I would like it to be set to a higher value (1000 for example).
Do you have any idea on what I should change to make it work?
Tanks for reading me.

Code:

Code: Select all

{ Game   : MonsterGirl Quest Paradox
  Version: 1.21.00
  Date   : 2017-01-27
  Author : Ahsan Iqbal (3xd_tango)

  This script Inf. health,mana & sp
}

[ENABLE]

aobscanmodule(INJECT,RGSS301.dll,89 2C 88 5D 59 C3 F7 06 00 20 00 00)
alloc(newmem,$1000)

label(code)
label(return)
label(one)
label(two)
label(three)
label(four)
label(five)
label(player)
globalalloc(playerbas,4)

newmem:
cmp [eax+04],#1
jne code
je one

code:
  mov [eax+ecx*4],ebp
  pop ebp
  pop ecx
  jmp return

player:
  mov [eax+ecx*4],ebp
  mov [eax+34],(int)121
  mov [eax+30],(int)61
  mov [eax+2C],(int)21
 // mov [playerbas],eax
  pop ebp
  pop ecx
  jmp return

one:
cmp [eax+24],#4
jne code
je two

two:
cmp [eax+18],#0
jne code
je three

three:
cmp [eax+1C],#1
jne code
je four

four:
cmp [eax+20],#0
jne code
je five

five:
cmp [eax+98],#1
jne code
je six

six:
cmp [eax+6C],#1
jne code
je player

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 89 2C 88 5D 59

unregistersymbol(INJECT)
dealloc(newmem)

Re: Changing values on an existing script (MGQ Paradox)

Posted: Fri Apr 10, 2020 5:32 pm
by notpikachu
Judging by the RGSS301.dll, probably RPG Maker games. Version below MV usually have the formula of value*2+1.
Probably this line I guess "mov [eax+34],(int)121" into "mov [eax+34],(int)2001" if for 1000 value. I don't have the game, but
you probably need to figure out the max hp too + if the script work flawlessly.

Re: Changing values on an existing script (MGQ Paradox)

Posted: Fri Apr 10, 2020 8:50 pm
by miraikolus
I do wonder what all those labels and jumps are for (you could rename "one" 3x to .. whatever "compares", remove label(two-five?) and (two-six:), remove "je two" - "je six" + "jne code" @ newmem and it would work just fine without bloats ... I mean "je two", next line: "two:" .... just add some "jmp short @f" + "@@:" somehwere).

Btt. What notpikachu said, but about max hp, you could uncomment line "// mov [playerbas],eax" (remove //), in CE click on "Add Address Manually" click on "Pointer", in bottom field enter "playerbas" and offset field (between < >) ... you need to experiment but you could start with 38, if it seems feasible for max hp, if not always add 4 offset (hex so 0/4/8/C)

EDIT: Forgot btw. where would be label(six), does this work as it is?

Image

Re: Changing values on an existing script (MGQ Paradox)

Posted: Sat Apr 11, 2020 4:18 pm
by Almorra
notpikachu wrote:
Fri Apr 10, 2020 5:32 pm
Judging by the RGSS301.dll, probably RPG Maker games. Version below MV usually have the formula of value*2+1.
Probably this line I guess "mov [eax+34],(int)121" into "mov [eax+34],(int)2001" if for 1000 value. I don't have the game, but
you probably need to figure out the max hp too + if the script work flawlessly.
Thanks, it worked! I don't know why but one of the character didn't get the change until he died once which is quite weird but in the end it's ok.
miraikolus wrote:
Fri Apr 10, 2020 8:50 pm
I do wonder what all those labels and jumps are for (you could rename "one" 3x to .. whatever "compares", remove label(two-five?) and (two-six:), remove "je two" - "je six" + "jne code" @ newmem and it would work just fine without bloats ... I mean "je two", next line: "two:" .... just add some "jmp short @f" + "@@:" somehwere).

Btt. What notpikachu said, but about max hp, you could uncomment line "// mov [playerbas],eax" (remove //), in CE click on "Add Address Manually" click on "Pointer", in bottom field enter "playerbas" and offset field (between < >) ... you need to experiment but you could start with 38, if it seems feasible for max hp, if not always add 4 offset (hex so 0/4/8/C)

EDIT: Forgot btw. where would be label(six), does this work as it is?

Image
I'm not good enough with asm to know how all this works lol and I'm not really sure how to proceed but I'll still check it out, thanks ^^