Сповіщення
Очистити все
Початок теми
23.10.2023 14:44
Отже, в потрібному модулі (динамічні аномалії) пишемо дві функції:
Функція отримує таблиці левел-вертексів усіх рівнів та повертає потрібну (за рівнем).
function GetLevelsVertexes(level)
local lvtab ={}
local i = 0
while game_graph():valid_vertex_id(i) do
local lv = game_graph():vertex(i):level_vertex_id()
local ln = alife():level_name(game_graph():vertex(i):level_id())
if not lvtab[ln] then
lvtab[ln] ={}
end
table.insert(lvtab[ln], lv)
i = i+1
end
return lvtab[level]
end
Функція отримує таблиці всіх гейм-вертексів та повертає потрібну (за рівнем)
function GetGameVertexes(level)
local gvtab ={}
local i = 0
while game_graph():valid_vertex_id(i) do
local ln = alife():level_name(game_graph():vertex(i):level_id())
if not gvtab[ln] then
gvtab[ln] ={}
end
table.insert(gvtab[ln], i)
i = i+1
end
return gvtab[level]
end
Функції отримують ім'я рівня як вхідний параметр, повертають необхідні таблиці левелів і гейм вертексів для цього рівня.
Далі використовуємо ці дані у потрібному вам місці. Наприклад, отримання рандомного левелю вертексу для поточного рівня:
local level_name = level.name() local lvtab = GetLevelsVertexes(level_name) local lvx = math.max(unpack(lvtab)) local lv = math_random(1,lvx) --//рандомний левел-вертекс
Отримання діапазону гейм-вертексів для поточного рівня:
local lname = level.name() local gvtab = GetGameVertexes(lname) local gv_min = math.min(unpack(gvtab)) local gv_max = math.max(unpack(gvtab))