Формулы для книг - Nuclear Grot: Форум
🔥 Новые сообщенияОбновленные темы 🔎 Поиск по форумуRSS
  • Страница 1 из 1
  • 1
Формулы для книг
Gracer Дата: Четверг, 10 Августа 2023, 01:38 | Сообщение # 1
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Всем привет.
Подскажите, знающие люди, в каких ресурсах искать формулы для изменения статов героя после прочтения книг. Много информации перерыл, но так и не нашёл.
 
Mr-Stalin Дата: Четверг, 10 Августа 2023, 01:55 | Сообщение # 2
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
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
Награды: 0
OffLine
Цитата
Что конкретно надо, какая задача?

Поменять формулу получения очков навыков от прочтения книг на что-то типа [10*(300-CurrentLevel)/200*INT/10]

Добавлено (10 Августа 2023, 02:07)
---------------------------------------------

Цитата
Не нашел, потому что вся информация (закодированная) находится в движке. Во внешних файлах ее нет.

Я пытался раскопать в файлах скриптов или прото внутри master.dat. Ничего не смог найти.
 
Mr-Stalin Дата: Четверг, 10 Августа 2023, 02:08 | Сообщение # 4
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
Поменять формулу получения очков навыков
Юзать скриптинг, крючки
HOOK_USEOBJ
HOOK_USEOBJON

точно не помню какой из них под книги юзается.

Умееш?

Fallout - Mods and Tools
 
Mr-Stalin Дата: Четверг, 10 Августа 2023, 02:11 | Сообщение # 5
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
Ничего не смог найти.
Да нету формулы в файлах, реализация в exe запрограммирована.

Fallout - Mods and Tools
 
Gracer Дата: Четверг, 10 Августа 2023, 02:14 | Сообщение # 6
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата
Юзать скриптинг, крючки
...

Умееш?

Пока нет, но посмотрю примеры, попробую. Есть вроде один пример мода FRP Skill Books, попытаюсь в нём посмотреть.
Не хотелось бы усложнять этот процесс ради простой хотелки...

Спасибо, что так быстро откликнулся.

Добавлено (10 Августа 2023, 02:15)
---------------------------------------------

Цитата
Да нету формулы в файлах, реализация в exe запрограммирована.

Понял.
 
Foxx Дата: Четверг, 10 Августа 2023, 08:30 | Сообщение # 7
Повелитель сборок
Рейнджер
Сообщений: 148
Награды: 10
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
Награды: 0
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
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
то оно true?
да

Цитата Gracer ()
будет же равно 1?
да - сколько уровней перка столько и будет

Fallout - Mods and Tools
 
Gracer Дата: Пятница, 11 Августа 2023, 09:28 | Сообщение # 10
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Mr-Stalin, благодарю за ответ.

Добавлено (09 Сентября 2023, 00:54)
---------------------------------------------
Mr-StalinFoxx, подскажите, какая функция вытаскивает наименование скилла? ну, типа

Код
get_skill_name(SKILL_ENERGY_WEAPONS) = "Energy weapons"

 
Mr-Stalin Дата: Суббота, 09 Сентября 2023, 05:24 | Сообщение # 11
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
какая функция вытаскивает наименование скилла

Код
message_str_game(int fileId, int messageId)
или макрос mstr_skill(messageId)


Fallout - Mods and Tools
 
Gracer Дата: Суббота, 09 Сентября 2023, 22:04 | Сообщение # 12
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
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
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
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
Награды: 0
OffLine
Так, вопрос. Это же интерпретируемый язык? раз он позволяет объявление skills = 0 менять на skills = [a, b, c].
я попробую со skills этот трюк. bonus я специально считал во float для всех случаев с учётом перка и тага скилла. но кажется понял, где с расчётом лоханулся. а конверчу его в int только для вызова critter_mod_skill. ну ок, вернусь к первоначальной манере.

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

Спасибо за замечания. Пойду ещё править и пробовать разные варианты.
 
Mr-Stalin Дата: Воскресенье, 10 Сентября 2023, 00:27 | Сообщение # 15
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
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
Награды: 0
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
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
36000 это час. У тебя там гг случайно не с 1 интом?) тогда и будет 10 часов.

С функцией round я ошибся там проблемы небыло.

Fallout - Mods and Tools
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 12:56 | Сообщение # 18
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
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
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Сегодня вечером гляну как там это работает.
set_sfall_return(1) -удаляет книгу.

Fallout - Mods and Tools
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 13:09 | Сообщение # 20
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата Mr-Stalin ()
set_sfall_return(1) -удаляет книгу.
понял, благодарю.
 
Mr-Stalin Дата: Воскресенье, 10 Сентября 2023, 13:11 | Сообщение # 21
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
Я сейчас в скрипте задизейблил фейдауты и exec_map_update_scripts, а они всё равно сработали, как будто основная игровая механика включилась.
Вот это уже интересно))

Новую игру начинать не надо.

Fallout - Mods and Tools
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 13:20 | Сообщение # 22
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата Mr-Stalin ()
Вот это уже интересно))
ага! всё таки подкинул "на лопате"? smile ну если совсем станет интересно могу и архив с игрой и сейвами выложить на обменник.
в любом случае, спасибо за помощь ещё раз.
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 13:45 | Сообщение # 23
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Тем временем, вот  что мне удалось найти по поводу использования exec_map_update_scripts

1. Факт первый  Спойлер

2. Факт второй Спойлер

Прикрепления: 5009173.png (7.5 Kb) · 1046729.png (47.1 Kb)
 
Mr-Stalin Дата: Воскресенье, 10 Сентября 2023, 16:29 | Сообщение # 24
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Там проблема в for/while делай без цикла и все заработает.
Хз какаято проблема толи в компиляторе толи в движке скорее в компиляторе.

Блин время забыл чекнуть. Потом тогда.

Fallout - Mods and Tools
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 18:15 | Сообщение # 25
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата Mr-Stalin ()
Там проблема в for/while делай без цикла и все заработает.
вот это да smile лучшие паттерны программирования...
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 23:03 | Сообщение # 26
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
не могу сказать, что горжусь этим, но вот так - получилось. действительно циклы for/foreach/while что-то ломают.
в этом варианте время нормально проходит, а скиллы добавляются.
Прикрепления: gl_wide_skill_books.ssl (3.2 Kb)
 
Mr-Stalin Дата: Воскресенье, 10 Сентября 2023, 23:34 | Сообщение # 27
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
в этом варианте время нормально проходит
вот и славненько. а то я уже хотел проверять.

Fallout - Mods and Tools
 
Gracer Дата: Воскресенье, 10 Сентября 2023, 23:44 | Сообщение # 28
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата Mr-Stalin ()
вот и славненько. а то я уже хотел проверять.
спасибище огромное, за то что помог со всеми этими нюансами.
 
Mr-Stalin Дата: Понедельник, 11 Сентября 2023, 02:56 | Сообщение # 29
Мистер Сталин
Солдат братства
Сообщений: 580
Награды: 32
OffLine
Цитата Gracer ()
Тем временем, вот  что мне удалось найти по поводу использования exec_map_update_scripts
Ну это понятно что exec_map_update_scripts, влияет на другие скрипты.
Но просто так с ничего, не будет увеличиваться время на допустим еще +2 часа (кроме случаев неадекватного скриптинга), для этого нужно какое-то другое событие выполнить, а гг то  стоит книгу читает, думаю мысль понятна.

Fallout - Mods and Tools
 
Gracer Дата: Понедельник, 11 Сентября 2023, 17:42 | Сообщение # 30
Gracer
Автор темы
Житель пустошей
Сообщений: 33
Награды: 0
OffLine
Цитата Mr-Stalin ()
кроме случаев неадекватного скриптинга
спасибо за объективную оценку моего опуса smile шучу.
и я это скорей  к тому, что использование айтема из инвентаря может быть перехвачено основным движком именно по этому событию (в  случае неадекватного скриптинга).
 
  • Страница 1 из 1
  • 1
Поиск: