WinCap 176 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 3 часа назад, mdm64 сказал: возможной реализации "невидимки" Как уже сказал @dsh, самый простой вариант добавить новое условие в функцию "is_enemy()" в "xr_combat_ignore.script". Если надет нужный броник, то функция возвращает false. Скрытый текст function is_enemy(obj, enemy, st, not_check_sim) ... if st.enabled == false then return true end -- МаскХалат if enemy:id() == db.actor:id() then local bronik = db.actor:item_in_slot(7) if bronik and bronik:section() == "maskhalat" then return false end end ... end 1 3 Цитата S.T.A.L.K.E.R. Tools Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
mdm64 190 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @WinCap, Да, согласен, действительно очень просто, решение в несколько строк... Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Romann 556 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 11 минут назад, WinCap сказал: самый простой вариант Ну не всё так просто - это не реализация "невидимки", это всего лишь некий игнор, враг просто не будет атаковать, но по факту актора будут все видеть, и даже на него реагировать. И назвать такое "невидимкой" у меня лично язык не повернётся, ИМХО. А вот сделать полную реализацию невидимки, когда мобы актора не просто игнорят - а полностью не видят и не реагируют - вот это уже "невидимка". 4 Цитата Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
mdm64 190 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 (изменено) @Romann, Соглашусь полностью, но именно так была реализована "невидимка" в Солянке, просто другой реализации я не видел. Я бы даже сказал так - это именно маскхалат, когда враги тебя ощущают, но не видят отчётливо настолько, чтобы стрелять. А "невидимка" это да - когда сидят "три мартышки"... и четвёртая с КПК.... Изменено 29 Сентября 2020 пользователем mdm64 1 Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
WinCap 176 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @mdm64, вариант скрипта, с проверкой расстояния и времени суток: Скрытый текст if enemy:id() == db.actor:id() then local bronik = db.actor:item_in_slot(7) if bronik and bronik:section() == "maskhalat" then local dist = 10 -- ночью if in_time_interval(10, 17) then dist = 50 -- днем else if in_time_interval(6, 21) then dist = 35 -- утром/вечером end if obj:position():distance_to(enemy:position()) > dist then return false end end end 1 1 Цитата S.T.A.L.K.E.R. Tools Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
mdm64 190 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @WinCap, А ведь на этот скрипт можно "прикрутить" совершенно уникальные условия для выполнения тех или иных квестов! И в частности, с фотографированием нужных объектов или НПС... Вот только нигде пока не нашёл аддона с фотиком, как в Фотографе... 1 Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
phalcor 23 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 А возможно заспавнить физический объект? Например, деревянный ящик, такой, как рядом с Прапором? На котором магнитофон стоит. Делаю, как ниже. Рюкзак спавнится, а какую секцию указать для ящика? local a_pos = db.actor:position() local xpos=a_pos.x+2 local ypos=a_pos.y local zpos=a_pos.z local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() local newOBJ=alife():create("inventory_box", xyz(xpos,ypos,zpos), lv,gv) Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
HellRatz 2 208 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 53 минуты назад, phalcor сказал: а какую секцию указать для ящика? Нужно создать предмет (естественно не подбираемый, хотя можно и ящики собирать если нужно) с визуалом ящика, потом спавнить как любой предмет. Но все же советую делать такие вещи через СДК, подобные костыли — уровень 2007 года. 1 2 Цитата L2D | GTA 3 Map X-Ray + Parking NFS:U2 X-Ray Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
phalcor 23 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 @HellRatz, получается, что самый обычный деревянный ящик скриптом я заспавнить не смогу без создания своего предмета? Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
HellRatz 2 208 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 2 минуты назад, phalcor сказал: обычный деревянный ящик скриптом я заспавнить не смогу Деревянный ящик — это зашитая в спавн секция динамического объекта с прописанным визуалом этого самого ящика. Соответственно — нет. Тебе нужно по аналогии создать в конфигах предмет с прописанным визуалом, и спавнить непосредственно предмет, а не модель. 1 Цитата L2D | GTA 3 Map X-Ray + Parking NFS:U2 X-Ray Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
phalcor 23 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 (изменено) Получилось! 1. Создаём свой предмет в items.ltx: [phalcor_woodbox]:O_PHYS_S visual = dynamics\box\big_box.ogf ;Большой деревянный зелёный ящик remove_time = 9999 2.Спавним предмет с секцией "phalcor_woodbox" 3. всё. Изменено 30 Сентября 2020 пользователем phalcor 1 Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Black_Raven_03 8 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 (изменено) Нужна помощь - при попытке выполнить такой код: Скрытый текст function dots:dots1() edit_box = self:GetEditBox("edit_box") edit_box2 = self:GetEditBox("edit_box2") clan = tostring(edit_box:GetText()) amount = tonumber(edit_box2:GetText()) --get_console():execute(clan) --get_console():execute(amount) --get_console():execute("Started") if db.actor then -- self:on_quit() -- get_console():execute("main_menu off") get_console():execute("Phase1") if clan==nil then clan="stalker" end if amount==nil then amount=1 end --current=relation_registry:community_goodwill(clan, 0) get_console():execute("Phase2") relation_registry:set_community_goodwill(clan, 0, math.min(5000, amount)) get_console():execute("Phase3") end end вылетает на стол с такой вот ошибкой: [02.10.20 16:23:52.569] ******************************************************************************** [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR: [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! stack traceback: [C]: at 0x07fed88bf770 [C]: in function 'set_community_goodwill' g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52> [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] FATAL ERROR [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : d:\_work\forks\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp [error]Line : 52 [error]Description : [CScriptEngine::lua_pcall_failed]: [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! [02.10.20 16:23:52.576] ***************************[ScriptCrashHandler]********************************** [02.10.20 16:23:52.576] stack traceback: [C]: at 0x07fed88bf770 [C]: in function 'set_community_goodwill' g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52> [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] string (*temporary) : [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] Table: (*temporary) [02.10.20 16:23:52.576] function (*temporary).set_community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).clear_personal_relations : [[function]] [02.10.20 16:23:52.576] function (*temporary).community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).change_community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).set_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).clear_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).get_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).change_personal_goodwill : [[function]] [02.10.20 16:23:52.576] string (*temporary) : stalker [02.10.20 16:23:52.576] number (*temporary) : 0.000000 [02.10.20 16:23:52.576] number (*temporary) : 2000.000000 [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] Userdata: self [02.10.20 16:23:52.576] userdata self.dialog : (CUIStatic): 00000000170B2A80 [02.10.20 16:23:52.576] Userdata: self.owner [02.10.20 16:23:52.576] userdata self.owner.message_box : (CUIMessageBoxEx): 0000000040B32920 [02.10.20 16:23:52.576] number self.owner.mbox_mode : 0.000000 [02.10.20 16:23:52.576] userdata self.owner.shniaga : (CUIMMShniaga): 0000000040781180 [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] ******************************************************************************** Вот чего ОГСРу неймётся, кто-нить может объяснить? Какое исключение и где именно? Изменено 4 Октября 2020 пользователем Опричник спойлер Цитата Скрытый текст AMD Phenom X4 965 Black Edition, 4GB DDR3, AMD Radeon R7 240 2GB GDDR4 и нормально сталкерим в НА5.1, НА7, ОГСЕ-0692, ОГСЕ-0693, НС2016, OFFLIFE, ЗЧ! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
dsh 3 096 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 28 minutes ago, Black_Raven_03 said: relation_registry:set_community_goodwill Скорее всего вот в этом. Разве relation_registry - это класс и у него есть метод set_community_goodwill? 1 Цитата dsh mod: https://github.com/dsh2dsh/op2ogse Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Black_Raven_03 8 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 (изменено) @dsh, в dialogs.script в НА7 вступление в Долг так же реализовано, потому решил использовать этот же метод для своего экстренно-читерского исправлятора отношений; собственно кусок скрипта: Скрытый текст ----------------------------------------------------------------------------------- -- Dolg Community ----------------------------------------------------------------------------------- function actor_in_dolg(actor, npc) if db.actor then return db.actor:character_community() == "actor_dolg" end return false end function actor_not_in_dolg(actor, npc) return not actor_in_dolg(actor, npc) end function actor_set_dolg(actor, npc) printf("ACTOR NOW IN [DOLG] COMMUNITY") if db.actor then db.actor:set_character_community("actor_dolg", 0, 0) update_info_portions_dolg() if not db.actor:has_info("mil_leader_quest2_complete") then relation_registry.set_community_goodwill ("freedom", db.actor:id(), -5000) elseif relation_registry.community_goodwill("freedom", db.actor:id()) > 0 then relation_registry.set_community_goodwill ("freedom", db.actor:id(), 0) end end return true end function actor_clear_community(actor, npc) printf("ACTOR NOW IN [NEUTRAL] COMMUNITY") if db.actor then db.actor:set_character_community("actor", 0, 0) end return true end Изменено 4 Октября 2020 пользователем Опричник спойлер Цитата Скрытый текст AMD Phenom X4 965 Black Edition, 4GB DDR3, AMD Radeon R7 240 2GB GDDR4 и нормально сталкерим в НА5.1, НА7, ОГСЕ-0692, ОГСЕ-0693, НС2016, OFFLIFE, ЗЧ! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Black_Raven_03 8 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @dsh, или ты меня в двоеточие вместо точки ткнул? тут я мог накосячить ибо ЛУА после Паскаля воспринимается очень хреново... Всем помогавшим - Спасибо! Нашёл, где накосячил Цитата Скрытый текст AMD Phenom X4 965 Black Edition, 4GB DDR3, AMD Radeon R7 240 2GB GDDR4 и нормально сталкерим в НА5.1, НА7, ОГСЕ-0692, ОГСЕ-0693, НС2016, OFFLIFE, ЗЧ! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
UriZzz 858 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @Black_Raven_03, а может всё-таки db.actor? Я конечно не силён в lua, как @dsh но чувствую что нужно попробовать добавить local relation_registry = db.actor Хотя, могу и ошибаться, пусть мэтр меня поправит, если что. 1 Цитата Моя нычка. Периодически пополняю Мы хорошие ребята, жаль патронов маловато:) Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Black_Raven_03 8 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @UriZzz, неа, просто транслятор ЛУА ругался на двоеточие между relation_registry и методом set_community_goodwill, а там положено быть точке; всё равно спасибо и удаляюсь кодить дальше... 1 Цитата Скрытый текст AMD Phenom X4 965 Black Edition, 4GB DDR3, AMD Radeon R7 240 2GB GDDR4 и нормально сталкерим в НА5.1, НА7, ОГСЕ-0692, ОГСЕ-0693, НС2016, OFFLIFE, ЗЧ! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
UriZzz 858 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 (изменено) 10 минут назад, Black_Raven_03 сказал: Dell Да, всё правильно db.actor тут не причем, это уже я тупанул. Изменено 2 Октября 2020 пользователем UriZzz 1 Цитата Моя нычка. Периодически пополняю Мы хорошие ребята, жаль патронов маловато:) Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
_Sk8_AsTeR_ 45 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 Доброго времени! Прошу помощи! Возникла идея - скриптово потушить лампу. Распаковав Алл.Спавн нашел у выбранной мною лампы параметр health = 100. Подозреваю, что дав параметру нуль - потушу лампу, хочу проверить. Хочу ковырять её через НетПакеты от Артоса. Вопрос, как мне прочитать нетпакет лампы? Скрытый текст [11509] ; cse_abstract properties section_name = lights_hanging_lamp name = yan_lamp6 position = 24.0428810119629, -9.33421421051025, -271.800720214844 direction = 9.42477798461914, 9.42477798461914, -7.85398149490356 version = 118 script_version = 6 spawn_id = 3892 ; cse_alife_object properties game_vertex_id = 1438 level_vertex_id = 132308 object_flags = 0xffffffaa custom_data = <<END [collide] ignore_static END ; cse_visual properties visual_name = physics\light\new_light\light_white_glass ; cse_ph_skeleton properties ; cse_alife_object_hanging_lamp properties main_color = 0xffffffff main_brightness = 1 main_color_animator = light\light_omni_white_idle main_range = 8 light_flags = 0x3a lamp_fixed_bones = link health = 100 main_virtual_size = 0.1 ambient_radius = 2.5 ambient_power = 0.60000002 main_bone = bone_lamp main_cone_angle = 2.0943952 glow_radius = 0.69999999 ambient_bone = bone_omni Пробую так: Скрытый текст function lampa() local sobj = alife():object(3892) local pk = get_netpk(sobj) if pk and pk:isOk() then local data = pk:get() amk.send_tip(tostring (data.name), "проверка имени", 1, 15, "common_channel") amk.send_tip(tostring (data.health), "проверка жизни", 1, 15, "common_channel") -- data.health = 0 -- pk:set(data) end end Итого у меня возвращается параметр health = 100 Но не возвращается data.name равно nil. Будто я не лампы нет-пакет вскрыл, а чего-то другого. Вопрос - правильно ли я определяю ID лампы? Если нет, то как правильно? Второй вопрос: возможно ли в принципе потушить лампу через данный параметр и через нет-пакет? Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 Здрасьте. Равнозначны ли указанные ниже способы удаления переменной из pstor? xr_logic.pstor_store(db.actor, name, nil) db.storage[db.actor:id()].pstor[name] = nil Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.