phalcor 60 Опубликовано 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 29 Опубликовано 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 FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
dsh 3 824 Опубликовано 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 29 Опубликовано 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 FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
Black_Raven_03 29 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @dsh, или ты меня в двоеточие вместо точки ткнул? тут я мог накосячить ибо ЛУА после Паскаля воспринимается очень хреново... Всем помогавшим - Спасибо! Нашёл, где накосячил Скрытый текст AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
UriZzz 1 004 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @Black_Raven_03, а может всё-таки db.actor? Я конечно не силён в lua, как @dsh но чувствую что нужно попробовать добавить local relation_registry = db.actor Хотя, могу и ошибаться, пусть мэтр меня поправит, если что. 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
Black_Raven_03 29 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 @UriZzz, неа, просто транслятор ЛУА ругался на двоеточие между relation_registry и методом set_community_goodwill, а там положено быть точке; всё равно спасибо и удаляюсь кодить дальше... 1 Скрытый текст AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
UriZzz 1 004 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 (изменено) 10 минут назад, Black_Raven_03 сказал: Dell Да, всё правильно db.actor тут не причем, это уже я тупанул. Изменено 2 Октября 2020 пользователем UriZzz 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 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 316 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 Здрасьте. Равнозначны ли указанные ниже способы удаления переменной из pstor? xr_logic.pstor_store(db.actor, name, nil) db.storage[db.actor:id()].pstor[name] = nil Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 @Norman Eisenherz А к чему этот вопрос? Ты же код видишь, так вывод сам собой напрашивается. Ссылка на комментарий
phalcor 60 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 Интересно, а существует ли простой метод определить, посещалась ли актором та или иная локация? Например, что-то вроде: yes = loc_is_passed("l01_escape" ) Ссылка на комментарий
mole venomous 3 433 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 11 минут назад, phalcor сказал: ли простой метод определить Вроде бы способ с инфопоршеном и так простой. Если был, то получил защитный инфо и больше не получишь)) 1 Здесь могла быть ваша реклама. Ссылка на комментарий
AndreySol 215 Опубликовано 3 Октября 2020 Поделиться Опубликовано 3 Октября 2020 @phalcor Штатного метода нет, только свое лепить надо. 1 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 7 Октября 2020 Поделиться Опубликовано 7 Октября 2020 Прошу помощи Ест скрипт, убивающий всех ворон (или только на текущей локации?) Скрытый текст function kill_crow() local lname = level.name() -- amk.send_tip("прошло", "прошло", 1, 15, "common_channel") for id, sobj in alife():objects() do local crow = level.object_by_id(id) if crow and crow:section() == "m_crow" then local hit = hit() hit.direction = crow:direction() hit.impulse = 1000 hit.draftsman = crow hit.power = 1000 hit.type = hit.strike crow:hit(hit) local sobj = alife():object(id) alife():release(crow, true) ogse_st_mgr.start_gtimer(nil, math.random(150, 300), "ogse.release_crow", id) end end end Вопрос: А как мне убить всех ворон, но КРОМЕ текущей локации? А то на голову сыпятся, а нужно от них избавиться Ссылка на комментарий
mole venomous 3 433 Опубликовано 7 Октября 2020 Поделиться Опубликовано 7 Октября 2020 (изменено) 53 минуты назад, _Sk8_AsTeR_ сказал: а нужно от них избавиться А просто удалить? Что б не сыпались. Изменено 7 Октября 2020 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий
Zander_driver 10 334 Опубликовано 8 Октября 2020 Поделиться Опубликовано 8 Октября 2020 30.09.2020 в 21:04, HellRatz сказал: Но все же советую делать такие вещи через СДК, подобные костыли — уровень 2007 года. Хмм, а почему? Какай в данном случае, применяется критерий для разделения "костыль / не костыль" - хотелось бы понять. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
HellRatz 2 892 Опубликовано 8 Октября 2020 Поделиться Опубликовано 8 Октября 2020 7 часов назад, Zander_driver сказал: а почему? Зачем плодить сущности? Создавать ненужные секции, прописывать все в скрипты, вызывать спавн, когда это делается в разы проще и удобнее в СДК? Как минимум подгонка по координатам чего стоит, любая настройка делается в пару кликов. А перекомпиляция спавна занимает от силы пол минуты. Конечно можно вспомнить и Историю Прибоя, где даже здания спавнили, можно и так делать. Но для чего, когда есть редактор карт? Со спавном — аналогично. ЗЫ: конечно, местами скриптовый спавн удобнее. Но вряд ли, если речь идет про физ. объекты, для которых нужно еще координаты бегать снимать и получать баги с проваливанием под террейн и прочие "развлечения". 1 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Zander_driver 10 334 Опубликовано 8 Октября 2020 Поделиться Опубликовано 8 Октября 2020 (изменено) Только что, HellRatz сказал: Создавать ненужные секции Вопрос был не об этом. Только что, HellRatz сказал: проще и удобнее в СДК? Ну сделай рандомный спавн в СДК. Чтобы объект при каждом запуске игры спавнился в разных местах. Только что, HellRatz сказал: Но для чего, когда есть редактор карт? Пардон, у меня на этом месте просто фейспалм Для того чтобы местонахождение предмета, НЕ было прибито гвоздями на века, например. Только что, HellRatz сказал: нужно еще координаты бегать снимать и получать баги с проваливанием Не нужно сочинять. Вопрос опять же был не об этом, в 2020 так никто не делает. В общем я делаю занятные выводы... 1) Что считать костылем, и что таковым НЕ считать, каждый мододел для себя определяет самостоятельно и субъективно. На основе собственных критериев, которые у разных людей могут быть разными, и даже противоположными и взаимоисключающими. 2) По всей видимости, распространенным мнением является, спавн всего и вся через СДК, как следствие - все прибито гвоздями к своим местам, Зона статична и неизменна. Никаких неожиданностей, никакого рандома во веки веков. Такой подход к моддингу полагается как "правильный". А все что делает спавн не-прибитым-гвоздями, несет в игру какие-то непредсказуемости, автоматом расценивается как костыль. Не зависимо от способа технической реализации. Ну что ж, теперь я знаю, почему мой мод называют состоящим из костылей. Стало быть, из костылей он и будет, в такой трактовке. Теперь я несколько лучше понимаю, суть расхождения взглядов, моих/чужих. Спасибо за ответ. Изменено 8 Октября 2020 пользователем Zander_driver 3 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
HellRatz 2 892 Опубликовано 8 Октября 2020 Поделиться Опубликовано 8 Октября 2020 51 минуту назад, Zander_driver сказал: Для того чтобы местонахождение предмета, НЕ было прибито гвоздями на века, например. Ну, если есть необходимость перемещать здания/деревья по карте — то да, конечно. Прочитай кусок про Прибой Стори еще раз. 51 минуту назад, Zander_driver сказал: Ну сделай рандомный спавн в СДК. При чем тут он? Человек вроде хотел ящик заспавнить скриптами, а не написать систему, как их раскидать рандомно по карте. Суть вопроса ни к чему переворачивать. Физ. объекты, заспавненные через тонны кода — ничто иное как костылище 13-летней давности, когда в народе СДК был непостижимым (а когда-то и недоступным) инструментом. Вот когда будет вопрос про рандомный спавн, тогда и стоит его упоминать. Это совсем другие задачи и методы решения. 2 1 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти