Формулы для книг
|
|
Gracer |
Дата: Четверг, 10 Августа 2023, 01:38 | Сообщение # 1 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Всем привет. Подскажите, знающие люди, в каких ресурсах искать формулы для изменения статов героя после прочтения книг. Много информации перерыл, но так и не нашёл.
|
|
| |
Mr-Stalin |
Дата: Четверг, 10 Августа 2023, 01:55 | Сообщение # 2 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Много информации перерыл, но так и не нашёл. Не нашел, потому что вся информация (закодированная) находится в движке. Во внешних файлах ее нет.
Что конкретно надо, какая задача?
Вот формула для всех книг
Код points = (100 - skill_level(obj_dude, skill)) / 10 (чем выше навык тем меньше получаем)
с перком Сomprehension к points добавляется +50%
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Четверг, 10 Августа 2023, 02:03 | Сообщение # 3 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Что конкретно надо, какая задача? Поменять формулу получения очков навыков от прочтения книг на что-то типа [10*(300-CurrentLevel)/200*INT/10]Добавлено (10 Августа 2023, 02:07) ---------------------------------------------
Цитата Не нашел, потому что вся информация (закодированная) находится в движке. Во внешних файлах ее нет. Я пытался раскопать в файлах скриптов или прото внутри master.dat. Ничего не смог найти.
|
|
| |
Mr-Stalin |
Дата: Четверг, 10 Августа 2023, 02:08 | Сообщение # 4 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Поменять формулу получения очков навыков Юзать скриптинг, крючки HOOK_USEOBJ HOOK_USEOBJON точно не помню какой из них под книги юзается.
Умееш?
Fallout - Mods and Tools
|
|
| |
Mr-Stalin |
Дата: Четверг, 10 Августа 2023, 02:11 | Сообщение # 5 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Ничего не смог найти. Да нету формулы в файлах, реализация в exe запрограммирована.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Четверг, 10 Августа 2023, 02:14 | Сообщение # 6 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Юзать скриптинг, крючки ...
Умееш? Пока нет, но посмотрю примеры, попробую. Есть вроде один пример мода FRP Skill Books, попытаюсь в нём посмотреть. Не хотелось бы усложнять этот процесс ради простой хотелки...
Спасибо, что так быстро откликнулся.Добавлено (10 Августа 2023, 02:15) ---------------------------------------------
Цитата Да нету формулы в файлах, реализация в exe запрограммирована. Понял.
|
|
| |
Foxx |
Дата: Четверг, 10 Августа 2023, 08:30 | Сообщение # 7 |
Повелитель сборок
Рейнджер
Сообщений: 148
OffLine
|
Вот здесь можно посмотреть: https://www.nma-fallout.com/threads.....221882
Цитата A simple mod that changes all skill books to increase skills by a fixed amount, and they can still increase skills when it's over 91%. Basically it recreates the "obj_use_books" engine function with skill increment logic changed.
By default reading a book gives +5% to a skill (+6% if it's tagged), +8% with the Comprehension perk. This mod only covers 5 vanilla books, feel free to modify the included script source to extend it.
Группа в VK: ReBuild By Foxx
|
|
| |
Gracer |
Дата: Четверг, 10 Августа 2023, 10:01 | Сообщение # 8 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Foxx, many thanks to you too. Добавлено (10 Августа 2023, 22:03) --------------------------------------------- Эммм, я прошу прощения за наглость, но может кто-нибудь поможет скомпилировать маленький скрипт. Я так понимаю, что для работы sFall Script Editor'а в процессе компиляции нужен еще и C-препроцессор. Чот я этот момент не могу осилить. Добавлено (11 Августа 2023, 00:38) --------------------------------------------- Хотя нет, разобрался вроде. Просто использовал старый sFall Script Editor, который не подсвечивал синтаксис. Оказалось, что в том скрипте по ссылке, что любезно предоставил мистер Foxx, чувак использовал какую-то не определенную функцию dude_perk. Я заменил её на has_trait и всё получилось.
Mr-Stalin, в этом языке если внутри if() значение типа int>0, то оно true?
Код has_trait(TRAIT_PERK, dude_obj, PERK_comprehension_perk)
будет же равно 1?
Сообщение отредактировал Gracer - Четверг, 10 Августа 2023, 22:03
|
|
| |
Mr-Stalin |
Дата: Пятница, 11 Августа 2023, 01:47 | Сообщение # 9 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) то оно true? да
Цитата Gracer ( ) будет же равно 1? да - сколько уровней перка столько и будет
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Пятница, 11 Августа 2023, 09:28 | Сообщение # 10 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Mr-Stalin, благодарю за ответ. Добавлено (09 Сентября 2023, 00:54) --------------------------------------------- Mr-Stalin, Foxx, подскажите, какая функция вытаскивает наименование скилла? ну, типа
Код get_skill_name(SKILL_ENERGY_WEAPONS) = "Energy weapons"
|
|
| |
Mr-Stalin |
Дата: Суббота, 09 Сентября 2023, 05:24 | Сообщение # 11 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) какая функция вытаскивает наименование скилла Код message_str_game(int fileId, int messageId) или макрос mstr_skill(messageId)
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Суббота, 09 Сентября 2023, 22:04 | Сообщение # 12 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Уважаемый Mr-Stalin, если будет возможность ответить на мои вопросы касательно двух скриптов, прикреплённых к посту, буду очень признателен, ибо мозг мой закипает от непонимания, казалось бы простых вещей.
Оригинал работоспособного файла - gl_static_books.ssl, моя попытка переделать - это gl_static_books_v2.ssl. Суть в том, что при прочтении книги хочется изменять ещё и другие статистики. И вроде даже работает, но много нюансов и вопросов. 1. Такое ощущение, что переменные живут локально внутри for или foreach, display_msg(msg) выносишь за него - и ничего не отображается 2. Проходит 10 часов времени вместо одного 3. Не уверен, что вообще правильно массивы использую
Будет время, дай, пожалуйста, советы бывалого мододела.
|
|
| |
Mr-Stalin |
Дата: Суббота, 09 Сентября 2023, 23:17 | Сообщение # 13 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Ничего такого странного не увидел, кроме одной ошибки
Код if (skills != []) then begin
скобки на 0 замени, и там где skills объявляется тоже убрать скобки. но на вопросы 1 и 2 это не влияет, там я даже не знаю, все должно работать.
----------- В скрипт редакторе пользуйся "Roundtrip F5" чтобы посмотреть во что превращается скрипт после компиляции.
а вот еще, косячек, какое-то неопределенное поведение походу делаешь) потому как bonus это int а надо float
Код bonus := round(bonus);
лучше целочисленное умножение делай, вместо с плавающей запятой. или перенеси округление там где умножение делаешь. вот так
Код bonus := round(bonus * 1.5);
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Суббота, 09 Сентября 2023, 23:55 | Сообщение # 14 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Так, вопрос. Это же интерпретируемый язык? раз он позволяет объявление skills = 0 менять на skills = [a, b, c]. я попробую со skills этот трюк. bonus я специально считал во float для всех случаев с учётом перка и тага скилла. но кажется понял, где с расчётом лоханулся. а конверчу его в int только для вызова critter_mod_skill. ну ок, вернусь к первоначальной манере.
Что же по поводу 10 часов времени, у меня есть подозрение, что это так работает display_msg(). он типа закрывает инвентарь, пишет в лог, открывает инвентарь. а из-за какой-нибудь механики при чтении каждый раз при этом время на час проматывается.
Спасибо за замечания. Пойду ещё править и пробовать разные варианты.
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 00:27 | Сообщение # 15 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Это же интерпретируемый язык? раз он позволяет объявление skills = 0 менять на skills = [a, b, c]. в skills присваивается номер массива от 1 до .... вот код после компиляции
Код if (skills != []) then begin
if (LVar2 != temp_array(0, 0))
с начало skills содержит массив 1, потом 2, а в условии проверяется уже с != 3
Цитата Gracer ( ) Что же по поводу 10 часов времени, у меня есть подозрение, что это так работает display_msg(). он типа закрывает инвентарь, пишет в лог, открывает инвентарь. а из-за какой-нибудь механики при чтении каждый раз при этом время на час проматывается. Нет там такого))) Как работает время позже проверю.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 00:33 | Сообщение # 16 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) с начало skills содержит массив 1, потом 2, а в условии проверяется уже с != 3 ооооооо, понял. да, надо внимательней смотреть тогда код после F5.Добавлено (10 Сентября 2023, 00:44) ---------------------------------------------
Цитата Gracer ( ) Как работает время позже проверю. нашёл. хз почему, но константа ONE_GAME_HOUR конвертится в
Код game_time_advance(60 * (60 * 10) * (11 - get_critter_stat(dude_obj, 4)));
очевидно, что это 10 часов. декларируется в define.hДобавлено (10 Сентября 2023, 00:49) --------------------------------------------- а, блин, нет. 10 - это какие-то ticks для ONE_GAME_SECOND
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 06:19 | Сообщение # 17 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
36000 это час. У тебя там гг случайно не с 1 интом?) тогда и будет 10 часов.
С функцией round я ошибся там проблемы небыло.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 12:56 | Сообщение # 18 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) 36000 это час. У тебя там гг случайно не с 1 интом?) тогда и будет 10 часов. ахахах, не dude у меня с интеллектом десяточка. самое интересное, что первый вариант скрипта отрабатывает корректно. а во второй версии практически только цикл добавлен и display_msg(mstr_proto(msg)) убран. И ещё меня смущает set_sfall_return(1), я не знаю, что это такое.Добавлено (10 Сентября 2023, 13:04) --------------------------------------------- Я на всякий случай уточню: это важно, что я пытаюсь подменить скрипт на уже существующую сохранёнку? Или надо типа новую игру начинать или что-то такое? Я сейчас в скрипте задизейблил фейдауты и exec_map_update_scripts, а они всё равно сработали, как будто основная игровая механика включилась.
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 13:06 | Сообщение # 19 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Сегодня вечером гляну как там это работает. set_sfall_return(1) -удаляет книгу.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 13:09 | Сообщение # 20 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) set_sfall_return(1) -удаляет книгу. понял, благодарю.
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 13:11 | Сообщение # 21 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Я сейчас в скрипте задизейблил фейдауты и exec_map_update_scripts, а они всё равно сработали, как будто основная игровая механика включилась. Вот это уже интересно))
Новую игру начинать не надо.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 13:20 | Сообщение # 22 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) Вот это уже интересно)) ага! всё таки подкинул "на лопате"? ну если совсем станет интересно могу и архив с игрой и сейвами выложить на обменник. в любом случае, спасибо за помощь ещё раз.
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 13:45 | Сообщение # 23 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Тем временем, вот что мне удалось найти по поводу использования exec_map_update_scripts
1. Факт первый Спойлер 2. Факт второй Спойлер
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 16:29 | Сообщение # 24 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Там проблема в for/while делай без цикла и все заработает. Хз какаято проблема толи в компиляторе толи в движке скорее в компиляторе.
Блин время забыл чекнуть. Потом тогда.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 18:15 | Сообщение # 25 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) Там проблема в for/while делай без цикла и все заработает. вот это да лучшие паттерны программирования...
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 23:03 | Сообщение # 26 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
не могу сказать, что горжусь этим, но вот так - получилось. действительно циклы for/foreach/while что-то ломают. в этом варианте время нормально проходит, а скиллы добавляются.
|
|
| |
Mr-Stalin |
Дата: Воскресенье, 10 Сентября 2023, 23:34 | Сообщение # 27 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) в этом варианте время нормально проходит вот и славненько. а то я уже хотел проверять.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Воскресенье, 10 Сентября 2023, 23:44 | Сообщение # 28 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) вот и славненько. а то я уже хотел проверять. спасибище огромное, за то что помог со всеми этими нюансами.
|
|
| |
Mr-Stalin |
Дата: Понедельник, 11 Сентября 2023, 02:56 | Сообщение # 29 |
Мистер Сталин
Солдат братства
Сообщений: 577
OffLine
|
Цитата Gracer ( ) Тем временем, вот что мне удалось найти по поводу использования exec_map_update_scripts Ну это понятно что exec_map_update_scripts, влияет на другие скрипты. Но просто так с ничего, не будет увеличиваться время на допустим еще +2 часа (кроме случаев неадекватного скриптинга), для этого нужно какое-то другое событие выполнить, а гг то стоит книгу читает, думаю мысль понятна.
Fallout - Mods and Tools
|
|
| |
Gracer |
Дата: Понедельник, 11 Сентября 2023, 17:42 | Сообщение # 30 |
Gracer
Автор темы
Житель пустошей
Сообщений: 33
OffLine
|
Цитата Mr-Stalin ( ) кроме случаев неадекватного скриптинга спасибо за объективную оценку моего опуса шучу. и я это скорей к тому, что использование айтема из инвентаря может быть перехвачено основным движком именно по этому событию (в случае неадекватного скриптинга).
|
|
| |