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

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


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

 


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

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

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

AndreySol

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

3) check_fighting(sid1:sid2:...) Проверка того, не является ли кто-то из перечисленных (с помощью story_id) npc врагом данного. Как правило используется в combat_ignore_cond

Нужно почаще заглядывать в вики.

Мой архив

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

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

combat_ignore = combat_ignore

Это секция конфига, которая подставляется вместо combat_ignore_cond, ну вот типа:

[combat_ignore@esc_bridge]
combat_ignore_cond = {-esc_bridge_pass_fire =fighting_actor}

[logic@esc_bridge_kamp4]
active = kamp@esc_bridge_post4
combat_ignore = combat_ignore@esc_bridge
и так для десятка-другого работ.
Ссылка на комментарий

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
Ссылка на комментарий

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
Ссылка на комментарий

AndreySol, Попробуй так:

 

[logic]

walker=walker@val_x18_security_guard8_nc

on_death = on_death@death_guard8
on_hit  
= on_hit@hit_guard8

 

P.S и убери это из секции walker

 

 

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

Мод на базе ТЧ с маппаком локаций от Кости. При попытке загрузить сейв на Научной станции вылет с логом

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...shing\s.t.a.l.k.e.r\gamedata\scripts\xr_logic.script:126: attempt to index local 'st' (a nil value)

 

 

 

В чем тут может быть дело?

 

Сталкер - наше всё!

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

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

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

 

 


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

В том-то и дело, что на локации заспавнены только монстры. И логика, которую всегда прописывал, и везде работала без вылетов. То, что переменная st равна nil - это я понял. Но в скриптах не силен.

Сталкер - наше всё!

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

В Красном Лесу есть вот такая дверь, кто подскажет как её звать а алспавне.

6bb692ac16af7c4e592d81a04ccfc99c5f202c18

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

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

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

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
Ссылка на комментарий

Добавь перед строкой "-- если какая-то схема была до этого активна, деактивировать её" вывод npc:id() в лог, будешь знать какой перс конкретно виноват.

А что написать-то нужно? Приведи примерчик, если несложно. Просто я ж еще только учусь (с). А монстры да, под своими гулагами были, под схемой mob_home.

 

 

@Хемуль36рус, А вот не эта, случаем?

 

name = door_100x190_01_0000

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

Сталкер - наше всё!

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

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 и т.д.

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

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

По идее ни чего живого без storage быть не должно.

 

Про обижание эксклюзивов - в норме ни какого специального обижания гулага нет. Есть чисто сценарная функция xr_gulag.setGulagEnemy()

 

На попадание по друзьям/нейтралам обижается community.

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

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

 

 

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

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

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

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

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

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

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

Войти

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

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

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