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

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

 
 

RicoNRT можно дать хит по кости объекта 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 16.09.2023 в 18:04, RicoNRT сказал:

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

Зачем такие сложности и замусоривание апдейта?

Можно ведь сделать проще, тем более, что любой мод одним найденным/поднятым предметом явно не обойдется.

Итак, идем в тот же бинд_сталкер, ищем функцию on_item_take и приводим её в такой вид:

local my_info_table = {
  item_odin = "info_odin",
  item_dva = "info_dva",
  item_tri = "info_tri",
-------еще пара итем-инфопоршень----------
-------еще пара итем-инфопоршень----------
-------------и так далее------------------
  item_stopitsot = "info_stopitsot"
}
function actor_binder:on_item_take (obj)
    level_tasks.proceed(self.object)
    --game_stats.update_take_item (obj, self.object)
     if my_info_table[obj:section()] then
       db.actor:give_info_portion( my_info_table[obj:section()])  
     end 
end

Что мы имеем?

Здесь, при взятии  item_odin получаем инфопоршень "info_odin", при взятии  item_dva получаем инфопоршень "info_dva", и так далее в соответствии с таблицей, которую можно заполнять практически бесконечно. Естественно инфопоршни необходимо регистрировать в соответствующем файле info_локация, а уж с выданным инфопоршнем можно творить что угодно - запускать функцию: <action>скрипт.функция</action>, выдавать инфопоршень: <give_info>инфопоршень</give_info>, выдавать задание: <task>идентификатор_задания</task>, и прочее, и почее, и прочее...


Дополнено 19 минуты спустя
В 16.09.2023 в 02:00, Pepel сказал:

так выходит это всё-таки из-за аи сетки? а как я теперь ее верну в первоначальное состояние,

блин, просто напросто в свою локацию из оригинальной переместить файлы level.ai, level.gct, level.graf, конечно при условии, что в остальных локациях эти файлы оригинальные, и game.graf тоже

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

У меня вопрос к специалистам в моддинге. Хотел сделать свою сборку на основе OGSM 231 на патч 1.0004. Поставил оружейный пак, модели НПС от Нестандарта, добавил некоторые мелкие фичи. С начала и до последней трети игры мод идет без единой ошибки, ни одного вылета. Начинаются проблемы после лаборатории Х-16 и встречи с проводником. Игра вылетает на Армейских складах, а на Радаре фатальные вылеты и битые сейвы. Т.е. пройти по факту невозможно, приходится переигрывать с последнего целого сохранения. Я читал отзывы на OGSM, и там часто указывается что это болезнь самого мода, он и без дополнительных установленных паков крашится на последних локациях и "бьет" сохранения, причем самое критическое место - Радар и Припять. Хочу спросить - кто-нибудь может посоветовать, как пофиксить эти вылеты? Я видел на одном из сайтов пак исправлений для OGSM 231, но скачать его с Гугл почему-то нельзя. То, что я вставил в сборку, на чистом ТЧ работает без нареканий, вылетов нет. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

DarkStalker ты хоть скинь лог вылетов .Как можно лечить болезнь не зная её симптомов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Безлоговые вылеты.  При этом загрузка памяти с файла подкачки такая же как например на Агропроме, где ни единого вылета. По показаниям MSI Afterburner загрузка памяти в районе 5500 - 6000 Мб.  При загрузке сохранений, сделанных на локации,  вылетает с ошибкой  Line 342 Can`t find section ' ' .

Изменено пользователем DarkStalker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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


Дополнено 8 минуты спустя

Как сделать, чтобы нпс шёл за актёром, аля компаньён.

с схемой xr_companion не смог разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol Скорее всего никак.Сам долго пытался решить эту проблему,но в итоге забил,хотя я не берусь утверждать.Возможно,есть такой мудрец на вершине горы Джомалунгма ,который знает священную тайну, как решить эту проблему. Осталось только найти этого мудреца. 


Дополнено 4 минуты спустя

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


Дополнено 6 минуты спустя

А теперь мой вопрос))))Возможно ли сделать такой квест.Нам дают сломанную броню(65-70 проц) и говорят починить ее.Мы чиним ее,и после того,как броник стал 100 процентов,выдаётся инфопоршень на дальнейшее продвижение квеста.Долго вынашивал эту идею в голове,но так и не нашёл способ как это реализовать.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol Попробуй так:

[follower]
leader = <number> - Номер стори айди того, за кем надо адти. 
formation_line = true/false - true - идёт сбоку. false - сзади.
distance = <number> - расстояние в метрах, на котором будет идти от лидера. По умолчанию – 1,5 метра.
anim_walk = <название_анимации> - состояние, в котором фолловер идет за лидером.
anim_run = <название_анимации> - состояние, в котором фолловер бежит за лидером.
anim_sprint = <название_анимации> - состояние, в котором фолловер спринтует за лидером.

Изменено пользователем ScR1pt
  • Хабар 1

ed1c85bd8aba2500209219c6df96c254.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, RicoNRT сказал:

А теперь мой вопрос))))Возможно ли сделать такой квест.Нам дают сломанную броню(65-70 проц) и говорят починить ее.Мы чиним ее,и после того,как броник стал 100 процентов,выдаётся инфопоршень на дальнейшее продвижение квеста.Долго вынашивал эту идею в голове,но так и не нашёл способ как это реализовать.

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


Дополнено 11 минуты спустя

Придумал только с костылями.

Для начала делаем две секции для будующего костюма:

Спойлер

[monolit_outfit_quest_sloman]:monolit_outfit
$spawn             = "outfit\monolit_outfit_quest_sloman"

[monolit_outfit_quest_pohilil]:monolit_outfit
$spawn             = "outfit\monolit_outfit_quest_pohilil"

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

Получается так:

Спойлер

db.actor:object("monolit_outfit_quest_sloman"):set_condition(0.7)

Потом каким либо образом "восстанавливаем" состояние у предмета, но не совсем по настоящему, меняем секцию предмета, например починили у техника костюм, забираем monolit_outfit_quest_sloman и даём глав. герою monolit_outfit_quest_pohilil вместе с инфопоршнем. Если есть какая-то проверка состояния предмета, то будет гораздо проще, но я не уверен, что такая вообще есть...

Изменено пользователем Paracetamol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

RicoNRT где чинишь там и выдавай инфопоршень, проверяй по секции брони

27 минут назад, Paracetamol сказал:

не уверен, что получится проверить параметр condition у броника

Проверяется и меняется нормально (у клиентских объектов) obj:condition() возвращает состояние, obj:set_condition(число 0-1) установит новое состояние

Изменено пользователем N42
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, RicoNRT сказал:

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

Cхема follower действительно хорошо себя показала! На одну загадку меньше, ещё бы со звуком разобраться...

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Иногда случается что у нпс бьется логика и при загрузке сейва игра падает, если ручками его релизить, то все нормально сейв грузится, так вот хочу сделать что бы скрипт сам релизил неписей с кривой логикой, для этого как-то нужно отлавливать object ''название_непися'' и вот с этим у меня проблемы, прошу совета и вообще есть ли смысл в этом?

Спойлер

_g.script:350: in function 'abort'
xr_logic.script:88: in function 'determine_section_to_activate'
xr_logic.script:1229: in function 'initialize_obj'
xr_gulag.script:1156: in function 'setup_gulag_and_logic_on_spawn'
xr_motivator.script:113: in function <...scripts\xr_motivator.script:54>
[25.09.23 01:45:24.742] object ''agr_factory_defence_stalker6'': section ''logic'': unable to find field 'active'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Банальный вопрос задаю, но все же. Где хранятся данные о броне нпс. Искал в папке creatures, но увидел только файл stalker, в которой только один раздел. Неужели у всех нпс одинаковые показатели защиты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

InZard В каждом файле модели прикреплен файл с ее настройками в том числе и распределение урона при попадании в определенные шейпы модели. Например config\models\capture\kombez_antigas_damage_low.ltx

В нем есть секция bone_protection с параметром bones_protection_sect, который отсылает к секции в которой описана защищенность определенной области модели.

Изменено пользователем denis2000
  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000  то есть если делать нового более прочного нпс нужно какую-нибудь модель дублировать и переименовать и уже там прописывать показатели?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

InZard По хорошему - да.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

StrawFlux если "иногда случается" часто, надо не удалять нпс, а разбираться, почему ломается логика, не просто так же она ломается, и что еще ломается вместе с ней. Как-нибудь у какого-нибудь важного нпс поломается и всё. А если редко ломается, то и незачем заморачиваться. А по поводу выделенного в логе - поищи поиском в скриптах "unable to find field", это со скриптов

Изменено пользователем N42

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

StrawFlux нормально, отмычек и без них много :u1F643:

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите, пожалуйста, название PPE-эффекта, с которым контролёр взаимодействует на ГГ.

Изменено пользователем Кефир

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Кефир В конфиге контролера параметр aura_effector отсылает к секции с настройками эффекта.

  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Такая проблема - декомпилировал локацию из билда 1475(со статичным небом) в формат сдк, однако некоторые источники света очень кривые. Цвет их не тот который должен быть. Если кликнуть на палитру где выбирается цвет - он обнуляется. Попытался вручную перетащить из 1537 билда распаковав файл левел локации в текстовый формат и вручную выписывая настройки цвета из файла FSL_LIGHT_DYNAMIC.ltx (в тексте это параметр diffuse, в палитре в сдк - это правая нижняя колонка на первом скриншоте, где мышка). Некоторые подходят, однако в тексте встречаются источники где цвет идет с параметром больше единицы:

[2]
controller_id = 2
type = point
diffuse = 1.992157, 1.545098, 1.058824, 0.000000
specular = 0.000000, 0.000000, 0.000000, 0.000000
ambient = 0.000000, 0.000000, 0.000000, 0.000000
position = -4.673412, 2.701215, 1.565526
direction = -0.000000, 0.000000, 1.000000
range = 7.000000
falloff = 0.000000
attenuation0 = 1.000000
attenuation1 = 1.000000
attenuation2 = 0.015625
theta = 0.000000
phi = 0.392699

как конвертировать такой из текстового в цвет на палитре в сдк? Подозреваю, что тут как-то связано с яркостью источника. Однако у декомпилированных источников у всех яркость 1.00
Еще добавлю что декомпилируются источники света у которых выставлена галочка dynamic и соответственно они записаны в файл левел  FSL_LIGHT_DYNAMIC.ltx локации.
Как быть?1121500230_.thumb.png.89b62290710b0f147146ca6d35d47f00.png


Дополнено 2 минуты спустя

Тут на скриншотах видно этот баг - кликаю на палитру - и цвет обнуляется.
Пробовал также открывать сдк 2002 года и смотреть как там палитра выглядит - тоже самое

Безымянный.jpg

Безымянный1.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
20 часов назад, РСФСР сказал:

это параметр diffuse, в палитре в сдк

В коде за тот год:

    m_D3D.type                  = D3DLIGHT_POINT;
    m_D3D.diffuse.set       (1.f,1.f,1.f,0);
    m_D3D.attenuation0   = 1.f;
    m_D3D.range                = 8.f;
    m_D3D.phi                     = PI_DIV_8; число пи / 8 (0.392)
    m_Brightness                = 1;

далее встречается умножения цвета на яркость:
    L.diffuse.mul_rgb(m_Brightness);


Получается, если цвет > 1, то:

diffuse = 1.992157, 1.545098, 1.058824 на 0.992157, 0.545098, 0.058824

Можно делать скрины в том билде и брать с них цвет в фотошопе. Или скрин палитры в сдк, если он сбивается при нажатии на неё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, Yara сказал:

В коде за тот год:

    m_D3D.type                  = D3DLIGHT_POINT;
    m_D3D.diffuse.set       (1.f,1.f,1.f,0);
    m_D3D.attenuation0   = 1.f;
    m_D3D.range                = 8.f;
    m_D3D.phi                     = PI_DIV_8; число пи / 8 (0.392)
    m_Brightness                = 1;

далее встречается умножения цвета на яркость:
    L.diffuse.mul_rgb(m_Brightness);


Получается, если цвет > 1, то:

diffuse = 1.992157, 1.545098, 1.058824 на 0.992157, 0.545098, 0.058824

Можно делать скрины в том билде и брать с них цвет в фотошопе. Или скрин палитры в сдк, если он сбивается при нажатии на неё.

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



 

Цитата

Получается, если цвет > 1, то:

diffuse = 1.992157, 1.545098, 1.058824 на 0.992157, 0.545098, 0.058824

честно говоря не понял ничего)
 


Дополнено 2 минуты спустя

ss_admin_09-26-23_16-17-54.jpg

ss_admin_09-26-23_16-31-11.jpg

Изменено пользователем РСФСР
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
17 минут назад, РСФСР сказал:

0.992157, 0.545098, 0.058824

Эти числа для RGB, на скрине палитры - правая колонка (Scalar).

 

Можно в сдк, на вкладке группы, добавить какую-нибудь из light_preset, там есть основные цвета для ламп.

Вот на эту тему (блок "Цвета"): http://stalkerin.gameru.net/wiki/index.php?title=Освещение_игрового_окружения_–_как_и_почему

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Создать учетную запись

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

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

Войти

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

Войти

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