ArtJuice Опубликовано 10 марта, 2015 Поделиться Опубликовано 10 марта, 2015 Здравствуйте.Задался вопросом пакетной обработки скриптов для F2. Скажем нужно добавить новую переменную или изменить в n-кол. скриптов. За основу взял проект burner'a Unlimited party modНо в его "моде" используются старый декомпилятор и компилятор, которые не работают с обновленными скриптами под sFall.По этому я заменил их на новые из sFall modderspack 3.6Но столкнулся с проблемой - компилятор(compile.exe) почему то не видит ssl-скрипты.Пока что нашел лишь одно решение данной проблемы - компилятор, ssl-скрипты, и исполняющий bat-ник должны находится в одной папке, что не совсем хорошо. Возможно я как то неправильно обращаюсь к компилятору и даю ему путь к sslПеребрал много вариантов реализации обращения к compile.exe в bat-нике, но добился лишь вывода 2х ошибок:"Couldn't find file *.ssl" и "Warning: file not found" На основе этого bat-ника и доп. утилит можно сделать комплекс по пакетному изменению скриптов по заданной маске, да и не только скриптов. Вот моя наработка, может кто сможет подсказать с решением проблемы "compile"https://yadi.sk/d/UnHn-Csrf9x7S К примеру можно, так сказать, автоматически добавить всем напарникам новую ветку диалога с внесением изменений в скрипт(.int) и файлы диалогов(.msg) 1 Ссылка на комментарий
Mr.Sталин Опубликовано 10 марта, 2015 Поделиться Опубликовано 10 марта, 2015 Если в батниках шаришь то вот пакетная обработка скриптов в папке и ее под папках.Создаешь батник где лежит компилятор меняешь пути на свои.Должно работать, по крайней мере у меня работает. если у тебя не декомпилировные скрипты то тебе еще и препроцессор нужен будет.+ "заголовочные" *.h файлы должны лежать в правильных папках.тут потребуется добавить ключ -p в строку компилятора compile.exe -p %%~nA.tmpа вообще через прогу sfall editor можно настроить "маss compile" @echo offrem Set path to SSL Scriptsset ssl=F:\Games\FalloutProject\Scripts_SSL\rem Set path to scripts intset fscripts=F:\Games\Fallout\DATA_\Scripts\For /r %ssl% %%A IN (*.ssl) do (echo %%Acopy %%A %%~nA.tmprem компилятор от Sfall'acompile.exe %%~nA.tmpdel %%~nA.tmpif not exist %%~nA.int goto ERRORmove %%~nA.int %fscripts%%%~nA.int)echo --------------------------------------------------------------------------echo Compilation of scripts is completed.echo --------------------------------------------------------------------------:ERRORpause 1 Ссылка на комментарий
ArtJuice Опубликовано 11 марта, 2015 Автор Поделиться Опубликовано 11 марта, 2015 (изменено) Спасибо Mr.СталинВ батниках не шарю Но приходится учится шарить что бы реализовать задуманное. Для чего нужен препроцессор? Phobos2077, на сколько я понял, уже давно "вшил" препроцессор в sfall'овский компилятор.Если включаю препроцессор (compile.exe -p) то при компиляции на определенных скриптах получаем ошибку, хотя скрипты эти из RP 2.3.3 Вот рабочая версия.https://yadi.sk/d/-RK5tNsUfB2tDскрипты внутри из RP 2.3.3, можно для проверки и свои подкинуть. "Сleanup" закоментированна что бы можно было просмотреть изменения Контрольную проверку делаю так:полученные *.int открываю в ScriptEditor из sfall modderspack 3.6, перегоняю их в ssl.Полученные ssl открываю в Notepad++ и с помощью плагина Compare сравниваю. Изменено 11 марта, 2015 пользователем ArtJuice Ссылка на комментарий
phobos2077 Опубликовано 11 марта, 2015 Поделиться Опубликовано 11 марта, 2015 Было бы неплохо узнать какие именно ошибки и на каких скриптах. Когда Киллап изначально выложил исходники в них была одна ошибка (связанная как раз с препроцессингом). Вполне возможен баг в компиляторе где-нибудь. Можно от версии 3.3 compile.exe попробовать. Ссылка на комментарий
ArtJuice Опубликовано 11 марта, 2015 Автор Поделиться Опубликовано 11 марта, 2015 Вот ругается на этом скрипте:https://yadi.sk/d/Up8xj5SEfBESd скрин:https://yadi.sk/i/XsqvJ9MrfBEcU и еще есть вот такие меседжиhttps://yadi.sk/i/4VyhnSjmfBFjR Ссылка на комментарий
phobos2077 Опубликовано 11 марта, 2015 Поделиться Опубликовано 11 марта, 2015 Вот это уже похоже на баг int2ssl ) Эти моды не используют новых фич sfall? Возьми версию из 3.5 modderspack Ссылка на комментарий
Mr.Sталин Опубликовано 11 марта, 2015 Поделиться Опубликовано 11 марта, 2015 Ругается на SET_STAGE_EVENT я хз шо это такое, ты скрип де компилировал или это исходник?во это просто декомпилировало не правильно, тут разрыва строки не должно быть.можно руками поправить.debug_msg("SET_STAGE_EVENT == " + global_var(291) + " in script " + obj_name(self_obj)); Для чего нужен препроцессор?Используется в том случае если используются #define или #include с *.h файлами в скриптах, но ты же декомпилишь скрипты поэтому оно тебе не нужно. Кстати объясни не посвященному, что делает gema.exe со cкриптом? Ссылка на комментарий
ArtJuice Опубликовано 11 марта, 2015 Автор Поделиться Опубликовано 11 марта, 2015 (изменено) modderspack 3.3 и 3.5 обрабатывают скрипт без ошибки. В данном варианте нет, не используют новых фич из 3.6 Эта "утилита" которую я собрал работает с уже готовыми int-ами, и вносит в них заданные правки.Смысл в том что бы утилита могла обработать скрипт как "оригинальный" так и чей то измененный с добавленными в него фичами из sfallтак сказать "универсальный патчер"который можно применить к F2 Vanilla, F2 RP 2.*.*, F2 EcCo, F2 Jims и тд. во это просто де компилировало не правильно, тут разрыва строки не должно быть.можно руками поправить.То что проблема с разрывом строки я заметил Просто непонятно где ошибка была в декомпиляторе-компиляторе-скрипте Эта "утилитку" в будущем хочется добавить в UpdatePack от Pyranчто бы можно было комбинировать совместимые модыСкажем моды от ДжонаДоу_1 с модами от ДжонаДоу_2 которые вносят новые диалоги Сулику. Изменено 11 марта, 2015 пользователем ArtJuice Ссылка на комментарий
Mr.Sталин Опубликовано 11 марта, 2015 Поделиться Опубликовано 11 марта, 2015 и еще есть вот такие меседжиэто не критично просто сообщается, что объявленная процедура/переменная не используется в скрипте. Ссылка на комментарий
ArtJuice Опубликовано 13 марта, 2015 Автор Поделиться Опубликовано 13 марта, 2015 (изменено) Продолжим.Есть мысли сделать конфиг-файлы, что бы не править bat-инк, а задавать "маску" поиска файлов в конфиге.И конфиг для что менять и на кого.Актуально и нужно ли это? Кстати объясни не посвященному, что делает gema.exe со cкриптом?gema работает не со скриптом, а с текстовым файлом, грубо говорят это "найти и заменить" с возможностью задания параметров для поиска и замены. Теперь следующий этап, для которого у меня мало идей в его реализации.Ниже в архиве скрипт Casidy - оригинал RP 2.3.3, с правками от Endocore и третий от Drobovik'a.https://yadi.sk/d/ntILp-zSfCwm5Как их совместить в один? Совместить "автоматически", а не ручками в Notepad ++Сперва была идея построчно сравнить оригинальный скрипт с измененным, и в итоговый файл записывать оригинал+дополнительные строки из второго скрипта. Но есть проблема - это от части измененные части кода в сравнении с оригиналом. Тут можно жестко задать что на что менять и в какой строке, что не совсем гибко как по мне.Вторая мысль - вынести в хэдэры внесенные изменения другими авторами.Возможно ли это? Сравнивая измененный скрипт с оригиналом.И как быть если два разных автора правят одну процедуру? (это хорошо видно при сравнении скриптов Drobovik'a и Endocore выложенных выше)пара скринов сравнения:http://s1.hostingkartinok.com/uploads/thumbs/2015/03/e012c56d9942d3de27d8f107e355f516.pnghttp://s1.hostingkartinok.com/uploads/thumbs/2015/03/041503a44faa1444031397f7b2ad619e.png Как то так, мозгую дальше, обдумываю-ищу варианту, жду ваших коментов. Upd.Посмотрел исходники Killap'a...Идея с хэдерами явно не верная... Изменено 13 марта, 2015 пользователем ArtJuice Ссылка на комментарий
phobos2077 Опубликовано 13 марта, 2015 Поделиться Опубликовано 13 марта, 2015 (изменено) А стандартные проги для мерджа файлов не работают? Зачем какой-то найти и заменить изобретать. Мердж двух скриптов полученных путем декомпиляции должно быть раз плюнуть сделать, если только в одном и том же месте у них не отличается код (такое редко бывает, ИМХО). По сути ты пытаешься вручную делать то что системы контроля версий обычно делают автоматически, посмотри вот это. Изменено 13 марта, 2015 пользователем phobos2077 Ссылка на комментарий
ArtJuice Опубликовано 13 марта, 2015 Автор Поделиться Опубликовано 13 марта, 2015 А чем gemа плоха как прога для мерджа?) gema is a general purpose text processing utility based on the concept of pattern matching. It reads an input file and copies it to an output file transforming the data as specified by the patterns defined by the user.Я отталкивался от наработок Burner'a, и возможности вложить это в Update Pack Pyran, и что бы этот патч был совместим с измененными скриптами другими авторами.Так к примеру патч от Burner'a с вашим EcCo модом не работает, а моя версия без проблем да и с другими модами где что то изменено в скриптах напарников. (Хоть и на 99% это заслуга использования вашего декомпилятора и компилятора).Но основное - это гибкость. Беря скрипт напарника от любого автора, меняется лишь функция проверки харизмы, не меняя и не затрагивая всех остальных изменений сделанных тем автором. Ссылка на комментарий
phobos2077 Опубликовано 13 марта, 2015 Поделиться Опубликовано 13 марта, 2015 Я говорю про то что мерджить код по регуляркам это изобретение велосипедов. Утилиты для мерджа как раз созданы для такого и ежедневно используются тысячами разработчиков. Смысл в том чтобы не писать никаких регулярок, нужно просто скармливать по 2 файла за раз (сначала моды А+Б, потом + С и так далее) - автоматически находятся все отличия относительно базовой версии (например RP без модов) и сливаются построчно, с учетом удаленного кода и т.п. Ссылка на комментарий
ArtJuice Опубликовано 13 марта, 2015 Автор Поделиться Опубликовано 13 марта, 2015 Я видимо не правильно выразил свою мысль и получилась маленькая непонятка Я с вами полностью согласен что сливать файлы в 1н через заданное выражение очень топорно, и не есть хорошо, по этому ищу варианты.Не плохой вариант - если бы можно было выносить часть кода скрипта в отдельные файлы, а в основном делать ссылки на него, и тогда при компиляции они сливались бы в один.Спасибо за наводку с WinMerge - я смотрел на нее, но не обратил внимание что можно работать с ней через батник. Буду пробовать.Спасибо. Ссылка на комментарий
Mr.Sталин Опубликовано 13 марта, 2015 Поделиться Опубликовано 13 марта, 2015 если бы можно было выносить часть кода скрипта в отдельные файлы, а в основном делать ссылки на него, и тогда при компиляции они сливались бы в один.Ну так можно же выносить в хэдэры, епты барахты.пишешь в хэдэрах через #define "название" "код чего-то или часть вырезанного кода из скрипта"и в нужном тебе скрипте прописываешь путь к файлу заголовка через #include "patch_nameheader"а потом вставляешь ссылку в нужном тебе месте ну в скритпе) на этот дефайн и с препроцессором компилишь. и усё. Ссылка на комментарий
phobos2077 Опубликовано 14 марта, 2015 Поделиться Опубликовано 14 марта, 2015 Вот только не понятно что конкретно даст использование хидеров для мерджа модов. ИМХО, 3-way merge декомпиленых скриптов это то что нужно. Ссылка на комментарий
WiperX Опубликовано 17 апреля, 2020 Поделиться Опубликовано 17 апреля, 2020 Приветствую! Подскажите пожалуйста как правильно скомпилить скрипты. Скачал Fallout2_Unofficial_Patch-master с гитхаба от burn'a. В папке scripts_src запустил buildall.bat и появилось C:\Black Isle\Fallout 2 Mapper\scripts_src>cd ARROYOC:\Black Isle\Fallout 2 Mapper\scripts_src\arroyo>call ARROYO.batC:\Black Isle\Fallout 2 Mapper\scripts_src\arroyo>call ..\p ACBRAHMN../headers/define.h(29): Error! E1055: Unable to open '../sfall/sfall.h'Compiling temp.i[Error] :7920:45: Undefined symbol party_member_list_critters.*** THERE WERE ERRORS (1 of them) *** Если можете, распишите подробно как сделать всё правильно. Заранее спасибо! Ссылка на комментарий
Mr.Sталин Опубликовано 17 апреля, 2020 Поделиться Опубликовано 17 апреля, 2020 Положи файлы с заголовками из sfall в папку sfall которая должна быть в папке scripts_src (на уровень вверх от папки arroyo)Надеюсь не заблудишься в трех папках :-) 1 Ссылка на комментарий
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти