Перейти к содержанию

Скриптинг: скрытые проверки в квестах.


Einheit

Рекомендуемые сообщения

Доброго времени суток. 
 
Все в курсе, что ролевая система Фоллаута, как и большинства добропорядочных РПГ старой школы, имитирует механику настольных ролёвок с бросками кубика - это краеугольный камень цивилизации Олдскула. Но в фоллаутах сама эта ролевая система куда более комплексная, чем у прочих классических РПГ, и включает в себя вагон разных переменных, проверок и пенальти. И при том, что она гораздо более сложная, в довесок к этому она ещё и в разы менее прозрачная, чем в большинстве других классических РПГ. 

 

Как итог, ролевая система представляет собой "бронепоезд в кустах" - где-то идут проверки, что-то считается и чекается прям по-крупному, в расчёт берутся один или несколько параметров персонажа, но мы этого не видим, нас даже не уведомляют о проверке, и в лучшем случаем наблюдаем только визуализированный конечный результат, при котором либо действие оканчивается успехом, либо нет. А можно даже и постфактум ничего о проверке не узнать, и в диалоге просто не будет какой-либо реплики, условиям появления которой персонаж не соответствовал.

 

YlA84LO.jpg

 

 

В общем, всё довольно сложно и запутанно. Но хуже всего, что ничего не видно - всё чекается без нашего участия и зачастую понять, каким образом и что именно проверялось, в самой игре невозможно.

В контексте понимания механики проверок ролевой системы Фоллаута, большинство людей делятся на две категории:

 
Те, кто не вдаются в подробности

vWQBbUa.jpg

 
Те, кто попытались вдаться

UbKhRKv.png

 

 

Сабж треда, вопрос и цель поиска - полные формулы всех ключевых проверок навыков/статов/репутации при взаимодействии с персонажами/объектами для успешного выполнения тех или иных условий или для получения событий. 
 
Насколько я понимаю, все небоевые проверки содержаться в файлах формата .int в папке scripts.
 
Сразу хотелось бы уточнить - возможно кто-то уже проделал эту работу и существует какой-нибудь информер/гайд/тред, в котором собраны формулы всех ключевых проверок навыков/статов/репутации? 
 
Если такового не существует, то расскажите плес последовательно и детально (гуманитарий, да) как и чем распаковывать .int файлы, какие строчки искать и как их правильно интерпретировать?
 
Вот есть прямые проверки - например для появления реплики в диалоге нужен интеллект >6 и красноречие 80+. Но. Насколько я помню в игре есть и "двухслойные" проверки, в которых например сперва чекается стат харизмы, и в случае провала чекается красноречие. Как в таком случае исходя из текста скрипта узнать порядок/приоритет, что в какой последовательности проверяется?

В общем, потрошим скрипты на предмет условий проверок и постараемся визуально представить их как полноценную формулу/линейное уравнение.

Ссылка на комментарий

*Кратко и по теме:

Ролевая система Fallout - интересная и комплексная штука, похожа на системы из "настолок" где кидаются кубики. Большинство проверок скрыто от глаз игрока. 

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

 

 

Берете sFall Script Editor от Mr.Stalin и читаете нужные вам скрипты. Так же, можете перевести их в ssl и читать используя notepad++

Путеводитель вам в помощь

Fallout 2Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP

Fallout Tactics: Путеводитель по модам | FAQ

База Данных: YD\YD\MF

Цитата: "Помогая другим, не забывай о себе..."

Ссылка на комментарий

Раз уж пошла такая вечеринка. Я тут искал алгоритм списания топлива с машины и нигде его не обнаружил. То-есть я обнаружил скрипт машины, но ничего похожего на списание топлива там нет (или мои глаза пора выкинуть на свалку), собственно исходя из этого вопрос, а ко всему ли коду можно получить доступ, или половина вычислений делается в коде движка и добыть его не представляется возможным?

Ссылка на комментарий

У машины все в движке)
Менять можно тут

HOOK_CARTRAVEL (hs_cartravel.int)
Runs continuously during worldmap travel on car.

int     arg1 - vanilla car speed (between 3 and 8 "steps")
int     arg2 - vanilla fuel consumption (100 and below)

int     ret1 - car speed override (pass -1 if you just want to override fuel consumption)
int     ret2 - fuel consumption override
Ссылка на комментарий

*Кратко и по теме:

Божественная сводка

 

Берете sFall Script Editor от Mr.Stalin и читаете нужные вам скрипты. Так же, можете перевести их в ssl и читать используя notepad++

Путеводитель вам в помощь

Спасибо.

 

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

И проверки - они все скрытые, поэтому это уточнение несколько нерациональное.

 

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

Если не затруднит, то опишите более развёрнуто. И желательно предметно - какие именно файлы нужно брать, где они находятся, какие именно строчки искать и как их соотносить со скриптами?

 

_______________________

Попробую распедалить свою последовательность действий, если делаю что-то неправильно, то расскажите как правильно.

 

В первую очередь нужно научиться визуально дифференцировать строчки проверок от любых других. Это позволит сузить зону поиска, определить в какой именно части скрипта содержатся проверки, чтобы оптимизировать процесс и в дальнейшем быстро находить нужные строчки.

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

I disagree with you. I think that a peaceful solution to any problem is possible.

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

 

В папке со скриптами отыскиваем файл Кэмерона - actemvil.int

Запускаю sFall Script Editor, закидываю туда означенный файл, утилита его декомпилирует приводя в божеский вид, позволяя с ним работать.

Перехожу в поиск, снимаю галку учёта регистра, вбиваю в поисковую строку "tagged". Пусто. Вбиваю искать "tag" - аналогично.

Листаю скрипт, выискивая глазами слова/аббревиатуры отдалённо схожие с "tag" и "speech". Безрезультатно.

 

Ооокей.

Точно помню, что для получения скидки у Ренеско в ходе выполнения поручения Сальваторе, нужен интеллект >7.

Закидываю его файл NcRenesc.int в редактор, выполняю поиск на предмет наличия в скрипте строчек со словами "intelligence" и "int". Опять ничего.

 

 

Что я делаю не так?RzTxj5z.jpg

Ссылка на комментарий

Если вы не знаете, а вы не знаете скриптинг фола, то в скриптах вы не чего не увидите.

Почитайте про функции от которых и происходит проверка, кидаются кубики. в левой или в правой панели в sFall Script Editor можно найти короткие описание для функций, вставляете их в скрипт, наводите на них мышкой и читаете более подробно (на русский только переключись в настройках).

(еще нужны базовые знания программирование, обычно в школах/универах всякие паскали проходят, этого должно хватить, не знаете почитайте на ютубе уроки по программированию любые).

 

Закидываю его файл NcRenesc.int в редактор, выполняю поиск на предмет наличия в скрипте строчек со словами "intelligence" и "int". Опять ничего.

giq_option({int iq_test}, {int msg_list}, {int msg_num}, {procedure target}, {int reaction});

или

NOption({int msg_num}, {procedure target}, {int iq_test});

 

Поэтому искать надо ключевое слово option :)

Ссылка на комментарий

Проверка на интеллект в декомпилированом коде будет выглядеть как-то так:

 

if get_critter_stat(dude_obj, 4) >= 5 then begin

   действие которое произойдет, если интеллект главного персонажа (dude_obj) больше или равен 5.

end

 

Статы прописаны в закладке Standart Difinitions > Stats, пока все что я юзал былы нумерованы по порядку начиная с нуля. То-есть получить силу можно так get_critter_stat(dude_obj, 0) Восприятие 1 соответственно.

 

 

У машины все в движке)

Менять можно тут

HOOK_CARTRAVEL (hs_cartravel.int)
Runs continuously during worldmap travel on car.

int     arg1 - vanilla car speed (between 3 and 8 "steps")
int     arg2 - vanilla fuel consumption (100 and below)

int     ret1 - car speed override (pass -1 if you just want to override fuel consumption)
int     ret2 - fuel consumption override

 

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

 

Пока сделал так, но не уверен за работоспособность в долговременной перспективе. К тому же, он не работает при движении по карте мира.

 

UfLFXsA.png

 

Там есть еще процедура timed_event_p_proc, но я не понял как ее запустить на скрипте который не привязан к объекту, я так понял что self_obj возвращает именно объект к которому привязан скрипт.

Ссылка на комментарий

gas_sub_amount = 100

if GVAR_NEW_RENO_SUPER_CAR then gas_sub_amount = (gas_sub_amount * 5) * 2 / 100

if GVAR_NEW_RENO_CAR_UPGRADE then gas_sub_amount = (gas_sub_amount * 3) * 2 * 15 / 100

if GVAR_CAR_UPGRADE_FUEL_CELL_REGULATOR then gas_sub_amount /= 2

car_gas -= gas_sub_amount 

Ссылка на комментарий
Там есть еще процедура timed_event_p_proc, но я не понял как ее запустить на скрипте который не привязан к объекту, я так понял что self_obj возвращает именно объект к которому привязан скрипт. 

 

В глобальных это не работает, сделал пару дней назад, но в релиз пока не вошло.

Ссылка на комментарий

Ребят, не декомпилируйте. При этом теряется весь препроцессинг (макросы), и читаемость ухудшается на порядок. Всегда ищите оригинальный скрипт для начала. Вот если не можете найти, тогда да.

Вот тут https://github.com/BGforgeNet/Fallout2_Unofficial_Patch/blob/master/scripts_src/newreno/ncrenesc.ssl ищем dude_iq.

 

Но, к сожалению, единой системы проверок нет, скрипты писали левой ногой. Если интересует именно список, то я бы обратился к гайду Пера Джорнера.

FO2tweaks: неограниченные напарники, запрет напарникам стрельбы очередями, улучшенные гранаты итп.
Переводы: Fallout Fixt svg-badge.svg, Restoration Project svg-badge.svg, Dangerous Quest! svg-badge.svg

Инструменты: расширение VScode с поддержкой скриптов Fallout.

Информация: документация к sfall, вики по Fallout: Nevada, вики PlayItHardcore.

Если есть вопросы, в личку не пишите, лучше пишите на форум.

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...