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

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

@pc-2, попробуй так:

local sobj = alife():create("kurevo", vector(), 0, 0, db.actor:id())
level.client_spawn_manager():add(sobj.id, 0, function(id, obj) db.actor:eat(db.actor:object("kurevo")) end)

А вообще этот механизм проверен годами, если опять не сработает, значит ты что-то не так делаешь.

Ссылка на комментарий

 

 

local sobj = alife():create("kurevo", vector(), 0, 0, db.actor:id()) level.client_spawn_manager():add(sobj.id, 0, function(id, obj) db.actor:eat(db.actor:object("kurevo")) end)
Добавил эту функцию, получился такой вот вид
Ссылка на комментарий

сигарета валяется на полу

Что логично:

db.actor:drop_item(oitem)

---

А вообще, скорее всего, происходит так: у модели сигареты анимация только курения, при подборе слот активируется, вот анимация курева и проигрывается. Следовательно этот худовый предмет надо удалять.

Изменено пользователем Kondr48
Ссылка на комментарий

@Kondr48, Ну да логично, если это убрать, то объект kurevo появляется в рюкзаке, а ГГ продолжает курить до конца анимации, потом

Expression : assertion failed

Function : xrServer::Process_event_reject
File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
Line : 12
Description : e_parent && e_entity

 

Дааа, Бином Ньютона!!!!

Изменено пользователем pc-2
Ссылка на комментарий

 

pc-2, я не знаю что у Вас там работает не так. Честно). Лично я бы сделал иначе. В колбеке на использование сигареты (на классе антирада) вызывал бы спавн худового объекта сигареты, затем в колбеке на взятие предмета уже ловил получение худ предмета, активировал его слот, запускал таймер равный длительности анимации, а по окончании очищал бы слот и выводил нужное сообщение. (Ну и заспавнить фейк-предмет который там даёт нужные бафы можно где-нибудь заранее, например вместе со спавном худ-сигареты, и съесть по окончании таймера) Конечно костыльно-заморочено, но без правок движка, в принципе, так оно и делается.

 

Ссылка на комментарий

@Kondr48, Кое, что поменял, ну всё равно результат тод же. Эта функция  db.actor:eat(db.actor:object("kurevo")) не работает.

Ссылка на комментарий

@Kirgudu, так даже лучше! 

4.5e-009  - Эквивалентно 4.5 * 10^-9 => что 10 знаков после запятой.

Десять, потому что перед 'e', в дробной части, есть цифра. Если в дробной части нет цифр, то есть число целое, то количество цифр после запятой = степени 'e'.
Например: 4e-010(0.0000000004)  - 10 чисел после запятой.
Изменено пользователем Kober(BRUC)
Ссылка на комментарий

@Kondr48, Спасибо большое за совет, вот эту функцию

function item_update()

local item = db.actor:active_item()
if not (item and item:section() == "sigaret") then
if snd_obj and snd_obj:playing() then
snd_obj:stop()
end
return
end

 

 я привел к такому виду

 

function item_update()']function item_update()

local item = db.actor:active_item()
if not (item and item:section() == "sigaret") then
if snd_obj and snd_obj:playing() then
snd_obj:stop()
alife():create("kurevo", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
db.actor:eat(db.actor:object("kurevo"))
end
return
end


 

 и всё заработало!!!

  • Нравится 1
Ссылка на комментарий

Пытаюсь заставить работать схему ph_target без мини-игры в Зове Припяти.

1. На тестовом уровне, поставил мишень (spawn element -> dynamic_objects\armory_room\shooting_target_1)
2. Прописал ей Custom Data:

[logic]
active=ph_target
[ph_target]

3. Закинул в скрипты ph_target.script (из ЧН) и modules.script (в нём раскомментил схему).
4. Изменил ph_target.script:
- закомментил 2 строки начинающиеся на minigames_manager

Таким образом на уровне мишень стоит, при попадании проигрывается соответствующий звук, но мишень не опускается.

По подсказке @Charsi, в ph_target.script после:

self.hit_update_time = time

Написал:

self:anim_down()

А после:

-- if animation ended then callback

Написал:

self:anim_up()

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

 

Но ведь, она должна стоять "молча", и только при попадании ложиться, и немного погодя вставать. В общем, непонятно куда дальше копать.

Изменено пользователем aka_sektor
Ссылка на комментарий

Такой вопрос. Можно ли добавлять мапспот без привязки его к какому либо объекту? Например к id вертекса?

Ссылка на комментарий

@Карлан, ну так приоткрой тайну, как основываясь на информации в том посте, поставить метку на произвольную позицию? Что из тебя вытягивать нужно. Хотел помочь, пиши полезную информацию. Или тебе покрасоваться в очередной раз?

  • Согласен 1
Ссылка на комментарий

@dsh, подобную информацию нужно воспринимать критически, а ты в очередной раз не на то обращаешь внимание. Основываясь на информации в посте, смотри, нужно вызвать функцию и передать туда требуемые параметры, это тип метки, описание, если его нет, то устанавливается "no_hint", далее, собственно сам вектор позиции и имя уровня на котором мы планируем поставить метку. Метка установлена :)

Изменено пользователем Карлан
Ссылка на комментарий

Карлан, в посте написано о движковых правках для этого, следовательно на чистой игре (на любой доступной всем версии движка) не сработает, следовательно, без приложения нужной правки это практически бесполезная, все же, информация, как о мне  :)

 

 

Если у вас есть какие-то аргументы в противовес моему коду - приводите

выложенному коду? а как я могу приводить что то, если у меня не получится заценить его работоспособность? Как и у всех, кроме 

26 человек

я полагаю.

Я делаю вывод, что моих текстовых наводок предельно достаточно

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

Вот сколько все лежит, а скачали только 26 человек.

Где-то код лежит? Исходники движка?  Так кроме 26 человек никто не знает где это лежит, мб потому и не качают?  :) Или речь снова о текстах на пастбине?)

 

 

Изменено пользователем Kondr48
  • Согласен 1
Ссылка на комментарий

 

 

Можно ли добавлять мапспот без привязки его к какому либо объекту?

В чистой игре - нет. Я делал так: спавнил там, где надо поставить метку, рестриктор (без логики и шейпа, просто как объект) и уже на него ставил метку. И id рестриктора сохранял в пстор актёру, чтобы потом можно было удалить.

  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Закрыть давно пора.

Изменено пользователем Карлан
Добавлено Dennis_Chikin,

Ну я в общем рад, что ссылка на ftp в принципе, при проявлении некоторой сообразительности, на форуме все-таки находима.

 

Однако, я предупреждал, что такое требование по "сообразительности" будет отпугивать, и так оно и есть.

 

С чем и возьмите. И я настоятельно предлагаю на этом тред и закрыть.

Ссылка на комментарий

Доброго времени суток! Ковыряю Лост Альфу, и тут с толкнулся с проблемой в виде непонимания работы скриптов. Короче суть в том, что хочу приколхозить скрипт оповещающий о гибели сталкеров. За основу взял наработку из этой темы, за авторством Сталкер Лом + ряд своих изменений под реалии Лост Альфы. Если кто сможет помочь заставить работать сие творение буду очень благодарен. Я в скриптах можно сказать 0. Буду рад любой помощи.

--Сообщение о гибели сталкеров



function necrolog(oVictim)
local level_name = {
["la01_escape"] = "Кордон",
["la02_garbage"] = "Свалка",
["la03_agroprom"] = "НИИ Агропром",
["la04_darkdolina"] = "Тёмная долина",
["la17u_labx7"] = "Лаборатория X-7",
["la05_bar_rostok"] = "Бар",
["la14_rostok_factory"] = "Завод Росток",
["la07_military"] = "Арм.склады",
["la06_yantar"] = "Янтарь",
["la16u_labx16"] = "Лаборатория X-16",
["la19_country"] = "Деревня",
["la10_radar"] = "Радар",
["la11_pripyat"] = "Припять",
["la12_stancia"] = "ЧАЭС",
["la10u_bunker"] = "Бункер Х-10",
["la12u_sarcofag"] = "Саркофаг",
["la13u_warlab"] = "Варлаб",
["la22_forest"] = "Лес",
["la08_deadcity"] = "Мертвый город",
["la09_swamp"] = "Большие болота",
["la13_generators"] = "Генераторы",
["la04u_darklab"] = "Лаборатория Х-18",
["la13u_oso"] = "Осознание",
["la14u_secret_lab"] = "Секретная лаборатория ЧАЭС",
["la15_darkscape"] = "Темная Лощина",
["la15u_mines"] = "Неизвестная територия",
["la16_lost_factory"] = "Цементный Завод",
["la18_damned"] = "Подземелье припяти",
["la20_forgotten"] = "Стройплощадка",
["la21_generators_2"] = "Генераторы 2"
["la17_outskirts"] = "Чернобыль"
["la20_test"] = "Тест",
["la20_final_test"] = "Тест финальный"
}

local death_komment = {
"Я знал, что он допрыгается...",
"[Вырезано цензурой]",
"Ещё один...",
"Таак...",
"Мдя, ни дня без этого.",
"Одним больше, одним меньше...",
"Все там будем",
"Помянуть надо бы...",
"Зона тебе пухом.",
"Как в воду глядел - скопытился!"
}

local community = {
["actor"] = "Сталкер",
["stalker"] = "Сталкер",
["monolith"] = "Монолит",
["army"] = "Военные",
["bandit"] = "Бандит",
["killer"] = "Наемник",
["ecolog"] = "Эколог",
["dolg"] = "Долг",
["freedom"] = "Свобода",
["dark_stalker"] = "Грех",
["arena_enemy"] = "Опонент",
["zombied"] = "Зомбированный"
}

--Сообщение о гибели сталкеров

local necrolog_text = "\\n%c[255,160,160,160]Погиб сталкер: %c[default]"..oVictim:character_name().."\\n%c[255,160,160,160]Группировка: %c[default]"..community[oVictim:character_community()].."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
local shans = math.random(1,100)
local comment_text = death_komment[math.random(table.getn(death_komment))]

if oVictim and IsStalker(oVictim) and shans>27 then
db.actor:give_game_news(necrolog_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)
xr_sound.set_sound_play(db.actor:id(), "pda_tips")
if shans>70 then
db.actor:give_game_news(comment_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)
end
end
end
--Сообщение о гибели сталкеров

 

--[[-----------------------------------------------------------------------------------------------
File : xr_death.script
Description: Scheme shows, what's happen when NPC dies
Copyright : 2004 © GSC Game World
Author : GSC Game World
Last edit : 21.07.2013 [...]
--]]-----------------------------------------------------------------------------------------------

--/ -----------------------------------------------------------------
--/ VARIABLEs
--/ -----------------------------------------------------------------
local sModule = script_name()
--/ -----------------------------------------------------------------
local log = function(fmt,...) _G.log(sModule..":"..tostring(fmt),...) end
--/ -----------------------------------------------------------------
--/ CONSTRUCTION SCHEME
--/ -----------------------------------------------------------------------------------------------
--/ Action
--/ -----------------------------------------------------------------------------------------------
class "action_process_death"
--/ ---------------------------------------------
function action_process_death:__init(obj, st)
self.object = obj
self.st = st
self.log = st.log
end
--/------------------------------------------------------------------
--/ CALLBACK
--/------------------------------------------------------------------
function action_process_death:death_callback(oVictim, oWho)
news_death_stalker.necrolog(oVictim) -- Некролог в общий канал
if self.log then log("death_callback:NPC=[%s],Killer=[%s]:(%s)", oVictim and oVictim:name(), oWho and oWho:name(), ">") end --/#~#
if oWho then
-- log("death_callback:Victim=[%s],Id=[%s]<~killed_by=[%s]", oVictim:name(), oVictim:id(), oWho:name(), "") --/#~#
self.st.killer = oWho:id()
self.st.killer_name = oWho:name()

if self.st.killer == idActor then
xr_statistic.addKillCount(self.object)
end
--/ giving a small impulse forward.
local h = hit()
h.draftsman = self.object
h.type = hit.fire_wound
h.direction = oWho:position():sub(self.object:position())
h:bone("bip01_spine")
h.power = 1
h.impulse = 10
self.object:hit(h)
else
log("death_callback:Victim=[%s]<~killed_by=[unknown]:<%s>", oVictim and oVictim:name(), "Info!")
self.st.killer = -1
end

if self.st.info then
if self.log then log("death_callback:NPC=[%s],info=[%s]", self.object:name(), self.st.info, "") end --/#~#
xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.info)
end
if self.st.info2 then
if self.log then log("death_callback:NPC=[%s],info2=[%s]", self.object:name(), self.st.info2, "") end --/#~#
xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.info2)
end

--xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) --/#x#

smart_terrain.on_death( self.object:id() )
end
--/ -----------------------------------------------------------------------------------------------
--/ BINDER
--/ -----------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, st)
--log("add_to_binder:NPC=[%s],scheme=[%s],section=[%s]:(%s)", npc:name(), scheme, section, ">") --/#~#
st.action = this.action_process_death(npc, st)
end
--/------------------------------------------------------------------
--/ SET SCHEME
--/------------------------------------------------------------------
function set_scheme(npc, ini, scheme, section, gulag_name)
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
--/ registration of action, for call of 'callback' and method 'reset_scheme' when changing scheme settings:
xr_logic.subscribe_action_for_events(npc, st, st.action)
--/ fot debug:
if st.log then log("set_scheme:NPC=[%s],scheme=[%s],section=[%s],gulag=[%s]", npc:name(), scheme, section, gulag_name, "") end --/#~#
end
--/------------------------------------------------------------------
--/ RESET SCHEME
--/------------------------------------------------------------------
function reset_scheme(npc, scheme, stor, section)
if stor.log then log("reset_death:NPC=[%s],scheme=[%s],section=[%s]:(%s)", npc and npc:name(), scheme, section, ">") end --/#~#
local scheme_section = Get_Cfg_String(stor.ini, stor.section_logic, "on_death")
if scheme_section and npc then
local info_section = Get_Cfg_String(stor.ini, scheme_section, "on_info")
if info_section then
stor.death.info = xr_logic.parse_condlist(npc, scheme_section, "death", info_section)
end
local info_section2 = Get_Cfg_String(stor.ini, scheme_section, "on_info2")
if info_section2 then
stor.death.info2 = xr_logic.parse_condlist(npc, scheme_section, "death", info_section2)
end
if stor.log then log("reset_death:NPC=[%s],on_death=[%s],on_info=[%s/%s]", npc and npc:name(), scheme_section, info_section, info_section2, "") end --/#~#
end
end
--/------------------------------------------------------------------
--/ REDIRECTs (for compatibility, later delete)
--/------------------------------------------------------------------
function set_death(...)
set_scheme(...)
end
function reset_death(...)
reset_scheme(...)
end
--/ -----------------------------------------------------------------------------------------------

 

Expression : fatal error
Function : CScriptEngine::lua_error
File : script_engine.cpp
Line : 75
Description :
Arguments : LUA error: ...\stalker lost alpha\gamedata\scripts\xr_death.script:31: attempt to index global 'news_death_stalker' (a nil value)

 

Ссылка на комментарий

@Maksud

пользуйся script Syntax Checker для Lua...

 

--Сообщение о гибели сталкеров

function necrolog(oVictim)
local level_name = {
["la01_escape"] = "Кордон",
["la02_garbage"] = "Свалка",
["la03_agroprom"] = "НИИ Агропром",
["la04_darkdolina"] = "Тёмная долина",
["la17u_labx7"] = "Лаборатория X-7",
["la05_bar_rostok"] = "Бар",
["la14_rostok_factory"] = "Завод Росток",
["la07_military"] = "Арм.склады",
["la06_yantar"] = "Янтарь",
["la16u_labx16"] = "Лаборатория X-16",
["la19_country"] = "Деревня",
["la10_radar"] = "Радар",
["la11_pripyat"] = "Припять",
["la12_stancia"] = "ЧАЭС",
["la10u_bunker"] = "Бункер Х-10",
["la12u_sarcofag"] = "Саркофаг",
["la13u_warlab"] = "Варлаб",
["la22_forest"] = "Лес",
["la08_deadcity"] = "Мертвый город",
["la09_swamp"] = "Большие болота",
["la13_generators"] = "Генераторы",
["la04u_darklab"] = "Лаборатория Х-18",
["la13u_oso"] = "Осознание",
["la14u_secret_lab"] = "Секретная лаборатория ЧАЭС",
["la15_darkscape"] = "Темная Лощина",
["la15u_mines"] = "Неизвестная територия",
["la16_lost_factory"] = "Цементный Завод",
["la18_damned"] = "Подземелье припяти",
["la20_forgotten"] = "Стройплощадка",
["la21_generators_2"] = "Генераторы 2",
["la17_outskirts"] = "Чернобыль",
["la20_test"] = "Тест",
["la20_final_test"] = "Тест финальный"
}

local death_komment = {
"Я знал, что он допрыгается...",
"[Вырезано цензурой]",
"Ещё один...",
"Таак...",
"Мдя, ни дня без этого.",
"Одним больше, одним меньше...",
"Все там будем",
"Помянуть надо бы...",
"Зона тебе пухом.",
"Как в воду глядел - скопытился!"
}

local community = {
["actor"] = "Сталкер",
["stalker"] = "Сталкер",
["monolith"] = "Монолит",
["army"] = "Военные",
["bandit"] = "Бандит",
["killer"] = "Наемник",
["ecolog"] = "Эколог",
["dolg"] = "Долг",
["freedom"] = "Свобода",
["dark_stalker"] = "Грех",
["arena_enemy"] = "Опонент",
["zombied"] = "Зомбированный"
}

--Сообщение о гибели сталкеров

local necrolog_text = "\\n%c[255,160,160,160]Погиб сталкер: %c[default]"..oVictim:character_name().."\\n%c[255,160,160,160]Группировка: %c[default]"..community[oVictim:character_community()].."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
local shans = math.random(1,100)
local comment_text = death_komment[math.random(table.getn(death_komment))]

if oVictim and IsStalker(oVictim) and shans>27 then
db.actor:give_game_news(necrolog_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)
xr_sound.set_sound_play(db.actor:id(), "pda_tips")
if shans>70 then
db.actor:give_game_news(comment_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)
end
end
end
--Сообщение о гибели сталкеров

 

  • Спасибо 1
Ссылка на комментарий

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

--Сообщение о гибели сталкеров


-- Некролог (На основе работы тов. Weanchester), Сталкер Лом. Правки Maksud, помощь Капрал Хикс

function necrolog(oVictim)
local level_name = {
["la01_escape"] = "Кордон",
["la02_garbage"] = "Свалка",
["la03_agroprom"] = "НИИ Агропром",
["la04_darkdolina"] = "Тёмная долина",
["la17u_labx7"] = "Лаборатория X-7",
["la05_bar_rostok"] = "Бар",
["la14_rostok_factory"] = "Завод Росток",
["la07_military"] = "Арм.склады",
["la06_yantar"] = "Янтарь",
["la16u_labx16"] = "Лаборатория X-16",
["la19_country"] = "Деревня",
["la10_radar"] = "Радар",
["la11_pripyat"] = "Припять",
["la12_stancia"] = "ЧАЭС",
["la10u_bunker"] = "Бункер Х-10",
["la12u_sarcofag"] = "Саркофаг",
["la13u_warlab"] = "Варлаб",
["la22_forest"] = "Лес",
["la08_deadcity"] = "Мертвый город",
["la09_swamp"] = "Большие болота",
["la13_generators"] = "Генераторы",
["la04u_darklab"] = "Лаборатория Х-18",
["la13u_oso"] = "Осознание",
["la14u_secret_lab"] = "Секретная лаборатория ЧАЭС",
["la15_darkscape"] = "Темная Лощина",
["la15u_mines"] = "Неизвестная територия",
["la16_lost_factory"] = "Цементный Завод",
["la18_damned"] = "Подземелье припяти",
["la20_forgotten"] = "Стройплощадка",
["la21_generators_2"] = "Генераторы 2",
["la17_outskirts"] = "Чернобыль",
["la20_test"] = "Тест",
["la20_final_test"] = "Тест финальный"
}

local death_komment = {
"Я знал, что он допрыгается...",
"[Вырезано цензурой]",
"Ещё один...",
"Таак...",
"Мдя, ни дня без этого.",
"Одним больше, одним меньше...",
"Все там будем",
"Помянуть надо бы...",
"Зона тебе пухом.",
"Как в воду глядел - скопытился!"
}

local community = {
["actor"] = "Сталкер",
["stalker"] = "Сталкер",
["monolith"] = "Монолит",
["army"] = "Военные",
["bandit"] = "Бандит",
["killer"] = "Наемник",
["ecolog"] = "Эколог",
["dolg"] = "Долг",
["freedom"] = "Свобода",
["dark_stalker"] = "Грех",
["arena_enemy"] = "Опонент",
["zombied"] = "Зомбированный"
}

-- Сообщение о гибели сталкеров

local necrolog_text = "\\n%c[255,160,160,160]Погиб сталкер: %c[default]"..oVictim:character_name().."\\n%c[255,160,160,160]Группировка: %c[default]"..community[oVictim:character_community()].."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
local shans = math.random(1,100)
local comment_text = death_komment[math.random(table.getn(death_komment))]

if oVictim and IsStalker(oVictim) and shans>27 then
news_manager.send_tip(db.actor, necrolog_text , math.random(1,4), "necrolog", nil, nil)
-- xr_sound.set_sound_play(db.actor:id(), "Info")
if shans>70 then
news_manager.send_tip(db.actor, death_komment , math.random(1,4), "necrolog", nil, nil)
end
end
end
-- Сообщение о гибели сталкеров

 

--[[-----------------------------------------------------------------------------------------------
File : xr_death.script
Description: Scheme shows, what's happen when NPC dies
Copyright : 2004 © GSC Game World
Author : GSC Game World
Last edit : 21.07.2013 [...]
--]]-----------------------------------------------------------------------------------------------

--/ -----------------------------------------------------------------
--/ VARIABLEs
--/ -----------------------------------------------------------------
local sModule = script_name()
--/ -----------------------------------------------------------------
local log = function(fmt,...) _G.log(sModule..":"..tostring(fmt),...) end
--/ -----------------------------------------------------------------
--/ CONSTRUCTION SCHEME
--/ -----------------------------------------------------------------------------------------------
--/ Action
--/ -----------------------------------------------------------------------------------------------
class "action_process_death"
--/ ---------------------------------------------
function action_process_death:__init(obj, st)
self.object = obj
self.st = st
self.log = st.log
end
--/------------------------------------------------------------------
--/ CALLBACK
--/------------------------------------------------------------------
function action_process_death:death_callback(oVictim, oWho)
news_death_stalker.necrolog(oVictim, oWho) -- Некролог в общий канал
if self.log then log("death_callback:NPC=[%s],Killer=[%s]:(%s)", oVictim and oVictim:name(), oWho and oWho:name(), ">") end --/#~#
if oWho then
-- log("death_callback:Victim=[%s],Id=[%s]<~killed_by=[%s]", oVictim:name(), oVictim:id(), oWho:name(), "") --/#~#
self.st.killer = oWho:id()
self.st.killer_name = oWho:name()

if self.st.killer == idActor then
xr_statistic.addKillCount(self.object)
end
--/ giving a small impulse forward.
local h = hit()
h.draftsman = self.object
h.type = hit.fire_wound
h.direction = oWho:position():sub(self.object:position())
h:bone("bip01_spine")
h.power = 1
h.impulse = 10
self.object:hit(h)
else
log("death_callback:Victim=[%s]<~killed_by=[unknown]:<%s>", oVictim and oVictim:name(), "Info!")
self.st.killer = -1
end

if self.st.info then
if self.log then log("death_callback:NPC=[%s],info=[%s]", self.object:name(), self.st.info, "") end --/#~#
xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.info)
end
if self.st.info2 then
if self.log then log("death_callback:NPC=[%s],info2=[%s]", self.object:name(), self.st.info2, "") end --/#~#
xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.info2)
end

--xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) --/#x#

smart_terrain.on_death( self.object:id() )
end
--/ -----------------------------------------------------------------------------------------------
--/ BINDER
--/ -----------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, st)
--log("add_to_binder:NPC=[%s],scheme=[%s],section=[%s]:(%s)", npc:name(), scheme, section, ">") --/#~#
st.action = this.action_process_death(npc, st)
end
--/------------------------------------------------------------------
--/ SET SCHEME
--/------------------------------------------------------------------
function set_scheme(npc, ini, scheme, section, gulag_name)
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
--/ registration of action, for call of 'callback' and method 'reset_scheme' when changing scheme settings:
xr_logic.subscribe_action_for_events(npc, st, st.action)
--/ fot debug:
if st.log then log("set_scheme:NPC=[%s],scheme=[%s],section=[%s],gulag=[%s]", npc:name(), scheme, section, gulag_name, "") end --/#~#
end
--/------------------------------------------------------------------
--/ RESET SCHEME
--/------------------------------------------------------------------
function reset_scheme(npc, scheme, stor, section)
if stor.log then log("reset_death:NPC=[%s],scheme=[%s],section=[%s]:(%s)", npc and npc:name(), scheme, section, ">") end --/#~#
local scheme_section = Get_Cfg_String(stor.ini, stor.section_logic, "on_death")
if scheme_section and npc then
local info_section = Get_Cfg_String(stor.ini, scheme_section, "on_info")
if info_section then
stor.death.info = xr_logic.parse_condlist(npc, scheme_section, "death", info_section)
end
local info_section2 = Get_Cfg_String(stor.ini, scheme_section, "on_info2")
if info_section2 then
stor.death.info2 = xr_logic.parse_condlist(npc, scheme_section, "death", info_section2)
end
if stor.log then log("reset_death:NPC=[%s],on_death=[%s],on_info=[%s/%s]", npc and npc:name(), scheme_section, info_section, info_section2, "") end --/#~#
end
end
--/------------------------------------------------------------------
--/ REDIRECTs (for compatibility, later delete)
--/------------------------------------------------------------------
function set_death(...)
set_scheme(...)
end
function reset_death(...)
reset_scheme(...)
end
--/ --------------------------------------------------------------------------------

 

Expression : fatal error
Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex
File : x:\stalker\xray-svn-trunk\xr_3da\xrgame\ini_id_loader.h
Line : 147
Description :
Arguments : item by index not found in section game_relations, line communities

 

Ссылка на комментарий
@Maksud, xr_death срабатывает и на смерть монстров, перенеси вызов в xr_motivator, в death_callback. Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...