New GTA2 Script Compiler

Anything to do with GTA1/GTA2 modding (tools, scripts and more).
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Again, lot's of commands were added.
Also the commands that do not require any parameters, the parentheses "()" are now optional.
You don't have to type them out. And i have plans to simplify some other things / commands that currently look pretty ugly or require lot's of parentheses.

There are some funny commands in GTA2, like MAKE_ALL_CHARS_MUGGERS etc.
I added them also, they work fine.
Always wear safety glasses while programming.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

B-$hep wrote:Again, lot's of commands were added.
Good job.
B-$hep wrote:Also the commands that do not require any parameters, the parentheses "()" are now optional.
I think you should not do these kind of changes yet. I think its best if you make it .mis compatible at first, then we can discuss about the new .mis2 format, and you can do that (i dont want to update my editor every week when you add some new tricks in the format, and then later to find out there are 40 different .mis files which all have own syntax and none of them work in the newest compiler/editor).

Dont touch the syntax of .mis yet. The new .mis2 syntax must be defined beforehand, not "on the fly".
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Actually you are correct about that.

But adding support for () is just matter of "['(' ')']"
Always wear safety glasses while programming.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Ok, the () is always needed now, as you said. Syntax is not changed.
Again little info on what i did in the meantime.

I fixed lot's of small stupid bugs that i have made when coding this in late sleepy nights.
Added support for CREATE_CAR also.
And thanks to this i figured out what is the car.varname. Variable index!
Anyway, CREATE_CAR is working very well now and is binary compatible with miss2.

Simple script, with this one i tested this thing. I know it contains "random junk" but this all compiles fine with new compiler. Of course not all commands are in this script.
Later one day i will post the most complex script it is able to compile at this time.

[mis]player_ped p1 = (70.0, 197.0, 2.0) 25 0

DECLARE_POLICELEVEL (3)

car_data car07
car_data car08
car_data car09
car_data car10
car_data car11
car_data car12
car_data car13
car_data car14
car_data car15
car_data car16
car_data car17
car_data car18
car_data car19
car_data car20
car_data car21
car_data car22
car_data car23
car_data car24
car_data car25
car_data car26
car_data car27
car_data car28
car_data car29
car_data car30
car_data tank01
car_data tank02
car_data tank03
car_data tank04
car_data tank05
car_data tank06
car_data finaltank
car_data nextcar1
//car_data nextcar2
CAR_DATA BlackLimo = ( 71.5 , 198.5,2.0 ) 2 0 LIMO
levelstart

nextcar1 = CREATE_CAR (71.0, 198.0, 2.0) 0 0 alfa end

levelend[/mis]
Always wear safety glasses while programming.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

B-$hep wrote:And thanks to this i figured out what is the car.varname. Variable index!
Didn't i already say that?
T.M. wrote:Varname purpose is to store the variable identifier, aka pointer, so we can refer to it later in the code.
B-$hep wrote:Anyway, CREATE_CAR is working very well now and is binary compatible with miss2.
Nice.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Maybe you said, sorry, i didn't notice.

Anyways, im currently messing with WHILE_EXEC & ENDWHILE.
Seems pretty tricky but it's fun.

What's most important, i found couple of bugs or tweaks needed in current code thanks to this command and i found that i need to store some more stuff than i currently do.

Working on it!
Always wear safety glasses while programming.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Dunno, if anybody works on his own compiler or not (T.M ?), but anyway, i decided to work on this thing again.
Fixed lots of bugs yesterday, dunno what i was thinking when i coded some things.
Just don't code anything when you are sleepy.

I resolved also some conflicts between specific commands like this:

Code: Select all

car1 = create_car ...
thr1 = create_thread
The commands that start with variable name and have equal sign after them.
Compiler generated some funny errors because of conflict but now its working like it should.

It's very fun to do!
Continuing today!
Always wear safety glasses while programming.
BenMillard
Immortal
Posts: 889
Joined: 16 May 2009, 06:14
GH nick: BenMillard
Location: London, UK
Contact:

Re: New GTA2 Script Compiler Preview v0.1

Post by BenMillard »

Glad to see you still have enthusiasm for working with GTA2.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

B-$hep wrote:Dunno, if anybody works on his own compiler or not (T.M ?), but anyway, i decided to work on this thing again.
I havent. But few months ago i tried to make an editor of some kind to display and edit the raw SCR data, with proper variable names taken from my decompiler source code, just to help out reading the SCR file changes when compiling with DMA compiler. I ran into some problems which pissed me off enough so i stopped :D Maybe i start again some day.

Heres screenshot from one block of data in the HTML page it generates:
SCReditor_screenie.png
SCReditor_screenie.png (4.82 KiB) Viewed 40848 times
The numbers are just garbage there. I think i should print it like this instead: "[cmd_this] [type] [cmd_next] [return_value] - [unk2] [unk3] [rect] [speed] [padding]", and when clicking one of those, it would allow editing the value in it, or display the structure, like rect, which has 2 structures inside.

I also had to make a list of which function uses which struct for this. I also wrote down which of the variables are unused, because i wanted to make a program to write hidden information inside the SCR file without affecting GTA2 at all. However, im not perfectly sure about the unusedness of the variables; i must test every each of them one by one to see if GTA2 changes behaviour when i add garbage to them, because im afraid GTA2 actually uses 32bit variables internally, so if i write garbage to the 2 bytes of 4 byte variable, it wont work. Although, when i made the decompiler, i did figure out the variables were 16bit, but im not sure if GTA2 reads them as 16bits variables; compiler does store them with 16bits only (for some vars its 32bits).
[mis]
* = all the values in the struct can be set to null.
? = not sure if correct struct, must be tested.
SCRCMD_GOTO SCR_TWO_PARAMS
SCRCMD_IF_JUMP SCR_IF_JUMP
SCRCMD_NOT SCR_ZERO_PARAMS
SCRCMD_PLAYER_PED SCR_PLAYER_PED
SCRCMD_SOUND_DECSET SCR_SOUND_DECSET
SCRCMD_CREATE_SOUND SCR_SOUND_DECSET
SCRCMD_SOUND SCR_SOUND_DECSET*
SCRCMD_CONVEYOR_DEC SCR_CONVEYOR*
SCRCMD_CONVEYOR_DECSET1 SCR_CONVEYOR
SCRCMD_CONVEYOR_DECSET2 SCR_CONVEYOR
SCRCMD_OBJ_DEC SCR_OBJ_DATA*
SCRCMD_OBJ_DECSET_2D SCR_OBJ_DATA
SCRCMD_OBJ_DECSET_3D SCR_OBJ_DATA
SCRCMD_CREATE_OBJ_2D_STR SCR_OBJ_DATA
SCRCMD_CREATE_OBJ_3D_INT SCR_OBJ_DATA
SCRCMD_OBJ_DECSET_2D_INT SCR_OBJ_DATA_SHOP
SCRCMD_OBJ_DECSET_3D_INT SCR_OBJ_DATA_SHOP
SCRCMD_OBJ_DECSET_2D_STR SCR_OBJ_DATA_SHOP
SCRCMD_OBJ_DECSET_3D_STR SCR_OBJ_DATA_SHOP
SCRCMD_CREATE_OBJ_3D SCR_OBJ_DATA_SHOP
SCRCMD_CREATE_OBJ_3D_STR SCR_OBJ_DATA_SHOP
SCRCMD_CREATE_OBJ_2D_INT SCR_OBJ_DATA_SHOP
SCRCMD_CREATE_OBJ_2D SCR_OBJ_DATA_SHOP
SCRCMD_GENERATOR_DEC SCR_GENERATOR*
SCRCMD_GENERATOR_DECSET1 SCR_GENERATOR
SCRCMD_GENERATOR_DECSET2 SCR_GENERATOR
SCRCMD_GENERATOR_DECSET3 SCR_GENERATOR
SCRCMD_GENERATOR_DECSET4 SCR_GENERATOR
SCRCMD_CAR_DEC SCR_CAR_DATA_DEC*
SCRCMD_CAR_DECSET_2D SCR_CAR_DATA_DEC
SCRCMD_CAR_DECSET_3D SCR_CAR_DATA_DEC
SCRCMD_CAR_DECSET_2D_STR SCR_CAR_DATA_DEC
SCRCMD_CAR_DECSET_3D_STR SCR_CAR_DATA_DEC
SCRCMD_PARKED_CAR_DECSET_2D_STR SCR_CAR_DATA_DEC
SCRCMD_PARKED_CAR_DECSET_3D_STR SCR_CAR_DATA_DEC
SCRCMD_PARKED_CAR_DECSET_2D SCR_CAR_DATA_DEC
SCRCMD_PARKED_CAR_DECSET_3D SCR_CAR_DATA_DEC
SCRCMD_CREATE_CAR_2D SCR_CAR_DATA_DEC
SCRCMD_CREATE_CAR_3D SCR_CAR_DATA_DEC
SCRCMD_CREATE_CAR_2D_STR SCR_CAR_DATA_DEC
SCRCMD_CREATE_CAR_3D_STR SCR_CAR_DATA_DEC
SCRCMD_CREATE_GANG_CAR1 SCR_CAR_DATA_DEC
SCRCMD_CREATE_GANG_CAR2 SCR_CAR_DATA_DEC
SCRCMD_CREATE_GANG_CAR3 SCR_CAR_DATA_DEC
SCRCMD_CREATE_GANG_CAR4 SCR_CAR_DATA_DEC
SCRCMD_SET_CAR_GRAPHIC SCR_SET_CAR_GRAPHIC
SCRCMD_CHAR_DEC SCR_CHAR_DEC*
SCRCMD_CHAR_DECSET_2D SCR_CHAR_DATA_DEC
SCRCMD_CHAR_DECSET_3D SCR_CHAR_DATA_DEC
SCRCMD_CREATE_CHAR_2D SCR_CHAR_DATA_DEC
SCRCMD_CREATE_CHAR_3D SCR_CHAR_DATA_DEC
SCRCMD_PED_GRAPHIC SCR_SET_CHAR_GRAPHIC_TYPE
SCRCMD_ADD_PATROL_POINT SCR_ADD_PATROL_POINT
SCRCMD_DOOR_DECLARE_S1 SCR_DOOR_DATA_DEC
SCRCMD_DOOR_DECLARE_S2 SCR_DOOR_DATA_DEC
SCRCMD_DOOR_DECLARE_S3 SCR_DOOR_DATA_DEC
SCRCMD_DOOR_DECLARE_D1 SCR_DOOR_DATA_DEC
SCRCMD_DOOR_DECLARE_D2 SCR_DOOR_DATA_DEC
SCRCMD_DOOR_DECLARE_D3 SCR_DOOR_DATA_DEC
SCRCMD_SET_STATION SCR_SET_STATION
SCRCMD_SET_EMPTY_STATION SCR_SET_STATION
SCRCMD_RADIOSTATION_DEC SCR_RADIOSTATION_DEC
SCRCMD_SET_GANG_INFO1 SCR_SET_GANG_INFO
SCRCMD_MAP_ZONE_SET SCR_MAP_ZONE_SET
SCRCMD_MAP_ZONE1 SCR_ZERO_PARAMS
SCRCMD_CRANE_TARGET_DEC SCR_CRANE_TARGET_DEC
SCRCMD_CRANE2TARGET_DEC SCR_CRANE2TARGET_DEC
SCRCMD_CRANE_BASIC_DEC SCR_CRANE_BASIC_DEC
SCRCMD_CRANE_DEC SCR_CRANE_DEC*
SCRCMD_DO_CRANE_POWERUP SCR_DECLARE_CRANE_POWERUP
SCRCMD_CRUSHER_BASIC SCR_CRUSHER_BASIC
SCRCMD_DESTRUCTOR_DECSET1 SCR_DESTRUCTOR
SCRCMD_DESTRUCTOR_DECSET2 SCR_DESTRUCTOR
SCRCMD_DESTRUCTOR_DEC SCR_DESTRUCTOR*
SCRCMD_LOWER_LEVEL SCR_LOWER_LEVEL
SCRCMD_EXPLODE_BUILDING SCR_EXPLODE_WALL
SCRCMD_EXPLODE SCR_EXPLODE
SCRCMD_EXPLODE_SMALL2 SCR_EXPLODE
SCRCMD_EXPLODE_NO_RING2 SCR_EXPLODE
SCRCMD_EXPLODE_LARGE2 SCR_EXPLODE
SCRCMD_CHANGE_BLOCK_LID SCR_CHANGE_BLOCK_LID
SCRCMD_CHANGE_BLOCK_SIDE SCR_CHANGE_BLOCK_SIDE
SCRCMD_CHANGE_BLOCK_TYPE SCR_CHANGE_BLOCK_TYPE
SCRCMD_REMOVE_BLOCK SCR_REMOVE_BLOCK
SCRCMD_ADD_NEW_BLOCK SCR_ADD_NEW_BLOCK
SCRCMD_CREATE_LIGHT2 SCR_LIGHT
SCRCMD_LIGHT_DECSET2 SCR_LIGHT
SCRCMD_LIGHT_DEC SCR_LIGHT
SCRCMD_CREATE_LIGHT1 SCR_LIGHT
SCRCMD_LIGHT_DECSET1 SCR_TWO_PARAMS*
SCRCMD_COUNTER_SAVE SCR_TWO_PARAMS*?
SCRCMD_COUNTER_SET_SAVE SCR_TWO_PARAMS
SCRCMD_DECLARE_CARLIST SCR_DECLARE_POWERUP_CARLIST
SCRCMD_SET_AMBIENT SCR_SET_AMBIENT
SCRCMD_THREAD_DECLARE1 SCR_THREAD_DECLARE1*
SCRCMD_THREAD_ID SCR_THREAD_DECLARE1*
SCRCMD_POINT_ARROW_AT SCR_FOUR_PARAMS
SCRCMD_POINT_ARROW_3D SCR_POINT_ARROW_3D
SCRCMD_ANSWER_PHONE SCR_ANSWER_PHONE
SCRCMD_CHANGE_COLOUR SCR_CHANGE_COLOR
SCRCMD_CHANGE_RADIUS SCR_CHANGE_COLOR_RADIUS
SCRCMD_SET_DIR_OF_TVVAN SCR_SET_DIR_OF_TVVAN
SCRCMD_CHAR_INTO_CAR SCR_CHAR_INTO_CAR
SCRCMD_WARP_CHAR SCR_WARP_CHAR
SCRCMD_LEVEL_END_ARROW2 SCR_LEVEL_END_ARROW2
SCRCMD_DO_SAVE_GAME SCR_DO_SAVE_GAME
SCRCMD_SET_CHAR_OBJ3 SCR_SET_CHAR_OBJ3
SCRCMD_SET_CHAR_OBJ_FOLLOW SCR_SET_CHAR_OBJ_FOLLOW
SCRCMD_THREAD_DECLARE4 SCR_THREAD_TRIGGER_3_PARAMS
SCRCMD_THREAD_DECLARE2 SCR_THREAD_TRIGGER_3_PARAMS
SCRCMD_THREAD_DECLARE3 SCR_THREAD_TRIGGER_BLOCK
SCRCMD_THREAD_DECLARE5 SCR_THREAD_TRIGGER_AREA
SCRCMD_CHAR_AREA_ANY_MEANS SCR_THREAD_TRIGGER_AREA
SCRCMD_START_BASIC_KF SCR_START_BASIC_KF_TEMPLATE
SCRCMD_DO_BASIC_KF SCR_DO_BASIC_KF_TEMPLATE
SCRCMD_START_BONUS1 SCR_START_BONUS
SCRCMD_START_BONUS2 SCR_START_BONUS
SCRCMD_START_BONUS3 SCR_START_BONUS
SCRCMD_DO_EASY_PHONE SCR_DO_EASY_PHONE_TEMPLATE
SCRCMD_PHONE_TEMPLATE SCR_DO_PHONE_TEMPLATE
SCRCMD_SEND_CHAR_FOOT SCR_SEND_CHAR
SCRCMD_SEND_CHAR_CAR SCR_SEND_CHAR
SCRCMD_IS_CAR_IN_BLOCK SCR_IS_CAR_IN_BLOCK
SCRCMD_CAR_IN_AREA SCR_ONEVAR_RECT
SCRCMD_CAR_WRECK_IN_LOCATION SCR_ONEVAR_RECT
SCRCMD_IS_CHAR_FIRING_AREA SCR_ONEVAR_RECT
SCRCMD_LOCATE_CHAR_ANY SCR_ONEVAR_RECT
SCRCMD_LOCATE_CHAR_BY_CAR SCR_ONEVAR_RECT
SCRCMD_LOCATE_CHAR_ONFOOT SCR_ONEVAR_RECT
SCRCMD_STOP_LOCATE_CHAR_ANY SCR_ONEVAR_RECT
SCRCMD_STOP_LOCATE_CHAR_FOOT SCR_ONEVAR_RECT
SCRCMD_STOP_LOCATE_CHAR_CAR SCR_ONEVAR_RECT
SCRCMD_GROUP_IN_AREA SCR_ONEVAR_RECT
SCRCMD_POINT_ONSCREEN SCR_SIX_PARAMS
SCRCMD_LOC_SEC_CHAR_ANY SCR_SIX_PARAMS
SCRCMD_LOC_SEC_CHAR_CAR SCR_SIX_PARAMS
SCRCMD_LOC_SECOND_CHAR SCR_SIX_PARAMS
SCRCMD_LEVELSTART SCR_ZERO_PARAMS
SCRCMD_LEVELEND SCR_ZERO_PARAMS
SCRCMD_MISSIONSTART SCR_ZERO_PARAMS
SCRCMD_MISSIONEND SCR_ZERO_PARAMS
SCRCMD_DO_NOWT SCR_ZERO_PARAMS
SCRCMD_FUNCTION SCR_ZERO_PARAMS
SCRCMD_RETURN SCR_ZERO_PARAMS
SCRCMD_SAVE_GAME SCR_ZERO_PARAMS
SCRCMD_FINISH_MISSION SCR_ZERO_PARAMS
SCRCMD_CLEAR_BRIEFS SCR_ZERO_PARAMS
SCRCMD_START_EXEC SCR_ZERO_PARAMS
SCRCMD_STOP_EXEC SCR_ZERO_PARAMS
SCRCMD_BONUS_DECLARE SCR_ZERO_PARAMS
SCRCMD_ARROW_DEC SCR_ZERO_PARAMS
SCRCMD_TIMER_DECLARE SCR_ZERO_PARAMS
SCRCMD_ONSCREEN_COUNTER_DEC SCR_ZERO_PARAMS
SCRCMD_1_PASSED_FLAG SCR_TWO_PARAMS var2
SCRCMD_2_PASSED_FLAG SCR_TWO_PARAMS var2
SCRCMD_3_PASSED_FLAG SCR_TWO_PARAMS var2
SCRCMD_DECLARE_MISSION SCR_TWO_PARAMS
SCRCMD_DECLARE_POLICE SCR_TWO_PARAMS var1
SCRCMD_DEC_GANG_1_FLAG SCR_TWO_PARAMS
SCRCMD_DEC_GANG_2_FLAG SCR_TWO_PARAMS
SCRCMD_DEC_GANG_3_FLAG SCR_TWO_PARAMS
SCRCMD_FINISH_SCORE SCR_TWO_PARAMS
SCRCMD_GANG_1_MISSION_TOTAL SCR_TWO_PARAMS var1
SCRCMD_GANG_2_MISSION_TOTAL SCR_TWO_PARAMS var1
SCRCMD_GANG_3_MISSION_TOTAL SCR_TWO_PARAMS var1
SCRCMD_PASSED_FLAG SCR_TWO_PARAMS var2
SCRCMD_SECRETS_FAILED SCR_TWO_PARAMS var2
SCRCMD_SECRETS_PASSED SCR_TWO_PARAMS var2
SCRCMD_SET_MIN_ALIVE SCR_TWO_PARAMS
SCRCMD_TOTAL_MISSIONS SCR_TWO_PARAMS var1
SCRCMD_TOTAL_SECRETS SCR_TWO_PARAMS var1
SCRCMD_ADD_CHAR_TO_GANG SCR_TWO_PARAMS
SCRCMD_ADD_CHAR_TO_GROUP SCR_TWO_PARAMS
SCRCMD_ADD_GROUP SCR_TWO_PARAMS
SCRCMD_ADD_LIVES SCR_TWO_PARAMS
SCRCMD_ADD_MULTIPLIER SCR_TWO_PARAMS
SCRCMD_ADD_ONSCREEN_COUNTER SCR_TWO_PARAMS
SCRCMD_ALTER_WANTED_LEVEL SCR_TWO_PARAMS
SCRCMD_ALT_WANTED_LEVEL SCR_TWO_PARAMS
SCRCMD_ARROW_COLOUR SCR_TWO_PARAMS
SCRCMD_CAR_BULLETPROOF SCR_TWO_PARAMS
SCRCMD_CAR_DRIVE_AWAY SCR_TWO_PARAMS var2
SCRCMD_CAR_FLAMEPROOF SCR_TWO_PARAMS
SCRCMD_CAR_ROCKETPROOF SCR_TWO_PARAMS
SCRCMD_CHANGE_CAR_LOCK SCR_TWO_PARAMS
SCRCMD_CHANGE_CAR_REMAP SCR_TWO_PARAMS
SCRCMD_CHANGE_CHAR_REMAP SCR_TWO_PARAMS
SCRCMD_CHANGE_INTENSITY SCR_TWO_PARAMS
SCRCMD_CHANGE_POLICE SCR_TWO_PARAMS var1
SCRCMD_CHAR_DO_NOTHING SCR_TWO_PARAMS var2
SCRCMD_CHAR_DRIVE_AGGR SCR_TWO_PARAMS
SCRCMD_CHAR_INVINCIBLE SCR_TWO_PARAMS
SCRCMD_CHAR_TO_BACKDOOR SCR_TWO_PARAMS
SCRCMD_CHAR_TO_DRIVE_CAR SCR_TWO_PARAMS
SCRCMD_CLEAR_CLOCK_ONLY SCR_TWO_PARAMS var2
SCRCMD_CLEAR_COUNTER SCR_TWO_PARAMS var2
SCRCMD_CLEAR_KF_WEAPON SCR_TWO_PARAMS var2
SCRCMD_CLEAR_NO_COLLIDE SCR_TWO_PARAMS var2
SCRCMD_CLEAR_TIMERS SCR_TWO_PARAMS var2
SCRCMD_CLEAR_WANTED_LEVEL SCR_TWO_PARAMS var2
SCRCMD_CLOSE_DOOR SCR_TWO_PARAMS var2
SCRCMD_COUNTER SCR_TWO_PARAMS
SCRCMD_CREATE_THREAD SCR_TWO_PARAMS
SCRCMD_DEATH_ARR_STATE SCR_TWO_PARAMS
SCRCMD_DECIDE_POWERUP SCR_TWO_PARAMS
SCRCMD_DELAY_HERE SCR_TWO_PARAMS var1
SCRCMD_DEL_GROUP_IN_CAR SCR_TWO_PARAMS var2
SCRCMD_DESTROY_GROUP SCR_TWO_PARAMS var2
SCRCMD_DISABLE_CRANE SCR_TWO_PARAMS var2
SCRCMD_DISABLE_THREAD SCR_TWO_PARAMS var2
SCRCMD_DISPLAY_BRIEF SCR_TWO_PARAMS var2
SCRCMD_DISPLAY_BRIEF_NOW SCR_TWO_PARAMS var2
SCRCMD_DISPLAY_BRIEF_SOON SCR_TWO_PARAMS var2
SCRCMD_DISPLAY_MESSAGE SCR_TWO_PARAMS var2
SCRCMD_DISPLAY_TIMER SCR_TWO_PARAMS
SCRCMD_DRIVER_OUT_CAR SCR_TWO_PARAMS var2
SCRCMD_EMERG_LIGHTS SCR_TWO_PARAMS
SCRCMD_ENABLE_CRANE SCR_TWO_PARAMS var2
SCRCMD_ENABLE_THREAD SCR_TWO_PARAMS var2
SCRCMD_EXPLODE_ITEM SCR_TWO_PARAMS var2
SCRCMD_EXPLODE_LARGE1 SCR_TWO_PARAMS var2
SCRCMD_EXPLODE_NO_RING1 SCR_TWO_PARAMS var2
SCRCMD_EXPLODE_SMALL1 SCR_TWO_PARAMS var2
SCRCMD_FINISH_LEVEL SCR_TWO_PARAMS var1
SCRCMD_FORCE_CLEANUP SCR_TWO_PARAMS var2
SCRCMD_GET_CAR_SPEED SCR_TWO_PARAMS
SCRCMD_GET_CHAR_CAR_SPEED SCR_TWO_PARAMS
SCRCMD_GET_LAST_PUNCHED SCR_TWO_PARAMS
SCRCMD_GET_MAX_SPEED SCR_TWO_PARAMS
SCRCMD_GET_MULT SCR_TWO_PARAMS
SCRCMD_GET_NUM_LIVES SCR_TWO_PARAMS
SCRCMD_GET_SCORE SCR_TWO_PARAMS
SCRCMD_GIVE_CAR_ALARM SCR_TWO_PARAMS var2
SCRCMD_GIVE_DRIVER_BRAKE SCR_TWO_PARAMS var2
SCRCMD_GOSUB SCR_TWO_PARAMS var2
SCRCMD_KILL_ALL_PASSENG SCR_TWO_PARAMS var2
SCRCMD_KILL_CHAR SCR_TWO_PARAMS var2
SCRCMD_LAUNCH_MISSION SCR_TWO_PARAMS var2
SCRCMD_MAKE_CAR_DUMMY SCR_TWO_PARAMS var2
SCRCMD_MAKE_LEADER SCR_TWO_PARAMS
SCRCMD_MAKE_MUGGERS SCR_TWO_PARAMS var1
SCRCMD_NO_CHARS_OFF_BUS SCR_TWO_PARAMS
SCRCMD_OPEN_DOOR SCR_TWO_PARAMS var2
SCRCMD_PARK SCR_TWO_PARAMS
SCRCMD_PARK_NO_RESPAWN SCR_TWO_PARAMS
SCRCMD_PUT_CAR_ON_TRAILER SCR_TWO_PARAMS
SCRCMD_REMOTE_CONTROL SCR_TWO_PARAMS
SCRCMD_REMOVE_ARROW SCR_TWO_PARAMS var2
SCRCMD_REMOVE_CHAR SCR_TWO_PARAMS
SCRCMD_REMOVE_WEAPON SCR_TWO_PARAMS var2
SCRCMD_SET_ALL_CONTROLS SCR_TWO_PARAMS
SCRCMD_SET_BONUS_RATING SCR_TWO_PARAMS var1
SCRCMD_SET_CAR_JAMMED SCR_TWO_PARAMS
SCRCMD_SET_CHAR_BRAVERY SCR_TWO_PARAMS
SCRCMD_SET_CHAR_SHOOT SCR_TWO_PARAMS
SCRCMD_SET_COUNTER_INT SCR_TWO_PARAMS
SCRCMD_SET_COUNTER_VAR SCR_TWO_PARAMS
SCRCMD_SET_DOOR_AUTO SCR_TWO_PARAMS var2
SCRCMD_SET_DOOR_MANUAL SCR_TWO_PARAMS var2
SCRCMD_SET_ENTER_STATUS SCR_TWO_PARAMS
SCRCMD_SET_MODEL_WANTED SCR_TWO_PARAMS var1
SCRCMD_SET_NO_COLLIDE SCR_TWO_PARAMS var2
SCRCMD_SET_PHONE_DEAD SCR_TWO_PARAMS var2
SCRCMD_SET_SHADING_LEV SCR_TWO_PARAMS var1
SCRCMD_SET_STAY_IN_CAR SCR_TWO_PARAMS
SCRCMD_SET_USE_CAR_WEAPON SCR_TWO_PARAMS
SCRCMD_STOP_CAR_DRIVE SCR_TWO_PARAMS var2
SCRCMD_STOP_PHONE_RING SCR_TWO_PARAMS var2
SCRCMD_STOP_THREAD SCR_TWO_PARAMS var1
SCRCMD_STORE_BONUS SCR_TWO_PARAMS
SCRCMD_STORE_CAR_INFO SCR_TWO_PARAMS
SCRCMD_SUPPRESS_MODEL SCR_TWO_PARAMS var2
SCRCMD_UPDATE_DOOR SCR_TWO_PARAMS
SCRCMD_DELETE_ITEM SCR_TWO_PARAMS var2
SCRCMD_SET_THREAT_SEARCH SCR_TWO_PARAMS
SCRCMD_SET_THREAT_REACT SCR_TWO_PARAMS
SCRCMD_SET_CHAR_OBJ1 SCR_TWO_PARAMS
SCRCMD_SWITCH_GENERATOR1 SCR_TWO_PARAMS
SCRCMD_SWITCH_GENERATOR2 SCR_TWO_PARAMS
SCRCMD_GIVE_WEAPON1 SCR_TWO_PARAMS
SCRCMD_CHANGE_RESPECT SCR_FOUR_PARAMS var4
SCRCMD_CHANGE_GANG_RESP SCR_FOUR_PARAMS var4
SCRCMD_DEC_DEATH_BASE_1 SCR_FOUR_PARAMS var2 var4
SCRCMD_DEC_DEATH_BASE_2 SCR_FOUR_PARAMS
SCRCMD_DEC_DEATH_BASE_3 SCR_FOUR_PARAMS
SCRCMD_ADDSCORE_NO_MULT SCR_FOUR_PARAMS var2
SCRCMD_ADD_SCORE1 SCR_FOUR_PARAMS var2
SCRCMD_ADD_SCORE2 SCR_FOUR_PARAMS var2 var4
SCRCMD_ADD_TIME SCR_FOUR_PARAMS var2 var4
SCRCMD_CHAR_DRIVE_SPEED SCR_FOUR_PARAMS var2
SCRCMD_LEVEL_END_ARROW1 SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_BAD_CAR SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_CARTHIEF SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_CAR_DENSITY SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_CHAR_OCCUPATION SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_DOOR_INFO SCR_FOUR_PARAMS var4
SCRCMD_SET_ELVIS SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_FAV_CAR SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_GANG SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_GANGCARRATIO SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_GANG_RESPECT SCR_FOUR_PARAMS var4
SCRCMD_SET_GOOD_CAR SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_GROUP_TYPE SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_KF_WEAPON SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_MUGGER SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_PED_DENSITY SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_POLICE_CAR SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_POLICE_PED SCR_FOUR_PARAMS var2 var4
SCRCMD_SET_RUN_SPEED SCR_FOUR_PARAMS var2
SCRCMD_SET_CHAR_OBJ2 SCR_FOUR_PARAMS var4
SCRCMD_GIVE_WEAPON2 SCR_FOUR_PARAMS var4
SCRCMD_S_PLUS_I SCR_TWO_PARAMS
SCRCMD_I_PLUS_S SCR_TWO_PARAMS
SCRCMD_I_MINUS_S SCR_TWO_PARAMS
SCRCMD_S_PLUS_S SCR_TWO_PARAMS
SCRCMD_S_MINUS_S SCR_TWO_PARAMS
SCRCMD_DECREMENT SCR_TWO_PARAMS var2
SCRCMD_INCREMENT SCR_TWO_PARAMS var2
SCRCMD_S_IS_S_MINUS_I SCR_FOUR_PARAMS var4?
SCRCMD_S_IS_S_PLUS_I SCR_FOUR_PARAMS var4?
SCRCMD_S_IS_S_DIV_I SCR_FOUR_PARAMS var4?
SCRCMD_S_IS_S_MULT_I SCR_FOUR_PARAMS var4?
SCRCMD_S_IS_S_MOD_I SCR_FOUR_PARAMS var4?
SCRCMD_S_IS_S_MINUS_S SCR_FOUR_PARAMS var4
SCRCMD_S_IS_S_PLUS_S SCR_FOUR_PARAMS var4
SCRCMD_S_IS_S_DIV_S SCR_FOUR_PARAMS var4
SCRCMD_S_IS_S_MULT_S SCR_FOUR_PARAMS var4
SCRCMD_S_IS_S_MOD_S SCR_FOUR_PARAMS var4
SCRCMD_CHECK_DEATH_ARR SCR_ZERO_PARAMS
SCRCMD_PARK_FINISHED SCR_ZERO_PARAMS
SCRCMD_MODEL_CHECK SCR_ZERO_PARAMS
SCRCMD_BRIEF_ONSCREEN SCR_ZERO_PARAMS
SCRCMD_S_EQUAL_I SCR_TWO_PARAMS
SCRCMD_S_GEQUAL_I SCR_TWO_PARAMS
SCRCMD_S_GREATER_I SCR_TWO_PARAMS
SCRCMD_S_LESS_I SCR_TWO_PARAMS
SCRCMD_S_LEQUAL_I SCR_TWO_PARAMS
SCRCMD_S_EQUAL_S SCR_TWO_PARAMS
SCRCMD_S_GEQUAL_S SCR_TWO_PARAMS
SCRCMD_S_GREATER_S SCR_TWO_PARAMS
SCRCMD_S_LESS_S SCR_TWO_PARAMS
SCRCMD_S_LEQUAL_S SCR_TWO_PARAMS
SCRCMD_ANY_WEAPON_HIT_CAR SCR_TWO_PARAMS var2
SCRCMD_BEEN_PUNCHED_BY SCR_TWO_PARAMS
SCRCMD_CHECK_MULT SCR_TWO_PARAMS
SCRCMD_CARBOMB_ACTIVE SCR_TWO_PARAMS var2
SCRCMD_CAR_DAMAGE_POS SCR_TWO_PARAMS
SCRCMD_CAR_GOT_DRIVER SCR_TWO_PARAMS
SCRCMD_CAR_IN_AIR SCR_TWO_PARAMS var2
SCRCMD_CAR_SUNK SCR_TWO_PARAMS var2
SCRCMD_CHAR_ARRESTED SCR_TWO_PARAMS var2
SCRCMD_CHAR_IN_AIR SCR_TWO_PARAMS var2
SCRCMD_CHAR_SUNK SCR_TWO_PARAMS var2
SCRCMD_CHECK_BONUS1 SCR_TWO_PARAMS var2
SCRCMD_CHECK_BONUS2 SCR_TWO_PARAMS var2
SCRCMD_CHECK_BONUS3 SCR_TWO_PARAMS var2
SCRCMD_CHECK_CAR_DAMAGE SCR_TWO_PARAMS
SCRCMD_CHECK_CAR_DRIVER SCR_TWO_PARAMS var2
SCRCMD_CHECK_CAR_MODEL SCR_TWO_PARAMS
SCRCMD_CHECK_CAR_REMAP SCR_TWO_PARAMS
SCRCMD_CHECK_HEADS SCR_TWO_PARAMS
SCRCMD_CHECK_HEALTH SCR_TWO_PARAMS
SCRCMD_CHECK_MAX_PASS SCR_TWO_PARAMS
SCRCMD_CHECK_NUM_ALIVE SCR_TWO_PARAMS
SCRCMD_CHECK_NUM_LIVES SCR_TWO_PARAMS
SCRCMD_CHECK_PHONE SCR_TWO_PARAMS var2
SCRCMD_CHECK_PHONETIMER SCR_TWO_PARAMS var2
SCRCMD_DELAY SCR_TWO_PARAMS var1
SCRCMD_EMERG_LIGHTS_ON SCR_TWO_PARAMS var2
SCRCMD_GET_CAR_FROM_CRANE SCR_TWO_PARAMS
SCRCMD_GET_PASSENGER_NUM SCR_TWO_PARAMS
SCRCMD_HAS_CAR_WEAPON SCR_TWO_PARAMS
SCRCMD_HAS_CHAR_DIED SCR_TWO_PARAMS var2
SCRCMD_IS_BUS_FULL SCR_TWO_PARAMS var2
SCRCMD_IS_CAR_CRUSHED SCR_TWO_PARAMS var2
SCRCMD_IS_CAR_ON_TRAIL SCR_TWO_PARAMS
SCRCMD_IS_CAR_WRECKED SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_FIRE_ONSCREEN SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_HORN SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_IN_ANY_CAR SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_IN_CAR SCR_TWO_PARAMS
SCRCMD_IS_CHAR_IN_GANG SCR_TWO_PARAMS
SCRCMD_IS_CHAR_IN_MODEL SCR_TWO_PARAMS
SCRCMD_IS_CHAR_IN_ZONE SCR_TWO_PARAMS
SCRCMD_IS_CHAR_OBJ_FAIL SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_OBJ_PASS SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_ON_FIRE SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_STOPPED SCR_TWO_PARAMS var2
SCRCMD_IS_CHAR_STUNNED SCR_TWO_PARAMS var2
SCRCMD_IS_GROUP_IN_CAR SCR_TWO_PARAMS var2
SCRCMD_IS_ITEM_ONSCREEN SCR_TWO_PARAMS var2
SCRCMD_IS_TRAILER_ATT SCR_TWO_PARAMS
SCRCMD_ONSCREEN_ACCURACY SCR_TWO_PARAMS var2
SCRCMD_PUNCHED_SOMEONE SCR_TWO_PARAMS var2
SCRCMD_SETUP_MODEL_CHECK SCR_TWO_PARAMS var2
SCRCMD_SPOTTED_PLAYER SCR_TWO_PARAMS var2
SCRCMD_CHECK_CAR_BOTH SCR_FOUR_PARAMS var4
SCRCMD_CHECK_CAR_SPEED SCR_FOUR_PARAMS var2
SCRCMD_CHECK_CURRENT_WEAPON SCR_FOUR_PARAMS var2 var4
SCRCMD_CHECK_OBJ_MODEL SCR_FOUR_PARAMS var2 var4
SCRCMD_CHECK_RESPECT_GREATER SCR_FOUR_PARAMS var4
SCRCMD_CHECK_RESPECT_IS SCR_FOUR_PARAMS var4
SCRCMD_CHECK_RESPECT_LESS SCR_FOUR_PARAMS var4
SCRCMD_CHECK_SCORE SCR_FOUR_PARAMS var2
SCRCMD_CHECK_WEAPONHIT SCR_FOUR_PARAMS var2 var4
SCRCMD_WEAP_HIT_CAR SCR_FOUR_PARAMS var2 var4
[/mis]

Maybe you find that list useful?
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Everything is pretty much clear to me, its just one thing i dont understand. The strings inside .scr and mission script stuff.

If i look your code, i see that the strings are somehow converted into integers etc.
You did a file format description about strings, i have to read it 100 times, maybe i will get it.

Strings / mission file names inside .scr files is the most difficult / tricky part for me.

EDIT Nvm, seems i got it, and successfully wrote them, but im getting tired, gtg to sleep a bit. Will be back with results.


I added zones into compiler all was nice until gta2 crashed and then i discovered the strings at the end of .scr.

Etc...
I will add them and will be back.


This list you posted is extremly useful. Thanks!
It's a must have list for the compiler and it took me lots of time to find what function uses what struct, so i could implement another command.

With this, it should go a lot quicker now.


But what is this?
"all the values in the struct can be set to null"

Does it matter? I mean, i initialize all the structs with 0 (memset) and i will only fill values i use or need. The rest will stay 0 if i dont touch it, like many of the "unk" members.

Can you clarify?


I know that miss2 puts some trash into many struct members, but i leave them 0.
If somebody will do hex compare on my generated .scr and miss2 generated .scr they will see that, the trash in miss2 .scr is just 00 in my .scr.
But for GTA2 it doesnt matter, each time i see garbage in struct member, i zero it out and run in GTA2, if it crashes i will figure out what the value is and make my compiler to create same value.
If GTA2 doesnt care, then i will use value of 0 for that member.
Always wear safety glasses while programming.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

B-$hep wrote:But what is this?
"all the values in the struct can be set to null"

Does it matter? I mean, i initialize all the structs with 0 (memset) and i will only fill values i use or need. The rest will stay 0 if i dont touch it, like many of the "unk" members.

Can you clarify?
Yeah its ok to memset the data to null, then the garbage is out. That quote is only useful if you wanna add the hidden data into the SCR files; then you need to know which bytes arent used by GTA2.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Da*n weird thing happened atm.
When i solve programming problems or test out code i create small test apps, in Delphi and C++, depends what i use, currently im in C++.

And now i figured out ( at least i think so) stuff about string arrays, but strange issue occurred.

I did a small minimal C++ app to test out writing of that .scr string array to file.
It works in test app but not in my compiler app.

The writing of struct is same, everything is same, just copy pasted.
It just does write out array_len and variable ID, but it doesnt write the length of the string either the string itself.

It writes it fine in test app but not in my compiler where it has hundreds of lines already.
Dunno wtf is this.

Im using this (from your doc):

Code: Select all

struct string_header {
    Uint16 id;
    Uint16 padding1;
    Uint16 type;
    Uint16 padding2;
    Uint8 len;
};
Writing it like this:

Code: Select all

string_header sh;
...
fwrite(&total, sizeof(Uint16), 1, f);
	fwrite(&sh, sizeof(string_header), 1, f);
etc...
How that could be, i dont understand. same code, same writing, and it just writes 2 bytes and skips the rest. Mystery.

Compiler bug maybe. Who knows. Using VS2003 toolkit here.
Will try VS2008 Express.


EDIT Stupid me, i had a public "string_header sh;" in one of my headers, thats messed up things. Now it works.

I will continue with ZONE command. I work with sources of the Industrial script and trying to recreate the zones, gangs etc. Step by step and adding commands.

This way it's more inspiring to see compiler evolve and actually work.
Always wear safety glasses while programming.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

I dont understand why that fixed the bug. Might have just hidden it for a while, it'll come back to you later.

Did you read this:
SCR Strings-array data format wrote:Note: This struct is used after the array length integer was read, and after this struct you should read the string of len bytes, then repeat until the whole array has been read. You should use 1 byte packing for all structs.
I suspect this is why the bug appears.

If you do not use 1 byte packing, the struct sizes will not be exactly the sizes they are set to originally.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

There was more, i had a old code at the end that just wrote empty string array and this overwrote the previous string array.

I just discovered it when scrolling down the code.
I have small screen, so lots of will stay out of view.

And yes, i use 1 byte packing.
Always wear safety glasses while programming.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

I love the STL. Solved all my problems writing strings array and made everything so easy.
I will add GANG_INFO now, so i see actual Zaibatsu and other guys walking around instead of the "built in" GTA2 guys in green outfit.

Map zones work fine and now im successfully writing their strings also.
100% match with miss2 .scr files.

EDIT:
set_gang_info works fine. Including strings.
I accidentally wanted to add fat moms, but found that there is not enough room for them actually lol.

SCRCMD_SET_CHAR_MOM_FAT
Always wear safety glasses while programming.
User avatar
T.M.
Immortal
Posts: 960
Joined: 29 Jan 2010, 15:00
Location: F21B3EED

Re: New GTA2 Script Compiler Preview v0.1

Post by T.M. »

B-$hep wrote:I accidentally wanted to add fat moms, but found that there is not enough room for them actually lol.

SCRCMD_SET_CHAR_MOM_FAT
:D

Dont forget to check if the char mom is fat already, before you fatten it more; use SCRCMD_IS_CHAR_MOM_FAT for that... ;-)
User avatar
Sektor
Boss
Boss
Posts: 1423
Joined: 04 Mar 2008, 06:51
GH nick: Sektor
Location: GTAMP.com
Contact:

Re: New GTA2 Script Compiler Preview v0.1

Post by Sektor »

SCRCMD_SET_CHAR_MOM_FAT
Yo momma so fat that there's no way she can be properly respresented in a 64x64px sprite!
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

lol.

Must be scaled down using some funky algorithm created for moms.
Always wear safety glasses while programming.
User avatar
B-$hep
Immortal
Posts: 568
Joined: 24 Apr 2009, 21:43
GH nick: B-Shep
Location: EU

Re: New GTA2 Script Compiler Preview v0.1

Post by B-$hep »

Added

Code: Select all

FORWARD varname:
...
RETURN
commands, it was pretty tricky but seems to work fine. Lots of "jumping" around (cmd_this++, cmd_next++, cur_cmd++) similar math.
Will add the THREAD_TRIGGER now just to test out the small phone system:

http://gtamp.com/forum/viewtopic.php?p=5455#p5455

And it should compile it fine.
Always wear safety glasses while programming.
Logofero
Serial Killer
Serial Killer
Posts: 264
Joined: 09 Dec 2015, 14:18
Location: Russia, Gelendzhik
Contact:

Re: New GTA2 Script Compiler Preview v0.1

Post by Logofero »

Compiler development is closed?

I would like to have a function to compile from the command line. Too bad that official sign compiler does not support this. Your support, but there are very few features..
Post Reply