IMG

 
IMG
IMG   IMG
  Welcome to GTAForums! Be sure to check out the Grand Theft Auto V Forum.

You are not registered! (If you are, click here to login) Registering is fast, free and easy and allows you to instantly reply to any topic on GTAForums.
Why wait? Click here to register your own unique username and become part of the ever-growing community!


( Log In | Register | Revalidate Validation E-mail )
Quick Log-In:
  IMG
       
>
Forum Rules GTA Modification Forums

Post mod/code requests in the Mod Requests topic

Post mod releases in the Mod Showroom

Read the Modding Rules BEFORE posting!

GTAGarage.com
free mod hosting from GTANet, simply login with your GTAForums account details

GTAModding.com
GTANet's modding wiki

GTA Modding Chatroom
provided by irc.gtanet.com (Don't have an IRC client? Click here)


Pages: (9) [1] 2 3 ... Last »  ( Go to first unread post ) Reply to this topicStart new topicStart Poll

 [GTA IV|EFLC|REL] Scocl

 High level *.sco script compiler
 
Alexander Blade  
Posted: Monday, Nov 7 2011, 17:36
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




G'day modders ! biggrin.gif

What is this ?
Scocl is high level script compiler for GTA IV and EFLC . This project is based on the c-like llvm compiler . As you already noticed from the name of the project , compiler allows you to create your own sco scripts , which can be interpreted on GTA IV script virtual machine without any plugins and extensions .

Installing :
You must extract all archive contents as they are inside of the archive , so folder and file hierarchy must be the same as in the arch

What's the difference from Alice, Script Hook, etc ?
All this utils were just using script functions , scocl allows to create plain sco scripts , like this was done by R*. Using scocl you have no script restrictions , code your scripts like R* developer .

Why so late ?
Not late ! All RAGE games are using almost the same script bytecode , so it would be much easier to add support for new RAGE-based games .

Command line :
CODE
scocl.exe <globals version> <filein> <dirout> <options>


<globals version> script version stamp , can be GTAIV or TLAD , or TBOGT , also you can use custom value with 0xHEXVERSION
<filein> script source file
<dirout> compiled script output folder
<options> independent options set - GLOBALSEG , KEEPTEMP, DEBUGOUTPUT
GLOBALSEG - compiling script with global segment , only startup script must be compiled with this key
KEEPTEMP - don't delete temp files after compilation
DEBUGOUTPUT - debug script compilation

Examples :
CODE
scocl.exe GTAIV "c:\gta\scripts\main.c" "c:\gta\scripts\out\"
scocl.exe GTAIV "c:\gta\scripts\main.c" "c:\gta\scripts\out\" KEEPTEMP DEBUGOUTPUT
scocl.exe TLAD "c:\gta\scripts\startup.c" "c:\gta\scripts\out\" GLOBALSEG


Change log :
CODE
v0.8 ( 7 Nov 2011 )
First public release

v0.3 ( 15 May 2011 )
First private release


Script writing :
Warning , scocl can't compile any of decompiled scripts , because there is no info inside sufficient for compilation . It's not rly possible to write such decompiler to have all the needed info , so all scripts must be written from scratch .

Decompiled scripts :
While writing new scripts you will need to look into the decompiled scripts anyway , so i had uploaded the pack of the OpenIV decompiled scripts from GTA IV , TLAD and TBOGT . I'm using Total Commander for text search inside of 'em. Note that scocl compiled scripts can't be decompiled using OpenIV or SparkIV becase they are tryn' to find high-level constructions by opcode patterns which were very specified for R* compiler . Scocl is using different pattern set , so you can decompile scocl scripts only to low level , if you will need this use scodcl.exe from the bin folder .

Script files :
All scripts are placed in the script.img and script_network.img archives from <gta dir>\common\data\cdimages dir. We are only interested in the singleplayer. The first script that starts on new game is startup.sco , it loads all ambient scripts and main.sco , main.sco launches initial.sco and switching to the stat and mission control mode . Startup.sco must have global segment inside , all other scripts must not . All scripts in the script.img must have the same globals version (stamp) as startup.sco has .

Script functions :
There are something like ~3000 of natives . Comparing to the scm-engine from previous GTA 3D series , which had one native to one opcode assigned , RAGE has less than 100 opcodes and they look like a real assembler , there is only one opcode for native calling . Native to call is the param of this opcode , this param is a hash of the native name . Before 5th (or something around) patch for GTA IV there was only one hash algorithm , after that patch hash was changed . Compiler is configured for the latest patches , so scocl is using new hash algo . Scripts which were compiled with new hash can't be used with old patches . You can see complete list of the GTA IV and EFLC natives in the inc\natives.h file.

Saves :
Each script can be marked as "save this one" if it will call THIS_SCRIPT_SHOULD_BE_SAVED() native . By default script wont be saved . If you will change the script without wiping out saves , game will crash while loading the save , so you must delete all saves before you can use changed scripts , the same like it was in with scm.

Special features of the scripts :
1. Script.img must have puzzle.sco inside , game checks this script .
2. If you are using globals you must declare them in the separated *.h file , which you must include in all script projects . Global variable name must begin with G_ , for example G_BASE_X , so local var can't begin with G_ , for good examples look into the zombmod .
3. Only ~2000 of ~3000 natives were used in the original scripts , so some of that ~1000 can be broken , noped or even cause game crashing .
4. Almost all multiplayer related natives are commented , im not sure that someone will ever use them .
5. Script startup.sco can't be paused , cycled or saved .
6. In the original scripts some natives can use 3 float params as one Vector3 structure , so param count in the inc\natives.h can be not the same as in the decompiled code .
7. All data types are multiple of 4 , so for example array of 16 chars will look like int[4] .

Examples :
You can find script examples in the projects dir . All of 'em are Visual Studio 2010 projects .

Current example solutions :
"stripped" - fully stripped game scripts with "superman" ability
"zombmod" - classic zombie mod base , tested with GTA IV and TLAD , no idea about TBOGT . Here is the gameplay video of this example


Script editor :
Scocl was desgined to be used with IDE from MSVS , this is the best choise for any script coder . Any MSVS C++ version is ok , starting from 2010 . If you have no MSVS you can download C++ express here , thats free , maybe you will be forced to create dev account before downloading , anyway this will be free too . For the script template project use the one from projects\dummy folder .

Script editing in the MSVS looks like this :
user posted image user posted image user posted image

Links :
You can download scocl and decompiled scripts pack here
http://alexander.sannybuilder.com/gtaiv/scocl

Download latest free version of the MSVS
http://www.microsoft.com/express/Windows


Plans for next time :
CLEO IV . The same thing as was for SA . Project is already started and it works fine with my EFLC , im planning to add support of all patches and publish cleo . Cleo IV suports script saving , like it was in Cleo 3 for SA , also the most incredible thing is that u can create ur own cleo missions without affecting original scripts and saves ! smile.gif

This post has been edited by Alexander Blade on Friday, Apr 12 2013, 18:20
Users WebsitePMXbox Live
  Top
 

 
GTARandom  
Posted: Monday, Nov 7 2011, 20:18
Quote Post


GTA player since 2001
Group Icon
Group: Members
Joined: Jun 15, 2009

cw.gif

Member Award




Wow, keep it up.

I was just working on setting up the TV for a custom safehouse the other day, could you help me a bit with it , seeing as you have tools ready almost?

It seems to be located in the script ambtv.sco but relies on other main scripts, it won't trigger until a certain mission is passed.
PMMSNXbox Live
  Top
 

 
terreur69  
Posted: Monday, Nov 7 2011, 21:09
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



awesom work !!
this will be greatly advance the modding, great work, for cons, a little tutorial would be possible colgate.gif ?
Users WebsitePMMSN
  Top
 

 
ikt  
Posted: Monday, Nov 7 2011, 22:00
Quote Post


 
Group Icon
Group: Members
Joined: Oct 2, 2006

XXXXX



Amazing work, great for gameplay-replacing mods instead of additional mods. One thing though, how is the performance compared to ScriptHook? If I make a very long script in Scripthook which executes every tick, the game starts to lag. And is this like SA their SCM, modifying it makes you start a new game?

@ Alexander Blade below:

Thanks for the info. Heh, so it's all up to the scripter. Good to know smile.gif

This post has been edited by ikt on Monday, Nov 7 2011, 22:37
PM
  Top
 

 
Alexander Blade  
Posted: Monday, Nov 7 2011, 22:27
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




GTARandom
Try to find out what stats and globals ambtv is using

terreur69
Im planning to do the tutorial in the nearest future

ikt
Yep , if any script was modified new game must be started , anyway with cleo iv everything will be okay with saves and additional mods . Btw there is always a way to rewrite script to make it less laggy biggrin.gif Performance is a bit less than native code , anyway like i said , optimization can be done almost for every script .
Users WebsitePMXbox Live
  Top
 

 
terreur69  
Posted: Tuesday, Nov 8 2011, 16:15
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



I try to compile the startup zombmod(no modify ), and what does not work ,, ther is a floder "out " with startup.s feel anything .
and i can not see if there is an error, the command disappears on confused.gif
Users WebsitePMMSN
  Top
 

 
Alexander Blade  
Posted: Tuesday, Nov 8 2011, 19:22
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




r u using MSVC ide ?
it's ok with command line too
CODE
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\Alexander>"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\s
cocl\release\0.8\projects\zombmod\startup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\
"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\scocl\release\0.8\projects\zombmod\st
artup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\
startup.c compile started
startup.c compile finished, elapsed time 1234 ms

C:\Documents and Settings\Alexander>"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\s
cocl\release\0.8\projects\zombmod\startup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\ KEEPTEMP
"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\scocl\release\0.8\projects\zombmod\st
artup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\ KEEPTEMP
startup.c compile started
startup.c compile finished, elapsed time 687 ms

C:\Documents and Settings\Alexander>"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\s
cocl\release\0.8\projects\zombmod\startup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\ GLOBALSEG

"C:\Documents and Settings\0.8\bin\scocl.exe" GTAIV D:\Dev\Gta\scocl\release\0.8\projects\zombmod\st
artup.c D:\Dev\Gta\scocl\release\0.8\projects\zombmod\ GLOBALSEG
startup.c compile started
startup.c compile finished, elapsed time 766 ms

C:\Documents and Settings\Alexander>


This post has been edited by Alexander Blade on Tuesday, Nov 8 2011, 19:27
Users WebsitePMXbox Live
  Top
 

 
terreur69  
Posted: Tuesday, Nov 8 2011, 19:55
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



Users WebsitePMMSN
  Top
 

 
Alexander Blade  
Posted: Tuesday, Nov 8 2011, 20:15
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




you must extract the whole archive into one dir without changing any paths etc
Users WebsitePMXbox Live
  Top
 

 
terreur69  
Posted: Tuesday, Nov 8 2011, 21:00
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



QUOTE (Alexander Blade @ Tuesday, Nov 8 2011, 22:15)
you must extract the whole archive into one dir without changing any paths etc

inlove.gif inlove.gif inlove.gif inlove.gif work perfectly !!! big thanks man !

and is that one can do the opposite .sco > .c ???

This post has been edited by terreur69 on Tuesday, Nov 8 2011, 21:15
Users WebsitePMMSN
  Top
 

 
Seemann  
Posted: Wednesday, Nov 9 2011, 01:39
Quote Post


Ruhe
Group Icon
Group: Members
Joined: Sep 3, 2004

ru.gif

Member Award




Good work. As always.
Users WebsitePM
  Top
 

 
Alexander Blade  
Posted: Wednesday, Nov 9 2011, 09:12
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




QUOTE (terreur69 @ Tuesday, Nov 8 2011, 21:00)
QUOTE (Alexander Blade @ Tuesday, Nov 8 2011, 22:15)
you must extract the whole archive into one dir without changing any paths etc

inlove.gif inlove.gif inlove.gif inlove.gif work perfectly !!! big thanks man !

and is that one can do the opposite .sco > .c ???

Nope , as i wrote in the documentaion - decompilation is impossible
Users WebsitePMXbox Live
  Top
 

 
thaCURSEDpie  
Posted: Thursday, Nov 10 2011, 13:11
Quote Post


GTA:IV scripter
Group Icon
Group: Members
Joined: Jul 1, 2007

XXXXX



Awesome work!

What are the advantages of this over scripthook modding? In scripthook you can do a lot of additional stuff, such as detecting keypresses, playing sounds and displaying graphics / menus.
PM
  Top
 

 
terreur69  
Posted: Thursday, Nov 10 2011, 19:08
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



my games crash to every faith that i place the sco, even those had zombmod confused.gif and even removing the savegames
Users WebsitePMMSN
  Top
 

 
Blaster_nl  
Posted: Thursday, Nov 10 2011, 22:31
Quote Post


GTAV
Group Icon
Group: Members
Joined: Oct 16, 2005

nl.gif

Member Award




Another professional russian, good job.
Users WebsitePMMSNXbox LivePlayStation Network
  Top
 

 
VcSaJen  
Posted: Friday, Nov 11 2011, 03:09
Quote Post


Player Hater
Group Icon
Group: Members
Joined: Jan 24, 2011

XXXXX



Awesome!
PM
  Top
 

 
Skorpro  
Posted: Friday, Nov 11 2011, 03:14
Quote Post


GTAholiker
Group Icon
Group: Members
Joined: Jul 19, 2009

eu.gif

XXXXX



WOW, welcome back! biggrin.gif
Nice work but I'm looking forward to CLEO IV icon14.gif
Users WebsitePM
  Top
 

 
Alexander Blade  
Posted: Saturday, Nov 12 2011, 13:03
Quote Post


Come As You Are
Group Icon
Group: Members
Joined: Nov 5, 2006

ru.gif

Member Award




Thx guyz smile.gif

terreur69
Whats the patch ? Are u deleting all scripts from the script.img and then adding all 11 scripts from the sco folder ?
Users WebsitePMXbox Live
  Top
 

 
Rapier  
Posted: Saturday, Nov 12 2011, 13:33
Quote Post


Retired scripter
Group Icon
Group: Members
Joined: Aug 14, 2005

ba.gif

XXXXX



Hello Alexander, I think you was dead... tounge.gif

I have very little knowledge of C++, could you do to be compiled with Delphi???

Off topic
You will no longer update the plugin ALICE to be used with the latest versions of GTAIV?
PM
  Top
 

 
terreur69  
Posted: Saturday, Nov 12 2011, 14:52
Quote Post


C2C - Down The Road
Group Icon
Group: Members
Joined: Dec 27, 2010

fr.gif

XXXXX



QUOTE (Alexander Blade @ Saturday, Nov 12 2011, 15:03)
Thx guyz smile.gif

terreur69
Whats the patch ? Are u deleting all scripts from the script.img and then adding all 11 scripts from the sco folder ?

i have the GTAIV 1.0.4.0 ( patch 4 ) , and yes i remove the all sco , and i placed the sco zombmod on script.img , the game crash to loading .
Users WebsitePMMSN
  Top
 

 

0 User(s) are reading this topic (0 Guests and 0 Anonymous Users)

0 Members:

Pages: (9) [1] 2 3 ... Last »

Topic Options Reply to this topicStart new topicStart Poll
Search topic for posted by (exact match)



 
IMG IMG