Все посты %s в %S - AMK Team
Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

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

Привет всем! 

 

Я пока новичок в скриптовании, только-только начал понимать что к чему. Прошу не ругаться ?

Если не туда написал - темы для LADC не нашёл. 

Я делаю мод для Stalker LADC, где нпс приветствуют, ждут, психуют-уходят и т.п. 

 

Чтобы прикрутить реплику на уход нпс из мита, если мы с ним не взаимодействуем, в xr_meet в функцию function evaluator_contact:evaluate() пишу такие условия (от "начала" до "конца" моего кода).

 

Цитата

if (self.meet_manager.state or "nil") ~= "nil" then
		-- Если не начинаем разговор, НПС уходит
		if self.meet_manager.wpn_meet or self.object:is_talking() then
			self.tm_delay = time_global()
		elseif not self.tm_delay then
			self.tm_delay = time_global()
		
		-- НПС ждёт 15 секунд и уходит
		elseif self.tm_delay +15*1000 < time_global() then
					
-- НАЧАЛО МОЕГО КОДА				if(self.object:active_sound_count(true) <= 0) then
					if self.st.meet_start ~= "" and not this.Is_Spam(self.meet_manager.npc, self.st.meet_start) then
					
					-- 	Уходя, ворчит
						if(self.st.meet_stop == "meet_stop") then 
							if (Random.I(1, 5) == 1) then
								xr_sound.set_sound_play(self.object, "meet_stop")					
							end
						else
							xr_sound.set_sound_play(self.object, self.st.meet_stop) 
						end	
						self.last_sound_played = true
					end
-- КОНЕЦ МОЕГО КОДА				end		
			return false 
		end
		
		if self.log then log("ev_contact:NPC=[%s]=>[%s]", self.object:name(), "TRUE") end --/#~#
		return true --/>
	elseif self.tm_delay then
		self.tm_delay = nil
	end

 

В игре звук работает, но при уходе, если нпс ещё не вышел из радиуса мита, реплика meet_stop проигрывается успевает проиграться раза 2-3, а если пойти за нпс - так и будет проигрываться. 

 

Вопрос: как поставить "затычку" для xr_sound.set_sound_play(self.object, self.st.meet_stop)? 

Там ещё скорее всего много лишних условий, я копипастил их из друших участков xr_meet. 

 

Спасибо ?

Изменено пользователем Usman_Shinobi

Поделиться этим сообщением


Ссылка на сообщение

Спасибо, Fagot :)

Ещё вопрос.
Как прописать НПС условие, чтобы он никогда не подходил к другому НПС ближе, чем на 1 метр? Во всех схемах поведения. Как будет выглядеть условие?

 

Изменено пользователем Usman_Shinobi

Поделиться этим сообщением


Ссылка на сообщение

Доброго времени суток!
Где находятся конфиги, которые отвечают за вероятность выкрикивания нпс какой-либо фразы во время боя? Не пути, а именно параметр вероятности.

Поделиться этим сообщением


Ссылка на сообщение
14 часов назад, Houdini_one сказал:

Мне кажется, всё гораздо проще, столько фраз (например, 10), то и шанс выкрикивания данной фразы - 10%.

Нет, я имел в виду не конкретную реплику, а тип реплики. Например, как часто нпс будет выкрикивать attack или threat_close в состоянии боя. Или как часто нпс будет выкрикивать fire открывании огня, или detour при совершении манёвра обхода. 

 

Факт в том, что нпс выкрикивают фразу далеко не всегда. Вот хочу понять где это регулируется. 

Поделиться этим сообщением


Ссылка на сообщение

Здравствуйте! 

Ковыряюсь в ЛостАльфе, хочу сделать так, чтобы можно было лечить врагов. 

 

Разрешил и настроил диалог, настроил изменение изменение отношение на нейтрала. 

 

Но после того, как нпс подлечился, он не выходит из состояния боя (хотя становится нейтралом). Целится в актора, пытается его ударить, но не может. Если мы отходим чуть дальше, или сам нпс отходит в укрытие, он переходит в состояние post_combat_wait, ждёт, и потом уже всё нормально. 

 

Можно ли как-то "выключить бой" после лечения, чтобы нпс сразу забывал про актора, не переходя в посткомбат? 

Поделиться этим сообщением


Ссылка на сообщение
1 минуту назад, Space.Marine сказал:

Обычно, в имеющихся схемах, ИМХО, нужно сделать сейв-лоад... 

Можешь подсказать как? Я тут только начинаю разбираться. 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...