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

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


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

@AndrewMor, открываешь xr_effects.script, ищешь:

-- Функции для Янтаря

Под эти комментом нужные тебе функции. Вызываются в логике ученого. Логика работает (в некоторых местах) по сигналам пути. Все просто.

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

У меня вопрос. За что отвечает вторая строка?

 

additional_inventory_weight = 0
additional_inventory_weight2 = 0 --------------вот эта

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

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

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

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

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

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

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

@BRATPETR123, В файле alife.ltx находишь чуть ниже строку [alife]. Под ней будет параметр:

start_date                    = 01.05.2012

  • Спасибо 1
Ссылка на комментарий

Почитай немного тут http://stalkerin.gameru.net/wiki/index.php?title=Заглавная_страница

Вот тут про дату http://stalkerin.gameru.net/wiki/index.php?title=Файлы:_alife.ltx

Полезный так-то для новичков сайтик ;)

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

 

 

[remark@suicide] anim = suicide on_signal = anim_end | nil %=npc_suicide%

Совершенно случайно так получилось, что самому пришлось суицид неписю устраивать.

Так вот получается, что nil вроде как не работает в этой ремарке. Точнее - работает именно nil , а функция не вызывается. 

Убрал - непись благополучно застрелился -

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

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

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

@_Val_@Struck, немного не так.

 

 

Если открыть файл xr_logic.script, то можно увидеть следующее:

 

elseif cond_name(c.name, "on_signal") then
if st.signals and st.signals[c.v1] then
switched = switch_to_section(npc, st, pick_section_from_condlist(actor, npc, c.condlist))
end
 
Т.е. сначала выполняется pick_section_from_condlist(actor, npc, c.condlist)
Если посмотреть функцию pick_section_from_condlist, то видно что сначала выполняется

if infop.params then
xr_effects[infop.func](actor, npc, infop.params)
else
т.е выполняется функция и только затем возвращается секция переключения
return cond.section
И только после этого выполняется само переключение на секцию в функции switch_to_section
Причём здесь явно указано:
 

-- Выполняет переключение на указанную секцию, если задана.
-- Если section == nil, остается работать старая секция.
function switch_to_section(npc, st, section)
if section == nil or section == "" then
return false
end

 

Т.е. переключения никуда не происходит, а продолжает работу активная секция.

 

Поэтому и

 on_signal = anim_end | nil %=npc_suicide%

и

 on_signal = anim_end | %=npc_suicide%

должны работать одинаково.

 

 

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

@Карлан, в диалоге <action>dialogs.get_npc</action>

 

В dialogs.script

 

function get_npc(first_speaker, second_speaker)
local npc = first_speaker
if npc:id() == db.actor:id() then
npc = second_speaker
end
-- Здесь, с полученным НПС, делайте, что хотите.
end
 
 

Или второй вариант

В файле xr_motivator.script в методе update

 

if self.object:is_talking() then

-- Здесь, с полученным НПС, делайте, что хотите.

end

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

@makdm, внимательнее никак не прочитать? Открытое окно диалога, я не запускаю никакой диалог, мне просто нужно получить факт отрытого диалога, и по нему неписю с которым это окно открыто. Я уже давно сделал шаманством с инфопоршнями, но все же может еще как можно.

Ответ удалил, но скажу то же самое: никак нет ! В смысле, по отдельности каждое слово понятно, а все вместе - увы. dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
Открытое окно диалога, я не запускаю никакой диалог, мне просто нужно получить факт отрытого диалога, и по нему непися с которым это окно открыто

Интересно, как это может быть открыто окно диалога, но не запущен никакой диалог ?

В зависимости от текущего состояния логики НПСа, для него будет запущен соответствующий или start_dialog или actor_dialog.

Вы когда начинаете диалог с НПСом, что видите в появившемся окне ? Фразы произнесенные неписем и фразы доступные для ответа актеру. Так они по Вашему откуда берутся ?

Если Вам нужен объект непися для конкретного диалога\конкретного непися, то подойдет вариант с action, а вот если нужен общий вариант для любого непися - тогда указанный выще способ через xr_motivator.

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

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

то подойдет вариант с action

 

Не лучший способ, тем не менее имеет место быть.

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

 

 

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

Поделитесь реализацией, я думаю всем будет интересно.

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

Добрый день. Подключил новую локацию для AMK 1.4.1. Но на ней не спавнятся динамические аномалии. Прописал локацию в файле amk_anoms.script в разделах  local level_vertexes,  local level_number,  local game_vertexes,  level_anoms и level_arts. Не могли бы вы подсказать что еще нужно добавить, чтобы на новой локации спавнились аномалии?

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

@makdm, внимательнее никак не прочитать? Открытое окно диалога, я не запускаю никакой диалог, мне просто нужно получить факт отрытого диалога, и по нему неписю с которым это окно открыто. Я уже давно сделал шаманством с инфопоршнями, но все же может еще как можно.

 

Если окно диалога уже открыто - значит как минимум старт-диалог уже был запущен.

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

Что кстати и реализовано по стандарту для всех без исключения неписей в моде над которым мы с тобой вроде еще работаем. Может заведешь себе привычку вопросы свои сначала мне в личку задавать? Глядишь, ответ быстрее получать станешь.

 

  • Спасибо 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Ребят, не могу понять как добавлять новые локации в  game.graph...

Пытаюсь присоединить новую локацию к сталкер тч, ну не получается все перерыл, не могу понять как работать с game.graph...

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

@Wolkodav, читай шапку этой темы и попробуй спросить в ней - http://www.amk-team.ru/forum/index.php?showtopic=5533

Есть также утилитка ggrc v.07https://yadi.sk/d/pC8aLe18c9Uzf

Почитай ридми, возможно что полезное там найдёшь.

Изменено пользователем BFG
  • Полезно 1

"Кругом зомби.....у меня кончаются патроны...."

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

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

Такой вопрос: есть три нпс с такой логикой:

[logic]
active = walker@guard1

[walker@guard1]
path_walk = way_bar_mer_guard1
path_look = way_bar_mer_guard1_look
;on_signal = mer_guard1 | remark@guard1
def_state_standing = guard
on_info = {+mer_guard_kill_actor} %=killactor%

 

 

[logic]
active = walker@guard2
meet = no_meet

[walker@guard2]
path_walk = way_bar_mer_guard2
path_look = way_bar_mer_guard2_look
;on_signal = mer_guard2 | remark@guard2
def_state_standing = guard
on_info = {=actor_has_weapon} remark@has_weapon1
on_info2 = {+mer_guard_kill_actor} %=killactor%
meet = no_meet

[remark@has_weapon1]
meet = no_meet
snd_anim_synс = true
target = actor
snd = threat_weap
anim = backoff
on_info = {+mer_guard_kill_actor} %=killactor%
on_info2 = {!actor_has_weapon} walker@guard2
on_timer = 6000 | {=actor_has_weapon} %+mer_guard_kill_actor =killactor%

 

 

[logic]
active = remark@no_move

[remark@no_move]
no_move = true
anim = guard
on_info = {+mer_guard_kill_actor} %=killactor%

 

 

 

НПС под номером "2" нас должен просить максимум 6-ть секунд чтобы мы убрали ствол, если не убираем то должен сработать %=killactor%

Но почему-то он срабатывает только у нпс под номером "3" (а значит инфо +mer_guard_kill_actor выдается).

Что может быть не так?

Были задачи и по тяжелее - справлялся, а сейчас не понимаю/вижу в чем моя беда.

===============================

И еще одно. Мне нужно чтобы нпс появлялся с 18:00 и был до 20:00 на локации, потом в офф_лине. Но, если в 20:00 мы с ним говорим, или находимся рядом (50м радиус допустим), то пускай еще живет (в глаза чтобы исчезновение не кидалось).

Я сделал так:

custom_data = <<END
[smart_terrains]
none = true

[spawner]
cond = {=otshelnik_spawn}
check_distance = true
min_distance = 70
END

 

 

function otshelnik_spawn (actor, npc)
    return level.get_time_hours() >= 18 and level.get_time_hours() < 20
end

Как сюда (в функцию) еще добавить проверку на дистанцию?

Чтобы check_distance можно было в false перевести.

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

Мой архив

Сталкером не занимаюсь.

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

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

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

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

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

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

Войти

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

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

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