Перейти к контенту

[SoC] Ковыряемся в файлах


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

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

if npc:position():distance_to_sqr(db.actor:position()) < 6 then

Ссылка на комментарий

квадрат 3-х = 9 , поэтому условие проверки можно все же ослабить до:

if npc:position():distance_to_sqr(db.actor:position()) < 9 then

 

Можно также при желании пропатчить ехе-шник (см. X-Ray Extentoins), чтобы снять это ограничение...

 

Если мне не изменяет память, то там не ровно три метра, а немного меньше, поэтому 6 - в самый раз.

ColR_iT

 

Все это идет от параметра take_dist (смотрим секцию [inventory] в system.ltx) и там дефолтно стоИт = 2, так что ты в общем-то прав, хотя в своем же ответе выше поминал 3 метра. ;-) Практика показывает, что 3-х метров вполне достаточно и ниже - это уже перестраховка.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Блин,

я нубоват в скриптах.

Эту функцию, что ты скинул, нужно вживить в мой mar_quests.script

function on_talk()

local npc = level_object_by_sid(006)

if npc:position():distance_to_sqr(db.actor:position()) < 6 then

db.actor:run_talk_dialog(npc)

end

 

 

Чтобы вышло вот так, да?

 

Так, только end для структуры if забыл.

ColR_iT

 

P.S. Снизил радиус рестриктора (не прописывая if npc:position():distance_to_sqr(db.actor:position()) < 6 then) до 2 м (как в туториале указано) - оружие пропадает всё равно.

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

Такие дела. - Курт Воннегут.

Ссылка на комментарий

irish_rebel, блинами делу не поможешь ... и если нубоват - то как раз и пишешь в разделе "Школа", так что есть возможность подучиться.

1. Логика твоего рестриктора предусматривает одностороннее переключение - один раз зайдя в него актор постоянно будет под действием выданного инфопоршня esc_on_talk - и как предполагаю, именно по наличию этого инфопоршня у тебя идет вызов функции on_talk. Тогда ничего удивительного, что актор начинает постоянно "разговаривать".

2. Оружие исчезает из рук актора - ну так при активном разговоре оружие и убирается автоматически.

3. Если не хочешь получать вылеты при отсутствии/смерти Волка - то и наличие его объекта требуется проверять, т.е.:

if npc and npc:position():distance_to_sqr(db.actor:position()) < N then

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Скажите, каким способом можно распаковать игровой архив(ТЧ) gamedata.dbg? Обычный Data_unpacker его не берет.

 

 

Можно попробовать плагин для Total Commander от malandrinus.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

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

Изменено пользователем ColR_iT
Ссылка на комментарий

Подскажите, какой скрипт спавнит новичков на кордоне( для деревни новичков)

 

Спавн происходит не скриптом, а через all.spawn.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Помогите мне избавиться от этого вылета

[error]Arguments : LUA error: ...blishing\s.t.a.l.k.e.r\gamedata\scripts\funcs.script:107: attempt to index local 'a' (a nil value)

Вот 107 строка a:set_condition((math.random(25)+40)/100) (мародёр мод использует funcs.script )

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

Вот допустим я могу играть целый день, сохраняясь, загружаясь, переходить локации. А бывает день, когда даже при начале новой игры этот вылет. Потом опять начинаешь всё нормально. Потом начинаешь вылет. В основном при начале новой игры. Бывает при переходе локации, и всё, уже не перейдёшь её. Но если повезёт, то проходишь всю игру без единого вылета вообще. Вот что с этим a:set_condition((math.random(25)+40)/100) можно сделать. По моему поменяв цифры толку не будет наверно.

 

Подскажите с чем это может быть связано, ! Unknown command: dbg:object_'esc_prison':_section_'sr_idle@not_in_zone':_field_'on_npc_in_zone':_there_is_no_object_with_story_id_'024'

Не могу после перехода с кордона на свалку, сразу перейти обратно.

! Неизвестная команда: DBG объекта ESC тюрьмы разделе SR холостом ходу не в зоне поля на NPC в зоне нет объектов с историей ID '024

  • Не нравится 1
Ссылка на комментарий

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

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

Врядли многим известен твой funcs.script, поэтому хотя бы функцию с упомянутой строкою стОило бы процитировать.

Ну а пока, попробуй проблемную строку зааменить на:

if a then a:set_condition((math.random(25)+40)/100) end

Ну а вторая твоя проблема связана с тем, что из игры исчез труп бандита с АТП, а в атп'шном гулаге для него есть персональная работа. Тут или твой чистильщик трупов нужно отключать или работы гулага править. Но для этого уже нужны навыки в модмейкерстве (правке конфигов/скриптов).

  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Мод Nature Vinter 2 для ТЧ. Вопрос как убрать гибель ГГ от холода? В скриптах 7 файлов с начальным названием

нolod. Если можно подробнее как это прописать и нужна ли новая игра.

Ссылка на комментарий
Vecz мне кажется, вопрос ваш для Кашпировских...

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Vecz, по интересующему тебя моду имеется конкретный топик Nature Winter в Мастерской, вот туда и следует задавать подобные вопросы. Текущий топик ориентирован на оригинальную игру и общеизвестные для нее изменения.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Подскажите, в каком файле находится параметр отвечающий за спавн количества NPC на кордоне (в деревне новичков) , all.spawn не предлагать.

 

А ты шутник однако! :)

Спавнится постоянно одно и тоже количество и спавн этот происходит через all.spawn, а вот поддерживает это население в одном и том же количестве - гулаг, который к сведению, также прописан в all.spawn. Конкретно должен интересовать smart_terrain с именем esc_lager, в нём прописано население интересующего тебя лагеря.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Кто подскажет, для чего используются функции в файле game_stats.script, а именно: update_task, update_take_item, update_drop_item, money_trade_update, money_quest_update?

Ссылка на комментарий

ColR_iT' - ну насчет респавна не совсем точно.Все же за респавн отвечает респавнер(зонка такая) и условие срабатывания, а также количество нпс при одном респавне(чаще рандомное), задается в логике того же респанера. ;) .Прада автору вопроса от этого не легче, потому что логика все в том же all.spawn :)

 

Я что-то писал про респавн? :huh:

ColR_iT

 

Спавнится постоянно одно и тоже количество

поддерживает это население в одном и том же количестве - гулаг

Я про это.

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

 

 

Автор вопроса жирно выделил ключевое слово количество, а за количество НПС в гулаге отвечает smart_terrain, респавн же не контролирует это число, а лишь дополняет его в случае необходимости.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

ColR_iT, посмотрел этот скрипт, нашел где есть вызовы. По факту вызываются только update, money_trade_update, money_quest_update ну и все, по крайней мере notepad++ не нашел. По сути - бесполезный модуль на момент релиза, возможно это недоделка или какой то дебаговый модуль.

Есть локальная таблица, туда заносится информация о ГГ. По названиям функций и собственно самой информации можно понять, что и когда должно заполняться, расписывать построчно как то не вижу смысла. В основном это индификатор данных, позиция актора и игровое время (в формате 00:00:00, вроде бы), остальное - здоровье, радиация, сытость, сколько денег учавствовало в продаже\квесте, инфа о задании и т.п.

Удивило то, что у нас каждую секунду игры в эту таблицу пишутся не хилые данные - функция update.

Единственная передача всех данных идет в функции shutdown (ее вызов идет в нет_дестрой актора, но закомменчена) в функцию printf и собственно все. Зачем это было нужно, черт его знает. Для тестеров этот вывод возможно был нужен, где они что делали на локации.

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...