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

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


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

Не, danger - это не то. Вообще не то.

 

npc:best_enemy() - это похоже на движковое (ну, по крайней мере я ни где не нашел), и рассчитывается синтетически.

Конфиги используются, но как - не очень понятно (надо экпериментировать)

 

В принципе, для всякого разного я бы посоветовал внимательно воскурить xr_reactions.script

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

В xr_conditions.script можно добавить:

--Charsi_for_gop_stop
function npc_has_enemy(actor, npc)
    local e = npc:best_enemy()
    if e and e:alive() then return true end
    return false
end

Используем так в логике:

{=npc_has_enemy} Сработает если есть враг.

{!npc_has_enemy} Сработает если все спокойно.

Например:

on_info = {-goper_have_money =npc_has_enemy} remark@to_combat %+combat_gop_lider%

Если нет инфо goper_have_money и есть опасность - переходим в remark@to_combat и выдаем инфо combat_gop_lider

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

Мой архив

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

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

А danger-то тут при чем ?

 

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

А игнор врага - это xr_combat* (собственно игнор, управляется - да, через логику) и упомянутый reactions( не дает врага увидеть).

 

Гм... Мы, кажется, про разные уровни говорим.

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

Я про npc:best_enemy и за вопрос:

Она возвращает так скажем "худшего врага", если таковой имеется для НПСа ?

Если бы AndreySol хоть-чуть писал - то не то, помогло не помогло. А то толку?

 

А вот про денжер, это время забывания, больше на вики:

danger_inertion_time_grenade = 1000
danger_inertion_time_corpse =  1000
danger_inertion_time_hit = 2000
danger_inertion_time_sound = 2000
danger_inertion_time_ricochet = 1000
danger_expiration_time = 1000

 

Опять же, недостаток коммуникации с товарищем AndreySol, что ему нужно конкретно не понятно.

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

Мой архив

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

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

@UPDAT3

Помог, все нормально - мин не видать и не слыхать....

 

Насчет best_enemy - я имел в виду под "забыванием" именно наличие некой памяти у НПСов на то что он видел, слышал, получил хит и т.д.

Собственно в связи с чем вопрос возник: в гулаге блок-поста вояк на Кордоне в загрузке состояний есть такой фрагмент

 

for k,v in pairs(gulag.Object) do
    if v ~= true and v:best_enemy() ~= nil then
     gulag.alarm_start = game.get_game_time()
     actor:give_info_portion("esc_blockpost_alarm")
     return 2 -- тревога
    end
end

В игре этот фрагмент отрабатывает так, что если актера(ГГ) увидел кто-то из жителей гулага, то гулаг переходит в состояние "тревога". Пробовал так - покажусь комуто из вояк, срабатывает переход в тревожное состояние. Я разворачивался и драпал подальше. И сидел ждал, когда тревога закончится. Так вот травога не выключается даже через несколько игровых часов. Способов возврата гулага в нормальное состояние оказалось всего два:

1 - это перевести его в офф-лайн, тогда отработает v ~= true и тревога вырубится через 5 игровых минут

2 - убить того\тех НПСов у которых актор "запомнился" как best_enemy.

Конкретно к best_enemy - получается что у НПСа этот параметр сохраняется очень долго, судя по всему навсегда, пока НПС жив. Или нет ?

В Справочнике.. нашел:

<таблица объектов not_yet_visible_object> not_yet_visible_objects() -– объекты из памяти, которые видны или собираются стать видны.
<таблица объектов CVisibleObject> memory_visible_objects()–- объекты из памяти, которые видны или были когда-то видны.
<таблица объектов CSoundObject> memory_sound_objects() -– объекты из памяти, которые слышны или были когда-то слышны.
<таблица объектов CHitObject> memory_hit_objects() -– объекты из памяти, которые наносят или наносили повреждения.
void enable_memory_object(game_object*, bool enable) -- активизировать/деактивизировать объект из памяти

похоже, это то что я искал ?

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

 

 

А вот про денжер, это время забывания, больше на вики:

 

Это все переопределяется из логики.

Кроме того, что с ошибками. ;)

 

 

 

гулаге блок-поста вояк на Кордоне в загрузке состояний есть такой фрагмент

Там ошибка в самой функции. Я ее переписывал, после чего вояки, если ни кого не видят, успокаиваются через n минут. Если видят - отсчет пошел снова.

 

Вторая ошибка - в связке xr_combat* + xr_logic + xr_conditions - ее в соседней теме как-то Артос подробно расписывал:

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

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

Доброго времени суток, подскажите насчёт  погодных эффектов...

03a9f76f6dd5fc0ccb43ed921830be47.png


Каким образом можно убрать подобные ореолы в бессолнечную погоду?
В какую сторону копать, конфиги погоды, шейдеры или текстуры? На счёт текстур сомневаюсь...
Мод FreePlay Start с родной погодой.

h-264.jpg

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

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

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

in_rest = "", out_rest = "esc_blockpost_patrol_restrictor"

посмотрел в LE этот рестриктор, получается что ближняя к Деревне новичков его сторона расположена со стороны блок-поста перед бугром, который закрывает Дн от блок-поста. Изменил для пробы последнюю точку пути для этих патрульных, сделав ее заведомо за груницей рестриктора, понаблюдал - доходят до края рестриктора, и топчутся там, пытаясь идти дальше. Затем разворачиваются и идут обратно, продолжая отрабатывать логику. Т.е., похоже, на лицо действие рестриктора.

Затем спровоцировал этот патруль - они начали шмалять по актеру(ГГ), а я начал отступать назад и левее. В результате эти три НПСа (а за ними и остальные потянулись), спокойно проигнорировав границу рестриктора дошли за мной, шмаляя в меня, аж до камней, что возле границы локи, напротив моста возле которого раненый валяется по квесту флешки Шустрого.

Вывод - в состоянии "комбат" эти НПСы-военные плевать хотели на рестрикторы в работах, на которых они находятся в гулаге. В чем дело, как это понимать ? Может приоритет у этих рестрикторов ниже перехода в "комбат" ?

 

 

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

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

 

Upd: Упс ! Ниже намекают, что я тут по принципу "у кого что болит". Это к тому, что при странном поведении монстронеписей причины могут быть разные.

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

@AndreySol, Так они (рестрикторы) прописаны только в state = {0}, и когда эта троица переходит в бой, state = ни, как не равен нулю, и соответственно они не считаются.

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

Вторая ошибка - в связке xr_combat* + xr_logic + xr_conditions - ее в соседней теме как-то Артос подробно расписывал: получается enemy_object, и сохраняется. Если это был актор - неписи "пожизненно" охотятся на актора (ну, классика жанра, когда стоит толпа, уткнувшись стволами в землю, или, наоборот, в небо. Если это был другой непись или монстр - когда он вдруг уйдет в офлайн или попадет в аномалию - виснем, и через некоторое время вылетаем по "stack overflow".

А каково решение ?

 

в соседней теме как-то Артос подробно расписывал

можно точнее ?

 

Попробую поискать. Вот когда именно попробую - не знаю. Решение - исправлять. dc

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

@AndreySol, Если тебе повезёт больше моего, и ты найдёшь эту тему

 

 


ее в соседней теме как-то Артос подробно расписывал:
поделись ссылкой плз.
Ссылка на комментарий

@Full Noob, Во первых тут опечатка:

 

 


custom_data = <[respawn] 

respawn_section = zombie_weak

 

Должно быть так:

custom_data = <<END
[respawn]

;conditions = 90 не уверен, что по умолчанию идёт 100%, на всякий пропиши conditions = 100

И у тебя есть смарт, который вызывает этот респавнер?

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

@Valial, Толком ни чего не понял, что ты делал и зачем.

Если тебе нужна расспакованая игра, то установи ТЧ. Распакуй файлы db по порядку, в папку gamedata. Потом сверху поставь моды, в том порядке, в котором они должны быть установлены. Если мод запакован в db архивы, то распаковывай их с верху, и опять по порядку. На выходе, у тебя должна быть папка gamedata с файлами игры.

П.С. Игра читает с начала gamedata.db0 gamedata.db1 и т.д. в конце, читается папка gamedata.

Папка gamedata должна лежать в той же директории, где лежат db архивы, папка bin и т.д.

Папку bin не трогай! И не будет траблов с (XR_3DA.EXE был завершён или что-то в этом роде)

Кстати, а лог пустой?

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

ins33,мне просто нужно распаковать мод и скажем добавить в продажу к Сидоровичу рпг,но если в папке с игрой оставить только папку gamedata(с вложенными папками и файлами misc,scripts и т.д.) без архивов db*, то она вылетает с ошибкой "XR_3DA.exe был завершен если windows удастся найти проблему то Вы будете уведомлены".

А если оставить архивы в папке с игрой, то изменений не происходит.

Вопрос вот в чем, это косяк семерки, так как на XP все было шикарно, или что другое может быть?

Лог пустой.

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

@Full Noob, Во первых тут опечатка:

 

 

Должно быть так:

custom_data = <<END
[respawn]

;conditions = 90 не уверен, что по умолчанию идёт 100%, на всякий пропиши conditions = 100

И у тебя есть смарт, который вызывает этот респавнер?

Что за смарт? XD

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

@Valial, Перечитай предыдущий пост ещё раз. Обрати внимание, как происходит загрузка.

Если тебе надо прописать, что-то торговцу, то просто достань нужный ф-ил из db*. Потом создай в директории игры папки gamedata\config\misc\ (путь до файла) и в неё положи конфиг торговца. Остальные ф-лы игра прочитает из архивов db*.

ФАЙЛЫ GAMEDATA.DB* НЕ УДАЛЯЙ!!!

 

 


А если оставить архивы в папке с игрой, то изменений не происходит.

Проверь правильность пути, папки gamedata.

Пример: с:\Program Files\GSC World Publishing\S.T.A.L.K.E.R\ gamedata\config\misc\ trade_barman.ltx

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

 

 

 

 


Что за смарт? XD

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

 

Почитай:

Это про смарттеррейны и гулаги: Настройка логики. Часть 4 — S.T.A.L.K.E.R. Inside Wik
Это про респавнеры: SoC. Respawn — S.T.A.L.K.E.R. Inside Wiki

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

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

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

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

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

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

Войти

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

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

×
×
  • Создать...