You are not logged in.
Нежданно-негаданно, 5 лет спустя после выхода последней версии Sanny Builder 3.04, я наконец добрался до исходников своей программы. После сдувания с них пыли и счищения ржавчины с собственных мозгов, мне удалось скомпилировать и запустить SB. За 5 лет довольно много изменилось, поэтому первоочередным решением было добавить в программу те языки перевода, которые мне присылали пользователи, а также обновить CLEO до версии 4.1.1.30f и добавив CLEO для III и VC.
Поскольку я не притрагивался к исходникам программы почти 5 лет, за это время у меня поменялся комп, пришлось ставить заново дельфи и все компоненты. Что-то в программе может работать не так как раньше. Если вы заметите подобные странности, или обнаружите ошибку - пишите мне, я постараюсь исправить. Предыдущую версию SB можно скачать тут http://public.sannybuilder.com/archive/
Итак, список изменений версии 3.05
- добавлены новые языки перевода (финский, польский, венгерский, украинский, турецкий)
- Библиотека CLEO обновлена до версии 4.1.1.30f (CLEO 4 от Alien)
- Добавлена возможность установить CLEO для GTA III и для Vice City (автор - Alien)
- файлы опкодов (**SCM.ini, opcodes.txt) замененены на файлы из комплекта CLEO 4.
- добавлен новый параметр запуска программы \nosplash
Дальнейшие планы по развитию программы озвучивать не буду, мысли и желание есть, если будет что-то получаться - напишу. Также с удовольствием выслушаю ваши предложения и пожелания по дальнейшему улучшению программы.
Мне в течение этих лет много писали различных предложений и вопросов, сообщали о некоторых багах. К сожалению, не все из этого у меня сохранилось. Поэтому если вы знаете о каком-либо баге в Sanny Builder'е - сообщите мне повторно, я постараюсь исправить.
Скачать новую версию 3.05 можно здесь
http://sannybuilder.com/files/SannyBuilder-v3.05.exe
Offline
Наконец то)
Offline
Круто, пытался что-то придумать в качестве предложений, но не получается, все уже настолько привычно, что не хочется что-либо менять. Хотя одну вещь вспомнил, как-то пытался сделать санник портабельным, но GamePath и OpcodesPath в settings.ini не захотели работать с относительными путями. Я использую папки вида dirGTASA с минимальным необходимым набором файлов в папке с самим SB, т.е. к примеру что-то вроде этого хотелось бы:
GamePath=.\dirGTASA
Offline
Надо ещё добавить в инсталятор возможность ассоциировать .cs и .cm файлы с Sanny Builder=)
Offline
@Sergey81 -
как-то пытался сделать санник портабельным, но GamePath и OpcodesPath в settings.ini не захотели работать с относительными путями. Я использую папки вида dirGTASA с минимальным необходимым набором файлов в папке с самим SB, т.е. к примеру что-то вроде этого хотелось бы:
GamePath=.\dirGTASA
путь можно указать, он исчисляется относительно sanny.exe
Если игра находится, как ты говоришь, в папке санника, то такая запись должна работать
GamePath=dirGTASA
чтобы подняться на уровень выше, нужно написать ..\
OpcodesPath=..\..\dirGTASA\SASCM.ini (ини расположен в папке на 2 уровня выше папки сб)
@SHooZ - такое реализовать можно, но есть одна трудность, файлы с расширением .cs используются программой Microsoft Visual Studio (язык C#). http://filext.com/file-extension/CS
Может возникнуть ненужный конфликт интересов. С другой стороны, если сделать это по желанию пользователя и отдельно от .scm-файлов, может это и хорошо. Надо будет подумать.
Offline
путь можно указать, он исчисляется относительно sanny.exe
Хм, действительно, можно было догадаться, но почему-то именно таким образом я не попробовал сделать.
Насчет ассоциации .cs/.cm я не думаю что это необходимо, т.к. декомпилировать файл нужно в 1% случаев. А вот придумать какое-нибудь автоопределение, чтобы, к примеру, если скрипт от gta3 декомпилировать в режиме SA, выскакивало какое-нибудь окошко о несоответствии и предлагало декомпилировать в правильном режиме. Тоже самое и с опцией ignore unknown, вместо сообщения что обнаружен неизвестный опкод, сразу же предлагало декомпилировать с этой опцией.
Offline
Тоже замечание в программу установки: она работает только с ГТА СА. Можно добавит чекбоксы для Вайса и Тройки как и для указания путей к им, так и для диалога об установке клео по этим путям
Offline
@Sergey81 -
если скрипт от gta3 декомпилировать в режиме SA, выскакивало какое-нибудь окошко о несоответствии и предлагало декомпилировать в правильном режиме
ну, например, .scm GTA3 и VC сходу невозможно различить между собой. Отличия есть только в некоторых типах данных и опкодах. Заголовки у них идентичные.
@SHooZ - по идее инсталлятор должен работать и с GTA 3, и с VC. Но только с чем-то одним. Т.е. можно указать папку VC, и туда будет установлен CLEO для VC. А вот для нескольких игр сразу такое сделать пока нельзя.
Offline
@Sergey81 -
если скрипт от gta3 декомпилировать в режиме SA, выскакивало какое-нибудь окошко о несоответствии и предлагало декомпилировать в правильном режиме
ну, например, .scm GTA3 и VC сходу невозможно различить между собой. Отличия есть только в некоторых типах данных и опкодах. Заголовки у них идентичные.
Ну можно тогда как то так:
Каждая кнопка будет автоматом переключать режим и декомпилировать в выбранном соответственно.
Я думаю так гораздо удобнее, чем нажимать ок, менять режим, а потом заново открывать файл.
Last edited by Sergey81 (06-06-2013 10:27)
Offline
@Sergey81 - идея понятна, но ее затраты на конкретно такую реализацию несопоставимы с пользой, которую она принесет. иными словами, выхлоп будет слабеньким. При нажатии на кнопку "Помощь" редактор подсказывает, что можно переключить опцию Ignore_unknown.
Возможно, я сделаю как-то по-другому.
зы. Поздравляю с днем рождения)
Offline
@Sergey81 - идея понятна, но ее затраты на конкретно такую реализацию несопоставимы с пользой, которую она принесет. иными словами, выхлоп будет слабеньким. При нажатии на кнопку "Помощь" редактор подсказывает, что можно переключить опцию Ignore_unknown.
Возможно, я сделаю как-то по-другому.
зы. Поздравляю с днем рождения)
Спасибо
А вообще да, декомпиляция, как я уже говорил, редко используется, в основном только для проверки что в скрипте нету глобальных переменных или других косяков, поэтому пара лишних кликов не особо напрягает.
Кстати, раз уж Alien больше разработкой cleo не занимается, будут ли выложены исходники от cleo для GTA3/VC?
Offline
Рад, что появились какие-то новости по Sanny Builder
Было бы неплохо реализовать конструкцию switch. Таблицы переходов ещё не разленился писать, но хотелось бы как-то удобно всё поместить в конструкцию, например в такую:
switch $INDEX case 0 0@ = #ADMIRAL break end case 1 0@ = #RUSTLER break end default 0@ = #REMINGTN break end wait 0 end
или что-то похожее на foreach для обработки массивов.
p.s У меня санник не открывается на windows 8 (x32), но пошел на windows 8 (x64)
Last edited by wmysterio (13-06-2013 22:50)
Offline
Мне бы хотелось скорейшей мобилизации всех сил скриптеров на то, чтобы полностью избавиться от неточностей и unknown опкодов в SASCM.ini. Это просто иногда сбивает с толку, приходится лазить по сайтам и искать информацию. После обновления SASCM.ini на сайте GTA Gaming всё равно осталось 157 неизвестных опкодов, не исключено, что многие другие также неточны. Хотелось бы с этим разобраться. Хотелось бы, конечно, обновления справки, возможно, добавления новых статей, так как многое там устарело, многое здорово было бы добавить (работу с памятью, например).
В общем, рад возобновлению работы над Sanny Builder, теперь есть новая надежда на совершенствование, пожалуй, лучшей программы для скриптинга.
Last edited by Vital (12-06-2013 11:06)
Offline
Кстати, а нельзя ли совместить txt-исходник скрипта и компилированную версию? Например сделать отдельную опцию в саннике - компилировать вместе с исходником, и соответственно работать только с одним файлом, а не с двумя. При открытии .cs файла, если внутри есть исходник, открывать его, а если нет, то декомпилировать.
Offline
@Sergey81 - интересная мысль, учту.
@kenking - работа в этом направлении уже ведется.
Offline
Вышла новая версия Sanny Builder 3.06
http://sannybuilder.com/files/SannyBuilder-v3.06.exe
* добавлены новые операторы ++ и --
* добавлена поддержка блочных комментариев /* */
* SASCM.INI обновлен при помощи базы GTAG
* свойства Actor.Armour и Actor.Car заменены на корректные версии Actor.AddArmour, Actor.MissionCar
* добавлено новое свойство Actor.CurrentCar для опкода 03C0 в скриптовых классах для игр SA и VC
* добавлены новые комбинации клавиш Ctrl+Num+ и Ctrl+Num- для быстрого изменения размера шрифта в редакторе
* Sanny Builder запоминает число закрытых файлов для опции Открывать все закрытые файлы
* исправлена ошибка при компиляции скрипта с большим числом вставок hex..end
* исправлена ошибка версии 3.05, когда программа зависала при запуске, пытаясь открыть файл, переданный в качестве параметра
Offline
Мм.. Неплохо бы тогда и asi loader обновить http://www.gtaforums.com/index.php?showtopic=523982
Offline
Было бы неплохо поработать с "Инструментами". Что бы их можно было быстро вызывать комбинациями клавиш CTRL+ALT+3, CTRL+ALT+4 ... CTRL+ALT+0(можно вызвать только 2 инструмента горячими клавишами). Или добавить несколько своих по-умолчанию. Например конструкторы всякие, как "конструктор стартеров и миссий"(вставляет шаблоны миссий и их стартера), конструктор панелей(программа генерирует шаблон кода с использованием опкодов 08D4, 08DB и кидает их в Санник) и тому подобные.
Если идея понравилась, могу смастерить что-то из этого. Нужны только идеи
Offline
@wmysterio - а что мешает сделать это через меню Сервис-Инструменты-Добавить и выставить там необходимые параметры?
Если идея понравилась, могу смастерить что-то из этого. Нужны только идеи
могу подкинуть идею, мне пригодился бы редактор файла classes.db Т.е. графическая оболочка для создания, удаления, изменения классов на основе имеющегося там синтаксиса (детали могу пояснить).
Offline
@wmysterio - а что мешает сделать это через меню Сервис-Инструменты-Добавить и выставить там необходимые параметры?
Как раз таки с параметрами я и не разобрался. Не мог понят для чего они. А когда указывал клавишу, то ничего не происходило(у меня по крайней мере). Просто предложил небольшую автоматизацию.
Если идея понравилась, могу смастерить что-то из этого. Нужны только идеи
могу подкинуть идею, мне пригодился бы редактор файла classes.db Т.е. графическая оболочка для создания, удаления, изменения классов на основе имеющегося там синтаксиса (детали могу пояснить).
Детали очень даже помогут. Например, я не понял как работают строки с символами "^" и "[ .. ]".
Offline
@wmysterio -
Детали очень даже помогут. Например, я не понял как работают строки с символами "^" и "[ .. ]".
; Properties syntax reference: ; ; ^Name,[prop1],[prop2]...[propN], ("Hint")
в строках с символом ^ заключены так называемые "свойства" (properties). Это элементы класса, которые можно прочитать, установить или проверить, используя одно и то же имя. Самый простой пример - кол-во денег игрока. это свойство Player.Money
Для работы с деньгами есть несколько опкодов
0109: player $PLAYER_CHAR money += 1000000 010A: player $PLAYER_CHAR money > 461@ 010B: 4@ = player $PLAYER_CHAR money
при обычном подходе можно написать три разных функции класса Player. AddMoney, Player.MoneyIsGreather, Player.GetMoney. Но свойство помогает использовать одно имя Money для все трех опкодов: Player.Money+=10, Player.Money > 100, 0@ = Player.Money
Соответственно в строке ^Money мы должны указать все опкоды, относящиеся к данному классу. Каждый опкод описывается в отдельных квадратных скобках
^Money,[0109,+=,1,0,0],[010A,>,1,1,0],[010B,=,2,0,0],("Player%h")
^Money - название свойства
, - разделитель
[0109,+=,1,0,0] - описание опкода 0109. Первым идет номер опкода, потом разделитель (,), потом оператор (математический знак), который будет указывать компилятору какой именно опкод используется, разделитель, потом указатель на то, с какой стороны выражения стоит данное свойство. Если свойство расположено слева от знака (Player.Money>0), ставится 1. Если справа - 2 (0@=Player.Money). последние две цифры такие же как в обычных опкодах: тип опкода (0-обычный, 1-условный, 2-опкод, который может использоваться и как обычный метод и как свойство**) и код справки (для всех он равен 0). В версии 3.06 код справки равный -2 означает, что данная команда более не используется программой и оставлена только для совместимости со старыми исходниками.
** пример такого опкода Player.Canmove. Мы можем в коде использовать команду Player.CanMove($PLAYER_CHAR,True) - как обычная команда. Либо написать Player.CanMove($PLAYER_CHAR) = True - здесь команда уже похожа на "свойство".
Offline
@Seemann -
Спасибо большое за объяснения! Думаю, в течении нескольких дней сделаю. Мог бы я и пораньше, но увы, в пятницу защита диплома. Не могу на два фронта работать )
Но пока научил программу создавать, удалять и изменять имена классов:
[img align=C]http://ru-script.3dn.ru/BS_CL_VW.png[/img]
Следующий шаг - добавление процедур, методов и свойств
Last edited by wmysterio (18-06-2013 23:52)
Offline
Offline
Можете убрать в следующей версии комментарии, которые берутся в { }, потому что они даже в стринге берутся в комментарий. Например: 1@ = "{FFFFF}text"
Offline