104 lines
4 KiB
Lua
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
|