den_z 37 Опубликовано 23 Февраля 2025 Доброго времени суток... Прошу помощи в правке scripts в файле dmx_mod (в скриптах не силен и "посылать "изучать" LUA просьба - не НАДО!"). Игра СТАЛКЕР ТЧ Народная Солянка АМК+ДМХ мод от 2010 года (от Архары, родная) с правками и дополнениями... Генератор огнесмеси - задумка и схема для огнемета просто "огонь"..., но хотелось бы внести правки - "доработать". Файл находится по пути - gamedata - scripts - dmx_mod: Скрытый текст -- Генератор огнесмеси -- Author - Charsi function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:object("wpn_flame") if flame then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > 1670 then -- кабздец огнемету amk.remove_item(flame) amk.remove_item(ognemet) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else if ammo_elapsed > 1500 then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end В строке local flame=db.actor:object("wpn_flame") указан тип оружия - хотелось бы добавить ещё ("wpn_rg10_ognemet") или подобное... Я пытался добавлять по разному - не получается: то "схема" не видит "wpn_rg10_ognemet" когда ГГ берет его в руки, то заправляет только "wpn_flame" первым, даже если он лежит в рюкзаке, а "wpn_rg10_ognemet" в этот момент в руках у ГГ... Нужно, чтобы при наличии двух ("wpn_") в рюкзаке ГГ, генератор огнесмеси заправлял их только тогда, когда ГГ брал в руки ("wpn_")... поочередно. И ещё, можно ли реализовать схему: чтобы "-- кабздец огнемету" происходил у разных ("wpn_") при разном давлении... типа: "if ammo_elapsed > 1670 then -- кабздец огнемету" для ("wpn_flame"), а для следующего типа ("wpn_rg10_ognemet") был например: " if ammo_elapsed > 670 then -- кабздец огнемету". Можно ли это все реализовать в этой схеме Генератора Огнесмеси??? Заранее спасибо, если кто из Вас откликнется... (Народная Соль такая "непредсказуемая" - ЕЁ и так и сяк, а она всё "терпит"...) Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 23 Февраля 2025 @Norman Eisenherz Я всё вставил в script - dmx_mod. Получилось так: Скрытый текст -- Генератор огнесмеси -- Author - Charsi local feuer = { wpn_flame = true, wpn_rg10_ognemet = true,} function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[ flame:section() ] then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > 1670 then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else if ammo_elapsed >= 1500 then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end -- Генератор огнесмеси заработал... Единственное, осталось изменить "-- кабздец огнемету" - чтобы высокое давление соответствовало каждому типу ( wpn_) :" if ammo_elapsed > 1670 then -- кабздец огнемету" соотносилось к "wpn_flame" или "if ammo_elapsed > 670 then -- кабздец огнемету" к "wpn_rg10_ognemet" - после оружие разрушалось... По поводу разрушения проверил - разрушаются оба ствола... Осталось прописать давление "-- кабздец огнемету" для каждого ствола. Как сделать? Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 24 Февраля 2025 Norman Eisenherz Я вставил новые строки в script - dmx_mod -- Генератор огнесмеси, получилось так: Скрытый текст -- Генератор огнесмеси -- Author - Charsi local feuer = { wpn_flame = 1670, wpn_rg10_ognemet = 670, wpn_flame2 = 4670,} function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else if ammo_elapsed >= 1500 then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Генератор Огнесмеси заработал по схеме: "wpn_flame = 1670 -- кабздец огнемету" "wpn_rg10_ognemet = 670 -- кабздец огнемету" "wpn_flame2 = 4670 -- кабздец огнемету" При зарядке до "предела" происходит ИМЕННО "-- кабздец огнемету"... с его разрушением, по достижении определённого давления. Единственное "НО", при первой замене в строке: local flame=db.actor:object("wpn_flame") на local flame=db.actor:item_in_slot(2) с заменой db.actor:object на db.actor:item - при взрыве огнемета перестал "появляться" "flamethrower_bad", а др. запчасти манометр, трубка и горелка с баллоном "вываливаются" из рюкзака ГГ и всё "видно". Вариант др. Генератор Огнесмеси-2 для заправки "бочкой" - "explosive_barrel" Скрытый текст -- Генератор огнесмеси-2 -- Author - Народная Солянка local feuer = { wpn_flame = 1670, wpn_flame2 = 4670,} function use_item_ammo_flame_transfer2(obj) if obj:section() == "item_ammo_flame_transfer2" then amk.spawn_item_in_inv("item_ammo_flame_transfer2") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local bochka_fuel=db.actor:object("explosive_barrel") if bochka_fuel then local ammo_elapsed = flame:get_ammo_in_magazine() + 1500 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.4 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else if ammo_elapsed >= 4500 then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end amk.remove_item(bochka_fuel) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия бензина!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Во втором варианте - хотелось бы дополнить "разный" вид топлива для зарядки. В строке local bochka_fuel=db.actor:object("explosive_barrel") добавить "explosive_barrel_low" или ещё что-то... Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 25 Февраля 2025 @Norman Eisenherz, доброго дня... Я по поводу "выпадение запчастей на пол..." - из списка указанного в script - генератор огнесмеси - Скрытый текст local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп "вываливаются на пол" всё, кроме "flamethrower_bad" - его нет. Если "схему" работы "генератора огнесмеси" вернуть к "оригиналу", то при взрыве огнемета "wpn_flame" или "wpn_flame2" на пол "вываливались" все запчасти из списка... вместе с "убитым" "flamethrower_bad". После замены в script в строке: local flame=db.actor:object("wpn_flame") db.actor:object на db.actor:item ( получилось: local flame=db.actor:item_in_slot(2) ) то "запчасти на пол" вываливаются без "flamethrower_bad" - в чём причина? Norman Eisenherz, по поводу расширения списка "бочек и канистр". Я не совсем понял, а может совсем не понял - установил часть написанного в секцию scriptа, получилось так: Скрытый текст -- Генератор огнесмеси-2 -- Author - Народ (+) local fuel = {explosive_barrel = true, explosive_barrel_low = true,} function get_fuel() for i = 0, db.actor:object_count() -1 do -- можно также через iterate_inventory или inventory_for_each local obj = db.actor:object(i) if fuel[obj:section()] then return obj end end end local feuer = { wpn_flame = 1670, wpn_flame2 = 4670,} function use_item_ammo_flame_transfer2(obj) if obj:section() == "item_ammo_flame_transfer2" then amk.spawn_item_in_inv("item_ammo_flame_transfer2") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then (+) local bochka_fuel=get_fuel() if bochka_fuel then local ammo_elapsed = flame:get_ammo_in_magazine() + 1500 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.4 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else local feuer = {wpn_flame = 1500, wpn_flame2 = 4500,} if ammo_elapsed >= feuer[flame:section()] then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end amk.remove_item(bochka_fuel) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия бензина!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end В строке - local fuel = { sect1 = true, sect2 = true, … } заменил на - local fuel = {explosive_barrel = true, explosive_barrel_low = true,} Игра не запускается, вылетает с логом и "ругается" на dmx_mod естественно... (уже не первый раз - кода что-то не так правишь в scripte). Если, можно, то обьясните как вставить...? Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 25 Февраля 2025 (изменено) Balavnik и ted.80 - спасибо, что откликнулись... Запятые я убрал в строках scripta - dmx_mod -- Генератор огнесмеси, теперь это так: local feuer = { wpn_flame = 1670, wpn_flame2 = 4670} и local feuer = {wpn_flame = 1500, wpn_flame2 = 4500} - просто Игра стала быстрее "грузится"... У меня вопрос по правке некоторых строк в scripte "-- Генератор огнесмеси". Есть файл dmx_mod, в нем часть скрипта под названием "-- Генератор огнесмеси" + Я добавил "-- Генератор огнесмеси-2" - получилось с правками от Norman Eisenherz, схема рабочая - В первом случае, "Генератор огнесмеси" теперь заряжает три разных типа оружия { wpn_flame, wpn_rg10_ognemet, wpn_flame2}. Во втором - { wpn_flame, wpn_flame2}. Получилось сделать, чтобы каждому типу оружия своё давление, до полной зарядки и его взрыв "-- кабздец огнемету". Единственное, при взрыве огнемёта "wpn_flame" и "wpn_flame2", из выпадающих "запчастей на пол" не выпадает "flamethrower_bad". До замены в "оригинальном" scripte в строке: local flame=db.actor:object("wpn_flame") на правку - получилось: local flame=db.actor:item_in_slot(2) ) то "запчасти на пол" вываливаются почти все, но без "flamethrower_bad" - в чём причина? До правки - всё выпадало, в чём причина??? Вот две части правленые: Скрытый текст -- Генератор огнесмеси -- Author - Charsi local feuer = { wpn_flame = 1670, wpn_rg10_ognemet = 670, wpn_flame2 = 4670} function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else local feuer = {wpn_flame = 1500, wpn_rg10_ognemet = 600, wpn_flame2 = 4500} if ammo_elapsed >= feuer[flame:section()] then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end ------------------------------------------------------------------------------------------------------------------------ -- Генератор огнесмеси-2 -- Author - Народ local feuer = { wpn_flame = 1670, wpn_flame2 = 4670} function use_item_ammo_flame_transfer2(obj) if obj:section() == "item_ammo_flame_transfer2" then amk.spawn_item_in_inv("item_ammo_flame_transfer2") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local bochka_fuel=db.actor:object("explosive_barrel") if bochka_fuel then local ammo_elapsed = flame:get_ammo_in_magazine() + 1500 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.4 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else local feuer = {wpn_flame = 1500, wpn_flame2 = 4500} if ammo_elapsed >= feuer[flame:section()] then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end amk.remove_item(bochka_fuel) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия бензина!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Во втором варианте - хотелось бы дополнить "разный" вид топлива для зарядки. В строке local bochka_fuel=db.actor:object("explosive_barrel") добавить "explosive_barrel_low" или ещё что-то... "Схему" которую предложил Norman Eisenherz, Я пытался править по его scriptу - Расширение списка канистр: если годится любой объект без привязки к типу огнемета, то можно оформить через дополнительный обработчик, как показано ниже. Как правильно ВСЁ это "вставить" в скрипт, чтобы работало??? Игра не запускается, вылетает с логом и "ругается" на dmx_mod естественно... (уже не первый раз - кода что-то не так правишь в scripte). Если, можно, то обьясните как вставить...? Изменено 25 Февраля 2025 пользователем den_z Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 25 Февраля 2025 Игра не запускается и "ругается" с логом - в том случае, если Я пытаюсь к существующему скрипту "-- Генератор огнесмеси" добавить следующие правки "Расширение списка канистр: если годится любой объект без привязки к типу огнемета, то можно оформить через дополнительный обработчик, как показано ниже". А так всё работает - пока вылеты, большей части, по стеку (стек оверлофф). Вот оригинал текста в scripte: Скрытый текст -- Генератор огнесмеси -- Author - Charsi function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:object("wpn_flame") if flame then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > 1150 then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else if ammo_elapsed > 1000 then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Поделиться этим сообщением Ссылка на сообщение
den_z 37 Опубликовано 25 Февраля 2025 @Купер, спасибо за совет. Скрытый текст Да, Я этой прогой, чеккером, несколько лет назад проверял весь "массив" script в НародСоль - работает хорошо. Только не всегда понимаешь, ка эту ошибку заменить - Я с программирование не на "ТЫ". Большей частью - интуитивно - сравниваю - "пошла, не пошла". С запятыми "," - "схема" "--Генератор огнесмеси" тоже работала... Вообще при общении с "ВАМИ" узнаёшь много нового, по части правок. По большей части, по СТАЛКЕРУ т.е. по ТЧ НародСоль АМК+ДМХ моду версии 1.3.5 от Архары с допами и прочим-прочим... - сама Игра "запала" в душу больше чем все остальные... Хотелось немного "подправить", но не так в О.О.П.МАК... @Купер, Я разобрался как вставить в script "--Генератор огнесмеси" часть кода, спасибо за подсказки - смотри ниже... 24.02.2025 в 20:00, Norman Eisenherz сказал: Расширение списка канистр: если годится любой объект без привязки к типу огнемета, то можно оформить через дополнительный обработчик, как показано ниже. всё, "схема" заработала - теперь можно использовать разные виды топлива... для "--Генератора огнесмеси". Вот Рабочая "схема" для "--Генератора огнесмеси" и "--Генератора огнесмеси-2". Скрытый текст -- Генератор огнесмеси -- Author - Charsi local feuer = { wpn_flame = 1670, wpn_rg10_ognemet = 670, wpn_flame2 = 4670} function use_item_ammo_flame_transfer(obj) if obj:section() == "item_ammo_flame_transfer" then amk.spawn_item_in_inv("item_ammo_flame_transfer") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local ballon=db.actor:object("amk_ballon") local kanistra=db.actor:object("amk_kanistra") if ballon and kanistra then local ammo_elapsed = flame:get_ammo_in_magazine() + 150 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.3 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else local feuer = {wpn_flame = 1500, wpn_rg10_ognemet = 600, wpn_flame2 = 4500} if ammo_elapsed >= feuer[flame:section()] then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси", nil, 10, "inv_icon") end amk.remove_item(ballon) amk.remove_item(kanistra) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия коллоидного газа или бензина!", "Генератор огнесмеси", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Скрытый текст -- Генератор огнесмеси-2 -- Author - Народ local fuel = {explosive_barrel = true, explosive_barrel_low = true} function get_fuel() for i = 0, db.actor:object_count() -1 do -- можно также через iterate_inventory или inventory_for_each local obj = db.actor:object(i) if fuel[ obj:section() ] then return obj end end end local feuer = { wpn_flame = 1670, wpn_flame2 = 4670} function use_item_ammo_flame_transfer2(obj) if obj:section() == "item_ammo_flame_transfer2" then amk.spawn_item_in_inv("item_ammo_flame_transfer2") play_sound([[device\pda\pda_sos]]) local flame=db.actor:item_in_slot(2) if flame and feuer[flame:section()] then local bochka_fuel=get_fuel() if bochka_fuel then local ammo_elapsed = flame:get_ammo_in_magazine() + 1500 if ammo_elapsed > feuer[flame:section()] then -- кабздец огнемету amk.remove_item(flame) local pos=db.actor:position():add(db.actor:direction():mul(1)) -- спавним детали local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() alife():create("gorelka",pos,lv,gv) alife():create("manometr",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("trubka",pos,lv,gv) alife():create("flamethrower_bad",pos,lv,gv) alife():create("flamethrower_bad2",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) alife():create("ammo_balon_rg10",pos,lv,gv) db.actor.health = -0.4 -- понижаем хп play_sound([[weapons\t_f1_explosion]]) -- звук взрыва level.add_cam_effector("camera_effects\\fusker.anm",959,false,"") -- камэффектор удара в лицо else local feuer = {wpn_flame = 1500, wpn_flame2 = 4500} if ammo_elapsed >= feuer[flame:section()] then amk.send_tip("Опасно! Критическое давление!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end amk.remove_item(bochka_fuel) flame:set_ammo_elapsed(ammo_elapsed) end else amk.send_tip("Невозможно сгенерировать огнесмесь без наличия бензина!", "Генератор огнесмеси-2", nil, 10, "inv_icon") end else amk.send_tip("Нет огнемета, чтобы его заправить!", "Генератор огнесмеси", nil, 10, "inv_icon") end end end Спасибо за подсказки и за "схему" @Norman Eisenherz!!! Единственное, при взрыве огнемёта "wpn_flame" и "wpn_flame2", из выпадающих "запчастей на пол" (список их scripte) не выпадает только "flamethrower_bad". После замены в "оригинальном" scripte в строке: local flame=db.actor:object("wpn_flame") на правку - получилось: local flame=db.actor:item_in_slot(2) ) И "запчасти на пол" вываливаются почти все, но без "flamethrower_bad". В чём причина? До правки - всё выпадало, в чём причина??? Может быть из-за того, что "flamethrower_bad" считается object-ом? 1 1 Поделиться этим сообщением Ссылка на сообщение