PyMS v1.2.1

Help - Resources - Discussion
User avatar
poiuy_qwert
Posts: 548
Joined: Sun Jan 13, 2008 2:14 am

Postby poiuy_qwert » Thu Jul 17, 2008 11:17 pm

I've started working on an iscript editor for PyMS. I have finished loading files and pretty much finished decompiling files, just need to test it more and have extra info printed in comments like IceCC. Here is an example decompile:

Code: Select all

# ----------------------------------------------------------------------------- #
.headerstart
IsId           18
Type           26
Init           HydraliskInit
Death          HydraliskDeath
GndAttkInit      HydraliskGndAttkInit
AirAttkInit      HydraliskGndAttkInit
Unused1         [NONE]
GndAttkRpt      HydraliskGndAttkRpt
AirAttkRpt      HydraliskGndAttkRpt
CastSpell       [NONE]
GndAttkToIdle    HydraliskGndAttkToIdle
AirAttkToIdle    HydraliskGndAttkToIdle
Unused2         [NONE]
Walking         HydraliskWalking
WalkingToIdle    HydraliskWalkingToIdle
SpecialState1    [NONE]
SpecialState2    HydraliskSpecialState2
AlmostBuilt      [NONE]
Built          [NONE]
Landing         [NONE]
LiftOff         [NONE]
IsWorking       [NONE]
WorkingToIdle    [NONE]
WarpIn         [NONE]
Unused3         [NONE]
InitTurret      [NONE]
Disable         [NONE]
Burrow         HydraliskBurrow
UnBurrow        HydraliskUnBurrow
Enable         [NONE]
.headerend
# ----------------------------------------------------------------------------- #

HydraliskInit:
   imgul          30 0 0
HydraliskWalkingToIdle:
   playfram        85
HydraliskLocal0:
   waitrand        63 75
   randcondjmp      25 HydraliskLocal1
   randcondjmp      128 HydraliskLocal2
   goto           HydraliskLocal0

HydraliskLocal1:
   playfram        0
   wait           1
   playfram        17
   wait           1
   playfram        34
   wait           1
   playfram        51
   wait           25
   playfram        34
   wait           1
   playfram        17
   wait           1
   playfram        0
   wait           1
   goto           HydraliskWalkingToIdle

HydraliskLocal2:
   randcondjmp      128 HydraliskLocal3
   playfram        102
   wait           1
   turnccwise      1
   playfram        119
   wait           1
   turnccwise      1
   playfram        136
   wait           1
   turnccwise      1
   playfram        153
   wait           1
   turnccwise      1
   playfram        170
   wait           1
   turnccwise      1
   playfram        187
   wait           1
   turnccwise      1
   goto           HydraliskWalkingToIdle

HydraliskLocal3:
   playfram        102
   wait           1
   turncwise       1
   playfram        119
   wait           1
   turncwise       1
   playfram        136
   wait           1
   turncwise       1
   playfram        153
   wait           1
   turncwise       1
   playfram        170
   wait           1
   turncwise       1
   playfram        187
   wait           1
   turncwise       1
   goto           HydraliskWalkingToIdle

HydraliskDeath:
   playsnd         867
   setfldirect      0
   playfram        204
   wait           2
   playfram        205
   wait           2
   playfram        206
   wait           2
   playfram        207
   wait           2
   playfram        208
   wait           2
   playfram        209
   wait           2
   playfram        210
   wait           2
   playfram        211
   wait           2
   lowsprul        147 0 0
   wait           1
   end

HydraliskGndAttkInit:
   playfram        0
   wait           1
   nobrkcodestart   
   playfram        17
   wait           1
   playfram        34
   wait           1
   playfram        51
   wait           1
HydraliskGndAttkRpt:
   wait           1
   playfram        68
   playsnd         64
   sproluselo      332 9728
   wait           1
   playfram        51
   wait           1
   nobrkcodeend    
   gotorepeatattk   
   ignorerest      
HydraliskGndAttkToIdle:
   playfram        34
   wait           1
   playfram        17
   wait           1
   playfram        0
   wait           1
   goto           HydraliskWalkingToIdle

HydraliskWalking:
   move           2
   wait           1
   playfram        102
   move           2
   wait           1
   playfram        119
   move           2
   wait           1
   playfram        136
   move           6
   wait           1
   playfram        153
   move           6
   wait           1
   playfram        170
   move           6
   wait           1
   playfram        187
   move           2
   wait           1
   playfram        85
   goto           HydraliskWalking

HydraliskSpecialState2:
   playfram        280
   goto           HydraliskLocal4

HydraliskLocal4:
   wait           125
   goto           HydraliskLocal4

HydraliskBurrow:
   imgol          423 0 0
   playfram        212
   wait           1
   playfram        229
   wait           1
   playfram        246
   wait           1
   playfram        263
   wait           1
   playfram        280
   wait           1
   sigorder        4
   goto           HydraliskLocal4

HydraliskUnBurrow:
   waitrand        1 5
   imgul          423 0 0
   playfram        263
   wait           1
   playfram        246
   wait           1
   playfram        229
   wait           1
   playfram        212
   wait           1
   sigorder        4
   goto           HydraliskWalkingToIdle


(the commands and header labels should be aligned but the site doesn't like the tabs)
a_of_s_t
Posts: 51
Joined: Sun Mar 23, 2008 5:39 am

Postby a_of_s_t » Fri Jul 18, 2008 5:23 pm

Yay!

BTW, would it be possible to create variables in pyAI? Like:

Code: Select all

int i = 0

i++


Becuase I really hate keeping track of how many units I want the computer to make.
User avatar
poiuy_qwert
Posts: 548
Joined: Sun Jan 13, 2008 2:14 am

Postby poiuy_qwert » Fri Jul 18, 2008 6:14 pm

No. There are many reasons, but the two main reasons are:
1) PyAI doesn't follow the flow of your code, it doesn't actually follow jumps, so for example if you did:

Code: Select all

byte i = 0
--test--
wait(i)
i++
goto(test)

It is the exact same thing as writing:

Code: Select all

--test--
wait(0)
byte i = 1
goto(test)


2) There is no way to keep those things through compiles, and no way to place variables that change into the code on decompile.

Sorry, it will not happen.

Now an update on PyIScript (got any ideas for a better name?), decompiles are pretty much indistinguishable from IceCC decompiles:

Code: Select all

# ----------------------------------------------------------------------------- #
# This header is used by images.dat entries:
# 029 Hydralisk (zerghydra.grp)
.headerstart
IsId            18
Type            26
Init            HydraliskInit
Death           HydraliskDeath
GndAttkInit      HydraliskGndAttkInit
AirAttkInit      HydraliskGndAttkInit
Unused1         [NONE]
GndAttkRpt       HydraliskGndAttkRpt
AirAttkRpt       HydraliskGndAttkRpt
CastSpell        [NONE]
GndAttkToIdle     HydraliskGndAttkToIdle
AirAttkToIdle     HydraliskGndAttkToIdle
Unused2         [NONE]
Walking         HydraliskWalking
WalkingToIdle     HydraliskWalkingToIdle
SpecialState1     [NONE]
SpecialState2     HydraliskSpecialState2
AlmostBuilt      [NONE]
Built           [NONE]
Landing         [NONE]
LiftOff         [NONE]
IsWorking        [NONE]
WorkingToIdle     [NONE]
WarpIn          [NONE]
Unused3         [NONE]
StarEditInit      [NONE]
Disable         [NONE]
Burrow          HydraliskBurrow
UnBurrow         HydraliskUnBurrow
Enable          [NONE]
.headerend
# ----------------------------------------------------------------------------- #

HydraliskInit:
   imgul           30 0 0    # Hydralisk Shadow (zergzhyShad.grp)
HydraliskWalkingToIdle:
   playfram         0x55    # Frame set 5
HydraliskLocal00:
   waitrand         63 75
   randcondjmp      25 HydraliskLocal01
   randcondjmp      128 HydraliskLocal02
   goto            HydraliskLocal00

HydraliskLocal01:
   playfram         0x00    # Frame set 0
   wait            1
   playfram         0x11    # Frame set 1
   wait            1
   playfram         0x22    # Frame set 2
   wait            1
   playfram         0x33    # Frame set 3
   wait            25
   playfram         0x22    # Frame set 2
   wait            1
   playfram         0x11    # Frame set 1
   wait            1
   playfram         0x00    # Frame set 0
   wait            1
   goto            HydraliskWalkingToIdle

HydraliskLocal02:
   randcondjmp      128 HydraliskLocal03
   playfram         0x66    # Frame set 6
   wait            1
   turnccwise       1
   playfram         0x77    # Frame set 7
   wait            1
   turnccwise       1
   playfram         0x88    # Frame set 8
   wait            1
   turnccwise       1
   playfram         0x99    # Frame set 9
   wait            1
   turnccwise       1
   playfram         0xaa    # Frame set 10
   wait            1
   turnccwise       1
   playfram         0xbb    # Frame set 11
   wait            1
   turnccwise       1
   goto            HydraliskWalkingToIdle

HydraliskLocal03:
   playfram         0x66    # Frame set 6
   wait            1
   turncwise        1
   playfram         0x77    # Frame set 7
   wait            1
   turncwise        1
   playfram         0x88    # Frame set 8
   wait            1
   turncwise        1
   playfram         0x99    # Frame set 9
   wait            1
   turncwise        1
   playfram         0xaa    # Frame set 10
   wait            1
   turncwise        1
   playfram         0xbb    # Frame set 11
   wait            1
   turncwise        1
   goto            HydraliskWalkingToIdle

HydraliskDeath:
   playsnd         867    # ZergHydraZHyDth00.WAV
   setfldirect      0
   playfram         0xcc    # Frame set 12
   wait            2
   playfram         0xcd    # Frame set 12
   wait            2
   playfram         0xce    # Frame set 12
   wait            2
   playfram         0xcf    # Frame set 12
   wait            2
   playfram         0xd0    # Frame set 12
   wait            2
   playfram         0xd1    # Frame set 12
   wait            2
   playfram         0xd2    # Frame set 12
   wait            2
   playfram         0xd3    # Frame set 12
   wait            2
   lowsprul         147 0 0    # Hydralisk Remnants (zergzhyDeath.grp)
   wait            1
   end

HydraliskGndAttkInit:
   playfram         0x00    # Frame set 0
   wait            1
   nobrkcodestart   
   playfram         0x11    # Frame set 1
   wait            1
   playfram         0x22    # Frame set 2
   wait            1
   playfram         0x33    # Frame set 3
   wait            1
HydraliskGndAttkRpt:
   wait            1
   playfram         0x44    # Frame set 4
   playsnd         64    # BulletSpoogHit.wav
   sproluselo       332 0    # Needle Spines (thingyspooge.grp)
   attack         
   wait            1
   playfram         0x33    # Frame set 3
   wait            1
   nobrkcodeend    
   gotorepeatattk   
   ignorerest      
HydraliskGndAttkToIdle:
   playfram         0x22    # Frame set 2
   wait            1
   playfram         0x11    # Frame set 1
   wait            1
   playfram         0x00    # Frame set 0
   wait            1
   goto            HydraliskWalkingToIdle

HydraliskWalking:
   move            2
   wait            1
   playfram         0x66    # Frame set 6
   move            2
   wait            1
   playfram         0x77    # Frame set 7
   move            2
   wait            1
   playfram         0x88    # Frame set 8
   move            6
   wait            1
   playfram         0x99    # Frame set 9
   move            6
   wait            1
   playfram         0xaa    # Frame set 10
   move            6
   wait            1
   playfram         0xbb    # Frame set 11
   move            2
   wait            1
   playfram         0x55    # Frame set 5
   goto            HydraliskWalking

HydraliskSpecialState2:
   playfram         0x118    # Frame set 16
   goto            HydraliskLocal04

HydraliskLocal04:
   wait            125
   goto            HydraliskLocal04

HydraliskBurrow:
   imgol           423 0 0    # Burrowing Dust (thingybDust.grp)
   playfram         0xd4    # Frame set 12
   wait            1
   playfram         0xe5    # Frame set 13
   wait            1
   playfram         0xf6    # Frame set 14
   wait            1
   playfram         0x107    # Frame set 15
   wait            1
   playfram         0x118    # Frame set 16
   wait            1
   sigorder         4
   goto            HydraliskLocal04

HydraliskUnBurrow:
   waitrand         1 5
   imgul           423 0 0    # Burrowing Dust (thingybDust.grp)
   playfram         0x107    # Frame set 15
   wait            1
   playfram         0xf6    # Frame set 14
   wait            1
   playfram         0xe5    # Frame set 13
   wait            1
   playfram         0xd4    # Frame set 12
   wait            1
   sigorder         4
   goto            HydraliskWalkingToIdle
a_of_s_t
Posts: 51
Joined: Sun Mar 23, 2008 5:39 am

Postby a_of_s_t » Fri Jul 18, 2008 9:49 pm

I think the way you propose it is perfectly fine with me. I just wanted to have variable use :P
User avatar
BroodKiller
Posts: 25
Joined: Sat May 19, 2007 4:34 pm

Postby BroodKiller » Sat Jul 19, 2008 12:31 pm

[quote name='poiuy_qwert' post='4682' date='Jul 18 2008, 10:14 AM']Now an update on PyIScript (got any ideas for a better name?)[/quote]
Why not just PyScript? Alternatively, PyIsc or PyACE (animation code editor)?

Oh, and great work on that modding suite :)
User avatar
poiuy_qwert
Posts: 548
Joined: Sun Jan 13, 2008 2:14 am

Postby poiuy_qwert » Sat Jul 19, 2008 5:26 pm

Yeah I was thinking of PyScript but I was also thinking the other programs names are easier to tell what file you are editing so I thought PyIScript. Two people now have suggested PyScript so I might go with that. I could also use PyICE (even though its more like IceCC then ICE, its meant to just stand for IScript Code Editor).

Thanks Broodkiller :)
a_of_s_t
Posts: 51
Joined: Sun Mar 23, 2008 5:39 am

Postby a_of_s_t » Sat Jul 19, 2008 9:57 pm

So, I'm using PyAI and guess what? Its freaking awesome, duh. However, for some ODD reason, it gives me an error when I try to view a custom script in your aiscript editor. I'll get the error later, but it says something about "out of bounds."

Info about the aiscript it using about... 5 debug commands, the comp_rescue() command, and a stop() command at the end (instead of my usual "kill()" command, and the one script I'm trying to view is about 10 kb.
User avatar
poiuy_qwert
Posts: 548
Joined: Sun Jan 13, 2008 2:14 am

Postby poiuy_qwert » Sun Jul 20, 2008 12:17 am

Ok. Yeah i'll need the error and the script in question if possible.
a_of_s_t
Posts: 51
Joined: Sun Mar 23, 2008 5:39 am

Postby a_of_s_t » Sun Jul 20, 2008 4:47 am

[quote name='poiuy_qwert' post='4699' date='Jul 19 2008, 04:17 PM']Ok. Yeah i'll need the error and the script in question if possible.[/quote]
It works now... I guess it was just that one time. Strange.
User avatar
poiuy_qwert
Posts: 548
Joined: Sun Jan 13, 2008 2:14 am

Postby poiuy_qwert » Sun Jul 20, 2008 4:58 pm

I think i'm going to include a "Set PyMS program as default editor" option for Windows users (maybe mac users too if I find out how to do it). I just testing it on PyAI and it works nice, though now i'll need to get better icons now rather then later :P

Return to “PyMS (poiuy_qwert's complete modding suite)”

Who is online

Users browsing this forum: No registered users and 1 guest