Перейти к содержимому

Сообщений в теме: 15
Фотография

Пакетная обработка скриптов и не только.

fallout 1 & 2 development техничка

#1 ArtJuice

ArtJuice

    Только что из пустыни

  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 10 Март 2015 - 21:58

Здравствуйте.

Задался вопросом пакетной обработки скриптов для 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)


1318624506_33.jpg

  • Pyran это нравится


#2 Mr.Сталин

Mr.Сталин

    Всех на Расстрел!

  • Desert Rangers
  • PipPipPip
  • 2 670 сообщений

Отправлено 10 Март 2015 - 22:38

Если в батниках шаришь то вот пакетная обработка скриптов в папке и ее под папках.

Создаешь батник где лежит компилятор меняешь пути на свои.

Должно работать, по крайней мере у меня работает. :)

 

если у тебя не декомпилировные скрипты то тебе еще и препроцессор нужен будет.

+ "заголовочные" *.h файлы должны лежать в правильных папках.

тут потребуется добавить ключ -p в строку компилятора compile.exe -p %%~nA.tmp

а вообще через прогу sfall editor можно настроить "маss compile"

 

Spoiler


sFall 4.X.X - Extended version

Fallout Proto Manager v1.1.5 - Редактор для создания и редактирования файлов прототипов.
sFall Script Editor v4.1.4 - Программа для написания скриптов и отладки диалогов.
Mapper by Dims v0.99.3 - Обновленный вариант маппера c некоторыми новыми возможностями.
Другие утилиты для модинга Fallout.

  • Pyran это нравится


#3 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 11 Март 2015 - 14:32

Спасибо 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 сравниваю.


Сообщение отредактировал ArtJuice: 11 Март 2015 - 14:48

1318624506_33.jpg



#4 phobos2077

phobos2077

    Местный

  • Desert Rangers
  • PipPipPip
  • 139 сообщений
  • Город (city):Красноярск

Отправлено 11 Март 2015 - 16:00

Было бы неплохо узнать какие именно ошибки и на каких скриптах. Когда Киллап изначально выложил исходники в них была одна ошибка (связанная как раз с препроцессингом). Вполне возможен баг в компиляторе где-нибудь. Можно от версии 3.3 compile.exe попробовать.




#5 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 11 Март 2015 - 16:29

Вот ругается на этом скрипте:

https://yadi.sk/d/Up8xj5SEfBESd

 

скрин:

https://yadi.sk/i/XsqvJ9MrfBEcU

 

и еще есть вот такие меседжи

https://yadi.sk/i/4VyhnSjmfBFjR


1318624506_33.jpg



#6 phobos2077

phobos2077

    Местный

  • Desert Rangers
  • PipPipPip
  • 139 сообщений
  • Город (city):Красноярск

Отправлено 11 Март 2015 - 16:38

Вот это уже похоже на баг int2ssl ) Эти моды не используют новых фич sfall? Возьми версию из 3.5 modderspack




#7 Mr.Сталин

Mr.Сталин

    Всех на Расстрел!

  • Desert Rangers
  • PipPipPip
  • 2 670 сообщений

Отправлено 11 Март 2015 - 16:43

Ругается на SET_STAGE_EVENT я хз шо это такое,  ты скрип де компилировал или это исходник?

во это просто декомпилировало не правильно, тут разрыва строки не должно быть.

можно руками поправить.

debug_msg("
SET_STAGE_EVENT == " + global_var(291) + " in script " + obj_name(self_obj));

 

 

Для чего нужен препроцессор?

Используется в том случае если используются #define или #include с *.h файлами в скриптах, но ты же декомпилишь скрипты поэтому оно тебе не нужно.

 

 

Кстати объясни не посвященному, что делает gema.exe со cкриптом?


sFall 4.X.X - Extended version

Fallout Proto Manager v1.1.5 - Редактор для создания и редактирования файлов прототипов.
sFall Script Editor v4.1.4 - Программа для написания скриптов и отладки диалогов.
Mapper by Dims v0.99.3 - Обновленный вариант маппера c некоторыми новыми возможностями.
Другие утилиты для модинга Fallout.



#8 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 11 Март 2015 - 17:02

modderspack 3.3 и 3.5 обрабатывают скрипт без ошибки.

 

В данном варианте нет, не используют новых фич из 3.6

 

Эта "утилита" которую я собрал работает с уже готовыми int-ами, и вносит в них заданные правки.

Смысл в том что бы утилита могла обработать скрипт как "оригинальный" так и чей то измененный с добавленными в него фичами из sfall

так сказать "универсальный патчер"

который можно применить к F2 Vanilla, F2 RP 2.*.*, F2 EcCo, F2 Jims и тд.

 

во это просто де компилировало не правильно, тут разрыва строки не должно быть.

можно руками поправить.

То что проблема с разрывом строки я заметил :) Просто непонятно где ошибка была в декомпиляторе-компиляторе-скрипте

 

 

Эта "утилитку" в будущем хочется добавить в UpdatePack от Pyran

что бы можно было комбинировать совместимые моды

Скажем моды от ДжонаДоу_1 с модами от ДжонаДоу_2 которые вносят новые диалоги Сулику.


Сообщение отредактировал ArtJuice: 11 Март 2015 - 17:24

1318624506_33.jpg



#9 Mr.Сталин

Mr.Сталин

    Всех на Расстрел!

  • Desert Rangers
  • PipPipPip
  • 2 670 сообщений

Отправлено 11 Март 2015 - 17:55

 

и еще есть вот такие меседжи

это не критично просто сообщается, что объявленная процедура/переменная не используется в скрипте. 


sFall 4.X.X - Extended version

Fallout Proto Manager v1.1.5 - Редактор для создания и редактирования файлов прототипов.
sFall Script Editor v4.1.4 - Программа для написания скриптов и отладки диалогов.
Mapper by Dims v0.99.3 - Обновленный вариант маппера c некоторыми новыми возможностями.
Другие утилиты для модинга Fallout.



#10 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 13 Март 2015 - 04:05

Продолжим.

Есть мысли сделать конфиг-файлы, что бы не править bat-инк, а задавать "маску" поиска файлов в конфиге.

И конфиг для что менять и на кого.

Актуально и нужно ли это?

 

Кстати объясни не посвященному, что делает gema.exe со cкриптом?

gema работает не со скриптом, а с текстовым файлом, грубо говорят это "найти и заменить" с возможностью задания параметров для поиска и замены.

 

 

Теперь следующий этап, для которого у меня мало идей в его реализации.

Ниже в архиве скрипт Casidy - оригинал RP 2.3.3, с правками от Endocore и третий от Drobovik'a.
https://yadi.sk/d/ntILp-zSfCwm5

Как их совместить в один? Совместить "автоматически", а не ручками в Notepad ++

Сперва была идея построчно сравнить оригинальный скрипт с измененным, и в итоговый файл записывать оригинал+дополнительные строки из второго скрипта. Но есть проблема - это от части измененные части кода в сравнении с оригиналом. Тут можно жестко задать что на что менять и в какой строке, что не совсем гибко как по мне.

Вторая мысль - вынести в хэдэры внесенные изменения другими авторами.

Возможно ли это? Сравнивая измененный скрипт с оригиналом.

И как быть если два разных автора правят одну процедуру? (это хорошо видно при сравнении скриптов Drobovik'a и Endocore выложенных выше)

пара скринов сравнения:

e012c56d9942d3de27d8f107e355f516.png

041503a44faa1444031397f7b2ad619e.png

 

Как то так, мозгую дальше, обдумываю-ищу варианту, жду ваших коментов.

 

Upd.

Посмотрел исходники Killap'a...

Идея с хэдерами явно не верная...


Сообщение отредактировал ArtJuice: 13 Март 2015 - 04:33

1318624506_33.jpg



#11 phobos2077

phobos2077

    Местный

  • Desert Rangers
  • PipPipPip
  • 139 сообщений
  • Город (city):Красноярск

Отправлено 13 Март 2015 - 04:32

А стандартные проги для мерджа файлов не работают? Зачем какой-то найти и заменить изобретать. Мердж двух скриптов полученных путем декомпиляции должно быть раз плюнуть сделать, если только в одном и том же месте у них не отличается код (такое редко бывает, ИМХО).

 

По сути ты пытаешься вручную делать то что системы контроля версий обычно делают автоматически, посмотри вот это.


Сообщение отредактировал phobos2077: 13 Март 2015 - 04:36



#12 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 13 Март 2015 - 04:50

А чем 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% это заслуга использования вашего декомпилятора и компилятора).

Но основное - это гибкость. Беря скрипт напарника от любого автора, меняется лишь функция проверки харизмы, не меняя и не затрагивая всех остальных изменений сделанных тем автором.


1318624506_33.jpg



#13 phobos2077

phobos2077

    Местный

  • Desert Rangers
  • PipPipPip
  • 139 сообщений
  • Город (city):Красноярск

Отправлено 13 Март 2015 - 10:51

Я говорю про то что мерджить код по регуляркам это изобретение велосипедов. Утилиты для мерджа как раз созданы для такого и ежедневно используются тысячами разработчиков. Смысл в том чтобы не писать никаких регулярок, нужно просто скармливать по 2 файла за раз (сначала моды А+Б, потом + С и так далее) - автоматически находятся все отличия относительно базовой версии (например RP без модов) и сливаются построчно, с учетом удаленного кода и т.п.




#14 ArtJuice

ArtJuice

    Только что из пустыни

  • автор темы
  • Desert Rangers
  • Pip
  • 10 сообщений

Отправлено 13 Март 2015 - 19:23

Я видимо не правильно выразил свою мысль и получилась маленькая непонятка :)

Я с вами полностью согласен что сливать файлы в 1н через заданное выражение очень топорно, и не есть хорошо, по этому ищу варианты.

Не плохой вариант - если бы можно было выносить часть кода скрипта в отдельные файлы, а в основном делать ссылки на него, и тогда при компиляции они сливались бы в один.

Спасибо за наводку с WinMerge - я смотрел на нее, но не обратил внимание что можно работать с ней через батник. Буду пробовать.

Спасибо.


1318624506_33.jpg



#15 Mr.Сталин

Mr.Сталин

    Всех на Расстрел!

  • Desert Rangers
  • PipPipPip
  • 2 670 сообщений

Отправлено 14 Март 2015 - 01:56

если бы можно было выносить часть кода скрипта в отдельные файлы, а в основном делать ссылки на него, и тогда при компиляции они сливались бы в один.

Ну так можно же выносить в хэдэры, епты барахты.

пишешь в хэдэрах через #define "название"  "код чего-то или часть вырезанного кода из скрипта"

и в нужном тебе скрипте прописываешь путь к файлу заголовка через #include "patch_nameheader"

а потом вставляешь ссылку в нужном тебе месте ну в скритпе) на этот дефайн и с препроцессором компилишь. и усё. :smile:


sFall 4.X.X - Extended version

Fallout Proto Manager v1.1.5 - Редактор для создания и редактирования файлов прототипов.
sFall Script Editor v4.1.4 - Программа для написания скриптов и отладки диалогов.
Mapper by Dims v0.99.3 - Обновленный вариант маппера c некоторыми новыми возможностями.
Другие утилиты для модинга Fallout.



#16 phobos2077

phobos2077

    Местный

  • Desert Rangers
  • PipPipPip
  • 139 сообщений
  • Город (city):Красноярск

Отправлено 14 Март 2015 - 08:58

Вот только не понятно что конкретно даст использование хидеров для мерджа модов. ИМХО, 3-way merge декомпиленых скриптов это то что нужно.



Стр. 1 из 1
Авторизуйтесь для ответа в теме
Новых тем нет

Похожие темы




Количество пользователей, читающих эту тему: 0

0 members, 0 guests, 0 anonymous users