Перейти к контенту

Рекомендуемые сообщения

PTB   

Скриптовые ролики


Автора не помню.
Внёс небольшие правки.
В игре пишем в консоли demo_record название_вашего_ролика
Пробелом отмечаем точки через которые должна пролететь камера. Внимание! Если точки отделить слишком далеко, то они пролетят с сумашедшей скоростью! Сделав все точки куда пролетит камера, возвращаемся к месту где должен стоять ГГ(Если вы снимали например из бункера Сидора, то обратно камера политит прямо через terrein(землю)).
Проиграть получившееся демо можно проиграть через консоль:
demo_play название_вашего_ролика
Теперь со скриптами делаем функцию

 


function любое_название()
local console = get_console()
console: execute("demo_play название_ролика")
end

 

В идеале в функцию надо добавить отключение HUD’a, порытся в анимациях (не модельных) чтобы при начале скриптового ролика на несколько секунд не вылазил черный экран и сделать так чтобы в ролике бн сам Глав Герой. Все демо сохраняются в ХР примерно c:\documents and settings\all users\документы\stalker-shoc\savedgames.ыл виде

 

Создание костюма с автоматическим применением препаратов.
Решил побаловаться со скриптами, вот что получилось:

 

Создаём скрипт ваше_название.script
и пишем в него следующее:

function kiber_outfit()local slot_outfit = db.actor:item_in_slot(6) -- переменная слотаlocal object_1 = db.actor:object("protection_outfit") -- переменная объекта (в данном случае укреплённый костюм учёного)if slot_outfit and slot_outfit:section() == "protection_outfit" and object_1 ~= nil then -- если в слоте бронька указаная в local object_1if db.actor.health <= 0.3 then -- если хп меньше 30%if db.actor:object("medkit") ~= nil ordb.actor:object("medkit_army") ~= nil ordb.actor:object("medkit_scientic") ~= nil thenlocal news_text = "%c[155,160,160,160]Автоматический приём медицинских препаратов\\n%c[default]Применение:%c[255,160,160,160] Принимаю медицинский препарат. %c[default]"db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)automat_medkits()endendendendfunction automat_medkits()if db.actor:eat(db.actor:object("medkit")) ~= nil ordb.actor:eat(db.actor:object("medkit_army")) ~= nil ordb.actor:eat(db.actor:object("medkit_scientic")) ~= nil thenendend


После этого в файле bind_stalker.script после строки

object_binder.update(self, delta)


пишем

ваше_название_скрипта.kiber_outfit()


Всё.

 


Платформа: ТЧ
Решил поковырять скрипт, который выше под спойлером, получилось чёт вроде смены группировки при смене костюма.(скрипт надо дорабатывать)



function test() --название функции
local gg = db.actor -- переменная ГГ
local item = gg:item_in_slot(6) -- переменная слота под костюмы
local object_1 = db.actor:object("novice_outfit") -- переменная костюма новичка(можно менять на свои)
local object_2 = db.actor:object("bandit_outfit") -- переменная костюма бандита
local object_3 = db.actor:object("killer_outfit") -- переменная костюма наёмника
local object_4 = db.actor:object("specops_outfit")-- переменная костюма военных
if item and item:section() == "novice_outfit" and object_1 ~= nil then
--Смена группировки ГГ
printf("ACTOR NOW IN [sTALKER] COMMUNITY")
if db.actor then
db.actor:set_character_community("stalker", 0, 0)
end
-- -- -- --
return true
end
-- Ну и дальше также, только с другими костюмами.
if item and item:section() == "bandit_outfit" and object_2 ~= nil then
printf("ACTOR NOW IN [bANDIT] COMMUNITY")
if db.actor then
db.actor:set_character_community("bandit", 0, 0)
end
return true
end
if item and item:section() == "killer_outfit" and object_3 ~= nil then
printf("ACTOR NOW IN [KILLER] COMMUNITY")
if db.actor then
db.actor:set_character_community("killer", 0, 0)
end
return true
end
if item and item:section() == "specops_outfit" and object_4 ~= nil then
printf("ACTOR NOW IN [MILITARY] COMMUNITY")
if db.actor then
db.actor:set_character_community("military", 0, 0)
end
return true
end
end

 

Изменено пользователем BFG

  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 5

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
[CoP] Пресеты Custom Data для SDK
 
Добрый день!
Предлагаю небольшую шпаргалку для тех, кто работает с заселением в SDK LE и более-менее понимает, для чего, вообще, нужен данный код. Фактически создано для копипаста и экономии времени. Для новичков, может, тоже будет не лишним почитать.
Что необходимо учесть:
1. Я привык разбивать логику различных групп объектов по подпапкам (smart, anomaly, npc_logic, monsters_logic и другие). Это не есть обязательным, но рекомендую действовать таким же образом. Практика показывает, что другим модмейкерам, в этом случае, будет легче ориентироваться в файлах логики Вашего мода.
2. Каждый пресет является среднестатистическим набором для логики. Вы, само собой, можете убирать/добавлять дополнительные секции в роде collide, story_object.
3. Вместо location, в пути прописываете название локации.
Удачи! ;)

 
Для Custom Data в SDK
 
[smart_terrain]
cfg = scripts\location\smart\smart_name.ltx

[anomal_zone]
cfg = scripts\location\anomaly\anomal_zone.ltx

[camp]
cfg = scripts\camp.ltx

[story_object]
story_id = restr_story_id
 
[logic]
cfg = scripts\location\restrictors_logic\restr.ltx

[logic]
cfg = scripts\sr_sleep.ltx

[story_object]
story_id = object_story_id
 
[collide]
ignore_static
ignore_small_objects
 
[logic]
cfg = scripts\location\physic_objects\object.ltx
 
[physics_common] ;Альтернатива параметру fixed_bones, используется для квестовых айтемов device_pda и т. д.
fixed_bones = link

[story_object]
story_id = anim_object_story_id
 
[collide]
ignore_static
ignore_small_objects
 
[logic]
cfg = scripts\location\physic_objects\anim_object.ltx
 
[animated_object]

[story_object]
story_id = box_story_id
 
[logic]
cfg = scripts\location\inventory_box\box.ltx

[story_object]
story_id = actor_box_story_id
 
[logic]
cfg = scripts\actor_inventory_box.ltx
 
[level_spot]
actor_box

[logic]
cfg = scripts\door.ltx

 

 

 


 
Другое
 
[exclusive]
monster = location\monsters_logic\monster_l.ltx
npc = location\npc_logic\npc_l.ltx

 

 

 


 
;==============================For SDK and logic==============================;
 
;-------------------------------------------
;Smart Terrain
;-------------------------------------------
[smart_terrain]
cfg = scripts\location\smart\smart_name.ltx
 
;-------------------------------------------
;Anomal Zone
;-------------------------------------------
[anomal_zone]
cfg = scripts\location\anomaly\anomal_zone.ltx
 
;-------------------------------------------
;Camp
;-------------------------------------------
[camp]
cfg = scripts\camp.ltx
 
;-------------------------------------------
;Space Resctrictor
;-------------------------------------------
[story_object]
story_id = restr_story_id
 
[logic]
cfg = scripts\location\restrictors_logic\restr.ltx
 
;-------------------------------------------
;Sleep Zone
;-------------------------------------------
[logic]
cfg = scripts\sr_sleep.ltx
 
;-------------------------------------------
;Physic Objects and Quest Items
;-------------------------------------------
[story_object]
story_id = object_story_id
 
[collide]
ignore_static
ignore_small_objects
 
[logic]
cfg = scripts\location\physic_objects\object.ltx
 
[physics_common]
fixed_bones = link
 
;-------------------------------------------
;Anim Object
;-------------------------------------------
[story_object]
story_id = anim_object_story_id
 
[collide]
ignore_static
ignore_small_objects
 
[logic]
cfg = scripts\location\physic_objects\anim_object.ltx
 
[animated_object]
 
;-------------------------------------------
;Inventory Box
;-------------------------------------------
[story_object]
story_id = box_story_id
 
[logic]
cfg = scripts\location\inventory_box\box.ltx
 
;-------------------------------------------
;Actor Inventory Box
;-------------------------------------------
[story_object]
story_id = actor_box_story_id
 
[logic]
cfg = scripts\sr_sleep.ltx
 
[level_spot]
actor_box
 
;-------------------------------------------
;Door
;-------------------------------------------
[logic]
cfg = scripts\door.ltx
 
;==============================For Smart Configs==============================;
[exclusive]
monster = location\monsters_logic\monster_l.ltx
npc = location\npc_logic\npc_l.ltx

Изменено пользователем FantomICW

  • http://www.amk-team.ru/forum/uploads//ratings/thumb_up.png × 2
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 6

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наткнулся на такую вот обучалочку по восстановлению вырезанных мутантов в зове припяти:

 

Новые монстры


Введение
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.
Для примера возьму кошек (уж очень они мне нравятся)
Добавить их можно отредактировать файл all.spawn, либо динамически создать в игре через функцию alife:create().
Вылет при появлении
Обычно сопровождается сообщением в логе:
Arguments : Can't open section 'cat_weak'
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция
[m_cat_e]:monster_base
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида
[cat_weak]:m_cat_e
то есть ссылка на основную конфигурацию, а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле config\creatures\m_cat.ltx в конце допишем [cat_weak]:m_cat_e. Запускаем, добавляем кошку, вылетаем с ошибкой:
Arguments : Can't find variable smart_terrain_choose_interval in [cat_weak]
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:
smart_terrain_choose_interval = 00:15:00
Запускаем, вылетаем с ошибкой:
Arguments : Can't find variable satiety_threshold in [cat_weak]
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.
Ну, на всякий случай, нужно добавить еще две строчки:
critical_wound_threshold = 0.4
critical_wound_decrease_quant = 0.
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит
Вылет при убийстве
Это знаменитая ошибка:
Arguments : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом "что происходит после смерти?" А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт xr_statistic.script. В самом начале видим объявление переменной
local killCountProps = {...}
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:
cat_weak = 1, cat_normal = 2, cat_strong = 3,
Хотя мы сделали только cat_weak, но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:
monster_classes = {
кошек нет и здесь, добавляем:
[clsid.cat_s] = "cat",
Смотрим дальше, видим функцию addKillCount(npc), которая определяет сообщество (community) убитого. Функция вызывает getNpcType(npc), которая находится в этом же скрипте. А там идет обращение к функции IsStalker(npc), и возвращает сообщество и ранг убиенного.
Но тут про мостров ни слова, а значит идем дальше. Функция IsStalker(npc) обнаруживается в скрипте _g.script. Просматривая его обнаруживаем следующие интересующие нас функции:
· is_object_monster(obj)
кошек нет, добавляем рядом с собаками:
otype == clsid.cat or
· IsMonster (object, class_id)
кошки есть, ничего не трогаем.
Для страховки проверим еще одни файл, class_registrator.script. Находим в нем строку
cs_register (object_factory, "CCat", "se_monster.se_monster", "SM_CAT_S", "cat_s")
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился
Вылет при обыске
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем m_cat.ltx - действительно, параметр icon отсутствует. Тут появляется два пути.
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель ui_npc_monster.xml. И так для каждого нового монстра.
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод "15 кошек", то помнят тот ужас вместо иконки кошки )
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция monster_base, общая для всех монстров. Открываем, ищем секцию, и вставляем
icon = ui_frame_error_sign_red
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.
Внимание!!!
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет

 

Изменено пользователем HellRatz

  • http://www.amk-team.ru/forum/uploads//ratings/spellcheck.png × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Два подобных урока по распаковке ресурсов Крайэнгине.

Смотреть на облаке.

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

 

Ну, и пара уроков для Сталкера.

Изменено пользователем Дизель

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
UriZzz   

Пытался создать спальный мешок согласно посту http://www.amk-team.ru/forum/topic/6458-uroki-po-modostroeniiu/?p=645126

При попытке использовать мешок ловлю вылет с вот таким логом:

Expression : fatal error

 

Function : CScriptEngine::lua_error

 

File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp

 

Line : 73

 

Description : <no expression>

 

Arguments : LUA error: ... \gamedata\scripts\bind_stalker.script:192: attempt to index global 'main_sleep' (a nil value)

Похоже в скрипте main_sleep.script где то автором закралась ошибка.

Кто не будь тэстил сей пример?

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Charsi   

@UriZzz, скорее не автором, а тем, кто оформлял статью. Нужно убрать лишние теги code (строка 107) и \code (в конце) из портянки про main_sleep.script.


  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
UriZzz   
@Charsi, сработало благодарю:), как я понимаю это просто мод на каратание времени. Но как можно реализовать сон как потребность, что бы гг через некоторое время захотелось спать (начало двоится в глазах, в углу появилась иконка сигнализирующая о том что мол пора баиньки) в этом скрипте как я понимаю, такого нет? Изменено пользователем UriZzz

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Romann   

Доброго времени суток, кто нибудь пож. ткните меня носом в урок, где полностью расписаны смарт-каверы, то что имеется на "сталкерине" не подxодит, я xочу полностью разобраться в принципе его работы... Заранее спасибо.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
sheva.   

СОЗДАНИЕ РАДИО ДЛЯ ЗОВ ПРИПЯТИ .

Этот метод работает на всех версиях ЗП а также и в модификациях ЗП .

Работа в Level Editore( sdk-07)
1.Открываем локацию и камерой ищем место для приёмника(радио)
2.В Level Editore жмём вкладку spawn element , ищем пункт elektrotexnika и в этом пункте ищем priemnik_gorizont.
Жмём мышкой на priemnik_gorizont, потом мышкой на чайник который находится в верхнем левом углу Level Editor, когда нажали чайник потом мышкой жмём на то место где должен стоять приёмник , нажали и он появился и нажимаем клавишу enter , откроются опции приёмника.
В опциях приёмника в разделе Custom data , пишем ссылку на логику радио.
[logic]
cfg=scripts\mar_baz_mafon.ltx

А также в опциях приёмника в разделе Fixed bones , выбрать (link) это означает что приёмник не движим.

И так приёмник поставили и прописали в Level Editore работа оканчена , жмём save потом жмём MakeGame и соберётся спавн и на этом LevelEditor закрываем.
Потом батник компиляции спавна запускаем и когда он отработал надо скопировать спавн локации и вставить в игру и переименовать в all.spawn.

Создаём файл логики для нашего приёмника (радио).
1.Открываем папки (или создаём) gamedata\configs\scripts:
Вот в папке scripts и создаём файл логики:
mar_baz_mafon.ltx. Создали и открываем и пишем ему логику , день \ночь тоесть днём играют дневные мелодии а ночью ночьные, это
Сделано для того что днём играет весёлая и.т.д
А ночью спокойная ведь спят сталкера.

Открыли файл (mar_baz_mafon.ltx)
И пишем.
[logic]
active=sr_idle@day

[sr_idle@day]
on_info = ℅=play_sound(day_muzic_baz)%
on_info = sound_end| {!is_day}sr_idle@night

active = sr_idle@night

[sr_idle@night]
on_info = %=play_sound(night_music_baz)%
on_signal = sound_end| {=is_day}sr_idle@day

Вот и написали логику ,сохраняем файл и закрываем.

Регистрируем мелодии.
Открываем папки (или создаём)
gamedata\configs\misc:
Открываем папку misc и ищем файл script_sound.ltx (если нет его, то можно его взять из оригинала игры ,gamedataUE)
Открываем файл script_sound.ltx и вверху допишем ссылку на файл
#include"script_sound_имя вашей локации.ltx"
Потом после строчки wait пишем имя наших файлов
wait

day_muzic_baz
night_music_baz

Потом ниже пишем вот это
[day_music_baz]
type = 3d
path = music\day_music_baz_
shuffle = rnd
idle = 0,0,100

[night_music_baz]
type = 3d
path = music\night_music_baz_
shuffle = rnd
idle = 0,0,100

В папке misc:
Открываем файл script_sound_имя вашей локации.ltx (или создаём и открываем)
И пропишем количество ваших милодий
Вот так и пишем:
[list_script_sound_имя вашей локации]
day_music_baz_1
day_music_baz_2
day_music_baz_3
night_music_baz_1
night_music_baz_2
night_music_baz_3

Открываем папки gamedata\sounds\music: (или создаём)
Вот в папку music и надо вставить ваши музыкальные файлы в формате (ogg)

Открыли папку music и вставили файлы
day_music_baz_1.ogg
day_music_baz_2.ogg
day_music_baz_3.ogg
Это и есть дневные файлы мелодий
night_music_baz_1.ogg
night_music_baz_2.ogg
night_music_baz_3.ogg
Это и есть ночьные файлы мелодий
Добавить можно сколько захотите , главное соблюдать номерацию 1,2,3,4,5,6 и.т.д
Всё заходим в игру и слушаем радио

.

post-43423-0-06431400-1485849907_thumb.jpg

Изменено пользователем BFG

Добавлено BFG,

Под спойлер такие посты !!!

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создание действительно бессмертных НПС.

Делал на ТЧ, как в ЧН/ЗП не знаю, возможно там аналогично.

 
Давно по интернету гуляют статьи и советы о создании неубиваемого НПС: кто-то предлагает просто положить в основу профиль Сахарова ([npc_name]:stalker_sakharov) вместо обычного сталкера ([npc_name]:stalker), кто-то повесить в постоянный апдейт проверку story id НПСа и бесконечную установку ему здоровья равному единице. Если второй вариант еще может сработать, хотя и хорошего в нем ничего нет ибо постоянно висит на апдейте как мусор, да и НПС умирают от выстрелов в голову, то вот первый абсолютно не дает никакой живучести неписю, в итоге во многих модах неписи все равно умирают, даже если им подкрутили иммунитеты. Для создания действительно бессмертного НПС как полагается без всяких костылей нам потребуется СДК.
 
1. Для начала идем по пути gamedata\config\models\capture и копируем файл, допустим, kurtka_mask_damage_no.ltx, называя его по-своему, например npc_not_die.ltx
2. Берем нужный нам визуал НПС в формате *.object (исходник или декомпилированный заранее *.ogf файл), открываем его в Actor Editor, в поле User Data прописываем свой инклуд к свежесозданному файлу взамен старого, например #include "models\capture\npc_not_die.ltx"
3. Затем компилируем НПС с новым путем в формат *.ogf, подкладываем на замену старой модели в свой мод.
 
Подготовительная часть закончена. Далее работаем руками немного.
 
4. Открываем ранее созданный npc_not_die.ltx, находим в нем это место:

 

[immunities]
immunities_sect = no_resistance
 
[bone_protection]
bones_protection_sect = kurtka_mask_damage

 

Зафиксировали и запомнили.
 
5. Работаем с строкой immunities_sect - это иммунитеты нашего персонажа к различным воздействиям, вместо no_resistance пишем что-то свое, опять же, к примеру, - undead_resistance. Получится что-то вроде этого:

 

[immunities]
immunities_sect = undead_resistance

 

6. Идем в файл immunities.ltx, копируем любую секцию с иммунитетами (ту же no_resistance) вместе со всеми строками до следующей секции, вставляем куда-нибудь ниже и так и называем - [undead_resistance] (напомню это название прописали ранее в immunities_sect), далее все параметры в этой секции выставляем по нулям. Сохраняем. Закрываем.
7. Работаем с bones_protection_sect - сие дело отвечает за защиту отдельных костей в скелете НПСа к внешним воздействиям. Например можно сделать голову пуленепробиваемой, ногу или живот. Для начала нам нужно задать имя будущей (!) секции живучести костей. Вместо kurtka_mask_damage пишем свое, допустим kombez_npc_undeadПолучится что-то вроде этого:

 

[bone_protection]
bones_protection_sect = kombez_npc_undead

 

8. Идем в файл damages.ltx. В нем находим вверху секцию для нашей работы: [body_kurtka_damage] и ниже куча строк с цифрами. Эта секция отвечает за живучесть торса и конечностей. Копируем целиком эту секцию со всеми параметрами и вставляем где-нибудь пониже, называя как душе угодно, например body_undead_npc. Затем для каждой кости в этой секции выставляем нулевое воздействие, т.е было:

 

bip01_pelvis  = 1.0, 0.15

 

Стало:

 

bip01_pelvis  = 0, 0

 

И так проделываем для всех последующих параметров (костей).
9. В том же damages.ltx ниже есть еще секции отвечающие за живучесть головы, мы возьмем для работы [head_mask_damage]. Эта секция отвечает за живучесть головы или ее отдельных элементов (например можно сделать так, чтобы НПС умирал от попадания только в глаз :) ) Копируем ее по аналогии с предыдущей, вставляем где-нибудь пониже по файлу, называем по-своему, к примеру head_undead_npc. Значения так же обнуляем для всех костей.
10. Спускаемся еще ниже по файлу, и там находим:

 

[kurtka_mask_damage]:body_kurtka_damage,head_mask_damage
hit_fraction = 0.1

 


Копируем эту секцию вместе с единственным параметром, вставляем пониже и называем ее так, как придумали еще на 7 пункте этого урока (!). У меня это, напомню, kombez_npc_undead, так же обнуляем параметр hit_fraction, а после двоеточия прописываем созданные до этого секции живучести тела и головы - body_undead_npc и head_undead_npcВ итоге должно получиться нечто такое:

 

[kombez_npc_undead]:body_undead_npc,head_undead_npc
hit_fraction = 0

 


Игра считывает этот вариант защиты, в котором на всех косточках у нас стоят нули, а следовательно попадания по ним и привязанной к ним меши никак не засчитываются.
11. И это еще не все. Далее открываем m_stalker.ltx, идем в самый низ и вставляем:

 

[hum_undie]:stalker
immunities_sect = stalker_immunities_hum_undie

[stalker_immunities_hum_undie]
burn_immunity  = 0.0 ;коэффициенты иммунитета 
strike_immunity  = 0.0
shock_immunity  = 0.0
wound_immunity = 0.0
radiation_immunity  = 0.0
telepatic_immunity  = 0.0
chemical_burn_immunity  = 0.0
explosion_immunity  = 0.0
fire_wound_immunity   = 0.0 
wound_2_immunity   = 0.0

 


12. И финальная стадия. Идем в спавн-секцию нашего НПС (spawn_sections.ltx) и после двоеточия прописываем новый профиль hum_undie вместо stalker:

 

[имя_нашего_нпс]:hum_undie

 


Все. После такого НПСы однозначно не умирают ни от каких воздействий (от аномалий не проверено, но думаю их они уже не возьмут), можно стрелять в любую точку из любого оружия, взрывать под ним гранаты, мины, динамиты - НПС однозначно выживет, ведь по всей модели хиты не учитываются. Это очень полезно для пресловутых умирающих квестовых НПС. На первый взгляд много, но создав один раз все нужные секции, в будущем можно лишь прописывать соотв. инклуд в модель.


  • http://www.amk-team.ru/forum/uploads//ratings/thumb_up.png × 1
  • http://www.amk-team.ru/forum/uploads//ratings/tick.png × 1
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 6

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

×