207 lines
7.1 KiB
Lua
207 lines
7.1 KiB
Lua
|
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)
|