Quantcast

Jump to content

» «
Photo

[REL] Sanny Builder

595 replies to this topic
Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#1

Posted 19 August 2005 - 02:24 PM Edited by Seemann, 3 weeks ago.

Sanny Builder is a fast and powerful tool designed for the GTA 3D game series (GTA3, VC, SA; partially LCS and VCS). The main goal of it is to make the process of editing game scripts and missions as easy as it's possible.

It includes a disassembler, permitting the end-user to quickly disassemble the MAIN.SCM file which contains game scripts, and a compiler which produces a binary script file readable by the game.

 

The editor itself offers a large number of useful functions such as; syntax highlighting, error checking, advanced search tools, player coordinates reading, fast movement through code and much more.

Sanny offers an advanced code syntax which is similar to existing programming languages. This syntax includes changeable classes, keywords and high-level statements. We recommend you continue reading and fully explore the help section to learn more about SB and its capabilities. We provide a wealth of information that will help you get started in mission coding. Now that you have discovered some of the possibilities.


Official website: http://sannybuilder.com

Current version: 3.2.0

Last update: 2014-03-22




sb3_002th.gif sb3_003th.gif sb3_004th.gif

 

Further reading at GTAModding.com:

  • fastman92 and Worship like this

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#2

Posted 19 August 2005 - 02:29 PM

Does it support Direct Memory Access?

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#3

Posted 19 August 2005 - 02:35 PM

QUOTE
Does it support Direct Memory Access?

At a current stage of development - is not present, but most likely that DMA will be in the future.

Un3462
  • Un3462

    Mack Pimp

  • Members
  • Joined: 27 Jun 2002

#4

Posted 19 August 2005 - 03:13 PM

got a screenshot? code sample?

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#5

Posted 19 August 2005 - 03:35 PM

QUOTE
got a screenshot? code sample?

rolleyes.gif mmm... download program by link and try smile.gif

random_download
  • random_download

    :o

  • Members
  • Joined: 07 Mar 2004

#6

Posted 19 August 2005 - 03:38 PM

It seems that there must be at least one mission/external script/object defined for it to compile, and I'm having trouble building an empty script. In the GTA:MA GUI you clicked on new project and it made an empty script for you.
Also, there is another compiler called Point, but it is not fully working for SA yet.

An example script would be nice, otherwise I have to find and decompile an scm.

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#7

Posted 19 August 2005 - 03:47 PM

I think, it is necessary to create by pressing File/New not simply empty file, but certain totally_stripped script where already have a defines, main section, etc, but there is no code of mission. AFAIR in GTA MA it referred as Standard File. I have taken it on a note. wink.gif

Un3462
  • Un3462

    Mack Pimp

  • Members
  • Joined: 27 Jun 2002

#8

Posted 19 August 2005 - 03:55 PM

found a screenshot anyway.

syntax seems to be very builder-like, with a touch of gtama. good job, i say, but builder syntax is too fugly for me. :p

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#9

Posted 19 August 2005 - 04:00 PM

QUOTE (CyQ @ Aug 19 2005, 11:55)
syntax seems to be very builder-like

Sure does. But without DMA. user posted image from me. Not that I can do any better, but DMA is too fun.

steve-m
  • steve-m

  • Members
  • Joined: 26 Jul 2002

#10

Posted 19 August 2005 - 04:07 PM

Erm, what is actually different from builder syntax, except the labels? notify.gif

jonc
  • jonc

    Snitch

  • Members
  • Joined: 02 Nov 2004

#11

Posted 19 August 2005 - 05:14 PM

Argh! Why bother making a new mission assembler when it will just use that same ugly MB syntax? Faster is better, but might as well make the syntax usable while you are at it. smile.gif Although personally I'm still partial to Point.

DaEllum67
  • DaEllum67

    Liberty City Coder

  • Members
  • Joined: 02 Oct 2004

#12

Posted 20 August 2005 - 02:35 AM

Wow. I never imagined we'd have 2 bartonspeak tools for SA and no GTAMA. This is vastly superior to Barton's last installment of SAMB, but it is still using BW's code format confused.gif

But the code converter on your site is definately getting added to my Utilities collection, however one going the other way would be even better. cool.gif

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#13

Posted 20 August 2005 - 03:20 AM Edited by Seemann, 20 August 2005 - 03:49 AM.

QUOTE (Demarest @ Aug 19 2005, 14:29)
Does it support Direct Memory Access?

I'm not sure what does DMA in BW's mission builder do.
In my editor the global variable $100 (for example) points to memory address 256 (because var has hex name) multiplied on 4 of variable buffer that is in the beginning of scm, $101 points to memory address 257 * 4 an so on. For variables with text names (e.g $MyVar) memory addresses in the end of var buffer are used. You never knows which addresses will be for these variables.
You can operate with variables with hex names for DMA.


What is the Point and where I can see that?

Craig Kostelecky
  • Craig Kostelecky

    GTA:LC Team Leader

  • The Connection
  • Joined: 28 Jan 2004

#14

Posted 20 August 2005 - 05:09 AM

Point is still in development. You can see it at Jon's website.

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#15

Posted 20 August 2005 - 05:12 AM

Well then it sounds as if yours DOES support DMA. And with the exception of hex vs decimal, that's just one more way it's like Barton's last release.

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#16

Posted 03 September 2005 - 12:35 PM

Sanny Builder v1.0 is now released.

I added many new features in this version.

More information and screenshot are available here
http://gtacoding.nm....uilder/eng.html

In future versions I will try to make the syntax more different from the Mission Builder's one. tounge.gif
Maybe something like MB's keywords or commands like Delphi or C++

eg

CODE

inc($Var)


will compiled as

CODE

0008: $Var += 1;; integer values


so, as Barton will not develop his tool, do you help me to make new Builder?

demonj0e
  • demonj0e

    Sa Coder In Training

  • Members
  • Joined: 05 Apr 2005

#17

Posted 03 September 2005 - 03:07 PM

cool but i downloaded and the files are corrupt

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#18

Posted 03 September 2005 - 03:22 PM

QUOTE (Seemann @ Sep 3 2005, 08:35)
CODE
inc($Var)

will compiled as
CODE
0008: $Var += 1;; integer values

Opcode 0008 has two parameters. "inc($var)" makes no provision for specifying how much to increment by.

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#19

Posted 03 September 2005 - 04:12 PM Edited by spaceeinstein, 03 September 2005 - 04:27 PM.

How come when I tried to decompile a modded SCM (like my All In One), there's an error that said "Unknown file header"?

Everytime I decompile something, a text file is automatically saved into the computer. Can you not make it automatic?

The find feature kind of sucked. It either starts from the beginning or the end of the file, not from the cursor.

random_download
  • random_download

    :o

  • Members
  • Joined: 07 Mar 2004

#20

Posted 03 September 2005 - 06:45 PM

QUOTE (Demarest @ Sep 3 2005, 15:22)
QUOTE (Seemann @ Sep 3 2005, 08:35)
CODE
inc($Var)

will compiled as
CODE
0008: $Var += 1;; integer values

Opcode 0008 has two parameters. "inc($var)" makes no provision for specifying how much to increment by.

In Delphi it will increment by 1 if another parameter is not specified. So doing: Inc($var, 2); will add 2 to $var.

Better would be to implement a system like in Point, where you can do:
CODE
$var:= $var2 + $var3 - 5;
And it will compile to:
CODE
$var = $var2
$var += $var3
$var -= 5

superglitch
  • superglitch

    <("<)

  • Members
  • Joined: 30 Jul 2005

#21

Posted 03 September 2005 - 09:09 PM

GJ on the program, but horrible job on the site, well it's not bad just it qualifies as horrible because it doesn't work with firefox

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#22

Posted 04 September 2005 - 03:33 AM

I got an error when compiling:
http://img.photobuck...stein/Error.gif
I was inserting a new mission when this thing told me to use @34 as max in threads. But this is a mission!

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#23

Posted 04 September 2005 - 04:06 AM

Besides that, @33 is the maximum in threads.

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#24

Posted 04 September 2005 - 12:12 PM

@spaceeinstein
QUOTE
How come when I tried to decompile a modded SCM (like my All In One), there's an error that said "Unknown file header"?
hmm. I don't know what is happened, but I'll try to fix this problem.

QUOTE
Can you not make it automatic?
OK. Output file will be deleted if decompilling fails.

QUOTE
The find feature kind of sucked
tounge.gif yeah, you are right. In future I will make new find feature, maybe like in Delphi.

QUOTE
I was inserting a new mission when this thing told me to use @34 as max in threads. But this is a mission!
Do you declared it as
CODE
DEFINE MISSION <num> at @Label
? Where do you insert it? After all missions or in the end of file?

@random_download
QUOTE

Better would be to implement a system like in Point, where you can do:

But how can I know what type of variables is used: integer or float? so, there is can be two opcodes:

CODE
0084: $var = $var2 ;; integer values and handles


CODE
0086: $var = $var2 ;; floating-point values only


do prompt every time when program found this, or add declaration section where you can set the type of variable, like
CODE
var
$var : float
$var2 : integer

?

@superglitch
I have no free time to make the multibrowsing site, that would be the same under all browsers. Maybe later...

@Demarest
QUOTE
Besides that, @33 is the maximum in threads.
oops. my bad tounge.gif


Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#25

Posted 04 September 2005 - 12:48 PM

QUOTE (Seemann @ Sep 4 2005, 08:12)
But how can I know what type of variables is used: integer or float? so, there is can be two opcodes:
CODE
0084: $var = $var2;; integer values and handles
CODE
0086: $var = $var2;; floating-point values only
do prompt every time when program found this, or add declaration section where you can set the type of variable, like
CODE
var
$var : float
$var2 : integer

That's really up to you. If you check out Barton's readme, he used a single letter to define integers, fixed strings, etc when in a situation where the compiler had no previous data to go off of. Personally, I never minded datatypes. They told the story every bit as much as say, using 0.0 instead of 0. confused.gif

random_download
  • random_download

    :o

  • Members
  • Joined: 07 Mar 2004

#26

Posted 04 September 2005 - 12:50 PM

Declaring variables would probably work better than asking the user to say float/integer every time.

ZAZ
  • ZAZ

    Kernlochbohrer

  • Members
  • Joined: 10 Jan 2005
  • European-Union

#27

Posted 04 September 2005 - 01:30 PM

QUOTE (superglitch @ Sep 3 2005, 21:09)
GJ on the program, but horrible job on the site, well it's not bad just it qualifies as horrible because it doesn't work with firefox

Thanks for the tip ! I found no working link of seemann, serving with firefox wow.gif

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#28

Posted 04 September 2005 - 03:06 PM

QUOTE (Seemann @ Sep 4 2005, 08:12)
QUOTE
I was inserting a new mission when this thing told me to use @34 as max in threads. But this is a mission!
Do you declared it as
CODE
DEFINE MISSION <num> at @Label
? Where do you insert it? After all missions or in the end of file?

I do know how to add missions successfully (Mod Shop).

DEFINE MISSION 134 AT @BUYPRO1
DEFINE MISSION 135 AT @R_MICH_2858 <---

:BUYPRO1_4285
00BE: text_clear_all
0373: set_camera_directly_behind_player
02EB: restore_camera_with_jumpcut
01B4: set_player $PLAYER_CHAR frozen_state 1
03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0
02A3: toggle_widescreen 0
0004: $ON_MISSION = 0 ;; integer values
01BD: $184 = current_time_in_ms
00D8: mission_cleanup
004E: end_thread
0051: return

;-------------Mission 135--------------- <----

:R_MICH_2858 <----
0050: gosub @R_MICH_2874 <----
0050: gosub @R_MICH_31509 <----
004E: end_thread <----

Seemann
  • Seemann

    Ruhe

  • Members
  • Joined: 03 Sep 2004
  • Russia

#29

Posted 05 September 2005 - 04:49 AM Edited by Seemann, 05 September 2005 - 05:05 AM.

@spaceeinstein
ok, I have solved first problem. It looks like SaMB had wrote your scm's header info incorrectly.

CODE
HOTDOG: Base = 3598795 Size = 725
AAA: Base = 0 Size = 8
CARDRIVER: Base = 8 Size = 17601
HELIDRIVER: Base = 17609 Size = 14118

Base is the start point in global script code where external script should be copied from script.img.
AAA's base is always equal 0. MB should ignore this script and write correct base for next scripts: 3599520 for CARDRIVER and 3617121 for HELIDRIVER. But it doesn't. So, if you will define your scripts before AAA, like
CODE
DEFINE EXTERNAL_SCRIPT_NAME HOTDOG;  77  
DEFINE EXTERNAL_SCRIPT_NAME CARDRIVER;  79  
DEFINE EXTERNAL_SCRIPT_NAME HELIDRIVER;  80  
DEFINE EXTERNAL_SCRIPT_NAME AAA;  78  

and recompile in MB, it should be enough. Sanny will decompile such SCM without any problem. btw, in Sanny script 'AAA' does not occurred at all.

Edit: About find feature. If you have checked 'Search from caret' it will search from cursor, not from beginning of the file.

@superglitch & ZAZ
Do you can not download rar archive from my site? Maybe problem in the hosting. I will try to mirror this file next time.

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#30

Posted 05 September 2005 - 05:15 AM

Wow, thanks. Anyway to make the local variable check an option?




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users