sannybuilder / dev

Sanny Builder Bug Tracker and Roadmap development
https://sannybuilder.com
49 stars 0 forks source link

allow keywords in expressions #243

Closed x87 closed 3 months ago

x87 commented 1 year ago
    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:

  1. the line must be an assignment expression
  2. keyword must follow the assignment operator (=)
  3. keyword must be a getter (have output as defined in SBL). read_memory is fine, but write_memory can only be used as a standalone command
x87 commented 1 year ago
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 1 year ago

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 1 year ago
x87 commented 3 months ago

getter syntax is implemented, nested commands moved to #283