Сповіщення
Очистити все
Початок теми
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))