dobrograd-13-06-2022/garrysmod/addons/feature-wire/lua/wire/stools/turret.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

104 lines
4 KiB
Lua

WireToolSetup.setCategory( "Other" )
WireToolSetup.open( "turret", "Turret", "gmod_wire_turret", nil, "Turrets" )
-- Precache these sounds..
Sound( "ambient.electrical_zap_3" )
Sound( "NPC_FloorTurret.Shoot" )
-- Add Default Language translation (saves adding it to the txt files)
if CLIENT then
language.Add( "tool.wire_turret.name", "Turret" )
language.Add( "tool.wire_turret.desc", "Throws bullets at things" )
language.Add( "Tool_wire_turret_spread", "Bullet Spread" )
language.Add( "Tool_wire_turret_numbullets", "Bullets per Shot" )
language.Add( "Tool_wire_turret_force", "Bullet Force" )
language.Add( "Tool_wire_turret_sound", "Shoot Sound" )
language.Add( "Tool_wire_turret_tracernum", "Tracer Every x Bullets:" )
TOOL.Information = { { name = "left", text = "Create/Update " .. TOOL.Name } }
end
WireToolSetup.BaseLang()
WireToolSetup.SetupMax( 20 )
TOOL.ClientConVar = {
delay = 0.05,
force = 1,
sound = 0,
damage = 10,
spread = 0,
numbullets = 1,
automatic = 1,
tracer = "Tracer",
tracernum = 1,
model = "models/weapons/w_smg1.mdl"
}
TOOL.GhostAngle = Angle(-90,0,0)
TOOL.GetGhostMin = function() return -2 end
if SERVER then
function TOOL:GetConVars()
return self:GetClientNumber("delay"), self:GetClientNumber("damage"), self:GetClientNumber("force"), self:GetClientInfo("sound"),
self:GetClientNumber("numbullets"), self:GetClientNumber("spread"), self:GetClientInfo("tracer"), self:GetClientNumber("tracernum")
end
end
local ValidTurretModels = {
["models/weapons/w_smg1.mdl"] = true,
["models/weapons/w_smg_mp5.mdl"] = true,
["models/weapons/w_smg_mac10.mdl"] = true,
["models/weapons/w_rif_m4a1.mdl"] = true,
["models/weapons/w_357.mdl"] = true,
["models/weapons/w_shot_m3super90.mdl"] = true
}
function TOOL:GetModel()
local model = WireToolObj.GetModel(self)
return ValidTurretModels[model] and model or "models/weapons/w_smg1.mdl"
end
function TOOL.BuildCPanel( CPanel )
WireToolHelpers.MakePresetControl(CPanel, "wire_turret")
-- Shot sounds
local weaponSounds = {Label = "#Tool_wire_turret_sound", MenuButton = 0, Options={}, CVars = {}}
weaponSounds["Options"]["#No Weapon"] = { wire_turret_sound = "" }
weaponSounds["Options"]["#Pistol"] = { wire_turret_sound = "Weapon_Pistol.Single" }
weaponSounds["Options"]["#SMG"] = { wire_turret_sound = "Weapon_SMG1.Single" }
weaponSounds["Options"]["#AR2"] = { wire_turret_sound = "Weapon_AR2.Single" }
weaponSounds["Options"]["#Shotgun"] = { wire_turret_sound = "Weapon_Shotgun.Single" }
weaponSounds["Options"]["#Floor Turret"] = { wire_turret_sound = "NPC_FloorTurret.Shoot" }
weaponSounds["Options"]["#Airboat Heavy"] = { wire_turret_sound = "Airboat.FireGunHeavy" }
weaponSounds["Options"]["#Zap"] = { wire_turret_sound = "ambient.electrical_zap_3" }
CPanel:AddControl("ComboBox", weaponSounds )
WireDermaExts.ModelSelect(CPanel, "wire_turret_model", list.Get( "WireTurretModels" ), 2)
-- Tracer
local TracerType = {Label = "#Tracer", MenuButton = 0, Options={}, CVars = {}}
TracerType["Options"]["#Default"] = { wire_turret_tracer = "Tracer" }
TracerType["Options"]["#AR2 Tracer"] = { wire_turret_tracer = "AR2Tracer" }
TracerType["Options"]["#Airboat Tracer"] = { wire_turret_tracer = "AirboatGunHeavyTracer" }
TracerType["Options"]["#Laser"] = { wire_turret_tracer = "LaserTracer" }
CPanel:AddControl("ComboBox", TracerType )
-- Various controls that you should play with!
if game.SinglePlayer() then
CPanel:NumSlider("#Tool_wire_turret_numbullets", "wire_turret_numbullets", 1, 10, 0)
end
CPanel:NumSlider("#Damage", "wire_turret_damage", 0, 100, 0)
CPanel:NumSlider("#Tool_wire_turret_spread", "wire_turret_spread", 0, 1.0, 2)
CPanel:NumSlider("#Tool_wire_turret_force", "wire_turret_force", 0, 500, 1)
-- The delay between shots.
if game.SinglePlayer() then
CPanel:NumSlider("#Delay", "wire_turret_delay", 0.01, 1.0, 2)
CPanel:NumSlider("#Tool_wire_turret_tracernum", "wire_turret_tracernum", 0, 15, 0)
else
CPanel:NumSlider("#Delay", "wire_turret_delay", 0.05, 1.0, 2)
end
end