Kondr48 314 Опубликовано 15 Февраля 2017 Поделиться Опубликовано 15 Февраля 2017 (изменено) сигарета валяется на полу Что логично: db.actor:drop_item(oitem) --- А вообще, скорее всего, происходит так: у модели сигареты анимация только курения, при подборе слот активируется, вот анимация курева и проигрывается. Следовательно этот худовый предмет надо удалять. Изменено 15 Февраля 2017 пользователем Kondr48 Ссылка на комментарий
pc-2 139 Опубликовано 15 Февраля 2017 Поделиться Опубликовано 15 Февраля 2017 (изменено) @Kondr48, Ну да логично, если это убрать, то объект kurevo появляется в рюкзаке, а ГГ продолжает курить до конца анимации, потом Expression : assertion failed Function : xrServer::Process_event_rejectFile : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cppLine : 12Description : e_parent && e_entity Дааа, Бином Ньютона!!!! Изменено 15 Февраля 2017 пользователем pc-2 Ссылка на комментарий
Kondr48 314 Опубликовано 15 Февраля 2017 Поделиться Опубликовано 15 Февраля 2017 pc-2, я не знаю что у Вас там работает не так. Честно). Лично я бы сделал иначе. В колбеке на использование сигареты (на классе антирада) вызывал бы спавн худового объекта сигареты, затем в колбеке на взятие предмета уже ловил получение худ предмета, активировал его слот, запускал таймер равный длительности анимации, а по окончании очищал бы слот и выводил нужное сообщение. (Ну и заспавнить фейк-предмет который там даёт нужные бафы можно где-нибудь заранее, например вместе со спавном худ-сигареты, и съесть по окончании таймера) Конечно костыльно-заморочено, но без правок движка, в принципе, так оно и делается. Ссылка на комментарий
pc-2 139 Опубликовано 15 Февраля 2017 Поделиться Опубликовано 15 Февраля 2017 @Kondr48, Кое, что поменял, ну всё равно результат тод же. Эта функция db.actor:eat(db.actor:object("kurevo")) не работает. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 16 Февраля 2017 Поделиться Опубликовано 16 Февраля 2017 (изменено) @Kirgudu, так даже лучше! 4.5e-009 - Эквивалентно 4.5 * 10^-9 => что 10 знаков после запятой. Десять, потому что перед 'e', в дробной части, есть цифра. Если в дробной части нет цифр, то есть число целое, то количество цифр после запятой = степени 'e'. Например: 4e-010(0.0000000004) - 10 чисел после запятой. Изменено 16 Февраля 2017 пользователем Kober(BRUC) Ссылка на комментарий
pc-2 139 Опубликовано 16 Февраля 2017 Поделиться Опубликовано 16 Февраля 2017 @Kondr48, Спасибо большое за совет, вот эту функцию function item_update() local item = db.actor:active_item()if not (item and item:section() == "sigaret") thenif snd_obj and snd_obj:playing() thensnd_obj:stop()endreturnend я привел к такому виду function item_update()']function item_update() local item = db.actor:active_item()if not (item and item:section() == "sigaret") thenif snd_obj and snd_obj:playing() thensnd_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"))endreturnend и всё заработало!!! 1 Ссылка на комментарий
aka_sektor 1 476 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 (изменено) Пытаюсь заставить работать схему 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() Таким образом, на уровне мишень теперь лежит, и зациклен звук того, как она ложиться.При попадании она поднимается, и немного погодя снова ложиться. Но ведь, она должна стоять "молча", и только при попадании ложиться, и немного погодя вставать. В общем, непонятно куда дальше копать. Изменено 18 Февраля 2017 пользователем aka_sektor Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
hi_flyer 75 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 Такой вопрос. Можно ли добавлять мапспот без привязки его к какому либо объекту? Например к id вертекса? Ссылка на комментарий
Карлан 1 049 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 http://www.amk-team.ru/forum/topic/5525-soc-kovyriaemsia-v-fajlakh/?p=1032267 Ссылка на комментарий
dsh 3 824 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 @Карлан, ну так приоткрой тайну, как основываясь на информации в том посте, поставить метку на произвольную позицию? Что из тебя вытягивать нужно. Хотел помочь, пиши полезную информацию. Или тебе покрасоваться в очередной раз? 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Карлан 1 049 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 (изменено) @dsh, подобную информацию нужно воспринимать критически, а ты в очередной раз не на то обращаешь внимание. Основываясь на информации в посте, смотри, нужно вызвать функцию и передать туда требуемые параметры, это тип метки, описание, если его нет, то устанавливается "no_hint", далее, собственно сам вектор позиции и имя уровня на котором мы планируем поставить метку. Метка установлена Изменено 18 Февраля 2017 пользователем Карлан Ссылка на комментарий
Kondr48 314 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 (изменено) Карлан, в посте написано о движковых правках для этого, следовательно на чистой игре (на любой доступной всем версии движка) не сработает, следовательно, без приложения нужной правки это практически бесполезная, все же, информация, как о мне Если у вас есть какие-то аргументы в противовес моему коду - приводите выложенному коду? а как я могу приводить что то, если у меня не получится заценить его работоспособность? Как и у всех, кроме 26 человек я полагаю. Я делаю вывод, что моих текстовых наводок предельно достаточно Смотря для чего, для того чтобы посмотреть и заценить как работает - явно не достаточно. Вот сколько все лежит, а скачали только 26 человек. Где-то код лежит? Исходники движка? Так кроме 26 человек никто не знает где это лежит, мб потому и не качают? Или речь снова о текстах на пастбине?) Изменено 18 Февраля 2017 пользователем Kondr48 1 Ссылка на комментарий
naxac 2 447 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 Можно ли добавлять мапспот без привязки его к какому либо объекту? В чистой игре - нет. Я делал так: спавнил там, где надо поставить метку, рестриктор (без логики и шейпа, просто как объект) и уже на него ставил метку. И id рестриктора сохранял в пстор актёру, чтобы потом можно было удалить. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Карлан 1 049 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 (изменено) Закрыть давно пора. Изменено 18 Февраля 2017 пользователем Карлан Добавлено Dennis_Chikin, 18 Февраля 2017 Ну я в общем рад, что ссылка на ftp в принципе, при проявлении некоторой сообразительности, на форуме все-таки находима. Однако, я предупреждал, что такое требование по "сообразительности" будет отпугивать, и так оно и есть. С чем и возьмите. И я настоятельно предлагаю на этом тред и закрыть. Ссылка на комментарий
Maksud 34 Опубликовано 18 Февраля 2017 Поделиться Опубликовано 18 Февраля 2017 Доброго времени суток! Ковыряю Лост Альфу, и тут с толкнулся с проблемой в виде непонимания работы скриптов. Короче суть в том, что хочу приколхозить скрипт оповещающий о гибели сталкеров. За основу взял наработку из этой темы, за авторством Сталкер Лом + ряд своих изменений под реалии Лост Альфы. Если кто сможет помочь заставить работать сие творение буду очень благодарен. Я в скриптах можно сказать 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 thendb.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 thendb.actor:give_game_news(comment_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)endendend--Сообщение о гибели сталкеров --[[-----------------------------------------------------------------------------------------------File : xr_death.scriptDescription: Scheme shows, what's happen when NPC diesCopyright : 2004 © GSC Game WorldAuthor : GSC Game WorldLast 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 = objself.st = stself.log = st.logend--/--------------------------------------------------------------------/ 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 thenxr_statistic.addKillCount(self.object)end--/ giving a small impulse forward.local h = hit()h.draftsman = self.objecth.type = hit.fire_woundh.direction = oWho:position():sub(self.object:position())h:bone("bip01_spine")h.power = 1h.impulse = 10self.object:hit(h)elselog("death_callback:Victim=[%s]<~killed_by=[unknown]:<%s>", oVictim and oVictim:name(), "Info!")self.st.killer = -1endif self.st.info thenif 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)endif self.st.info2 thenif 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 thenlocal info_section = Get_Cfg_String(stor.ini, scheme_section, "on_info")if info_section thenstor.death.info = xr_logic.parse_condlist(npc, scheme_section, "death", info_section)endlocal info_section2 = Get_Cfg_String(stor.ini, scheme_section, "on_info2")if info_section2 thenstor.death.info2 = xr_logic.parse_condlist(npc, scheme_section, "death", info_section2)endif 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 --/#~#endend--/--------------------------------------------------------------------/ REDIRECTs (for compatibility, later delete)--/------------------------------------------------------------------function set_death(...)set_scheme(...)endfunction reset_death(...)reset_scheme(...)end--/ ----------------------------------------------------------------------------------------------- Expression : fatal errorFunction : CScriptEngine::lua_errorFile : script_engine.cppLine : 75Description : Arguments : LUA error: ...\stalker lost alpha\gamedata\scripts\xr_death.script:31: attempt to index global 'news_death_stalker' (a nil value) Ссылка на комментарий
Капрал Хикс 534 Опубликовано 19 Февраля 2017 Поделиться Опубликовано 19 Февраля 2017 @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 thendb.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 thendb.actor:give_game_news(comment_text, "ui\\ui_iconstotal",Frect():set(83,470,83,47),3000,3000)endendend--Сообщение о гибели сталкеров 1 Ссылка на комментарий
Maksud 34 Опубликовано 19 Февраля 2017 Поделиться Опубликовано 19 Февраля 2017 С прошлым вылетом разобрался. Заставил работать скрипт...Но...Столкнулся с другой проблемой. При смерти мутантов, а именно плоти в начале игры, происходит новый вылет. Природа мне его не ясна. В скрипте прописаны исключительно группировки, но никак не мутанты. Облазил все файлы отвечающие за отображение новостей, файл где прописаны отношения к группировкам и репутации. Так и не понял в чем соль... --Сообщение о гибели сталкеров -- Некролог (На основе работы тов. 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 thennews_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 thennews_manager.send_tip(db.actor, death_komment , math.random(1,4), "necrolog", nil, nil)endendend-- Сообщение о гибели сталкеров --[[-----------------------------------------------------------------------------------------------File : xr_death.scriptDescription: Scheme shows, what's happen when NPC diesCopyright : 2004 © GSC Game WorldAuthor : GSC Game WorldLast 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 = objself.st = stself.log = st.logend--/--------------------------------------------------------------------/ 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 thenxr_statistic.addKillCount(self.object)end--/ giving a small impulse forward.local h = hit()h.draftsman = self.objecth.type = hit.fire_woundh.direction = oWho:position():sub(self.object:position())h:bone("bip01_spine")h.power = 1h.impulse = 10self.object:hit(h)elselog("death_callback:Victim=[%s]<~killed_by=[unknown]:<%s>", oVictim and oVictim:name(), "Info!")self.st.killer = -1endif self.st.info thenif 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)endif self.st.info2 thenif 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 thenlocal info_section = Get_Cfg_String(stor.ini, scheme_section, "on_info")if info_section thenstor.death.info = xr_logic.parse_condlist(npc, scheme_section, "death", info_section)endlocal info_section2 = Get_Cfg_String(stor.ini, scheme_section, "on_info2")if info_section2 thenstor.death.info2 = xr_logic.parse_condlist(npc, scheme_section, "death", info_section2)endif 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 --/#~#endend--/--------------------------------------------------------------------/ REDIRECTs (for compatibility, later delete)--/------------------------------------------------------------------function set_death(...)set_scheme(...)endfunction reset_death(...)reset_scheme(...)end--/ -------------------------------------------------------------------------------- Expression : fatal errorFunction : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndexFile : x:\stalker\xray-svn-trunk\xr_3da\xrgame\ini_id_loader.hLine : 147Description : Arguments : item by index not found in section game_relations, line communities Ссылка на комментарий
naxac 2 447 Опубликовано 20 Февраля 2017 Поделиться Опубликовано 20 Февраля 2017 (изменено) @Maksud, xr_death срабатывает и на смерть монстров, перенеси вызов в xr_motivator, в death_callback. Изменено 20 Февраля 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Maksud 34 Опубликовано 20 Февраля 2017 Поделиться Опубликовано 20 Февраля 2017 naxac в xr_motivator нет совсем никаких callback. Скрипты ЛА очень сильно отличаются --[[ ---------------------------------------------------------------------------------------------- File : xr_motivator.scriptDescription: Motivator bindingCopyright : 2004 © GSC Game WorldAuthor : 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' thentable.insert( tCommonProperties, tProperty )endendfunction addDynamicProperty( tProperty )if type(tProperty) == 'table' thentable.insert( tDynamicProperties, tProperty )endend--/ -----------------------------------function addMainPrecondition( oAction )for _,v in ipairs (tMainProperties) dooAction:add_precondition( world_property(v[1],v[2]) )endendfunction addCommonPrecondition( oAction )for _,v in ipairs (tCommonProperties) dooAction:add_precondition( world_property(v[1],v[2]) )endendfunction 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]) )endendfunction addAllPrecondition( oAction )addMainPrecondition( oAction )addCommonPrecondition( oAction )addDynamicPrecondition( oAction )end--/ ----------------------------------------------------------------------------------------------- Мысль твоя мне понятна попробую отследить где еще можно сделать вызов функции Ссылка на комментарий
naxac 2 447 Опубликовано 20 Февраля 2017 Поделиться Опубликовано 20 Февраля 2017 @Maksud, точно лост альфа же. В bind_stalker ищи. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти