dobrograd-13-06-2022/garrysmod/addons/gmod-sweps/lua/weapons/dbg_admingun/init.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

206 lines
7.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AddCSLuaFile "shared.lua"
AddCSLuaFile "cl_init.lua"
include "shared.lua"
-------------------------------------------------
-- MAIN
-------------------------------------------------
function SWEP:PrimaryAttack()
-- do nothing
end
function SWEP:SecondaryAttack()
local ply = self.Owner:GetEyeTrace().Entity
if IsValid(ply) and ply:IsPlayer() then
if not ply:GetDBVar('sgMuted') then
serverguard.command.Run(self.Owner, 'mute', true, ply:SteamID(), 15)
serverguard.command.Run(self.Owner, 'gag', true, ply:SteamID(), 15)
self.Owner:Notify('ooc', L.gag_and_mute:format(ply:Name()))
ply:Notify('ooc', self.Owner:Name() .. L.gag_and_mute2)
else
serverguard.command.Run(self.Owner, 'unmute', true, ply:SteamID())
serverguard.command.Run(self.Owner, 'ungag', true, ply:SteamID())
self.Owner:Notify('ooc', L.ungag_and_unmute:format(ply:Name()))
ply:Notify('ooc', self.Owner:Name() .. L.ungag_and_unmute2)
end
end
end
SWEP.nextReload = 0
function SWEP:Reload()
if CurTime() < self.nextReload then return end
self.Owner:Say('/invisible')
if self.Owner:GetNoDraw() then
self.Owner:Notify('ooc', L.invisible_god_en)
else
self.Owner:Notify('ooc', L.invisible_god_dis)
end
self.nextReload = CurTime() + 1.5
end
concommand.Add('dbg_admin', function(ply)
if not ply:IsAdmin() or IsValid(ply.tazeragdoll) then return end
if ply:Team() ~= TEAM_ADMIN then
local GM = GM or GAMEMODE
if ply:IsInvisible() then
ply:MakeInvisible(false)
timer.Simple(0, function()
ply:MakeInvisible(true)
end)
end
local weapons = {}
for _,wep in ipairs(ply:GetWeapons()) do
if not (GM.Config.DisallowDrop[wep:GetClass()] or ply:jobHasWeapon(wep:GetClass())) then
table.insert(weapons, {wep:GetClass(), wep:Clip1()})
end
end
ply.dbgAdmin_data = {
j = ply:getJobTable().command,
mdl = ply:GetModel(),
sk = ply:GetSkin(),
a = ply:Armor(),
p = ply:GetAmmoCount('pistol'),
smg = ply:GetAmmoCount('SMG1'),
lc = ply:GetNetVar('HasGunlicense'),
wps = weapons,
freq = ply:GetFrequency(),
}
ply:changeTeam(TEAM_ADMIN, true, true)
ply:SetModel('models/player/kleiner.mdl')
ply:GodEnable()
ply:SetAmmo(180, 'pistol')
ply:SetAmmo(360, 'SMG1')
ply:SetArmor(100)
ply:ConnectTalkie('ems')
ply:SyncTalkieChannels()
ply:SelectWeapon('dbg_admingun')
ply:Notify('ooc', L.admin_mode_on)
elseif ply.dbgAdmin_data then
if ply:IsInvisible() then
ply:MakeInvisible(false)
timer.Simple(0, function()
ply:MakeInvisible(true)
end)
end
local data = ply.dbgAdmin_data
local _, job = DarkRP.getJobByCommand(data.j)
ply:changeTeam(job, true, true)
ply:SetModel(data.mdl)
ply:SetSkin(data.sk)
ply:SetArmor(data.a)
ply:SetAmmo(data.p, 'pistol')
ply:SetAmmo(data.smg, 'SMG1')
ply:SetNetVar('HasGunlicense', data.lc)
for _,v in ipairs(data.wps) do
local wep = ply:Give(v[1], true)
if IsValid(wep) then wep:SetClip1(v[2]) end
end
ply:GodDisable()
ply.dbgAdmin_data = nil
ply:SelectWeapon('dbg_hands')
ply:Notify('ooc', L.admin_mode_off)
else ply:Notify('warning', 'Информация об админ-режиме утеряна! Попробуй сменить персонажа или воскресить себя') end
end)
netstream.Hook('AdminTell', function(ply, target, time, title, msg)
if not ply:IsAdmin() then return end
if not IsValid(target) or not target:IsPlayer() then return end
hook.Run('dbg-admin.tell', ply, time, title, msg, target)
target:Notify('admin', time, title, msg)
end)
-- local _desc = ' Можно продать у входа в убежище'
-- local function souvenir(name, icon, vol, model, desc)
-- return {'souvenir', {
-- name = name,
-- icon = 'octoteam/icons/' .. icon .. '.png',
-- model = model,
-- desc = desc,
-- volume = vol,
-- mass = 1,
-- }}
-- end
-- local items = {
-- {'coupon_food', 1},
-- {'coupon_ammo', 1},
-- {'coupon_exit', 1},
-- {'radio', 1},
-- {'h_mask', {
-- name = 'Противогаз',
-- icon = 'octoteam/icons/gasmask.png',
-- mask = 'gasmask',
-- }},
-- {'food', {
-- name = 'МРЕ',
-- icon = 'octoteam/icons/mre.png',
-- energy = 100,
-- }},
-- souvenir('Пыльный набор механика', 'hammer', 3, 'models/props_junk/cardboard_box004a.mdl', 'Хм... Может для кого и сгодится' .. _desc),
-- souvenir('Странные таблеточки', 'pills', 1, 'models/props_lab/jar01b.mdl', 'Помнится такие же по переулкам валялись, только пустые' .. _desc),
-- souvenir('Странный механизм', 'robot_arm', 1.5, 'models/jaanus/wiretool/wiretool_grabber_forcer.mdl', 'Выглядит, как что-то полезное' .. _desc),
-- souvenir('Серебряный бюст', 'bust', 1, 'models/props_junk/cardboard_box004a.mdl', 'Наверное он был какой-то важной шишкой в обществе. Думаю, кто-то сочтет это ценным' .. _desc),
-- souvenir(, 'battery_charge', 1, 'models/Items/car_battery01.mdl', 'Любые источники энергии сейчас на вес золота' .. _desc),
-- souvenir('Гантели', 'dumbbell', 3, 'models/props_junk/cardboard_box004a.mdl', 'Фух! Надеюсь, дотащу...' .. _desc),
-- souvenir('Моток каната', 'rope', 2, 'models/props_junk/cardboard_box004a.mdl', 'Полезная штуковина для выживания' .. _desc),
-- souvenir('Газовый баллон', 'keg', 20, 'models/props_junk/PropaneCanister001a.mdl', 'Незаменимая вещь в полевой кухне' .. _desc),
-- souvenir('Топливный генератор', 'engine', 35, 'models/gibs/airboat_broken_engine.mdl', 'Доступная энергия, главное не забыть заправить' .. _desc),
-- souvenir('Образец «Плантего Уртика»', 'plant', 0.2, 'models/props_junk/cardboard_box004a.mdl', 'Важный образец одного из видов растений. Отнеси это ученому'),
-- souvenir('Образец «Нигрум Мэйор»', 'plant', 0.2, 'models/props_junk/cardboard_box004a.mdl', 'Важный образец одного из видов растений. Отнеси это ученому'),
-- souvenir('Образец «Рубиус Чалгос»', 'plant', 0.2, 'models/props_junk/cardboard_box004a.mdl', 'Важный образец одного из видов растений. Отнеси это ученому'),
-- }
-- netstream.Hook('dysplasia.give', function(ply, tgt, itemID)
-- local cont = tgt.inv and tgt.inv.conts._hand
-- if not cont then
-- ply:Notify('warning', 'У игрока должны быть свободны руки')
-- return
-- end
-- if itemID == 1 then
-- for i, data in ipairs({
-- {'coupon_food', 3},
-- {'coupon_ammo', 1},
-- {'radio', 1},
-- {'h_mask', {
-- name = 'Противогаз',
-- icon = 'octoteam/icons/gasmask.png',
-- mask = 'gasmask',
-- }},
-- }) do
-- cont:AddItem(data[1], data[2])
-- end
-- else
-- local data = items[itemID - 1]
-- if data then cont:AddItem(data[1], data[2]) end
-- end
-- end)