[DarkRP] Как запретить использовать материал на сервере?

[DarkRP] Как удалить материалы на сервере? Мне нужно удалить некоторые материалы!

Уточните вопрос, какие материалы именно?

Всякие прозрачнные.

Путь: garrysmod\gamemodes\sandbox\entities\weapons\gmod_tool\stools

Файл: material.lua

В нём:

Строка: 75 по 119
list.Add( "OverrideMaterials", "models/wireframe" )
list.Add( "OverrideMaterials", "debug/env_cubemap_model" )
list.Add( "OverrideMaterials", "models/shadertest/shader3" )

и всё что начинается на list.Add() это материалы, можешь просто удалить строчки не нужных материалов или же приставить “–” перед ним, то есть вот так:

-- list.Add( "OverrideMaterials", "models/wireframe" )
-- list.Add( "OverrideMaterials", "debug/env_cubemap_model" )
list.Add( "OverrideMaterials", "models/shadertest/shader3" )

Так же важный момент, если хочешь узнать какой материал из игры находится в коде, можешь просто в игре навести на него курсор в Q меню, и высветится название материала, плюс ко всему этому они все показываются по порядку как в коде.

Благодарю.

1 лайк

Если лезть в файлы гмода, то намного труднее будет обновляться и бекапить сервер. Не делайте так. Можно запретить использовать материал через CanTool хук. В примере ниже я запрещал наносить материал на пропы, которые становились прозрачными только с одной стороны, но похожим принципом можно запретить и сам материал

-- addons/anyname/lua/autorun/server/foobar.lua
local restricted_props = {
	["models/props_building_details/storefront_template001a_bars.mdl"] = true,
	["models/props_combine/combine_window001.mdl"] = true,
	["models/props_combine/combine_fence01a.mdl"] = true,
	["models/props_combine/combine_fence01b.mdl"] = true
}

local material_tools = {
	["material"]    = true,
	["submaterial"] = true
}


local GetWeapon = PLAYER.GetActiveWeapon
local GetModel  = ENTITY.GetModel

hook.Add("CanTool","FuckCheatWalls",function(pl,tr,tool)
	-- Прозрачные с одной стороны пропы
	if (material_tools[tool] and restricted_props[GetModel(tr.Entity)])

	-- Режим "свечение мира". trigon.im/index.php?posts/36895/
	or (tool == "colour" and GetWeapon(pl)["Tool"] and GetWeapon(pl)["Tool"]["colour"]:GetClientNumber("mode",0) == 9)

	-- Админам + разрешаем
	and !pl:isAdmin() then

		notif(pl,"Извините, но на нашем сервере нельзя делать читерные укрытия",NRED)
		return false
	end
end)
1 лайк