Створення модуля ав...
 
Сповіщення
Очистити все

Створення модуля автоматичного отримання game_vertex та level_vertex будь-якої локації мода, для спавна динамічних аномалій.


NazarTmm
Ранг:
Досвідчений
Роль:
Модмейкер
Угруповання:
Бандити
Записи:
35
Приєднався:
10 місяців тому
Початок теми  

Отже, в потрібному модулі (динамічні аномалії) пишемо дві функції:
Функція отримує таблиці левел-вертексів усіх рівнів та повертає потрібну (за рівнем).

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))

   
Цитата
Теги теми