S.T.A.L.K.E.R. 2: Новый трейлер <<<>>> S.T.A.L.K.E.R.: Global War <<<>>> Инструмент - теперь и для ТЧ!
-
Число публикаций
131 -
Регистрация
-
Последнее посещение
-
AMKoin
20 [Подарить AMKoin]
Сообщения опубликованы =VENOM=
-
-
Ясно - я просто никогда не интересовался подобными фишками, просто решил уточнить функционал.
-
И она срабатывает только при явном выбрасывании ствола из инвентаря ГГ
Хотелось бы уточнить - то есть на горячей клавише сброса "активного" ствола авторазряжалка не срабатывает?
-
Попробуй сделать так - в биндере актёра в колбэке on_item_drop огородить вызов "авторазряжалки":
if level.present() then --ваша авторазряжалка end
-
...
С уважением, но очень уж какие-то сложные у вас инструменты. Я предложу сделать так (по-минимуму, т.к. минимум - это ассемблер, а ассемблер - это всё моё):
Для спона заданного количества объектов на случайных координатах относительно центра заданной точки на текущей локации:
function spawn_random_object_on_random_position_on_current_level(lv_id, gv_id, radius, countball, tabmonster) local new_lv_id local pos local new_random_npc local new_mob for a=1, countball do local offset = vector():set(math.random()*6-3, 0, math.random()*6-3) offset:normalize() new_lv_id = level.vertex_in_direction(lv_id, offset, math.random(0, radius)) pos = level.vertex_position(new_lv_id) new_random_npc = tabmonster[math.random(table.getn(tabmonster))] new_mob = alife():create(new_random_npc, pos, new_lv_id, gv_id) end end
На входе функции:
[level_vertex_id центральной точки спона объектов], [game_vertex_id центральной точки спона объектов], [радиус, в котором будут спониться объекты относительно центральной точки], [количество создаваемых объектов], [таблица (ИМЕННО ТАБЛИЦА!) объектов, которые нужно создать]
Переменная new_mob, ясное дело, позволяет сразу же наполнить логикой только что созданный объект (если речь идёт об NPC, например).
Подсказывайте ошибки - я уже успел неслабо приложился к поллитровке, и она у меня сегодня не последняя. Точно не последняя. Успевайте.
Забыл один local удалить ...
-
Судя по логу вылета, возможно, есть какая-то ошибка в конструкции квеста. И ещё в ЛС загляни - там пара вопросов тоже имеется.
-
Да вроде всё в норме...
то в файле где инфопоршни лежат? или что иное?Да, сам новый инфопоршн "vzial" ты прописал в файле с какими-нибудь другими инфопоршнами, например, в info_portions.xml?
Ах, да, ещё - какого NPC ты создаёшь - вместо "generic_stalker"? И нужна ли ему логика, или это простой одноразовый враг-"болванчик"?
-
Нет, твои документы, судя по всему, созданы на основе "Документов из Припяти". А что за "спаун" с доками? Поподробнее бы...
-
Если предмет "tol" - уникальный, то необходимости в проверке инфопрошна нет, как и в самом инфопоршне тоже.
Пропущенный аргумент?
Кстати, функция спонит NPC по lv и gv актёра - если недалеко, это некритично (и если нет резких перепадов геометрии уровня, и если ГГ не стоит спиной впритирку к стене). К тому же, если понадобится бОльшее расстояние, придётся дополнительно вычислять lv точки спона.
но в том файле вот эта функция , вроде та что я заменил.Это функция относится к заданию на документы военных на Агропроме. Ты её не менял? Проверь ещё раз, всё ли правильно скопировал из примеров.
-
мне необходимо выполнить такую конструкцию
1. Открой файл bind_stalker. script, и замени стандартную функцию на эту - почти так же, как было описано выше:
function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) if neron_script then neron_script.check_item_and_spawn_npc(obj) end end
2. Создай в папке scripts\ файл neron_script.script - здесь будут храниться все (ну, или почти все) твои скрипты.
3. Скопируй в этот файл эту функцию:
function check_item_and_spawn_npc(item) if item:section() == "tol" then local actor = db.actor local dist = -3 local pos = actor:position() local dir = actor:direction() pos = pos:add(dir:mul(dist)) local npc = alife():create("generic_stalker", pos, actor:level_vertex_id(), actor:game_vertex_id()) actor:give_info_portion("vzial") end end
4. Вместо "generic_stalker" вставь того NPC, которого ты хочешь создать за спиной у ГГ.
Значение "-3" - это дистанция (в игровых метрах), на которой NPC будет создан за спиной у ГГ - её можно изменять.
Инфопрошн "vzial" тоже будет получен - правда, я не совсем понимаю, зачем это нужно. Если только для каких-то последующих проверок, событий и т.д...
В результате, как только ГГ подберёт предмет "tol", за спиной, на расстоянии 3-х метров у него возникнет NPC, и будет получен инфопоршн "vzial".
Если что-то пойдёт не так, или что-то непонятно, уточняй.
-
но ведь функции ... и ... не активируются диалогами, как их запустить?
Любую функцию можно вызвать из диалога.
Не совсем понятно: проверка наличия предмета в луте ГГ должна выполняться в диалоге (например, при получении предмета от NPC)? Или ГГ может просто подобрать предмет (взять из инвенторибокса -тайника, например)? В первом случае наличие предмета в луте ГГ легко проверить прямо в диалоге - прекондишном ветки диалога, с последующим получением инфопоршна и споном NPC. Во втором - как было описано выше, проверка при взятии предмета в лут ГГ с получением инфопоршна, после чего хоть в диалоге, хоть в активном таске можно спокойно заспонить NPC. Я подозреваю, что можно вообще обойтись без выдачи инфопоршна - если только он не нужен для каких-то дополнительных проверок?
-
можно еще как нибудь так замутить:
Конечно, можно. Только надо учитывать, что функция-обработчик взятия предмета в инвентарь будет срабатывать в биндере актёра только в момент пополнения инвентаря после получения инфопоршна. В твоём варианте обработка всего инвентаря актёра (хотя и неявно) будет обрабатываться непрерывно, как только будет получен инфопоршн. В общем-то некритично, конечно - кому как...
-
так?
Если проверку на взятие предмета в инвентарь ГГ тебе нужно проверять только после получения инфопоршна "vzial", так.
-
И ещё опять же по поводу костров: заметил что к примеру на локации Припять нет освещения окружающих объектов и территорий от косторов, Исправить этот недочёт можно только через SDK?
Можно и без SDK - я добавлял освещение для костров Припяти, банально редактируя all.spawn. Но получил в результате довольно заметное "подтормаживание" в Припяти в процессе игры. Всё же нагрузка - источники света, да ещё и анимацией. Поэтому плюнул, и вернул всё в исходное состояние.
-
Проверка инфопоршна в простейшем случае, ("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 thenmyscripts.take_item(obj)endendЭтим ты добавишь ссылку на свою функцию-обработчик взятия предмета. Можно, конечно, и прямо здесь вписать обработчик, но лучше хранить свои скрипты отдельно - потом проще будет найти, где чьи лапы и хвосты. Для этого нужно будет создать файл myscripts.script в папке с остальными скриптами, а уже в этом файле написать обработчик, примерно так:
function take_item(item)if item:section() == "section_name" then--твой скриптendendЗдесь функция будет срабатывать на взятие ГГ предмета с определённым названием (section_name).
- 1
- 1
-
В DLL-библиотеке оригинальной ТЧ просто-напросто нет функции teleport_npc (и подобных ей), поэтому ничего и не происходит.
- 1
- 1
-
Отвечу сам себе - нашёл, установил и подключил мини-патчик для UT - под Direct10. И всё заработало, как в старые добрые времена! В отличие от Сталкера ...Кстати, запускаю старенький UT - на динамическом освещении игра тоже идёт с рывками. Вот такие пироги... -
К сожалению, ничего не помогло ... Видимо, проблема действительно в в самой видеокарте (утилиты ни значительного нагрева, ни высокой нагрузки во время игры не показывают). Кстати, запускаю старенький UT - на динамическом освещении игра тоже идёт с рывками. Вот такие пироги...
-
Здравствуйте!
В параллельной теме "Срочно нужна помощь" задавал вопрос по такой проблеме:
Версии сталкера ставил разные, и запускал и под Vista, и под 7-й (и 32 и 64 бит) - картина аналогичная. Раз уж дело касается "семёрки", задам ещё раз вопрос здесь: кто-нибудь сталкивался с аналогичной проблемой? И если да, есть ли решение (без учёта замены компьютера, естественно )?
-
abramcumner, цитирую:
=VENOM=,если хочешь, чтобы респавнеры работали в соответствии со своими названиями, то прописывай им respawn_radius. Но не уверен что это хорошая идея - может получаться как на свалке у ангара - непрерывный поток НПЦ. Сейчас от момента спавна до прибытия на точку проходит достаточно много времени именно из-за того, что НПЦ далеко идти от респавнера. А если бы все было как говорит Artos, то не успел бы обшмонать бандитов на АТП, как туда уже новые входят
Я, если честно, знаю об этом, и у меня в all.spawn уже давным-давно вообще нет тех респонеров, которые были в оригинальной игре (цель постановки вопроса была совсем в другом - и, в общем, достигнута ). Однако, с моей точки зрения, гораздо лучше оставить всё, как есть (т.е. оффлайновый респон всех NPC - и сталкеров, и... мутантов), иначе неудачно расположенные респонеры, подходящие по параметрам для смартов на текущей локации (достаточно далеко от "зачищаемого" смарта по respawn_radius) в некоторой степени лишат игру "симуляционной миграции" NPC между локациями. Что будет выглядеть не очень хорошо - как будто локации изолированы друг от друга. А насчёт "вербовщиков" - это, конечно, разработчику решать. Моё мнение - совсем уж сопливых новичков никто не ждёт в группировках - себе дороже обойдутся. Более логичным выглядело бы вербовать более опытных сталкеров, скажем, в Баре (тут, правда, есть проблема - в оригинальной игре Бар контролируют "долгари", как быть со "Свободой"?). Ну, а создать респонеры, срабатывающие по условию, проще простого. К примеру, у себя я сделал отслеживание продвижения игрока по локациям, и, по ходу игры - в соответствии с этими условиями - начинают включаться респонеры (чтобы они раньше положенного срока не плодили тех NPC, которые на ранних этапах не требуются). Ну, а некоторые, наоборот, отключаются. В значительной степни пришлось сделать это из-за АМК "оффлайн-алайфа", отключать который мне не хочется. Впрочем, можно чуточку "поколдовать", и сделать так, чтобы в зависимости от условий (функция, инфопоршн) один и тот же респонер будет порождать NPC селективно, а не по приоритетному выбору из нескольких секций, как сейчас.
-
weas, попробуй в секции твоей аномалии прописать:
postprocess = postprocess_psy_zone
А ты сам пробовал? В оригинальной игре (ТЧ) такая секция [postprocess_psy_zone] отсутствует.
--/ Artos
-
Artos, насчёт модератора - это ты прав, пускай он даст оценку действиям - и моим, и твоим, в том числе.
А раз ты куратор темы, то ответь мне на вопрос (то есть, помоги разобраться).
Цитирую:
Слова о связи этого конкретного респавнера 'esc2_respawn_bandits_fabrika' упомянута именно из-за его закомментированной логики связанной с конкретным гулагом. И его близким расположением - ведь работа выбирается от ближайшей...Прекрасно понятно (другим, а не тебе) что разработчиками этот респавнер предназначался именно для этого гулага. Хотя по сути, он также может служить и для других гулагов.
Говоря о том, что "разработчиками этот респавнер предназначался именно для этого гулага", ты связывался с разработчиками по этому вопросу, или это твои домыслы?
Поясняю: это критически важно для моей модификации игры, серьёзно. Не спрашивай "зачем" - просто ответь.
-
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]
-
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). Никакие "мастера", заспоненные каким-то "назначенным именно для этого гулага" респонером под гулаг в смарте браться не будут. Чтобы изменить статус-кво, см. мой предыдущий пост - там всё для этого есть.
-
лнкс, надо было выложить свою изменённую секцию, чтобы оценить, что к чему. В общем случае, если тебе нужно, чтобы на Кордоне спонились мастера-бандосы, сделай так:
[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".
[SoC] Ковыряемся в файлах
в Скрипты / конфиги / движок
Опубликовано
Просто ищем сталкера по имени (не character_name, а именно name!), и снимаем с него метку (точку на (мини)карте):