=VENOM= 51 Опубликовано 22 Мая 2011 Если вылет во время диалога, то есть, как я предполагаю, в момент получения инфопоршна, и инфопоршн зарегистрирован, то всё дело в секции [walker@walker1]. Если только в диалоге не используются какие-нибудь прекондишны и экшны. А лог вылета есть, хоть какой-нибудь? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 4 Июня 2011 Igor88.89, именно. Кстати, можно и сразу "переодевать" NPC, используя эффект, например, кратковременного потемнения в глазах ГГ, или наоборот, яркой засветки (эффект телепорта), чтобы не было видно исчезновения/появления NPC. При "оживлении" трупов я такой эффект использую ... Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 4 Июня 2011 Ну, это сделать совсем непросто, если вообще возможно: придётся создавать новые модельки сталкеров, с новыми анимациями, или прописывать новые анимации уже существующим. Вряд ли что выйдет ... Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 19 Июля 2011 Ulman, ищи в файле watcher_act.script, место, где NPC добрался до трупа, и начинает непосредственно его обыскивать (включение анимации search). Вот сюда как раз и желательно засунуть проигрывание разового звука, исходящего от NPC. Интересная мысль, надо бы у себя тоже сделать . Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 8 Августа 2011 Ulman, если для "лечения" NPC используется т.н АИ-пак xStream'a (а скорее всего, так оно и есть), то в самом начале файла xrs_medic.script можно обнаружить табличку по имени excluded_npcs. Вот в неё и нужно заносить имена NPC, которых будут игнорировать NPC-"медики" - там, кстати, уже указаны несколько "беспомощных товарищей", так что разберёшься. Что касается исключений для обыска, тут сложнее, т.к. автор (кто забыл - Red75, файл watcher_act.script) отчего-то не предусмотрел такой возможности (зато изначально есть возможность определить тех, кто мародёрствовать не станет ), но добавить условие по "отсеиваию" имён (или по story_id, например, или по названию группировки и т.д. и т.п.) совсем несложно. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 9 Августа 2011 Disord, я уже отписал, что изначально в схеме можно указывать тех, кто не будет работать под схемой "мародёры" (то есть не будет обшаривать трупы). Это и есть пресловутая переменная "zombi". Не веришь - обрати внимание, там прописаны как раз зомбированные, а они, в свою очередь, как раз мародёрством не занимаются . Ну, это, конечно, исправить можно, если только у всех моделек зомбированных сталкеров имеется полный набор "сталкеровских" анимаций, иначе, как водится, будет стопудовый вылет. А Ulman'u надо, чтобы указанных персонажей именно не обшаривали после смерти. Ulman, если уж совсем просто, то сделай так - добавь в самое начало функции checkCorpse(obj) (файл watcher_act.script) вот такую строчку: if IsStalker(obj) and obj:name() == "stalker_name" then return false end "stalker_name" следует заменить на имя того сталкера, труп которого не должны обшаривать мародёры - но только не на "Вася" или "Петя", а на такое же, как и в файле xrs_medic.script для раненого, которому "не требуется" помощь. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 10 Августа 2011 Ulman, вот так должна выглядеть таблица в файле xrs_medic.script (чистая версия, с добавлением одного "больного"): local excluded_npcs={ esc_fox=true, esc_vagon_wounded=true, gar_bandit_stroyka3=true, gar_wounded_bandit=true, val_sos_wounded=true, val_escort_bandit_halfdead=true, vasya_pupkin = true } Вместо vasya_pupkin вставь имя своего "больного". Всё должно работать. Либо выложи свой вариант этого скрипта, возможно, в нём уже кто-то поковырялся шаловливыми ручками, и просто удалил проверку на "бесхозных больных". Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 12 Августа 2011 Не имея общей картины, могу посоветовать только то, как поступаю сам. Как только довожу "до ума" какую-либо новую фишку (а зачастую даже и в процессе разработки) я всегда делаю резервное копирование данных. Как только начинается очередной геморрой, распаковываю работоспособную версию, и легко и просто нахожу, в чём... нет, не собака, а где сам порылся, и как именно всё испортил . Частенько помогает. Скрипт хStream'а просмотрел, ничего кривого не обнаружил. А к остальным "зарезервированным" персонажам медики тоже сбегаются, или нет? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 15 Августа 2011 *Shoker*, я как-то пытался "телепортировать" труп непися в ТЧ (как раз оффлайн). При просмотре с другой локации видно, что NPC переместился в заданную точку. Но стоит перебраться на "родную" для трупа локацию, как он (труп) тут же оказывается на прежнем месте. В общем, поковырялся с часик, и бросил эту затею (хотел эдакое "оффлайн-кладбище" сделать, но потом сделал свой уборщик трупостволов, и отказался от этой фишки ). Stalkersof, таких неписей (без использования оллспона) заспонить несложно. Стандартной функцией создаём нужных NPC на заданных позициях. Почему нельзя спонить "кучей", как обычно это делается, поясню ниже. Затем (ну, я так поступаю - просто и удобно ) парой функций из набора АМК (read_salker_params/write_stalker_params) вписываем им в "кустодату" логику, основанную на схеме поведения remark, в которой нужно указать, что сталкеры должны смотреть в сторону игрока (target = actor). Вот почему нельзя спонить "кучей" - чтобы каждый сталкер под этой схемой находился на отдельной позиции (предполагаю, что это будет засада, не так ли ?) Там же в логике укажи условие перехода неписей в "боевое состояние" - то есть, как у тебя написано, при приближении игрока (скажем, on_actor_dist_le_nvis = 100| remark@bey_vragov %=здесь функция для "обижания" неписей на игрка, если их группировка не враждебна к игроку%). Собственно, всё. По итогам боя можно либо отправить неписей в какой-нибудь смарт, либо оставить под той же схемой, либо загнать в nil - тогда они тупо будут слоняться по местности, пока их кто-нибудь (или что-нибудь) не прикончит. Ну, я предполагаю, что по итогам боя они все должны погибнуть, верно ? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 16 Августа 2011 Stalkersof, делать можно как угодно, ты разработчик - тебе и карты в руки . Стандартная функция, создающая объекты в игре, в целом выглядт так: alife():create("item_section_name", vector():set(x, y, z), level_vertex_id, game_vertex_id) Но. С другой стороны, если ты собрался создавать рестриктор, при входе в который будет выдаваться команда на спон неписей, то всё равно придётся ковырять all.spawn. А если придётся ковырять all.spawn, то почему заодно не добавить нужных NPC на нужных позициях с заранее продуманной и настроенной логикой, которые "появятся" при входе в рестриктор? Другое дело, если нужно, чтобы спон неписей происходил по условию (как ты вначале писал, по условной фразе в диалоге)... Стучись в личку. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 23 Августа 2011 Иногда самое интересное в логе вылета не всегда находится после "FATAL ERROR", а в предыдущих строках. Скинь полностью лог вылета. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 12 Сентября 2011 лнкс, надо было выложить свою изменённую секцию, чтобы оценить, что к чему. В общем случае, если тебе нужно, чтобы на Кордоне спонились мастера-бандосы, сделай так: [esc_bandit_respawn_2]:stalker $spawn = "respawn\esc_bandit_respawn_2" character_profile = sim_bandit_master spec_rank = master community = bandit И респонер при срабатывании выдаст тебе бандюгу-мастера. Но учти, что бандюги-мастера на Кордоне "жить" не смогут (в оргинале смарт "esc_fabrika_bandit"), т.к. в настройках сталкеры такого ранга не берутся в смарты Кордона (файл smart_terrain_presets.ltx). Поэтому, такой NPC заспонится только в случае, если где-то в каком-то "бандитском" смарте на бескрайних просторах Зоны имеется свободное место, подходящее по параметрам (группировка - бандит, ранг - мастер), и тогда, после своего "рождения", свеженький NPC тут же отправится в путешествие на ту локацию, где расположен пресловутый смарт. А если тебе нужно, чтобы мастера-бандюги "жили" на Кордоне, в файле smart_terrain_presets.ltx измени (добавь) в секцию [l01_escape] бандитов-мастеров: [l01_escape] ... bandit = novice, experienced, master ... Другое дело, как это скажется на общей картине (мастера на Кордоне крутовато-с ), но тебе виднее, конечно... С другой стороны, можно, наверное, "поселить" одного бандюгу-мастера на Кордоне (ну, типа, это, "пахана" ). Как это сделать? Сделать это можно, добавив условие на какую-нибудь одну работу в гулаге смарта бандюков на АТП (файл gulag_escape.script), допускающее, что на эту самую работу может быть назначен либо сталкер (бандит) с рангом "мастер", либо, например, только NPC с именем "sim_bandit_master". Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 13 Сентября 2011 Artos, это я тебе возражу (и докажу) - т.к. в своё время всё то, о чём я говорил, неоднократно проверял, и всё это у меня и сейчас вполне так ничего себе работает . Начнём сначала: Файл 'smart_terrain_presets.ltx' является конфигом, который предназначен только для универсальных гулагов типа 'general_lager' Для универсальных гулагов предназначен файл-пресет general_lager.ltx - а для "именных", как ты выразился , предназначен тот, который я указал. Далее: респонеры NPC никаким местом не привязаны к каким-либо "гулагам". Поясняю ещё раз: любой респонер может плодить неписей для любых смарттеррейнов (или, если угодно, для "гулагов" ), если он подходит по праметрам (повторюсь: в общем случае - группировка, ранг). Чтобы убедиться в этом, достаточно через некоторое время после начала игры (после срабатывания респонеров, это дело в разных модах реализовано совершенно по-разному) просмотреть глобальную карту (следует включить отображение всех NPC (или только сталкеров) на глобальной карте - как это сделать, пояснять, надеюсь, не потребуется?). В ярлычках неписей видно, что смарты наполнены совершенно разными респоновыми сталкерами, я имею в виду сталкерами, рождёнными совершенно разными респонерами. И не надо валить всё на алайф, "перегоняющий" сталкеров из одних смартов в другие, повторюсь: отслеживая путь любого NPC от респонера до смарта, становится очевидно, что никакие респонеры не привязаны ни к каким смартам. Единственные респонеры, срабатывающие в момент взятия NPC под гулаг (при условии, что условие для них прописано в смарте) - это респонеры, наполняющие ящики с барахлом в смартах. То есть, поменяв в конкретной секции "опытных" на "мастеров", ничего глобального ты не совершишь, т.к. в оллспоне есть куча других респонеров, которые наплодят и "опытных", и "новичков" в предостаточном количестве. Далее: человеку явно было нужно всего лишь заспонить и поселить на Кордоне бандоса-мастера, и для этого совершенно не хотелось лезть в оллспон (да это и ни к чему, я уже пояснял, что нужно для этого сделать, причём двумя способами ). А если уж ты решил создать дополнительные секции спона (отдельные, для "мастеров" и т.п.), то, чтобы прописать их в существующий респонер, потребуется править оллспон. Далее: ты, видимо, не знаком с тем фактом, что для любой работы в скриптовых файлах гулагов (тот же gulag_escape.script) можно создать условия "приёма на работу" (я частично уже отписывал, по каким параметрам это можно сделать - там ещё много чего можно "наусловить" ). Эти условия называются predicate, и их, повторяю, можно применить к любой работе гулага. Если нужен конкретный пример - не поленись, загляни в этот файл (gulag_escape.script), и посмотри, как это реализовано для работы Волка или Фаната в смарте "лагерь новичков" (esc_lager). Таким образом, на работу "пахана" в смарте бандитов на АТП можно поставить условие, человеческим языком описываемое как "на работу принимается (назначается) только NPC с группировкой "бандит", с именем профиля "sim_bandit_master", и с рангом, равным 900 и более". Интересный факт: таким образом, кстати, можно обойти ограничение, выставленное для смартов Кордона в ltx-файле (конкретно smart_terrain_presets.ltx). Можно ещё кучу условий добавить . Заключение: в указанный смарт (esc_fabrika_bandit) в оригинальной игре принимаются NPC с группировкой "бандит", с рангами "новичок" (ранг менее 300), и "опытный" (ранг более 300 и менее 600). Никакие "мастера", заспоненные каким-то "назначенным именно для этого гулага" респонером под гулаг в смарте браться не будут. Чтобы изменить статус-кво, см. мой предыдущий пост - там всё для этого есть. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 14 Сентября 2011 (изменено) Artos, слово - не воробей, поэтому вот тебе тоже Если учишь кого-то жизни вместо того, чтобы попытаться помочь, то неплохо было бы научиться - для начала - понимать то, о чём пишешь сам (не совершая при этом детских грамматических ошибок). Итак, пройдёмся сначала: твоя реплика первого поста (главное выделено мной, =VENOM=) : Именно для этого гулага в all.spawn'е организован респавнер 'esc2_respawn_bandits_fabrika', в котором и прописаны секции, которые будут спавниться (esc_bandit_respawn_1, esc_bandit_respawn_2)... ...и второго: 2. Где-то мною упомянута что респавнеры плодят объекты привязанные к гулагам? Само собою, отреспавненные объекты подчиняются тем конфигам, которые определены их секцией. Это кому-то нужно доказывать? Не находишь странным, что сначала пишешь одно, а затем сам же от этого открещиваешься? Да ещё при этом неуклюже оправдываясь? Поэтому, специально для тебя (т.к. остальные в курсе) вот сделал несколько скринов (раз на словах с первого раза не доходит ), доказывающие тот простой факт, что респонеры порождают NPC, не привязываясь ни к каким гулагам (локация Кордон, смарты esc_lager и esc_fabrika_bandit, второй после "зачистки", заполняемые сталкерами, порождёнными совершенно разными респонерами, и никаких "от ближайшей", как ты изволил выразиться): А вот смарт esc_fabrika_bandit с изменёнными параметрами smart_terrain_presets.ltx - видно, что даже бандит "Фраер" прибежал через пол-Зоны, чтобы поселиться на Кордоне (остальные с рангом "мастер" порождены респонерами): Ну, и ещё кое-что, достойное внимания : Простая правка строки респавнера, добавляющая иль заменяющая секции - и после перекомпиляции алл.спавна - АТП заматереит (после смерти существующих). Что там "заматереит", гулаг или респонер? Гулаг от правки строки респонера ни на грамм не "заматереит", ни после смерти существующих, никогда вообще. А вот респонер станет плодить неписей с изменёнными парамертами. Так что держи, Дружок, свой запал при себе, и запомни, что тема эта - не театр одного актёра, разглагольствующего о том, кому что стоит делать, а кому чего не не стоит, а для взаимопомощи моддеров. [x] Изменено 14 Сентября 2011 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 15 Сентября 2011 Artos, насчёт модератора - это ты прав, пускай он даст оценку действиям - и моим, и твоим, в том числе. А раз ты куратор темы, то ответь мне на вопрос (то есть, помоги разобраться). Цитирую: Слова о связи этого конкретного респавнера 'esc2_respawn_bandits_fabrika' упомянута именно из-за его закомментированной логики связанной с конкретным гулагом. И его близким расположением - ведь работа выбирается от ближайшей ...Прекрасно понятно (другим, а не тебе) что разработчиками этот респавнер предназначался именно для этого гулага. Хотя по сути, он также может служить и для других гулагов. Говоря о том, что "разработчиками этот респавнер предназначался именно для этого гулага", ты связывался с разработчиками по этому вопросу, или это твои домыслы? Поясняю: это критически важно для моей модификации игры, серьёзно. Не спрашивай "зачем" - просто ответь. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 19 Сентября 2011 abramcumner, цитирую: =VENOM=, если хочешь, чтобы респавнеры работали в соответствии со своими названиями, то прописывай им respawn_radius. Но не уверен что это хорошая идея - может получаться как на свалке у ангара - непрерывный поток НПЦ. Сейчас от момента спавна до прибытия на точку проходит достаточно много времени именно из-за того, что НПЦ далеко идти от респавнера. А если бы все было как говорит Artos, то не успел бы обшмонать бандитов на АТП, как туда уже новые входят Я, если честно, знаю об этом, и у меня в all.spawn уже давным-давно вообще нет тех респонеров, которые были в оригинальной игре (цель постановки вопроса была совсем в другом - и, в общем, достигнута ). Однако, с моей точки зрения, гораздо лучше оставить всё, как есть (т.е. оффлайновый респон всех NPC - и сталкеров, и... мутантов), иначе неудачно расположенные респонеры, подходящие по параметрам для смартов на текущей локации (достаточно далеко от "зачищаемого" смарта по respawn_radius) в некоторой степени лишат игру "симуляционной миграции" NPC между локациями. Что будет выглядеть не очень хорошо - как будто локации изолированы друг от друга. А насчёт "вербовщиков" - это, конечно, разработчику решать. Моё мнение - совсем уж сопливых новичков никто не ждёт в группировках - себе дороже обойдутся. Более логичным выглядело бы вербовать более опытных сталкеров, скажем, в Баре (тут, правда, есть проблема - в оригинальной игре Бар контролируют "долгари", как быть со "Свободой"?). Ну, а создать респонеры, срабатывающие по условию, проще простого. К примеру, у себя я сделал отслеживание продвижения игрока по локациям, и, по ходу игры - в соответствии с этими условиями - начинают включаться респонеры (чтобы они раньше положенного срока не плодили тех NPC, которые на ранних этапах не требуются). Ну, а некоторые, наоборот, отключаются. В значительной степни пришлось сделать это из-за АМК "оффлайн-алайфа", отключать который мне не хочется. Впрочем, можно чуточку "поколдовать", и сделать так, чтобы в зависимости от условий (функция, инфопоршн) один и тот же респонер будет порождать NPC селективно, а не по приоритетному выбору из нескольких секций, как сейчас. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 10 Марта 2016 В DLL-библиотеке оригинальной ТЧ просто-напросто нет функции teleport_npc (и подобных ей), поэтому ничего и не происходит. 1 1 Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 30 Марта 2016 Проверка инфопоршна в простейшем случае, ("infoportion" - это имя инфопоршна): if has_alife_info("infoportion") then --твой скрипт end Что касается подобранного ГГ предмета. Если идти тем путём, как написано у тебя, то в файле bind_stalker.script найди функцию: function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) end Так она выглядит в оригинальной ТЧ, у меня, по крайней мере. И замени её на что-то вроде: function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) if myscripts then myscripts.take_item(obj) end end Этим ты добавишь ссылку на свою функцию-обработчик взятия предмета. Можно, конечно, и прямо здесь вписать обработчик, но лучше хранить свои скрипты отдельно - потом проще будет найти, где чьи лапы и хвосты. Для этого нужно будет создать файл myscripts.script в папке с остальными скриптами, а уже в этом файле написать обработчик, примерно так: function take_item(item) if item:section() == "section_name" then --твой скрипт end end Здесь функция будет срабатывать на взятие ГГ предмета с определённым названием (section_name). 1 1 Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 31 Марта 2016 так? Если проверку на взятие предмета в инвентарь ГГ тебе нужно проверять только после получения инфопоршна "vzial", так. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 1 Апреля 2016 можно еще как нибудь так замутить: Конечно, можно. Только надо учитывать, что функция-обработчик взятия предмета в инвентарь будет срабатывать в биндере актёра только в момент пополнения инвентаря после получения инфопоршна. В твоём варианте обработка всего инвентаря актёра (хотя и неявно) будет обрабатываться непрерывно, как только будет получен инфопоршн. В общем-то некритично, конечно - кому как... Поделиться этим сообщением Ссылка на сообщение