Files
2026-03-31 10:27:04 +03:00

286 lines
7.9 KiB
Lua
Raw Permalink 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.
if ( SERVER ) then
AddCSLuaFile( "shared.lua" )
util.AddNetworkString("anterg0_guitarTab")
util.AddNetworkString("anterg0_guitarPlaySong")
end
if CLIENT then
SWEP.DrawCrosshair = false
SWEP.PrintName = "Русская гитара"
end
SWEP.Base = "weapon_base"
SWEP.PrintName = "Русская гитара"
SWEP.Slot = 2
SWEP.SlotPos = 4
SWEP.DrawAmmo = false
SWEP.ViewModel = "models/weapons/tayley/v_guitar.mdl"
SWEP.HoldType = "slam"
SWEP.ViewModelFOV = 70
SWEP.ViewModelFlip = false
SWEP.WorldModel = "models/anterg0_Guitar/marauder_guitar.mdl"
-- Other settings
SWEP.Weight = 5
SWEP.AutoSwitchTo = false
SWEP.AutoSwitchFrom = false
SWEP.Spawnable = true
SWEP.AdminSpawnable = true
-- SWEP info
SWEP.Author = "DuckFlit"
SWEP.Category = "[FT] Атмосфера"
SWEP.Instructions = "Левый клик дабы играть случайную песню. Правый клик чтобы выбрать песню."
-- Primary fire settings
SWEP.Primary.Damage = -1
SWEP.Primary.NumShots = -1
SWEP.Primary.Delay = 2
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = 0
SWEP.Primary.Tracer = -1
SWEP.Primary.Force = -1
SWEP.Primary.TakeAmmoPerBullet = false
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "none"
SWEP.ReloadTimer = 1
local songsTbl = {
[1] = {"Спецназ - Денис Майданов", "weapons/guitar/ad.mp3"},
[2] = {"Мужество Ведёт на Небеса", "weapons/guitar/ac.mp3"},
[3] = {"Витязи", "weapons/guitar/ag.mp3"},
[4] = {"Чёрный Октябрь ", "weapons/guitar/aj.mp3"},
[5] = {"За что мы пьём", "weapons/guitar/ak.mp3"},
[6] = {"Набирает высоту", "weapons/guitar/ar.mp3"},
[7] = {"Стрим - Песня Бритвы", "weapons/guitar/ay.mp3"},
[8] = {"Простите меня", "weapons/guitar/am.mp3"},
[9] = {"Владимир Высоцкий - Солдаты Группы", "weapons/guitar/ap.mp3"},
[10] = {"ГСН-Российскийспецназ", "weapons/guitar/fa.mp3"},
[11] = {"Егор Авдеев - 333 с ночи до зари", "weapons/guitar/fr.mp3"},
[12] = {"Николай Анисимов - По самому прямому назначению", "weapons/guitar/fy.mp3"},
[13] = {"UKRAINE - Гімн Українскої Артилерії", "weapons/guitar/jj.mp3"},
}
if CLIENT then
SWEP.WepSelectIcon = surface.GetTextureID("vgui/selection/guitar_ico")
function SWEP:DrawWeaponSelection(x, y, wide, tall, alpha)
x = x + wide / 2
y = y + tall / 2
tall = tall * 0.75
x = x - tall / 2
y = y - tall / 2 - 10
surface.SetDrawColor(255, 255, 255, alpha)
surface.SetTexture(self.WepSelectIcon)
surface.DrawTexturedRect(x, y, tall, tall)
end
end
function SWEP:Initialize()
self:SetWeaponHoldType(self.HoldType)
end
function SWEP:Holster()
self.Weapon:EmitSound(Sound("weapons/guitar/squak2.mp3"))
return true
end
function SWEP:OnRemove()
self:Holster()
end
function SWEP:PrimaryAttack()
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay);
self.Weapon:EmitSound(Sound("weapons/guitar/squak2.mp3"), 50, math.random(85,100), 1, CHAN_SWEP)
self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK )
self.Owner:SetAnimation( PLAYER_ATTACK1 )
if SERVER then
local songChoice = math.random(1, #songsTbl)
self.Weapon:SetNWBool("guitar_isPlaying", true)
self.Weapon:SetNWInt("guitar_songNum", songChoice)
end
timer.Simple(0.5, function()
local song = songsTbl[self.Weapon:GetNWInt("guitar_songNum")][2]
if(song == nil) then
song = ""
end
self.Weapon:EmitSound(song, 80, 100, 1, CHAN_SWEP)
end)
end
function SWEP:SecondaryAttack()
local ply = self.Owner
if SERVER then
net.Start("anterg0_guitarTab")
net.Send(ply)
end
return false
end
function SWEP:Think()
end
function SWEP:Reload()
if(self.Weapon:GetNextSecondaryFire() <= CurTime() ) then
self.Weapon:SetNextSecondaryFire(CurTime() + self.ReloadTimer)
self.Weapon:SetNWBool("guitar_isPlaying", false)
self.Weapon:EmitSound(Sound("weapons/guitar/squak2.mp3"), 50, math.random(85,100), 1, CHAN_SWEP)
return false
end
end
function SWEP:Deploy()
self:SetWeaponHoldType(self.HoldType)
return true
end
SWEP.RenderGroup = RENDERGROUP_BOTH
function SWEP:DrawWorldModelTranslucent()
self:DrawModel()
if self.time == nil then self.time = 0 end
surface.SetFont("Trebuchet24")
local tag = "Now playing ... "
if(self.Weapon:GetNWInt("guitar_songNum") ~= 0) then
songName = songsTbl[self.Weapon:GetNWInt("guitar_songNum")][1]
tag = "Now playing ... " .. songName
end
local textwidth = surface.GetTextSize(tag)
if LocalPlayer():GetPos():Distance(self:GetPos()) < 550 then
if(self.Weapon:GetNWBool("guitar_isPlaying") == false) then return end
local alpha = (LocalPlayer():GetPos():Distance(self:GetPos()) / 100.0)
alpha = math.Clamp(2.5 - alpha, 0 ,1)
local a = Angle(0,0,0)
a:RotateAroundAxis(Vector(1,0,0),90)
a.y = LocalPlayer():GetAngles().y - 90
cam.Start3D2D(self:GetPos() + Vector(0,0,45 + (math.sin(self.time*0.5)*2)), a , 0.15)
draw.SimpleText(tag,"Trebuchet24", -textwidth*0.5,0,Color(205,225,255,255*alpha) , 0 , 1)
cam.End3D2D()
end
self.time = self.time + FrameTime()
end
net.Receive("anterg0_guitarTab", function(len, ply)
local songNum = net.ReadFloat()
local wep = ply:GetActiveWeapon()
if(wep:GetClass() == "guitar") then
wep:SetNWBool("guitar_isPlaying", true)
wep:SetNWInt("guitar_songNum", songNum)
wep:EmitSound( songsTbl[songNum][2], 80, 100, 1, CHAN_SWEP)
end
end)
// DERMA STUFF
if CLIENT then
local PANEL = {}
function PANEL:Init()
local w = ScrW()*0.3
local h = ScrH()*0.4
self:SetSize(w, h)
self:SetPos(ScrW()*0.7, ScrH()/2 - (h/2))
self:MakePopup()
self:SetDeleteOnClose(true)
self:SetDraggable(true)
self:ShowCloseButton(true)
self:SetTitle("")
self.Paint = function(_, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(0, 0, 0, 225))
end
self.MusicOptions = vgui.Create("anterg0_Guitar:DScroll", self)
end
vgui.Register("anterg0_Guitar:Menu", PANEL, "DFrame")
net.Receive("anterg0_guitarTab", function()
if(IsValid(guitPanel)) then return end
guitPanel = vgui.Create("anterg0_Guitar:Menu")
end)
// MUSIC
local PANEL = {}
function PANEL:Init()
local x,y = self:GetParent():GetSize()
self:SetSize(x, y + 60)
self:SetPos(0, 30)
--Modify Scroll Bar--
local sbar = self:GetVBar()
sbar:SetHideButtons(true)
sbar.Paint = function(_, w, h)
draw.RoundedBox(0, 0, 0, (w/2), h, Color(0, 0, 0, 225))
end
sbar.btnGrip.Paint = function(_, w, h)
draw.RoundedBox(0, 0, 0, (w/2), h, Color(255, 255, 255, 255))
end
self.Paint = function(_, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(0, 0, 0, 0))
end
for k, v in ipairs(songsTbl) do
local btn = self:Add("DButton")
btn:Dock(TOP)
btn:DockMargin(10, 0, 10, 10)
btn:SetSize(0, 25)
btn:SetText("")
btn.HoverLerp = 0
btn.Paint = function(_, w, h)
if btn:IsHovered() then
btn.HoverLerp = Lerp( FrameTime() * 10, btn.HoverLerp, 1 )
else
btn.HoverLerp = Lerp( FrameTime() * 3, btn.HoverLerp, 0.1)
end
draw.RoundedBox(0, 0, 0, w, h, Color(50,50,50,255*btn.HoverLerp))
draw.SimpleText(v[1], "Trebuchet18", w/2, 2, Color(255,255,255, 255), 1, 0)
end
btn.PaintOver = function(_, w, h)
surface.SetDrawColor(Color(255, 255, 255, 125), 1, 1)
surface.DrawOutlinedRect(0, 0, w, h)
end
btn.DoClick = function()
local wep = LocalPlayer():GetActiveWeapon()
if(wep ~= nil or IsValid(wep)) then
LocalPlayer():EmitSound(Sound("weapons/guitar/squak2.mp3") )
wep:EmitSound( v[2], 100, 100, 1, CHAN_SWEP )
end
net.Start("anterg0_guitarTab")
net.WriteFloat(k)
net.SendToServer()
self:GetParent():Close()
end
end
self:Dock(FILL)
self:DockMargin(0, 0, 0, 10)
end
vgui.Register("anterg0_Guitar:DScroll", PANEL, "DScrollPanel")
end