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

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

F2: Скрипт для изменения урона от яда и возможности пассивной регенерации аберраций в бою.

Пассивная регенерация Fallout 2 mod scripts poison яд скрипты

#1 DeKRuS

DeKRuS

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

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

Отправлено 10 Январь 2022 - 18:57

Здравствуйте, товарищи!

Уже дописываю скрипт на изменение яда и лечения в бою.

ЯД:

-Теперь урон от яда получает не только игрок но и все существа без иммунитета к яду.

-Триггер на урон от яда срабатывает в конце каждого хода отравленного существа в бою или каждые 4-6 секунд вне боевого режима.
-Урон от яда зависит от максимального здоровья существа, от уровня накопленного яда и может быть настроен в .ini файле.
-Если яда накопится больше 100 ед. наступает мгновенная смерть. 

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

Уход с карты мгновенно наносит НПЦ урон от всего накопленного яда(игрок получит урон если выйдет на глобальную карту и начнет движение)

-В планах добавить урон от яда для оружия ближнего боя при использовании яда/хвоста радскорпа. 

Восстановление здоровья:

-Если разогнать скорость восстановления(Healing_rate, HR) выше 5, то здоровье начнет постепенно восстанавливаться само каждый ход в бою и каждые 5-6 сек вне боя.

-Стимуляторы восстанавливают 1-5 хп и увеличивают HR на 6 ед. на 1 мин. максимальный показатель HR = 30. после чего снижают HR на 8ед на час, затем показатели приходят в норму. ( HR может уйти в "минус" и быть выше 30, просто это не будет отображаться в листе персонажа и не будет учитываться в формуле.)

-Супер стимулятор даёт сразу 60 хп, но расходует все регенераторные запасы организма и тем самым снижает HR на 50 ед. на сутки, не давая ему восстанавливаться если не использовать достаточно стимуляторов 10+ штук
-Количество восстанавливаемого здоровья зависит от максимального здоровья и величины HR.(настраивается в ini)

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

-Отдых/перемещение по глобальной карте/использование навыков пропускающих время(первая помощь/доктор) восстанавливает здоровье по формуле. Выход на глобальную карту(другую локацию) восстанавливает здоровье НПЦ равное 2 * (хп за один ход). Реализация регенерации игрока под действием стимулятора на глобале пока не реализовано(эффект длиной в 1 минуту кончается раньше начала движения по карте, hook для этого дела я не нашёл).

 

 

Текст первого соощения

Спойлер

 

Под спойлером скрипт.

Спойлер

 

И текстовый файл настроек с достаточным описанием  для удобства в поиске нового баланса(пока остановился на тех числах что стоят сейчас)

Спойлер

 

Обновленная  Ссылка на архив с 0.36 версией "мода". 

Советую в ddraw.ini найти и поставить "SpeedInterfaceCounterAnims" равное (2) , если кто-то рискнет попробовать эти скрипты!

 

У меня появилась куча проблем и вопросов которые я надеюсь решить с вашей помощью:

  • 1. Исходная формула отравления все еще работает, её можно отключить или даже лучше переписать? (У меня были устаревшие headers (точнее вообще их не было) переделал старое поведение яда через hook_adjustpoison. Спасибо товарищу Сталину!
  • Можно ли сделать мой первый скрипт не используя hook_Combatturn? ( осознал что не надо)
  • 3. Существует ли аналог dude_obj для кричей? в первом скрипте через hook_combat turn, аналог это нулевой get_sfall_arg. Как можно выделить всех кричей с уровнем яда не переписывая все их прото id в ручную? 
  • 4. Можно ли уменьшить длительность медикаментов ниже 1 игровой минуты(12 ходов)? любые дробные значения в duration_time не приводят к результату
  • 5. Максимальный для всех существ  уровень скорости восстановления(Healing_rate) 30, минимальный 0, опытным путем я установил что истинные значения всё ж на месте. можно иметь отрицательный уровень и также больше 30, но на результат моих формул это не влияет.
  • 6.Можно ли как-то отложить срабатывание скрипта после загрузки сейва? К примеру нужно чтобы процедура map_enter_p_proc срабатывала через энное количество (секунд/фреймов/тиков) загрузки карты? ( В процедуре  map_enter_p_proc сделал вызов другой процедуры через "call {procedure} in {delay};" полёт нормальный .
  • 7. Вызывая через "call {procedure} in {delay};" процедуру в которой есть массив (криттеров, с другими пока не проверял) получаю ничего, та часть процедуры которой не нужен массив и никак с ним не связанная, выполняется как нужно - через {delay} секунд. 

 

Спасибо за то что дочитали!


Сообщение отредактировал DeKRuS: Вчера, 18:42



#2 Pyran

Pyran

    45.5278° 13.5706°

  • R.S.M.
  • 12 036 сообщений
  • Откуда:Люблю как умею - живу так же.

Отправлено 10 Январь 2022 - 20:49

Приветствуем.

В EcCo есть ограничение на использование стимпаков, по умолчанию 2 стимпака, остальные требуют од на применение. 

Урон от яда - можно прописать в прошках (или убрать его).  Попутал с противоядием.

Думаю, что возможно за основу взять скрипт алкоголя... get_drunk

Кричи? Вы про Critters?

А так, ждите гуру. 

Скачивайте F2tools, там редакторы скриптов, прото-файлов итд... см. путеводитель.


Fallout 2: Путеводитель по модам | FAQ | Перевод модов
Nevada Band: Путеводитель по играм серии
FAQ

Помогая другим, не забывай о себе



#3 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 015 сообщений

Отправлено 10 Январь 2022 - 23:57

1. Исходная формула отравления все еще работает, её можно отключить или даже лучше переписать? (может HOOK скрипт какой есть для этого? ( у меня в SFall Script Editor таких вариантов я не нашёл)

 

2. Можно ли сделать мой первый скрипт не используя hook_Combatturn? ( у меня выходило так что урон от яда проходил бесконечное число раз во время хода, пока весь яд не выветрится, но 1 раз за ход я смог сделать только через хук)

 

3. Существует ли аналог dude_obj для кричей? в первом скрипте через hook_combat turn, аналог это нулевой get_sfall_arg. Как можно выделить всех кричей с уровнем яда не переписывая все их прото id в ручную?

 

4. Можно ли уменьшить длительность медикаментов ниже 1 игровой минуты(12 ходов)? любые дробные значения в duration_time не приводят к результату

 

5. Максимальный для всех существ уровень скорости восстановления(Healing_rate) 30, минимальный 0, опытным путем я установил что истинные значения всё ж на месте. можно иметь отрицательный уровень и также больше 30, но на результат моих формул это не влияет.

 

6.Можно ли как-то отложить срабатывание скрипта после загрузки сейва? При малом количестве здоровья и наличии отравления приходится загружаться по несколько раз, пока не прокнет удача)

1. SFall Script Editor не обновляесться поэтому там пока ничего из последнего нет.

посмотри в документации в sfall там добавлялись крючки для яда и радиации. (давно добавлял и уже непомню что с помошью их можно делать).

 

2. Наверное нельзя.

 

3. Через массивы. Создаешь массив криттеров карты и проходишь по каждому (читай мануал по массивам).

 

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

 

5. -?

 

6. ваще непонял. делай проверку на загрузку.

 

Урон от яда - можно прописать в прошках (или убрать его).

не вводи в заблуждение.


sFall 4 - Extended version - Расширенная версия исправления движка для Fallout 2.

Fallout Proto Manager v1.3.0 - Создание и редактирования прото-файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для модинга Fallout.

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


#4 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 015 сообщений

Отправлено 11 Январь 2022 - 03:37

Скрипты конечно в стиле Foxx Ltd. стайл - нихрена не читаемо (не понятно).

 

2 скрипта можно объеденить в один, но это уже следующий уровень мастерсва, пока качайся на крысах)))


sFall 4 - Extended version - Расширенная версия исправления движка для Fallout 2.

Fallout Proto Manager v1.3.0 - Создание и редактирования прото-файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для модинга Fallout.



#5 DeKRuS

DeKRuS

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

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

Отправлено 11 Январь 2022 - 18:54

Скрипты конечно в стиле Foxx Ltd. стайл - нихрена не читаемо (не понятно).

 

2 скрипта можно объеденить в один, но это уже следующий уровень мастерсва, пока качайся на крысах)))

Спасибо за рабочие советы! Правда меня даже крысы побили... и скриптов стало уже три, но благодаря докам из архива с нормальной версией "Script editor"а я всё ж смог запихнуть всё в один работоспособный файл) 

Подскажи, пожалуйста, как скрипты сделать более читаемыми? есть какие-то общепринятые стандарты их написания? или там просто нужно везде комментарии оставлять? 

 

И ещё по 6 вопросу, может так будет чуть понятнее, а то в первый раз  я там фигню написал:

6.Можно ли как-то отложить срабатывание скрипта после загрузки сейва? К примеру нужно чтобы процедура map_enter_p_proc срабатывала через энное количество (секунд/фреймов/тиков) загрузки карты?




#6 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 015 сообщений

Отправлено 11 Январь 2022 - 20:30

Подскажи, пожалуйста, как скрипты сделать более читаемыми? есть какие-то общепринятые стандарты их написания? или там просто нужно везде комментарии оставлять?

вместо тупых/голых цифр им даются определения с именами со смыслом.

например

#define  PoisonLowLevel    10

и вместо значения 10 в скрипте, по имени определения уже понятно о чем идет речь.

переменным тоже даются смысловые имена а не lvar01

 

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

если надо то есть функция up_time (непомню точно название) - тики которой идут нон-стоп (в реалтайме).

 

ps: читать конфиги get_ini_setting лучше один раз в переменную при загрузке/старте скрипта, а не каждый раз при вычислении, это повысит производительность скрипта, т.к. доступ к значению в файле не кэшируется.


sFall 4 - Extended version - Расширенная версия исправления движка для Fallout 2.

Fallout Proto Manager v1.3.0 - Создание и редактирования прото-файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для модинга Fallout.

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


#7 DeKRuS

DeKRuS

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

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

Отправлено 13 Январь 2022 - 19:46

вместо тупых/голых цифр им даются определения с именами со смыслом.

например

#define  PoisonLowLevel    10

и вместо значения 10 в скрипте, по имени определения уже понятно о чем идет речь.

переменным тоже даются смысловые имена а не lvar01

 

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

если надо то есть функция up_time (непомню точно название) - тики которой идут нон-стоп (в реалтайме).

 

ps: читать конфиги get_ini_setting лучше один раз в переменную при загрузке/старте скрипта, а не каждый раз при вычислении, это повысит производительность скрипта, т.к. доступ к значению в файле не кэшируется.

Ещё раз спасибо за все ответы и помощь в целом! 
Я тут переписал и обновил скрипт в первом сообщении, чтобы он стал понятнее и мне указали на новые ошибки)

Спойлер

 

По поводу отложенного запуска. Я попробовал сделать его через вызов другой процедуры с помощью "call {procedure} in {delay};" внутри map_enter_p_proc, и оно сработало прям так как я и хотел! Почти( 
Вызывая с задержкой процедуру в которой есть массив (криттеров который - (0), с другими пока не проверял) получаю ничего, но та часть процедуры которой не нужен массив и никак с ним не связанная, выполняется как нужно - через {delay} секунд.  
 

foreach (critter in list_as_array(0)) begin

if get_poison(critter) > 0 then begin
чё-то делается должно;
end

 

если вместо critter поставить указание на конкретное существо (dude_obj к примеру) то "call in delay" работает прекрасно. я не до конца понял как работают массивы, может он тут временный и успевает удалиться если им сразу не воспользоваться?

 

И еще такой вопрос, а можно ли как-то экспортировать Lvar'ы(точнее их значение) из одной процедуры внутри скрипта в другую, для того чтобы get_ini_setting писалось 1 раз за весь скрипт? или это никакой оптимизации не даст? и может можно свои макросы написать? а то у меня куча раз повторяются одни и те же строчки, просто в разны хук_проках




#8 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 015 сообщений

Отправлено 13 Январь 2022 - 20:54

может он тут временный и успевает удалиться если им сразу не воспользоваться?

c call delay там не все так гладко, да массив мог удалиться. делай его сразу постоянным (только удалить не забудь а то так и будет размножаться).

или сделать процедуру critical (модификатор)

или так пометить кусок кода

start critical

...

end critical

 

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

кроме локальных которые непосредственно в процедуре объявляются.

 

делай макросы если хочешь.


sFall 4 - Extended version - Расширенная версия исправления движка для Fallout 2.

Fallout Proto Manager v1.3.0 - Создание и редактирования прото-файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для модинга Fallout.

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


#9 DeKRuS

DeKRuS

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

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

Отправлено Вчера, 18:40

Зафиксировав массивы "Call in delay" сработал, но там потом полезли другие проблемы, правда get_game_mod помог. Но позже я решил свой вопрос иначе, просто разместил вызов процедур  сверху в низ в том порядке который мне был изначально нужен, до этого момента я считал что вызываются они все разом, а не по порядку :fool:

Хотелось бы еще пару вопросов задать)

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

P.S. для интересующихся обновил инфу и скрипт в первом сообщении темы.

 




#10 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

  • Desert Rangers
  • PipPipPipPipPip
  • 5 015 сообщений

Отправлено Вчера, 18:57

300 не страшно. "страшно" 1-50.

 

может есть какой аналог hs_cartravel

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


sFall 4 - Extended version - Расширенная версия исправления движка для Fallout 2.

Fallout Proto Manager v1.3.0 - Создание и редактирования прото-файлов.

sFall Script Editor v4.1.7.RC1 - Написание скриптов и отладки диалогов.

Mapper by Dims v0.99.3 - Обновленный редактор карт c дополнительными возможностями.

Другие утилиты для модинга Fallout.


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

Похожие темы


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

0 members, 0 guests, 0 anonymous users