Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!   (84,964 visits to this link)

    2. News

    1. GTA Online

      1. Find Lobbies & Players
      2. Guides & Strategies
      3. Vehicles
      4. Content Creator
      5. Help & Support
    2. Crews

      1. Events
      2. Recruitment
    1. Grand Theft Auto Series

    2. GTA Next

    3. GTA V

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

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

    6. GTA Vice City Stories

    7. GTA Liberty City Stories

    8. GTA San Andreas

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

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

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

      1. GTA Advance
      2. GTA 2
      3. GTA
    12. 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

    2. Red Dead Redemption

    3. 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. Forum Support

    2. Site Suggestions

LINK/2012

GTA3script Toolchain

Recommended Posts

LINK/2012

KjAOz7nm.png 4pAZhGCm.gif


GTA3script Toolchain


This is a compiler, editor extension, and debugger for the GTA3script language, which was the de facto language used by Rockstar North to code the mission scripts of the 3D Universe.

The compiler is cross-platform, well tested and provides a CLI interface based off GCC/Clang. So if you are familiar with command line interfaces, this should be pretty standard for your tastes.

The editor extension is a extension for VSCode, which is a lightweight, cross-platform, and extensible text editor (definitely not Visual Studio). Such extension provides syntax highlighting, auto-completion and documentation crawled from GTAModding and GTAG. This provides access to the compiler as well, so there's no need to touch the command line interface if you aren't familiar with that.

The debugger is a client-server protocol which supports breakpoints, variable watching, and more. It's currently work-in-progress, but you should see it working together the editor extension pretty soon. Do note it is a protocol, as such it is game, compiler and editor agnostic, it just needs to be implemented on them.

Everything is open source, as usual, and as noticed, it's all future-proof, in such a way that it can be used in future recreations of the game, such as OpenRW.

This is compatible with all three games in the trilogy, III, Vice City and San Andreas.

Get It:
  • Download the compiler, or compile it yourself.
  • Download VSCode and the extension (read the instructions).
  • Download the debug server... ehh.. not yet.
It's dangerous to go alone, take this:Special Thanks:
  • Wesser for immensurable help in understanding the language, its principles and its future.
  • Deji for his previous research and attempts at making a working compiler.
  • Junior_Djjr and Silent for testing and feedback.
I would also like to thank a certain company, without their slips, this wouldn't be possible. Edited by LINK/2012

Share this post


Link to post
Share on other sites
Silent

first

Share this post


Link to post
Share on other sites
Inadequate

Second.

 

MlqnVaO.jpg

Share this post


Link to post
Share on other sites
fastman92

Good job.

Try to make it compatible with other than GTA 3 games, if it's not.

Share this post


Link to post
Share on other sites
Junior_Djjr

I met LINK/2012 in 2011 when he was still learning a create custom scripts.

Today he totally recreated the way to make such mods, in an incredible way. This renews the forces (and fun) of modding.

 

Now my mods will be created using it, and I'll share some source codes here.

 

btw this thing is cool to use together.

Share this post


Link to post
Share on other sites
Blackbird88

Good job.

Try to make it compatible with other than GTA 3 games, if it's not.

LINK didn't specifically noted it in OP, but III/VC/SA are supported AFAIK.

Share this post


Link to post
Share on other sites
_Israel_

Now my mods will be created using it (...)

We are 2, that gives a certain mood !

Share this post


Link to post
Share on other sites
The_GTA

Very professional product! Noted that I take a look at this in my spare time.

Share this post


Link to post
Share on other sites
thehambone

It's great to see a compiler for the native GTA3-era scripting language! Looks very well-built and authentic, as if Rockstar created the tool themselves. Awesome work! :^:

Edited by thehambone

Share this post


Link to post
Share on other sites
fastman92

You should implement a support of GTA LCS/VCS as well.

Share this post


Link to post
Share on other sites
Silent

You should implement a support of GTA LCS/VCS as well.

It is a open source project, you could help with an contribution too ;)

Edited by Silent

Share this post


Link to post
Share on other sites
LINK/2012

You should implement a support of GTA LCS/VCS as well.

I don't know if LCS/VCS support is worth it. We'll need to guess a lot of language semantics and command names, and that should be done carefully. Since nobody does Stories scripting, this would be an unnecessary danger.

Share this post


Link to post
Share on other sites
fastman92

 

You should implement a support of GTA LCS/VCS as well.

I don't know if LCS/VCS support is worth it. We'll need to guess a lot of language semantics and command names, and that should be done carefully. Since nobody does Stories scripting, this would be an unnecessary danger.

 

I have studied LCS/VCS SCM for a long time.

A plenty of commands got carefully researched.

Edited by fastman92

Share this post


Link to post
Share on other sites
Ash_735

So why not help out then? Oh wait, you'll only do it if you can somehow attach f92 in there somewhere ;)

Share this post


Link to post
Share on other sites
thehambone

Support for LCS/VCS would certainly be useful for me. Hex editing main.scm is a pain.

Share this post


Link to post
Share on other sites
Silent

gta3sc aims for accuracy though and we know almost nothing about Stories-exclusive SCM features which requires even more guessing - and the more guessing is used, the worse the tool becomes.

Share this post


Link to post
Share on other sites
fastman92

Support for LCS/VCS would certainly be useful for me. Hex editing main.scm is a pain.

I have a simple SCM compiler for GTA LCS and VCS, which uses a limited Sanny Builder syntax.

Hex editing of main.scm is the worst that can be done.

Share this post


Link to post
Share on other sites
goodidea82

A translator from SB would be great, to port existing mods.

A decompiler would also be great, it is very useful for learning and checking scripts from other people.

Edited by goodidea82

Share this post


Link to post
Share on other sites
LINK/2012

A translator from SB would be great, to port existing mods.

A decompiler would also be great, it is very useful for learning and checking scripts from other people.

I tried writing a high-level decompiler at some point but I failed miserably and ended up frustated :p. A low-level one exists by the way and was used to decompile VC/SA so they could be test cases, it isn't very intuitive to use though. I could try again at some point (don't count on it) since I learnt a lot with the mistakes on the first try, but at the moment I'm expecting Seemann to finish his attempt.

 

The translator should be pretty straightforward to do really, but I invite somebody else to write one since I don't really feel like it. A Python script should be a good pick :).

Edited by LINK/2012

Share this post


Link to post
Share on other sites
Junior_Djjr

I also thought about a translator, including the first things I did with GTA3script was to manually translate some mods I've already created. (right now I'm translating one more).

I didn't even give this tip to LINK/2012 because, in a way, not having a translator is good, because you are required to translate it manually, and at the beginning this helps you to practice.

Share this post


Link to post
Share on other sites
Vadim M.

Good job! :catloaf:

Share this post


Link to post
Share on other sites
LINK/2012

Updated with some fixes.

Share this post


Link to post
Share on other sites
LINK/2012

Added a complete GTA3script tutorial by Junior_Djjr on the OP.

 

It assumes no previous programming knowledge from the reader. It's in Brazilian Portuguese, but still may be helpful.

Edited by LINK/2012

Share this post


Link to post
Share on other sites
gts.

I'm very interested on this. Will be some kind of converter available for Sanny Builder to GTA3script? I mean, will be a pain in the ass re-write long Sanny scripts to port them into GTA3script.

Share this post


Link to post
Share on other sites
fastman92

This is the core reason why I cannot develop CLEO scripts using GTA3script Toolchain.

The amount of time that would be required to rewrite the Sanny Builder code into GTA3script is prohibitive.

It's not an option to throw away everything what has already been made for Sanny Builder.

Edited by fastman92

Share this post


Link to post
Share on other sites
thehambone

It's not an option to throw away everything what has already been made for Sanny Builder.

Who says you have to do that, though? GTA3script seems more like an alternative, rather than a replacement, for Sanny's scripting.

Share this post


Link to post
Share on other sites
Silent

The way I see it you should treat this as "ok, next time I do SCM stuff I'll use gta3sc".

Share this post


Link to post
Share on other sites
spaceeinstein

Is it possible to do weird tricks that R* never used, like the assignment of a label to a variable? In SB:

 

[email protected] = @label

Share this post


Link to post
Share on other sites
Wesser

Yes, partially. Doing so, we would pay the price of putting a brand new token in front of *VAR_INTs (alike the dollar sign leading *VAR_TEXT_LABELs), because the identifier of variables and label references can conflict without issues (unlike string constants). Configuring the SET command pair to grant such an assignment, the compiler wouldn't be capable of matching the right alternative and differentiating *VAR_INT from LABEL arguments. That said, featuring the GET_LABEL_FILE_OFFSET command by the runtime is the only way to go (in view of the decompilation process as well).

Edited by Wesser

Share this post


Link to post
Share on other sites
Deji

Bravo, you managed where I failed in making the essential GTA modding tool which will be heavily underappreciated and mostly unused.

 

Next step is to realise SCR and "CLEO VM" or whatever it should be called ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

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