[SoC] Ковыряемся в файлах - Страница 619 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

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

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

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

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

 

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

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

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

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

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

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

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

start_date                    = 01.05.2012

  • Спасибо 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 пользователей

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