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

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

F2: Скрипты на прицельные промахи, повреждение конечностей от взрывов, новую механику урона от яда и восстановления здоровья.

Fallout 2 mod poison яд прицельный выстрел

#1 DeKRuS

DeKRuS

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

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

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

Ссылка на тему NMA

Актуальная версия теперь будет тут: Ссылка на GitHub и Яндекс.Диск

 

Потихоньку реализую вещи которые лично мне бы хотелось видеть в фоле (можете закидать помидорами)

Прицельные промахи:

-Для попадания в глаза и пах теперь необходимо что бы цель была повернута к вам лицом, попасть в глаза стреляя в затылок теперь не получится. Попадания прицельным выстрелом по глазам когда цель стоит к вам спиной (или не тем боком) будут всегда превращаться в попадания в голову, тоже самое происходит если цель лежит лицом в пол. Вместо паха  выстрелы и удары со спины или "задних" боков будут попадать в тело или в одну из ног. (N.B у некоторых существ попасть в пах можно только со стороны жопЪки - кентавры/собаки/брамины и др.)

-Промахи при прицельных атаках с вероятностью равной "шанс попадания в часть тела / 19" (т.е. максимум 5%) могут превратиться в попадание в соседнюю часть тела.

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

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

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

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

- Добавлен шанс попасть по соседним частям тела при успешном неприцельном одиночном выстреле. Каждое успешное попадание может остаться с вероятностью 70% попаданием в тело. или стать попаданием в  3% в голову, 9% в руки, 11% в ноги и 7% в пах.

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

-Добавлена опция для изменения эффекта при атаке ножом в зависимости от анимации атаки (резать/колоть), работает как у игрока, так и у НПЦ:

#Резать:
- Уменьшает КБ цели на величину, равную (ловкость цели + (навык оружия ближнего боя атакующего/15)).
- По слабо бронированным целям взмах ножом с большей вероятностью нанесет максимальный урон, а не минимальный.
#Колющая атака ножом:
- Пробивает часть DR и DT цели в зависимости от максимального урона ножа и бонусного урона в ближнем бою атакующего, а также увеличивает шанс критического удара в 1,5 раза от базового шанса(без учета бонуса от прицельных атак).

 

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

Спойлер

 

Фиолетовым цветом выделены новые возможные цели, если выстрел не попадет в первоначальную цель (под прицелом).

Спойлер

 

Повреждение конечностей от урона взрывом:

-Полученный урон от гранат(включая плазменные, а для роботов также ЕМП ), гранатомётов и прочего оружие взрывного действия, если он превышает 10% от текущих!  очков здоровья может привести к повреждению рук/ног, поражению глаз. (Вероятность настраивается в ini файле и зависит также от некоторых показателей S.P.E.C.I.A.L. цели).

 

"Лог предыдущих обновлений"

Спойлер

 

 

ЯД:

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

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

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

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

Теперь хвосты радскорпионов можно использовать для нанесения яда на колющее и режущее оружие игрока и сопартийцев(со временем яд в хвосте заканчивается), с каждым применением на оружие в активной руке накладывается бафф яда(либо на не активную, если в активной нет подходящего оружия), который стакается только на этом оружии! до 10 зарядов (отображаются как перки в панели персонажа с указанием названия отравленного оружия), после чего каждый успешный удар повышает уровень яда у противника, чем больше зарядов тем сильнее отравление, каждая успешная атака с вероятностью 33% может потратить 1 заряд яда с оружия, также заряды постепенно убывают если убрать отравленное оружие из рук(в сумку/ продать/потерять). Метательное оружие: отравляется вся пачка, можно не боятся выкинуть единственный отравленный нож.

- Добавлен перк "Консервация яда" доступный с 6 уровня и требующий науку 50+ либо навык натуралиста выше 70.
Перк увеличивает количество максимально наносимого яда на оружие и количество применений ядовитой железы радскорпиона.
Уменьшает шанс потерять стаки яда при атаке отравленным оружием и скорость потери стаков яда пока оружие не активно.
Добавляет отравление при стрельбе боеприпасами для инъектора.
 

 

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

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

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

-Суперстимулятор восстанавливает до 60 hp, при этом временно уменьшая  "скорость восстановления" в зависимости от фактически восстановленого hp. Если количество лечения превышает доступную "скорость восстановления", то через минуту СС наносит урон. Урон от последействия СС теперь зависит от количества фактически восстановленного здоровья и доступной на момент применения "скорости восстановления". (если СС применен к существу без повреждений или с очень высокой "скоростью восстановления" и низкими повреждениями, то урон наносится не будет.)
-Также теперь Суперстимулятор лечит сломанные конечности(как игроку, так и НПЦ), при этом увеличивая штраф к  "скорости восстановления", а следовательно и возможный урон от последействия, и немного снижая количество восстанавливаемых ХП, в зависимости от количества и вида травм.

-Количество восстанавливаемого здоровья зависит от максимального здоровья и величины HR.(настраивается в ini)

-Наличие трейта "Ускоренный метаболизм" увеличивает эффективность лечения и снижает штрафы накладываемые стимулятором и суперстимулятором.

-Некоторые монстры имеют пассивную регенерацию (ванаминго/кентавры, можно отключить в ini файле). 

-Регенерация временно может снижаться или полностью прекратиться  при получении достаточного количества "ожогов"  от огненного или плазменного оружия. Эти "ожоги" действуют как на игрока, так и на НПЦ, снижая  скорость лечения на 1-4 ед. за каждые 8-10 ед. урона полученных от огня и плазмы.(перк "Пироман" защищает от "ожога" при нанесении урона самому себе(гранаты, молотов) и увеличивает снижение регенерации у врагов. Состояние "ожога" проходит со временем.

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

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

- Добавлен бонусный перк "Регенерация", который автоматически добавляется игроку, если базовая "скорость восстановления" будет больше 5, позволяющий с шансом, зависящим от "скорости восстановления", исцелять травмы конечностей при тиках лечения, как в бою так и вне боя.

 

"Лог предыдущих обновлений"

Спойлер

 

Скрытность:
Убрана случайность из навыка скрытности, теперь зона обнаружения постепенно уменьшается с ростом уровня навыка и зависит общего освещения карты.
 
Обнаружение скрытности:
Цветовая индикация обнаружения скрытности работает для оригинальной и новой механики скрытности.
Пока крадущийся игрок находится в пределах видимости NPC, контур этого NPC будет выделен:
- Красным - Игрок обнаружен.
- Желтый   - Игрок не обнаружен, но будет, если приблизится примерно на 2-3 гекса.
- Зеленый - Игрок не обнаружен, можно безопасно приближаться к NPC.
Спойлер
 
Карманная кража:
Оригинальная механика карманной кражи не учитывала восприятие цели.
Также вероятность неудачи не зависела от навыка и была всегда одинакова как для 85 (а иногда и меньших значений), так и для 300 уровня навыка кражи.
Данный мод создан для увеличения влияния навыка кражи и добавления возможности воровать оружие из рук НПЦ)
Основные моменты:
- Расчет вероятности успеха аналогичен исходной формуле с добавлением зависимости от восприятия цели и навыка кражи игрока.
- Если навык кражи развит более 140%, то за каждые 10 очков сверху максимальный шанс успешной кражи увеличивается на 1% (0,1% за 1 очко) до максимума в 99%.
- Когда навык превышает 160+(текущее восприятие цели х 5) становится возможным воровать оружие и предметы из рук NPC.
- Чтобы заглянуть в карман цели, вам нужно соответствовать минимальным требованиям к навыку.
- В случае неудачной попытки использовать навык кражи, цель может стать враждебной, наличие перка "Безобидный" значительно снижает этот шанс.
 
Отрицательные Модификаторы, повышающие требования к навыку и снижающие шанс успешной карманной кражи:
- Игрок стоит перед лицом цели.
- Игрок находится перед лицом ближайших союзников цели и виден им.
Отрицательные Модификаторы, уменьшающие шанс успешной карманной кражи:
- Вес и размер предмета (если не взят перк "Карманник")
- Количество предметов, украденных подряд.
 
Положительные Модификаторы, снижающие требования к навыкам и повышающие шанс успешной карманной кражи:
- Режим скрытности. Бонус зависит от уровня навыка скрытности + значительное увеличение бонуса, если цель не видит игрока.
- Условия слабой освещенности (пещеры, подвалы, ночь и т.п.) чем темнее тем проще заглянуть в карман.
  (С поправкой на наличие перка "Ночное видение")
- Цель без сознания/ослеплена (бонус зависит от тяжести состояния).
 
Дополнительно включаемые настройки:
- Первая попытка украсть всегда будет 100%, если вы достигли минимально необходимого навыка кражи. (обходной путь для уменьшения количества сохранений/загрузок)
- Последующие попытки, во избежание злоупотребления опытом за кражу, будут рассчитываться по формуле.
- Усложнение кражи предметов в зависимости от их стоимости, чем дороже, тем сложнее.
- Повышение сложности воровства у торговцев.
 

 

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

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

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


Сообщение отредактировал DeKRuS: 15 Май 2022 - 14:16

  • QweSteR, Mr.Сталин, Ratibor1985 и еще 1 это нравится


#2 Pyran

Pyran

    45.5278° 13.5706°

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

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

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

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

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

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

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

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

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


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

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

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

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


#3 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

Отправлено 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 369 сообщений

Отправлено 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.

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


#5 DeKRuS

DeKRuS

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

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

Отправлено 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 369 сообщений

Отправлено 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
  • 32 сообщений

Отправлено 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 369 сообщений

Отправлено 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
  • 32 сообщений

Отправлено 17 Январь 2022 - 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 369 сообщений

Отправлено 17 Январь 2022 - 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.



#11 DeKRuS

DeKRuS

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

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

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

у меня возникли проблемы с "set_unique_id" и хочется узнать пару моментов:

Намбер ван: возможно ли и если да, то каким образом  сделать  "unset_unique_id" предмета зная его новый уникальный id? 

      unic_wp := set_unique_id(critter_inven_obj2(user, INVEN_TYPE_LEFT_HAND));
      unset_unique_id(obj_pid(unic_wp));
типа такого, но чтобы работало)
 
Намба тво: можно ли по уникальному id узнать оригинальные данные протофайла ну или хоть какието оригинальные данные предмета? get_proto_data возвращает -1 по всем оффсетам, proto_data - крашит игру, а OBJ_DATA_* (кроме OBJ_DATA_ID) дают 0.
 
и ласт ван: если уникальный предмет остался последним(в инвентаре) то он теряет свою уникальность и вновь начинает стакаться с предметами того же типа( предмет остался последним, но был в руке, то уникальность сохраняется), можно ли как-то с этим побороться?



#12 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

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

у меня возникли проблемы с "set_unique_id" и хочется узнать пару моментов:

Намбер ван: возможно ли и если да, то каким образом  сделать  "unset_unique_id" предмета зная его новый уникальный id? 

      unic_wp := set_unique_id(critter_inven_obj2(user, INVEN_TYPE_LEFT_HAND));
      unset_unique_id(obj_pid(unic_wp));
типа такого, но чтобы работало)
 
Намба тво: можно ли по уникальному id узнать оригинальные данные протофайла ну или хоть какието оригинальные данные предмета? get_proto_data возвращает -1 по всем оффсетам, proto_data - крашит игру, а OBJ_DATA_* (кроме OBJ_DATA_ID) дают 0.
 
и ласт ван: если уникальный предмет остался последним(в инвентаре) то он теряет свою уникальность и вновь начинает стакаться с предметами того же типа( предмет остался последним, но был в руке, то уникальность сохраняется), можно ли как-то с этим побороться?

 

1. нельзя так сделать.

2. ничего нельзя узнать по uID.

 

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


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.



#13 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

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

Для чего тебе set_unique_id/unset_unique_id?

 

И каким ты образом сделал отравление оружия? через перки? просто интересна реализация, может нужно что-то заточить что-бы это выглядело не костыльно.


добавлено через 35 сек.

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

Я тебя огорчу но яд действует только на/для Игрока. Уровень яда у других криттеров/напарников не обрабатывается движком игры никак! и его даже нельзя установить для них, движок игнорирует это.

Или ты там свою скриптовую механику обработки яда своял?


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.



#14 DeKRuS

DeKRuS

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

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

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

Для чего тебе set_unique_id/unset_unique_id?

По началу я сделал так: при нанесении яда на оружие оно получало уникальный ИД (что бы не стакалось с другими), это позволяло только уникальному оружию отравлять врагов(а не как у меня сейчас - любому оружию с тем же именем протофайла, что и отравленное оружие) и яд мог быть нансён только на одно оружие единовременно(+ если противник подбирал такое оружие от теперь тоже мог при ударе травить игрока), проблема была в том что я не смог снять уникальность с  оружия которое уже не в руках и не в сумке (метательное/выбили из рук/продано).

 

хвост я сделал юзабельным через вот такое вот:

set_proto_data(tail, PROTO_IT_FLAGS, (get_proto_data(tail, PROTO_IT_FLAGS) + 2048));

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

set_proto_data(tail, PROTO_IT_FLAGS, 2048));?

 

И каким ты образом сделал отравление оружия? через перки?

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

вот этот скрин

Спойлер

 

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

set_fake_perk_npc с при вязкой к имени протофайла оружия proto_data( left/right Hand, it_name)

Пока оружие с нужным именем(или как я сначала сделал с уникальным ID) в INVEN_TYPE_LEFT/RIGHT_HAND, то яд уменьшается только при нанесении урона в бою оружием с тем же именем что и у перка, а если такого оружия нет в руках, то перк постепенно уменьшается с течением времени( для этого постоянно приходится юзать set_fake_perk_npc внутри которого через has_fake_perk_npc получаю значение уровня перка на данный момент и уменьшаю это значение на 1)

а само отравление накладывается просто через HOOK_COMBATDAMAGE(нужен только атакующий и цель) если у атакующего есть перк и он использует оружие с подходящим именем, только тогда цель отравится через команду poison(target, уровень перка + рандом(1,3). 

Я тебя огорчу но яд действует только на/для Игрока. Уровень яда у других криттеров/напарников не обрабатывается движком игры никак! и его даже нельзя установить для них, движок игнорирует это.

И да и нет! яд действительно полностью работает только на игрока, криттеры никогда не получают урон и не уменьшают свой уровень яда со временем.  но! также оригинальный яд и hook_adjustpoison триггерятся у  криттеров   если они увеличивают свой уровень яда(к примеру в бою с радскорпионами и при применеии шприца с ядом), а также если был применён poison(critter, любое "+" / "-"значение).

но одного крючка на яд мало. поэтому ....

 

Или ты там свою скриптовую механику обработки яда своял?

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


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


#15 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

Отправлено 22 Январь 2022 - 04:27

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

угу

 

а ты оказывается башкоядовитый))


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.

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


#16 DeKRuS

DeKRuS

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

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

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

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

к примеру: даю метательному ножу в правой руке уникальный ID, при этом в сумке лежит еще несколько штук. выкидываю все ножи (и из сумки и уникальный из рук), поднимаю. Всё как надо 1 нож не стакается с другими. 

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

 

1. нельзя так сделать.

2. ничего нельзя узнать по uID.

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

Только вот не знаю как снять уникальность у предмета который не в руках и не в инвентаре криттера.




#17 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

Отправлено 22 Январь 2022 - 06:36

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

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

Тогда это баг, посмотрю что-там с движком почему стакает.

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

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

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 это нравится


#18 Foxx

Foxx

    Нарушитель спокойствия

  • Desert Rangers
  • PipPipPipPipPip
  • 4 317 сообщений
  • Откуда:Город Грехов

Отправлено 25 Январь 2022 - 17:15

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

Ты в своё время меня подтолкнул писать скрипты самому, хотя я упорно сопротивлялся.

Какой учитель, такой и ученик  :gum:  :)


527e33767f5fb2ba898e9e0b597092dd.gif

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


#19 Mr.Сталин

Mr.Сталин

    *** Destroy u$a ***

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

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

Ты самоучка)
И если у скрипта есть исходник я исполузую всегда его, вместо того чтобы декомпилировать.

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.

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


#20 Foxx

Foxx

    Нарушитель спокойствия

  • Desert Rangers
  • PipPipPipPipPip
  • 4 317 сообщений
  • Откуда:Город Грехов

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

Ты самоучка)
И если у скрипта есть исходник я исполузую всегда его, вместо того чтобы декомпилировать.

Первые уроки, ты мне давал, как раз по декомпилированым скриптам, на них я и подсел. Потом я пошёл править первую часть (никто ей не занимался) и это очень сильно пригодилось. Вся моя демо-версия Шакала (надо-бы альфу выпустить), так и делалась.


527e33767f5fb2ba898e9e0b597092dd.gif


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

Похожие темы


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

0 members, 0 guests, 0 anonymous users