[SoC] Ковыряемся в файлах - Страница 824 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

Да скинь ты диалог полностью, МБ где ошибка, сам страницу назад из за сплеша кипишил.

Самый некомпетентный на форуме.

UnLoaded,

Если нужен, чтобы один из вариантов ответа (завершающий диалог) был всегда, то можно делать так:

...
<start_dialog>npc_start_dlg</start_dialog>
<actor_dialog>actor_dlg_01</actor_dialog>
<actor_dialog>actor_dlg_02</actor_dialog>
#include "gameplay\character_dialogs.xml" (базовые диалоги: привет - пока, дать аптечку)

Короче по диалогам я не понимаю о чем вы. У Шурупа, диалог которого я привел как пример, по тому, что я понял, ровно в десятку попадает под запрос вопрошающего, там три фразы работающие по своим условиям. Если фраза нужна в любом случае, то никаких условий ей добавлять не требуется, в противном случае граф неверно сориентирован и нужно пересматривать построение, но это уже за рамками возможного для отвечающего, так как граф диалога не был продемонстрирован..

 

@UnLoaded, если требуется, то могу в ближайшее время снять видео, как я завожу твой диалог и он работает по тем условиям, которые, как я понял, ты хочешь увидеть. Для примера попробуй смоделировать вариант, когда у тебя ни одна фраза не будет доступна с вариантом графа (в прекондишне), и где хотя-бы одна фраза будет совсем без прекондишнов, может хоть так дойдет.

 

@h0N0r, этот вариант не годится, ему нужна доступная завершающая вершина в конкретном графе, твой вариант этому противоречит, даже если задуматься о финалайзерах из ЗП.

 

 

 

Т.е. движок\или скрипт какой-там назначен не обрабатывают этих окончаний?

Обрабатывают. Я указал куда смотреть.

"Т.е. движок\или скрипт какой-там назначен не обрабатывают этих окончаний?"\

 

то есть эти окончания - про то, как подгружать. А дальше растащено по разным местам, и выполняется куча странных загадочных операций типа такого:

 

function play_sound( npc, t_themes, timeout )
	local t, n = {}, 0	-- список тем
	local tt
	for k, v in pairs( t_themes ) do	-- проверяем существование и перекладываем в i-таблицу
		tt = t_list[v]
		if tt then n = n + 1; t[n] = v
		else
			log( "error", "play_sound, ivalid theme %s [%s]", to_str( v ), to_str( npc ) )
			return false
	end	end
	-- log( "info", "play_sound, themes: %s (%s)", n, to_str( npc ) )
	if n == 0 then return false end

	n = t[math.random(n)]	-- из списка тем выбираем одну
	t = { ["theme"] = n }
	get_sound( t_list[n], t, npc )	-- получаем настройки

	n = t.max_snd	-- проверяем корректность, t  - настройки
	if n then
		tt = t_grps[ get_key(npc) ]	-- tt - теперь группа для непися
		tt.idle = math.random( t.min_snd, n ) * 1000
	else	-- если, например, воюют, то таблица пустая, играть ничего не надо
		-- log( "info", "play_sound, busy ( theme: %s )", t.theme, to_str( npc ) )
		return false
	end

	n = t.into_max	-- последовательный список из настроек
	if n and n ~= 0 then
		local into = t.into_id
		tt = db.sound[npc:id()].last_snd	-- что играли до этого момента
		local id = tt[into]
		-- log( "info", "play_sound, check into: %s:%s, last id: %s (%s)", t.theme, into, tostring( id ), to_str( npc ) )
		if id then
			if id < n - 1 then id = id + 1
			else	-- вышли за пределы ( при n == 1 максимальный id == 0 )
				if t.into_cycled then id = 0
				else
					-- log( "info", "play_sound, not cycled, already played (%s)", id )
					return false	-- для xr_kamp !
			end	end
		else id = 0
		end
		tt[into] = id 
		-- process_tutor_on_sound( t.theme )
		npc:play_sound( into, 1, 0, 1, 0, id )
		-- log( "info", "play_sound, into: %s:%s, id: %s (%s)", t.theme, into, id, to_str( npc ) )
		return true
	end
	n = t.rnd_max	-- выбираем 1 случайный звук
	if n and n ~= 0 then
		local rnd = t.rnd_id
		local id = 0
		if tt.last_snd then	-- а здесь мы проверяем id не непися, а группы
			tt = tt.last_snd
			if n >= 2 then	-- больше одного варианта, исключаем повторы
				if id == tt[rnd] then
					id = math_random( n - 1 )	-- 0, если уже что-то было
					if id == tt[rnd] then id = 0 end	-- криво, кстати
				else id = math_random( 0, n - 1 )	-- если новый, то сразу от 0
				end
			-- elseif tt[rnd] then tt[rnd] = false; return	-- нефиг попугайствовать
			-- пока закомментировано из-за того, что одноразовые определены как рэндом,
			-- взрывы вертолетов, например
			end
			tt[rnd] = id	-- сохраняем в группу играемый звук
		else	-- таблица last_snd почему-то не создана
			if n >= 2 then id = math_random( 0, n - 1 ) end
			tt.last_snd = { [rnd] = id }
		end

		-- log( "info", "play_sound, rnd: %s:%s, id: %s (%s), timeout: %s", t.theme, rnd, id, to_str( npc ), timeout or 0 )
		if timeout then npc:play_sound( rnd, timeout + 1, timeout, 1, 0, id )
		else npc:play_sound( rnd, 1, 0, 1, 0, id )
		end
		return true
	end
	return false
end

 

 

Короче, переделывать всю систему от начала и до конца.

  • Согласен 1

Эта логика будет работать?

[ph_idle]
on_timer = 4000 | %+lab_x7_actor_left% | 15500 | ph_idle@change_actor_position_to_level_changer %=run_postprocess(fade_out)%

Или после окончания первого таймера обязательно нужно сделать переход к другой секции.

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Короче, переделывать всю систему от начала и до конца.

В ЧНЗП вполне удобная система, хоть и требует некоторой доработки. А этого уродца лучше отправить на свалку.

@naxac, только сейчас дошло до тестирования. Увы, не работает такой вариант.

 

А этот, похоже, работает: 

on_timer = 4000 | %+lab_x7_actor_left%
on_timer2 = 15500 | ph_idle@change_actor_position_to_level_changer %=run_postprocess(fade_out)%
  • Согласен 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Помнится в АМК моде были исправления по смене секций погоды после завершения основного ТЧ сюжета. А именно, после завершения основного сюжета проявлялся сбой на некоторых локациях в смене погоды. Если кто помнит, то подскажите, в какие файлы смотреть, чтобы понять суть работы этой правки. Любая информация приветствуется.

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

@ed_rez, с учетом того, что в АМК динамическая погода, начинай сразу с amk_mod.script.

  • Спасибо 1

@ed_rez, не знаю как там в АМК, но вот буквально позавчера я делал фриплей, отталкивался от Freeplay Mod 1.3 (или как его, в общем от DEXXX), там он сделан безбожно криво (начиная хотя бы с того ошеломляющего факта, что он гасит логику напрочь во фриплее у потенциально нужных схем), и секции погоды в том числе, их нужно прописывать непосредственно в кондлисте погоды уровня, а не через level.set_weather когда там надо, этот метод нужно использовать только непосредственно на второй станции, когда ты еще остаешься на ней, а этих чудиков уже всех переубивал, т.е. перезагрузки уровня не произошло, соответственно нужно либо level.set_weather, либо принудительный ресет погоды, я рекомендую level.set_weather, а далее уже все будет работать корректно, так как на каждой загрузке уровня кондлист будет давать верную секцию погоды.

 

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

 

В случае с динамической погодой опять же тривиальное решение, дописать недостающее туда, куда следует, в этом вся суть фриплея в целом, и не более.

 

Говорю про оригинал, ну или околооригинал, мои решения не сильно его курочат :).

  • Спасибо 1
  • Согласен 1

 

 

не знаю как там в АМК

Ну вообще именно так и сделано)))

Не выводит сообщение [sr_tip]? Поршень esc_bandit_camp_start - выдаёт.

[logic]
active = sr_idle
[sr_idle]
on_actor_inside = {+find_dynamite} sr_tip %+esc_bandit_camp_start%
[sr_tip]
name = esc_bandit_camp_message

Самый некомпетентный на форуме.

@dPlayer, так попробуй

[logic]
active = sr_idle
[sr_idle]
on_actor_inside = sr_tip %+esc_bandit_camp_start%
[sr_tip]
name = esc_bandit_camp_message
cond = {+find_dynamite}
on_actor_inside = nil
Изменено пользователем BFG
  • Спасибо 1

"Кругом зомби.....у меня кончаются патроны...."

@BFG, спасибо, только {+find_dynamite} должен быть условием и для выдачи +esc_bandit_camp_start и для запуска [sr_tip], а в твоей схеме esc_bandit_camp_start выдается в любом случает, так?

Схема [sr_territory] рабочая? Просто в ТЧ не могу найти, где бы она применялась.

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

Самый некомпетентный на форуме.

Здравствуйте, у меня просьба. вчера находил статью "как создать новую группировку(тч)", сегодня не могу найти, толи она была здесь, толи в "уроках по модострою" помогите найти, пожалуйста.

Изменено пользователем иорданец

%D0%B8%D0%BE%D1%80%D0%B4%D0%B0%D0%BD%D0% 
Тот, кто думает-думает всегда.
Тот, кто думает, что думает-думает иногда.

Привет, ребята. В какие файлы надо залезть, чтобы удалить из игры оружие, например, ИЛ86?


И ещё, пожалуйста, подкиньте, кто может, чистую бессюжетную геймдату ТЧ, пожалуйста.

@Hadzirim Hajad

привет! Удалить- это длинный путь действий. А вот заменить очень просто, w_l85.ltx:

[wpn_l85]:wpn_ak74
[wpn_l85_hud]:wpn_ak74_hud

Не забудь про unique_items.ltх.

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

Я поменял картинку так, как указано здесь:

 


 

А в результате:

 

TuIuDnT0SW4.jpg

 

Почему?

 

Хорошо, ed_rez, задам вопрос по-другому:

Какие файлы отвечают за оружие? Кроме очевидных текстур и моделей.


И вот ещё кое-что. Может с этой программой проблема?

 

izcnnCGz1Go.jpg

 

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

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

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

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

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

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

Войти

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

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

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