• Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Выпадение частей тел с монстров без надобности их обыска. (мини-урок)
Выпадение частей тел с монстров без надобности их обыска.
Российская Федерация  Rezon
Пятница, 03.01.2014, 17:00 | Сообщение # 16
Статус:
Бывалый:
Сообщений: 665
Награды: 2
Регистрация: 27.08.2013

Цитата MODOSKEA
Выпадение частей тел с монстров без надобности их обыска. Автор: Modoskea Платформа: ТЧ/ЧН(не проверял но должно работать)/ЗП(не проверял но должно работать) Описание: Выпадение будет про исходить рядом с телом убитого монстра, а не в его инвентаре. Для начала нам понадобиться скрипт - gamedata\scripts\bind_monster.script Откроем его, в нем ищем строку – function generic_object_binder:death_callback(victim, who) Данная строка проверяется только при смерти монстра, один раз! Так вот под ней и будем писать наш код. Под строку пишем: Кодlocal object = self.object -- берем локальную объекта монстра за object local ini = system_ini() -- берем класс system_ini и назначим ему локальную if not object:alive() and ini:line_exist(object:section(), "Spawn_Inventory_Item_Section") ~= nil and ini:line_exist(object:section(), "Spawn_Drop_Item_Probability") ~= nil and ini:line_exist(object:section(), "Spawn_Max_Item") ~= nil then    --[[    Если объект не жив и строка в нужной секцией не ровна не чему и строка в нужной секцией не ровна не чему и строка в нужной секцией не ровна не чему -]] local Item = ini:r_string(object:section(), "Spawn_Inventory_Item_Section") --[[ берем локальную за строку Spawn_Inventory_Item_Section в секции монстра -]] local Probability = ini:r_float(object:section(), "Spawn_Drop_Item_Probability") --[[ берем локальную за число Spawn_Drop_Item_Probability  в секции монстра -]] local Max_Item = ini:r_float(object:section(), "Spawn_Max_Item") --[[ берем локальную за число Spawn_Max_Item  в секции монстра в файле -]] if math.random(1,100) <= (Probability*100) then --[[ Если рандом от 1 до 100 выдаст меньше или равно локальной Probability умноженной на сто, то -]] for i=1,math.random(1,Max_Item) do    --[[ цикл от 1 до локальной Max_Item (даст максимальное количество частей монстра) -]] alife():create(Item,vector():set(object:position()),object:level_vertex_id(),object:game_vertex_id()) --[[ спавним объект строки локальной Item равна нужной секции на позиции монстра -]] end end end Дальше идем в конфигурации gamedata\config берем файл - gamedata\config\defines.ltx ищем строку секции - [monster_base]:common_ph_friction_params_on_npc_death в этом файле под ней пишем: КодSpawn_Inventory_Item_Section = mutant_dog_tail ;Часть монстра Spawn_Inventory_Item_Probability = 0 ;Вероятность выпадения в инвентарь монстра, делаем 0 что бы не было в инвентаре монстра вообще Spawn_Drop_Item_Probability = 0.00 ;Строка добавленная нами, вероятность выпадения из тела монстра. Spawn_Max_Item = 0 ;Максимальное число выпадения из тела монстра частей тела Все теперь если какому-то монстру не пропишем, он возьмет нужную строку из родительской секции то есть которой мы прописывали выше, теперь идем к монстрам: gamedata\config\creatures\файл_монстра.ltx и до прописываем на пример сей час покажу собаке и кабану. Пропишем собаке берем файл - gamedata\config\creatures\m_dog.ltx КодSpawn_Inventory_Item_Section = mutant_dog_tail ;эта строка была с ней нечего не делаем Spawn_Inventory_Item_Probability = 0;0.5 ;тут было 0.5 мы это за комментируем и напишем 0, что бы не выпадало из инвентаря, либо стереть так как есть в родительской секции Spawn_Drop_Item_Probability = 0.5 ; Прописываем вероятность выпадения из тела раньше не было мы пишем на пример как раньше было в инвентарь 0.5 Spawn_Max_Item = 1 ;Так как у собаки один хвост то максиму пишем может выпасть 1 Теперь кабану: берем файл - gamedata\config\creatures\m_boar.ltx Код Spawn_Inventory_Item_Section = mutant_boar_leg ;эта строка была с ней нечего не делаем Spawn_Inventory_Item_Probability = 0;0.2 ;тут было 0.2 мы это за комментируем и напишем 0, что бы не выпадало из инвентаря, либо стереть так как есть в родительской секции Spawn_Drop_Item_Probability = 0.2 ; Прописываем вероятность выпадения из тела раньше не было мы пишем на пример как раньше было в инвентарь 0.2 Spawn_Max_Item = 4 ;А тут отличие от собаки, так как у кабана 4 копыта а не 1-но как хвост собаки то максиму может выпасть 4 В общем все вроде объяснил, остальным можно делать по аналогу. _________________________________________________________________________________ В ЗП еще надо добавить части монстров то есть их секции, модели, текстуры и описание.

Чувак,спасибо,искал подобное.
Российская Федерация  MODOSKEA
Пятница, 03.01.2014, 17:02 | Сообщение # 17
Статус:
Новичок:
Сообщений: 211
Награды: 1
Регистрация: 06.07.2012

Rezon, Спасибо :)
Украина  Shtaket
Суббота, 01.10.2016, 03:39 | Сообщение # 18
Статус:
Неопытный:
Сообщений: 530
Награды: 7
Регистрация: 04.01.2015

Круто, а для людей такое можно сделать? типа что б лут выпадал
Российская Федерация  ArdenGod
Воскресенье, 05.02.2017, 18:39 | Сообщение # 19
Статус:
Новичок:
Сообщений: 227
Награды: 3
Регистрация: 25.07.2016

Цитата Shtaket ()
Круто, а для людей такое можно сделать? типа что б лут выпадал

хочешь людям ноги с руками отрезать?
Российская Федерация  Nik71rus
Понедельник, 22.06.2020, 09:56 | Сообщение # 20
Статус:
Опытный:
Сообщений: 3196
Награды: 3
Регистрация: 13.08.2016

Спасибо
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Выпадение частей тел с монстров без надобности их обыска. (мини-урок)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: