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

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


Halford

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

Две вопроса по логике\гулагам:

 - параметр prior в описании работ гулага, задает приоритеты. Каков диапазон значений? К примеру имеем 5 работ.

Вариант 1: расставить им приоритеты по возрастающей от 1 до 5.

Вариант 2: первым 4-м приоритеты по возрастающей от 1 до 4, а последней 100.

В чем будет разница между такими вариантами? Или ее вообще не будет ?

 

 - Имеем несколько работ в гулаге. Если 2-м из них прописать одну и ту-же логику в section, во что это выльется ? Будет зависеть от типа логики ? К примеру логика будет типа "кэмпер" - два непися припрутся в одну и ту-же точку местности и будут там толкаться, пытаясь занять назначенную в путях позицию ? Или логика "кэмп" - те-же два непися прийдут к одному костру и рандомно рассядутся вокруг него, особо не толкаясь ?

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


Ссылка на сообщение

Несколько вопросов по логике.

1) Заметил такую штуку с анимацией НПСов, при переключении секций прописанной им логики:

к примеру есть такая цепочка из секций

 walker@.....

anim   = wounded_heavy

 

remark@.....

anim   = wounded_heavy

 

remark@.....

anim   = wounded_heavy

 

В первой секции НПС лежит как и положено, но при переходе из walker в remark НПС встает, а затем ложится. А вот при переходе из remark в remark - лежит не вставая.  В чем проблема, и есть-ли решение ? Может какой флаг, запрещающий менять анимацию при переключении с секции на секцию ? Или может быть можно указать глобально в секции logic@.... анимацию для всех подчиненных секций ?

 

2) combat_ignore и combat_ignore_cond. Если в секции logic@.... не прописано combat_ignore, то на combat_ignore_cond = always в любой из подчиненных секции НПС не реагирует. Так и должно быть, или я чет непонял ?

 

3) combat_ignore_cond  = {=check_fighting(402)} - что это означает ? Разрешение комбата только против НПСа с story_id = 402 ?

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


Ссылка на сообщение

 


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

Значит использование combat_ignore_cond  в подчиненных секциях имеет смысл лишь в связке с указанием в секции logic@.... параметра combat_ignore = combat_ignore ?

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


Ссылка на сообщение

1) Попробуй в ремарке просто не указывать анимки.

Если я правильно понял - в walker указать анимацию, а в последующих remark нет ? И будет все красиво ?

 

Цитата из вики:

  • syn

Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком syn не прибудут все персонажи с данным team-ом (team задается в виде текстовой строки в customdata).

customdata - имеется в виду это ?

custom_data = <<END

...............................

END

 

Если да, то не нашел ни для одного НПСа в распакованном аллспаун строки team  в custom_data. Есть только:

; cse_alife_creature_abstract properties

g_team = 4 (или 0)

 

Это оно ?

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

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


Ссылка на сообщение

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

 

 

 


попробуй, а красиво или нет, не знаю

попробовал - не красиво, при переходе в ремарк, НПС поднимается и уже не ложится.

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

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


Ссылка на сообщение

Отчего НПС может игнорировать on_death ?

Вот секция логики в которой он находится:

[walker@val_x18_security_guard8_nc]
path_walk = guard6_walk
path_look = guard6_look
meet  = no_meet
on_death = on_death@death_guard8
on_hit  = on_hit@hit_guard8
combat_ignore_cond = {=check_fighting(400:402)}

так прописан on_death@death_guard8

[on_death@death_guard8]
on_info = %+val_prisoner_escape_start =logic_and_spawn_test%

logic_and_spawn_test - тестовая ф-ция, прописаная в xr_effects, просто выводит сообщение актеру(ГГ). Иду к НПСу, шмаляю в него, убиваю - нет ни сообщения ни выдачи инфо-порции.

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

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


Ссылка на сообщение

Так написано-же - в скрипте xr_logic в 126-й строке локальная переменная st равна nil. Открывай в редакторе, который показывает нумерацию строк, ищи 126-ю и гляди че там за nil получился. В оригинальном ТЧ эта строка находится в ф-ции configure_schemes, значит глюк связан с гулагами\логикой НПСов.

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


Ссылка на сообщение

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

Непосредственно перед строкой скрипта, которая валит движок есть такое:

local npc_id = npc:id()
 local st = db.storage[npc_id]
 -- если какая-то схема была до этого активна, деактивировать её
 if st.active_section then --- здесь вылетаем
  issue_event(npc, st[st.active_scheme], "deactivate", npc)
 end
Добавь перед строкой "-- если какая-то схема была до этого активна, деактивировать её" вывод npc:id() в лог, будешь знать какой перс конкретно виноват. Ну а дальше сам...

 

P.S. и еще - я не буду утверждать, просто пока с этим не работал - но если монстры то-же работают под гулагами, то и они будут обрабатываться в xr_logic.

 

Такой вопрос:

Есть гулаг с основным населением "сталкеры", и есть 1 эксклюзивная работа в этом гулаге и НПС "торговец" эту работу занимающий. Если я(ГГ) убиваю этого эксклюзивного НПСа, то остальное население гулага на ГГ не обижается. А если грохну кого-то из не эксклюзивных - сразу атакуют ГГ. Как правильно сделать, чтоб и убийство этого эксклюзивного НПС обижало на ГГ остальное население гулага ?

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

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


Ссылка на сообщение

AndrewMor

это в xr_logic добавь\исправь. Смысл кода: если есть сбой в данных из db.storage для какого-то моба - пишем его ID в лог.

 local npc_id = npc:id()
 local st = db.storage[npc_id]

 -- если какая-то схема была до этого активна, деактивировать её 
if st and st.active_section then 
	issue_event(npc, st[st.active_scheme], "deactivate", npc)
else
	local text = "глючит моба с ID: "..tostring(npc_id)
	local set_text = string.gsub(text, " ", "_")
	local con = get_console()
	con:execute(set_text)
	con:execute("flush")
end
...................

Смотреть после вылета в лог-файле (не в кусочке из него, что в буфере обмена будет), который найдешь или в системной папке Документы или в папках игры, зависит от настроек в fsgame.ltx.

 

 




on_death и т.д.

Это типа отловить смерть\хит по этому НПСу - и затем как-то обидеть всех гулаговцев на ГГ ? Подскажите какой ф-цией это можно сделать, я имею в виду "обидеть" ?

А вообще-то хотелось-бы знать - отчего неэксклюзивные "сами" обижаются а на эксклюзива надо обижать скриптеру ?

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


Ссылка на сообщение

ТЧ 1.0005 чистая. Такая вот проблема - на одной из локаций логика НПСов под гулагами сходит с ума. Подробнее: начало игры как обычно в коморе у Сидора. На Кордоне все нормально, все НПСы работают, все ОК. Перехожу на Свалку, здесь то-же все ОК. Перехожу на Темную Долину - и тут все сходит с ума. Первая сцена - долговец Пуля пытает раненого бандита, произносит "Говори, а то узнаешь как пуля легко....", тот должен отвечать, но молчит. Соответственно Пуля стоит над ним и сцена дальше не идет. Логику этого раненого бандита не трогал. Инфо-порция "val_nap1_phrase1_end" которая выдается после фразы Пули и должна переключить секцию бандюка выдается нормально, проверил. Почему такое может быть ? Как выявить что ломает обработку логики, причем только на этой локе ?

 

 

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

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

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


Ссылка на сообщение

а так лень глянуть в конфиг

Вы имеете в виду game_relations.ltx ? Про него я знаю. Но мне интересно именно поведение НПСов под гулагами - ну допустим в ДН на Кордоне: если я стрельну в какого-то из сталкеров, весь гулаг станет врагами ГГ и попытается его замочить, но если я убегу от них и перейду на Свалку - сталкеры там будут нейтральны к ГГ. Значит в этом случае не game_relations есть есть основа обижания НПСов под гулагом на ГГ ?

 

 

Флаг syn в путях - как заставить работать его ? На вики написано что-то про "персонажи с данным team-ом (team задается в виде текстовой строки в customdata)". Нашел этот параметр в character_desc_****.xml типа <team>Killer_specnaz</team>. Это оно ?

 

 

Еще раз про team для НПСов - его только в character_desc_****.xml можно прописать, или прокатит в alife-файле спавна что-то типа:

custom_data = <<END

[logic]

team = ля-ля-ля

END

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

 

 

Такое вот нашел в alife_l04_darkvalley.ltx для двух каких-то НПСов:

custom_data = <<END

[spawner]

cond = {+val_raid_start}

[smart_terrains]

none = true

[logic]

active = walker

[walker]2

path_walk = val_raid_w1

path_look = val_raid_l1

END

Выделенная цифра - что означает ?

 

Опечатка ? dc

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

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


Ссылка на сообщение

Сейчас что с кривыми диалогами ? Они соответствуют моменту, просто попутаны ГГ и НПС в порядке произношения фраз ? 

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


Ссылка на сообщение

Как обычно - ручками, с помощью какого-нибудь текстового редактора....

Чуток подскажу: файл gamedata\config\gameplay\dialogs_military.xml, в нем найти этот самый диалог и че нить с ним сделать...

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


Ссылка на сообщение

 

 

что в логике не так, мож не дописал чего

То, что под спойлером - это и есть вся логика ?

 

Несколько вопросов по all.spawn:

1)  При декомпиляции со сканированием с исп. uACDC - удалять sections.ini обязательно, если в конфигах ничего не изменял ?

 

2) Насчет содержимого alife-файлов все понятно, а вот насчет way-файлов есть вопрос. Их содержимое то-же полностью, при начале НИ, считывается движком, и как-то сохраняется ?

 

3) Что за файл в распакованном all.spawn (версия  uACDC 1.35) - way__level_unknown.ltx

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


Ссылка на сообщение

Объясните, на кой ПЫСам в квестовые задания приоритеты расставлять было ?

К примеру для двух первых заданий на ТД, у одного прописано prio="420" у следующего prio="415". И откуда цифры такие, для ТД в файле заданий их всего не более десятка, а там 395, 403 и т.п.

Может есть какой-то смысл, мне не известный ?

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


Ссылка на сообщение

 

 

все очевидно из task_manager.script

Я в вопросе чуть не правильно выразился - спросить хотел о сюжетных заданиях. А к ним отношение менеджер регулярных заданий никак иметь не может.

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


Ссылка на сообщение

о ключе prio

Мне тут мысля пришла - может этот проритет используется при переключении отображения активного задания в соответствующе закладке ПДА ? А так как вообще заданий может быть много, тогда и большие значения параметра понятны.

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


Ссылка на сообщение

Есть такое задание:

<game_task id="val_prisoner_help">
 <title>val_prisoner_help</title>
 <objective key="0">
  <article>val_prisoner_help_art</article>
  <icon>ui_iconsTotal_val_prisoner_help</icon>
  <infoportion_complete>val_prisoner_scene_end</infoportion_complete>
  <infoportion_fail>val_prisoner_dead</infoportion_fail>
 </objective>
 <objective key="1">
  <text>val_prisoner_help_1</text>
  <infoportion_complete>val_prisoner_give_info</infoportion_complete>
  <infoportion_fail>val_prisoner_dead</infoportion_fail>
 </objective>
 <objective key="2">
  <text>val_prisoner_help_2</text>
  <map_location_type hint="val_prisoner_help_main_hint">green_location</map_location_type>
  <object_story_id>val_prisoner</object_story_id>
  <infoportion_complete>val_prisoner_free</infoportion_complete>
  <infoportion_set_complete>val_prisoner_scene_end</infoportion_set_complete>
  <infoportion_fail>val_prisoner_dead</infoportion_fail>
 </objective>
</game_task>

 

 

выдается в диалоге. Проблема - после выдачи, на объекте задания сразу стоит зеленая метка. Ошибок с инфо-порциями нет. Что не так ? Она ведь должна, по идее, появляться только после выполнения первого подзадания ?

 

И еще по заданиям вопрос - в кодах исходных заданий сплошь и рядом встречается строка:

<icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon>

с разными циферками для х и у. Она движком обрабатывается ? А то чет иконок, указанных по этим координатам из указанного файла текстур, я в описаниях заданий в ПДА не вижу ни где ?

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

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


Ссылка на сообщение

Имеется три НПСа под гулагом. Все трое по выдаче инфо-порции переходят в схему patrol. Схемы построены так:

ведущий

[remark@val_escort_npc1]anim  = waittarget  = actoron_game_timer = 1800 | patrol@val_escort_npc1_leave %+val_escort_scene_end% - эта инфо-порция переводит в patrol[patrol@val_escort_npc1_leave]path_walk   = leave_walkpath_look   = leave_lookcommander   = trueformation   = lineon_signal   = arrived | nil %+val_escort_on_blokpost%

ведомые, первый (в схему не переходит, гад...)

[walker@val_escort_npc2]path_walk = wait_to_prisoner_walk1path_look = wait_to_prisoner_look1on_info  = {+val_escort_scene_end} | patrol@val_escort_npc2_leave[patrol@val_escort_npc2_leave]path_walk = leave_walkpath_look = leave_lookformation = lineon_info  = {+val_escort_on_blokpost} | nilon_signal = arrived | nil

второй

[remark@val_escort_npc3]anim = wait_naon_info = {+val_escort_scene_end} patrol@val_escort_npc3_leave[patrol@val_escort_npc3_leave]path_walk = leave_walkpath_look = leave_lookformation = lineon_info  = {+val_escort_on_blokpost} | nilon_signal = arrived | nil

 



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

Что это может быть ? Что и где я упустил ?

 

кошмар какой-то....

Переделал схему первого ведомого НПСа так, чтоб он в patrol переходил тоже из remark, как и два других - и все заработало !!! Это-то как понимать ????

 

 

я вот например заметил косяк в приведенной тобою логике

В чем он ?
Изменено пользователем Dennis_Chikin
убрал код под спойлеры

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


Ссылка на сообщение
но Кэп умер. Можно ли сделать так, чтобы последний пункт( поговорить с командиром Барьера) посылал меня допустим к Лукашу?

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

Но можно проявить фантазию, допустим так: использовать для завершающего

подзадания(последнего пункта) <function_fail>, в котором проверив, что этот самый Кэп помер, выдать ГГ сообщение, типа "Это Лукаш, зайди ко мне - поговорить надо", и выдать какую-то инфо-порцию. Ну и

соответственно Лукашу прописать в диалоги ветку, разблокирующуюся по наличию этой выданной и-п, с соболезнованиями по поводу смерти Кэпа и выдачей полагающейся награды. И далее фантазируем - если не охота портить статистику игрока проваленным квестом, можно использовать <function_complete> и завершать квест успехом, но в ф-ции выдавать сообщение с намеком у кого получить вознаграждение.

 

 

Вообще - можно, но ну его нафиг, такое извращение. Как-то думал, чтобы проваленные задания в истории не хранились, потом плюнул. Можно еще просто тупо поршни поснимать совсем. Но тоже извращение. dc

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

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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