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

Система ALife. Логика поведения игровых объектов


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

Прошу помощи.

Если не туда написал прошу перенаправить.

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

Вопрос по построению логики нпс.

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

@EggIeRar(V.N.S.L), и это всё? Боюсь, что тебе не помогут, если не изложишь суть проблемы.

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

Интересует, что такое override и condlist ?

Желательно полное описание.

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

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

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

@UnLoaded, интересует именно техническое описание. Чтобы можно было описать видом типа:

override - это то то, для того то, используется там то.

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

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

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

override и condlist - это просто такие строчки.

 

override - указание на отдельную секцию. Там вбито несколько строчек для чтения:

 

function cfg_get_overrides( ini, sect )
	if not ( sect and ini:section_exist( sect ) ) then return {} end

	local t = {}
	if ini:line_exist( sect, "heli_hunter" ) then
		t.heli_hunter = parse_condlist1( ini:r_string( sect, "heli_hunter" ) )
	end

	if ini:line_exist( sect, "combat_ignore_cond" ) then
		-- как бычно, здесь и далее закладываемся на то, что в священных и неприкосновенных
		-- конфигах может быть любой бред, по-этому чистим прочитанное от вертикальных палок
		local s = string_match( ini:r_string( sect, "combat_ignore_cond" ), "([^|]+)" )
		if s then
			t.combat_ignore = { ["name"] = "combat_ignore_cond", ["condlist"] = parse_condlist1( s ) }
	end	end

	if ini:line_exist( sect, "combat_ignore_keep_when_attacked" ) then
		t.combat_ignore_keep_when_attacked = ini:r_bool( sect, "combat_ignore_keep_when_attacked" )
	end

	if ini:line_exist( sect, "combat_type" ) then
		local s = string_match( ini:r_string( sect, "combat_type" ), "([^|]+)" )
		if s then
			t.combat_type = { ["name"] = "combat_type", ["condlist"] = parse_condlist1( s ) }
	end	end

	if ini:line_exist( sect, "on_combat" ) then
		local s = string_match( ini:r_string( sect, "on_combat" ), "([^|]+)" )
		if s then
			t.on_combat = { ["name"] = "on_combat", ["condlist"] = parse_condlist1( s ) }
	end	end

	if ini:line_exist( sect, "companion_enabled" ) then
		t.companion_enabled = ini:r_bool( sect, "companion_enabled" )
	end

	if string_match( sect, "kamp" ) then
		if ini:line_exist( sect, "center_point" ) then
			local s = ini:r_string( sect, "center_point" )
			if s then t.soundgroup = s end
		end
	elseif ini:line_exist( sect, "soundgroup" ) then
		local s = ini:r_string( sect, "soundgroup" )
		if s then t.soundgroup = s end
	end

	return t
end

- как говорится, делайте с ними, что хотите.

 

condlist - это вообще просто такая строка, в которой может быть что угодно. Вообще все, что угодно.

Еще так называется часть любой строки, в которой есть набор значков типа %{}+-=~!

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

Насколько сильно страдает производительность при увеличении switch_distance

Любимые моды: История Прибоя 2 (1.4), Lost World: Requital (6.7), Lost World: Trops Of Doom (3.5), Nature Winter: Black Edition (2.3), Lost Alpha, Народная Солянка 2010, ОП-2, Плохая Компания, Misery 2.1.1, Dream Reader - Dangerous Area (1.5).

McSon.gif

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

По временным интервалам (узрел на предыдущей странице..).

Давненько пользуюсь - но походу в корзину.

Будет ли работать на чистой ТЧ - не пробовал :big_boss:

--/ Проверка принадлежности текущего часа временному интервалу
function hour_in_interval(actor, npc, p)
    local n = 1
    local hour = level.get_time_hours()
    while p[n] and p[n+1] do
        if p[n] >= p[n+1] then
            if hour < p[n+1] or hour >= p[n] then return true end        
        else
            if hour < p[n+1] and hour >= p[n] then return true end
        end    
        n = n +2
    end
    return false
end

В логике.

on_info = {=hour_in_interval(7:19)} walker@mil_2_stalk
Изменено пользователем _Val_
  • Полезно 1
Ссылка на комментарий

@_Val_, так твой же вариант лучше, зачем в корзину?

В твоем обрабатываются ночные смены, типа 23:6.

Можно задавать объединение интервалов 8:12:13:17 - работает до обеда и после.

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

@abramcumner,  ну да, можно всё обрабатывать вплоть до множества интервалов))

:offtopic:

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

ЗЫ...Функция Боряна кстати. Boryan67 если что - для записи в скриптец))

ЗЫЫ...Попробовал на чистой ТЧ. Работает...

Изменено пользователем _Val_
  • Согласен 1
Ссылка на комментарий

Всем приветик, коллеги!

Может вопросик и не в тему, но мне кажется, что это радиус алайфа так работает.

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

Заранее благодарен.

Добавлено Dennis_Chikin,

Правкой в движок, и получите слайд-шоу в итоге.

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

@boryan67

Ноль конкретной информации, соответственно и помощи не будет...

Что есть "торрид", почему он летает(объект, отрабатывающий логику\партикл\еще какая фигня?) ??? Кашпировские в отпуске...

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

@UnLoaded, вроде как аномалия такая, из вырезанных ПЫС-ами. Подбрасывает в воздух живые объекты, кажется...

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

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

Мне вот интересно, а статья будет допиливаться? Или тыкните пожалуйста носом, где можно почитать хорошенько и вникнуть во всю эту логику чтобы стало всё ясно как днём, даже такому как я. =\

... А наше дело маленькое - с ружьём да по болотам. (с)

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

И вот кстати что делать с этой страницей с "категориями", я сколько ни пытался, так и не понял. Вообще ни о чем.

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

Подскажите как скриптом заставить НПС отыграть анимку (ТЧ), когда хватается за живот и крючится от боли?

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

state_mgr.set_state() же.

Нужные стэйты смотреть в state_lib.script, при необходимости - добавить.

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

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

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

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

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

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

Войти

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

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

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