Initial commit
This commit is contained in:
2144
addons/!kostich/lua/autorun/client/!event_stuff.lua
Normal file
2144
addons/!kostich/lua/autorun/client/!event_stuff.lua
Normal file
File diff suppressed because it is too large
Load Diff
571
addons/!kostich/lua/autorun/client/hud.lua
Normal file
571
addons/!kostich/lua/autorun/client/hud.lua
Normal file
@@ -0,0 +1,571 @@
|
||||
surface.CreateFont('ui.60', {font = 'roboto', size = 60, weight = 700, extended = true})
|
||||
surface.CreateFont('ui.40', {font = 'roboto', size = 40, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.39', {font = 'roboto', size = 39, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.38', {font = 'roboto', size = 38, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.37', {font = 'roboto', size = 37, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.36', {font = 'roboto', size = 36, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.35', {font = 'roboto', size = 35, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.34', {font = 'roboto', size = 34, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.33', {font = 'roboto', size = 33, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.32', {font = 'roboto', size = 32, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.31', {font = 'roboto', size = 31, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.30', {font = 'roboto', size = 30, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.29', {font = 'roboto', size = 29, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.28', {font = 'roboto', size = 28, weight = 500, extended = true})
|
||||
surface.CreateFont('ui.27', {font = 'roboto', size = 27, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.26', {font = 'roboto', size = 26, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.25', {font = 'roboto', size = 25, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.24', {font = 'roboto', size = 24, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.23', {font = 'roboto', size = 23, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.22', {font = 'roboto', size = 22, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.20', {font = 'roboto', size = 20, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.19', {font = 'roboto', size = 19, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.18', {font = 'roboto', size = 18, weight = 400, extended = true})
|
||||
surface.CreateFont('ui.17', {font = 'roboto', size = 17, weight = 550, extended = true})
|
||||
surface.CreateFont('ui.16', {font = 'roboto', size = 16, weight = 550, extended = true})
|
||||
surface.CreateFont('ui.15', {font = 'roboto', size = 15, weight = 550, extended = true})
|
||||
surface.CreateFont('ui.12', {font = 'roboto', size = 12, weight = 550, extended = true})
|
||||
surface.CreateFont('ui.10', {font = 'roboto', size = 10, weight = 550, extended = true})
|
||||
surface.CreateFont('ui.5percent', {font = 'roboto', size = math.ceil(ScrH() * 0.05), weight = 500, extended = true})
|
||||
|
||||
local CurTime = CurTime
|
||||
local IsValid = IsValid
|
||||
local ipairs = ipairs
|
||||
local Color = Color
|
||||
local DrawColorModify = DrawColorModify
|
||||
local nw_GetGlobal = GetGlobalBool
|
||||
local table_Filter = table.Filter
|
||||
local player_GetAll = player.GetAll
|
||||
local hook_Call = hook.Call
|
||||
|
||||
local GM = GAMEMODE or {}
|
||||
|
||||
timer.Simple(0.1,function()
|
||||
GM = GAMEMODE
|
||||
end)
|
||||
|
||||
local smoothHP = 0
|
||||
local smoothAR = 0
|
||||
local smoothHG = 0
|
||||
|
||||
local math_ceil = math.ceil
|
||||
local math_sin = math.sin
|
||||
local math_max = math.max
|
||||
|
||||
local draw_SimpleText = draw.SimpleText
|
||||
local draw_SimpleTextOutlined = draw.SimpleTextOutlined
|
||||
local draw_OutlinedBox = draw.OutlinedBox
|
||||
local function draw_Box(x,y,w,h,col)
|
||||
draw.RoundedBox(0,x,y,w,h,col)
|
||||
end
|
||||
|
||||
local surface_SetDrawColor = surface.SetDrawColor
|
||||
local surface_DrawLine = surface.DrawLine
|
||||
local surface_DrawTexturedRect = surface.DrawTexturedRect
|
||||
local surface_GetTextSize = surface.GetTextSize
|
||||
local surface_SetFont = surface.SetFont
|
||||
local surface_SetMaterial = surface.SetMaterial
|
||||
local surface_DrawOutlinedRect = surface.DrawOutlinedRect
|
||||
local surface_SetTextPos = surface.SetTextPos
|
||||
local surface_SetTextColor = surface.SetTextColor
|
||||
local surface_DrawText = surface.DrawText
|
||||
local surface_DrawRect = surface.DrawRect
|
||||
|
||||
local cam_Start3D2D = cam.Start3D2D
|
||||
local cam_End3D2D = cam.End3D2D
|
||||
|
||||
local color_white = color_white
|
||||
local color_black = color_black
|
||||
local color_red = Color(245,0,0)
|
||||
local color_orange = Color(245,120,0)
|
||||
local color_blue = Color(51,128,255)
|
||||
local color_darkred = Color(100, 0, 0)
|
||||
local color_15k = Color(240,191,0)
|
||||
|
||||
local color_gradient = Color(50, 50, 50)
|
||||
local color_bg = Color(15,15,15,255)
|
||||
local color_outline = Color(75,75,75,255):Copy()
|
||||
|
||||
local color_money = Color(135, 135, 31, 60)
|
||||
|
||||
local color_health = Color(82, 158, 60, 255)
|
||||
local color_ph_health = Color(82, 158, 60, 60)
|
||||
|
||||
local color_armor = Color(37, 112, 153, 255)
|
||||
local color_ph_armor = Color(37, 112, 153, 60)
|
||||
|
||||
local color_food = Color(217, 155, 11, 255)
|
||||
local color_ph_food = Color(217, 155, 11, 60)
|
||||
|
||||
local color_job = Color(35, 31, 32, 60)
|
||||
local color_grace = Color(76, 24, 84, 255)
|
||||
local color_sup = Color(27, 82, 102, 60)
|
||||
|
||||
local color_agenda = Color(33, 92, 132, 60)
|
||||
local color_laws = Color(135, 33, 33, 60)
|
||||
local color_arrest_warrants = Color(211, 36, 36, 60)
|
||||
local color_hits = Color(40, 40, 40, 60)
|
||||
|
||||
local lic_icon = Material("icon16/page.png")
|
||||
local mat_laws = lic_icon
|
||||
local material_licence = mat_laws
|
||||
local hp_icon = Material("icon16/heart.png")
|
||||
local ar_icon = Material("icon16/shield.png")
|
||||
local hg_icon = Material("icon16/cup.png")
|
||||
local want_icon = Material("icon16/star.png")
|
||||
local money_icon = Material("icon16/money.png")
|
||||
local time_icon = Material("icon16/clock.png")
|
||||
|
||||
local job_icon = Material("icon16/vcard.png")
|
||||
|
||||
local sw, sh = ScrW(), ScrH()
|
||||
local height = 0
|
||||
local LP
|
||||
|
||||
local players = {}
|
||||
|
||||
surface.CreateFont("Hud", {
|
||||
font = "EuropaNuovaExtraBold",
|
||||
extended = true,
|
||||
size = 25,
|
||||
weight = 500,
|
||||
antialias = true,
|
||||
})
|
||||
|
||||
surface.CreateFont("HudS", {
|
||||
font = "EuropaNuovaExtraBold",
|
||||
extended = true,
|
||||
size = 23,
|
||||
weight = 500,
|
||||
antialias = true,
|
||||
})
|
||||
|
||||
surface.CreateFont('HudFont', {
|
||||
font = 'Tahoma',
|
||||
size = 20,
|
||||
weight = 350
|
||||
})
|
||||
|
||||
surface.CreateFont('HudFontLaws', {
|
||||
font = 'Roboto',
|
||||
size = 19,
|
||||
extended = true,
|
||||
shadow = true,
|
||||
weight = 350
|
||||
})
|
||||
|
||||
|
||||
surface.CreateFont('HudFont2', {
|
||||
font = 'Tahoma',
|
||||
size = 24,
|
||||
weight = 700
|
||||
})
|
||||
|
||||
surface.CreateFont('HudFont3', {
|
||||
font = 'Tahoma',
|
||||
size = 30,
|
||||
weight = 700
|
||||
})
|
||||
|
||||
surface.CreateFont('BannedInfo', {
|
||||
font = 'Roboto',
|
||||
size = 42,
|
||||
weight = 700
|
||||
})
|
||||
|
||||
surface.CreateFont('PlayerInfo', {
|
||||
font = 'Tahoma',
|
||||
extended = true,
|
||||
outline = true,
|
||||
shadow = true,
|
||||
size = 128,
|
||||
weight = 750
|
||||
})
|
||||
|
||||
local talkingplayers = {}
|
||||
|
||||
hook.Add('PlayerStartVoice', 'rp.hud.PlayerStartVoice', function(pl)
|
||||
talkingplayers[pl] = true
|
||||
end)
|
||||
|
||||
hook.Add('PlayerEndVoice', 'rp.hud.PlayerEndVoice', function(pl)
|
||||
talkingplayers[pl] = nil
|
||||
end)
|
||||
|
||||
-- utils
|
||||
|
||||
local ColValues = {}
|
||||
|
||||
local function varcol(name, val)
|
||||
if ColValues[name] == nil then
|
||||
ColValues[name] = {}
|
||||
ColValues[name].Old = val
|
||||
ColValues[name].Flash = SysTime()
|
||||
return color_white
|
||||
end
|
||||
|
||||
if ColValues[name].Old ~= val then
|
||||
ColValues[name].Flash = SysTime() + 0.2
|
||||
ColValues[name].Old = val
|
||||
return color_blue
|
||||
end
|
||||
|
||||
if ColValues[name].Flash > SysTime() then
|
||||
return color_blue
|
||||
end
|
||||
return color_white
|
||||
end
|
||||
|
||||
local function SecondsToClock(seconds)
|
||||
local seconds = tonumber(seconds)
|
||||
|
||||
if seconds <= 0 then
|
||||
return "00:00:00";
|
||||
else
|
||||
hours = string.format("%02.f", math.floor(seconds/3600));
|
||||
mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)));
|
||||
secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60));
|
||||
return hours..":"..mins..":"..secs
|
||||
end
|
||||
end
|
||||
|
||||
local blur = Material( "pp/blurscreen" )
|
||||
function drawBlur( x, y, w, h, layers, density, alpha )
|
||||
surface.SetDrawColor( 255, 255, 255, alpha )
|
||||
surface.SetMaterial( blur )
|
||||
|
||||
for i = 1, layers do
|
||||
blur:SetFloat( "$blur", ( i / layers ) * density )
|
||||
blur:Recompute()
|
||||
|
||||
render.UpdateScreenEffectTexture()
|
||||
render.SetScissorRect( x, y, x + w, y + h, true )
|
||||
surface.DrawTexturedRect( 0, 0, ScrW(), ScrH() )
|
||||
render.SetScissorRect( 0, 0, 0, 0, false )
|
||||
end
|
||||
end
|
||||
|
||||
function drawBlurPadded(x,y,w,h,layers,density,alpha,color)
|
||||
--draw.RoundedBox(0,x,y,w,h,color)
|
||||
drawBlur(x,y,w,h,layers,density,alpha)
|
||||
surface_SetDrawColor(255,255,255,150)
|
||||
surface_DrawOutlinedRect(x,y,w,h,2)
|
||||
end
|
||||
|
||||
local function InfoBar()
|
||||
if not IsValid(LP) then return end
|
||||
local health = LP:Health()
|
||||
function numh(numtokok)
|
||||
if numtokok > 100 then
|
||||
return 100
|
||||
end
|
||||
if numtokok <= 100 and numtokok >= 0 then
|
||||
return numtokok
|
||||
end
|
||||
if numtokok < 0 then
|
||||
return 0
|
||||
end
|
||||
end
|
||||
smoothHP = numh(Lerp(10 * FrameTime(), smoothHP, health))
|
||||
drawBlurPadded(10,ScrH()-170,450,50,3,5,255,Color(0,0,0,200))
|
||||
draw_SimpleText("ММК RolePlay","ui.30",180,ScrH()-145,color_white,2,1)
|
||||
drawBlurPadded(10,ScrH()-115,450,110,3,5,255,Color(0,0,0,200))
|
||||
draw.RoundedBox(3,20,ScrH()-150+50,150,25,Color(122,89,89))
|
||||
draw.RoundedBox(3,20,ScrH()-150+50,smoothHP*1.5,25,Color(222,91,91))
|
||||
draw_SimpleText(health.."%","ui.20",168,ScrH()-137+50,color_white,2,1)
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(hp_icon)
|
||||
|
||||
local armor = LP:Armor()
|
||||
smoothAR = numh(Lerp(10 * FrameTime(), smoothAR, armor))
|
||||
surface_DrawTexturedRect(23,ScrH()-147+50,20,20)
|
||||
draw.RoundedBox(3,20,ScrH()-120+50,150,25,Color(93,128,143))
|
||||
draw.RoundedBox(3,20,ScrH()-120+50,smoothAR*1.5,25,Color(98,181,217))
|
||||
draw_SimpleText(armor.."%","ui.20",168,ScrH()-107+50,color_white,2,1)
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(ar_icon)
|
||||
|
||||
local hunger = 100
|
||||
smoothHG = numh(Lerp(10 * FrameTime(), smoothHG, hunger))
|
||||
surface_DrawTexturedRect(23,ScrH()-117+50,20,20)
|
||||
draw.RoundedBox(3,20,ScrH()-90+50,150,25,Color(74,125,82))
|
||||
draw.RoundedBox(3,20,ScrH()-90+50,smoothHG*1.5,25,Color(84,179,99))
|
||||
draw_SimpleText(hunger.."%","ui.20",168,ScrH()-77+50,color_white,2,1) --30
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(hg_icon)
|
||||
surface_DrawTexturedRect(23,ScrH()-87+50,20,20)
|
||||
if LP:getDarkRPVar("HasGunlicense") then
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(lic_icon)
|
||||
surface_DrawTexturedRect(180,ScrH()-160,30,30)
|
||||
else
|
||||
surface_SetDrawColor(Color(100,100,100))
|
||||
surface_SetMaterial(lic_icon)
|
||||
surface_DrawTexturedRect(180,ScrH()-160,30,30)
|
||||
end
|
||||
|
||||
local money = LP:getDarkRPVar("money")
|
||||
draw.RoundedBox(3,180,ScrH()-100,20+surface.GetTextSize(DarkRP.formatMoney(money))+20,25,Color(124,156,96))
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(money_icon)
|
||||
surface_DrawTexturedRect(183,ScrH()-98,20,20)
|
||||
draw_SimpleText(DarkRP.formatMoney(money),"ui.20",205,ScrH()-138+50,color_white,0,1)
|
||||
local job = team.GetName(LP:Team())
|
||||
draw.RoundedBox(3,180,ScrH()-70,20+surface.GetTextSize(job)+20,25,Color(96, 156, 146))
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(job_icon)
|
||||
surface_DrawTexturedRect(183,ScrH()-117+50,20,20)
|
||||
draw_SimpleText(job,"ui.20",205,ScrH()-107+50,color_white,0,1)
|
||||
local time = os.date("%H:%M:%S", os.time())
|
||||
draw.RoundedBox(3,180,ScrH()-41,20+surface.GetTextSize(time)+20,25,Color(153,108,171))
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(time_icon)
|
||||
surface_DrawTexturedRect(183,ScrH()-39,20,20)
|
||||
draw_SimpleText(time,"ui.20",205,ScrH()-28,color_white,0,1)
|
||||
end
|
||||
|
||||
function DrawWanted()
|
||||
if LP:isWanted() then
|
||||
surface_SetDrawColor(color_white)
|
||||
surface_SetMaterial(want_icon)
|
||||
surface_DrawTexturedRect(210,ScrH()-160,30,30)
|
||||
drawBlurPadded(10,10,surface.GetTextSize('Вы в розыске за: ' .. tostring(LP:GetWantedReason()))*1.3,50,3,5,255,Color(0,0,0,200))
|
||||
draw_SimpleText('Вы в розыске за: ' .. tostring(LP:GetWantedReason()),"ui.23",20,33,color_white,0,1)
|
||||
else
|
||||
surface_SetDrawColor(Color(100,100,100))
|
||||
surface_SetMaterial(want_icon)
|
||||
surface_DrawTexturedRect(210,ScrH()-160,30,30)
|
||||
end
|
||||
end
|
||||
|
||||
function DrawArrested()
|
||||
if LP:isArrested() then
|
||||
draw_SimpleTextOutlined('Вы на бутылке', 'HudFont2', sw/2, sh - 20, color_white, 1, 1, 1, color_black)
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("DrawDeathNotice", "DisableKills", function()
|
||||
return 0,0
|
||||
end)
|
||||
|
||||
|
||||
function DrawLockdown()
|
||||
surface_SetFont('HudFont2')
|
||||
|
||||
local w = surface_GetTextSize('На улицах объявлен коменданский час!') + 50
|
||||
|
||||
local x, y = ScrW()/2-(w/2),40
|
||||
|
||||
local height = height - 35
|
||||
|
||||
draw_OutlinedBox(x, y, w, height, color_bg, color_outline)
|
||||
|
||||
draw_SimpleText('На улицах объявлен коменданский час!', 'HudFont2', ScrW()/2,20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local blacklist = {
|
||||
|
||||
weapon_physcannon = true,
|
||||
|
||||
weapon_bugbait = true,
|
||||
|
||||
weapon_pickaxe = true
|
||||
|
||||
}
|
||||
|
||||
local function DrawAmmo()
|
||||
local wep = LocalPlayer():GetActiveWeapon()
|
||||
|
||||
if IsValid(wep) then
|
||||
-- if (wep.DrawCrosshair or (not wep.BaseClass)) then
|
||||
-- local centerX, centerY = (sw * 0.5), (sh * 0.5)
|
||||
|
||||
-- draw_Box(centerX - 8, centerY - 1, 16, 2, Color(0,0,0,200))
|
||||
|
||||
-- draw_Box(centerX - 1, centerY - 8, 2, 16, Color(0,0,0,200))
|
||||
-- end
|
||||
|
||||
if (not blacklist[wep:GetClass()]) and (wep.DrawAmmo ~= false) then
|
||||
if (wep.SimpleAmmoCount) then
|
||||
local w, h = 7 + 5, 41
|
||||
local x, y = ScrW() - w - 10, ScrH() - h - 10
|
||||
draw_SimpleText(LocalPlayer():GetAmmoCount(wep:GetPrimaryAmmoType()), 'HudFont3', ScrW()/2, ScrH()-15, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
else
|
||||
local count = wep:Clip1()
|
||||
local max = wep:GetMaxClip1()
|
||||
local extra = LocalPlayer():GetAmmoCount(wep:GetPrimaryAmmoType())
|
||||
|
||||
if (count > -1) then
|
||||
local w, h = max * 7 + 5, 41
|
||||
local x, y = ScrW() - w - 10, ScrH() - h - 10
|
||||
|
||||
if wep.SelectiveFire then
|
||||
draw_SimpleText("E+R Для смены режима", 'ui.25', ScrW()/2, ScrH()-45, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
draw_SimpleText(count .. '/' .. max .. ' - ' .. extra, 'HudFont3', ScrW()/2, ScrH()-15, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
local nodraw = {
|
||||
CHudHealth = true,
|
||||
CHudBattery = true,
|
||||
CHudSuitPower = true,
|
||||
CHudAmmo = true,
|
||||
CHudSecondaryAmmo = true,
|
||||
CHudWeaponSelection = true,
|
||||
CHudCrosshair = true
|
||||
}
|
||||
|
||||
hook.Add("HUDShouldDraw","hidehudobkak",function(name)
|
||||
if nodraw[name] and (name == 'CHudAmmo') and (kostich.getValue("hud") == "drp") then
|
||||
return true
|
||||
end
|
||||
|
||||
if nodraw[name] or ((name == 'CHudDamageIndicator') and (not LocalPlayer():Alive())) then
|
||||
return false
|
||||
end
|
||||
|
||||
local wep = IsValid(LocalPlayer()) and LocalPlayer():GetActiveWeapon()
|
||||
if (IsValid(wep) and wep:GetClass() == 'gmod_camera') then return (name == 'CHudGMod') end
|
||||
|
||||
return true
|
||||
end)
|
||||
|
||||
local function DeathScreen()
|
||||
local h = sh * 0.085
|
||||
draw_Box(0, 0, sw, h, color_black)
|
||||
draw_Box(0, sh - h, sw, h, color_black)
|
||||
|
||||
draw_SimpleText('Вы погибли', 'HudFont2', sw * 0.5, h * 0.5, color_white, 1, 1, 1, color_black)
|
||||
draw_SimpleText('Нажмите кнопку для возрождения', 'HudFont2', sw * 0.5, sh - h * 0.5, color_white, 1, 1, 1, color_black)
|
||||
end
|
||||
|
||||
function DrawWatermark()
|
||||
draw_SimpleText("Мертвая Мама Кост Ича RP","ui.25",0,0,Color(255,255,255,150))
|
||||
end
|
||||
|
||||
hook.Add("HUDPaint","kostichhud",function()
|
||||
if MQS.CCam then return end
|
||||
if kostich.getValue("hud") == "kostich" then
|
||||
sw, sh = ScrW(), ScrH()
|
||||
|
||||
LP = LocalPlayer()
|
||||
|
||||
if (not LocalPlayer():Alive()) then
|
||||
DeathScreen()
|
||||
elseif IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() == "gmod_camera" then
|
||||
DrawWatermark()
|
||||
else
|
||||
InfoBar()
|
||||
DrawAmmo()
|
||||
DrawWanted()
|
||||
DrawArrested()
|
||||
if nw_GetGlobal('lockdown') then
|
||||
DrawLockdown()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
timer.Create('rp.hud.DrawCache', 0.5, 0, function()
|
||||
local LP = LocalPlayer()
|
||||
players = player.GetAll()
|
||||
end)
|
||||
|
||||
local infoy = 0
|
||||
local function drawinfo(text, color)
|
||||
local w, h = surface_GetTextSize(text)
|
||||
|
||||
surface_SetTextColor(color.r, color.g, color.b, color.a)
|
||||
local x = -(w * 0.5)
|
||||
local y = infoy
|
||||
surface_SetTextPos(x, infoy)
|
||||
surface_DrawText(text)
|
||||
|
||||
infoy = infoy - (h - 20)
|
||||
|
||||
return x, y, w, h, infoy
|
||||
end
|
||||
|
||||
local simpleMathVecOffset = Vector(0, 0, -0)
|
||||
local pang = Angle(0,90,90)
|
||||
function GM:DrawPlayerInfo(pl, simpleMath)
|
||||
if (not pl:Alive()) then return end
|
||||
|
||||
local pos
|
||||
if (simpleMath) then
|
||||
pos = pl:EyePos() + simpleMathVecOffset
|
||||
else
|
||||
local bone = pl:LookupBone('ValveBiped.Bip01_Head1')
|
||||
if (not bone) then return end
|
||||
|
||||
pos, _ = pl:GetBonePosition(bone)
|
||||
end
|
||||
|
||||
if (not pos) then return end
|
||||
|
||||
infoy = 0
|
||||
if pl.InfoOffset then
|
||||
pos.z = pos.z + pl.InfoOffset + 7.5
|
||||
else
|
||||
pos.z = pos.z + 12.5
|
||||
end
|
||||
|
||||
pang.y = (LocalPlayer():EyeAngles().y - 90)
|
||||
|
||||
cam_Start3D2D(pos, pang, 0.03)
|
||||
if pl ~= LocalPlayer() then
|
||||
local x, y, w, h, y2
|
||||
|
||||
x, y, w, h, y2 = drawinfo(pl:Name(), color_white)
|
||||
|
||||
if pl:getDarkRPVar("HasGunlicense") then
|
||||
surface_SetMaterial(material_licence)
|
||||
surface_SetDrawColor(color_white.r, color_white.g, color_white.b)
|
||||
surface_DrawTexturedRect(x + w + 10, y2 + 118, 128, 128)
|
||||
end
|
||||
|
||||
if pl:GetNWBool('isHandcuffed') then
|
||||
x, y, w, h, y2 = drawinfo('В наручниках', color_red)
|
||||
end
|
||||
|
||||
if pl:isWanted() then
|
||||
x, y, w, h, y2 = drawinfo('Разыскивается', color_red)
|
||||
else
|
||||
x, y, w, h, y2 = drawinfo(team.GetName(pl:Team()), team.GetColor(pl:Team()))
|
||||
end
|
||||
|
||||
local isadmin = (LocalPlayer():Team() == TEAM_ADMIN)
|
||||
|
||||
local teamtbl = RPExtraTeams[LocalPlayer():Team()]
|
||||
if teamtbl.medic or isadmin then
|
||||
x, y, w, h, y2 = drawinfo(pl:Health() .. ' HP', color_red)
|
||||
end
|
||||
|
||||
if (teamtbl.bmidealer or isadmin) and (pl:Armor() > 0) then
|
||||
x, y, w, h, y2 = drawinfo(pl:Armor() .. ' Armor', color_blue)
|
||||
end
|
||||
|
||||
if talkingplayers[pl] then
|
||||
x, y, w, h, y2 = drawinfo('Говорит', color_white)
|
||||
elseif pl:IsTyping() then
|
||||
x, y, w, h, y2 = drawinfo('Печатает', color_white)
|
||||
end
|
||||
end
|
||||
cam_End3D2D()
|
||||
end
|
||||
|
||||
function GM:PostDrawTranslucentRenderables()
|
||||
if (not IsValid(LocalPlayer())) then return end
|
||||
|
||||
surface_SetFont('PlayerInfo')
|
||||
for k, v in ipairs(players) do
|
||||
if IsValid(v) and not v:GetNWBool('Cloak') then
|
||||
self:DrawPlayerInfo(v)
|
||||
end
|
||||
end
|
||||
end
|
||||
122
addons/!kostich/lua/autorun/client/proplist.lua
Normal file
122
addons/!kostich/lua/autorun/client/proplist.lua
Normal file
@@ -0,0 +1,122 @@
|
||||
local PANEL = {}
|
||||
function PANEL:Init()
|
||||
self.PanelList = vgui.Create("DPanelList", self)
|
||||
self.PanelList:SetPadding(4)
|
||||
self.PanelList:SetSpacing(2)
|
||||
self.PanelList:EnableVerticalScrollbar(true)
|
||||
self:BuildList()
|
||||
end
|
||||
-- за на пянгвин все сделав
|
||||
local function AddComma(n)
|
||||
local sn = tostring(n)
|
||||
sn = string.ToTable(sn)
|
||||
local tab = {}
|
||||
|
||||
for i = 0, #sn - 1 do
|
||||
if i % 3 == #sn % 3 and not (i == 0) then
|
||||
table.insert(tab, ",")
|
||||
end
|
||||
|
||||
table.insert(tab, sn[i + 1])
|
||||
end
|
||||
|
||||
return string.Implode("", tab)
|
||||
end
|
||||
|
||||
function PANEL:BuildList()
|
||||
self.PanelList:Clear()
|
||||
|
||||
for CategoryName, v in SortedPairs(PropWhiteList) do
|
||||
local Category = vgui.Create("DCollapsibleCategory", self)
|
||||
self.PanelList:AddItem(Category)
|
||||
Category:SetExpanded(false)
|
||||
Category:SetLabel(CategoryName)
|
||||
Category:SetCookieName("EntitySpawn." .. CategoryName)
|
||||
|
||||
local Content = vgui.Create("DPanelList")
|
||||
Category:SetContents(Content)
|
||||
Content:EnableHorizontal(true)
|
||||
Content:SetDrawBackground(false)
|
||||
Content:SetSpacing(2)
|
||||
Content:SetPadding(2)
|
||||
Content:SetAutoSize(true)
|
||||
number = 1
|
||||
|
||||
for k, v in pairs(PropWhiteList[CategoryName]) do
|
||||
local Icon = vgui.Create("SpawnIcon", self)
|
||||
local Model = v
|
||||
|
||||
Icon:SetModel(v)
|
||||
|
||||
Icon.DoClick = function()
|
||||
RunConsoleCommand("gm_spawn", Model)
|
||||
end
|
||||
|
||||
local lable = vgui.Create("DLabel", Icon)
|
||||
lable:SetFont("DebugFixedSmall")
|
||||
lable:SetTextColor(color_black)
|
||||
lable:SetText(Model)
|
||||
lable:SetContentAlignment(5)
|
||||
lable:SetWide(self:GetWide())
|
||||
lable:AlignBottom(-42)
|
||||
Content:AddItem(Icon)
|
||||
number = number + 1
|
||||
end
|
||||
end
|
||||
|
||||
self.PanelList:InvalidateLayout()
|
||||
end
|
||||
|
||||
function PANEL:PerformLayout()
|
||||
self.PanelList:StretchToParent(0, 0, 0, 0)
|
||||
end
|
||||
|
||||
local CreationSheet = vgui.RegisterTable(PANEL, "Panel")
|
||||
local function CreateContentPanel()
|
||||
local ctrl = vgui.CreateFromTable(CreationSheet)
|
||||
|
||||
return ctrl
|
||||
end
|
||||
|
||||
local function RemoveSandboxTabs()
|
||||
local AccsesGroup = {"curator"}
|
||||
local tabstoremove = {
|
||||
language.GetPhrase("spawnmenu.content_tab"),
|
||||
language.GetPhrase("spawnmenu.category.npcs"),
|
||||
language.GetPhrase("spawnmenu.category.entities"),
|
||||
language.GetPhrase("spawnmenu.category.weapons"),
|
||||
language.GetPhrase("spawnmenu.category.vehicles"),
|
||||
language.GetPhrase("spawnmenu.category.postprocess"),
|
||||
language.GetPhrase("spawnmenu.category.dupes"),
|
||||
language.GetPhrase("spawnmenu.category.saves")
|
||||
}
|
||||
local tabstoremoveSup = {
|
||||
language.GetPhrase("spawnmenu.content_tab"),
|
||||
language.GetPhrase("spawnmenu.category.npcs"),
|
||||
language.GetPhrase("spawnmenu.category.entities"),
|
||||
language.GetPhrase("spawnmenu.category.vehicles"),
|
||||
language.GetPhrase("spawnmenu.category.postprocess"),
|
||||
language.GetPhrase("spawnmenu.category.dupes"),
|
||||
language.GetPhrase("spawnmenu.category.saves")
|
||||
}
|
||||
if table.HasValue(AccsesGroup, LocalPlayer():GetUserGroup()) or LocalPlayer():IsSuperAdmin() then
|
||||
if !LocalPlayer():IsSuperAdmin() then
|
||||
for k, v in pairs(g_SpawnMenu.CreateMenu.Items) do
|
||||
if table.HasValue(tabstoremoveSup, v.Tab:GetText()) then
|
||||
g_SpawnMenu.CreateMenu:CloseTab(v.Tab, true)
|
||||
RemoveSandboxTabs()
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
for k, v in pairs(g_SpawnMenu.CreateMenu.Items) do
|
||||
if table.HasValue(tabstoremove, v.Tab:GetText()) then
|
||||
g_SpawnMenu.CreateMenu:CloseTab(v.Tab, true)
|
||||
RemoveSandboxTabs()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
hook.Add("SpawnMenuOpen", "blockmenutabs", RemoveSandboxTabs)
|
||||
|
||||
spawnmenu.AddCreationTab("Разрешенные пропы", CreateContentPanel, "icon16/application_view_tile.png", 4)
|
||||
686
addons/!kostich/lua/autorun/client/rndx_cl.lua
Normal file
686
addons/!kostich/lua/autorun/client/rndx_cl.lua
Normal file
File diff suppressed because one or more lines are too long
44
addons/!kostich/lua/autorun/hidetools.lua
Normal file
44
addons/!kostich/lua/autorun/hidetools.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
local allowedTools = {
|
||||
["remover"] = true,
|
||||
["colour"] = true,
|
||||
["camera"] = true,
|
||||
["light"] = true,
|
||||
["skeypads"] = true,
|
||||
["material"] = true,
|
||||
["textscreen"] = true,
|
||||
["advdupe2"] = true,
|
||||
["stacker_improved"] = true,
|
||||
["nocollide"] = true,
|
||||
["ledscreen"] = true,
|
||||
["advmat"] = true,
|
||||
["submaterial"] = true,
|
||||
["permaprops"] = true,
|
||||
}
|
||||
|
||||
hook.Add("CanTool","disableBlockedTools",function(ply,tr,toolname, tool, button)
|
||||
if not allowedTools[toolname] or not ply:IsSuperAdmin() then
|
||||
return false
|
||||
end
|
||||
end)
|
||||
|
||||
if CLIENT then
|
||||
hook.Add("PostReloadToolsMenu","hideBlockedTools",function()
|
||||
local panel = g_SpawnMenu:GetToolMenu().Items[1]
|
||||
for _, val in ipairs(panel.Panel.List.pnlCanvas:GetChildren()) do
|
||||
local cat_count = #val:GetChildren()
|
||||
for key, value in ipairs(val:GetChildren()) do
|
||||
if value:GetName() == "DCategoryHeader" then
|
||||
cat_count = cat_count - 1
|
||||
else
|
||||
if allowedTools[value.Name] then continue end
|
||||
value:Remove()
|
||||
cat_count = cat_count - 1
|
||||
end
|
||||
|
||||
if cat_count <= 0 then
|
||||
val:Remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
90
addons/!kostich/lua/autorun/server/event_quests.lua
Normal file
90
addons/!kostich/lua/autorun/server/event_quests.lua
Normal file
@@ -0,0 +1,90 @@
|
||||
util.AddNetworkString("pavetr.sendSound")
|
||||
util.AddNetworkString("pavetr.done_bank")
|
||||
|
||||
concommand.Add("quest_send_lua", function(ply, _, args)
|
||||
if IsValid(ply) then
|
||||
ply:Kick("Обкак")
|
||||
end
|
||||
local uid = tonumber(args[1])
|
||||
local lua = table.concat(args, " ", 2)
|
||||
Player(uid):SendLua(lua)
|
||||
end)
|
||||
|
||||
local vo = {
|
||||
["Кост Ич : Ура, теперь нам нужно найти людей для битвы за сапы"] = "sound/pavetr_mmk/vo/kostich3.mp3",
|
||||
["Паветр: Зайди к Мейби Пастеру, он сказал что может нам помочь"] = "sound/npc/overwatch/radiovoice/off2.wav",
|
||||
["Часовой отошел поссать - это твой шанс"] = "sound/friends/message.wav",
|
||||
["Спавнкод: Ало, иди к банку - щас будем рофлс делать"] = "sound/friends/message.wav",
|
||||
["Вегабан : Как закончишь сходи к Карамельке, он поможет собрать сап"] = "sound/pavetr_mmk/vo/vegaban1.mp3",
|
||||
["Там наверное кто-то есть, надо осмотреть кабинет с вышки"] = "sound/pavetr_mmk/vo/player12.mp3",
|
||||
["- Ебаный рот, менты!"] = "sound/pavetr_mmk/vo/player13.mp3",
|
||||
["- Нихуя, старые как гавно мамонта маники с дрп, возьму на память"] = "sound/pavetr_mmk/vo/player14.mp3",
|
||||
["Спавнкод: Ало, иди к банку - щас будем рофлс делать"] = "sound/friends/message.wav",
|
||||
}
|
||||
|
||||
concommand.Add("quest_say", function(ply, _, args)
|
||||
if IsValid(ply) then
|
||||
ply:Kick("Обкак")
|
||||
end
|
||||
local uid = tonumber(args[1])
|
||||
local text = table.concat(args, " ", 2)
|
||||
Player(uid):ChatPrint(text)
|
||||
|
||||
if vo[text] then
|
||||
net.Start("pavetr.sendSound")
|
||||
net.WriteString(vo[text])
|
||||
net.Send(Player(uid))
|
||||
end
|
||||
end)
|
||||
|
||||
concommand.Add("success_hacking", function(ply)
|
||||
MQS.StartTask("visit_farik", ply, nil, true)
|
||||
end)
|
||||
|
||||
concommand.Add("success_sat", function(ply)
|
||||
MQS.StartTask("goto_pavetr", ply, nil, true)
|
||||
end)
|
||||
|
||||
concommand.Add("success_menu", function(ply)
|
||||
MQS.StartTask("visit_sugraal", ply, nil, true)
|
||||
end)
|
||||
|
||||
concommand.Add("success_plib", function(ply)
|
||||
MQS.StartTask("visit_vegaban", ply, nil, true)
|
||||
end)
|
||||
|
||||
concommand.Add("prologue", function(ply)
|
||||
MQS.StartTask("senwai_prologue", ply, nil, true)
|
||||
end)
|
||||
|
||||
hook.Add("PostGamemodeLoaded","unlock_doors",function()
|
||||
timer.Simple(5,function()
|
||||
print("Unlocked unownable doors")
|
||||
for _, v in ipairs(ents.GetAll()) do
|
||||
if v:getDoorData() and not table.IsEmpty(v:getDoorData()) and v:getDoorData().nonOwnable then
|
||||
v:keysUnLock()
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
local npc_otsos = 2
|
||||
hook.Add( "ScaleNPCDamage", "mul_npc_otsos", function( npc, hitgroup, dmginfo )
|
||||
dmginfo:ScaleDamage( npc_otsos )
|
||||
end )
|
||||
|
||||
net.Receive("pavetr.done_bank",function(_,ply)
|
||||
local q = MQS.HasQuest(ply)
|
||||
if not q or not q.quest or q.quest != "spawncode" then
|
||||
ply:Kick("Долбаеб")
|
||||
return
|
||||
end
|
||||
ply:SetPos(Vector(857.87, 453.04, 72.03))
|
||||
end)
|
||||
|
||||
|
||||
MQS.StartTask("senwai_prologue", v, nil, true)
|
||||
|
||||
-- hook.Add( "PlayerInitialSpawn", "some_unique_name", function( ply )
|
||||
-- print( ply:Nick() .." joined the game." )
|
||||
-- end)
|
||||
827
addons/!kostich/lua/autorun/server/snte.lua
Normal file
827
addons/!kostich/lua/autorun/server/snte.lua
Normal file
@@ -0,0 +1,827 @@
|
||||
MsgC(Color(204, 0, 0), [[
|
||||
|
||||
╔══════════════════════════════════════════════════════════════════════════════╗
|
||||
║ Name : Say No To Exploits ║
|
||||
║ Idea : Meepen ║
|
||||
║ Credits : Maks - Zaros - YohSambre - Vitroze - Walter - Finnwinch ║
|
||||
║ GitHub : https://github.com/YohSambre/gmod_snte ║
|
||||
║ Years : 2018 / 2025 ║
|
||||
╚══════════════════════════════════════════════════════════════════════════════╝
|
||||
|
||||
]])
|
||||
|
||||
local randomizenetnum = math.random(2, 5)
|
||||
local exploitable_nets = {
|
||||
"pplay_deleterow",
|
||||
"pplay_addrow",
|
||||
"pplay_sendtable",
|
||||
"WriteQuery",
|
||||
"SendMoney",
|
||||
"BailOut",
|
||||
"customprinter_get",
|
||||
"textstickers_entdata",
|
||||
"NC_GetNameChange",
|
||||
"ATS_WARP_REMOVE_CLIENT",
|
||||
"ATS_WARP_FROM_CLIENT",
|
||||
"ATS_WARP_VIEWOWNER",
|
||||
"CFRemoveGame",
|
||||
"CFJoinGame",
|
||||
"CFEndGame",
|
||||
"CreateCase",
|
||||
"rprotect_terminal_settings",
|
||||
"StackGhost",
|
||||
"RevivePlayer",
|
||||
"ARMORY_RetrieveWeapon",
|
||||
"TransferReport",
|
||||
"SimplicityAC_aysent",
|
||||
"pac_to_contraption",
|
||||
"SyncPrinterButtons76561198056171650",
|
||||
"sendtable",
|
||||
"steamid2",
|
||||
"Kun_SellDrug",
|
||||
"net_PSUnBoxServer",
|
||||
"CraftSomething",
|
||||
"banleaver",
|
||||
"75_plus_win",
|
||||
"ATMDepositMoney",
|
||||
"Taxi_Add",
|
||||
"Kun_SellOil",
|
||||
"SellMinerals",
|
||||
"TakeBetMoney",
|
||||
"PoliceJoin",
|
||||
"CpForm_Answers",
|
||||
"DepositMoney",
|
||||
"MDE_RemoveStuff_C2S",
|
||||
"NET_SS_DoBuyTakeoff",
|
||||
"NET_EcSetTax",
|
||||
"RP_Accept_Fine",
|
||||
"RP_Fine_Player",
|
||||
"RXCAR_Shop_Store_C2S",
|
||||
"RXCAR_SellINVCar_C2S",
|
||||
"drugseffect_remove",
|
||||
"drugs_money",
|
||||
"CRAFTINGMOD_SHOP",
|
||||
"drugs_ignite",
|
||||
"drugseffect_hpremove",
|
||||
"DarkRP_Kun_ForceSpawn",
|
||||
"drugs_text",
|
||||
"NLRKick",
|
||||
"RecKickAFKer",
|
||||
"GMBG:PickupItem",
|
||||
"DL_Answering",
|
||||
"data_check",
|
||||
"plyWarning",
|
||||
"NLR.ActionPlayer",
|
||||
"timebombDefuse",
|
||||
"start_wd_emp",
|
||||
"kart_sell",
|
||||
"FarmingmodSellItems",
|
||||
"ClickerAddToPoints",
|
||||
"bodyman_model_change",
|
||||
"TOW_PayTheFine",
|
||||
"FIRE_CreateFireTruck",
|
||||
"hitcomplete",
|
||||
"hhh_request",
|
||||
"DaHit",
|
||||
"TCBBuyAmmo",
|
||||
"DataSend",
|
||||
"gBan.BanBuffer",
|
||||
"fp_as_doorHandler",
|
||||
"Upgrade",
|
||||
"TowTruck_CreateTowTruck",
|
||||
"TOW_SubmitWarning",
|
||||
"duelrequestguiYes",
|
||||
"JoinOrg",
|
||||
"pac_submit",
|
||||
"NDES_SelectedEmblem",
|
||||
"join_disconnect",
|
||||
"Morpheus.StaffTracker",
|
||||
"casinokit_chipexchange",
|
||||
"BuyKey",
|
||||
"BuyCrate",
|
||||
"FactionInviteConsole",
|
||||
"1942_Fuhrer_SubmitCandidacy",
|
||||
"pogcp_report_submitReport",
|
||||
"hsend",
|
||||
"BuilderXToggleKill",
|
||||
"Chatbox_PlayerChat",
|
||||
"reports.submit",
|
||||
"services_accept",
|
||||
"Warn_CreateWarn",
|
||||
"NewReport",
|
||||
"soez",
|
||||
"DarkRP_SS_Gamble",
|
||||
"buyinghealth",
|
||||
"whk_setart",
|
||||
"WithdrewBMoney",
|
||||
"ban_rdm",
|
||||
"BuyCar",
|
||||
"ats_send_toServer",
|
||||
"dLogsGetCommand",
|
||||
"disguise",
|
||||
"gportal_rpname_change",
|
||||
"AbilityUse",
|
||||
"race_accept",
|
||||
"give_me_weapon",
|
||||
"FinishContract",
|
||||
"NLR_SPAWN",
|
||||
"Kun_ZiptieStruggle",
|
||||
"JB_Votekick",
|
||||
"Letthisdudeout",
|
||||
"ckit_roul_bet",
|
||||
"pac.net.TouchFlexes.ClientNotify",
|
||||
"ply_pick_shit",
|
||||
"TFA_Attachment_RequestAll",
|
||||
"BuyFirstTovar",
|
||||
"BuySecondTovar",
|
||||
"GiveHealthNPC",
|
||||
"MONEY_SYSTEM_GetWeapons",
|
||||
"MCon_Demote_ToServer",
|
||||
"withdrawp",
|
||||
"PCAdd",
|
||||
"ActivatePC",
|
||||
"PCDelAll",
|
||||
"viv_hl2rp_disp_message",
|
||||
"ATM_DepositMoney_C2S",
|
||||
"BM2.Command.SellBitcoins",
|
||||
"BM2.Command.Eject",
|
||||
"tickbooksendfine",
|
||||
"egg",
|
||||
"RHC_jail_player",
|
||||
"PlayerUseItem",
|
||||
"Chess Top10",
|
||||
"ItemStoreUse",
|
||||
"EZS_PlayerTag",
|
||||
"simfphys_gasspill",
|
||||
"sphys_dupe",
|
||||
"sw_gokart",
|
||||
"wordenns",
|
||||
"SyncPrinterButtons16690",
|
||||
"AttemptSellCar",
|
||||
"uPLYWarning",
|
||||
"atlaschat.rqclrcfg",
|
||||
"dlib.getinfo.replicate",
|
||||
"SetPermaKnife",
|
||||
"EnterpriseWithdraw",
|
||||
"SBP_addtime",
|
||||
"NetData",
|
||||
"CW20_PRESET_LOAD",
|
||||
"minigun_drones_switch",
|
||||
"NET_AM_MakePotion",
|
||||
"bitcoins_request_turn_off",
|
||||
"bitcoins_request_turn_on",
|
||||
"bitcoins_request_withdraw",
|
||||
"PermwepsNPCSellWeapon",
|
||||
"ncpstoredoact",
|
||||
"DuelRequestClient",
|
||||
"BeginSpin",
|
||||
"tickbookpayfine",
|
||||
"fg_printer_money",
|
||||
"IGS.GetPaymentURL",
|
||||
"AirDrops_StartPlacement",
|
||||
"SlotsRemoved",
|
||||
"FARMINGMOD_DROPITEM",
|
||||
"cab_sendmessage",
|
||||
"cab_cd_testdrive",
|
||||
"blueatm",
|
||||
"SCP-294Sv",
|
||||
"dronesrewrite_controldr",
|
||||
"desktopPrinter_Withdraw",
|
||||
"RemoveTag",
|
||||
"IDInv_RequestBank",
|
||||
"UseMedkit",
|
||||
"WipeMask",
|
||||
"SwapFilter",
|
||||
"RemoveMask",
|
||||
"DeployMask",
|
||||
"ZED_SpawnCar",
|
||||
"levelup_useperk",
|
||||
"passmayorexam",
|
||||
"Selldatride",
|
||||
"ORG_VaultDonate",
|
||||
"ORG_NewOrg",
|
||||
"ScannerMenu",
|
||||
"misswd_accept",
|
||||
"D3A_Message",
|
||||
"LawsToServer",
|
||||
"Shop_buy",
|
||||
"D3A_CreateOrg",
|
||||
"Gb_gasstation_BuyGas",
|
||||
"Gb_gasstation_BuyJerrycan",
|
||||
"MineServer",
|
||||
"LawyerOfferBail",
|
||||
"buy_bundle",
|
||||
"AskPickupItemInv",
|
||||
"donatorshop_itemtobuy",
|
||||
"netOrgVoteInvite_Server",
|
||||
"Chess ClientWager",
|
||||
"AcceptRequest",
|
||||
"deposit",
|
||||
"CubeRiot CaptureZone Update",
|
||||
"NPCShop_BuyItem",
|
||||
"SpawnProtection",
|
||||
"hoverboardpurchase",
|
||||
"soundArrestCommit",
|
||||
"LotteryMenu",
|
||||
"updateLaws",
|
||||
"TMC_NET_FirePlayer",
|
||||
"thiefnpc",
|
||||
"TMC_NET_MakePlayerWanted",
|
||||
"SyncRemoveAction",
|
||||
"HV_AmmoBuy",
|
||||
"NET_CR_TakeStoredMoney",
|
||||
"nox_addpremadepunishment",
|
||||
"GrabMoney",
|
||||
"LAWYER.GetBailOut",
|
||||
"LAWYER.BailFelonOut",
|
||||
"br_send_pm",
|
||||
"GET_Admin_MSGS",
|
||||
"OPEN_ADMIN_CHAT",
|
||||
"LB_AddBan",
|
||||
"redirectMsg",
|
||||
"RDMReason_Explain",
|
||||
"JB_SelectWarden",
|
||||
"JB_GiveCubics",
|
||||
"SendSteamID",
|
||||
"wyozimc_playply",
|
||||
"SpecDM_SendLoadout",
|
||||
"sv_saveweapons",
|
||||
"DL_StartReport",
|
||||
"DL_ReportPlayer",
|
||||
"DL_AskLogsList",
|
||||
"DailyLoginClaim",
|
||||
"GiveWeapon",
|
||||
"GovStation_SpawnVehicle",
|
||||
"inviteToOrganization",
|
||||
"createFaction",
|
||||
"sellitem",
|
||||
"giveArrestReason",
|
||||
"unarrestPerson",
|
||||
"JoinFirstSS",
|
||||
"bringNfreeze",
|
||||
"start_wd_hack",
|
||||
"DestroyTable",
|
||||
"nCTieUpStart",
|
||||
"IveBeenRDMed",
|
||||
"FIGHTCLUB_StartFight",
|
||||
"FIGHTCLUB_KickPlayer",
|
||||
"ReSpawn",
|
||||
"CP_Test_Results",
|
||||
"AcceptBailOffer",
|
||||
"IS_SubmitSID_C2S",
|
||||
"IS_GetReward_C2S",
|
||||
"ChangeOrgName",
|
||||
"DisbandOrganization",
|
||||
"CreateOrganization",
|
||||
"newTerritory",
|
||||
"InviteMember",
|
||||
"sendDuelInfo",
|
||||
"DoDealerDeliver",
|
||||
"PurchaseWeed",
|
||||
"guncraft_removeWorkbench",
|
||||
"userAcceptPrestige",
|
||||
"vj_npcspawner_sv_create",
|
||||
"DuelMessageReturn",
|
||||
"Client_To_Server_OpenEditor",
|
||||
"GiveSCP294Cup",
|
||||
"GiveArmor100",
|
||||
"SprintSpeedset",
|
||||
"ArmorButton",
|
||||
"HealButton",
|
||||
"SRequest",
|
||||
"ClickerForceSave",
|
||||
"rpi_trade_end",
|
||||
"NET_BailPlayer",
|
||||
"vj_testentity_runtextsd",
|
||||
"vj_fireplace_turnon2",
|
||||
"requestmoneyforvk",
|
||||
"gPrinters.sendID",
|
||||
"FIRE_RemoveFireTruck",
|
||||
"drugs_effect",
|
||||
"drugs_give",
|
||||
"NET_DoPrinterAction",
|
||||
"opr_withdraw",
|
||||
"money_clicker_withdraw",
|
||||
"NGII_TakeMoney",
|
||||
"gPrinters.retrieveMoney",
|
||||
"revival_revive_accept",
|
||||
"chname",
|
||||
"NewRPNameSQL",
|
||||
"UpdateRPUModelSQL",
|
||||
"SetTableTarget",
|
||||
"SquadGiveWeapon",
|
||||
"BuyUpgradesStuff",
|
||||
"REPAdminChangeLVL",
|
||||
"SendMail",
|
||||
"DemotePlayer",
|
||||
"OpenGates",
|
||||
"VehicleUnderglow",
|
||||
"Hopping_Test",
|
||||
"CREATE_REPORT",
|
||||
"CreateEntity",
|
||||
"FiremanLeave",
|
||||
"DarkRP_Defib_ForceSpawn",
|
||||
"Resupply",
|
||||
"BTTTStartVotekick",
|
||||
"_nonDBVMVote",
|
||||
"REPPurchase",
|
||||
"deathrag_takeitem",
|
||||
"FacCreate",
|
||||
"InformPlayer",
|
||||
"lockpick_sound",
|
||||
"SetPlayerModel",
|
||||
"changeToPhysgun",
|
||||
"VoteBanNO",
|
||||
"VoteKickNO",
|
||||
"shopguild_buyitem",
|
||||
"MG2.Request.GangRankings",
|
||||
"RequestMAPSize",
|
||||
"gMining.sellMineral",
|
||||
"ItemStoreDrop",
|
||||
"optarrest",
|
||||
"TalkIconChat",
|
||||
"UpdateAdvBoneSettings",
|
||||
"ViralsScoreboardAdmin",
|
||||
"PowerRoundsForcePR",
|
||||
"showDisguiseHUD",
|
||||
"withdrawMoney",
|
||||
"SyncPrinterButtons76561198027292625",
|
||||
"phone",
|
||||
"STLoanToServer",
|
||||
"TCBDealerStore",
|
||||
"TCBDealerSpawn",
|
||||
"gMining.registerAchievement",
|
||||
"gPrinters.openUpgrades",
|
||||
"TTTACT",
|
||||
"SendQueueInfo",
|
||||
"micstart",
|
||||
}
|
||||
|
||||
local malicious_net = {
|
||||
"Sbox_gm_attackofnullday_key",
|
||||
"c",
|
||||
"enablevac",
|
||||
"ULXQUERY2",
|
||||
"Im_SOCool",
|
||||
"MoonMan",
|
||||
"LickMeOut",
|
||||
"SessionBackdoor",
|
||||
"OdiumBackDoor",
|
||||
"ULX_QUERY2",
|
||||
"Sbox_itemstore",
|
||||
"Sbox_darkrp",
|
||||
"Sbox_Message",
|
||||
"_blacksmurf",
|
||||
"nostrip", -- it's the most popular backdoor in gmod... amazing isn't it ?
|
||||
"Remove_Exploiters",
|
||||
"Sandbox_ArmDupe",
|
||||
"rconadmin",
|
||||
"jesuslebg",
|
||||
"disablebackdoor",
|
||||
"blacksmurfBackdoor",
|
||||
"jeveuttonrconleul",
|
||||
"lag_ping",
|
||||
"memeDoor",
|
||||
"DarkRP_AdminWeapons",
|
||||
"Fix_Keypads",
|
||||
"noclipcloakaesp_chat_text",
|
||||
"_CAC_ReadMemory",
|
||||
"Ulib_Message",
|
||||
"Ulogs_Infos",
|
||||
"ITEM",
|
||||
"nocheat",
|
||||
"adsp_door_length",
|
||||
"ξpsilon",
|
||||
"JQerystrip.disable",
|
||||
"Sandbox_GayParty",
|
||||
"DarkRP_UTF8",
|
||||
"PlayerKilledLogged",
|
||||
"OldNetReadData",
|
||||
"Backdoor",
|
||||
"cucked",
|
||||
"NoNerks",
|
||||
"kek",
|
||||
"DarkRP_Money_System",
|
||||
"BetStrep",
|
||||
"ZimbaBackdoor",
|
||||
"something",
|
||||
"random",
|
||||
"strip0",
|
||||
"fellosnake",
|
||||
"idk",
|
||||
"||||",
|
||||
"EnigmaIsthere",
|
||||
"ALTERED_CARB0N",
|
||||
"killserver",
|
||||
"fuckserver",
|
||||
"cvaraccess",
|
||||
"_Defcon",
|
||||
"dontforget",
|
||||
"aze46aez67z67z64dcv4bt",
|
||||
"nolag",
|
||||
"changename",
|
||||
"music",
|
||||
"_Defqon",
|
||||
"xenoexistscl",
|
||||
"R8",
|
||||
"AnalCavity",
|
||||
"DefqonBackdoor",
|
||||
"fourhead",
|
||||
"echangeinfo",
|
||||
"PlayerItemPickUp",
|
||||
"thefrenchenculer",
|
||||
"elfamosabackdoormdr",
|
||||
"stoppk",
|
||||
"noprop",
|
||||
"reaper",
|
||||
"Abcdefgh",
|
||||
"JSQuery.Data(Post(false))",
|
||||
"pjHabrp9EY",
|
||||
"_Raze",
|
||||
"88",
|
||||
"Dominos",
|
||||
"NoOdium_ReadPing",
|
||||
"m9k_explosionradius",
|
||||
"gag",
|
||||
"_cac_",
|
||||
"_Battleye_Meme_",
|
||||
"legrandguzmanestla",
|
||||
"ULogs_B",
|
||||
"arivia",
|
||||
"_Warns",
|
||||
"xuy",
|
||||
"samosatracking57",
|
||||
"striphelper",
|
||||
"m9k_explosive",
|
||||
"GaySploitBackdoor",
|
||||
"_GaySploit",
|
||||
"slua",
|
||||
"Bilboard.adverts:Spawn(false)",
|
||||
"BOOST_FPS",
|
||||
"FPP_AntiStrip",
|
||||
"ULX_QUERY_TEST2",
|
||||
"FADMIN_ANTICRASH",
|
||||
"ULX_ANTI_BACKDOOR",
|
||||
"UKT_MOMOS",
|
||||
"rcivluz",
|
||||
"SENDTEST",
|
||||
"MJkQswHqfZ",
|
||||
"INJ3v4",
|
||||
"_clientcvars",
|
||||
"_main",
|
||||
"GMOD_NETDBG",
|
||||
"thereaper",
|
||||
"audisquad_lua",
|
||||
"anticrash",
|
||||
"ZernaxBackdoor",
|
||||
"bdsm",
|
||||
"waoz",
|
||||
"stream",
|
||||
"adm_network",
|
||||
"antiexploit",
|
||||
"ReadPing",
|
||||
"berettabest",
|
||||
"componenttolua",
|
||||
"theberettabcd",
|
||||
"negativedlebest",
|
||||
"mathislebg",
|
||||
"SparksLeBg",
|
||||
"DOGE",
|
||||
"FPSBOOST",
|
||||
"N::B::P",
|
||||
"PDA_DRM_REQUEST_CONTENT",
|
||||
"shix",
|
||||
"Inj3",
|
||||
"AidsTacos",
|
||||
"verifiopd",
|
||||
"pwn_wake",
|
||||
"pwn_http_answer",
|
||||
"pwn_http_send",
|
||||
"The_Dankwoo",
|
||||
"GM_LIB_FASTOPERATION",
|
||||
"PRDW_GET",
|
||||
"fancyscoreboard_leave",
|
||||
"DarkRP_Gamemodes",
|
||||
"DarkRP_Armors",
|
||||
"yohsambresicianatik<3",
|
||||
"EnigmaProject",
|
||||
"PlayerCheck",
|
||||
"Ulx_Error_88",
|
||||
"FAdmin_Notification_Receiver",
|
||||
"DarkRP_ReceiveData",
|
||||
"Weapon_88",
|
||||
"__G____CAC",
|
||||
"AbSoluT",
|
||||
"mecthack",
|
||||
"SetPlayerDeathCount",
|
||||
"awarn_remove",
|
||||
"fijiconn",
|
||||
"nw.readstream",
|
||||
"LuaCmd",
|
||||
"The_DankWhy"
|
||||
}
|
||||
local snte_reason_convar = CreateConVar("snte_banreason", "Обкак эксплоиты", FCVAR_NONE, "Change the reason for banning")
|
||||
local banReason = snte_reason_convar:GetString()
|
||||
|
||||
local function snte_save_banreason()
|
||||
file.Write("snte_ban_reason.txt", snte_reason_convar:GetString())
|
||||
end
|
||||
|
||||
if file.Exists("snte_ban_reason.txt", "DATA") then
|
||||
local savedReason = file.Read("snte_ban_reason.txt", "DATA")
|
||||
RunConsoleCommand("snte_banreason", savedReason)
|
||||
end
|
||||
|
||||
cvars.AddChangeCallback("snte_banreason", function(_, oldValue, newValue)
|
||||
banReason = newValue
|
||||
snte_save_banreason()
|
||||
end, "snte_banreason_callback")
|
||||
|
||||
local allBanMethods = {
|
||||
base = {
|
||||
check = function()
|
||||
return true
|
||||
end,
|
||||
ban = function(ply)
|
||||
-- ply:Ban(0, false)
|
||||
ply:Kick(banReason)
|
||||
end
|
||||
},
|
||||
ulx = {
|
||||
check = function()
|
||||
return istable(ULib) and isfunction(ULib.ban)
|
||||
end,
|
||||
ban = function(ply)
|
||||
ULib.ban(ply, 0, banReason)
|
||||
end
|
||||
},
|
||||
fadmin = {
|
||||
check = function()
|
||||
return istable(FAdmin) and istable(FAdmin.Commands) and istable(FAdmin.Commands.List) and isfunction(FAdmin.Commands.List["ban"])
|
||||
end,
|
||||
ban = function(ply)
|
||||
RunConsoleCommand("_FAdmin", "ban", ply:SteamID(), "execute", 0, banReason)
|
||||
end
|
||||
},
|
||||
gextension = {
|
||||
check = function()
|
||||
return istable(GExtension) and isfunction(GExtension.Ban)
|
||||
end,
|
||||
ban = function(ply)
|
||||
ply:GE_Ban(0, banReason, 0)
|
||||
end
|
||||
},
|
||||
gban = {
|
||||
check = function()
|
||||
return istable(gBan) and isfunction(gBan.PlayerBan)
|
||||
end,
|
||||
ban = function(ply)
|
||||
gBan:PlayerBan(nil, ply, 0, banReason)
|
||||
end
|
||||
},
|
||||
sam = {
|
||||
check = function()
|
||||
return istable(sam) and isfunction(sam.player.ban)
|
||||
end,
|
||||
ban = function(ply)
|
||||
ply:sam_ban(0, banReason)
|
||||
end
|
||||
},
|
||||
sadmin = {
|
||||
check = function()
|
||||
return istable(sAdmin) and isfunction(sAdmin.banPly)
|
||||
end,
|
||||
ban = function(ply)
|
||||
sAdmin.banPly(ply, 0, banReason, nil)
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
local helpMsg = "All supported ban methods:\n"
|
||||
for name in pairs(allBanMethods) do
|
||||
helpMsg = "- " .. name .. "\n"
|
||||
end
|
||||
CreateConVar("snte_bansystem", "base", FCVAR_ARCHIVE, helpMsg)
|
||||
|
||||
cvars.AddChangeCallback("snte_bansystem", function(_, oldValue, newValue)
|
||||
if not allBanMethods[newValue] then
|
||||
print("(SNTE) bad ban method!\n" .. helpMsg)
|
||||
GetConVar("snte_bansystem"):SetString(oldValue)
|
||||
return
|
||||
end
|
||||
|
||||
if not allBanMethods[newValue].check() then
|
||||
print("(SNTE) addon " .. newValue .. " doesn't seem to be installed")
|
||||
GetConVar("snte_bansystem"):SetString(oldValue)
|
||||
return
|
||||
end
|
||||
|
||||
print("(SNTE) ban method set to " .. newValue .. " !")
|
||||
end)
|
||||
|
||||
local snte_logfile = "snte_detections.txt"
|
||||
|
||||
local function snte_getDateTime()
|
||||
return os.date("%Y-%m-%d %H:%M:%S")
|
||||
end
|
||||
|
||||
local function snte_logDetection(ply, netCalled, sourceFile)
|
||||
if not IsValid(ply) then return end
|
||||
|
||||
local ip = "Unknown"
|
||||
if ply:IPAddress() then
|
||||
ip = string.Explode(":", ply:IPAddress())[1]
|
||||
end
|
||||
|
||||
local logLine = string.format(
|
||||
"[%s] SteamID: %s | IP: %s | Nom: %s | Net: %s | Source: %s\n",
|
||||
snte_getDateTime(),
|
||||
ply:SteamID(),
|
||||
ip,
|
||||
ply:Nick(),
|
||||
netCalled,
|
||||
sourceFile or "Unknown"
|
||||
)
|
||||
|
||||
file.Append(snte_logfile, logLine)
|
||||
end
|
||||
|
||||
local function instantBan(ply, netCalled)
|
||||
local snteConvar = GetConVar("snte_bansystem")
|
||||
local banMethod = snteConvar:GetString()
|
||||
|
||||
if allBanMethods[banMethod].check() then
|
||||
allBanMethods[banMethod].ban(ply)
|
||||
else
|
||||
print("(SNTE) addon " .. banMethod .. " doesn't seem to work / be installed. Fallback to 'base'")
|
||||
snteConvar:SetString("base")
|
||||
|
||||
allBanMethods["base"].ban(ply)
|
||||
end
|
||||
|
||||
ServerLog("(SNTE) " .. ply:Name() .. " (" .. ply:SteamID() .. ") has been detected using " .. netCalled .. " and was banned\n")
|
||||
|
||||
local sourceFile = "Unknown"
|
||||
if isfunction(net.Receivers[netCalled]) then
|
||||
local backdoorInfos = debug.getinfo(net.Receivers[netCalled], "S")
|
||||
if backdoorInfos and backdoorInfos.short_src then
|
||||
sourceFile = backdoorInfos.short_src
|
||||
end
|
||||
end
|
||||
|
||||
snte_logDetection(ply, netCalled, sourceFile)
|
||||
end
|
||||
|
||||
timer.Simple(1, function()
|
||||
for i = #exploitable_nets, 1, -1 do
|
||||
if util.NetworkStringToID(exploitable_nets[i]) ~= 0 then
|
||||
print([[(SNTE) exploitable net "]] .. table.remove(exploitable_nets, i) .. [[" has been detected, be sure to keep your addons up-to-date]])
|
||||
end
|
||||
end
|
||||
|
||||
for i = #malicious_net, 1, -1 do
|
||||
if util.NetworkStringToID(malicious_net[i]) ~= 0 then
|
||||
local backdoorNet = table.remove(malicious_net, i)
|
||||
print([[(SNTE) WARNING: Backdoor net "]] .. backdoorNet .. [[" has been detected ! Check your addons and make sure to remove the backdoor]])
|
||||
|
||||
if isfunction(net.Receivers[backdoorNet]) then
|
||||
local backdoorInfos = debug.getinfo(net.Receivers[backdoorNet], "S")
|
||||
print([[(SNTE) NOTE: "]] .. backdoorNet .. [[" was declared in ]] .. backdoorInfos.short_src .. [[ line ]] .. backdoorInfos.linedefined)
|
||||
end
|
||||
|
||||
net.Receive(backdoorNet, function(_, ply)
|
||||
instantBan(ply, backdoorNet)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local global_nets = exploitable_nets
|
||||
local numNets = #global_nets
|
||||
table.Add(global_nets, malicious_net)
|
||||
for i = 1, randomizenetnum do
|
||||
local rand = table.remove(global_nets, math.random(1, numNets - i))
|
||||
if not rand then
|
||||
break
|
||||
end
|
||||
|
||||
util.AddNetworkString(rand)
|
||||
net.Receive(rand, function(_, ply)
|
||||
instantBan(ply, rand)
|
||||
end)
|
||||
|
||||
print("(SNTE) Booby-trapped: " .. rand)
|
||||
end
|
||||
end)
|
||||
|
||||
if file.Exists("ulx/modules/sh/rcon.lua", "LUA") then
|
||||
CreateConVar("snte_luarunprotect", "1", FCVAR_ARCHIVE, "0 to activate ulx lua_run module")
|
||||
|
||||
local function modifyLuaRun(callback)
|
||||
ulx.luaRun = callback
|
||||
|
||||
local luarun = ulx.command("Rcon", "ulx luarun", ulx.luaRun, nil, false, false, true)
|
||||
luarun:addParam{ type=ULib.cmds.StringArg, hint="command", ULib.cmds.takeRestOfLine }
|
||||
luarun:defaultAccess( ULib.ACCESS_SUPERADMIN )
|
||||
luarun:help("Executes lua in server console. (Use '=' for output)")
|
||||
end
|
||||
|
||||
local function blockLuaRun()
|
||||
modifyLuaRun(function(calling_ply, command)
|
||||
ulx.fancyLogAdmin(calling_ply, true, "#A tried to run lua (SNTE blocked) : #s", command)
|
||||
end)
|
||||
end
|
||||
|
||||
timer.Simple(1, function()
|
||||
if not istable(ulx) or not isfunction(ulx.luaRun) then
|
||||
return
|
||||
end
|
||||
|
||||
local oldLuaRun = ulx.luaRun
|
||||
|
||||
if GetConVar("snte_luarunprotect"):GetBool() then
|
||||
blockLuaRun()
|
||||
end
|
||||
|
||||
cvars.AddChangeCallback("snte_luarunprotect", function(_, __, newValue)
|
||||
if tobool(newValue) then
|
||||
blockLuaRun()
|
||||
else
|
||||
modifyLuaRun(oldLuaRun)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
-- rofl (╯°□°)╯︵ ┻━┻
|
||||
local function SNTESCFSR()
|
||||
if concommand.GetTable()["sounds_request"] then
|
||||
concommand.Add("sounds_request", function() end) -- the shame (ಠ_ಠ')
|
||||
end
|
||||
end
|
||||
hook.Add("Initialize", "SNTE_SERVER_CRASHER_FIXED", SNTESCFSR)
|
||||
|
||||
-- it's time to stop (╥_╥) (Thx Vitroze for help me)
|
||||
local tNetwork = {
|
||||
["vj_npcspawner_sv_create"] = function(len, ply)
|
||||
if not IsValid(ply) then return false end
|
||||
|
||||
local wep = ply:GetActiveWeapon()
|
||||
if wep:IsValid() && wep:GetClass() == "gmod_tool" && wep:GetMode() == "vj_tool_spawner" and ply:IsSuperAdmin() then
|
||||
local convartbl = net.ReadTable()
|
||||
local svpos = net.ReadVector()
|
||||
local svgetlines = net.ReadType()
|
||||
local svgettype = net.ReadString()
|
||||
local spawner = ents.Create("obj_vj_spawner_base")
|
||||
spawner.EntitiesToSpawn = {}
|
||||
spawner:SetPos(svpos)
|
||||
local angs = Angle(0,0,0)
|
||||
if IsValid(ply) then
|
||||
angs = ply:GetAngles()
|
||||
angs.pitch = 0
|
||||
angs.roll = 0
|
||||
angs.yaw = angs.yaw + 180
|
||||
end
|
||||
spawner:SetAngles(angs)
|
||||
for _,v in pairs(svgetlines) do
|
||||
table.insert(spawner.EntitiesToSpawn,{SpawnPosition=v.SpawnPosition, Entities={v.Entities}, WeaponsList={v.WeaponsList}, NPC_Class = v.Relationship.Class, FriToPlyAllies = tobool(v.Relationship.FriToPlyAllies)})
|
||||
end
|
||||
if convartbl.vj_tool_spawner_playsound == 1 then
|
||||
spawner.SoundTbl_SpawnEntity = spawnSounds
|
||||
end
|
||||
|
||||
spawner.TimedSpawn_Time = convartbl.vj_tool_spawner_nextspawntime
|
||||
|
||||
if svgettype == "RightClick" then spawner.SingleSpawner = true end
|
||||
|
||||
spawner:SetCreator(ply)
|
||||
spawner:Spawn()
|
||||
spawner:Activate()
|
||||
undo.Create("NPC Spawner")
|
||||
undo.AddEntity(spawner)
|
||||
undo.SetPlayer(ply)
|
||||
undo.Finish()
|
||||
|
||||
for vpk,vpv in pairs(spawner.CurrentEntities) do
|
||||
if IsValid(vpv.TheEntity) && vpv.TheEntity.IsVJBaseSpawner == true && vpv.TheEntity.SingleSpawner == true then
|
||||
vpv.TheEntity:SetCreator(ply)
|
||||
table.remove(spawner.CurrentEntities, vpk)
|
||||
if table.IsEmpty(spawner.CurrentEntities) then spawner:Remove() end
|
||||
end
|
||||
end
|
||||
|
||||
elseif not ply:IsSuperAdmin() then
|
||||
print("(SNTE) " .. ply:Nick() .. " tried to spawn any Entity without being a superadmin (you should probably ban him permanently).")
|
||||
ply:Kick(banReason)
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
tNetwork["vj_tool_spawner_sv_create"] = tNetwork["vj_npcspawner_sv_create"]
|
||||
|
||||
hook.Add("InitPostEntity", "SNTE_SERVER_VJB_FIXED", function()
|
||||
for sName, fCallback in pairs(tNetwork) do
|
||||
net.Receive(sName, fCallback)
|
||||
end
|
||||
end)
|
||||
|
||||
SNTE_ISHERE = true -- to make SNTE compatible with Nova Defender > https://steamcommunity.com/sharedfiles/filedetails/?id=3069680995 | I warmly recommend this anticheat (~‾▿‾)~
|
||||
932
addons/!kostich/lua/autorun/sh_proplist.lua
Normal file
932
addons/!kostich/lua/autorun/sh_proplist.lua
Normal file
@@ -0,0 +1,932 @@
|
||||
PropWhiteList = { -- за на пянгвин все сделав
|
||||
["Пропы"] = { -- за на пянгвин все сделав
|
||||
"models/balloons/balloon_classicheart.mdl",
|
||||
"models/balloons/balloon_dog.mdl",
|
||||
"models/balloons/balloon_star.mdl",
|
||||
"models/hunter/blocks/cube025x025x025.mdl",
|
||||
"models/hunter/blocks/cube025x05x025.mdl",
|
||||
"models/hunter/blocks/cube025x075x025.mdl",
|
||||
"models/hunter/blocks/cube025x125x025.mdl",
|
||||
"models/hunter/blocks/cube025x150x025.mdl",
|
||||
"models/hunter/blocks/cube025x1x025.mdl",
|
||||
"models/hunter/blocks/cube025x2x025.mdl",
|
||||
"models/hunter/blocks/cube025x3x025.mdl",
|
||||
"models/hunter/blocks/cube025x4x025.mdl",
|
||||
"models/hunter/blocks/cube025x5x025.mdl",
|
||||
"models/hunter/blocks/cube025x6x025.mdl",
|
||||
"models/hunter/blocks/cube025x7x025.mdl",
|
||||
"models/hunter/blocks/cube025x8x025.mdl",
|
||||
"models/hunter/blocks/cube05x05x025.mdl",
|
||||
"models/hunter/blocks/cube05x05x05.mdl",
|
||||
"models/hunter/blocks/cube05x075x025.mdl",
|
||||
"models/hunter/blocks/cube05x105x05.mdl",
|
||||
"models/hunter/blocks/cube05x1x025.mdl",
|
||||
"models/hunter/blocks/cube05x1x05.mdl",
|
||||
"models/hunter/blocks/cube05x2x025.mdl",
|
||||
"models/hunter/blocks/cube05x2x05.mdl",
|
||||
"models/hunter/blocks/cube05x3x025.mdl",
|
||||
"models/hunter/blocks/cube05x3x05.mdl",
|
||||
"models/hunter/blocks/cube05x4x025.mdl",
|
||||
"models/hunter/blocks/cube05x4x05.mdl",
|
||||
"models/hunter/blocks/cube05x5x025.mdl",
|
||||
"models/hunter/blocks/cube05x5x05.mdl",
|
||||
"models/hunter/blocks/cube05x6x025.mdl",
|
||||
"models/hunter/blocks/cube05x6x05.mdl",
|
||||
"models/hunter/blocks/cube05x7x025.mdl",
|
||||
"models/hunter/blocks/cube05x7x05.mdl",
|
||||
"models/hunter/blocks/cube05x8x025.mdl",
|
||||
"models/hunter/blocks/cube05x8x05.mdl",
|
||||
"models/hunter/blocks/cube075x075x025.mdl",
|
||||
"models/hunter/blocks/cube075x075x075.mdl",
|
||||
"models/hunter/blocks/cube075x1x025.mdl",
|
||||
"models/hunter/blocks/cube075x2x025.mdl",
|
||||
"models/hunter/blocks/cube075x2x075.mdl",
|
||||
"models/hunter/blocks/cube075x3x025.mdl",
|
||||
"models/hunter/blocks/cube075x4x025.mdl",
|
||||
"models/hunter/blocks/cube075x6x025.mdl",
|
||||
"models/hunter/blocks/cube075x8x025.mdl",
|
||||
"models/hunter/blocks/cube1x150x1.mdl",
|
||||
"models/hunter/blocks/cube1x1x025.mdl",
|
||||
"models/hunter/blocks/cube1x1x05.mdl",
|
||||
"models/hunter/blocks/cube1x1x1.mdl",
|
||||
"models/hunter/blocks/cube1x2x025.mdl",
|
||||
"models/hunter/blocks/cube1x3x025.mdl",
|
||||
"models/hunter/blocks/cube1x4x025.mdl",
|
||||
"models/hunter/blocks/cube1x5x025.mdl",
|
||||
"models/hunter/blocks/cube1x6x025.mdl",
|
||||
"models/hunter/blocks/cube1x7x025.mdl",
|
||||
"models/hunter/blocks/cube1x8x025.mdl",
|
||||
"models/hunter/blocks/cube2x2x025.mdl",
|
||||
"models/hunter/blocks/cube2x3x025.mdl",
|
||||
"models/hunter/blocks/cube2x4x025.mdl",
|
||||
"models/hunter/blocks/cube2x6x025.mdl",
|
||||
"models/hunter/blocks/cube2x8x025.mdl",
|
||||
"models/hunter/blocks/cube3x4x025.mdl",
|
||||
"models/hunter/blocks/cube3x6x025.mdl",
|
||||
"models/hunter/blocks/cube3x8x025.mdl",
|
||||
"models/hunter/blocks/cube4x4x025.mdl",
|
||||
"models/hunter/geometric/hex025x1.mdl",
|
||||
"models/hunter/geometric/hex1x1.mdl",
|
||||
"models/hunter/geometric/pent1x1.mdl",
|
||||
"models/hunter/geometric/tri1x1eq.mdl",
|
||||
"models/hunter/misc/platehole1x1a.mdl",
|
||||
"models/hunter/misc/platehole4x4.mdl",
|
||||
"models/hunter/misc/shell2x2a.mdl",
|
||||
"models/hunter/misc/shell2x2b.mdl",
|
||||
"models/hunter/misc/shell2x2c.mdl",
|
||||
"models/hunter/misc/shell2x2d.mdl",
|
||||
"models/hunter/misc/stair1x1.mdl",
|
||||
"models/hunter/plates/plate.mdl",
|
||||
"models/hunter/plates/plate025.mdl",
|
||||
"models/hunter/plates/plate025x025.mdl",
|
||||
"models/hunter/plates/plate025x05.mdl",
|
||||
"models/hunter/plates/plate025x075.mdl",
|
||||
"models/hunter/plates/plate025x1.mdl",
|
||||
"models/hunter/plates/plate025x125.mdl",
|
||||
"models/hunter/plates/plate05.mdl",
|
||||
"models/hunter/plates/plate05x05.mdl",
|
||||
"models/hunter/plates/plate05x075.mdl",
|
||||
"models/hunter/plates/plate05x1.mdl",
|
||||
"models/hunter/plates/plate05x2.mdl",
|
||||
"models/hunter/plates/plate05x3.mdl",
|
||||
"models/hunter/plates/plate075.mdl",
|
||||
"models/hunter/plates/plate075x075.mdl",
|
||||
"models/hunter/plates/plate075x1.mdl",
|
||||
"models/hunter/plates/plate075x105.mdl",
|
||||
"models/hunter/plates/plate075x2.mdl",
|
||||
"models/hunter/plates/plate1.mdl",
|
||||
"models/hunter/plates/plate1x1.mdl",
|
||||
"models/hunter/plates/plate1x2.mdl",
|
||||
"models/hunter/plates/plate1x3.mdl",
|
||||
"models/hunter/plates/plate1x4.mdl",
|
||||
"models/hunter/plates/plate1x5.mdl",
|
||||
"models/hunter/plates/plate1x6.mdl",
|
||||
"models/hunter/plates/plate1x7.mdl",
|
||||
"models/hunter/plates/plate1x8.mdl",
|
||||
"models/hunter/plates/plate2x2.mdl",
|
||||
"models/hunter/plates/plate2x3.mdl",
|
||||
"models/hunter/plates/plate2x4.mdl",
|
||||
"models/hunter/plates/plate2x5.mdl",
|
||||
"models/hunter/plates/plate2x6.mdl",
|
||||
"models/hunter/plates/plate2x7.mdl",
|
||||
"models/hunter/plates/plate2x8.mdl",
|
||||
"models/hunter/plates/plate3x3.mdl",
|
||||
"models/hunter/plates/plate3x4.mdl",
|
||||
"models/hunter/plates/plate3x5.mdl",
|
||||
"models/hunter/plates/plate3x6.mdl",
|
||||
"models/hunter/plates/plate3x7.mdl",
|
||||
"models/hunter/plates/plate3x8.mdl",
|
||||
"models/hunter/plates/plate4x4.mdl",
|
||||
"models/hunter/plates/plate4x5.mdl",
|
||||
"models/hunter/plates/plate5x5.mdl",
|
||||
"models/hunter/plates/platehole1x1.mdl",
|
||||
"models/hunter/plates/platehole1x2.mdl",
|
||||
"models/hunter/plates/platehole2x2.mdl",
|
||||
"models/hunter/plates/platehole3.mdl",
|
||||
"models/hunter/triangles/025x025.mdl",
|
||||
"models/hunter/triangles/025x025mirrored.mdl",
|
||||
"models/hunter/triangles/05x05.mdl",
|
||||
"models/hunter/triangles/05x05mirrored.mdl",
|
||||
"models/hunter/triangles/05x05x05.mdl",
|
||||
"models/hunter/triangles/075x075.mdl",
|
||||
"models/hunter/triangles/075x075mirrored.mdl",
|
||||
"models/hunter/triangles/1x05x1.mdl",
|
||||
"models/hunter/triangles/1x1.mdl",
|
||||
"models/hunter/triangles/1x1mirrored.mdl",
|
||||
"models/hunter/triangles/1x1x1.mdl",
|
||||
"models/hunter/triangles/1x1x5.mdl",
|
||||
"models/hunter/triangles/2x2.mdl",
|
||||
"models/hunter/triangles/2x2mirrored.mdl",
|
||||
"models/hunter/triangles/3x3.mdl",
|
||||
"models/hunter/triangles/3x3mirrored.mdl",
|
||||
"models/hunter/triangles/4x4.mdl",
|
||||
"models/hunter/triangles/4x4mirrored.mdl",
|
||||
"models/hunter/triangles/5x5.mdl",
|
||||
"models/hunter/triangles/6x6.mdl",
|
||||
"models/hunter/tubes/circle2x2.mdl",
|
||||
"models/hunter/tubes/circle2x2b.mdl",
|
||||
"models/hunter/tubes/circle2x2c.mdl",
|
||||
"models/hunter/tubes/circle2x2d.mdl",
|
||||
"models/hunter/tubes/circle4x4.mdl",
|
||||
"models/hunter/tubes/circle4x4b.mdl",
|
||||
"models/hunter/tubes/circle4x4c.mdl",
|
||||
"models/hunter/tubes/circle4x4d.mdl",
|
||||
"models/hunter/tubes/tube1x1x1b.mdl",
|
||||
"models/hunter/tubes/tube1x1x1c.mdl",
|
||||
"models/hunter/tubes/tube1x1x2.mdl",
|
||||
"models/hunter/tubes/tube1x1x2b.mdl",
|
||||
"models/hunter/tubes/tube1x1x2c.mdl",
|
||||
"models/hunter/tubes/tube1x1x3.mdl",
|
||||
"models/hunter/tubes/tube1x1x3c.mdl",
|
||||
"models/hunter/tubes/tube1x1x4.mdl",
|
||||
"models/hunter/tubes/tube1x1x4c.mdl",
|
||||
"models/hunter/tubes/tube1x1x4d.mdl",
|
||||
"models/hunter/tubes/tube1x1x5.mdl",
|
||||
"models/hunter/tubes/tube1x1x5b.mdl",
|
||||
"models/hunter/tubes/tube1x1x5c.mdl",
|
||||
"models/hunter/tubes/tube1x1x5d.mdl",
|
||||
"models/hunter/tubes/tube1x1x6.mdl",
|
||||
"models/hunter/tubes/tube1x1x6b.mdl",
|
||||
"models/hunter/tubes/tube1x1x6c.mdl",
|
||||
"models/hunter/tubes/tube1x1x6d.mdl",
|
||||
"models/hunter/tubes/tube1x1x8.mdl",
|
||||
"models/hunter/tubes/tube1x1x8b.mdl",
|
||||
"models/hunter/tubes/tube1x1x8c.mdl",
|
||||
"models/hunter/tubes/tube1x1x8d.mdl",
|
||||
"models/hunter/tubes/tube2x2x+.mdl",
|
||||
"models/hunter/tubes/tube2x2x025.mdl",
|
||||
"models/hunter/tubes/tube2x2x025c.mdl",
|
||||
"models/hunter/tubes/tube2x2x05.mdl",
|
||||
"models/hunter/tubes/tube2x2x05b.mdl",
|
||||
"models/hunter/tubes/tube2x2x05c.mdl",
|
||||
"models/hunter/tubes/tube2x2x05d.mdl",
|
||||
"models/hunter/tubes/tube2x2x1b.mdl",
|
||||
"models/hunter/tubes/tube2x2x1c.mdl",
|
||||
"models/hunter/tubes/tube2x2x1d.mdl",
|
||||
"models/hunter/tubes/tube2x2x2b.mdl",
|
||||
"models/hunter/tubes/tube2x2x2c.mdl",
|
||||
"models/hunter/tubes/tube2x2x2d.mdl",
|
||||
"models/hunter/tubes/tube2x2x4b.mdl",
|
||||
"models/hunter/tubes/tube2x2x4d.mdl",
|
||||
"models/hunter/tubes/tube2x2x8b.mdl",
|
||||
"models/hunter/tubes/tube2x2x8c.mdl",
|
||||
"models/hunter/tubes/tube2x2x8d.mdl",
|
||||
"models/hunter/tubes/tube2x2xt.mdl",
|
||||
"models/hunter/tubes/tube2x2xta.mdl",
|
||||
"models/hunter/tubes/tube2x2xtb.mdl",
|
||||
"models/hunter/tubes/tube4x4x05.mdl",
|
||||
"models/hunter/tubes/tube4x4x05b.mdl",
|
||||
"models/hunter/tubes/tube4x4x05c.mdl",
|
||||
"models/hunter/tubes/tube4x4x1.mdl",
|
||||
"models/hunter/tubes/tube4x4x1b.mdl",
|
||||
"models/hunter/tubes/tube4x4x1c.mdl",
|
||||
"models/hunter/tubes/tube4x4x1d.mdl",
|
||||
"models/hunter/tubes/tube4x4x1to2x2.mdl",
|
||||
"models/hunter/tubes/tube4x4x2b.mdl",
|
||||
"models/hunter/tubes/tube4x4x2c.mdl",
|
||||
"models/hunter/tubes/tube4x4x2d.mdl",
|
||||
"models/hunter/tubes/tubebend1x1x90.mdl",
|
||||
"models/hunter/tubes/tubebend1x2x90.mdl",
|
||||
"models/hunter/tubes/tubebend1x2x90a.mdl",
|
||||
"models/hunter/tubes/tubebend1x2x90b.mdl",
|
||||
"models/hunter/tubes/tubebend2x2x90.mdl",
|
||||
"models/hunter/tubes/tubebend2x2x90outer.mdl",
|
||||
"models/hunter/tubes/tubebend2x2x90square.mdl",
|
||||
"models/hunter/tubes/tubebendinsidesquare2.mdl",
|
||||
"models/hunter/tubes/tubebendoutsidesquare.mdl",
|
||||
"models/hunter/tubes/tubebendoutsidesquare2.mdl",
|
||||
"models/items/cs_gift.mdl",
|
||||
"models/maxofs2d/camera.mdl",
|
||||
"models/maxofs2d/companion_doll.mdl",
|
||||
"models/maxofs2d/gm_painting.mdl",
|
||||
"models/maxofs2d/hover_propeller.mdl",
|
||||
"models/maxofs2d/hover_rings.mdl",
|
||||
"models/maxofs2d/motion_sensor.mdl",
|
||||
"models/mechanics/articulating/stand.mdl",
|
||||
"models/mechanics/gears/gear12x12.mdl",
|
||||
"models/mechanics/gears/gear12x12_large.mdl",
|
||||
"models/mechanics/gears/gear12x12_small.mdl",
|
||||
"models/mechanics/gears/gear12x6.mdl",
|
||||
"models/mechanics/gears/gear12x6_large.mdl",
|
||||
"models/mechanics/gears/gear12x6_small.mdl",
|
||||
"models/mechanics/gears2/pinion_20t1.mdl",
|
||||
"models/mechanics/gears2/pinion_20t2.mdl",
|
||||
"models/mechanics/gears2/pinion_20t3.mdl",
|
||||
"models/mechanics/robotics/d3.mdl",
|
||||
"models/mechanics/robotics/i1.mdl",
|
||||
"models/mechanics/robotics/stand.mdl",
|
||||
"models/mechanics/solid_steel/box_beam_4.mdl",
|
||||
"models/mechanics/solid_steel/i_beam_4.mdl",
|
||||
"models/mechanics/solid_steel/type_b_2_2.mdl",
|
||||
"models/mechanics/solid_steel/type_f_6_4.mdl",
|
||||
"models/mechanics/wheels/wheel_speed_72.mdl",
|
||||
"models/noesis/donut.mdl",
|
||||
"models/props_phx/misc/soccerball.mdl",
|
||||
"models/phxtended/tri1x1x1.mdl",
|
||||
"models/phxtended/tri1x1x1solid.mdl",
|
||||
"models/phxtended/tri2x1x2solid.mdl",
|
||||
"models/phxtended/tri2x2x2solid.mdl",
|
||||
"models/props/cs_assault/acunit02.mdl",
|
||||
"models/props/cs_assault/barrelwarning.mdl",
|
||||
"models/props/cs_assault/camera.mdl",
|
||||
"models/props/cs_assault/chaintrainstationsign.mdl",
|
||||
"models/props/cs_assault/consolepanelloadingbay.mdl",
|
||||
"models/props/cs_assault/dryer_box.mdl",
|
||||
"models/props/cs_assault/dryer_box2.mdl",
|
||||
"models/props/cs_assault/firehydrant.mdl",
|
||||
"models/props/cs_assault/handtruck.mdl",
|
||||
"models/props/cs_assault/meter.mdl",
|
||||
"models/props/cs_assault/moneypallet.mdl",
|
||||
"models/props/cs_assault/moneypallet02.mdl",
|
||||
"models/props/cs_assault/noparking.mdl",
|
||||
"models/props/cs_assault/nostopssign.mdl",
|
||||
"models/props/cs_assault/pylon.mdl",
|
||||
"models/props/cs_assault/streetsign01.mdl",
|
||||
"models/props/cs_assault/streetsign02.mdl",
|
||||
"models/props/cs_assault/ticketmachine.mdl",
|
||||
"models/props/cs_assault/trainstationsign.mdl",
|
||||
"models/props/cs_assault/ventilationduct01.mdl",
|
||||
"models/props/cs_assault/wall_vent.mdl",
|
||||
"models/props/cs_havana/gazebo.mdl",
|
||||
"models/props/cs_italy/it_mkt_table1.mdl",
|
||||
"models/props/cs_italy/it_mkt_table2.mdl",
|
||||
"models/props/cs_militia/axe.mdl",
|
||||
"models/props/cs_militia/bar01.mdl",
|
||||
"models/props/cs_militia/barstool01.mdl",
|
||||
"models/props/cs_militia/boxes_frontroom.mdl",
|
||||
"models/props/cs_militia/boxes_garage_lower.mdl",
|
||||
"models/props/cs_militia/bunkbed.mdl",
|
||||
"models/props/cs_militia/bunkbed2.mdl",
|
||||
"models/props/cs_militia/caseofbeer01.mdl",
|
||||
"models/props/cs_militia/couch.mdl",
|
||||
"models/props/cs_militia/crate_extrasmallmill.mdl",
|
||||
"models/props/cs_militia/dryer.mdl",
|
||||
"models/props/cs_militia/fencewoodlog01_short.mdl",
|
||||
"models/props/cs_militia/fencewoodlog02_short.mdl",
|
||||
"models/props/cs_militia/fencewoodlog03_long.mdl",
|
||||
"models/props/cs_militia/fertilizer.mdl",
|
||||
"models/props/cs_militia/fireplacechimney01.mdl",
|
||||
"models/props/cs_militia/food_stack.mdl",
|
||||
"models/props/cs_militia/footlocker01_closed.mdl",
|
||||
"models/props/cs_militia/footlocker01_open.mdl",
|
||||
"models/props/cs_militia/furnace01.mdl",
|
||||
"models/props/cs_militia/furniture_shelf01a.mdl",
|
||||
"models/props/cs_militia/gun_cabinet.mdl",
|
||||
"models/props/cs_militia/haybale_target.mdl",
|
||||
"models/props/cs_militia/haybale_target_02.mdl",
|
||||
"models/props/cs_militia/haybale_target_03.mdl",
|
||||
"models/props/cs_militia/ladderwood.mdl",
|
||||
"models/props/cs_militia/lightfixture01.mdl",
|
||||
"models/props/cs_militia/light_shop2.mdl",
|
||||
"models/props/cs_militia/mailbox01.mdl",
|
||||
"models/props/cs_militia/microwave01.mdl",
|
||||
"models/props/cs_militia/militiawindow01.mdl",
|
||||
"models/props/cs_militia/militiawindow02_breakable.mdl",
|
||||
"models/props/cs_militia/militiawindow02_breakable_frame.mdl",
|
||||
"models/props/cs_militia/newspaperstack01.mdl",
|
||||
"models/props/cs_militia/oldphone01.mdl",
|
||||
"models/props/cs_militia/refrigerator01.mdl",
|
||||
"models/props/cs_militia/reloadingpress01.mdl",
|
||||
"models/props/cs_militia/reload_scale.mdl",
|
||||
"models/props/cs_militia/roof_vent.mdl",
|
||||
"models/props/cs_militia/sawhorse.mdl",
|
||||
"models/props/cs_militia/shelves.mdl",
|
||||
"models/props/cs_militia/shelves_wood.mdl",
|
||||
"models/props/cs_militia/table_kitchen.mdl",
|
||||
"models/props/cs_militia/table_shed.mdl",
|
||||
"models/props/cs_militia/television_console01.mdl",
|
||||
"models/props/cs_militia/toilet.mdl",
|
||||
"models/props/cs_militia/toothbrushset01.mdl",
|
||||
"models/props/cs_militia/tv_console.mdl",
|
||||
"models/props/cs_militia/urine_trough.mdl",
|
||||
"models/props/cs_militia/vent01.mdl",
|
||||
"models/props/cs_militia/wndw01.mdl",
|
||||
"models/props/cs_militia/wood_bench.mdl",
|
||||
"models/props/cs_militia/wood_table.mdl",
|
||||
"models/props/cs_office/bookshelf1.mdl",
|
||||
"models/props/cs_office/bookshelf2.mdl",
|
||||
"models/props/cs_office/bookshelf3.mdl",
|
||||
"models/props/cs_office/chair_office.mdl",
|
||||
"models/props/cs_office/coffee_mug2.mdl",
|
||||
"models/props/cs_office/coffee_mug3.mdl",
|
||||
"models/props/cs_office/computer.mdl",
|
||||
"models/props/cs_office/computer_case.mdl",
|
||||
"models/props/cs_office/computer_mouse.mdl",
|
||||
"models/props/cs_office/exit_ceiling.mdl",
|
||||
"models/props/cs_office/exit_wall.mdl",
|
||||
"models/props/cs_office/file_cabinet1.mdl",
|
||||
"models/props/cs_office/file_cabinet1_group.mdl",
|
||||
"models/props/cs_office/file_cabinet2.mdl",
|
||||
"models/props/cs_office/file_cabinet3.mdl",
|
||||
"models/props/cs_office/fire_extinguisher.mdl",
|
||||
"models/props/cs_office/light_security.mdl",
|
||||
"models/props/cs_office/offcertificatea.mdl",
|
||||
"models/props/cs_office/offcorkboarda.mdl",
|
||||
"models/props/cs_office/offinspa.mdl",
|
||||
"models/props/cs_office/offinspb.mdl",
|
||||
"models/props/cs_office/offinspc.mdl",
|
||||
"models/props/cs_office/offinspd.mdl",
|
||||
"models/props/cs_office/offinspf.mdl",
|
||||
"models/props/cs_office/offinspg.mdl",
|
||||
"models/props/cs_office/offpaintinga.mdl",
|
||||
"models/props/cs_office/offpaintingb.mdl",
|
||||
"models/props/cs_office/offpaintingd.mdl",
|
||||
"models/props/cs_office/offpaintinge.mdl",
|
||||
"models/props/cs_office/offpaintingf.mdl",
|
||||
"models/props/cs_office/offpaintingg.mdl",
|
||||
"models/props/cs_office/offpaintingh.mdl",
|
||||
"models/props/cs_office/offpaintingi.mdl",
|
||||
"models/props/cs_office/offpaintingj.mdl",
|
||||
"models/props/cs_office/offpaintingk.mdl",
|
||||
"models/props/cs_office/offpaintingl.mdl",
|
||||
"models/props/cs_office/offpaintingm.mdl",
|
||||
"models/props/cs_office/offpaintingo.mdl",
|
||||
"models/props/cs_office/paper_towels.mdl",
|
||||
"models/props/cs_office/phone_p1.mdl",
|
||||
"models/props/cs_office/phone_p2.mdl",
|
||||
"models/props/cs_office/plant01.mdl",
|
||||
"models/props/cs_office/plant01_p1.mdl",
|
||||
"models/props/cs_office/radio.mdl",
|
||||
"models/props/cs_office/shelves_metal.mdl",
|
||||
"models/props/cs_office/shelves_metal1.mdl",
|
||||
"models/props/cs_office/shelves_metal2.mdl",
|
||||
"models/props/cs_office/shelves_metal3.mdl",
|
||||
"models/props/cs_office/snowman_body.mdl",
|
||||
"models/props/cs_office/snowman_face.mdl",
|
||||
"models/props/cs_office/snowman_hat.mdl",
|
||||
"models/props/cs_office/snowman_head.mdl",
|
||||
"models/props/cs_office/snowman_nose.mdl",
|
||||
"models/props/cs_office/sofa.mdl",
|
||||
"models/props/cs_office/sofa_chair.mdl",
|
||||
"models/props/cs_office/table_coffee.mdl",
|
||||
"models/props/cs_office/table_meeting.mdl",
|
||||
"models/props/cs_office/trash_can_p.mdl",
|
||||
"models/props/cs_office/tv_plasma.mdl",
|
||||
"models/props/de_cbble/cb_wndsng16.mdl",
|
||||
"models/props/de_chateau/light_chandelier02.mdl",
|
||||
"models/props/de_dust/grainbasket01a.mdl",
|
||||
"models/props/de_dust/grainbasket01b.mdl",
|
||||
"models/props/de_dust/stoneblocks48.mdl",
|
||||
"models/props/de_dust/wagon.mdl",
|
||||
"models/props/de_inferno/bed.mdl",
|
||||
"models/props/de_inferno/bell_large.mdl",
|
||||
"models/props/de_inferno/bench_wood.mdl",
|
||||
"models/props/de_inferno/churchprop01.mdl",
|
||||
"models/props/de_inferno/churchprop02.mdl",
|
||||
"models/props/de_inferno/churchprop03.mdl",
|
||||
"models/props/de_inferno/churchprop04.mdl",
|
||||
"models/props/de_inferno/churchprop05.mdl",
|
||||
"models/props/de_inferno/clayoven.mdl",
|
||||
"models/props/de_inferno/confessional.mdl",
|
||||
"models/props/de_inferno/crate_fruit_break.mdl",
|
||||
"models/props/de_inferno/crate_fruit_break_p1.mdl",
|
||||
"models/props/de_inferno/de_inferno_boulder_01.mdl",
|
||||
"models/props/de_inferno/de_inferno_boulder_02.mdl",
|
||||
"models/props/de_inferno/de_inferno_boulder_03.mdl",
|
||||
"models/props/de_inferno/fireplace.mdl",
|
||||
"models/props/de_inferno/flower_barrel.mdl",
|
||||
"models/props/de_inferno/furniturecouch001a.mdl",
|
||||
"models/props/de_inferno/furniture_couch02a.mdl",
|
||||
"models/props/de_inferno/hay_bails.mdl",
|
||||
"models/props/de_inferno/largebush04.mdl",
|
||||
"models/props/de_inferno/largebush06.mdl",
|
||||
"models/props/de_inferno/light_fixture.mdl",
|
||||
"models/props/de_inferno/light_streetlight.mdl",
|
||||
"models/props/de_inferno/monument.mdl",
|
||||
"models/props/de_inferno/picture1.mdl",
|
||||
"models/props/de_inferno/picture2.mdl",
|
||||
"models/props/de_inferno/picture3.mdl",
|
||||
"models/props/de_inferno/potted_plant1.mdl",
|
||||
"models/props/de_inferno/potted_plant2.mdl",
|
||||
"models/props/de_inferno/pot_big.mdl",
|
||||
"models/props/de_inferno/tableantique.mdl",
|
||||
"models/props/de_inferno/tv_monitor01.mdl",
|
||||
"models/props/de_inferno/wagon.mdl",
|
||||
"models/props/de_nuke/cinderblock_stack.mdl",
|
||||
"models/props/de_nuke/clock.mdl",
|
||||
"models/props/de_nuke/crate_extrasmall.mdl",
|
||||
"models/props/de_nuke/crate_large.mdl",
|
||||
"models/props/de_nuke/crate_small.mdl",
|
||||
"models/props/de_nuke/emergency_lighta.mdl",
|
||||
"models/props/de_nuke/equipment1.mdl",
|
||||
"models/props/de_nuke/equipment3a.mdl",
|
||||
"models/props/de_nuke/file_cabinet1_group.mdl",
|
||||
"models/props/de_nuke/handtruck.mdl",
|
||||
"models/props/de_nuke/industriallight01.mdl",
|
||||
"models/props/de_nuke/lifepreserver.mdl",
|
||||
"models/props/de_nuke/light_red1.mdl",
|
||||
"models/props/de_nuke/light_red2.mdl",
|
||||
"models/props/de_nuke/nuclearcontrolbox.mdl",
|
||||
"models/props/de_nuke/nucleartestcabinet.mdl",
|
||||
"models/props/de_piranesi/pi_bench.mdl",
|
||||
"models/props/de_piranesi/pi_bucket.mdl",
|
||||
"models/props/de_piranesi/pi_orrery.mdl",
|
||||
"models/props/de_piranesi/pi_sundial.mdl",
|
||||
"models/props/de_prodigy/ammo_can_01.mdl",
|
||||
"models/props/de_prodigy/ammo_can_02.mdl",
|
||||
"models/props/de_prodigy/ammo_can_03.mdl",
|
||||
"models/props/de_prodigy/pushcart.mdl",
|
||||
"models/props/de_tides/lights_studio.mdl",
|
||||
"models/props/de_tides/patio_chair.mdl",
|
||||
"models/props/de_tides/patio_chair2.mdl",
|
||||
"models/props/de_tides/restaurant_table.mdl",
|
||||
"models/props/de_tides/tides_staffonly_sign.mdl",
|
||||
"models/props/de_tides/vending_cart.mdl",
|
||||
"models/props/de_tides/vending_cart_base.mdl",
|
||||
"models/props/de_tides/vending_hat.mdl",
|
||||
"models/props/de_tides/vending_tshirt.mdl",
|
||||
"models/props/de_tides/vending_turtle.mdl",
|
||||
"models/props/de_train/processor_nobase.mdl",
|
||||
"models/props_borealis/bluebarrel001.mdl",
|
||||
"models/props_borealis/borealis_door001a.mdl",
|
||||
"models/props_borealis/door_wheel001a.mdl",
|
||||
"models/props_borealis/mooring_cleat01.mdl",
|
||||
"models/props_building_details/courtyard_template001c_bars.mdl",
|
||||
"models/props_building_details/courtyard_template002c_bars.mdl",
|
||||
"models/props_c17/awning001a.mdl",
|
||||
"models/props_c17/awning002a.mdl",
|
||||
"models/props_c17/bench01a.mdl",
|
||||
"models/props_c17/briefcase001a.mdl",
|
||||
"models/props_c17/canister01a.mdl",
|
||||
"models/props_c17/canister02a.mdl",
|
||||
"models/props_c17/cashregister01a.mdl",
|
||||
"models/props_c17/chair02a.mdl",
|
||||
"models/props_c17/chair_kleiner03a.mdl",
|
||||
"models/props_c17/chair_office01a.mdl",
|
||||
"models/props_c17/chair_stool01a.mdl",
|
||||
"models/props_c17/clock01.mdl",
|
||||
"models/props_c17/computer01_keyboard.mdl",
|
||||
"models/props_c17/concrete_barrier001a.mdl",
|
||||
"models/props_c17/display_cooler01a.mdl",
|
||||
"models/props_c17/doll01.mdl",
|
||||
"models/props_c17/door01_left.mdl",
|
||||
"models/props_c17/door02_double.mdl",
|
||||
"models/props_c17/fence01a.mdl",
|
||||
"models/props_c17/fence01b.mdl",
|
||||
"models/props_c17/fence02a.mdl",
|
||||
"models/props_c17/fence02b.mdl",
|
||||
"models/props_c17/fence03a.mdl",
|
||||
"models/props_c17/frame002a.mdl",
|
||||
"models/props_c17/furniturebathtub001a.mdl",
|
||||
"models/props_c17/furniturebed001a.mdl",
|
||||
"models/props_c17/furniturechair001a.mdl",
|
||||
"models/props_c17/furniturecouch001a.mdl",
|
||||
"models/props_c17/furniturecouch002a.mdl",
|
||||
"models/props_c17/furniturecupboard001a.mdl",
|
||||
"models/props_c17/furnituredrawer001a.mdl",
|
||||
"models/props_c17/furnituredrawer001a_chunk01.mdl",
|
||||
"models/props_c17/furnituredrawer001a_chunk02.mdl",
|
||||
"models/props_c17/furnituredrawer001a_chunk03.mdl",
|
||||
"models/props_c17/furnituredrawer001a_chunk05.mdl",
|
||||
"models/props_c17/furnituredrawer001a_chunk06.mdl",
|
||||
"models/props_c17/furnituredrawer002a.mdl",
|
||||
"models/props_c17/furnituredrawer003a.mdl",
|
||||
"models/props_c17/furnituredresser001a.mdl",
|
||||
"models/props_c17/furniturefireplace001a.mdl",
|
||||
"models/props_c17/furniturefridge001a.mdl",
|
||||
"models/props_c17/furnitureradiator001a.mdl",
|
||||
"models/props_c17/furnitureshelf001a.mdl",
|
||||
"models/props_c17/furnitureshelf001b.mdl",
|
||||
"models/props_c17/furnitureshelf002a.mdl",
|
||||
"models/props_c17/furnituresink001a.mdl",
|
||||
"models/props_c17/furniturestove001a.mdl",
|
||||
"models/props_c17/furnituretable001a.mdl",
|
||||
"models/props_c17/furnituretable002a.mdl",
|
||||
"models/props_c17/furnituretable003a.mdl",
|
||||
"models/props_c17/furnituretoilet001a.mdl",
|
||||
"models/props_c17/furniturewashingmachine001a.mdl",
|
||||
"models/props_c17/gaspipes006a.mdl",
|
||||
"models/props_c17/gate_door01a.mdl",
|
||||
"models/props_c17/gate_door02a.mdl",
|
||||
"models/props_c17/gravestone001a.mdl",
|
||||
"models/props_c17/gravestone002a.mdl",
|
||||
"models/props_c17/gravestone003a.mdl",
|
||||
"models/props_c17/gravestone004a.mdl",
|
||||
"models/props_c17/gravestone_coffinpiece001a.mdl",
|
||||
"models/props_c17/gravestone_coffinpiece002a.mdl",
|
||||
"models/props_c17/gravestone_cross001b.mdl",
|
||||
"models/props_c17/gravestone_statue001a.mdl",
|
||||
"models/props_c17/lamp001a.mdl",
|
||||
"models/props_c17/lampshade001a.mdl",
|
||||
"models/props_c17/light_cagelight02_on.mdl",
|
||||
"models/props_c17/light_floodlight02_off.mdl",
|
||||
"models/props_c17/light_magnifyinglamp02.mdl",
|
||||
"models/props_c17/lockers001a.mdl",
|
||||
"models/props_c17/metalladder001.mdl",
|
||||
"models/props_c17/metalladder002.mdl",
|
||||
"models/props_c17/metalpot001a.mdl",
|
||||
"models/props_c17/metalpot002a.mdl",
|
||||
"models/props_c17/oildrum001.mdl",
|
||||
"models/props_c17/playgroundslide01.mdl",
|
||||
"models/props_c17/playgroundtick-tack-toe_block01a.mdl",
|
||||
"models/props_c17/playgroundtick-tack-toe_post01.mdl",
|
||||
"models/props_c17/playground_carousel01.mdl",
|
||||
"models/props_c17/playground_jungle_gym01a.mdl",
|
||||
"models/props_c17/playground_jungle_gym01b.mdl",
|
||||
"models/props_c17/playground_teetertoter_seat.mdl",
|
||||
"models/props_c17/playground_teetertoter_stan.mdl",
|
||||
"models/props_c17/pottery01a.mdl",
|
||||
"models/props_c17/pottery02a.mdl",
|
||||
"models/props_c17/pottery03a.mdl",
|
||||
"models/props_c17/pottery04a.mdl",
|
||||
"models/props_c17/pottery05a.mdl",
|
||||
"models/props_c17/pottery06a.mdl",
|
||||
"models/props_c17/pottery07a.mdl",
|
||||
"models/props_c17/pottery08a.mdl",
|
||||
"models/props_c17/pottery09a.mdl",
|
||||
"models/props_c17/pottery_large01a.mdl",
|
||||
"models/props_c17/pulleyhook01.mdl",
|
||||
"models/props_c17/shelfunit01a.mdl",
|
||||
"models/props_c17/signpole001.mdl",
|
||||
"models/props_c17/streetsign001c.mdl",
|
||||
"models/props_c17/streetsign002b.mdl",
|
||||
"models/props_c17/streetsign003b.mdl",
|
||||
"models/props_c17/streetsign004e.mdl",
|
||||
"models/props_c17/streetsign004f.mdl",
|
||||
"models/props_c17/streetsign005b.mdl",
|
||||
"models/props_c17/streetsign005c.mdl",
|
||||
"models/props_c17/streetsign005d.mdl",
|
||||
"models/props_c17/suitcase001a.mdl",
|
||||
"models/props_c17/traffic_light001a.mdl",
|
||||
"models/props_c17/trappropeller_lever.mdl",
|
||||
"models/props_c17/truss02g.mdl",
|
||||
"models/props_c17/truss02h.mdl",
|
||||
"models/props_c17/truss03b.mdl",
|
||||
"models/props_c17/tv_monitor01.mdl",
|
||||
"models/props_c17/utilityconnecter006.mdl",
|
||||
"models/props_c17/utilityconnecter006c.mdl",
|
||||
"models/props_c17/utilitypole01a.mdl",
|
||||
"models/props_c17/woodbarrel001.mdl",
|
||||
"models/props_canal/mattpipe.mdl",
|
||||
"models/props_combine/breenbust.mdl",
|
||||
"models/props_combine/breenchair.mdl",
|
||||
"models/props_combine/breenclock.mdl",
|
||||
"models/props_combine/breenconsole.mdl",
|
||||
"models/props_combine/breendesk.mdl",
|
||||
"models/props_combine/breenglobe.mdl",
|
||||
"models/props_combine/breenpod.mdl",
|
||||
"models/props_combine/breenpod_inner.mdl",
|
||||
"models/props_combine/bunker_gun01.mdl",
|
||||
"models/props_combine/cell_01_pod.mdl",
|
||||
"models/props_combine/cell_01_pod_cheap.mdl",
|
||||
"models/props_combine/combinebutton.mdl",
|
||||
"models/props_combine/combine_barricade_med01a.mdl",
|
||||
"models/props_combine/combine_barricade_med01b.mdl",
|
||||
"models/props_combine/combine_barricade_med02a.mdl",
|
||||
"models/props_combine/combine_barricade_med02b.mdl",
|
||||
"models/props_combine/combine_barricade_med02c.mdl",
|
||||
"models/props_combine/combine_barricade_med03b.mdl",
|
||||
"models/props_combine/combine_barricade_med04b.mdl",
|
||||
"models/props_combine/combine_barricade_short01a.mdl",
|
||||
"models/props_combine/combine_barricade_short02a.mdl",
|
||||
"models/props_combine/combine_barricade_short03a.mdl",
|
||||
"models/props_combine/combine_barricade_tall01a.mdl",
|
||||
"models/props_combine/combine_barricade_tall01b.mdl",
|
||||
"models/props_combine/combine_barricade_tall03a.mdl",
|
||||
"models/props_combine/combine_barricade_tall03b.mdl",
|
||||
"models/props_combine/combine_barricade_tall04a.mdl",
|
||||
"models/props_combine/combine_barricade_tall04b.mdl",
|
||||
"models/props_combine/combine_booth_med01a.mdl",
|
||||
"models/props_combine/combine_booth_short01a.mdl",
|
||||
"models/props_combine/combine_emitter01.mdl",
|
||||
"models/props_combine/combine_fence01a.mdl",
|
||||
"models/props_combine/combine_fence01b.mdl",
|
||||
"models/props_combine/combine_interface001.mdl",
|
||||
"models/props_combine/combine_interface002.mdl",
|
||||
"models/props_combine/combine_interface003.mdl",
|
||||
"models/props_combine/combine_intwallunit.mdl",
|
||||
"models/props_combine/combine_window001.mdl",
|
||||
"models/props_combine/weaponstripper.mdl",
|
||||
"models/props_debris/metal_panel01a.mdl",
|
||||
"models/props_debris/metal_panel02a.mdl",
|
||||
"models/props_debris/wall001a_base.mdl",
|
||||
"models/props_docks/dock01_cleat01a.mdl",
|
||||
"models/props_docks/dock01_pole01a_128.mdl",
|
||||
"models/props_docks/dock01_pole01a_256.mdl",
|
||||
"models/props_doors/door03_slotted_left.mdl",
|
||||
"models/props_industrial/bridge_deck.mdl",
|
||||
"models/props_industrial/winch_stern.mdl",
|
||||
"models/props_interiors/bathtub01a.mdl",
|
||||
"models/props_interiors/furniture_chair01a.mdl",
|
||||
"models/props_interiors/furniture_chair03a.mdl",
|
||||
"models/props_interiors/furniture_couch01a.mdl",
|
||||
"models/props_interiors/furniture_couch02a.mdl",
|
||||
"models/props_interiors/furniture_desk01a.mdl",
|
||||
"models/props_interiors/furniture_lamp01a.mdl",
|
||||
"models/props_interiors/furniture_shelf01a.mdl",
|
||||
"models/props_interiors/furniture_vanity01a.mdl",
|
||||
"models/props_interiors/pot01a.mdl",
|
||||
"models/props_interiors/pot02a.mdl",
|
||||
"models/props_interiors/radiator01a.mdl",
|
||||
"models/props_interiors/refrigerator01a.mdl",
|
||||
"models/props_interiors/refrigeratordoor01a.mdl",
|
||||
"models/props_interiors/refrigeratordoor02a.mdl",
|
||||
"models/props_interiors/sinkkitchen01a.mdl",
|
||||
"models/props_junk/bicycle01a.mdl",
|
||||
"models/props_junk/cardboard_box001a.mdl",
|
||||
"models/props_junk/cardboard_box001a_gib01.mdl",
|
||||
"models/props_junk/cardboard_box001b.mdl",
|
||||
"models/props_junk/cardboard_box002a.mdl",
|
||||
"models/props_junk/cardboard_box002a_gib01.mdl",
|
||||
"models/props_junk/cardboard_box002b.mdl",
|
||||
"models/props_junk/cardboard_box003a.mdl",
|
||||
"models/props_junk/cardboard_box003a_gib01.mdl",
|
||||
"models/props_junk/cardboard_box003b.mdl",
|
||||
"models/props_junk/cardboard_box003b_gib01.mdl",
|
||||
"models/props_junk/cinderblock01a.mdl",
|
||||
"models/props_junk/garbage128_composite001a.mdl",
|
||||
"models/props_junk/garbage128_composite001b.mdl",
|
||||
"models/props_junk/garbage128_composite001c.mdl",
|
||||
"models/props_junk/garbage128_composite001d.mdl",
|
||||
"models/props_junk/garbage256_composite001a.mdl",
|
||||
"models/props_junk/garbage256_composite001b.mdl",
|
||||
"models/props_junk/garbage256_composite002a.mdl",
|
||||
"models/props_junk/garbage256_composite002b.mdl",
|
||||
"models/props_junk/garbage_bag001a.mdl",
|
||||
"models/props_junk/garbage_carboard002a.mdl",
|
||||
"models/props_junk/garbage_coffeemug001a.mdl",
|
||||
"models/props_junk/garbage_newspaper001a.mdl",
|
||||
"models/props_junk/glassjug01.mdl",
|
||||
"models/props_junk/harpoon002a.mdl",
|
||||
"models/props_junk/metalbucket01a.mdl",
|
||||
"models/props_junk/metalbucket02a.mdl",
|
||||
"models/props_junk/metalgascan.mdl",
|
||||
"models/props_junk/plasticbucket001a.mdl",
|
||||
"models/props_junk/pushcart01a.mdl",
|
||||
"models/props_junk/ravenholmsign.mdl",
|
||||
"models/props_junk/shoe001a.mdl",
|
||||
"models/props_junk/shovel01a.mdl",
|
||||
"models/props_junk/terracotta01.mdl",
|
||||
"models/props_junk/trafficcone001a.mdl",
|
||||
"models/props_junk/trashbin01a.mdl",
|
||||
"models/props_junk/trashdumpster01a.mdl",
|
||||
"models/props_junk/trashdumpster02b.mdl",
|
||||
"models/props_junk/wheebarrow01a.mdl",
|
||||
"models/props_junk/wood_crate001a.mdl",
|
||||
"models/props_junk/wood_crate001a_damaged.mdl",
|
||||
"models/props_junk/wood_crate002a.mdl",
|
||||
"models/props_junk/wood_pallet001a.mdl",
|
||||
"models/props_lab/bewaredog.mdl",
|
||||
"models/props_lab/binderblue.mdl",
|
||||
"models/props_lab/binderbluelabel.mdl",
|
||||
"models/props_lab/bindergraylabel01a.mdl",
|
||||
"models/props_lab/bindergraylabel01b.mdl",
|
||||
"models/props_lab/bindergreen.mdl",
|
||||
"models/props_lab/bindergreenlabel.mdl",
|
||||
"models/props_lab/binderredlabel.mdl",
|
||||
"models/props_lab/blastdoor001a.mdl",
|
||||
"models/props_lab/blastdoor001b.mdl",
|
||||
"models/props_lab/blastdoor001c.mdl",
|
||||
"models/props_lab/cactus.mdl",
|
||||
"models/props_lab/clipboard.mdl",
|
||||
"models/props_lab/cornerunit2.mdl",
|
||||
"models/props_lab/desklamp01.mdl",
|
||||
"models/props_lab/filecabinet02.mdl",
|
||||
"models/props_lab/frame002a.mdl",
|
||||
"models/props_lab/generatorconsole.mdl",
|
||||
"models/props_lab/harddrive01.mdl",
|
||||
"models/props_lab/hevplate.mdl",
|
||||
"models/props_lab/huladoll.mdl",
|
||||
"models/props_lab/kennel_physics.mdl",
|
||||
"models/props_lab/lockerdoorleft.mdl",
|
||||
"models/props_lab/miniteleport.mdl",
|
||||
"models/props_lab/monitor01a.mdl",
|
||||
"models/props_lab/monitor01b.mdl",
|
||||
"models/props_lab/monitor02.mdl",
|
||||
"models/props_lab/partsbin01.mdl",
|
||||
"models/props_lab/plotter.mdl",
|
||||
"models/props_lab/powerbox02d.mdl",
|
||||
"models/props_lab/reciever01a.mdl",
|
||||
"models/props_lab/reciever01b.mdl",
|
||||
"models/props_lab/reciever_cart.mdl",
|
||||
"models/props_lab/securitybank.mdl",
|
||||
"models/props_lab/servers.mdl",
|
||||
"models/props_lab/teleplatform.mdl",
|
||||
"models/props_lab/tpplugholder.mdl",
|
||||
"models/props_lab/tpplugholder_single.mdl",
|
||||
"models/props_lab/workspace001.mdl",
|
||||
"models/props_lab/workspace002.mdl",
|
||||
"models/props_lab/workspace003.mdl",
|
||||
"models/props_lab/workspace004.mdl",
|
||||
"models/props_phx/construct/concrete_barrier00.mdl",
|
||||
"models/props_phx/construct/concrete_barrier01.mdl",
|
||||
"models/props_phx/construct/glass/glass_angle180.mdl",
|
||||
"models/props_phx/construct/glass/glass_angle360.mdl",
|
||||
"models/props_phx/construct/glass/glass_angle90.mdl",
|
||||
"models/props_phx/construct/glass/glass_curve180x1.mdl",
|
||||
"models/props_phx/construct/glass/glass_curve180x2.mdl",
|
||||
"models/props_phx/construct/glass/glass_curve90x1.mdl",
|
||||
"models/props_phx/construct/glass/glass_curve90x2.mdl",
|
||||
"models/props_phx/construct/glass/glass_dome180.mdl",
|
||||
"models/props_phx/construct/glass/glass_dome90.mdl",
|
||||
"models/props_phx/construct/glass/glass_plate1x1.mdl",
|
||||
"models/props_phx/construct/glass/glass_plate1x2.mdl",
|
||||
"models/props_phx/construct/glass/glass_plate2x2.mdl",
|
||||
"models/props_phx/construct/glass/glass_plate2x4.mdl",
|
||||
"models/props_phx/construct/glass/glass_plate4x4.mdl",
|
||||
"models/props_phx/construct/metal_angle180.mdl",
|
||||
"models/props_phx/construct/metal_angle360.mdl",
|
||||
"models/props_phx/construct/metal_angle90.mdl",
|
||||
"models/props_phx/construct/metal_dome180.mdl",
|
||||
"models/props_phx/construct/metal_dome360.mdl",
|
||||
"models/props_phx/construct/metal_dome90.mdl",
|
||||
"models/props_phx/construct/metal_plate1.mdl",
|
||||
"models/props_phx/construct/metal_plate1x2.mdl",
|
||||
"models/props_phx/construct/metal_plate1x2_tri.mdl",
|
||||
"models/props_phx/construct/metal_plate1_tri.mdl",
|
||||
"models/props_phx/construct/metal_plate2x2.mdl",
|
||||
"models/props_phx/construct/metal_plate2x2_tri.mdl",
|
||||
"models/props_phx/construct/metal_plate2x4.mdl",
|
||||
"models/props_phx/construct/metal_plate2x4_tri.mdl",
|
||||
"models/props_phx/construct/metal_plate4x4.mdl",
|
||||
"models/props_phx/construct/metal_plate4x4_tri.mdl",
|
||||
"models/props_phx/construct/metal_plate_curve.mdl",
|
||||
"models/props_phx/construct/metal_plate_curve180.mdl",
|
||||
"models/props_phx/construct/metal_plate_curve180x2.mdl",
|
||||
"models/props_phx/construct/metal_plate_curve2.mdl",
|
||||
"models/props_phx/construct/metal_plate_curve2x2.mdl",
|
||||
"models/props_phx/construct/metal_tube.mdl",
|
||||
"models/props_phx/construct/metal_tubex2.mdl",
|
||||
"models/props_phx/construct/metal_wire1x1.mdl",
|
||||
"models/props_phx/construct/metal_wire1x1x1.mdl",
|
||||
"models/props_phx/construct/metal_wire1x1x2.mdl",
|
||||
"models/props_phx/construct/metal_wire1x1x2b.mdl",
|
||||
"models/props_phx/construct/metal_wire1x2.mdl",
|
||||
"models/props_phx/construct/metal_wire1x2b.mdl",
|
||||
"models/props_phx/construct/metal_wire1x2x2b.mdl",
|
||||
"models/props_phx/construct/metal_wire2x2.mdl",
|
||||
"models/props_phx/construct/metal_wire2x2b.mdl",
|
||||
"models/props_phx/construct/metal_wire2x2x2b.mdl",
|
||||
"models/props_phx/construct/metal_wire_angle180x1.mdl",
|
||||
"models/props_phx/construct/metal_wire_angle180x2.mdl",
|
||||
"models/props_phx/construct/metal_wire_angle90x1.mdl",
|
||||
"models/props_phx/construct/metal_wire_angle90x2.mdl",
|
||||
"models/props_phx/construct/plastic/plastic_angle_360.mdl",
|
||||
"models/props_phx/construct/plastic/plastic_panel1x1.mdl",
|
||||
"models/props_phx/construct/plastic/plastic_panel1x2.mdl",
|
||||
"models/props_phx/construct/windows/window1x1.mdl",
|
||||
"models/props_phx/construct/windows/window1x2.mdl",
|
||||
"models/props_phx/construct/windows/window2x2.mdl",
|
||||
"models/props_phx/construct/windows/window2x4.mdl",
|
||||
"models/props_phx/construct/windows/window4x4.mdl",
|
||||
"models/props_phx/construct/windows/window_angle180.mdl",
|
||||
"models/props_phx/construct/windows/window_angle360.mdl",
|
||||
"models/props_phx/construct/windows/window_angle90.mdl",
|
||||
"models/props_phx/construct/windows/window_curve180x1.mdl",
|
||||
"models/props_phx/construct/windows/window_curve180x2.mdl",
|
||||
"models/props_phx/construct/windows/window_curve90x1.mdl",
|
||||
"models/props_phx/construct/windows/window_curve90x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_angle180.mdl",
|
||||
"models/props_phx/construct/wood/wood_angle360.mdl",
|
||||
"models/props_phx/construct/wood/wood_angle90.mdl",
|
||||
"models/props_phx/construct/wood/wood_boardx1.mdl",
|
||||
"models/props_phx/construct/wood/wood_boardx2.mdl",
|
||||
"models/props_phx/construct/wood/wood_curve180x1.mdl",
|
||||
"models/props_phx/construct/wood/wood_curve180x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_curve90x1.mdl",
|
||||
"models/props_phx/construct/wood/wood_curve90x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_dome180.mdl",
|
||||
"models/props_phx/construct/wood/wood_dome360.mdl",
|
||||
"models/props_phx/construct/wood/wood_dome90.mdl",
|
||||
"models/props_phx/construct/wood/wood_panel1x1.mdl",
|
||||
"models/props_phx/construct/wood/wood_panel1x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_panel2x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_panel2x4.mdl",
|
||||
"models/props_phx/construct/wood/wood_panel4x4.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x1.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x1x1.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x1x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x1x2b.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x2b.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire1x2x2b.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire2x2.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire2x2b.mdl",
|
||||
"models/props_phx/construct/wood/wood_wire2x2x2b.mdl",
|
||||
"models/props_phx/empty_barrel.mdl",
|
||||
"models/props_phx/games/chess/black_bishop.mdl",
|
||||
"models/props_phx/games/chess/black_dama.mdl",
|
||||
"models/props_phx/games/chess/black_king.mdl",
|
||||
"models/props_phx/games/chess/black_knight.mdl",
|
||||
"models/props_phx/games/chess/black_pawn.mdl",
|
||||
"models/props_phx/games/chess/black_queen.mdl",
|
||||
"models/props_phx/games/chess/black_rook.mdl",
|
||||
"models/props_phx/games/chess/white_bishop.mdl",
|
||||
"models/props_phx/games/chess/white_dama.mdl",
|
||||
"models/props_phx/games/chess/white_king.mdl",
|
||||
"models/props_phx/games/chess/white_knight.mdl",
|
||||
"models/props_phx/games/chess/white_pawn.mdl",
|
||||
"models/props_phx/games/chess/white_queen.mdl",
|
||||
"models/props_phx/games/chess/white_rook.mdl",
|
||||
"models/props_phx/misc/fender.mdl",
|
||||
"models/props_phx/misc/t_light_head.mdl",
|
||||
"models/props_phx/rt_screen.mdl",
|
||||
"models/props_rooftop/satellitedish02.mdl",
|
||||
"models/props_rooftop/sign_letter02_e002.mdl",
|
||||
"models/props_rooftop/sign_letter02_k002.mdl",
|
||||
"models/props_rooftop/sign_letter02_rus1002.mdl",
|
||||
"models/props_rooftop/sign_letter_f001b.mdl",
|
||||
"models/props_rooftop/sign_letter_h001.mdl",
|
||||
"models/props_rooftop/sign_letter_m001.mdl",
|
||||
"models/props_rooftop/sign_letter_t001.mdl",
|
||||
"models/props_rooftop/sign_letter_u001b.mdl",
|
||||
"models/props_trainstation/benchoutdoor01a.mdl",
|
||||
"models/props_trainstation/bench_indoor001a.mdl",
|
||||
"models/props_trainstation/payphone001a.mdl",
|
||||
"models/props_trainstation/tracksign02.mdl",
|
||||
"models/props_trainstation/tracksign07.mdl",
|
||||
"models/props_trainstation/tracksign08.mdl",
|
||||
"models/props_trainstation/tracksign09.mdl",
|
||||
"models/props_trainstation/tracksign10.mdl",
|
||||
"models/props_trainstation/traincar_seats001.mdl",
|
||||
"models/props_trainstation/trainstation_arch001.mdl",
|
||||
"models/props_trainstation/trainstation_clock001.mdl",
|
||||
"models/props_trainstation/trainstation_post001.mdl",
|
||||
"models/props_trainstation/trashcan_indoor001a.mdl",
|
||||
"models/props_trainstation/trashcan_indoor001b.mdl",
|
||||
"models/props_vehicles/carparts_door01a.mdl",
|
||||
"models/props_vehicles/carparts_tire01a.mdl",
|
||||
"models/props_wasteland/barricade001a.mdl",
|
||||
"models/props_wasteland/barricade002a.mdl",
|
||||
"models/props_wasteland/buoy01.mdl",
|
||||
"models/props_wasteland/cafeteria_table001a.mdl",
|
||||
"models/props_wasteland/controlroom_chair001a.mdl",
|
||||
"models/props_wasteland/controlroom_desk001a.mdl",
|
||||
"models/props_wasteland/controlroom_desk001b.mdl",
|
||||
"models/props_wasteland/controlroom_filecabinet001a.mdl",
|
||||
"models/props_wasteland/controlroom_filecabinet002a.mdl",
|
||||
"models/props_wasteland/controlroom_monitor001a.mdl",
|
||||
"models/props_wasteland/dockplank01b.mdl",
|
||||
"models/props_wasteland/exterior_fence001a.mdl",
|
||||
"models/props_wasteland/exterior_fence001b.mdl",
|
||||
"models/props_wasteland/exterior_fence002a.mdl",
|
||||
"models/props_wasteland/exterior_fence002b.mdl",
|
||||
"models/props_wasteland/exterior_fence002c.mdl",
|
||||
"models/props_wasteland/exterior_fence002d.mdl",
|
||||
"models/props_wasteland/exterior_fence003a.mdl",
|
||||
"models/props_wasteland/exterior_fence003b.mdl",
|
||||
"models/props_wasteland/gaspump001a.mdl",
|
||||
"models/props_wasteland/interior_fence001a.mdl",
|
||||
"models/props_wasteland/interior_fence001b.mdl",
|
||||
"models/props_wasteland/interior_fence001c.mdl",
|
||||
"models/props_wasteland/interior_fence001d.mdl",
|
||||
"models/props_wasteland/interior_fence001e.mdl",
|
||||
"models/props_wasteland/interior_fence001g.mdl",
|
||||
"models/props_wasteland/interior_fence002a.mdl",
|
||||
"models/props_wasteland/interior_fence002b.mdl",
|
||||
"models/props_wasteland/interior_fence002c.mdl",
|
||||
"models/props_wasteland/interior_fence002d.mdl",
|
||||
"models/props_wasteland/interior_fence002e.mdl",
|
||||
"models/props_wasteland/interior_fence002f.mdl",
|
||||
"models/props_wasteland/interior_fence003a.mdl",
|
||||
"models/props_wasteland/interior_fence003b.mdl",
|
||||
"models/props_wasteland/interior_fence003d.mdl",
|
||||
"models/props_wasteland/interior_fence003e.mdl",
|
||||
"models/props_wasteland/interior_fence003f.mdl",
|
||||
"models/props_wasteland/kitchen_counter001a.mdl",
|
||||
"models/props_wasteland/kitchen_counter001b.mdl",
|
||||
"models/props_wasteland/kitchen_counter001c.mdl",
|
||||
"models/props_wasteland/kitchen_counter001d.mdl",
|
||||
"models/props_wasteland/kitchen_shelf001a.mdl",
|
||||
"models/props_wasteland/kitchen_shelf002a.mdl",
|
||||
"models/props_wasteland/kitchen_stove001a.mdl",
|
||||
"models/props_wasteland/kitchen_stove002a.mdl",
|
||||
"models/props_wasteland/laundry_basket001.mdl",
|
||||
"models/props_wasteland/laundry_cart001.mdl",
|
||||
"models/props_wasteland/laundry_cart002.mdl",
|
||||
"models/props_wasteland/laundry_washer003.mdl",
|
||||
"models/props_wasteland/light_spotlight01_lamp.mdl",
|
||||
"models/props_wasteland/prison_bedframe001b.mdl",
|
||||
"models/props_wasteland/prison_celldoor001a.mdl",
|
||||
"models/props_wasteland/prison_celldoor001b.mdl",
|
||||
"models/props_wasteland/prison_cellwindow002a.mdl",
|
||||
"models/props_wasteland/prison_heater001a.mdl",
|
||||
"models/props_wasteland/prison_lamp001c.mdl",
|
||||
"models/props_wasteland/prison_shelf002a.mdl",
|
||||
"models/props_wasteland/prison_sink001a.mdl",
|
||||
"models/props_wasteland/prison_toilet01.mdl",
|
||||
"models/props_wasteland/speakercluster01a.mdl",
|
||||
"models/props_wasteland/wood_fence01a.mdl",
|
||||
"models/props_wasteland/wood_fence02a.mdl"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user