Перейти к контенту

Рекомендуемые сообщения

Подскажите плз, что отвечает за невыпадение оружия из рук при убийстве непися, т.е. когда оно у него в руках остается и не берется с трупа? Скрипты это или движок - не имеет значения, хотя бы намекните где копать. Перестали вываливаться с мобов стволы и я в непонятках...

 

После некоторых действий и в движке и в скриптах. Сразу я этого не заметил, а теперь не могу разобраться где вылез косяк.

Изменено пользователем Zagolski
Ссылка на комментарий

Вообще-то это делает движок. Если непись не висит.

Ну а что где правилось для приведения движка в состояние полного изумления - это уже вопрос для телепатов.

Ссылка на комментарий

Здравствуйте. Как определить, что смерть одного монстра (неважно от чего) наступила на определенном расстоянии от другого монстра. Причем они не атаковали друг друга. Можно ли использовать для этого "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

Ссылка на комментарий
Только что, Jekyll сказал:

Но как вместо db.actor впихнуть другого монстра?

Из смыслового понимания этой фразы, следует, что ГГ - это монстр. Прикольно:az1000106:...

Собственно, по общему смыслу вопроса: а что мешает использовать "distance_to" для любого игрового объекта ? Метод абсолютно рабочий...

Ссылка на комментарий
Скрытый текст
26 минут назад, UnLoaded сказал:

Прикольно:az1000106:...

Если вырывать фразы из контекста, то да, прикольно...

 

27 минут назад, UnLoaded сказал:

что мешает использовать "distance_to" для любого игрового объекта

Мне не понятно, как в этом случае применить определенную секцию монстра. Не пропишешь же так: pos:distance_to("секция":position()).:)

New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

Русификатор для игры Vendetta: Curse of Raven's Cry

Ссылка на комментарий
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. Имхо.:)

Изменено пользователем gam
Ссылка на комментарий
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 сказал:

Подскажите плз, что отвечает за невыпадение оружия из рук при убийстве непися, т.е. когда оно у него в руках остается и не берется с трупа? Скрипты это или движок - не имеет значения, хотя бы намекните где копать. Перестали вываливаться с мобов стволы и я в непонятках...

Как я понял, никто не знает. Ну и ладно.

Я с этим разобрался, только опять не понял, где конкретно. В одном из stalker_...cpp файлов, то ли stalker_combat_planner.cpp, то ли в stalker_combat_actions.cpp. Точно проверять - перекомпиляцией заниматься не охота.

До этого я переделывал инициализацию слотов на ЗП формат, так вот в нескольких этих файлах старая схема их получения осталась. Из-за этого оружие не выпадало из рук, а оставалсь прилепленным. Но в будущем, если подобное выпадение лута кто захочет сделать - копайте там.

Изменено пользователем Zagolski
Ссылка на комментарий

Ребята,такой вот вопрос: хочу сделать чтобы в ЗП при лутании трупов выпадал броник рандомного состояния,но выпадал по сути,например: если убил бандита,то его же бронь,одиночку то одиночки и т.д. Знаю вот,  нужно ковырятся в файле death_manager.script но с чего начать не знаю. Помогите,заранее спасибо!

Ссылка на комментарий

@Dmitriy88kk

Если делать без привязки к реально надетой на NPC броне, то проще прописать нужные броники в death_items_by_communities.ltx.

  • Нравится 1

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

Ссылка на комментарий
36 минут назад, WinCap сказал:

@Dmitriy88kk

Если делать без привязки к реально надетой на NPC броне, то проще прописать нужные броники в death_items_by_communities.ltx.

Ну это да,проще,но хочу хоть какое-то разнообразие добавить в игру,ну и больше реалистики,так что прописать броники в death_items_by_communities.ltx. не вариант, а если не выйдет с death_manager.script то уже прописать в death_items_by_communities.ltx

Ссылка на комментарий
1 час назад, Dmitriy88kk сказал:

... выпадал броник рандомного состояния,но выпадал по сути,например: если убил бандита,то его же бронь...

Или подсмотреть, как сделано в модах, где подобная фишка уже реализована, или сделать самому. Как вариант, завести таблицу соответствия "визуал -> секция броника", соответственно по факту смерти непися получать визуал убиенного(тут наверное через нет-пакет, а может есть сразу готовый экспортированный метод), затем из таблицы выбирать соответствующую секцию и спавнить в инвентарь трупу.

  • Полезно 1
Ссылка на комментарий

У меня давненько есть идея сделать всем неписям изначально базовый визуал - в свитере или вроде того, без броника. В профиле вместе с оружием спавнится неписи броник, он его одевает. Причем визуал непися зависит только от конкретного броника (он играет основную роль), который у него имеется в инвентаре. Соответственно, этот броник у него и выпадает. Это не столько для выпадения броников (конкретно это делается гораздо проще по вышеприведенному примеру), а вообще глобально на подобный способ переделать инициализацию визуалов НПС и их лута, броники в том числе.

 

А вообще выпадение броников с трупов - дисбаланс, имхо. Только это меня пока и останавливает от воплощения приведенной выше затеи. Это так, пока мысли вслух.

Изменено пользователем Zagolski
Ссылка на комментарий

Ребята, выручайте. Не знаю куда еще написать. В общем суть проблемы. Поставил на чистую игру ТЧ 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)
 

Может кто сталкивался?

Ссылка на комментарий

@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 ну, например в нетспауне актора проверяешь флаг. Если его нет, делаешь, что нужно и ставишь этот флаг. В качестве флага может использоваться поршень, а может и что угодно другое.

  • Спасибо 1
Ссылка на комментарий

@vampirnik77 , можно на месте спавна ГГ рестриктор поставить, который запустит функцию и после этого выключится/удалится.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

@naxac не, если выключится, то получится тот же самый флаг, вид сбоку. А если удалится, то да, оптимизация, так сказать.

 

@vampirnik77 ну вот ещё вариант. Выдавать из нетспауна поршень, у которого в action указана функция. Но опять же, это тот же флаг с видом сбоку, просто проверкой будет заниматься движок.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

×
×
  • Создать...