RU
Как сделать перемещение НПС персонажей по миру?
doc_ker
#2712
•
20.11.2023 18:51
•
1 comment
•
2076 views
D
Собственно, не могу понять, как сделать перемещения. Нужно менять по времени, и иногда рандомно
doc_ker,
Это ж крайне просто, если понимать базовые концепции Великого Дао Куспа.
Ну например:
!//--- Предположим локация на которой мы инициализируем НПЦ
!//--- В каком виде их хранить, как с ними работать сугубо выбор автора. Можно разными массивами, можно одним массивом и парсить строку, можно хоть на каждго NPC свою переменную прописать. Как заблагорассудится, насколько хватит понимания концепции Великого Дао Куспа.
$НПЦ_Имя[] = "Витя Агроном"
$НПЦ_Имя[] = "Доктор Елена"
!//--- Допустим у нас тут локация заброшенная больница
!//--- Витя Агроном недавно приболел когда делал очередную вылазку за припасами и потому пообщаться с ним можно только между 10 и 18 часами
!//--- В остальное время он на процедурах и врач попросту нас не пустит к нему. Занятой человек, видите ли
if время > 10 and время < 18:
act "Поговорить с <<$НПЦ_Имя[0]>>":
*PL "Очень долгая, возможно даже душещипательная, беседа с множеством вариантов ответов и наверняка судьбоносных решений."
end
end
!//--- А если нам нужно выбрать рандомно какого-то NPC? Или выдать ему рандомное расписание?
!//--- Для такого уже надо продумывать структуру данных, потому что от неё уже зависят алгоритмы реализации.
$НПЦ_Имя[] = "Андрей"
$НПЦ_Расписание[] = "[П][Кушать]10,11|[В][Бегать]05,07"
идентификатор_рандомного_нпц = rand(0, arrsize('$НПЦ_Имя'))
$задачи_нпц_в_понедельник = $func('получить_расписание_нпц', $НПЦ_Расписание[идентификатор_рандомного_нпц], 'П')
$задача_нпц_кушать = $func('получить_время_расписания', $задачи_нпц_в_понедельник, 'Кушать')
время_начало = $Mid($задача_нпц_кушать, 0, 2)
время_конец = $Mid($задача_нпц_кушать, 4, 2)
if время > время_начало and время < время_конец:
act "Поговорить с <<$НПЦ_Имя[идентификатор_рандомного_нпц]>>":
*PL "Когда я ем, я глух и нем!"
end
end
!//--- Я думаю мысль улавливается? Здесь например можно у AleksVersus взять (http://aleksversus.narod.ru/index/vspomogatelnye_funkcii/0-74#em_str_getword) или самому написать функцию, которая парсит строку в расписании и получает от неё временные рамки для конкретного дня недели, для конкретного занятия.
!//--- Не обязательно делать как у меня. Главное понять СУТЬ предлагаемой концепции.