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

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

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

Что логично:

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

 

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

@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

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

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

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

  • Согласен 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

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

naxac в xr_motivator нет совсем никаких callback. Скрипты ЛА очень сильно отличаются

--[[ ----------------------------------------------------------------------------------------------


File : xr_motivator.script
Description: Motivator binding
Copyright : 2004 © GSC Game World
Author : Didenko Ruslan (Stohe)
Editors : ...
Last edit : 15.06.2013 [...]
--]] ----------------------------------------------------------------------------------------------

--/ -----------------------------------------------------------------
--/ VARIABLEs
--/ -----------------------------------------------------------------
local sModule = script_name()
--/ -----------------------------------------------------------------
local log = function(fmt,...) _G.log(sModule..":"..tostring(fmt),...) end
--/ -----------------------------------------------------------------
--/ Conditions array (evaluators), which have highest priority, and, accordinly, interrupt other scripts/schemes.
--/ -------------------------
tMainProperties = {
[1] = { stalker_ids.property_alive, true }, --/ NPC alive
[2] = { stalker_ids.property_enemy, false}, --/ no enemies
[3] = { stalker_ids.property_danger, false}, --/ no danger
[4] = { stalker_ids.property_anomaly, false} --/ no anomalies
}
tCommonProperties = {
[1] = { xr_evaluators_id.sidor_wounded_base, false }, --/ not wounded
[2] = { xr_evaluators_id.chugai_heli_hunter_base, false }, --/ don't see helicopters
[3] = { xr_evaluators_id.abuse_base, false }, --/ not offended
[4] = { xr_evaluators_id.stohe_meet_base +1, false } --/ no talk
}
tDynamicProperties = {} --/#+#
--/------------------------------------------------------------------------------------------------
--/ Process
--/------------------------------------------------------------------------------------------------
function addCommonProperty( tProperty )
if type(tProperty) == 'table' then
table.insert( tCommonProperties, tProperty )
end
end

function addDynamicProperty( tProperty )
if type(tProperty) == 'table' then
table.insert( tDynamicProperties, tProperty )
end
end

--/ -----------------------------------
function addMainPrecondition( oAction )
for _,v in ipairs (tMainProperties) do
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addCommonPrecondition( oAction )
for _,v in ipairs (tCommonProperties) do
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addGeneralPrecondition( oAction )
addMainPrecondition( oAction )
addCommonPrecondition( oAction )
end

--/#+#
function addDynamicPrecondition( oAction )
for _,v in ipairs (tDynamicProperties) do
-- log("addDynamicPrecondition: %s idEv=[%s], flg=[%s]", oAction.object and oAction.object:name(), v[1], v[2], "") --/#~#
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addAllPrecondition( oAction )
addMainPrecondition( oAction )
addCommonPrecondition( oAction )
addDynamicPrecondition( oAction )
end
--/ -----------------------------------------------------------------------------------------------

 

Мысль твоя мне понятна попробую отследить где еще можно сделать вызов функции

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

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

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

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

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

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

Войти

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

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

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