Seemann 169 Posted August 19, 2005 (edited) Sanny Builder is a fast and powerful tool designed for the GTA 3D game series (GTA3, VC, SA; partially LCS and VCS). It is aimed 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.comCurrent version: 3.2.2Last update: 2014-07-05 Further reading at GTAModding.com: Sanny Builder Mission_Scripting (Overview) CLEO Follow me @SannyBuilderDev Edited July 5, 2014 by Seemann Share this post Link to post Share on other sites
Demarest 22 Posted August 19, 2005 Does it support Direct Memory Access? Share this post Link to post Share on other sites
Seemann 169 Posted August 19, 2005 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. Share this post Link to post Share on other sites
Un3462 1 Posted August 19, 2005 got a screenshot? code sample? Share this post Link to post Share on other sites
Seemann 169 Posted August 19, 2005 got a screenshot? code sample? mmm... download program by link and try Share this post Link to post Share on other sites
random_download 0 Posted August 19, 2005 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. Share this post Link to post Share on other sites
Seemann 169 Posted August 19, 2005 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. Share this post Link to post Share on other sites
Un3462 1 Posted August 19, 2005 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. Share this post Link to post Share on other sites
Demarest 22 Posted August 19, 2005 syntax seems to be very builder-like Sure does. But without DMA. from me. Not that I can do any better, but DMA is too fun. Share this post Link to post Share on other sites
steve-m 20 Posted August 19, 2005 Erm, what is actually different from builder syntax, except the labels? Share this post Link to post Share on other sites
jonc 0 Posted August 19, 2005 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. Although personally I'm still partial to Point. Share this post Link to post Share on other sites
DaEllum67 0 Posted August 20, 2005 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 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. Share this post Link to post Share on other sites
Seemann 169 Posted August 20, 2005 (edited) 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? Edited August 20, 2005 by Seemann Share this post Link to post Share on other sites
Craig Kostelecky 398 Posted August 20, 2005 Point is still in development. You can see it at Jon's website. Share this post Link to post Share on other sites
Demarest 22 Posted August 20, 2005 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. Share this post Link to post Share on other sites
Seemann 169 Posted September 3, 2005 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.ru/builder/eng.html In future versions I will try to make the syntax more different from the Mission Builder's one. Maybe something like MB's keywords or commands like Delphi or C++ eg inc($Var) will compiled as 0008: $Var += 1;; integer values so, as Barton will not develop his tool, do you help me to make new Builder? Share this post Link to post Share on other sites
demonj0e 0 Posted September 3, 2005 cool but i downloaded and the files are corrupt Share this post Link to post Share on other sites
Demarest 22 Posted September 3, 2005 inc($Var) will compiled as 0008: $Var += 1;; integer values Opcode 0008 has two parameters. "inc($var)" makes no provision for specifying how much to increment by. Share this post Link to post Share on other sites
spaceeinstein 1,739 Posted September 3, 2005 (edited) 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. Edited September 3, 2005 by spaceeinstein Share this post Link to post Share on other sites
random_download 0 Posted September 3, 2005 inc($Var) will compiled as 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: $var:= $var2 + $var3 - 5; And it will compile to: $var = $var2$var += $var3$var -= 5 Share this post Link to post Share on other sites
superglitch 0 Posted September 3, 2005 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 Share this post Link to post Share on other sites
spaceeinstein 1,739 Posted September 4, 2005 I got an error when compiling: http://img.photobucket.com/albums/v41/spac...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! Share this post Link to post Share on other sites
Demarest 22 Posted September 4, 2005 Besides that, @33 is the maximum in threads. Share this post Link to post Share on other sites
Seemann 169 Posted September 4, 2005 @spaceeinstein 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. Can you not make it automatic? OK. Output file will be deleted if decompilling fails. The find feature kind of sucked yeah, you are right. In future I will make new find feature, maybe like in Delphi. 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 DEFINE MISSION at @Label ? Where do you insert it? After all missions or in the end of file? @random_download 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: 0084: $var = $var2 ;; integer values and handles 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 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 Besides that, @33 is the maximum in threads. oops. my bad Share this post Link to post Share on other sites
Demarest 22 Posted September 4, 2005 But how can I know what type of variables is used: integer or float? so, there is can be two opcodes: 0084: $var = $var2;; integer values and handles 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 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. Share this post Link to post Share on other sites
random_download 0 Posted September 4, 2005 Declaring variables would probably work better than asking the user to say float/integer every time. Share this post Link to post Share on other sites
ZAZ 486 Posted September 4, 2005 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 Share this post Link to post Share on other sites
spaceeinstein 1,739 Posted September 4, 2005 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 DEFINE MISSION 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 Share this post Link to post Share on other sites
Seemann 169 Posted September 5, 2005 (edited) @spaceeinstein ok, I have solved first problem. It looks like SaMB had wrote your scm's header info incorrectly. HOTDOG: Base = 3598795 Size = 725AAA: Base = 0 Size = 8CARDRIVER: Base = 8 Size = 17601HELIDRIVER: 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 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. Edited September 5, 2005 by Seemann Share this post Link to post Share on other sites
spaceeinstein 1,739 Posted September 5, 2005 Wow, thanks. Anyway to make the local variable check an option? Share this post Link to post Share on other sites