сталкер тень чернобыля мод на респаун нпс

SoC. Respawn

Материал из S.T.A.L.K.E.R. Inside Wiki

Содержание

Respawn NPC.

Для создания респавна NPC, понадобится два файла: all.spawn и spawn_section.ltx.
Это минимальный набор. Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml.

1. В all.spawn создаём секцию респавнера:

Если используется программа XrSpawner, то копируем любую секцию «respawn»; меняем имя объекта, координаты, и в окошке «скрипт» прописываем:

Где:
respawn_section = id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется.

max_count = колличество респавн-запросов за период времени, пока ГГ находится на локации. При переходе на другую локацию, счётчик max_count сбрасывается. (ставить не обязательно)

min_count = минимальное колличество нпс, для экстренного респавна. (ставить не обязательно)

max_spawn = колличество нпс за один цикл респавна.

idle_spawn = тип спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium.

conditions =Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так:

conditions = <+инфо>100, 0 где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.

2. В файле spawn_section.ltx, создаём респавн-секции:

Где:
esc_urody_respawn_1 id респавн-секции.
sim_urody_novice и sim_urody_regular классы профайлов нпс.
novice и regular ранги нпс.
bandit группировка нпс.

3. В файле npc_profile.xml регистрируем классы sim_urody_regular и sim_urody_novice

4. Создаём профили, в файле character_desc_simulation.xml, с классами sim_urody_regular и sim_urody_novice и группировкой bandit.

Respawn монстров.

Обязательные условия респавна:

1. На локации обязательно должен быть хоть один гулаг для респавнящихся NPC и мутантов, так как количество NPC для респавна, ориентируется по доступным местам в гулагах.

2. Респавн производится, только если под гулагами есть доступные работы.

3. На каждой локации, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле misc\smart_terrain_presets.ltx. Чтобы сделать возможным респавн неписей, не предусмотренных на данной локации. Надо в указанном файле, в секции нужной локации, дописать требуемые типы неписей.

Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора:

Функция принудительного вызова респавна, находится в файле xr_effects.script.

Respawn предметов.

Респавн предметов в инвентарных ящиках, несколько отличается от способа респавна NPC.

1. Первое, что нам нужно сделать, это создать инвентарный ящик в файле «all.spawn»:

2. Затем, в файле game_story_id.ltx регистрируем story_id ящика. (выбираем любое свободное число).

3. Создаём респавнер в файле all.spawn. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера:

idle_spawn = тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).

item_spawn = (true\false) возможность включения и отключения респавна. Можно задавать условия, например инфопоршнем или функцией (разумеется прописанной в xr_conditions.script).

max_count = количество респав-циклов за определённый период времени. (Пока ГГ находится на локации. После перехода ГГ на другую локацию, счётчик сбрасывается).

4. Создаём вызов респавна. Обычно вызов производится из smart_terrain. В «custom_data» любого подходящего smart_terrain, под секцией [smart_terrain], вписываем вызов респавна:

И респавн будет производиться, при каждом пополнении нпс, под данным смартом.

Источник

Сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс сталкер тень чернобыля мод на респаун нпс сталкер тень чернобыля мод на респаун нпс

Модератор форума: FanG, Аdmin, FantomICW, Overfirst
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [SoC] Урок по созданию respawn-ра (В этом уроке, расказаны способы создания респавнеров для нпс)

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

Статус: сталкер тень чернобыля мод на респаун нпс
Опытный:сталкер тень чернобыля мод на респаун нпс
Сообщений:2269
Награды:1
Регистрация:17.01.2012

И так, приступим:
Первое, что необходимо запомнить:
Респавнер срабатывает, при условиях:
1) Есть свободная работа в смарте.
2) Секции респавнера, совпадают с секциями смарта.
3) Соблюдены условия работы респавнера: conditions

Для начала создадим смарт, с одной работай.
В папку ACDC\all создадим alife_l01_escape_test.ltx и way_l01_escape_test.ltx
Сделаем это для удобства, при запаковке, всё добавленное окажется в файлах локации, куда это добавляется.
В acdc\all\all.ltx добавим alife_l01_escape_test.ltx, и way_l01_escape_test.ltx

; cse_alife_object properties
game_vertex_id = 72 ; GV
distance = 3
level_vertex_id = 119229 ; LV
object_flags = 0xffffff3e
custom_data = ; имя смарта
cond = 100 ; тут указывается условии существования смарта.
capacity = 3 ; население смарта
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1

; cse_alife_space_restrictor properties
restrictor_type = 0

; cse_alife_object properties
game_vertex_id = 72
distance = 3
level_vertex_id = 125542
object_flags = 0xffffffbf
custom_data = ; тут укажем к какому смрту принадлежит эта зверушка.
END

; cse_visual properties
visual_name = monsters\mutant_boar\mutant_boar

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 2
dynamic_out_restrictions =
dynamic_in_restrictions =

[logic@esc_boar_weak_smart_0000]
active = mob_home@esc_boar_weak_smart_0000

[mob_home@esc_boar_weak_smart_0000]
path_home = home ; ТУТ МЫ УКАЗЫВАЕМ ИМЯ ПУТИ, БЕЗ ИМЕНИ СМААРТА. esc_boar_weak_smart_ home
home_min_radius = 20
home_max_radius = 30

if type == «esc_boar_weak_smart» then
t = < section = "logic@esc_boar_weak_smart_0000«,
idle = 0,
prior = 5, state = <0>,
in_rest = «», out_rest = «»
>
table.insert(sj, t)
end
end

function load_states(gname, type)

if type == «esc_boar_weak_smart» then
return function(gulag)
return 0
end
end
end

function load_ltx(gname, type)
return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
end

function checkMonster(npc_community, gulag_type)

if gulag_type == «esc_boar_weak_smart» then
return npc_community == «boar»
end

version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 70
level_vertex_id = 104106
object_flags = 0xffffff3e
custom_data = ; секции респавна
max_spawn = 1 ; Максимальное количиство мобов за один респавн.
idle_spawn = often ; тип респавнера, имеется в виду скорость срабатывания.
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 3.35619974136353

; cse_alife_space_restrictor properties
restrictor_type = 0

; cse_alife_object properties
game_vertex_id = 8
level_vertex_id = 9843
object_flags = 0xffffff3e
custom_data = ; ф-ия =gulag_empty(name_smart) проверяет, пуст ли смарт.
; ф-ия =respawner_spawn(name_smart) вызывает принудительный респавн

[sr_idle@esc_boar_weak_restrictor_out]
on_actor_outside = sr_idle@esc_boar_weak_restrictor_start
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 3.35619974136353

; cse_alife_space_restrictor properties
restrictor_type = 3

сталкер тень чернобыля мод на респаун нпс

Сделайте смарт для 3 кабанов, и респавнер для этого смарта.

И заспавнить 3 нпс, под мостом, рядом с вагончиком.
Координаты:

Создать для этих нпс три логики walker. Имена путей, давайте, с учётом того, что потом эти нпс будут под смартом. Повторюсь:
N.B! Имя точки пути должны начинаться с название смарта.
Координаты:
way_1

и три kmap
координаты:
way_1_task

Протестируйте работу логики, на созданных нпс. Это поможет избежать ошибок в следующем уроке.

П.С. Следующий урок выложу через пару дней, что бы хватило время на «домашнее задание», если конечно он нужен.
Предпологается, что если вы задались вопросом о респавне, то вы уже имеете представление о работе смартов и логики. И знакомы с структурой папок и файлов.

сталкер тень чернобыля мод на респаун нпс сталкер тень чернобыля мод на респаун нпс

Статус: сталкер тень чернобыля мод на респаун нпс
Сообщений:666
Регистрация:17.01.2012

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

Статус: сталкер тень чернобыля мод на респаун нпс
Зевака:сталкер тень чернобыля мод на респаун нпс
Сообщений:3
Награды:0
Регистрация:21.06.2013

Твоя система провальна, причем очень. Нужно создавать очень много рестрикторов, если ты очень много таких гулагов делать будешь. И не факт что респавн будет срабатывать, т.к. куда пойдет игрок предугадать невозможно.

У меня своя система респавнеров уникальных гулагов, а так же система «псведосмартов», которая работает на одном таймере. Функции сами понимают куда и кого и в каком количестве им нужно доспавнить. Функционал в целом нормальный у моей функции, можно указывать логику, аут и ин рестрикторы, свои списки секций чуваков/зверей(если нужно). Получение количества для доспавнивания в смарт/псведосмарт по трем параметрам. В зависимости от уровня выбираются секции, если брать оригинал то это weak normal strong. На паре локаций довел жизнь до типа ЧН. Так же сейчас в доработке система контроля за всем живым в зоне, она обеспечивает нормальное наполнение локаций => геймплей.

В твоем подходе куча подводных камней, и слишком долгая реализация. В целом не советовал бы такое использовать.

Источник

S.T.A.L.K.E.R.: Shadow of Chernobyl: Чит-Мод/Cheat-Mode (CheatItemsMenu_ShoC_v3) [Для «чистой» версии]

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

Спавн-меню для S.T.A.L.K.E.R.: Shadow of Chernobyl.

Совместимо так же с Чистым небом и Зовом припяти.

Легко адаптируется к большинству модов.

Спавн предметов, в том числе и некоторых квестовых, некоторые предметы не добавлял, так как считаю, что нужно что-то и самому поискать, но таких не много.

Спавн монстров: стандартные и некоторые вырезанные.

Спавн нпс практически всех.

Присутствует возможность изменять показатели здоровья, радиации, пси-здоровья, усталости.

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

или проще говоря «Повелитель Зоны»

сталкер тень чернобыля мод на респаун нпс

vovabelyi Да

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

нет!повелитель зоны круче!

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

nesterenko92 склей с модом DPWP а проще говоря DP Weapon Pack

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

35house нажал и нифига

сталкер тень чернобыля мод на респаун нпс

Поставил на чистую Steam-лицензию. Версия 1.0006. Всё работает! И даже не пришлось новую игру начинать. Однозначно +100500! P.S.: как уже было сказано, для активации спавм-меню, нужно нажать Esc и только потом, из меню-паузы, жать F1. Далее всё предельно понятно и ясно.

сталкер тень чернобыля мод на респаун нпс

нажимаю f1-никакого эффекта. Почему?

сталкер тень чернобыля мод на респаун нпс

сталкер тень чернобыля мод на респаун нпс

А он потянет народною солянку?

сталкер тень чернобыля мод на респаун нпс

Makc Rud Да адаптация такая же как я описал для ЗП( комент выше). Список предметов (как их нужно в скрипт добавлять) есть здесь http://stalker-gamers.ru/forum/23-390-1

сталкер тень чернобыля мод на респаун нпс

У меня нет папки gamedata и я скинул папку из архива в папку с игрой.В игре нажал f1 и менюшка не появилась.

Источник

Спавн через скрипт

В скриптах есть одна единственная функция, отвечающая за спавн объектов:
alife():create(section,position,levelvertex,gamevertex)

Строго говоря, их две: create create_ammo но различия между ними не существенны. Imp 22:45, 23 июля 2007 (EEST)

Дальше сложнее, так как сам толком сформулировать не могу.

Начнем от простого к сложному. На каждом уровне много объектов, все объекты состоят из полигонов, у каждого полигона есть вершины – вертексы.

Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex в четвертом параметре Например:
db.actor:game_vertex()

Итак, чтобы, например, заспавнить болт под ногами актора, пишем:
alife():create(«bolt»,db.actor():position(),1,db.actor:game_vertex())

Пример (спавним артефакт Медуза в инвентаре у актора):
alife():create(«af_medusa», db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())

Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.

Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!

Итак, мы поймали нашего киллера по ID.

Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа «NPC», а не с серверными объектами.
Практика (часть 1)

1. Чтобы не повторяться в описании создания нового квеста, просто изучите статью по созданию квестов от Fr3nzy – лучшей статьи на эту тему я просто не видел 🙂 Мы просто свяжем все воедино и научимся спавнить объекты из скрипта.

Почему предпочтительнее делать спавн скриптом, а не через тот же xrSpawner? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – она делает спавн через файл all.spawn, что приводит к:
Невозможности совместить два мода, такой спавн использующих
Необходимости каждый раз начинать новую игру

При спавне через скрипт ситуация иная: в подавляющем большинстве случаев, ранее сохраненные игры будут работать, что не может не радовать 🙂

Итак, определимся с квестом.

Задача: после разговора с Сидоровичем спавним зомби на территории фабрики в первой локации. Для того, чтобы не повредить оригинальный сюжет игры, задание будет выдаваться после прохождения квеста с флешкой Шустрого, так как появись там зомби одновременно с бандитами и Шустрым. я думаю, исход боя предрешен 🙂

Реализация: Постараюсь описать все действия максимально подробно, буквально по шагам. Первым делом запустите игру 🙂

В консоли введите команду:
rs_stats on или rs_stats 1

Тем самым мы включаем вывод информации на экран. Далее вводим еще одну команду:
demo_record 1

Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).

Добавим пятую модель.

Для этого в конце файла создадим секцию:
[zombie_ghost]:zombie_strong

Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.

Пишем дальше:
$spawn = «monsters\zombies\zombie_ghost»
visual = monsters\zombi\zombi_1_ghost

Все. Сохраняем изменения и закрываем файл.

2. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script.

При написании статьи использовался оригинальный скрипт zombie_story.script из horror-mod’а. Концепция спавна перенесена практически без изменений, поэтому на авторство этого способа спавна я никоим образом не претендую 🙂

Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:
local zombie_types =

Все. Сохраняем и закрываем файл.

Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование.

Добавим в local killCountProps к монстрам строчку:
zombie_weak = 1, zombie_normal = 2, zombie_str 3

В local sect_alias строчку:
zombie_weak = «zombie_weak», zombie_normal = «zombie_normal», zombie_str «zombie_strong»

А ниже в monster_classes строчку:
[clsid.zombie_s ] = «zombie»

В функцию getNpcType(npc) добавляем конструкцию:
elseif npc:character_community() == «zombie» then
community = «zombie»

Сохраняем изменения и закрываем файл.

Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.
Expression : fatal error
Function : CInifile::r_string
File : D:\xray-svn\xrCore\Xr_ini.cpp
Line : 351
Description :
Arguments : Can’t find variable icon in [zombie_weak]

Все верно – игра не знает какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:
Если дружите с Фотошопом, отредактировать этот файл (нарисовать, добавить иконки);
Взять готовый из любого мода, естественно, с разрешения авторов мода. Сейчас мы пропустим данный аспект и присвоим нашим зомби иконки контролера 🙂

Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр
icon = ui_npc_monster_kontroler

Все. Вылетов не будет.

3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример статью по созданию диалогов от BAC9-FLCL.

Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:

escape_trader_talk_info_999
7770
9991
9992
9993
9994
9995
9996

escape_trader_talk_info_99922
9996
9995

escape_trader_talk_info_3121
9996
9995

escape_trader_talk_info_3131
9996
9995

escape_trader_talk_info_41
9996
9995

escape_trader_talk_info_7771
7772
7773

escape_trader_talk_info_7779
9996
9995

escape_trader_talk_info_7777
esc_zombie.zombie_story_1
9996
9995

escape_trader_talk_info_51
9996
9995

И также связанный с ним файл stable_dialogs_escape.xml. В самом начале файла пишем следующее:

Происшествий никаких не было?

Да я как-то не собирался в ту сторону.

Ну, смотри сам, все равно будь осторожен.

Ага. Сходи, проветрись. Потом зайдешь, расскажешь, что там и как.

Здесь проход воспрещён, сталкер.

Все. Можно запускать игру, идти на Кордон, после разговора с Сидоровичем, в зависимости от выбранного Меченным решения, бежим на фабрику и … смотрим сами 🙂
Готовые файлы примера
Spawn Lib

Продолжение следует…
Практика (часть 2)

Файл модели до редактирования

Файл модели после редактирования

На скринах видно, что мы просто изменили для этой модели путь к текстуре. Все. Без использования 3D-редакторов и затраты кучи времени на обработку модели в них, мы получили абсолютно новую (на внешний вид) модель. 🙂

5. Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:
[zombie_old]:zombie_normal
$spawn = «monsters\zombies\zombie_old»
visual = monsters\zombi\zombi_3

в файле esc_zombie.script изменяем массив в первой строке:
local zombie_types = <"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal",
«zombie_old», «zombie_ghost»>

В функции spawn_zombies изменяем строку спавна:
alife():create(zombie_types[math.random(6)],new_pos,
db.actor:level_vertex_id(),db.actor:game_vertex_id())

в функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):
spawn_zombies( spawn_point, 12 )

Всё. Сохраняем и закрываем.

6. Копируем в папку gamedata\config\gameplay\ файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:

И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:

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

Воздействие Выжигателя мозгов полностью разрушает структуру личности,
оставляя только телесную оболочку.\n\n Побродив немного по Зоне, лишённые разума тела
начинают превращаться в настоящих зомби. Из рефлексов у них остаются лишь самые примитивные,
оружие и экипировка скоро приходят в негодность. В результате зомби становятся собой ни чем
иным, как медлительными полутрупами, которых наличествуют лишь два эффективных раздражителя:
еда и сон. Зомби совершенно неразборчивы в выборе пищи и питья, поэтому их тела буквально
пропитаны радиацией и токсинами. Как правило, эти существа бесцельно бродят по Зоне или,
словно трупы, валяются внутри заброшенных построек. Однако, лишь только зомби почует близкое
присутствие живого человека, он сразу же пытается атаковать. Умудрённые опытом сталкеры
стараются обходить эти неуклюжие опустошённые оболочки.

Копируем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:

Сохраняем и закрываем.

Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.

Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку
icon = ui_npc_monster_kontroler

В секцию [zombie_ghost] добавьте строку:
icon = ui_npc_monster_zombieg

Сохраняйте изменения. Всё.

Вот готовые файлы примера. Удачи и спасибо за внимание 🙂
Спавн NPC

Эта часть статьи написана Arhet и создана на примере того, как в SRP Mod были созданы NPC группировки «Грех».

Начнем с character_desc_escape.xml. Описание что значит каждая строка писать не буду, так как все до меня уже сделано.

Тут создадим нового персонажа:

[spawn] \n
wpn_dark_colt1911 \n
ammo_11.43x23_hydro \n
#include «gameplay\character_items.xml» \n
#include «gameplay\character_drugs.xml» \n
#include «gameplay\character_food.xml»

Впишем наш код после какого-нибудь

Теперь идем в npc_profile.xml и туда вгоняем:

Теперь надо заняться spawn_sections.ltx. Скрипт будет «брать NPC» как раз из этого файла. Пишем туда:
[esc_dark_stalker_1]:stalker – имя секции для скрипта..
$spawn = «respawn\esc_dark_stalker_1»
character_profile = esc_dark_stalker_1 – ссылка на описание нашего NPC
spec_rank = regular – спец ранг
community = dark_stalker – группировка.

Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *