-
Публикаций
220 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные Сталкер из прошлого
-
-
1) Имеем рестриктор на вызов функции при нахождении в нём актора. Требуется задать ему логику на срабатывание каждые 10 минут игрового времени, с уходом в nil после получения определённого инфопоршня, это вообще реализуемо?
2) Где-то встречал функцию спавна обьекта за спиной актора вне зависимости от его позиции, может быть кто-нибудь помнит? Также интересно как проигрывать партиклы "перед лицом", наподобие того как раньше снегопад в некоторых модах реализовывали.
3) Работает ли вообще у мутантов в логике параметр on_hit? По идее при нанесении хита должно вызываться действие, но ничего не происходит. Или я делаю что-то не так?
Спойлер[logic]
on_hit = hit@mutant[hit@mutant]
on_info = % =действие_из_xr.effects%4) Какая функция логики НПС отвечает за движение строго за актором?
- 1
-
Invincible Декомпилировал, не все правда, только те которые редактирую. СДК так же стандартный ЗП-шный.
-
1 час назад, Invincible сказал:Скомпилировать allspawn, если на ЗП работаете.
Не совсем с ЗП, с Call of Chernobyl 1.4.22, и чувствуется я по неопытности чего-то такого лютого там намутил со спавном, что в СДК он билдится нормально, но потом при попытке его скомпилировать, компилятор вылетает с логом
Спойлер* New phase started: Building game graph for 'l03_agroprom'
level "d:\sdk\editors\gamedata\levels\l03_agroprom\"
Loading AI map
422724 nodes loaded
Loading graph points
0 graph points loaded
Building cross table
Saving cross table
stack trace:0033:00000000800C91C1 xrCompiler_AI.dll
0033:00000000800C8F5C xrCompiler_AI.dll
0033:00000000800C6FF9 xrCompiler_AI.dll
0033:00000000800DBACA xrCompiler_AI.dll, xrCompileAI()
0033:00000000800CC303 xrCompiler_AI.dll
0033:00000000800D9C90 xrCompiler_AI.dll, xrCompileAI()
[error][ 6] : Неверный дескриптор.и не только Агропром, так с любой локацией.
Приходится работать со спавном черезодно местоACDC, сначала расставляя объекты в СДК, и затем ручками прописывая получившиеся координаты в распакованных alife_файлах локаций. -
1) Имеем 5 одинаковых квестовых предметов в инвентаре актора. В определённые моменты нужно удалить 1 из них, оставив 4 остальных, и т.д. Единственная нарытая мной в недрах интернета
Спойлерfunction delete(object) local id, obj, kto for id=0, 65535 do obj = alife():object(id) if obj then kto = obj:section_name() if (kto == "имя_обьекта") then alife():release(alife():object(id), true) end end end end
удаляет все 5 предметов сразу. Удалять все 5 и спавнить потом ещё 4 заново - костыль и лишняя нагрузка на движок. Кто чего подскажет?
2) Что будет, если не вырезать AI-сетку под новым статичным обьектом, установленным в SDK? НПС будут сквозь объект проходить, или упираться в него и тупить? Просто после редактирования и компиляции AI-сетки, работать оно категорически не хочет, вылетая с cross_table doesn't correspond to the AI-map -
5 минут назад, Shifr сказал:Как сделать чтобы после того как персонаж приходит в точку walk_2, выдавался инфопоршень?
Поставить там рестриктор, а в логике НПС прописать
on_info = {=npc_in_zone(restrictor_name)} %+infoportion%
- 2
-
1) После компиляции локации образуются
баги с тенями на динамическом и выше освещениях, на некоторых местах локации. Происходит это как на надземных, так и подземных уровнях, при любом качество сцены в СДК, кроме драфта. Насколько я понял, это кривое наложение lmap-а, возможно ли это как-то исправить (ключом в батнике и т.п.)?
2) Я не знаю, чего я намутил со спавном, но сначала при его компиляции куда-то пропадала часть спавн-элементов (в исходном all.spawn их было 18 000+, после сборки становилось 15 000), и съезжали все графпоинты, теперь компилятор вообще отказывается что-либо с ним делать, при попытке сборки спавна вылет
Спойлер* New phase started: Building game graph for 'l03_agroprom'
level "d:\sdk\editors\gamedata\levels\l03_agroprom\"
Loading AI map
422724 nodes loaded
Loading graph points
0 graph points loaded
Building cross table
Saving cross table
stack trace:0033:00000000800C91C1 xrCompiler_AI.dll
0033:00000000800C8F5C xrCompiler_AI.dll
0033:00000000800C6FF9 xrCompiler_AI.dll
0033:00000000800DBACA xrCompiler_AI.dll, xrCompileAI()
0033:00000000800CC303 xrCompiler_AI.dll
0033:00000000800D9C90 xrCompiler_AI.dll, xrCompileAI()
[error][ 6] : Неверный дескриптор.Происходит это не только с Агропромом, а со всеми локациями, графпоинты в СДК везде расставлены как полагается.
Компилятор версии 1.2, спавн от СоС 1.4.22
-
1) Какой функцией (и возможно ли вообще) выдать инфопоршень при обыске трупа НПС?
2) Как вызвать скрипт (выдачи задания например) при поднятии определённого предмета? Я так понял это только проверку на его наличие у актора в bind_stalker пихать?
3) Где-то давно видел статью по созданию простейшего GUI-интерфейса (окна с кнопкой выхода), и его вызова через использование предмета в инвентаре, сейчас что-то не нашёл. Может кто помнит, или просто пример приведёт? -
Что-то я никак не пойму, какой файл в чистом СоС 1.4.22 отвечает за срезаемые с монстров части (Мясо, хвосты и т.п.). Это точно не строка в конфиге, как было в ТЧ, насколько я понял ассортимент зависит от "группировки" (community) мутанта, но какой файл это всё задаёт и куда вписывать новую тварюгу чтобы с неё срезалась новая часть я не понял.
-
-
5 часов назад, Redix сказал:в sdk делал их с моделей тополей
А чего готовые с AN не взять? А то ваши как-то мягко говоря
всратоватостранновато выглядят...- 1
-
Вопрос 1: как задать логику мутанту, заспавненному через скрипт. Сама логика есть (условно - патрульный путь от точки до точки), но как привязать её к конкретному (квестовому) мутанту? И будет ли работать на мутантах функция логики on_info = {=npc_in_zone(restrictor_name)}?
Вопрос 2: возможно ли сделать через стандартную ЗП-шную систему апгрейдов, смену ХУД-визуала оружия? По логике можно в конфиге апгрейда дописать строку "hud = "новый_блок_худа_из_конфига_пушки"", но естественно оно не работает. Либо в скрипте inventory_upgrades.script создать новую функцию, подменяющую модели на новые при апгрейде, но вид этой функции пока не могу даже представить себе. Либо такое вообще никак не реализовать?
Вопрос 3: как сделать возможность действия на обьекте (например как в ЗП заложить взрывчатку на дверь или осмотреть вертолёт), с выдачей инфопоршня после действия. Где-то давно встречал урок на эту тему, но сейчас найти так и не смог.
Также интересно узнать, как проиграть партикл (взрыва например) по определённым координатам, с вызовом через скрипт. -
Значицца спрошу ещё: какой функцией в логике рестриктора задать проверку, чтобы рестриктор срабатывал при заходе в него актора, только в определённый период времени (условно с 22:30 по 00:00) ? Понятно что это в on_actor_inside задаётся, есть мысль что с использованием on_game_time, но сам вид функции представить так и не смог.
-
21 минуту назад, Vodka сказал:Он в сектор занесён?
Да, конечно, ошибок никаких нет, компиляция проходит успешно, но конкретно этот объект в игре потом просто не отображается
2 минуты назад, Mervin62 сказал:надо пересобирать не спавн, а всю локу целиком
Само собой, пересобираю всю локацию.
-
Такой вопрос: перегнал конвертером бардака динамический .ogf-обьект в статичный .object для СДК, поставил его на локацию. Но при компиляции СДК его почему-то пропускает, т.е. если все остальные объекты при компиляции в логе идут двумя строчками
Parse static objects... (statics\object_0003)
Building object: statics\object_0003
То этот объект не билдится а просто пролетает как Parse static objects... (statics\my_object_0001), и в игре впоследствии не отображается. Может кто знает как сделать чтобы при компиляции он присоединялся к локации как и все остальные? -
1) Нужно, чтобы когда НПС доходит до определённого рестриктора, выдавался инфопоршень и задание обновлялось. Пробовал делать это в логике НПС,
Спойлер[walker@put_vasyan]:walker@generic path_walk = put_vasyan_walk path_look = put_vasyan_look meet = meet@vasyan on_npc_in_zone = restrictor_special | test_vasyan | remark@2 [remark@2]:walker@generic on_info = {+infa_na_vzyatie_kvesta}%+inf_na_obnovleniye_kvesta% on_info2 = {+inf_na_obnovleniye_kvesta} walker@vasyan_idet_obratno
Но когда НПС доходит до рестриктора, он тупо встаёт и засирает консоль дебагом ремарк-схемы, никакой инфопоршень конечно не выдаётся. Что не так?
2) Также неплохо бы узнать, какой логикой можно перевести данного НПС во враги, если он видит актора. Скрипт порчи отношений я знаю, а как его вызвать из логики - нет. Т.е. НПС идёт по пути, актор за ним. Если актор попадается на глаза (или подходит на дистанцию до 10 метров) - становится врагом.
-
Можно ли задать рестриктору логику, на срабатывание строго в определённое время? Условно - рестриктор срабатывает если актор попадёт в него с 23:00 по 03:00 игр. времени, в остальное же время неактивен? Если да, то какой функцией это можно задать.
UPD: Так же интресно, можно ли выдать инфопоршень, когда в определённый рестриктор заходит определённый НПС. Или это делается через логику этого НПС?
-
Назрел вопрос: а возможно ли заспавнить рестриктор через скрипт? Т.к. каждый раз компилить all.spawn и запускать новую игру не очень удобно. В интернете нашёл только функцию типа такой (без кирилицы ессно)
Спойлерfunction create_my_restriktor() create_restrictor([[путь\к_логике.ltx]],радиус,координаты,lvid,gvid) end
но она для SGM и результата на СоС не приносит, а даёт лишь вылет "attempt to call method 'create_restrictor' (a nil value)".
-
6 минут назад, liner сказал:Нужно две скобки добавить
Ага, это забыл, только всё равно вылет тот же идёт, scripts\bind_stalker.script:241: attempt to index a nil value.
Mervin62 Спасибо, были мысли про рестриктор. Но если например требуется не спавн выполнить при наличии предмета, а действие какое-то (допустим изменить отношения с группировкой)?
-
Совершенно нубский вопрос, но всё же: как сделать вызов скрипта при поднятии определённого предмета? Условно говоря, мы поднимаем уникальный предмет (к примеру wpn_pm_unique), и при его наличии в инвентаре у ГГ, запускается скрипт из другого файла, спавнящий кровососа. Функцию спавна кровососа я знаю, а вот как написать функцию его вызова при наличии у ГГ нужного предмета, так и не понял. От "большого ума" пробовал написать и повесить на апдейт в bind_stalker такую функцию:
Спойлерfunction podnyal_pm() if db.actor:object("wpn_pm_unique") then new_spawn.krovosos_create end return end
- ожидаемо получил вылет с "bind_stalker.script: attempt to index a nil value".
-
Mindallius Короче вот как-то так.
СпойлерСоздадим крайне простой диалог, с условием появления и единоразовой выдачей. Дабы не плодить лишних файлов, допишем своё в оригинальные файлы. Потребуются: character_desc_zaton.xml, dialogs_zaton.xml и info_zaton.xml, лежащие по пути gamedata\configs\gameplay, а так же файл текста st_dialogs_zaton.xml, лежащий по пути gamedata\configs\text\rus.
Для начала создадим саму основу диалога в файле dialogs_zaton.xm. В самом конце, перед заключительным тегом </game_dialogs>, пишем такой код:
Спойлер<dialog id="nash_testoviy_dialog"> <has_info>zat_a2_linker_b14_quest_strange_item_done</has_info> <!-- наличие инфопоршня, при котором диалог появится, в данном случае - ориг. инфопоршень, выдаваемый по завершении квеста Бороды на Штурвал --> <dont_has_info>nash_testoviy_info</dont_has_info> <!-- наличие инфопоршня, при котором диалог пропадёт, в данном случае - наш новый инфопоршень --> <phrase_list> <phrase id="0"> <text>nash_text_1</text> <!-- Текст диалога, берётся в нашем случае из файла st_dialogs_zaton.xml --> <next>1</next> <!-- Следующая фраза --> </phrase> <phrase id="1"> <text>nash_text_2</text> <next>2</next> </phrase> <phrase id="2"> <text>nash_text_3</text> <give_info>nash_testoviy_info</give_info> <!-- Выдача инфопоршня --> </phrase> </phrase_list> </dialog>
Пропишем этот диалог Бороде. Для этого в файле character_desc_zaton.xml пропишем в профиле Бороды (zat_a2_stalker_barmen), среди прочих строк типа <actor_dialog>--------</actor_dialog> новую строку:
<actor_dialog>nash_testoviy_dialog</actor_dialog>
Диалог должен появится после сдачи изм. штурвала.
Но! Текста в нём пока нет, отображаются только тех. названия типа nash_text_1. Соответственно пропишем текст нашего диалога в st_dialogs_zaton.xml, примерно так:Спойлер<string id="nash_text_1"> <text>Я учусь диалоги писать, не обращай внимания, это тестовый</text> </string> <string id="nash_text_2"> <text>Учится - дело полезное, успехов!</text> </string> <string id="nash_text_3"> <text>Спасибо!</text> </string>
Теперь у диалога есть текст. Но! После прочтения он не исчезает, а повторяется заново. Чтобы диалог отображался один раз до прочтения, и нужны в частности инфопоршни. Прописываем наш новый инфопоршень nash_testoviy_info в файл info_zaton.xml среди прочих, вот так:
<info_portion id="nash_testoviy_info "></info_portion>
Всё, по идее, если всё сделано правильно - после приноса Бороде штурвала, у него появится тестовый диалог, пропадающий после прочтения.
Если мы наоборот хотим чтобы диалог был всегда или без условий - НЕ пишем строчки dont_has_info и has_info в первом примере -
-
11 минут назад, Maslina сказал:can't find texture "map\имя_моей_локации"
Это текстуры карты локации для КПК нету. А по скринам у тебя как будто проблемы с террейном, он вообще есть в папке с локацией?
-
О, в тему СДК: Поковырял билд СВ 3, в частности Подземку Агропрома - при проверке или сборке локации ругается с логом
СпойлерLevel doesn't contain HOM objects! Object 'levels\agrokat\agrokat_part0000': engine shader 'def_shaders\def_vertex' non compatible with compiler shader 'def_shaders\def_noshadow' И так вплоть до Object 'levels\agrokat\agrokat_part0462'.
Понятно что баг с шейдерами, хотя shaders.xr от билда стоит, и нужно переназначать шейдеры этих обьектов в АкторЭдиторе, но 462 обьекта назначить - это ж сдохнуть можно. Нету ли какого-нибудь другого метода эту ошибку обойти?
-
Опять я. Вопрос по логике работы рестриктора.
Возможно ли сделать чтобы при наличии определённого инфопоршня (условно vasyan_info) базовая логика [sr_idle] переключалась на другую, например на [sr_tip] и заканчивалась, а при отсутствии этого инфопоршня переключалась на третью, например на [sr_teleport], и повторялась до тех пор пока у нас не будет требуемого vasyan_info и не запустится [sr_tip]? Или это бред полный?P.S. Сам хоть понял чо написал?))) Русским языком - заходим в рестриктор - при наличии vasyan_info выдаём СМС и "выключаем" рестриктор, при его отсутствии - телепортируем актора.
ЛАБИРИНТ
в Моды Зов Припяти
Опубликовано
Ээээ, я тут при чём?