[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Игры серии GTA » GTA San Andreas » SCRAmbl - новый компилятор скриптов
SCRAmbl - новый компилятор скриптов
DK22Pac
Друзья
TOP Скриптер
16.12.13 06:10
Offline
SCRambl - компилятор скриптов для серии игр GTA, с использованием высокоуровневого SCR-языка.
Страница проекта
Отмечу основные преимущества данной программы-компилятора:
-Возможность компиляции нескольких скриптов за раз, в.ч. возможность сборки т.н. "проекта" - файла скриптов (.scm), который состоит из нескольких скриптов/миссий;
-Опция авто-оптимизации скриптов;
-Возможность использования макросов;
-Возможность использования команд препроцессора;
-Использование оригинального синтаксиса SCR (скриптовый язык, который используется в серии игр GTA);
-ASM-конструкции;
Инструкция по установке и использованию:
1) Скачиваем архив из ссылки выше (Download Current BETA)+ этот exe(ссылка);
2) Распаковываем в отдельную папку (желательно в папке с GTA SA), заменяем SCRAmbl.exe на exe из архива hotfix;
3) Залезаем в файл настроек (файл config.ini):
Прописываем путь к игре здесь:
Код
; Relative to InstallPath
InstallPath=D:\Games\GTA_SA

4) Открываем run.dat в блокноте, прописываем:
Код
SCRambl.exe -o test.sc -c -p

5) Создаём в папке с SCRambl.exe файл test.sc, открываем его в Notepad++.
6) На панели инструментов Notepad++: Синтаксис > Свои настройки;
7) На панели инструментов Notepad++: Вид > Пользовательское определение языка;
8) В появившемся окне: Импортир. > Импортируем файл (ссылка);
9) В поле "Польз. язык" выбираем "ScrAmbl". По желанию также можно сохранить синтаксис ("Сохранить как...")
10) Закрываем окно настройки синтаксиса: на панели инструментов Notepad++: Вид > Пользовательское определение языка;
11) Выбираем новый синтаксис: на панели инструментов Notepad++: Синтаксис > ScrAmbl.
12) Можно начинать скриптить)
Самый простой код:
Код
SCRIPT_NAME( "Test" )
WAIT 0
TERMINATE_THIS_CUSTOM_SCRIPT( )

Сохраняем этот файл в Notepad++ (Файл > Сохранить);
13) Запускаем run.bat, получаем файл test.scc;
14) Полученный файл переименовываем в test.cs.

Ещё немного информации:
В файле config\gtasa\commands.def можно найти список доступных команд.
В файле config\gtasa\types.def можно найти список доступных типов.

Добавлено (16.12.13, 05:10)
---------------------------------------------
Метки
Мы будем использовать метки для именования функций. Синтаксис метки такой:

Код
Label:

Глобальные переменные
Перед использованием переменных их нужно обьявить:
Код
VAR_INT myIntVar // глобальная переменная с типом integer
LVAR_FLOAT myLocalFloatVar // локальная переменная с типом float

Обычно, в CLEO скриптах мы будем использовать локальные переменные.
Локальные переменные можно обьявить только внутри функции. Тело функции определяется фигурными скобками, например:
Код

LVAR_INT value // нельзя обьявить локальную переменную вне { }

Main:
{
}

Код


Main:
{
     LVAR_INT value // так - правильно
}

wmysterio
Администраторы
Скриптер
16.12.13 16:51
Offline
Вот это вещь! Смотрел пример проекта - там не используют задержек!
+ система многоуровневости
+ конструкция switch
+ скрипт синтаксически напоминает ф-ю на языке C.
smile Скриптовый язык лёгок в освоении, так как имеет простой синтаксис.

Вот код из примера:
Код
#if FALSE
      ALPHA Checklist:
     [x] Basic Syntax
      [x] Inline & block comments
      [x] Non-literal strings
      [x] Literal strings
      [x] Labels / offsets
     [*] Scripts
      [x] Scope
      [x] Sub-scripts
      [*] MAIN header
     [x] Control structures
      [x] IF..ENDIF
      [x] WHILE..ENDWHILE
      [x] REPEAT..ENDREPEAT
      [x] CASE..ENDCASE
     [x] Variables
      [x] Variable declarations
      [x] Variable scope
      [x] Variable arrays
      [x] Predefined vars / Timers
     [x] Commands
      [x] Arg-less commands
      [x] Commands with args
      [x] Command overloading
      [x] Argument type detection
     [x] Operators
      [x] Basic operations
      [x] Incremental operations
      [x] Complex operations
      [x] Multiple operations
      [x] Operation overloading
      [x] Operand type detection
     [x] Preprocessor
      [x] In-script command registering + overloading
      [x] In-script variable registering
      [x] Empty macros
      [x] Code macros
      [x] Macros with args
      [x] Preprocessor logic
      [x] Preprocessor blocks
      [x] Hex input
      [x] ASM input
     [x] Miscellaneous
      [x] Case-sensitive
      [x] Translations
      [x] Type extension
      [x] STRICT/BASIC/NONE type matching
      [*] Console
      [x] Optimisations
     46/48
#endif

#define HEY
#undef HEY
#if defined(HEY)
     WAIT 1000
#endif

#register_command 0FFF SUM_COMMAND(i,=f)

GOTO End

VAR_INT var1 var2
VAR_FLOAT array[4]

var1 = var2

#register_var 38 LVAR_INT custom_var 0 true

custom_var = 38
//SUM_COMMAND(var1, array[var1])  // FF 0F 02 08 00 07 0C 00 08 00 04 81

timera = 0

IF NOT var1 = 0
OR NOT array[var1] = 0
     ++var1
     var1--
ENDIF

CASE var1
     WHEN 0
      GOTO End
     WHEN 1
      ++var1
     ELSE
      var1 = 0
ENDCASE

WHILE NOT var1 = 0
OR NOT array[var1] = 0
     ++var1
     var1--
ENDWHILE

REPEAT 5 var1
     PRINTINT2 "__SCRAMBL_VER" __SCRAMBL_VER
ENDREPEAT

array[var1] = 1.0

SAVE_STRING_TO_DEBUG_FILE "HALLO!"

PRINT_BIG(SCRambl,5000,2)
PRINT_BIG(SCRamble,5000,2)

{
     LVAR_INT scr_lvar
     LVAR_FLOAT scr_fvar
         
     var1 = 5 + 5 + 5  /* compiled:
            var1 = 5
            var1 += 10
            (could be improved to simply var = 15)
            */
     var1 = var1 + 4   // compiled: var1 += 4
     var1 = 0 + 5
         
     scr_fvar = 1.0
     scr_fvar += 5.565656
     scr_fvar *= -2.0
         
     var1 += 999999
     ++var1
     var1++
     ++ var1
     var1 ++
         
     #hex
     SCRIPT_NAME 09 4D41494E00000000 /* 'MAIN' */
     DO_FADE 04 00 04 00
     2C04 05 9300
     0D03 05 BB00
     GOTO 01 hex_label
     0600 03 scr_lvar 01 hex_label

     hex_label:
     PRINTSTRING 0E 08 "SCRambl" 00
     #endhex
}
{
     LVAR_INT lvar1 lvar2
     lvar1 = lvar2 + 5000
     lvar1 = 0
     lvar2 = 366
     var1 = 0
}
End:


DK22Pac, где ты откопал эту прогу? (можно смастерить визуальный редактор с поддержкой всех команд для удобного поиска)
Отредактировал Slivkin-Sergey - Понедельник, 20.01.14, 17:49

BoPoH
Друзья
16.12.13 19:51
Offline
Интересная, конечно, штучка, но я, пожалуй останусь на СаниБилдере smile

Форум » Игры серии GTA » GTA San Andreas » SCRAmbl - новый компилятор скриптов
Страница 1 из 11
Поиск: