Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!

    1. Red Dead Redemption 2

      1. Gameplay
      2. Missions
      3. Help & Support
    2. Red Dead Online

      1. Gameplay
      2. Find Lobbies & Outlaws
      3. Help & Support
    1. Crews & Posses

      1. Recruitment
    2. Events

    1. GTA Online

      1. Arena War
      2. After Hours
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Grand Theft Auto Series

    3. GTA Next

    4. GTA V

      1. PC
      2. Guides & Strategies
      3. Help & Support
    5. GTA IV

      1. Episodes from Liberty City
      2. Multiplayer
      3. Guides & Strategies
      4. Help & Support
      5. GTA Mods
    6. GTA Chinatown Wars

    7. GTA Vice City Stories

    8. GTA Liberty City Stories

    9. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    10. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    11. GTA III

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    12. Top Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    13. Wiki

      1. Merchandising
    1. GTA Modding

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    3. Featured Mods

      1. DYOM
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Red Dead Redemption

    2. Rockstar Games

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Programming
      5. Movies & TV
      6. Music
      7. Sports
      8. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. News

    2. Forum Support

    3. Site Suggestions

Barton Waterduck

The Mission Builder thread

Recommended Posts

Y_Less

I like the hex opcodes, if you look at some of my code, it can often look like:

 

00d6: 0?

0256:

004d: ££elsewhere

 

useful!

 

The rest, I agree on, although correct me if im wrong but doesn't the latest MBs already have the option for lack of opcodes, with them all having alternates, just not used to often.

Share this post


Link to post
Share on other sites
random_download

I made a very poor MB --> MA converter. Doesn't work very well, mainly becuase you must get the MB code EXACTLY as it is in vicescm.ini, eg. if you add in an extra space somewhere it wouldn't work.

 

Also, the 'NOT' opcodes will not work, the code isn't finished.

 

function TForm1.MBlinetoMA(line: string): string;varopcode: string; //this is the opcode, eg. '0001'param: array[0..20] of string; //the parameters, eg. '0'plen: array[0..20] of Integer; //the length of each parameter, eg. '1'temp: array[0..20] of string; //temporay stringsMAline, MBline: string; //the MA line read from the INI file, eg. 'wait' (and MB as well)i, k, j: Integer; //for loops etc.pnum: Integer; //the number of parameters for the opcodebegintemp[9]:= line;Delete(temp[9],2,Length(temp[9]) - 1);if temp[9] = ':' then begintemp[9]:= line;Delete(temp[9],1,1);Result:= '@' + temp[9];endelse if line = '' then beginResult:= '';endelse begintemp[0]:= StrLower(PChar(line));opcode:= temp[0]; //0001: wait 0 msDelete(opcode,5,Length(opcode)-4); //0001i:= -1;repeati:= i + 1;//MAOp is a listbox which contains all the MA formatted opcodes read from the ini file, eg. 0001=1,waittemp[1]:= Form1.MAOp.Items.Strings[i]; //0001=1,waitif StrPos(PChar(temp[1]), PChar(opcode)) <> nil thenMAline:= temp[1]; //0001=1,waituntil i > Form1.MaOp.Items.Count - 2;MAline:= StrPos(PChar(MAline),','); //,waitDelete(MAline,1,1);//waittemp[20]:= opcode;Delete(temp[20],2,3);if temp[20] = '8' then beginMAline:= '!'+MAline;temp[19]:= opcode;Delete(temp[19],1,1);opcode:= '0' + temp[19];temp[19]:= 'NOT';end;//now we have opcode, and MAline. temp[0]= MBlinei:= -1;repeati:= i + 1;//this can be done faster, it searches in the listbox (called Memo3 for some reason) which contains the//MB formatted opcodes from the ini file for the opcode we want (stored in opcode)temp[1]:= Form1.Memo3.Items.Strings[i]; //0001=1,wait %1d% msif StrPos(PChar(temp[1]), PChar(opcode)) <> nil thentemp[0]:= temp[1]; //0001=1,wait %1d% msuntil i > Form1.Memo3.Items.Count - 2;//temp[0] = MB opcode from INI, eg. 0001=1,wait %1d% msif temp[19] = 'NOT' then begintemp[18]:= temp[0]; //0001=1,wait %1d% msDelete(temp[0],1,5); //1,wait %1d% mstemp[1]:= StrPos(PChar(temp[0]), ','); //,wait %1d% msDelete(temp[0],Length(temp[0]) - Length(temp[1]) + 1,Length(temp[1])); //1MBline:= temp[1]; //,wait %1d% msDelete(MBline,1,1); //wait %1d% msMBline:= opcode + '=' + temp[0] + ',   NOT ' + MBline; //0001=1,   NOT wait %1d% mstemp[0]:= temp[18];endelse MBline:= temp[0];Delete(temp[0],1,5); //1,wait %1d% mstemp[1]:= StrPos(PChar(temp[0]), ','); //,wait %1d% msDelete(temp[0],Length(temp[0]) - Length(temp[1]) + 1,Length(temp[1])); //1pnum:= strtoint(temp[0]);if pnum = -1 then beginResult:= StrLower(PChar(line)); //004f: create_thread ££labelDelete(Result,1,5); // create_thread ££labelend else if pnum = 0 then beginResult:= StrLower(PChar(line)); //004f: create_thread ££labelDelete(Result,1,5); // create_thread ££labelend else begin//opcode, pnum and MAline are all correct now.//BEGIN-----------------------Parameter Repeat---------------------------BEGIN\\i:= 0;plen[0]:= 0;plen[1]:= 0;plen[2]:= 0;plen[3]:= 0;plen[4]:= 0;plen[5]:= 0;plen[6]:= 0;plen[7]:= 0;plen[8]:= 0;plen[9]:= 0;plen[10]:= 0;plen[11]:= 0;plen[12]:= 0;plen[13]:= 0;plen[14]:= 0;plen[15]:= 0;plen[16]:= 0;plen[17]:= 0;plen[18]:= 0;plen[19]:= 0;plen[20]:= 0;repeatk:= 0;temp[0]:= MBline; //0001=1,wait %1d% mstemp[0]:= StrPos(PChar(temp[0]), ','); //,wait %1d% msDelete(temp[0],1,1); //wait %1d% mstemp[0]:= opcode + ': ' + temp[0]; //0001: wait %1d% mstemp[6]:= temp[0]; //0004: %1d% = %2d%;; integer valuesif i > 0 then beginrepeattemp[1]:= StrPos(PChar(temp[0]), '%'); //%1d% = %2d%;; integer valuestemp[4]:= temp[1]; //%1d% = %2d%;; integer valuesDelete(temp[4],1,1); //1d% = %2d%;; integer valuestemp[1]:= StrPos(PChar(temp[4]), '%'); //% = %2d%;; integer valuesDelete(temp[1],1,1); // = %2d%;; integer valuestemp[0]:= temp[1]; // = %2d%;; integer valuesk:= k + 1;until k >= i;end;temp[1]:= StrPos(PChar(temp[0]), '%'); //%1d% ms      %2d%;; integer valuestemp[4]:= temp[1]; //%1d% ms                          %2d%;; integer valuesDelete(temp[4],1,1); //1d% ms                         2d%;; integer valuestemp[5]:= StrPos(PChar(temp[4]), '%'); //% ms         %;; integer valuesif Length(temp[4]) - 2 > Length(temp[5]) thenDelete(temp[4],3,Length(temp[4]) - 2) //1d            2delse beginDelete(temp[4],3,Length(temp[4]) - 2); //1d           2dDelete(temp[4],2,2); //1                              2end;k:= 0;j:= 0;if i > 0 then beginrepeatj:= j - 4;k:= k + 1;until k >= i;Delete(temp[6],Length(temp[6]) - Length(temp[1]),Length(temp[1])); //'0004: %1d% = '//0004: %1d% =stemp[1]:= StrLower(PChar(line)); //0004: 0 = 0;; integer valuesj:= j + Length(temp[6])+plen[0]+plen[1]+plen[2]+plen[3]+plen[4]+plen[5]+plen[6]+plen[7]+plen[8]+plen[9]+plen[10]+plen[11]+plen[12]+plen[13]+plen[14]+plen[15]+plen[16]+plen[17]+plen[18]+plen[19]+plen[20]; //'0004: 0 = 'Delete(temp[1],1,j); //0;; integer values//Result:= temp[0];endelse beginDelete(temp[0],Length(temp[0]) - Length(temp[1]),Length(temp[1])); //'0001: wait 'temp[1]:= StrLower(PChar(line)); //0001: wait 0 msDelete(temp[1],1,Length(temp[0])); //0 msend;temp[2]:= StrPos(PChar(temp[1]), ' '); // ms                                 ';; integer values'Delete(temp[1],Length(temp[1]) - Length(temp[2]) + 1,Length(temp[2])); //0   '0'param[strtoint(temp[4])]:= temp[1];plen[strtoint(temp[4])]:= Length(temp[1]);i:= i + 1;until i >= pnum;//END-------------------------Parameter Repeat-----------------------------END\\i:= 2;Result:= MAline + '  ' + param[1];repeatif param[i] <> '' thenResult:= Result + ', ' + param[i];i:= i + 1;until i >= 20; end;end;end;

meh, nobody will use it anyway.

Share this post


Link to post
Share on other sites
Barton Waterduck

 

Even nicer would be if you make your syntax look more like GTAMA in general, but keep the good and distictive features:

• keep the shorthand notation for math opcodes.

• keep the automatic type ( int/float) detection, or even improve it to solve (var1 = var2)-type situations.

• keep the ARAY functionality in VC, although a more efficient implementation could be made.

• loose the need for those hex-opcodes, by using distinct opcode names (preferably use the GTAMA names)

• restore the order of the parameters to that in the scm-file.

 

The funny part about that is that you no longer get a MB format, you get a new GTAMA format that isn't really different in any way. You no longer get

<variable> = <function>

and you don't get all the extra info pluff inbetween the parameters (I think). I think it would be better to keep the MB format intact and mess with the GTAMA format instead tounge2.gif , like adding the MB math system to GTAMA to give you a GTAMAe format (e for MB extended). Like:

<keyword> [<parameter> [, <parameter> ... ]]

 

with the old mb math system:

<variable> <math syntax> <variable or number>

 

and this math system already uses the conditional blocks system GTAMA uses. And with all this, you would ofcourse need a GTAMAe assembler and disassembler built into the MB. If CyQ doesn't want me to do this for some reason or another, then, uh.. maby I need to respect that.

 

edit: I really don't think I'll be starting working on something like this without CyQ's blessing. It would just turn ugly, like nobody in the entire world would accept it.

 

Edited by Barton Waterduck

Share this post


Link to post
Share on other sites
Un3462

i don't really know what you want to do, but go right ahead and do it. i can't tell you what you can and cannot do (and even if i could, i wouldn't want to).

 

incidentally, i've been thinking about a sort of 'opcode alias' system for the sa assembler. something like a new ini section:

 

[aliases]"%1 := %2"=setgi.gi.ii,setgf.gf.if,setli.li.ii,setlf.lf.if,setgg.gi.gi,setll.li.li,setggf.gf.gf,setllf.lf.lf,setglf.gf.lf,setlgf.lf.gf,setgl.gi.gi,setlg.li.gi,setgigf.gi.gf,setgfgi.gf.gi,setligf.li.gf,setlfgi.lf.gi,setgilf.gi.lf,setgfli.gf.li,setlilf.li.lf,setlfli.lf.li,setgn.gn.n,setln.ln.n,setgs.gs.s,setls.ls.s

 

so the assembler could select the correct opcode based on the partypes, but things wouldn't have to be hardcoded.

 

however, i don't want things to turn into a complete mess, and i'm afraid of people abusing such a system to get mb syntax for things other than math opcodes.

 

additionally, with patrick and jon's programs the whole issue would also pretty much be resolved, so it probably wouldn't be worth the trouble.

Share this post


Link to post
Share on other sites
Barton Waterduck

 

incidentally, i've been thinking about a sort of 'opcode alias' system for the sa assembler. something like a new ini section:

 

[aliases]"%1 := %2"=setgi.gi.ii,setgf.gf.if,setli.li.ii,setlf.lf.if,setgg.gi.gi,setll.li.li,setggf.gf.gf,setllf.lf.lf,setglf.gf.lf,setlgf.lf.gf,setgl.gi.gi,setlg.li.gi,setgigf.gi.gf,setgfgi.gf.gi,setligf.li.gf,setlfgi.lf.gi,setgilf.gi.lf,setgfli.gf.li,setlilf.li.lf,setlfli.lf.li,setgn.gn.n,setln.ln.n,setgs.gs.s,setls.ls.s

 

so the assembler could select the correct opcode based on the partypes, but things wouldn't have to be hardcoded.

 

however, i don't want things to turn into a complete mess, and i'm afraid of people abusing such a system to get mb syntax for things other than math opcodes.

 

additionally, with patrick and jon's programs the whole issue would also pretty much be resolved, so it probably wouldn't be worth the trouble.

Wouldn't that make it into more of a compiler than an assember ? And if people "abused" it as you said, wouldn't that be a good thing ? I mean, if this system could create a format that MB people have been dreaming of forever, how could that be a bad thing ? You would need to rearrage the order of the parameters for that to work though. You could create anything with a system like that. I tried myself, got way to complicated. confused.gif And even if I could, with a 10 MB to 15 MB source code, the compiler would have to be coded in assembler to be fast enough I think.

 

edit: You know, if you can make this system work, I would be glad to create that ini file for you (uh, I think blink.gif ). I don't think I would be able to write my own MB compiler based on it anyway (to abuse it) because right now, I have no idea how to make it fast enough to be worth the effort.

 

edit again: But then again, I wouldn't be able to write a converter for it either. suicidal.gif I don't even know if I can write a converter for your v2 sadisassembler yet. dozingoff.gif I guess I could try once more to create a format like this as an addon (like an option in the decompiler). I would like to still keep the format fluid (with the extra info between the parameters). Maby it would turn into a waste of time anyway. I would use a much simpler ini file for it though, like

<keyword>, <opcode>

 

funny, why didn't I think of that before ? blink.gif heeeeey, that might work!user posted imagelol.gif

I just scan that bloddy command line for a keyword, replace it with the opcode and process the line the old fashion way. suicidal.gif Damn I must be stupid for not thinking about this earlier. All I need is a new 'sascm.ini' file.

 

Edited by Barton Waterduck

Share this post


Link to post
Share on other sites
Un3462

the abuse i'm worried about is loss of consistency. that's one of the main features of our current syntax; it's consistent. if you were to apply the alias system i described above to other opcodes, you could get things like "hplayer := createplayer 0 etc", while we already have the perfectly readable "create_player 0, ..., hplayer". i can see why people want a more readable syntax for the way math is done (even though i personally don't have any problem with the current system), but i don't want any other opcode syntax to get messed up in the process.

 

the implementation wouldn't be very difficult. the assembler (which would indeed become more like a compiler, but not much since it'd still lack full expressions), could see if the first word is an opcode, or if the line is a label, or a keyword, and if it's none of those it could see if it matches any of the aliases (that lookup can be optimized in various ways).

 

but i very much doubt i'll implement an alias system (unless enough people tell me to, or jonc suddenly disappears or something).

Share this post


Link to post
Share on other sites
Barton Waterduck
the abuse i'm worried about is loss of consistency. that's one of the main features of our current syntax; it's consistent. if you were to apply the alias system i described above to other opcodes, you could get things like "hplayer := createplayer 0 etc", while we already have the perfectly readable "create_player 0, ..., hplayer". i can see why people want a more readable syntax for the way math is done (even though i personally don't have any problem with the current system), but i don't want any other opcode syntax to get messed up in the process.

 

the implementation wouldn't be very difficult. the assembler (which would indeed become more like a compiler, but not much since it'd still lack full expressions), could see if the first word is an opcode, or if the line is a label, or a keyword, and if it's none of those it could see if it matches any of the aliases (that lookup can be optimized in various ways).

 

but i very much doubt i'll implement an alias system (unless enough people tell me to, or jonc suddenly disappears or something).

But how about already existing systems, like the Win32api ? Is that system bad too ? Like <handle> = create_window <parameters> ?

Share this post


Link to post
Share on other sites
Un3462
consistency.

the idea being that you pick a single syntax and stick with it. that syntax being "opcode parameter, parameter, ...", in our case. less syntactical oddities = less to learn = easier to learn.

Share this post


Link to post
Share on other sites
Barton Waterduck

 

consistency.

the idea being that you pick a single syntax and stick with it. that syntax being "opcode parameter, parameter, ...", in our case. less syntactical oddities = less to learn = easier to learn.

Sure, you could still have 2 formats at a time though. wink.gif Like an optinal format.

 

edit: But I guess you would end up with a new format every time you edit that 'scm.ini' file. A source code version converter would be needed. Like the one the MB has. confused.gif

Edited by Barton Waterduck

Share this post


Link to post
Share on other sites
PatrickW

You can't believe how happy I'm to see the two of you chatting in such a constructive way cookie.gifcookie.gifcookie.gif

 

 

My only intention for the MB syntax proposals, was to bring it closer to the GTAMA syntax as far as naming the opcodes, and parameter sequence is concerned.

MB could still allow descriptive text between the params.

 

With the PC version of SA coming up, it would make the job of finding and documenting opcodes much easier if the whole community uses the same naming.

 

I would really like to ask the both of you to get together and agree on a single format for the scm.ini file for SA.

 

 

 

Share this post


Link to post
Share on other sites
Barton Waterduck
You can't believe how happy I'm to see the two of you chatting in such a constructive way cookie.gifcookie.gifcookie.gif

 

 

My only intention for the MB syntax proposals, was to bring it closer to the GTAMA syntax as far as naming the opcodes, and parameter sequence is concerned.

MB could still allow descriptive text between the params.

 

With the PC version of SA coming up, it would make the job of finding and documenting opcodes much easier if the whole community uses the same naming.

 

I would really like to ask the both of you to get together and agree on a single format for the scm.ini file for SA.

 

 

 

I like the naming I already have. It fits the current MB format. If I get started on a format without any opcodes in the beginning of each line, that format will require new keywords. In that case, you get two sets of opcode names for the MB, the old one and a new one. You also get an option to select what to use with the decompiler since the new system will be slower than a... slow thing... like a compiler written in basic. By me. dozingoff.gif

 

Share this post


Link to post
Share on other sites
Barton Waterduck

I messed up the converter in the 1.41 X version of the builder when I wrote the converter for the SA builder. Fixed. Same links.

 

Share this post


Link to post
Share on other sites
Y_Less

Barton, how does the builder recognise if a selected folder contains Vice City?

 

I need to trick it into thinking I have it installed on a machine I dont.

Share this post


Link to post
Share on other sites
random_download

You need to have a folder called 'data' containing a file called 'default.ide', and a folder called 'text' containing a file called 'american.gxt'

 

EDIT: sp

Edited by random_download

Share this post


Link to post
Share on other sites
Y_Less

Ahh, cheers.

 

I tried making a file called VC.EXE, as I thought that was a sensible guess, but it didn't work.

 

I guess I'll have to use those real files for the de-compile to work.

Share this post


Link to post
Share on other sites
Barton Waterduck

The compiler uses the 'default.ide' (and perhaps some other files). The SA MB uses a hole bunch of files. The latest creation needs 'info.zon'. You can use that MB without anything installed. You can in the VC MB too and I have posted about it before. I've forgotten all about it now and don't bother looking for it again. Just put a hole bunch of files in the MB directory. If you do, it runs in a sort of buggy PS2 compatibility mode so... maby you shouldn't.

 

Share this post


Link to post
Share on other sites
Y_Less

Another question:

 

What command line parameters are there, I've been looking through all the menus recently for something I'm working on and that just came to my attention?

Share this post


Link to post
Share on other sites
spaceeinstein

I don't know where should I post it so I'll post it here.

 

I thought this opcode was already known. The MB used this:

 

055A: 1

 

This site says this:

 

055a 1 unknown -/- no -/-

 

It creates a second type of newspaper trash around the city. I saw that code when I was finding the extra trash made after the Dildo Dodo mission for my mod.

Share this post


Link to post
Share on other sites
Barton Waterduck

 

What command line parameters are there

What do you need ?

 

spaceeinstein: Thanks.

 

Share this post


Link to post
Share on other sites
Y_Less

Just all of them, can't say what I want till I know what there are.

Share this post


Link to post
Share on other sites
Barton Waterduck
Just all of them, can't say what I want till I know what there are.

I ment, what are your needs ? What do you require ? A command line compiler ?

 

Share this post


Link to post
Share on other sites
Y_Less

Well in the MB, there is a command line dialogue. I just wanted to know what the valid commands there were for it.

Share this post


Link to post
Share on other sites
Barton Waterduck
Well in the MB, there is a command line dialogue. I just wanted to know what the valid commands there were for it.

The IDE was originally a "text editor" for powerbasic source codes. It had commandline options for that I think. It still has options to run stuff by pressing F10. Some people has used it to run GXT editors and my codecreator by pressing F10 and selecting the tool. Pretty useless if you ask me (since the windows start menu does the same thing).

 

So it has none. Sounded like you needed something.

 

Share this post


Link to post
Share on other sites
Y_Less

I did know it was a converted editor, but I thought I had heard some people going on about comand line editing before, apparently not.

Share this post


Link to post
Share on other sites
Barton Waterduck

A somewhat massive update to the Vice mission builder.

 

Version 1.5 released.

 

New stuff:

- The 'keywords.txt' file is now linked to the compiler to allow coding

without specifying any opcodes with any code.

- Code macroes LOAD, BUILDCAR, BUILDACTOR and WAITDEF added.

- The F1 searching function didn't work with upper case or mixed case

words. Fixed.

- The 'NOT' keyword can now be used both before and after the 'INT' and

'FLOAT' keywords and also with any other codes that do not use opcodes.

- Some commands for jump instructions, mainly JMP, JUMP, GOTO, GOSUB,

JF and JUMP_IF_FALSE no longer require the data type '£' on the label.

You can still (with some exceptions) force jumps to be local or global.

If the opcode is not specified, global jumps in missions using the above

codes is detected by the error checking system and will not be allowed.

Other commands like 'createthread' is not checked.

 

 

 

4.17  Macroes

 

These macroes have existed for a while now but never made their way

into this readme.

 

Macro: IFDEF ££<label>

 

Equals:

00D6: if 0

0256:  player $PLAYER_CHAR defined

004D: jump_if_false ££<label>

 

- - -

 

Macro: DEF

 

Example:

if

  DEF

jf ££<label>

 

Equals:

00D6: if 0

0256:  player $PLAYER_CHAR defined

004D: jump_if_false ££<label>

 

- - -

 

A new one, wAITDEF

 

(To be used in MAIN only)

 

Equals:

:<internal label>

0001: wait 250 ms

00D6: if 0

0256:  player $PLAYER_CHAR defined

004D: jump_if_false ££<internal label>

 

- - -

 

Macro: LOAD <models list>

 

Example (in MAIN):

load #hunter #rcbaron #army #stallion

 

Gets compiled to:

0247: request_model #HUNTER

0247: request_model #RCBARON

0247: request_model #ARMY

0247: request_model #STALLION

 

:<internal label>

0001: wait  0 ms

00D6: if  3

0248:  model #HUNTER available

0248:  model #RCBARON available

0248:  model #ARMY available

0248:  model #STALLION available

004D: jump_if_false ££<internal label>

 

- - -

 

Macro: <returned car handle> = BUILDCAR <model> AT <x> <y> <z>

 

Example (used in MAIN): $MyCar = buildcar #stallion at 1.0 2.0 3.0

 

Gets compiled to:

0247: request_model #STALLION

 

:<internal label>

0001: wait  0 ms

00D6: if  0

0248:  model #STALLION available

004D: jump_if_false ££<internal label>

00A5: $MyCar = create_car #STALLION at  1.0  2.0  3.0

0249: release_model #STALLION

 

- - -

 

Macro: <returned actor handle> = BUILDACTOR <group> <model> AT <x> <y> <z>

 

Example (used in a mission): $MyActor = buildactor 6 #pga at 0.0 0.0 0.0

 

Gets compiled to:

0247: request_model #PGA

 

:<internal label>

0001: wait  0 ms

00D6: if  0

0248:  model #PGA available

004D: jump_if_false £<internal label>

009A: $MyActor = create_actor  6 #PGA at  0.0  0.0  0.0

0249: release_model #PGA

 

- - -

 

 

Design you own BASIC like format (not really tounge.gif )

 

; Format: <keyword> <opcode> [<keyword position>]

;

; If <keyword position> is not specified, it is set to 1.

;

; If the source code in the builder is  <returned variable> = <function> <parameters>

; then the position of the keyword is 3.

;

; If the source code in the builder is  <statement> <parameters>

; then the position of the keyword is 1.

;

; The format is still "fluent". You can write any descriptive text AFTER the function or statement.

; This order of the parameters is set in the 'vicescm.ini' file. This file must follow that file.

;

; This file is not complete. Please write your own file and release it on gtaforums.

;

; Please report any bugs.

 

 

Pick a link:

http://home.no.net/barton57/ViceBuilder15.zip

http://home.c2i.net/barton49/ViceBuilder15.zip

http://home.tiscali.no/donkey99/ViceBuilder15.zip

 

Share this post


Link to post
Share on other sites
Y_Less

Nice, those hard coded macros will free up alot of my macro space. Is it possible to define your own macros, basic ones like the player defined ones. I know theres the macros in the builder, but they suck a litle bit, are only one line and don't take parameters.

Share this post


Link to post
Share on other sites
Barton Waterduck
Is it possible to define your own macros, basic ones like the player defined ones.

I could try to make customable multi-line macroes.

 

Share this post


Link to post
Share on other sites
Y_Less

It shouldn't be too hard, and then you could have a macros.txt file where they are stored and edited.

Share this post


Link to post
Share on other sites
Barton Waterduck
It shouldn't be too hard, and then you could have a macros.txt file where they are stored and edited.

Yes, I like that idea very much. Thanks. biggrin.gif

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.