GTA Script Generator - это инструмент, который позволяет генерировать код для Sanny Builder, используя Visual Studio и язык C#. DLL-библиотеки содержат все основные методы, которые часто используются при разработке стандартных main.scm модификаций. Теперь Вы можете более быстро разрабатывать скрипты, не допускать критических ошибок и писать код, используя современный язык C#.
Чтобы использовать эти библиотеки, Вам нужно владеть языком C# на базовом уровне и знать как работают SCM-скрипты. Вам нужно использовать последнюю версию Visual Studio и .NET Framework версии 4.7.2 или выше. Работоспособность на других языках и платформах не гарантируется.
Библиотеки работают только с Sanny Builder v3.5.0 (или выше) и генерирует код специально для него. Есть поддержка как простой генерации кода, так и прямой компиляции в SCM-файл.
Если вы хотите поддержать автора, то скачивайте программу через зеркальную ссылку! Переходя по зеркальной ссылке, вы получаете самую последнюю версию GTASG (7.5b). На сайт загружены только прошлые версии программы.
Основные изменения в 7.5b: + Добавлена поддержка компиляции CLEO-скриптов. + Добавлена поддержка SCM-функций. + Добавлен классы "Union" и "Calculator". + Добавлено свойство "EndJumpTable" в классе "LabelCase". + Добавлены GXT-кодировки от Fargus и BadMan. # Библиотеки теперь используют ".Net Framework 4.8". # Исправлена работа опкода "07E4". # Многие методы были переименованы согласно американской форме написания некоторых слов. Также переименованы некоторые свойства в плагинах. - Свойство "UseAutomaticVariableInitialization" класса "Generator" было удалено.
Show SpoilerHide Spoiler
Основные изменения в 7.2b: + Класс "Memory" теперь может принимать целое число в конструктор. Это позволит указывать прямой адрес в функциях, где требуется этот тип. + Добавлен метод "unsafe_code". + Добавлен статический метод "IndexOf" класса "Variable". # Исправлен баг, когда индекс локальной переменной не позволял использовать переменную массива в миссиях, используя лимит потоков и внешних скриптов. # Исправлен баг, когда оператор > генерировал не тот опкод, когда первым параметром было число. # Свойство "Car.empty" теперь доступно в библиотеке GTA.SA. # Метод "set_tag_status" был переименован на "set_tags_status_in_area". - События "AutoJumpCase" и "AutoJumpEnd" в классе "JumpTable" были удалены.
Основные изменения в 7.1b: + Добавлен метод "do_if_index_in_range" в класс "Array". + В класс "Memory" добавлено событие "Label", которое является идентичным свойству "label". + Добавлен метод "set_volume" для плагина "AudioBackground". + В плагин "Phone" добавлены события "onloadData", "onunloadData" и "OnReplicaChanged". + В класс JumpTable были добавлены 2 события: AutoJumpCase и AutoJumpEnd. + В класс "Original" были добавлены свойства "EnableEmmetsGun", "EnableDefaultArmourPickups", "EnableDefaultBribePickups" и "EnableDefaultMeleeWeaponPickups". + Теперь при инициализации локальных переменных в миссиях будет срабатывать ошибка, если их индексы будут содержать значения 32 и 33. # Тип "Parameter" теперь не может принимать переменные-строки. Лимит на количество передаваемых параметров был изменён на правильный в библиотеках GTA.III и GTA.VC. # Были исправлены методы, которые принимали массивы в качестве параметра. Теперь количество параметров указывается правильно. # Метод "jump( Memory m )" теперь будет показывать предупреждение, если параметр не содержит ссылку на метку (а не вызывать ошибку). # Теперь при обращении к числовому индексу массива актёров его поле "task" будет иметь правильный индекс. # Исправлен метод "start" класса "Timer", который использовал неправильный формат для опкода 014E (GTA.III). # Плагин "Phone" теперь может хранить 24 реплики, а не 20. Также он может хранить неограниченное количество диалогов, а не 75. # Свойство "After" класса "DialogSetup" изменено на поле "OnComplete". # Свойство "EnableDefaultPickups" класса "Original" было переименовано в "EnableDefaultWeaponPickups".
Основные изменения в 7.0b: + Локальные и глобальные переменные уже не требуют предварительной инициализации. + Добавлен упрощённый синтаксис инициализации массивов. + Добавлено свойство "UseAutomaticVariableInitialization" класса "Generator". Оно регулирует использование автоматической инициализации переменных. + Теперь можно указать имя SCM-файлу. + Добавлен тип "Bike" для GTA VC. + Добавлены декоративные типы "sString" и "vString" для GTA III и VC. + Добавлены опкоды 0601 и 0602 для GTA III и VC. # Генератор адаптирован под Sanny Builder v3.5.0 (или выше). # Теперь вместо одной общей библиотеки используются три, чтобы не загружать ненужные методы и классы. # Сокращено количество пространств имён. # Класс свойства FXT полностью переработан. Теперь можно добавлять тексты для нескольких FXT-файлов. # При создании локального массива будет показана ошибка, если переданный тип не используется в локальном контексте. # Генератор парковки теперь имеет методы "init", "init_with_number_plate" и возвращает тип "CarParkGenerator". Старые методы инициализации были убраны. - Большинство свойств класса "Generator" были удалены. Теперь вместо некоторых их них используются методы. - Переменная по умолчанию "ScriptStatus" была удалена. - Удалён метод "set_crouch" класса "Actor" в режиме GTA SA. Это дубликат одноимённого метода класса "TaskManager". - Отключены опкоды GTA III, VC и SA, которые не использовались в main.scm, но нативно поддерживались.
Основные изменения в 5.3b: + Плагин "Original" теперь имеет свойство "After". + Добавлен метод "change_door_lock" для типа Vehicle в режиме GTA III и VC. # Был исправлен метод "start_new_external_script", который принимал параметры. # Методы "Generator.OpenAllMapZones" и "Generator.DisableCheats" были перемещены в плагин "Original". # Был обновлён плагин "Original". Теперь плагин насчитывает 140 скриптов! Добавлены следующие оригинальные скрипты: ## BBALL: Возможность играть в баскетбол; ## CRANES: Возможность использовать краны; ## INTMAN: Делает атмосферу в интерьерах как в оригинальной игре (казино, бар, стрип-клуб и.п.). Возможность покупать одежду, татуировки, стрижки, оружие. Возможность использовать гардероб или стрелять в тире; Добавлена возможность играть в мини-игры, бильярд, делать ставки на скачки или участвовать в битве лоурайдеров; ## R3: Мини-миссии (таксист, медик, пожарный, полицейский, сутенёр, грабитель, машинист поезда); ## TRACE: Возможность участвовать в уличных гонках и турнирах; ## SKOOLS: Возможность проходить школу пилота и остальные; ## ODDVEH: Возможность проходить миссии курьера, триатлон и другие второстепенные задания, связанные с мотоциклами и велосипедами; ## TRUCK: Возможность проходить миссии грузоперевозчика; ## QUARRY: Возможность проходить миссии в карьере; ## VALET: Возможность проходить миссии лакея; ## TRAINS: Позволяет использовать поезда для быстрого перемещения; ## PLANES: Позволяет использовать самолёты для быстрого перемещения; ## HJ: Включает бонусы за безумные трюки; ## IMPND: Атмосфера возле полицейского участка (конфискованный транспорт); ## IMPEXPM: Даёт возможность импортировать и экспортировать транспорт в доках Сан-Фиерро; ## CARPRK1: Включает стандартный генератор парковочного транспорта; ## TCASH: Создаёт пикап для сбора прибыли возле дома Карла;
Основные изменения в 5.2b: + Метод "Generator.Compile" теперь имеет опциональный параметр "restartSannyBuilder", который будет открывать Sanny Builder после компиляции. + Добавлены операторы "&=", "|=", "^=" и "%=" для типов "Int", "Memory", "StatusText" и "Timer". Они реализуют работу опкодов "0B10", "0B11", "0B12" и "0B14". + Добавлен плагин "Phone" для GTA SA, который позволяет Карлу принимать звонки. + Добавлен плагин "SaveGame" для GTA SA, который позволяет сохранять игру, как в оригинальной игре. + Добавлен плагин "Properties" для GTA SA, который позволяет Карлу покупать недвижимость, как в оригинальной игре. + Добавлен плагин "Original". Он позволяет включать или отключать стандартные скрипты (опционально). Добавлены следующие скрипты: ++ PLCHUTE: Возможность использовать парашют; ++ VENDING: Позволяет игроку покупать газировку и чипсы; ++ FVENDOR: Позволяет игроку покупать еду у продавцов; ++ HOTDOGV: Позволяет игроку покупать хот-доги у продавцов; ++ DEALER: Дилеры торгуют наркотой; ++ GATEOS: Управляет воротами склада ГСМ К.А.С.С; ++ GYMBIKE: Позволяет использовать тренажерный велосипед; ++ GYMBENC: Позволяет использовать тренажерную штангу; ++ GYMTREA: Позволяет использовать беговою дорожку; ++ GYMDUMB: Позволяет использовать тренажерные гантели; ++ GYMLS: Позволяет изучить стиль боя после победы над оппонентом (Бокс); ++ GYMSF: Позволяет изучить стиль боя после победы над оппонентом (Кунг-фу); ++ GYMLV: Позволяет изучить стиль боя после победы над оппонентом (Муай-тай);
# Свойство "StartGlobalAutoIndex" теперь имеет стандартное значение 714, а не 2000. # Методы "Continue" и "Break" переименованы на "@continue" и "@break" соответственно. # Обязательный метод скрипта "Start()" изменён на "START( LabelJump label )". # Свойства "LocalTimer1" и "LocalTimer2" теперь не являются статическими.
- Методы "jump", "or", "and" и "jf", которые не принимали в аргументы метку перехода, теперь недоступны. - В некоторых методах параметр типа "Out>" был заменён на старый вариант.
Основные изменения в 5.1b: + Добавлен вспомогательный тип "Out", который будет вызывать ошибку, если в параметр не указать переменную. + Метод "load_requested_models" теперь может принимать массив моделей в качестве параметра. + Добавлен метод "is_scan_string_format", реализующий работу опкода 0AD4. + Добавлен метод "chdir", реализующий работу опкода 0A99. + Добавлена кривая английская версия построения и ошибок в консоли. + Добавлено свойство "StartGlobalAutoIndex" класса "Generator", который позволяет установить индекс, с которого начинаются автоматические глобальные переменные. # Небольшие изменения внутри методов, которые создают различные сущности. Теперь генератор будет вызывать ошибку, если переменная не имеет контекста. # Исправлены методы расширения GTA VC для класса "Vehicle", где в параметрах был тип "object". # Метод "get_current_thread_pointer" теперь находится в классе "Memory". # Метод "read_memory" теперь учитывает выходной тип, а не использует тип "Memory" по умолчанию. # Исправлен баг, когда класс "CarComponent" не мог быть локальной переменной.
Основные изменения в 5.0b: + Новая архитектура генератора скриптов. Теперь для реализации кода потоков, миссий и внешних скриптов используются классы, а не методы с атрибутами. + Добавлена возможность создавать локальные переменные в области видимости класса. + Методы "local" и "global" теперь имеют перегрузку без параметров. Она позволяет давать переменным индексы автоматически. + Добавлены методы "local_array" и "global_array" для режима GTA SA, вместо перегрузок "local" и "global". + Добавлено событие "Scene" вместо метода "start_scene_scip" в режиме GTA SA. + Добавлен метод "gosub" как альтернатива событию "Gosub". + Теперь если использовать элемент массива в качестве индекса другого массива будет срабатывать ошибка (так и должно быть). + Добавлены перегрузки часто используемых методов для упрощения кода. + Добавлен плагин "RaceMission" в режиме GTA SA. Он позволяет генерировать код гоночных миссий. + Добавлен метод "сonvert" для свойства "FXT". Он позволит делать перевод текста в символьный вид без добавления записи в FXT-архив. + Добавлено свойство "NotToCompileExternalScripts" в классе "Generator". Оно укажет Sanny Builder не компилировать внешние скрипты. # Свойство FXT больше не имеет метода "set_GXT_encoding". Вместо него используется свойство "Encoding" класса "Generator". # Свойство "ConsoleLanguage" класса "Generator" теперь имеет имя "Language". # Все Gosub теперь всегда генерируют "return". # Переработана механика генератора парковок. Теперь методы возвращают транспорт. # Генератор теперь не генерирует код скриптов, если они не запускались в коде. # Изменён формат меток. Вместо индексов теперь используются специальные классы. # Исправлен глюк при использовании массива, когда поле "task" класса "Actor" имело неправильное имя переменной. # Исправлены индексы для локальных таймеров в режиме GTA SA (к коде миссии). # Обновлены и добавлены некоторые перечисления для GTA SA. # Все плагины больше не требуют указывать индексы глобальных переменных. # Методы "gosub_clear", "jump_passed", "jump_failed" и события "OnPassed", "OnFailed" и "OnClear" теперь доступны только в классе "Mission". # Метод "mission_cleanup" и условие "is_wasted_or_busted" теперь доступны только в классах "Mission" и "MissionCustom". # Генератор больше не вызывает ошибку, если файл "script.img" не удалось перезаписать вовремя игры. Вместо этого будет показываться предупреждение. - Убрана возможность указывать порядок генерации скриптов за ненадобностью. Сортировка происходит в процессе генерации автоматически. - Убраны методы условий, которые принимали индексы меток в качестве параметров. - Удалён класс "CarParkVehicle" за ненадобностью. - Удалены атрибуты "Thread", "Mission" и "External" за ненадобностью. Вместо них используются классы "Thread", "Mission", "MissionCustom" и "External".
Основные изменения в 4.5.25b: + Добавлена возможность выбрать язык построения и ошибок консоли. Раньше был только русский, а сейчас тестируются и другие. + Класс "Ini" теперь доступный для GTA III и VC. + Добавлены константы моделей оружия, актёров, транспорта и прочего для GTA III, VC и SA. + Добавлен тестовый метод "Start" для генератора. В нём поток "MAIN" будет указан автоматически, что позволит избежать использования частичных методов. Предыдущий метод пока доступный за именем "Start_old". + Добавлен плагин "StarterAdvanced" для GTA SA, который позволит сделать стартер более функциональным. # Плагин "Starter" теперь требует 2 глобальные переменные. # Обновлены некоторые перечисления для GTA III и VC. # Метод "each" для массивов теперь корректно использует счётчик. # Класс FXT теперь имеет кодировку по-умолчанию "None". Основные изменения в 4.5b: + Добавлены методы, описывающие большинство опкодов из библиотеки CLEO 2.0.0.5 для GTA III и VC. + Добавлена перегрузка метода "wait", где не надо указывать время задержки с условиями. # Исправлены ошибки в текстах опкодов (020C, 0219, 0357, 0887, 09D8), что не позволяли правильно скомпилировать скрипт. # Изменено расположение некоторых методов в классах "Script". # Классы "Library" и "File" теперь находятся в пространстве имён GTA, а не в GTA.SA. # Событие "auto" в классе "Switch" теперь имеет имя "Auto". Основные изменения в 4.4b: + Добавлены методы "jump" и "jump_end" в классе "SwitchCase". + Добавлены перегрузки для методов "local" и "global". Они позволят упростить инициализацию переменных. + Добавлено событие "auto" в классе "Switch". Теперь можно делать автоматические кейсы в таблице переходов, отсчёт которых начинается с нуля. Это делает код компактнее, а построение быстрее из за встроенных возможностей Visual Studio. + Добавлен метод "jf", который принимает первым параметром индекс метки, как это было в остальных условиях. + В класс "GXTEncoding" добавлено статическое поле "None", которое содержит псевдо-кодировку, что не конвертирует текст. Используется для быстрой работы в тех местах, когда конвертация не нужна (например: английская локализация). # Генератор больше не вызывает ошибок, если FXT- и IMG-файлы не создавались при компиляции. # Метод "jf", который принимал в первый параметр время задержки, теперь имеет имя "wait". # Переработана механика работы метода "jump_table". - Убраны методы "jump_label" и "jump_end" в классе "Switch".
Основные изменения в 4.2b: + Методы, которые принимают в параметр тип "JumpHandler" теперь генерируют новую метку, если та отсутствует, а не бросают исключения. + Добавлены перегрузки для методов "and", "or" и "jf". Теперь можно делать прыжки на первую и произвольные метки, если условия не выполняются. + Добавлен плагин "Starter" для GTA SA, который позволит сделать простой стартер миссий (Переработанная версия бывших плагинов для стартеров). # Обновлены и добавлены некоторые перечисления. # Gosub теперь использует другой делегат # Генератор парковочного транспорта теперь не имеет методов "init" и "init_with_number_plate". Вместо них добавлены похожие методы, которые принимают во внимание тип транспорта. # Исправлен баг, когда сохранялся непереведённый текст в FXT-файл. # Мелкие правки для событий "Jump" и "Gosub". # Класс "Camera" теперь "класс-одиночка", доступный через свойство "CAMERA". - Теперь нельзя делать прыжки на метки, которые созданы событием Gosub - Удалены функции, связанные с камерой. Теперь они вызываются через свойство "CAMERA".