Работа с all.spawn — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
OlegatoR (обсуждение | вклад) м (Откат правок 5.228.2.203 (обсуждение) к версии FantomICW) |
|||
(не показаны 11 промежуточные версии 4 участников) | |||
Строка 3: | Строка 3: | ||
Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во | Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во | ||
всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет | всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет | ||
− | нужен ActivePerl (нужная версия входит в архив)Качаем acdc для ЗП [http://narod.ru/disk/17377026000/ACDC%20Cop.rar.html здесь].После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали). Распакуйте acdc и скопируйте в эту папку свой all.spawn. Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки: | + | нужен ActivePerl (адрес откуда можно скачать последнюю версию, для работы подойдёт любая. http://www.activestate.com/activeperl/downloads (дС)) (нужная версия входит в архив)Качаем acdc для ЗП [http://narod.ru/disk/17377026000/ACDC%20Cop.rar.html здесь].После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали)(от "GE" - файлы ACDC должны лежать в папке "C:\Perl\bin" если вы не изменяли стандартного пути установки файлов программы Active Perl). Распакуйте acdc и скопируйте в эту папку свой all.spawn (от "GE" - если вы работаете с файлами ТЧ то не забудьте поместить туда-же и файл game.graph , если вы работаете с файлами модов на ТЧ то дополнительно перенести и папку config). Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки: |
perl acdccop.pl -d all.spawn | perl acdccop.pl -d all.spawn | ||
pause | pause | ||
+ | (от "GE" - при работе с утилитами от Бардака .bat файл выглядит так: | ||
− | + | del sections.ini | |
− | + | perl universal_acdc.pl -d all.spawn | |
+ | pause | ||
+ | при работе с файлами модов надо включить в .bat сканирование конфигураций: | ||
+ | |||
+ | del sections.ini | ||
+ | perl universal_acdc.pl -d all.spawn -out all -scan config/ -nofatal | ||
+ | pause | ||
+ | |||
+ | в ином случае не чего не получится. Описание подходит для де компиляции all.spawn ТЧ и модов , работоспособность .bat с ЧН и ЗП не проверял.) | ||
+ | |||
+ | И сохраните под именем "decompile.bat" Запускайте батник. Через некоторое время появятся .ltx файлы. | ||
+ | Все, ол спавн распакован и ждет шаманства над собой :) (от "GE" - при работе ACDC от бардака в папке C:\Perl\bin по мимо отсальной кучи файлов "pl и прочих" + наших файлов ACDC появятся файлы: sections.ini, папка all с .ltx всех локаций и guids.) | ||
− | == Структура файлов == | + | == Структура файлов == |
− | Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы, в которых содержаться секции спавна. Файлы типа way_ - это и есть "вэй". Сквады, логика и прочая дребедень. Трогать мы их не будем. | + | Я прошу прощения у автора этой статьи, но так как он мало разбирается в модостроении или стесняется писать правильно, счёл возможным внести некоторые правки в его статью. Правки буду вносить в скобках с указанием "дС"(дядяСаша) |
+ | Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы(не основных файлов нет! каждый файл выполняет свою функцию(дС)), в которых содержаться секции спавна(Название, координаты, характеристики, логика или указания на логику объектов которые спавнятся в игре с помощью all.spawn(дС)) . Файлы типа way_ - это и есть "вэй". Сквады, логика и прочая дребедень(=Категорически неверно, ни каких сквадов и логики здесь нет. Здесь находятся только координаты точек путей по которым движутся НПС, монстры, техника, координаты костров, и других точек и зон требующихся для симуляции жизни в игре(дС)). Трогать мы их не будем. | ||
Откроем любой alife_ файл и увидим там много секций спавна. Вот одна из них: | Откроем любой alife_ файл и увидим там много секций спавна. Вот одна из них: | ||
Строка 34: | Строка 47: | ||
А теперь подробнее | А теперь подробнее | ||
− | [0] - уникальный "id", то бишь номер секции | + | [0] - уникальный "id", то бишь номер секции(ID в игре сталкер - совершенно другое и ни какого отношения |
+ | к номеру секции не имеет. Секция - просто номер который не должен повторятся(дС)) | ||
; cse_abstract properties - комментарий | ; cse_abstract properties - комментарий | ||
section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ) | section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ) | ||
− | name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать | + | name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать(Можно, но лучше |
+ | придерживаться правил наименования чтобы не запутаться при большом количестве объектов(дС)) | ||
position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн | position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн | ||
+ | (Уточнение: центральная точка плоскости спавна на горизонтальной плоскости локации, почему см. 3 строчки ниже(дС)) | ||
direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 - направление. В какую сторону "смотрит" обьект. | direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 - направление. В какую сторону "смотрит" обьект. | ||
; cse_alife_object properties - комментарий | ; cse_alife_object properties - комментарий | ||
game_vertex_id = 0 - вертикс. | game_vertex_id = 0 - вертикс. | ||
− | distance = 0 | + | distance = 0 (радиус-максимальное расстояние от центральной точки спавна на котором может заспавнится |
+ | предмет. Расстояние будет выбираться произвольно в пределах указанного радиуса. | ||
+ | Теретически можно назначить радиус на всю локацию, НО! я не даром говорил про воображаемую | ||
+ | плоскость, надеюсь геометрию уже изучали -)), если ваша плоскость пойдёт через бугор то | ||
+ | НПС может заспавнится под землёй и соответственно в игре участвовать не сможет, если над | ||
+ | ямой то предмет зависнет в воздухе, есть ещё аномалии и предметы внутри которых может | ||
+ | заспавнится ваш объект, поэтому радиус нужно выбирать в разумных пределах(дС)) | ||
level_vertex_id = 293223 - тоже вертикс. (зачем они объяснять не буду) | level_vertex_id = 293223 - тоже вертикс. (зачем они объяснять не буду) | ||
object_flags = 0xffffffba - флаги обьекта. тоже рассматривать не будем | object_flags = 0xffffffba - флаги обьекта. тоже рассматривать не будем | ||
; cse_visual properties - комментарий | ; cse_visual properties - комментарий | ||
− | visual_name = meshes\brkbl#0 - визуал. | + | visual_name = meshes\brkbl#0 - визуал.(папка meshes не указывается, а указывается полный путь в папке |
+ | "meshes" например actors\aziat\aziat_bandit_veteran, папка "actors" соответственно должна находится в папке "meshes"(дС)) | ||
; cse_alife_object_breakable properties - комментарий. | ; cse_alife_object_breakable properties - комментарий. | ||
health = 1 - здоровье. | health = 1 - здоровье. | ||
Строка 64: | Строка 87: | ||
− | [20927] - уникальный номер секции | + | [20927] - уникальный номер секции. (Это просто порядковый номер секции, после распаковки all.spawn |
+ | открваете последний файл Alife_ в списке для ЗП это alife_zaton.ltx и смотрите № последней | ||
+ | секции, дальше уже можете назначать свой. Свою секцию можете вписывать в конце любого | ||
+ | файла alife_ только со своим номером. При запаковке, номера будут перебиты соответственно | ||
+ | порядковым номерам начиная от первой секции первого файла alife_. Единственное условие | ||
+ | порядковые номера не должны быть одинаковыми не сможете запаковать.(дС)) | ||
+ | |||
; cse_abstract properties - коментарий :) | ; cse_abstract properties - коментарий :) | ||
section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно. | section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно. | ||
− | name = marsh_koster_stalker - имя. я использую имя профиля, которого вы создавали при создании нпс | + | name = marsh_koster_stalker - имя. я использую имя профиля, которого вы создавали при создании нпс (категорическая глупость, не надо путать себя и машину. |
+ | Правило №1 при спавне новых объектов первые 3 буквы должны содержать название локации mar_ дальше уже пишите название желательно места и затем уже | ||
+ | название сталкера и последним порядковый номер например: mar_cerkov_stalk_1, так как указал автор статьи можно заспавнить, но если сталкеров будет | ||
+ | много и на разных локациях как это есть в больших модах потом при необходимости внесения изменений найти будет очень тяжело. Поэтому лучше учится | ||
+ | сразу правильно делать(дС)) | ||
position = -150.17852783203,0.63608288764954,-293.19580078125 - координаты. | position = -150.17852783203,0.63608288764954,-293.19580078125 - координаты. | ||
direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 - направление. Куда сталкер будет смотреть. | direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 - направление. Куда сталкер будет смотреть. | ||
; cse_alife_trader_abstract properties - | ; cse_alife_trader_abstract properties - | ||
− | money = 5000 - деньги ) | + | money = 5000 - деньги ) (нужны для продажи сталкеру предметов находящихся у ГГ, если это соответствует условиям игры(дС)) |
character_profile = marsh_koster_stalker - профиль, который вы указали при создании нпс. Вот тут нужно указывать его | character_profile = marsh_koster_stalker - профиль, который вы указали при создании нпс. Вот тут нужно указывать его | ||
; cse_alife_object properties | ; cse_alife_object properties | ||
game_vertex_id = 934 - вертикс локации | game_vertex_id = 934 - вертикс локации | ||
− | distance = 4.90000009536743 - Расстояние до gvid | + | distance = 4.90000009536743 - Расстояние до gvid (Опять какой-то бред, причём тут givd. Для чего нужна дистанция, При спавне например группы сталкеров |
+ | 5 человек не нужно для каждого устанавливать свои координаты спавна у всех можно делать одинаковые, но при наличии радиуса, движок их сам | ||
+ | раскидает, а если радиус будет 0 все будут спавнится в одной точке, резко возрастает нагрузка на память игра начинает притормаживать, и иногда, | ||
+ | я думаю многие встречались с этим, какой-то НПС просто сразу гибнет на месте спавна, почему это происходит не знаю! просто факт!(дС)) | ||
+ | |||
level_vertex_id = 1418 - вертикс локации ) | level_vertex_id = 1418 - вертикс локации ) | ||
object_flags = 0xffffffbf | object_flags = 0xffffffbf | ||
custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика. | custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика. | ||
− | cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты | + | cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты (уточняю папка "scripts" которая находится в папке "config", потому, что в папке gamedata тоже есть папка "scripts" не путать!(дС)) |
[smart_terrains] - смарт террайны ( не рассматриваться) | [smart_terrains] - смарт террайны ( не рассматриваться) | ||
END - окончание кастом даты | END - окончание кастом даты | ||
Строка 87: | Строка 124: | ||
g_group = 5 | g_group = 5 | ||
health = 1 | health = 1 | ||
− | dynamic_out_restrictions = | + | dynamic_out_restrictions = (здесь указывается рестриктор, если есть, в который нельзя входить НПС или монстру(дС)) |
− | dynamic_in_restrictions = | + | dynamic_in_restrictions = (здесь указывается рестриктор, если есть, зайдя в который НПС или монстру уже нельзя из него выходить(дС)) |
+ | |||
(зачем нужно это не совсем понимаю, но заполнять так же, как и в основной секции) | (зачем нужно это не совсем понимаю, но заполнять так же, как и в основной секции) | ||
upd:health = 1 | upd:health = 1 | ||
upd:timestamp = 0x2009656c | upd:timestamp = 0x2009656c | ||
upd:creature_flags = 0x3d | upd:creature_flags = 0x3d | ||
− | upd:position = -150.17852783203,0.63608288764954,-293.19580078125 | + | upd:position = -150.17852783203,0.63608288764954,-293.19580078125 (должно соответствовать указанным выше(дС)) |
upd:o_model = 0 | upd:o_model = 0 | ||
− | upd:o_torso = 0.00316426996141672,0.062321275472641,0 | + | upd:o_torso = 0.00316426996141672,0.062321275472641,0 (должно соответствовать указанному выше направлению взгляда(дС)) |
upd:g_team = 0 | upd:g_team = 0 | ||
upd:g_squad = 1 | upd:g_squad = 1 | ||
Строка 105: | Строка 143: | ||
upd:distance_to_point = 0 | upd:distance_to_point = 0 | ||
; cse_alife_human_abstract properties | ; cse_alife_human_abstract properties | ||
− | predicate5 = 1,1,0,0,1 | + | predicate5 = 1,1,0,0,1 --- (к сожалению за много лет ни разу не находил статьи которая объясняла бы эти цифры. Они определяют порядок действий НПС в различных ситуациях, создают разнообразие жизни |
− | predicate4 = 2,2,0,2 | + | predicate4 = 2,2,0,2 --- (но что конкретно я не знаю, поэтому многие скриптовики мучаются с созданием своих систем alife(дС)) |
; cse_ph_skeleton properties | ; cse_ph_skeleton properties | ||
upd:start_dialog = | upd:start_dialog = | ||
Строка 120: | Строка 158: | ||
Автор статьи - '''Andrey K aka f0rest''' | Автор статьи - '''Andrey K aka f0rest''' | ||
− | + | Правки -- "дядяСаша" (все правки внесённые мной опробованы на "собственной шкуре", поэтому лучше учится на чужих ошибках! --)) (imgal@mail.ru) | |
− | + |
Текущая версия на 21:57, 28 декабря 2016
Расспаковка all.spawn
Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет нужен ActivePerl (адрес откуда можно скачать последнюю версию, для работы подойдёт любая. http://www.activestate.com/activeperl/downloads (дС)) (нужная версия входит в архив)Качаем acdc для ЗП здесь.После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали)(от "GE" - файлы ACDC должны лежать в папке "C:\Perl\bin" если вы не изменяли стандартного пути установки файлов программы Active Perl). Распакуйте acdc и скопируйте в эту папку свой all.spawn (от "GE" - если вы работаете с файлами ТЧ то не забудьте поместить туда-же и файл game.graph , если вы работаете с файлами модов на ТЧ то дополнительно перенести и папку config). Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки:
perl acdccop.pl -d all.spawn pause
(от "GE" - при работе с утилитами от Бардака .bat файл выглядит так:
del sections.ini perl universal_acdc.pl -d all.spawn pause
при работе с файлами модов надо включить в .bat сканирование конфигураций:
del sections.ini perl universal_acdc.pl -d all.spawn -out all -scan config/ -nofatal pause
в ином случае не чего не получится. Описание подходит для де компиляции all.spawn ТЧ и модов , работоспособность .bat с ЧН и ЗП не проверял.)
И сохраните под именем "decompile.bat" Запускайте батник. Через некоторое время появятся .ltx файлы. Все, ол спавн распакован и ждет шаманства над собой :) (от "GE" - при работе ACDC от бардака в папке C:\Perl\bin по мимо отсальной кучи файлов "pl и прочих" + наших файлов ACDC появятся файлы: sections.ini, папка all с .ltx всех локаций и guids.)
Структура файлов
Я прошу прощения у автора этой статьи, но так как он мало разбирается в модостроении или стесняется писать правильно, счёл возможным внести некоторые правки в его статью. Правки буду вносить в скобках с указанием "дС"(дядяСаша) Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы(не основных файлов нет! каждый файл выполняет свою функцию(дС)), в которых содержаться секции спавна(Название, координаты, характеристики, логика или указания на логику объектов которые спавнятся в игре с помощью all.spawn(дС)) . Файлы типа way_ - это и есть "вэй". Сквады, логика и прочая дребедень(=Категорически неверно, ни каких сквадов и логики здесь нет. Здесь находятся только координаты точек путей по которым движутся НПС, монстры, техника, координаты костров, и других точек и зон требующихся для симуляции жизни в игре(дС)). Трогать мы их не будем. Откроем любой alife_ файл и увидим там много секций спавна. Вот одна из них:
[0] ; cse_abstract properties section_name = breakable_object name = meshes\brkbl#0.ogf position = -160.539749145508,21.5325393676758,-195.387329101563 direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 293223 object_flags = 0xffffffba ; cse_visual properties visual_name = meshes\brkbl#0 ; cse_alife_object_breakable properties health = 1
А теперь подробнее
[0] - уникальный "id", то бишь номер секции(ID в игре сталкер - совершенно другое и ни какого отношения к номеру секции не имеет. Секция - просто номер который не должен повторятся(дС)) ; cse_abstract properties - комментарий section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ) name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать(Можно, но лучше придерживаться правил наименования чтобы не запутаться при большом количестве объектов(дС)) position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн (Уточнение: центральная точка плоскости спавна на горизонтальной плоскости локации, почему см. 3 строчки ниже(дС)) direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 - направление. В какую сторону "смотрит" обьект. ; cse_alife_object properties - комментарий game_vertex_id = 0 - вертикс. distance = 0 (радиус-максимальное расстояние от центральной точки спавна на котором может заспавнится предмет. Расстояние будет выбираться произвольно в пределах указанного радиуса. Теретически можно назначить радиус на всю локацию, НО! я не даром говорил про воображаемую плоскость, надеюсь геометрию уже изучали -)), если ваша плоскость пойдёт через бугор то НПС может заспавнится под землёй и соответственно в игре участвовать не сможет, если над ямой то предмет зависнет в воздухе, есть ещё аномалии и предметы внутри которых может заспавнится ваш объект, поэтому радиус нужно выбирать в разумных пределах(дС)) level_vertex_id = 293223 - тоже вертикс. (зачем они объяснять не буду) object_flags = 0xffffffba - флаги обьекта. тоже рассматривать не будем ; cse_visual properties - комментарий visual_name = meshes\brkbl#0 - визуал.(папка meshes не указывается, а указывается полный путь в папке "meshes" например actors\aziat\aziat_bandit_veteran, папка "actors" соответственно должна находится в папке "meshes"(дС)) ; cse_alife_object_breakable properties - комментарий. health = 1 - здоровье.
Файл all.ltx - это список файлов, которые упакованы в ол спавн.
Создаем новую секцию спавна
Ну вот, самое интересное начинается ) Открываем любой файл. Я буду спавнить свои объекты, на новой локации.
Допустим, нам нужно заспавнить сталкера. Создаем секцию спавна. ( ВНИМАНИЕ! ПРЕЖДЕ ЧЕМ СПАВНИТЬ СТАЛКЕРА, ЕГО НУЖНО СОЗДАТЬ). Как описывать новых напсано здесь
[20927] - уникальный номер секции. (Это просто порядковый номер секции, после распаковки all.spawn открваете последний файл Alife_ в списке для ЗП это alife_zaton.ltx и смотрите № последней секции, дальше уже можете назначать свой. Свою секцию можете вписывать в конце любого файла alife_ только со своим номером. При запаковке, номера будут перебиты соответственно порядковым номерам начиная от первой секции первого файла alife_. Единственное условие порядковые номера не должны быть одинаковыми не сможете запаковать.(дС)) ; cse_abstract properties - коментарий :) section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно. name = marsh_koster_stalker - имя. я использую имя профиля, которого вы создавали при создании нпс (категорическая глупость, не надо путать себя и машину. Правило №1 при спавне новых объектов первые 3 буквы должны содержать название локации mar_ дальше уже пишите название желательно места и затем уже название сталкера и последним порядковый номер например: mar_cerkov_stalk_1, так как указал автор статьи можно заспавнить, но если сталкеров будет много и на разных локациях как это есть в больших модах потом при необходимости внесения изменений найти будет очень тяжело. Поэтому лучше учится сразу правильно делать(дС)) position = -150.17852783203,0.63608288764954,-293.19580078125 - координаты. direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 - направление. Куда сталкер будет смотреть. ; cse_alife_trader_abstract properties - money = 5000 - деньги ) (нужны для продажи сталкеру предметов находящихся у ГГ, если это соответствует условиям игры(дС)) character_profile = marsh_koster_stalker - профиль, который вы указали при создании нпс. Вот тут нужно указывать его ; cse_alife_object properties game_vertex_id = 934 - вертикс локации distance = 4.90000009536743 - Расстояние до gvid (Опять какой-то бред, причём тут givd. Для чего нужна дистанция, При спавне например группы сталкеров 5 человек не нужно для каждого устанавливать свои координаты спавна у всех можно делать одинаковые, но при наличии радиуса, движок их сам раскидает, а если радиус будет 0 все будут спавнится в одной точке, резко возрастает нагрузка на память игра начинает притормаживать, и иногда, я думаю многие встречались с этим, какой-то НПС просто сразу гибнет на месте спавна, почему это происходит не знаю! просто факт!(дС))
level_vertex_id = 1418 - вертикс локации ) object_flags = 0xffffffbf custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика. cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты (уточняю папка "scripts" которая находится в папке "config", потому, что в папке gamedata тоже есть папка "scripts" не путать!(дС)) [smart_terrains] - смарт террайны ( не рассматриваться) END - окончание кастом даты ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 health = 1 dynamic_out_restrictions = (здесь указывается рестриктор, если есть, в который нельзя входить НПС или монстру(дС)) dynamic_in_restrictions = (здесь указывается рестриктор, если есть, зайдя в который НПС или монстру уже нельзя из него выходить(дС))
(зачем нужно это не совсем понимаю, но заполнять так же, как и в основной секции) upd:health = 1 upd:timestamp = 0x2009656c upd:creature_flags = 0x3d upd:position = -150.17852783203,0.63608288764954,-293.19580078125 (должно соответствовать указанным выше(дС)) upd:o_model = 0 upd:o_torso = 0.00316426996141672,0.062321275472641,0 (должно соответствовать указанному выше направлению взгляда(дС)) upd:g_team = 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,1,0,0,1 --- (к сожалению за много лет ни разу не находил статьи которая объясняла бы эти цифры. Они определяют порядок действий НПС в различных ситуациях, создают разнообразие жизни predicate4 = 2,2,0,2 --- (но что конкретно я не знаю, поэтому многие скриптовики мучаются с созданием своих систем alife(дС)) ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties
Сохраняем. Запаковываем ол спавн, файлом comlite.bat.
В папке gamedata создаем папку spawns и копируем файл new.spawn(он будет называться именно так). Потом переименовываем в all.spawn.
Статья не закончена и будет пополняться время от времени. Для начала хватит.
Автор статьи - Andrey K aka f0rest
Правки -- "дядяСаша" (все правки внесённые мной опробованы на "собственной шкуре", поэтому лучше учится на чужих ошибках! --)) (imgal@mail.ru)