Гайд Как работать с материалами в neverlose.cc

Статус
В этой теме нельзя размещать новые ответы.
  • 445
  • 1
  • 90
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Все чаще начали появляться баг репорты с материал-разделом, мол, не работают, не обновлены, не ищут, не видит чит и т.п, а ведь все решается тем, что люди спустя несколько десятков минут (не дай бог некоторые часы) попыток понимают, что они накосячили а не чит.
Тема создана для раскрытие системы материалов в lua-документации ее работы.

1. materials.get(path: string[, force_load: boolean])
Возвращает объект материала по указанному пути. Если будет указан путь до нескольких материалов - функция вернёт nil.
Аргумент force_load подгружает материал, если он не подгружен.
Пример:
Lua:
local forearm = materials.get("custom/models/forearmvarianta.mdl", false)

2. materials.get_materials(partial_path: string[, force_load: boolean, callback: function])
Возвращает таблицу материалов, полная противоположность функции materials.get. Может быть использована в каллбеке (таблица).
force_load подгружает все объекты, если они не загружены (ВНИМАНИЕ, он подгрузит все объекты по новой, если хотя бы 1 объект не будет загружен в рендер чита).
Пример:
Lua:
local object = materials.get_materials("custom/models/gitler", false)
-- вариант без каллбека

local object = materials.get_materials("custom/models/gitler", false, function(mdl)
    print(tostring(mdl.head_layer))
end)
-- вариант с каллбеком

3. materials.create(name: strings, key_values: string)
Создает и возвращает объект материала, который вы сами настроили.
Примечание: он вернёт в любом случае материал, даже если он будет пустым.
Пример:
Lua:
local key_value =
{
    [[
        $phong = 3,
        $originaltextureshaders = 0,
        $texture = "purplelaser3.vmt"
    ]]
}

local material = materials.create("Brokencore", key_value)
1. :get_name()
Возвращает название материала в формате string, например viewmodel:get_name() -> viewmodelworld

2. material:get_texture_group_name()
Возвращает группу текущего материала, к примеру: Игрок - player.

3. material:var_flag(flag: number[, value: boolean])
Устанавливает или получает флаг для материала.
Чтобы установить, укажите номер флаг и его значение (флаги от 0-32)
Чтобы получить, оставьте значение value нетронутым.

4. material:shader_param(name: string[, value: any])
Устанавливает или получает параметры шейдеров для материала.
Чтобы установить, укажите название шейдера и его значение, например $phong.
Чтобы получить, оставьте значение value нетронутым.

5. material:color_modulate([color: color]) / material:alpha_modulate([alpha: number])
Получают или устанавливают цвет и альфу материала.
Чтобы получить, просто вызывайте функцию, без аргументов.
Внимание: alpha_modulate работает не на всех объектах, это связано из-за рендера чита.

6. material:is_valid()
Возвращает true, если материал является валидным для использованием, иначе false.
К примеру, если попытаться получить валидность нулевого материала (как я привел пример в material.create), то оно вернёт true.

7. material:reset()
Восстанавливает значения (var_flag, shader_param, color-alpha modulate) материала на исходные, заданные игрой.
Внимание: функция сбрасывает даже материал, который вы создали, но если материал будет пустой, то произойдет ошибка.

8. material:override(mat: Material)
Переносит значения с одного материала на другой.
Внимание: переносите значения между материалами, который в одной группе. Иначе будет ошибка с материалом, или он криво установится, что ломает PaintTraverse хук.

author: me
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу