Zagolski 74 Опубликовано 3 Июля 2017 Поделиться Опубликовано 3 Июля 2017 (изменено) Подскажите плз, что отвечает за невыпадение оружия из рук при убийстве непися, т.е. когда оно у него в руках остается и не берется с трупа? Скрипты это или движок - не имеет значения, хотя бы намекните где копать. Перестали вываливаться с мобов стволы и я в непонятках... После некоторых действий и в движке и в скриптах. Сразу я этого не заметил, а теперь не могу разобраться где вылез косяк. Изменено 3 Июля 2017 пользователем Zagolski Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 3 Июля 2017 Поделиться Опубликовано 3 Июля 2017 Вообще-то это делает движок. Если непись не висит. Ну а что где правилось для приведения движка в состояние полного изумления - это уже вопрос для телепатов. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Jekyll 92 Опубликовано 3 Июля 2017 Поделиться Опубликовано 3 Июля 2017 Здравствуйте. Как определить, что смерть одного монстра (неважно от чего) наступила на определенном расстоянии от другого монстра. Причем они не атаковали друг друга. Можно ли использовать для этого "distance_to"? Поясню. Если использовать в качестве "целевого монстра" актора, то все понятно и все работает как надо (при этом в смерти монстра актор не виноват), ссылка на сам скрипт в монстрячем death_callback'е. Скрытый текст function test(self) local monstr = self.object local pos = monstr:position() if monstr and monstr:section()=="dog_weak" and pos:distance_to(db.actor:position()) < 5 then .... end end Но как вместо db.actor впихнуть другого монстра? Либо здесь нужен иной подход? New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
UnLoaded 313 Опубликовано 3 Июля 2017 Поделиться Опубликовано 3 Июля 2017 Только что, Jekyll сказал: Но как вместо db.actor впихнуть другого монстра? Из смыслового понимания этой фразы, следует, что ГГ - это монстр. Прикольно... Собственно, по общему смыслу вопроса: а что мешает использовать "distance_to" для любого игрового объекта ? Метод абсолютно рабочий... Ссылка на комментарий
Jekyll 92 Опубликовано 3 Июля 2017 Поделиться Опубликовано 3 Июля 2017 Скрытый текст 26 минут назад, UnLoaded сказал: Прикольно... Если вырывать фразы из контекста, то да, прикольно... 27 минут назад, UnLoaded сказал: что мешает использовать "distance_to" для любого игрового объекта Мне не понятно, как в этом случае применить определенную секцию монстра. Не пропишешь же так: pos:distance_to("секция":position()). New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
gam 117 Опубликовано 4 Июля 2017 Поделиться Опубликовано 4 Июля 2017 (изменено) 14 часов назад, Jekyll сказал: Мне не понятно, как в этом случае применить определенную секцию монстра. Не пропишешь же так: pos:distance_to("секция":position()) Jekyll. На мой взгляд, ничто не мешает использовать готовые варианты разрабов, те реализовать как-то: например - в файле bind_monster.script для function generic_object_binder:death_callback(victim, who) внутри прописать условие: if IsMonster(who) then -- нужное значение дистанции больше\менньше if self.object:position():distance_to(who:position()) < 5 then -- код вставки end end Или как-то аналогично в файлах mob_death.script, или mob_alife_mgr.script, либо в подходящем для целей соответствующим mob_такой_то.script. Имхо. Изменено 4 Июля 2017 пользователем gam Ссылка на комментарий
Jekyll 92 Опубликовано 4 Июля 2017 Поделиться Опубликовано 4 Июля 2017 5 часов назад, gam сказал: в файле bind_monster.script для function generic_object_binder:death_callback(victim, who) внутри прописать условие: Хочу уточнить: приведенный здесь пример подразумевает систему "жертва-убийца", когда и жертва, и убийца известны? Точнее когда непосредственно между двумя монстрами (один - "self.object", другой - "who") произошло взаимодействие, закончившееся гибелью одного из них (первого) - так? Извиняйте за стиль изложения - издержки профессии. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Zagolski 74 Опубликовано 5 Июля 2017 Поделиться Опубликовано 5 Июля 2017 (изменено) Только что, Zagolski сказал: Подскажите плз, что отвечает за невыпадение оружия из рук при убийстве непися, т.е. когда оно у него в руках остается и не берется с трупа? Скрипты это или движок - не имеет значения, хотя бы намекните где копать. Перестали вываливаться с мобов стволы и я в непонятках... Как я понял, никто не знает. Ну и ладно. Я с этим разобрался, только опять не понял, где конкретно. В одном из stalker_...cpp файлов, то ли stalker_combat_planner.cpp, то ли в stalker_combat_actions.cpp. Точно проверять - перекомпиляцией заниматься не охота. До этого я переделывал инициализацию слотов на ЗП формат, так вот в нескольких этих файлах старая схема их получения осталась. Из-за этого оружие не выпадало из рук, а оставалсь прилепленным. Но в будущем, если подобное выпадение лута кто захочет сделать - копайте там. Изменено 5 Июля 2017 пользователем Zagolski Ссылка на комментарий
Dmitriy88kk 0 Опубликовано 8 Июля 2017 Поделиться Опубликовано 8 Июля 2017 Ребята,такой вот вопрос: хочу сделать чтобы в ЗП при лутании трупов выпадал броник рандомного состояния,но выпадал по сути,например: если убил бандита,то его же бронь,одиночку то одиночки и т.д. Знаю вот, нужно ковырятся в файле death_manager.script но с чего начать не знаю. Помогите,заранее спасибо! Ссылка на комментарий
WinCap 316 Опубликовано 8 Июля 2017 Поделиться Опубликовано 8 Июля 2017 @Dmitriy88kk Если делать без привязки к реально надетой на NPC броне, то проще прописать нужные броники в death_items_by_communities.ltx. 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Dmitriy88kk 0 Опубликовано 8 Июля 2017 Поделиться Опубликовано 8 Июля 2017 36 минут назад, WinCap сказал: @Dmitriy88kk Если делать без привязки к реально надетой на NPC броне, то проще прописать нужные броники в death_items_by_communities.ltx. Ну это да,проще,но хочу хоть какое-то разнообразие добавить в игру,ну и больше реалистики,так что прописать броники в death_items_by_communities.ltx. не вариант, а если не выйдет с death_manager.script то уже прописать в death_items_by_communities.ltx Ссылка на комментарий
UnLoaded 313 Опубликовано 8 Июля 2017 Поделиться Опубликовано 8 Июля 2017 1 час назад, Dmitriy88kk сказал: ... выпадал броник рандомного состояния,но выпадал по сути,например: если убил бандита,то его же бронь... Или подсмотреть, как сделано в модах, где подобная фишка уже реализована, или сделать самому. Как вариант, завести таблицу соответствия "визуал -> секция броника", соответственно по факту смерти непися получать визуал убиенного(тут наверное через нет-пакет, а может есть сразу готовый экспортированный метод), затем из таблицы выбирать соответствующую секцию и спавнить в инвентарь трупу. 1 Ссылка на комментарий
Zagolski 74 Опубликовано 8 Июля 2017 Поделиться Опубликовано 8 Июля 2017 (изменено) У меня давненько есть идея сделать всем неписям изначально базовый визуал - в свитере или вроде того, без броника. В профиле вместе с оружием спавнится неписи броник, он его одевает. Причем визуал непися зависит только от конкретного броника (он играет основную роль), который у него имеется в инвентаре. Соответственно, этот броник у него и выпадает. Это не столько для выпадения броников (конкретно это делается гораздо проще по вышеприведенному примеру), а вообще глобально на подобный способ переделать инициализацию визуалов НПС и их лута, броники в том числе. А вообще выпадение броников с трупов - дисбаланс, имхо. Только это меня пока и останавливает от воплощения приведенной выше затеи. Это так, пока мысли вслух. Изменено 8 Июля 2017 пользователем Zagolski Ссылка на комментарий
Nick_it_On 3 Опубликовано 9 Июля 2017 Поделиться Опубликовано 9 Июля 2017 Ребята, выручайте. Не знаю куда еще написать. В общем суть проблемы. Поставил на чистую игру ТЧ 1.0004 Slow medicine mod 0.2b, но при использовании аптечки или энергетика происходит вылет с логом : Скрытый текст FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: e:\games\s.t.a.l.k.e.r\gamedata\scripts\amk.script:45: attempt to index field 'pstor' (a nil value) Может кто сталкивался? Ссылка на комментарий
WinCap 316 Опубликовано 9 Июля 2017 Поделиться Опубликовано 9 Июля 2017 @Dmitriy88kk Попробуй следующий код: Скрытый текст В начале файла death_manager.script после всех локальных таблиц (т.е. перед функцией init_drop_settings()) нужно добавить таблицу: local outfit_from_visual = { ["actors\\stalker_bandit\\stalker_bandit_3"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_3_face_1"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_3_face_2"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_3_face_3"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_3_mask"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_4"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_1_face_1"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_2_face_1"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_3_face_1"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_1_face_1"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_2_face_1"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_2_face_2"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_3"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_3_face_1"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_1"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_cs_heavy"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_dolg_1"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_dolg_2"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_exo"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_freedom_1"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_freedom_2"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_military"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_neutral_nauchniy"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_novice_1"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_specops"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_stalker_1"] = "novice_outfit", ["actors\\stalker_monolith\\stalker_monolith_1_face_1"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2_face_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_1_face_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_1_face_2"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_1_face_3"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_2"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_3"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_4"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_5"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_6"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_face_7"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_3_face_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_nauchniy_face_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_nauchniy_face_2"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_nauchniy_face_3"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_1_face_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_solider_2"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_solider_2_face_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_solider_3_face_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_solider_ecolog_face_1"] = "novice_outfit", ["actors\\stalker_ucheniy\\stalker_ucheniy_1_face_1"] = "novice_outfit", ["actors\\stalker_ucheniy\\stalker_ucheniy_1_face_2"] = "novice_outfit", ["actors\\stalker_zombied\\stalker_zombied_1"] = "novice_outfit", ["actors\\stalker_zombied\\stalker_zombied_3"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_1"] = "novice_outfit", ["actors\\stalker_bandit\\stalker_bandit_2"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_1"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_2"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_2_face_2"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_2_mask"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_3"] = "novice_outfit", ["actors\\stalker_dolg\\stalker_dolg_4"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_1"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_2"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_2_mask"] = "novice_outfit", ["actors\\stalker_freedom\\stalker_freedom_4"] = "novice_outfit", ["actors\\stalker_hero\\stalker_hero_stc_strelok"] = "novice_outfit", ["actors\\stalker_lesnik\\stalker_lesnik_1"] = "novice_outfit", ["actors\\stalker_merc\\stalker_merc_2"] = "novice_outfit", ["actors\\stalker_merc\\stalker_merc_4"] = "novice_outfit", ["actors\\stalker_monolith\\stalker_monolith_1"] = "novice_outfit", ["actors\\stalker_monolith\\stalker_monolith_2"] = "novice_outfit", ["actors\\stalker_monolith\\stalker_monolith_3"] = "novice_outfit", ["actors\\stalker_monolith\\stalker_monolith_4"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_1"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2_face_2"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2_face_3"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2_face_4"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_2_mask"] = "novice_outfit", ["actors\\stalker_nebo\\stalker_nebo_3"] = "novice_outfit", ["actors\\stalker_nebo_2_face_1_pn_hm"] = "novice_outfit", ["actors\\stalker_nebo_2_face_hm"] = "novice_outfit", ["actors\\stalker_nebo_2_face_pn"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_1"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_2_mask"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_3"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_4"] = "novice_outfit", ["actors\\stalker_neutral\\stalker_neutral_nauchniy"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_ecolog_military"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_2"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_2_face_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_3"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_3_face_1"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_4"] = "novice_outfit", ["actors\\stalker_soldier\\stalker_soldier_ecolog_face_1"] = "novice_outfit", ["actors\\stalker_trader\\stalker_trader_1"] = "novice_outfit", ["actors\\stalker_ucheniy\\stalker_ucheniy_1"] = "novice_outfit", ["actors\\stalker_zombied\\stalker_zombied_2"] = "novice_outfit", ["actors\\stalker_zombied\\stalker_zombied_4"] = "novice_outfit" } только броники нужные прописать. Далее в конце функции drop_manager:create_release_item() добавить код: local outfit = alife():create(outfit_from_visual[self.npc:get_visual_name()], self.npc:position(), self.npc:level_vertex_id(), self.npc:game_vertex_id(), self.npc:id()) level.client_spawn_manager():add(outfit.id, 0, function (id,obj) obj:set_condition((math.random(40)+40)/100) end) В принципе все работает, только на счет способа вызвать set_condition() я не уверен, подсмотрел здесь на форуме. S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
vampirnik77 121 Опубликовано 14 Июля 2017 Поделиться Опубликовано 14 Июля 2017 Доброго времени суток. Возник вопрос, простой вопрос, но меня он поставил в тупик. Как вызвать функцию один единственный раз за игру(при старте, при новой игре)? Официальная страница проекта Neof-One Crew Ссылка на комментарий
dsh 3 824 Опубликовано 14 Июля 2017 Поделиться Опубликовано 14 Июля 2017 @vampirnik77 ну, например в нетспауне актора проверяешь флаг. Если его нет, делаешь, что нужно и ставишь этот флаг. В качестве флага может использоваться поршень, а может и что угодно другое. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
vampirnik77 121 Опубликовано 14 Июля 2017 Поделиться Опубликовано 14 Июля 2017 @dsh Я так и собирался, думал может какие еще варианты есть. Официальная страница проекта Neof-One Crew Ссылка на комментарий
naxac 2 445 Опубликовано 15 Июля 2017 Поделиться Опубликовано 15 Июля 2017 @vampirnik77 , можно на месте спавна ГГ рестриктор поставить, который запустит функцию и после этого выключится/удалится. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
dsh 3 824 Опубликовано 15 Июля 2017 Поделиться Опубликовано 15 Июля 2017 @naxac не, если выключится, то получится тот же самый флаг, вид сбоку. А если удалится, то да, оптимизация, так сказать. @vampirnik77 ну вот ещё вариант. Выдавать из нетспауна поршень, у которого в action указана функция. Но опять же, это тот же флаг с видом сбоку, просто проверкой будет заниматься движок. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти