allow keywords in expressions
x87 opened this issue · 4 comments
x87 commented
0A9F: 0@ = get_this_script_struct
0@ += 0x10
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
could be rewritten as
0@ = get_this_script_struct
0@ += 0x10
0@ = read_memory 0@ size 4 virtual_protect 0
Rules:
- the line must be an assignment expression
- keyword must follow the assignment operator (
=
) - keyword must be a getter (have output as defined in SBL).
read_memory
is fine, butwrite_memory
can only be used as a standalone command
x87 commented
0@ = read_memory ((get_this_script_struct) + 0x10) size 4 virtual_protect 0
where (expr)
essentially means: take the left-hand side variable and make a new command var = code
another example:
nlvar0 = WEAPONTYPE_SHOTGUN * SIZEOF_CWEAPONINFO
nlvar0 += aWeaponInfo
nlvar0 = Memory.Read(nlvar0, DWORD, false)
nlvar0 = Memory.Read(((WEAPONTYPE_SHOTGUN * SIZEOF_CWEAPONINFO) + aWeaponInfo), DWORD, false)
MiranDMC commented
I use form read_memory 0@ = from 0@ size 4 virtual_protect 0
Great idea, but the Ctrl+Alt+2 documentation have to propose new syntax too, same with code generated during decompilation.
x87 commented
- support multiple returned values
$x, $y, $z = get_char_coordinates $char