mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
Upload
This commit is contained in:
21
gamemodes/ixhl2rp/LICENSE
Normal file
21
gamemodes/ixhl2rp/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Alexander Grist-Hucker, Igor Radovanovic
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
45
gamemodes/ixhl2rp/README.md
Normal file
45
gamemodes/ixhl2rp/README.md
Normal file
@@ -0,0 +1,45 @@
|
||||
Willard Networks - WN:IX
|
||||
A unique HL2RP schema built by the WN team
|
||||
|
||||
Copyright Atko 2023
|
||||
All Rights Reserved
|
||||
|
||||
# Code Style
|
||||
* General coding style
|
||||
* Use tab-indentation with tab-width set to 4 spaces!
|
||||
* Use 'and' and 'or', rather than '&&' or '||'. For negation the '!' is used over 'not'
|
||||
* We use 'if (condition) then' for spacing, as well as 'func(arg1, arg2, arg3, ...)'. Arrays use array[index], except for double indexing in which case spaces get added array1[ array2[index] ] (to prevent [[ and ]] from forming long strings or comments)
|
||||
* String concatenation is done without spacing like.."this".."."
|
||||
* " " has the preference for strings, although ' ' can be used if your string contains a ". [[ ]] can be used for multiline strings, or strings that contain both " and '
|
||||
* Unused loop variables or return variables are assigned to '\_' to indicate they are unused
|
||||
* Variable and data fields
|
||||
* Local vars use lower camel case (lowerCamelCase)
|
||||
* Functions are upper camel case (UpperCamelCase). Local function vars use lower camel case (as per local var casing)
|
||||
* Enums are in all caps, with underscores for spacing. This also counts if you make enum fields on a table (e.g. PLUGIN.MAX_VAR)
|
||||
* Strings for internal use should be UpperCamelCase (data fields, net messages, ...). If some sort of identifiying prefix is used, lower camel casing is used (e.g. ixSendData, cmdCharSetHealth, ...)
|
||||
* Try to give loop variables sensible names over k, v. E.g. 'for character, data in pairs(list) do', which creates much more readable code than 'for k, v in pairs(list) do'
|
||||
* Avoid using variable names that overwrite library names.
|
||||
* 'player' is generally replaced with 'client'
|
||||
* 'table' should use something more descriptive, or 'tbl' if you really got nothing
|
||||
* 'string' can use 'text' or 'str'
|
||||
* Optimization
|
||||
* Avoid creating and using global variables, the access time on them is extremely slow. The easiest workaround is to localize the variable at the top of the file (if it is a table, the variable will still update as tables are stored by reference rather than by value). Libraries (e.g. ix, math, string, ...) can also be localized like this, and is typically done if you absolutely need to squeeze out performance from some bit of code that will run a lot.
|
||||
* Avoid using Think, Tick, etc. server-side. Basically any hook that gets called every frame (or even worse: every frame for every player) unless there is absolutely no way around it. A lot of stuff doesn't need to check every frame, but is fine if it checks every 0.5/1/2/... seconds. Use timers for this!
|
||||
* If you must use Think-like hooks or have another performance critical bit of code:
|
||||
* Keep it short, shorter code usually is more optimized
|
||||
* Localize everything in it
|
||||
* Avoid loops, make loops as small as possible. If you need to loop over a table to search one entry, you may need to rethink your table structure. E.g. looping over a table of all players is slower than looking up a player by SteamID (table[client:SteamID64()]).
|
||||
* 'for i = 1, x do' is faster than 'for k, v in ipairs', which is faster than 'for k, v in pairs'
|
||||
* Making tables is expensive compared to clearing out a small table. Array indexing (table[1]) is faster than hashmap lookups (table.x)
|
||||
* Square roots (sqrt, Distance) and geometry functions (cos, acos, sin, asin, tan, ...) are SLOOOOW (compared to e.g. multiplication)! Avoid them in performance-critical code. Distance can often be replaced by DistToSqr (squared distance) when the goal is simple comparisons to avoid taking a square root (don't forget to square the other side of the comparison). E.g. 'x:Distance(y) > 100' becomes 'x:DistToSqr(y) > 100 * 100'
|
||||
* Creating functions during runtime is SLOOOOOOOOOOOOOOW, but sometimes needed. Just avoid this happening in code that runs often/regularly. Try to limit it to e.g. character load, or when a player does a certain action. If possible, use a function created during compile and pass the needed arguments via varargs.
|
||||
* Helix-specific stuff
|
||||
* Use ix.log.AddType and ix.log.Add rather than ix.log.AddRaw. This creates a category that can be used with our log searching tool, and stores some extra searchable meta-data as well (client, arguments passed, location, ...)
|
||||
* Categorize your logtypes by proceeding the type with the plugin name or some other descriptive prefix. This facilitates selecting it from the giant dropdown menu in the logsearch tool. E.g. medicalBleedout, itemPickup, ...
|
||||
* Try to use localized text (via e.g. L(), NotifyLocalized, ...) and define a translation table in your plugin via ix.lang.AddTable. This makes life for our Russian friends a lot easier.
|
||||
* Server-side only code always should be in an sv_file! This counts double for net hooks, security checks, etc. Any half-decent hacker will read your cl_ and sh_ files to find exploits, do not make their life easier. It is also harder to steal our code if they do not have the server-side code.
|
||||
|
||||
## Using the Linter in your IDE
|
||||
See instructions [here](https://github.com/mpeterv/luacheck#editor-support).
|
||||
|
||||
For visual studio, simply downloading the vscode-luacheck plugin should be enough with no additional configuration required.
|
||||
245
gamemodes/ixhl2rp/entities/entities/ix_combinelock.lua
Normal file
245
gamemodes/ixhl2rp/entities/entities/ix_combinelock.lua
Normal file
@@ -0,0 +1,245 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self)) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
self:Toggle(client)
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_blue = Color(52, 73, 94, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_blue
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
295
gamemodes/ixhl2rp/entities/entities/ix_combinelock_cmru.lua
Normal file
295
gamemodes/ixhl2rp/entities/entities/ix_combinelock_cmru.lua
Normal file
@@ -0,0 +1,295 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock (CMRU)"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock_cmru")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.accessLevel = 1
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local items = character:GetInventory():GetItems()
|
||||
local cmruCards = {}
|
||||
|
||||
for _, item in pairs(items) do
|
||||
if (item.uniqueID == "cmru_card" and item:GetData("cardID")) then
|
||||
cmruCards[#cmruCards + 1] = item
|
||||
end
|
||||
end
|
||||
|
||||
local canOpen = false
|
||||
for _, card in pairs(cmruCards) do
|
||||
-- access level 5 should open all doors. access level 3 should open only 3, 2, and 1 doors, etc
|
||||
if (items[card:GetData("cardID")] and (card:GetData("accessLevel", 1) >= self.accessLevel)) then
|
||||
canOpen = true
|
||||
end
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self) and !canOpen) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
if (client:KeyDown(IN_SPEED) and (client:Team() == FACTION_ADMIN or client:Team() == FACTION_SERVERADMIN or client:IsCombine() or client:GetCharacter():HasFlags("M"))) then
|
||||
net.Start("changeLockAccessCmru")
|
||||
net.WriteEntity(self)
|
||||
net.Send(client)
|
||||
else
|
||||
self:Toggle(client)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnOptionSelected(client, option, data)
|
||||
if (option == "Set Level 1 Access") then
|
||||
self.accessLevel = 1
|
||||
|
||||
client:Notify("You have set Level 1 Access to this lock.")
|
||||
elseif (option == "Set Level 2 Access") then
|
||||
self.accessLevel = 2
|
||||
|
||||
client:Notify("You have set Level 2 Access to this lock.")
|
||||
elseif (option == "Set Level 3 Access") then
|
||||
self.accessLevel = 3
|
||||
|
||||
client:Notify("You have set Level 3 Access to this lock.")
|
||||
elseif (option == "Set Level 4 Access") then
|
||||
self.accessLevel = 4
|
||||
|
||||
client:Notify("You have set Level 4 Access to this lock.")
|
||||
elseif (option == "Set Level 5 Access") then
|
||||
self.accessLevel = 5
|
||||
|
||||
client:Notify("You have set Level 5 Access to this lock.")
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_magenta = Color(214, 55, 229, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_magenta
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
295
gamemodes/ixhl2rp/entities/entities/ix_combinelock_con.lua
Normal file
295
gamemodes/ixhl2rp/entities/entities/ix_combinelock_con.lua
Normal file
@@ -0,0 +1,295 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock (Conscript)"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock_con")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.accessLevel = 1
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local items = character:GetInventory():GetItems()
|
||||
local conCards = {}
|
||||
|
||||
for _, item in pairs(items) do
|
||||
if (item.uniqueID == "con_card" and item:GetData("cardID")) then
|
||||
conCards[#conCards + 1] = item
|
||||
end
|
||||
end
|
||||
|
||||
local canOpen = false
|
||||
for _, card in pairs(conCards) do
|
||||
-- access level 5 should open all doors. access level 3 should open only 3, 2, and 1 doors, etc
|
||||
if (items[card:GetData("cardID")] and (card:GetData("accessLevel", 1) >= self.accessLevel)) then
|
||||
canOpen = true
|
||||
end
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self) and !canOpen) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
if (client:KeyDown(IN_SPEED) and (client:Team() == FACTION_ADMIN or client:Team() == FACTION_SERVERADMIN or client:IsCombine() or client:GetCharacter():HasFlags("M"))) then
|
||||
net.Start("changeLockAccessCon")
|
||||
net.WriteEntity(self)
|
||||
net.Send(client)
|
||||
else
|
||||
self:Toggle(client)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnOptionSelected(client, option, data)
|
||||
if (option == "Set Level 1 Access") then
|
||||
self.accessLevel = 1
|
||||
|
||||
client:Notify("You have set Level 1 Access to this lock.")
|
||||
elseif (option == "Set Level 2 Access") then
|
||||
self.accessLevel = 2
|
||||
|
||||
client:Notify("You have set Level 2 Access to this lock.")
|
||||
elseif (option == "Set Level 3 Access") then
|
||||
self.accessLevel = 3
|
||||
|
||||
client:Notify("You have set Level 3 Access to this lock.")
|
||||
elseif (option == "Set Level 4 Access") then
|
||||
self.accessLevel = 4
|
||||
|
||||
client:Notify("You have set Level 4 Access to this lock.")
|
||||
elseif (option == "Set Level 5 Access") then
|
||||
self.accessLevel = 5
|
||||
|
||||
client:Notify("You have set Level 5 Access to this lock.")
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_orange = Color(255, 180, 0, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_orange
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_cwu.lua
Normal file
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_cwu.lua
Normal file
@@ -0,0 +1,284 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock (CWU)"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock_cwu")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.accessLevel = "Member Access"
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local items = character:GetInventory():GetItems()
|
||||
local cwuCards = {}
|
||||
|
||||
for _, item in pairs(items) do
|
||||
if (item.uniqueID == "cwu_card" and item:GetData("cardID")) then
|
||||
cwuCards[#cwuCards + 1] = item
|
||||
end
|
||||
end
|
||||
|
||||
local canOpen = false
|
||||
for _, cards in pairs(cwuCards) do
|
||||
local accessLevel = cards:GetData("accessLevel", "Member Access")
|
||||
|
||||
if (items[cards:GetData("cardID")] and (accessLevel == "Management Access" or (accessLevel == "Member Access" and self.accessLevel == "Member Access"))) then
|
||||
canOpen = true
|
||||
end
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self) and !canOpen) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
if (client:KeyDown(IN_SPEED) and (client:Team() == FACTION_ADMIN or client:Team() == FACTION_SERVERADMIN or client:IsCombine() or client:GetCharacter():HasFlags("M"))) then
|
||||
net.Start("changeLockAccess")
|
||||
net.WriteEntity(self)
|
||||
net.Send(client)
|
||||
else
|
||||
self:Toggle(client)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnOptionSelected(client, option, data)
|
||||
if (option == "Set Member Access") then
|
||||
self.accessLevel = "Member Access"
|
||||
|
||||
client:Notify("You have set Member Access to this lock.")
|
||||
elseif (option == "Set Management Access") then
|
||||
self.accessLevel = "Management Access"
|
||||
|
||||
client:Notify("You have set Management Access to this lock.")
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_blue = Color(37, 64, 213, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_blue
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_dob.lua
Normal file
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_dob.lua
Normal file
@@ -0,0 +1,284 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock (DOB)"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock_dob")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.accessLevel = "Member Access"
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local items = character:GetInventory():GetItems()
|
||||
local dobCards = {}
|
||||
|
||||
for _, item in pairs(items) do
|
||||
if (item.uniqueID == "dob_card" and item:GetData("cardID")) then
|
||||
dobCards[#dobCards + 1] = item
|
||||
end
|
||||
end
|
||||
|
||||
local canOpen = false
|
||||
for _, cards in pairs(dobCards) do
|
||||
local accessLevel = cards:GetData("accessLevel", "Member Access")
|
||||
|
||||
if (items[cards:GetData("cardID")] and (accessLevel == "Management Access" or (accessLevel == "Member Access" and self.accessLevel == "Member Access"))) then
|
||||
canOpen = true
|
||||
end
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self) and !canOpen) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
if (client:KeyDown(IN_SPEED) and (client:Team() == FACTION_ADMIN or client:Team() == FACTION_SERVERADMIN or client:IsCombine() or client:GetCharacter():HasFlags("M"))) then
|
||||
net.Start("changeLockAccess")
|
||||
net.WriteEntity(self)
|
||||
net.Send(client)
|
||||
else
|
||||
self:Toggle(client)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnOptionSelected(client, option, data)
|
||||
if (option == "Set Member Access") then
|
||||
self.accessLevel = "Member Access"
|
||||
|
||||
client:Notify("You have set Member Access to this lock.")
|
||||
elseif (option == "Set Management Access") then
|
||||
self.accessLevel = "Management Access"
|
||||
|
||||
client:Notify("You have set Management Access to this lock.")
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_orange = Color(235, 125, 52, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_orange
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_moe.lua
Normal file
284
gamemodes/ixhl2rp/entities/entities/ix_combinelock_moe.lua
Normal file
@@ -0,0 +1,284 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Combine Lock (MOE)"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.PhysgunDisable = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Locked")
|
||||
self:NetworkVar("Bool", 1, "DisplayError")
|
||||
self:NetworkVar("Bool", 2, "Disabled")
|
||||
|
||||
if (SERVER) then
|
||||
self:NetworkVarNotify("Locked", self.OnLockChanged)
|
||||
end
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:GetLockPosition(door, normal)
|
||||
local index = door:LookupBone("handle")
|
||||
local position = door:GetPos()
|
||||
normal = normal or door:GetForward():Angle()
|
||||
|
||||
if (index and index >= 1) then
|
||||
position = door:GetBonePosition(index)
|
||||
end
|
||||
|
||||
position = position + normal:Forward() * 7.2 + normal:Up() * 10 + normal:Right() * 2
|
||||
|
||||
normal:RotateAroundAxis(normal:Up(), 90)
|
||||
normal:RotateAroundAxis(normal:Forward(), 180)
|
||||
normal:RotateAroundAxis(normal:Right(), 180)
|
||||
|
||||
return position, normal
|
||||
end
|
||||
|
||||
function ENT:SetDoor(door, position, angles)
|
||||
if (!IsValid(door) or !door:IsDoor()) then
|
||||
return
|
||||
end
|
||||
|
||||
local doorPartner = door:GetDoorPartner()
|
||||
|
||||
self.door = door
|
||||
self.door:DeleteOnRemove(self)
|
||||
door.ixLock = self
|
||||
|
||||
if (IsValid(doorPartner)) then
|
||||
self.doorPartner = doorPartner
|
||||
self.doorPartner:DeleteOnRemove(self)
|
||||
doorPartner.ixLock = self
|
||||
end
|
||||
|
||||
self:SetPos(position)
|
||||
self:SetAngles(angles)
|
||||
self:SetParent(door)
|
||||
end
|
||||
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local door = trace.Entity
|
||||
|
||||
if (!IsValid(door) or !door:IsDoor() or IsValid(door.ixLock)) then
|
||||
return client:NotifyLocalized("dNotValid")
|
||||
end
|
||||
|
||||
local normal = client:GetEyeTrace().HitNormal:Angle()
|
||||
local position, angles = self:GetLockPosition(door, normal)
|
||||
|
||||
local entity = ents.Create("ix_combinelock_moe")
|
||||
entity:SetPos(trace.HitPos)
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
entity:SetDoor(door, position, angles)
|
||||
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
Schema:SaveCombineLocks()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props_combine/wn_combine_lock.mdl")
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:SetHealth(300)
|
||||
|
||||
self.accessLevel = "Member Access"
|
||||
self.nextUseTime = 0
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (IsValid(self)) then
|
||||
self:SetParent(nil)
|
||||
end
|
||||
|
||||
if (IsValid(self.door)) then
|
||||
self.door:Fire("unlock")
|
||||
self.door.ixLock = nil
|
||||
end
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
self.doorPartner.ixLock = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown) then
|
||||
Schema:SaveCombineLocks()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnLockChanged(name, bWasLocked, bLocked)
|
||||
if (!IsValid(self.door) or self:GetDisabled()) then
|
||||
return
|
||||
end
|
||||
|
||||
ix.saveEnts:SaveEntity(self)
|
||||
if (bLocked) then
|
||||
self:EmitSound("buttons/combine_button2.wav")
|
||||
self.door:Fire("lock")
|
||||
self.door:Fire("close")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("lock")
|
||||
self.doorPartner:Fire("close")
|
||||
end
|
||||
else
|
||||
self:EmitSound("buttons/combine_button7.wav")
|
||||
self.door:Fire("unlock")
|
||||
|
||||
if (IsValid(self.doorPartner)) then
|
||||
self.doorPartner:Fire("unlock")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DisplayError()
|
||||
self:EmitSound("buttons/combine_button_locked.wav")
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DisplayDamage()
|
||||
self:SetDisplayError(true)
|
||||
|
||||
timer.Simple(1.2, function()
|
||||
if (IsValid(self)) then
|
||||
self:SetDisplayError(false)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Toggle(client)
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
if (self.nextUseTime > CurTime()) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local items = character:GetInventory():GetItems()
|
||||
local moeCards = {}
|
||||
|
||||
for _, item in pairs(items) do
|
||||
if (item.uniqueID == "moe_card" and item:GetData("cardID")) then
|
||||
moeCards[#moeCards + 1] = item
|
||||
end
|
||||
end
|
||||
|
||||
local canOpen = false
|
||||
for _, cards in pairs(moeCards) do
|
||||
local accessLevel = cards:GetData("accessLevel", "Member Access")
|
||||
|
||||
if (items[cards:GetData("cardID")] and (accessLevel == "Management Access" or (accessLevel == "Member Access" and self.accessLevel == "Member Access"))) then
|
||||
canOpen = true
|
||||
end
|
||||
end
|
||||
|
||||
if (!Schema:CanPlayerOpenCombineLock(client, self) and !canOpen) then
|
||||
self:DisplayError()
|
||||
self.nextUseTime = CurTime() + 2
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:SetLocked(!self:GetLocked())
|
||||
|
||||
self.nextUseTime = CurTime() + 2
|
||||
end
|
||||
|
||||
function ENT:Use(client)
|
||||
if (client:KeyDown(IN_SPEED) and (client:Team() == FACTION_ADMIN or client:Team() == FACTION_SERVERADMIN or client:IsCombine() or client:GetCharacter():HasFlags("M"))) then
|
||||
net.Start("changeLockAccess")
|
||||
net.WriteEntity(self)
|
||||
net.Send(client)
|
||||
else
|
||||
self:Toggle(client)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnOptionSelected(client, option, data)
|
||||
if (option == "Set Member Access") then
|
||||
self.accessLevel = "Member Access"
|
||||
|
||||
client:Notify("You have set Member Access to this lock.")
|
||||
elseif (option == "Set Management Access") then
|
||||
self.accessLevel = "Management Access"
|
||||
|
||||
client:Notify("You have set Management Access to this lock.")
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage(dmgInfo)
|
||||
self:SetHealth(self:Health() - dmgInfo:GetDamage())
|
||||
self:EmitSound("physics/metal/metal_sheet_impact_hard"..math.random(6, 8)..".wav")
|
||||
self:DisplayDamage()
|
||||
|
||||
if (self:Health() <= 0) then
|
||||
local pos = self:GetPos()
|
||||
local curTime = CurTime()
|
||||
|
||||
if (!self.nextSpark or self.nextSpark <= curTime) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(pos)
|
||||
effect:SetOrigin(pos)
|
||||
effect:SetScale(2)
|
||||
util.Effect("cball_explode", effect)
|
||||
|
||||
self.nextSpark = curTime + 0.1
|
||||
end
|
||||
|
||||
local attacker = dmgInfo:GetAttacker()
|
||||
|
||||
self:EmitSound("npc/manhack/gib.wav")
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Bio-Restrictor failure", nil, attacker:IsPlayer() and attacker, self:GetPos())
|
||||
ix.item.Spawn("trash_biolock", Vector(self:GetPos().x, self:GetPos().y, self:GetPos().z))
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
local glowMaterial = ix.util.GetMaterial("sprites/glow04_noz")
|
||||
local color_green = Color(0, 255, 0, 255)
|
||||
local color_magenta = Color(214, 55, 229, 255)
|
||||
local color_red = Color(255, 50, 50, 255)
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetDisabled()) then return end
|
||||
|
||||
local color = color_green
|
||||
|
||||
if (self:GetDisplayError()) then
|
||||
color = color_red
|
||||
elseif (self:GetLocked()) then
|
||||
color = color_magenta
|
||||
end
|
||||
|
||||
local position = self:GetPos() + self:GetUp() * -8.7 + self:GetForward() * -3.85 + self:GetRight() * -6
|
||||
|
||||
render.SetMaterial(glowMaterial)
|
||||
render.DrawSprite(position, 10, 10, color)
|
||||
end
|
||||
end
|
||||
445
gamemodes/ixhl2rp/entities/entities/ix_forcefield.lua
Normal file
445
gamemodes/ixhl2rp/entities/entities/ix_forcefield.lua
Normal file
@@ -0,0 +1,445 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Forcefield"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.RenderGroup = RENDERGROUP_BOTH
|
||||
ENT.PhysgunDisabled = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Int", 0, "Mode")
|
||||
self:NetworkVar("Entity", 0, "Dummy")
|
||||
self:NetworkVar("Bool", 0, "Malfunctioning")
|
||||
end
|
||||
|
||||
local MODE_OFFLINE = 1
|
||||
local MODE_ALLOW_ALL = 2
|
||||
local MODE_ALLOW_COMBINE = 3
|
||||
local MODE_ALLOW_COMBINE_INF = 4
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local angles = (client:GetPos() - trace.HitPos):Angle()
|
||||
angles.p = 0
|
||||
angles.r = 0
|
||||
angles:RotateAroundAxis(angles:Up(), 270)
|
||||
|
||||
local entity = ents.Create("ix_forcefield")
|
||||
entity:SetPos(trace.HitPos + Vector(0, 0, 40))
|
||||
entity:SetAngles(angles:SnapTo("y", 90))
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
|
||||
Schema:SaveForceFields()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props/forcefield_left.mdl")
|
||||
self:SetSkin(3)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
|
||||
local data = {}
|
||||
data.start = self:GetPos() + self:GetRight() * -16
|
||||
data.endpos = self:GetPos() + self:GetRight() * -480
|
||||
data.filter = self
|
||||
local trace = util.TraceLine(data)
|
||||
|
||||
local angles = self:GetAngles()
|
||||
angles:RotateAroundAxis(angles:Up(), 90)
|
||||
|
||||
self.dummy = ents.Create("prop_physics")
|
||||
self.dummy:SetModel("models/willardnetworks/props/forcefield_right.mdl")
|
||||
self.dummy:SetSkin(3)
|
||||
self.dummy:SetPos(trace.HitPos)
|
||||
self.dummy:SetAngles(self:GetAngles())
|
||||
self.dummy:Spawn()
|
||||
self.dummy.PhysgunDisabled = true
|
||||
self.dummy:SetCollisionGroup(COLLISION_GROUP_WORLD)
|
||||
self:DeleteOnRemove(self.dummy)
|
||||
|
||||
local verts = {
|
||||
{pos = Vector(0, 0, -25)},
|
||||
{pos = Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) + Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) + Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) - Vector(0, 0, 25)},
|
||||
{pos = Vector(0, 0, -25)}
|
||||
}
|
||||
|
||||
self:PhysicsFromMesh(verts)
|
||||
|
||||
local physObj = self:GetPhysicsObject()
|
||||
|
||||
if (IsValid(physObj)) then
|
||||
physObj:EnableMotion(false)
|
||||
physObj:Sleep()
|
||||
end
|
||||
|
||||
self:AddSolidFlags(FSOLID_CUSTOMBOXTEST)
|
||||
self:SetCustomCollisionCheck(true)
|
||||
self:SetDummy(self.dummy)
|
||||
|
||||
physObj = self.dummy:GetPhysicsObject()
|
||||
|
||||
if (IsValid(physObj)) then
|
||||
physObj:EnableMotion(false)
|
||||
physObj:Sleep()
|
||||
end
|
||||
|
||||
self:SetMoveType(MOVETYPE_NOCLIP)
|
||||
self:SetMoveType(MOVETYPE_PUSH)
|
||||
self:MakePhysicsObjectAShadow()
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
end
|
||||
|
||||
function ENT:StartTouch(entity)
|
||||
if (!self.buzzer) then
|
||||
self.buzzer = CreateSound(entity, "ambient/machines/combine_shield_touch_loop1.wav")
|
||||
self.buzzer:Play()
|
||||
self.buzzer:ChangeVolume(0.8, 0)
|
||||
self.buzzer:SetSoundLevel(60)
|
||||
else
|
||||
self.buzzer:ChangeVolume(0.8, 0.5)
|
||||
self.buzzer:Play()
|
||||
end
|
||||
|
||||
self.entities = (self.entities or 0) + 1
|
||||
end
|
||||
|
||||
function ENT:EndTouch(entity)
|
||||
self.entities = math.max((self.entities or 0) - 1, 0)
|
||||
|
||||
if (self.buzzer and self.entities == 0) then
|
||||
self.buzzer:FadeOut(0.5)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (self.buzzer) then
|
||||
self.buzzer:Stop()
|
||||
self.buzzer = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown and !self.ixIsSafe) then
|
||||
Schema:SaveForceFields()
|
||||
end
|
||||
end
|
||||
|
||||
ENT.MODES = {
|
||||
{
|
||||
function(entity)
|
||||
return false
|
||||
end,
|
||||
"field disengaged.",
|
||||
"disengaged",
|
||||
3
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
if (!entity:IsPlayer()) then return true end
|
||||
|
||||
local character = entity:GetCharacter()
|
||||
if (!character or !character:GetInventory()) then
|
||||
return true
|
||||
end
|
||||
|
||||
if (!character:GetInventory():HasItem("id_card", {active = true})) then
|
||||
if character:GetInventory():HasItem("fake_id_card") then
|
||||
return false
|
||||
end
|
||||
if character:IsVortigaunt() and
|
||||
character:GetCollarItemID() and
|
||||
ix.item.instances[character:GetCollarItemID()] and
|
||||
-ix.config.Get("blacklistSCAmount", 40) <= ix.item.instances[character:GetCollarItemID()]:GetData("sterilizedCredits", 0) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end,
|
||||
"allow only registered individuals with active ID Card.",
|
||||
"engaged",
|
||||
0
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
return true
|
||||
end,
|
||||
"disallow non-functionary units.",
|
||||
"restricted",
|
||||
1
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
return true
|
||||
end,
|
||||
"disallow non-functionary units (infestation control specific)",
|
||||
"restricted",
|
||||
2
|
||||
}
|
||||
}
|
||||
|
||||
function ENT:Use(activator)
|
||||
if ((self.nextUse or 0) < CurTime()) then
|
||||
self.nextUse = CurTime() + 1.5
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
local bForced = CAMI.PlayerHasAccess(activator, "Helix - Basic Admin Commands", nil) and activator:GetMoveType() == MOVETYPE_NOCLIP
|
||||
|
||||
if (activator:HasActiveCombineSuit() or ix.faction.Get(activator:Team()).allowForcefieldControl or bForced) then
|
||||
self:SetMode(self:GetMode() + 1)
|
||||
local action = "modified"
|
||||
|
||||
if (self:GetMode() > #self.MODES) then
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[1][4])
|
||||
self.dummy:SetSkin(self.MODES[1][4])
|
||||
self:EmitSound("npc/turret_floor/die.wav")
|
||||
else
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[self:GetMode()][4])
|
||||
self.dummy:SetSkin(self.MODES[self:GetMode()][4])
|
||||
end
|
||||
|
||||
self:EmitSound("buttons/combine_button5.wav", 140, 100 + (self:GetMode() - 1) * 15)
|
||||
activator:ChatPrint("Changed barrier mode to: " .. self.MODES[self:GetMode()][2])
|
||||
|
||||
Schema:SaveForceFields()
|
||||
if (bForced) then return end
|
||||
|
||||
ix.combineNotify:AddNotification("NTC:// Containment Field " .. self.MODES[self:GetMode()][3] .. " by " .. activator:GetCombineTag(), nil, activator)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Malfunction()
|
||||
local bMalfunctioning = self:GetMalfunctioning()
|
||||
if (!bMalfunctioning) then return end
|
||||
|
||||
timer.Simple(math.random(0.2, 1), function()
|
||||
if (!self:IsValid()) then return end
|
||||
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[1][4])
|
||||
self.dummy:SetSkin(self.MODES[1][4])
|
||||
self:EmitSound("buttons/combine_button5.wav", 65, 100 + (self:GetMode() - 1) * 15)
|
||||
self:EmitSound("npc/turret_floor/die.wav", 55)
|
||||
|
||||
local target = math.random(2) == 1 and self or self:GetDummy()
|
||||
local vPoint = target:GetPos() + Vector(0, 0, math.random(-10, 100)) + target:GetRight() * (target == self and -10 or 10)
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin(vPoint)
|
||||
util.Effect("ManhackSparks", effectdata)
|
||||
|
||||
if (math.random(2) == 1) then
|
||||
target = math.random(2) == 1 and self or self:GetDummy()
|
||||
vPoint = target:GetPos() + Vector(0, 0, math.random(-10, 100)) + target:GetRight() * (target == self and -10 or 10)
|
||||
effectdata = EffectData()
|
||||
effectdata:SetOrigin(vPoint)
|
||||
util.Effect("ManhackSparks", effectdata)
|
||||
end
|
||||
|
||||
self:EmitSound("ambient/energy/zap" .. math.random(1, 9) .. ".wav", 65)
|
||||
|
||||
timer.Simple(math.random(1, 5), function()
|
||||
if (!self:IsValid()) then return end
|
||||
|
||||
self:SetMode(math.random(2, 4))
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[self:GetMode()][4])
|
||||
self.dummy:SetSkin(self.MODES[self:GetMode()][4])
|
||||
|
||||
self:EmitSound("buttons/combine_button5.wav", 65, 100 + (self:GetMode() - 1) * 15)
|
||||
|
||||
self:Malfunction()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
hook.Add("ShouldCollide", "ix_forcefields", function(a, b)
|
||||
local entity
|
||||
local forcefield
|
||||
|
||||
if (a:GetClass() == "ix_forcefield") then
|
||||
entity = b
|
||||
forcefield = a
|
||||
elseif (b:GetClass() == "ix_forcefield") then
|
||||
entity = a
|
||||
forcefield = b
|
||||
end
|
||||
|
||||
if (IsValid(forcefield)) then
|
||||
if (IsValid(entity)) then
|
||||
if (entity:IsPlayer() and (entity:HasActiveCombineSuit() or ix.faction.Get(entity:Team()).allowForcefieldPassage) or entity:GetClass() == "ix_scanner") then
|
||||
return false
|
||||
end
|
||||
|
||||
if (entity:IsPlayer() and forcefield:GetMode() == MODE_ALLOW_COMBINE_INF and ix.faction.Get(entity:Team()).allowForcefieldInfestationPassage) then
|
||||
return false
|
||||
end
|
||||
|
||||
local mode = forcefield:GetMode() or MODE_OFFLINE
|
||||
|
||||
return istable(forcefield.MODES[mode]) and forcefield.MODES[mode][1](entity)
|
||||
else
|
||||
return forcefield:GetMode() != 5
|
||||
end
|
||||
end
|
||||
end)
|
||||
else
|
||||
SHIELD_MATERIALS = {
|
||||
nil,
|
||||
ix.util.GetMaterial("models/effects/shield_blue"),
|
||||
ix.util.GetMaterial("models/effects/shield_red"),
|
||||
ix.util.GetMaterial("models/effects/shield_yellow")
|
||||
}
|
||||
|
||||
function ENT:Initialize()
|
||||
local data = {}
|
||||
data.start = self:GetPos() + self:GetRight()*-16
|
||||
data.endpos = self:GetPos() + self:GetRight()*-480
|
||||
data.filter = self
|
||||
local trace = util.TraceLine(data)
|
||||
|
||||
self:SetCustomCollisionCheck(true)
|
||||
self:PhysicsInitConvex({
|
||||
vector_origin,
|
||||
Vector(0, 0, 150),
|
||||
trace.HitPos + Vector(0, 0, 150),
|
||||
trace.HitPos
|
||||
})
|
||||
|
||||
self.distance = self:GetPos():Distance(trace.HitPos)
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetMode() == MODE_OFFLINE) then
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self:GetPos()
|
||||
local angles = self:GetAngles()
|
||||
local matrix = Matrix()
|
||||
matrix:Translate(pos + self:GetUp() * -40)
|
||||
matrix:Rotate(angles)
|
||||
|
||||
render.SetMaterial(SHIELD_MATERIALS[self:GetMode()])
|
||||
|
||||
local dummy = self:GetDummy()
|
||||
|
||||
if (IsValid(dummy)) then
|
||||
local dummyPos = dummy:GetPos()
|
||||
local vertex = self:WorldToLocal(dummyPos)
|
||||
self:SetRenderBounds(vector_origin, vertex + self:GetUp() * 150)
|
||||
|
||||
cam.PushModelMatrix(matrix)
|
||||
self:DrawShield(vertex)
|
||||
cam.PopModelMatrix()
|
||||
|
||||
matrix:Translate(vertex)
|
||||
matrix:Rotate(Angle(0, 180, 0))
|
||||
|
||||
cam.PushModelMatrix(matrix)
|
||||
self:DrawShield(vertex)
|
||||
cam.PopModelMatrix()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DrawShield(vertex)
|
||||
mesh.Begin(MATERIAL_QUADS, 1)
|
||||
mesh.Position(vector_origin)
|
||||
mesh.TexCoord(0, 0, 0)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(self:GetUp() * 190)
|
||||
mesh.TexCoord(0, 0, 3)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(vertex + self:GetUp() * 190)
|
||||
mesh.TexCoord(0, 3, 3)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(vertex)
|
||||
mesh.TexCoord(0, 3, 0)
|
||||
mesh.AdvanceVertex()
|
||||
mesh.End()
|
||||
end
|
||||
end
|
||||
|
||||
properties.Add("ixForcefieldStartMalfunction", {
|
||||
MenuLabel = "Start Malfunctioning",
|
||||
Order = 500,
|
||||
MenuIcon = "icon16/lightning_add.png",
|
||||
|
||||
Filter = function(self, entity, client)
|
||||
if (entity:GetClass() == "ix_forcefield" and !entity:GetMalfunctioning() and CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands", nil)) then return true end
|
||||
end,
|
||||
|
||||
Action = function(self, entity)
|
||||
self:MsgStart()
|
||||
net.WriteEntity(entity)
|
||||
self:MsgEnd()
|
||||
end,
|
||||
|
||||
Receive = function(self, length, client)
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity)) then return end
|
||||
if (!self:Filter(entity, client)) then return end
|
||||
|
||||
entity:SetMalfunctioning(true)
|
||||
entity:Malfunction()
|
||||
end
|
||||
})
|
||||
|
||||
properties.Add("ixForcefieldStopMalfunction", {
|
||||
MenuLabel = "Stop Malfunctioning",
|
||||
Order = 500,
|
||||
MenuIcon = "icon16/lightning_delete.png",
|
||||
|
||||
Filter = function(self, entity, client)
|
||||
if (entity:GetClass() == "ix_forcefield" and entity:GetMalfunctioning() and CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands", nil)) then return true end
|
||||
end,
|
||||
|
||||
Action = function(self, entity)
|
||||
self:MsgStart()
|
||||
net.WriteEntity(entity)
|
||||
self:MsgEnd()
|
||||
end,
|
||||
|
||||
Receive = function(self, length, client)
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity)) then return end
|
||||
if (!self:Filter(entity, client)) then return end
|
||||
|
||||
entity:SetMalfunctioning(false)
|
||||
end
|
||||
})
|
||||
437
gamemodes/ixhl2rp/entities/entities/ix_rebelfield.lua
Normal file
437
gamemodes/ixhl2rp/entities/entities/ix_rebelfield.lua
Normal file
@@ -0,0 +1,437 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.PrintName = "Hacked Forcefield"
|
||||
ENT.Category = "HL2 RP"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = true
|
||||
ENT.RenderGroup = RENDERGROUP_BOTH
|
||||
ENT.PhysgunDisabled = true
|
||||
ENT.bNoPersist = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar("Int", 0, "Mode")
|
||||
self:NetworkVar("Entity", 0, "Dummy")
|
||||
self:NetworkVar("Bool", 0, "Malfunctioning")
|
||||
end
|
||||
|
||||
local MODE_OFFLINE = 1
|
||||
local MODE_ALLOW_ALL = 2
|
||||
local MODE_ALLOW_COMBINE = 3
|
||||
local MODE_ALLOW_COMBINE_INF = 4
|
||||
|
||||
if (SERVER) then
|
||||
function ENT:SpawnFunction(client, trace)
|
||||
local angles = (client:GetPos() - trace.HitPos):Angle()
|
||||
angles.p = 0
|
||||
angles.r = 0
|
||||
angles:RotateAroundAxis(angles:Up(), 270)
|
||||
|
||||
local entity = ents.Create("ix_rebelfield")
|
||||
entity:SetPos(trace.HitPos + Vector(0, 0, 40))
|
||||
entity:SetAngles(angles:SnapTo("y", 90))
|
||||
entity:Spawn()
|
||||
entity:Activate()
|
||||
|
||||
Schema:SaveRebelForceFields()
|
||||
return entity
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/willardnetworks/props/forcefield_left.mdl")
|
||||
self:SetSkin(3)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
|
||||
local data = {}
|
||||
data.start = self:GetPos() + self:GetRight() * -16
|
||||
data.endpos = self:GetPos() + self:GetRight() * -480
|
||||
data.filter = self
|
||||
local trace = util.TraceLine(data)
|
||||
|
||||
local angles = self:GetAngles()
|
||||
angles:RotateAroundAxis(angles:Up(), 90)
|
||||
|
||||
self.dummy = ents.Create("prop_physics")
|
||||
self.dummy:SetModel("models/willardnetworks/props/forcefield_right.mdl")
|
||||
self.dummy:SetSkin(3)
|
||||
self.dummy:SetPos(trace.HitPos)
|
||||
self.dummy:SetAngles(self:GetAngles())
|
||||
self.dummy:Spawn()
|
||||
self.dummy.PhysgunDisabled = true
|
||||
self.dummy:SetCollisionGroup(COLLISION_GROUP_WORLD)
|
||||
self:DeleteOnRemove(self.dummy)
|
||||
|
||||
local verts = {
|
||||
{pos = Vector(0, 0, -25)},
|
||||
{pos = Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) + Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) + Vector(0, 0, 150)},
|
||||
{pos = self:WorldToLocal(self.dummy:GetPos()) - Vector(0, 0, 25)},
|
||||
{pos = Vector(0, 0, -25)}
|
||||
}
|
||||
|
||||
self:PhysicsFromMesh(verts)
|
||||
|
||||
local physObj = self:GetPhysicsObject()
|
||||
|
||||
if (IsValid(physObj)) then
|
||||
physObj:EnableMotion(false)
|
||||
physObj:Sleep()
|
||||
end
|
||||
|
||||
self:AddSolidFlags(FSOLID_CUSTOMBOXTEST)
|
||||
self:SetCustomCollisionCheck(true)
|
||||
self:SetDummy(self.dummy)
|
||||
|
||||
physObj = self.dummy:GetPhysicsObject()
|
||||
|
||||
if (IsValid(physObj)) then
|
||||
physObj:EnableMotion(false)
|
||||
physObj:Sleep()
|
||||
end
|
||||
|
||||
self:SetMoveType(MOVETYPE_NOCLIP)
|
||||
self:SetMoveType(MOVETYPE_PUSH)
|
||||
self:MakePhysicsObjectAShadow()
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
end
|
||||
|
||||
function ENT:StartTouch(entity)
|
||||
if (!self.buzzer) then
|
||||
self.buzzer = CreateSound(entity, "ambient/machines/combine_shield_touch_loop1.wav")
|
||||
self.buzzer:Play()
|
||||
self.buzzer:ChangeVolume(0.8, 0)
|
||||
self.buzzer:SetSoundLevel(60)
|
||||
else
|
||||
self.buzzer:ChangeVolume(0.8, 0.5)
|
||||
self.buzzer:Play()
|
||||
end
|
||||
|
||||
self.entities = (self.entities or 0) + 1
|
||||
end
|
||||
|
||||
function ENT:EndTouch(entity)
|
||||
self.entities = math.max((self.entities or 0) - 1, 0)
|
||||
|
||||
if (self.buzzer and self.entities == 0) then
|
||||
self.buzzer:FadeOut(0.5)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if (self.buzzer) then
|
||||
self.buzzer:Stop()
|
||||
self.buzzer = nil
|
||||
end
|
||||
|
||||
if (!ix.shuttingDown and !self.ixIsSafe) then
|
||||
Schema:SaveRebelForceFields()
|
||||
end
|
||||
end
|
||||
|
||||
ENT.MODES = {
|
||||
{
|
||||
function(entity)
|
||||
return false
|
||||
end,
|
||||
"field disengaged.",
|
||||
"disengaged",
|
||||
3
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
if (!entity:IsPlayer()) then return true end
|
||||
|
||||
local character = entity:GetCharacter()
|
||||
if (!character or !character:GetInventory()) then
|
||||
return true
|
||||
end
|
||||
|
||||
if (!character:GetInventory():HasItem("id_card", {active = true})) then
|
||||
if character:IsVortigaunt() and
|
||||
character:GetCollarItemID() and
|
||||
ix.item.instances[character:GetCollarItemID()] and
|
||||
-ix.config.Get("blacklistSCAmount", 40) <= ix.item.instances[character:GetCollarItemID()]:GetData("sterilizedCredits", 0) then
|
||||
return false
|
||||
end
|
||||
return false
|
||||
else
|
||||
return false
|
||||
end
|
||||
end,
|
||||
"allow all individuals",
|
||||
"engaged",
|
||||
0
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
return true
|
||||
end,
|
||||
"disallow combine forces.",
|
||||
"restricted",
|
||||
1
|
||||
},
|
||||
{
|
||||
function(entity)
|
||||
return true
|
||||
end,
|
||||
"disallow non-functionary units (Unused Variant... ignore and change!!!)",
|
||||
"restricted",
|
||||
2
|
||||
}
|
||||
}
|
||||
|
||||
function ENT:Use(activator)
|
||||
if ((self.nextUse or 0) < CurTime()) then
|
||||
self.nextUse = CurTime() + 1.5
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
local bForced = CAMI.PlayerHasAccess(activator, "Helix - Basic Admin Commands", nil) and activator:GetMoveType() == MOVETYPE_NOCLIP
|
||||
|
||||
if (activator:GetCharacter():HasFlags("F") or bForced) then
|
||||
self:SetMode(self:GetMode() + 1)
|
||||
local action = "modified"
|
||||
|
||||
if (self:GetMode() > #self.MODES) then
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[1][4])
|
||||
self.dummy:SetSkin(self.MODES[1][4])
|
||||
self:EmitSound("npc/turret_floor/die.wav")
|
||||
else
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[self:GetMode()][4])
|
||||
self.dummy:SetSkin(self.MODES[self:GetMode()][4])
|
||||
end
|
||||
|
||||
self:EmitSound("buttons/combine_button5.wav", 140, 100 + (self:GetMode() - 1) * 15)
|
||||
activator:ChatPrint("Changed barrier mode to: " .. self.MODES[self:GetMode()][2])
|
||||
|
||||
Schema:SaveRebelForceFields()
|
||||
if (bForced) then return end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Malfunction()
|
||||
local bMalfunctioning = self:GetMalfunctioning()
|
||||
if (!bMalfunctioning) then return end
|
||||
|
||||
timer.Simple(math.random(0.2, 1), function()
|
||||
if (!self:IsValid()) then return end
|
||||
|
||||
self:SetMode(MODE_OFFLINE)
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[1][4])
|
||||
self.dummy:SetSkin(self.MODES[1][4])
|
||||
self:EmitSound("buttons/combine_button5.wav", 65, 100 + (self:GetMode() - 1) * 15)
|
||||
self:EmitSound("npc/turret_floor/die.wav", 55)
|
||||
|
||||
local target = math.random(2) == 1 and self or self:GetDummy()
|
||||
local vPoint = target:GetPos() + Vector(0, 0, math.random(-10, 100)) + target:GetRight() * (target == self and -10 or 10)
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin(vPoint)
|
||||
util.Effect("ManhackSparks", effectdata)
|
||||
|
||||
if (math.random(2) == 1) then
|
||||
target = math.random(2) == 1 and self or self:GetDummy()
|
||||
vPoint = target:GetPos() + Vector(0, 0, math.random(-10, 100)) + target:GetRight() * (target == self and -10 or 10)
|
||||
effectdata = EffectData()
|
||||
effectdata:SetOrigin(vPoint)
|
||||
util.Effect("ManhackSparks", effectdata)
|
||||
end
|
||||
|
||||
self:EmitSound("ambient/energy/zap" .. math.random(1, 9) .. ".wav", 65)
|
||||
|
||||
timer.Simple(math.random(1, 5), function()
|
||||
if (!self:IsValid()) then return end
|
||||
|
||||
self:SetMode(math.random(2, 4))
|
||||
self:CollisionRulesChanged()
|
||||
|
||||
self:SetSkin(self.MODES[self:GetMode()][4])
|
||||
self.dummy:SetSkin(self.MODES[self:GetMode()][4])
|
||||
|
||||
self:EmitSound("buttons/combine_button5.wav", 65, 100 + (self:GetMode() - 1) * 15)
|
||||
|
||||
self:Malfunction()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
hook.Add("ShouldCollide", "ix_rebelfields", function(a, b)
|
||||
local entity
|
||||
local forcefield
|
||||
|
||||
if (a:GetClass() == "ix_rebelfield") then
|
||||
entity = b
|
||||
forcefield = a
|
||||
elseif (b:GetClass() == "ix_rebelfield") then
|
||||
entity = a
|
||||
forcefield = b
|
||||
end
|
||||
|
||||
if (IsValid(forcefield)) then
|
||||
if (IsValid(entity)) then
|
||||
if (entity:IsPlayer() and ix.faction.Get(entity:Team()).allowRebelForcefieldPassage) then
|
||||
return false
|
||||
end
|
||||
|
||||
local mode = forcefield:GetMode() or MODE_OFFLINE
|
||||
|
||||
return istable(forcefield.MODES[mode]) and forcefield.MODES[mode][1](entity)
|
||||
else
|
||||
return forcefield:GetMode() != 5
|
||||
end
|
||||
end
|
||||
end)
|
||||
else
|
||||
SHIELD_MATERIALS = {
|
||||
nil,
|
||||
ix.util.GetMaterial("models/effects/shield_blue"),
|
||||
ix.util.GetMaterial("models/effects/shield_red"),
|
||||
ix.util.GetMaterial("models/effects/shield_yellow")
|
||||
}
|
||||
|
||||
function ENT:Initialize()
|
||||
local data = {}
|
||||
data.start = self:GetPos() + self:GetRight()*-16
|
||||
data.endpos = self:GetPos() + self:GetRight()*-480
|
||||
data.filter = self
|
||||
local trace = util.TraceLine(data)
|
||||
|
||||
self:SetCustomCollisionCheck(true)
|
||||
self:PhysicsInitConvex({
|
||||
vector_origin,
|
||||
Vector(0, 0, 150),
|
||||
trace.HitPos + Vector(0, 0, 150),
|
||||
trace.HitPos
|
||||
})
|
||||
|
||||
self.distance = self:GetPos():Distance(trace.HitPos)
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if (self:GetMode() == MODE_OFFLINE) then
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self:GetPos()
|
||||
local angles = self:GetAngles()
|
||||
local matrix = Matrix()
|
||||
matrix:Translate(pos + self:GetUp() * -40)
|
||||
matrix:Rotate(angles)
|
||||
|
||||
render.SetMaterial(SHIELD_MATERIALS[self:GetMode()])
|
||||
|
||||
local dummy = self:GetDummy()
|
||||
|
||||
if (IsValid(dummy)) then
|
||||
local dummyPos = dummy:GetPos()
|
||||
local vertex = self:WorldToLocal(dummyPos)
|
||||
self:SetRenderBounds(vector_origin, vertex + self:GetUp() * 150)
|
||||
|
||||
cam.PushModelMatrix(matrix)
|
||||
self:DrawShield(vertex)
|
||||
cam.PopModelMatrix()
|
||||
|
||||
matrix:Translate(vertex)
|
||||
matrix:Rotate(Angle(0, 180, 0))
|
||||
|
||||
cam.PushModelMatrix(matrix)
|
||||
self:DrawShield(vertex)
|
||||
cam.PopModelMatrix()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DrawShield(vertex)
|
||||
mesh.Begin(MATERIAL_QUADS, 1)
|
||||
mesh.Position(vector_origin)
|
||||
mesh.TexCoord(0, 0, 0)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(self:GetUp() * 190)
|
||||
mesh.TexCoord(0, 0, 3)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(vertex + self:GetUp() * 190)
|
||||
mesh.TexCoord(0, 3, 3)
|
||||
mesh.AdvanceVertex()
|
||||
|
||||
mesh.Position(vertex)
|
||||
mesh.TexCoord(0, 3, 0)
|
||||
mesh.AdvanceVertex()
|
||||
mesh.End()
|
||||
end
|
||||
end
|
||||
|
||||
properties.Add("ixRebelfieldStartMalfunction", {
|
||||
MenuLabel = "Start Malfunctioning",
|
||||
Order = 500,
|
||||
MenuIcon = "icon16/lightning_add.png",
|
||||
|
||||
Filter = function(self, entity, client)
|
||||
if (entity:GetClass() == "ix_rebelfield" and !entity:GetMalfunctioning() and CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands", nil)) then return true end
|
||||
end,
|
||||
|
||||
Action = function(self, entity)
|
||||
self:MsgStart()
|
||||
net.WriteEntity(entity)
|
||||
self:MsgEnd()
|
||||
end,
|
||||
|
||||
Receive = function(self, length, client)
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity)) then return end
|
||||
if (!self:Filter(entity, client)) then return end
|
||||
|
||||
entity:SetMalfunctioning(true)
|
||||
entity:Malfunction()
|
||||
end
|
||||
})
|
||||
|
||||
properties.Add("ixRebelfieldStopMalfunction", {
|
||||
MenuLabel = "Stop Malfunctioning",
|
||||
Order = 500,
|
||||
MenuIcon = "icon16/lightning_delete.png",
|
||||
|
||||
Filter = function(self, entity, client)
|
||||
if (entity:GetClass() == "ix_rebelfield" and entity:GetMalfunctioning() and CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands", nil)) then return true end
|
||||
end,
|
||||
|
||||
Action = function(self, entity)
|
||||
self:MsgStart()
|
||||
net.WriteEntity(entity)
|
||||
self:MsgEnd()
|
||||
end,
|
||||
|
||||
Receive = function(self, length, client)
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity)) then return end
|
||||
if (!self:Filter(entity, client)) then return end
|
||||
|
||||
entity:SetMalfunctioning(false)
|
||||
end
|
||||
})
|
||||
346
gamemodes/ixhl2rp/entities/weapons/gmod_tool/shared.lua
Normal file
346
gamemodes/ixhl2rp/entities/weapons/gmod_tool/shared.lua
Normal file
@@ -0,0 +1,346 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
-- Variables that are used on both client and server
|
||||
|
||||
SWEP.PrintName = "Tool Gun"
|
||||
SWEP.Author = ""
|
||||
SWEP.Contact = ""
|
||||
SWEP.Purpose = ""
|
||||
SWEP.Instructions = ""
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_toolgun.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_toolgun.mdl"
|
||||
|
||||
SWEP.UseHands = true
|
||||
SWEP.Spawnable = true
|
||||
|
||||
-- Be nice, precache the models
|
||||
util.PrecacheModel( SWEP.ViewModel )
|
||||
util.PrecacheModel( SWEP.WorldModel )
|
||||
|
||||
-- Todo, make/find a better sound.
|
||||
-- SWEP.ShootSound = Sound( "Airboat.FireGunRevDown" )
|
||||
SWEP.ShootSound = Sound( "" )
|
||||
|
||||
SWEP.Tool = {}
|
||||
|
||||
SWEP.Primary.ClipSize = -1
|
||||
SWEP.Primary.DefaultClip = -1
|
||||
SWEP.Primary.Automatic = false
|
||||
SWEP.Primary.Ammo = "none"
|
||||
|
||||
SWEP.Secondary.ClipSize = -1
|
||||
SWEP.Secondary.DefaultClip = -1
|
||||
SWEP.Secondary.Automatic = false
|
||||
SWEP.Secondary.Ammo = "none"
|
||||
|
||||
SWEP.CanHolster = true
|
||||
SWEP.CanDeploy = true
|
||||
|
||||
function SWEP:InitializeTools()
|
||||
|
||||
local temp = {}
|
||||
|
||||
for k,v in pairs( self.Tool ) do
|
||||
|
||||
temp[k] = table.Copy( v )
|
||||
temp[k].SWEP = self
|
||||
temp[k].Owner = self.Owner
|
||||
temp[k].Weapon = self.Weapon
|
||||
temp[k]:Init()
|
||||
|
||||
end
|
||||
|
||||
self.Tool = temp
|
||||
|
||||
end
|
||||
|
||||
function SWEP:SetupDataTables()
|
||||
|
||||
self:NetworkVar( "Entity", 0, "TargetEntity1" )
|
||||
self:NetworkVar( "Entity", 1, "TargetEntity2" )
|
||||
self:NetworkVar( "Entity", 2, "TargetEntity3" )
|
||||
self:NetworkVar( "Entity", 3, "TargetEntity4" )
|
||||
|
||||
end
|
||||
|
||||
-- Convenience function to check object limits
|
||||
function SWEP:CheckLimit( str )
|
||||
return self:GetOwner():CheckLimit( str )
|
||||
end
|
||||
|
||||
function SWEP:Initialize()
|
||||
|
||||
self:SetHoldType( "revolver" )
|
||||
|
||||
self:InitializeTools()
|
||||
|
||||
-- We create these here. The problem is that these are meant to be constant values.
|
||||
-- in the toolmode they're not because some tools can be automatic while some tools aren't.
|
||||
-- Since this is a global table it's shared between all instances of the gun.
|
||||
-- By creating new tables here we're making it so each tool has its own instance of the table
|
||||
-- So changing it won't affect the other tools.
|
||||
|
||||
self.Primary = {
|
||||
ClipSize = -1,
|
||||
DefaultClip = -1,
|
||||
Automatic = false,
|
||||
Ammo = "none"
|
||||
}
|
||||
|
||||
self.Secondary = {
|
||||
ClipSize = -1,
|
||||
DefaultClip = -1,
|
||||
Automatic = false,
|
||||
Ammo = "none"
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
function SWEP:OnRestore()
|
||||
|
||||
self:InitializeTools()
|
||||
|
||||
end
|
||||
|
||||
function SWEP:Precache()
|
||||
|
||||
util.PrecacheSound( self.ShootSound )
|
||||
|
||||
end
|
||||
|
||||
function SWEP:Reload()
|
||||
|
||||
-- This makes the reload a semi-automatic thing rather than a continuous thing
|
||||
if ( !self.Owner:KeyPressed( IN_RELOAD ) ) then return end
|
||||
|
||||
local mode = self:GetMode()
|
||||
local trace = self.Owner:GetEyeTrace()
|
||||
if ( !trace.Hit ) then return end
|
||||
|
||||
local tool = self:GetToolObject()
|
||||
if ( !tool ) then return end
|
||||
|
||||
tool:CheckObjects()
|
||||
|
||||
-- Does the server setting say it's ok?
|
||||
if ( !tool:Allowed() ) then return end
|
||||
|
||||
-- Ask the gamemode if it's ok to do this
|
||||
if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end
|
||||
|
||||
if ( !tool:Reload( trace ) ) then return end
|
||||
|
||||
self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() )
|
||||
|
||||
end
|
||||
|
||||
-- Returns the mode we're in
|
||||
function SWEP:GetMode()
|
||||
|
||||
return self.Mode
|
||||
|
||||
end
|
||||
|
||||
-- Think does stuff every frame
|
||||
function SWEP:Think()
|
||||
|
||||
self.Mode = self.Owner:GetInfo( "gmod_toolmode" )
|
||||
|
||||
local tool = self:GetToolObject()
|
||||
if ( !tool ) then return end
|
||||
|
||||
tool:CheckObjects()
|
||||
|
||||
self.last_mode = self.current_mode
|
||||
self.current_mode = self.Mode
|
||||
|
||||
-- Release ghost entities if we're not allowed to use this new mode?
|
||||
if ( !tool:Allowed() ) then
|
||||
self:GetToolObject( self.last_mode ):ReleaseGhostEntity()
|
||||
return
|
||||
end
|
||||
|
||||
if ( self.last_mode != self.current_mode ) then
|
||||
|
||||
if ( !self:GetToolObject( self.last_mode ) ) then return end
|
||||
|
||||
-- We want to release the ghost entity just in case
|
||||
self:GetToolObject( self.last_mode ):Holster()
|
||||
|
||||
end
|
||||
|
||||
self.Primary.Automatic = tool.LeftClickAutomatic or false
|
||||
self.Secondary.Automatic = tool.RightClickAutomatic or false
|
||||
self.RequiresTraceHit = tool.RequiresTraceHit or true
|
||||
|
||||
tool:Think()
|
||||
|
||||
end
|
||||
|
||||
-- The shoot effect
|
||||
function SWEP:DoShootEffect( hitpos, hitnormal, entity, physbone, bFirstTimePredicted )
|
||||
|
||||
self:EmitSound( self.ShootSound )
|
||||
self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) -- View model animation
|
||||
|
||||
-- There's a bug with the model that's causing a muzzle to
|
||||
-- appear on everyone's screen when we fire this animation.
|
||||
self.Owner:SetAnimation( PLAYER_ATTACK1 ) -- 3rd Person Animation
|
||||
|
||||
if ( !bFirstTimePredicted ) then return end
|
||||
|
||||
--[[
|
||||
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin( hitpos )
|
||||
effectdata:SetNormal( hitnormal )
|
||||
effectdata:SetEntity( entity )
|
||||
effectdata:SetAttachment( physbone )
|
||||
util.Effect( "selection_indicator", effectdata )
|
||||
|
||||
|
||||
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin( hitpos )
|
||||
effectdata:SetStart( self.Owner:GetShootPos() )
|
||||
effectdata:SetAttachment( 1 )
|
||||
effectdata:SetEntity( self )
|
||||
util.Effect( "ToolTracer", effectdata )
|
||||
|
||||
--]]
|
||||
|
||||
end
|
||||
|
||||
if (SERVER) then
|
||||
ix.log.AddType("toolgunFired", function(client, name)
|
||||
return string.format("%s has fired a toolgun with the name: %s", client:GetName(), name)
|
||||
end)
|
||||
end
|
||||
|
||||
-- Trace a line then send the result to a mode function
|
||||
function SWEP:PrimaryAttack()
|
||||
|
||||
local mode = self:GetMode()
|
||||
local tr = util.GetPlayerTrace( self.Owner )
|
||||
tr.mask = bit.bor( CONTENTS_SOLID, CONTENTS_MOVEABLE, CONTENTS_MONSTER, CONTENTS_WINDOW, CONTENTS_DEBRIS, CONTENTS_GRATE, CONTENTS_AUX )
|
||||
local trace = util.TraceLine( tr )
|
||||
if ( !trace.Hit ) then return end
|
||||
|
||||
local tool = self:GetToolObject()
|
||||
if ( !tool ) then return end
|
||||
|
||||
tool:CheckObjects()
|
||||
|
||||
-- Does the server setting say it's ok?
|
||||
if ( !tool:Allowed() ) then return end
|
||||
|
||||
-- Ask the gamemode if it's ok to do this
|
||||
if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end
|
||||
if (SERVER) then
|
||||
ix.log.Add(self:GetOwner(), "toolgunFired", self:GetMode())
|
||||
end
|
||||
|
||||
if ( !tool:LeftClick( trace ) ) then return end
|
||||
|
||||
self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() )
|
||||
end
|
||||
|
||||
function SWEP:SecondaryAttack()
|
||||
|
||||
local mode = self:GetMode()
|
||||
local tr = util.GetPlayerTrace( self.Owner )
|
||||
tr.mask = bit.bor( CONTENTS_SOLID, CONTENTS_MOVEABLE, CONTENTS_MONSTER, CONTENTS_WINDOW, CONTENTS_DEBRIS, CONTENTS_GRATE, CONTENTS_AUX )
|
||||
local trace = util.TraceLine( tr )
|
||||
if ( !trace.Hit ) then return end
|
||||
|
||||
local tool = self:GetToolObject()
|
||||
if ( !tool ) then return end
|
||||
|
||||
tool:CheckObjects()
|
||||
|
||||
-- Ask the gamemode if it's ok to do this
|
||||
if ( !tool:Allowed() ) then return end
|
||||
if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end
|
||||
|
||||
if ( !tool:RightClick( trace ) ) then return end
|
||||
|
||||
self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() )
|
||||
|
||||
end
|
||||
|
||||
function SWEP:Holster()
|
||||
|
||||
-- Just do what the SWEP wants to do if there's no tool
|
||||
if ( !self:GetToolObject() ) then return self.CanHolster end
|
||||
|
||||
local CanHolster = self:GetToolObject():Holster()
|
||||
if ( CanHolster ~= nil ) then return CanHolster end
|
||||
|
||||
return self.CanHolster
|
||||
|
||||
end
|
||||
|
||||
-- Delete ghosts here in case the weapon gets deleted all of a sudden somehow
|
||||
function SWEP:OnRemove()
|
||||
|
||||
if ( !self:GetToolObject() ) then return end
|
||||
|
||||
self:GetToolObject():ReleaseGhostEntity()
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- This will remove any ghosts when a player dies and drops the weapon
|
||||
function SWEP:OwnerChanged()
|
||||
|
||||
if ( !self:GetToolObject() ) then return end
|
||||
|
||||
self:GetToolObject():ReleaseGhostEntity()
|
||||
|
||||
end
|
||||
|
||||
-- Deploy
|
||||
function SWEP:Deploy()
|
||||
|
||||
-- Just do what the SWEP wants to do if there is no tool
|
||||
if ( !self:GetToolObject() ) then return self.CanDeploy end
|
||||
|
||||
self:GetToolObject():UpdateData()
|
||||
|
||||
local CanDeploy = self:GetToolObject():Deploy()
|
||||
if ( CanDeploy ~= nil ) then return CanDeploy end
|
||||
|
||||
return self.CanDeploy
|
||||
|
||||
end
|
||||
|
||||
function SWEP:GetToolObject( tool )
|
||||
|
||||
local mode = tool or self:GetMode()
|
||||
|
||||
if ( !self.Tool[ mode ] ) then return false end
|
||||
|
||||
return self.Tool[ mode ]
|
||||
|
||||
end
|
||||
|
||||
function SWEP:FireAnimationEvent( pos, ang, event, options )
|
||||
|
||||
-- Disables animation based muzzle event
|
||||
if ( event == 21 ) then return true end
|
||||
-- Disable thirdperson muzzle flash
|
||||
if ( event == 5003 ) then return true end
|
||||
|
||||
end
|
||||
|
||||
include( "stool.lua" )
|
||||
162
gamemodes/ixhl2rp/entities/weapons/gmod_tool/stools/paint.lua
Normal file
162
gamemodes/ixhl2rp/entities/weapons/gmod_tool/stools/paint.lua
Normal file
@@ -0,0 +1,162 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
TOOL.Category = "Render"
|
||||
TOOL.Name = "#tool.paint.name"
|
||||
|
||||
TOOL.LeftClickAutomatic = true
|
||||
TOOL.RightClickAutomatic = true
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.ClientConVar[ "decal" ] = "Blood"
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
|
||||
local function PlaceDecal( ply, ent, data )
|
||||
|
||||
if ( !IsValid( ent ) && !ent:IsWorld() ) then return end
|
||||
|
||||
local bone = ent:GetPhysicsObjectNum( data.bone or 0 )
|
||||
if ( !IsValid( bone ) ) then bone = ent end
|
||||
|
||||
if ( SERVER ) then
|
||||
util.Decal( data.decal, bone:LocalToWorld( data.Pos1 ), bone:LocalToWorld( data.Pos2 ), ply )
|
||||
|
||||
local i = ent.DecalCount or 0
|
||||
i = i + 1
|
||||
duplicator.StoreEntityModifier( ent, "decal" .. i, data )
|
||||
ent.DecalCount = i
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Register decal duplicator
|
||||
--
|
||||
for i = 1, 32 do
|
||||
|
||||
duplicator.RegisterEntityModifier( "decal" .. i, function( ply, ent, data )
|
||||
timer.Simple( i * 0.05, function() PlaceDecal( ply, ent, data ) end )
|
||||
end )
|
||||
|
||||
end
|
||||
|
||||
function TOOL:Reload( trace )
|
||||
if ( !IsValid( trace.Entity ) ) then return false end
|
||||
|
||||
trace.Entity:RemoveAllDecals()
|
||||
|
||||
if ( SERVER ) then
|
||||
for i = 1, 32 do
|
||||
duplicator.ClearEntityModifier( trace.Entity, "decal" .. i )
|
||||
end
|
||||
trace.Entity.DecalCount = nil
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function TOOL:LeftClick( trace )
|
||||
|
||||
return self:RightClick( trace, true )
|
||||
|
||||
end
|
||||
|
||||
function TOOL:RightClick( trace, bNoDelay )
|
||||
|
||||
local decal = self:GetClientInfo( "decal" )
|
||||
|
||||
local Pos1 = trace.HitPos + trace.HitNormal
|
||||
local Pos2 = trace.HitPos - trace.HitNormal
|
||||
|
||||
local Bone = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone or 0 )
|
||||
if ( !IsValid( Bone ) ) then Bone = trace.Entity end
|
||||
|
||||
Pos1 = Bone:WorldToLocal( Pos1 )
|
||||
Pos2 = Bone:WorldToLocal( Pos2 )
|
||||
|
||||
PlaceDecal( self:GetOwner(), trace.Entity, { Pos1 = Pos1, Pos2 = Pos2, bone = trace.PhysicsBone, decal = decal } )
|
||||
|
||||
if ( bNoDelay ) then
|
||||
self:GetWeapon():SetNextPrimaryFire( CurTime() + 0.05 )
|
||||
self:GetWeapon():SetNextSecondaryFire( CurTime() + 0.05 )
|
||||
else
|
||||
self:GetWeapon():SetNextPrimaryFire( CurTime() + 0.2 )
|
||||
self:GetWeapon():SetNextSecondaryFire( CurTime() + 0.2 )
|
||||
end
|
||||
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
game.AddDecal( "Eye", "decals/eye" )
|
||||
game.AddDecal( "Dark", "decals/dark" )
|
||||
game.AddDecal( "Smile", "decals/smile" )
|
||||
game.AddDecal( "Light", "decals/light" )
|
||||
game.AddDecal( "Cross", "decals/cross" )
|
||||
game.AddDecal( "Nought", "decals/nought" )
|
||||
game.AddDecal( "Noughtsncrosses", "decals/noughtsncrosses" )
|
||||
|
||||
list.Add( "PaintMaterials", "Eye" )
|
||||
list.Add( "PaintMaterials", "Smile" )
|
||||
list.Add( "PaintMaterials", "Light" )
|
||||
list.Add( "PaintMaterials", "Dark" )
|
||||
list.Add( "PaintMaterials", "Blood" )
|
||||
list.Add( "PaintMaterials", "YellowBlood" )
|
||||
list.Add( "PaintMaterials", "Impact.Metal" )
|
||||
list.Add( "PaintMaterials", "Scorch" )
|
||||
list.Add( "PaintMaterials", "BeerSplash" )
|
||||
list.Add( "PaintMaterials", "ExplosiveGunshot" )
|
||||
list.Add( "PaintMaterials", "BirdPoop" )
|
||||
list.Add( "PaintMaterials", "PaintSplatPink" )
|
||||
list.Add( "PaintMaterials", "PaintSplatGreen" )
|
||||
list.Add( "PaintMaterials", "PaintSplatBlue" )
|
||||
list.Add( "PaintMaterials", "ManhackCut" )
|
||||
list.Add( "PaintMaterials", "FadingScorch" )
|
||||
list.Add( "PaintMaterials", "Antlion.Splat" )
|
||||
list.Add( "PaintMaterials", "Splash.Large" )
|
||||
list.Add( "PaintMaterials", "BulletProof" )
|
||||
list.Add( "PaintMaterials", "GlassBreak" )
|
||||
list.Add( "PaintMaterials", "Impact.Sand" )
|
||||
list.Add( "PaintMaterials", "Impact.BloodyFlesh" )
|
||||
list.Add( "PaintMaterials", "Impact.Antlion" )
|
||||
list.Add( "PaintMaterials", "Impact.Glass" )
|
||||
list.Add( "PaintMaterials", "Impact.Wood" )
|
||||
list.Add( "PaintMaterials", "Impact.Concrete" )
|
||||
list.Add( "PaintMaterials", "Noughtsncrosses" )
|
||||
list.Add( "PaintMaterials", "Nought" )
|
||||
list.Add( "PaintMaterials", "Cross" )
|
||||
|
||||
function TOOL.BuildCPanel( CPanel )
|
||||
|
||||
-- Remove duplicates.
|
||||
local Options = {}
|
||||
for id, str in pairs( list.Get( "PaintMaterials" ) ) do
|
||||
if ( !table.HasValue( Options, str ) ) then
|
||||
table.insert( Options, str )
|
||||
end
|
||||
end
|
||||
|
||||
table.sort( Options )
|
||||
|
||||
local listbox = CPanel:AddControl( "ListBox", { Label = "#tool.paint.texture", Height = 17 + table.Count( Options ) * 17 } )
|
||||
for k, decal in pairs( Options ) do
|
||||
local line = listbox:AddLine( decal )
|
||||
line.data = { paint_decal = decal }
|
||||
|
||||
if ( GetConVarString( "paint_decal" ) == tostring( decal ) ) then line:SetSelected( true ) end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,105 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
TOOL.Category = "HL2RP Staff QoL"
|
||||
TOOL.Name = "NPC Spawner Editor"
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
function TOOL:GetPlayerBoundsTrace()
|
||||
local client = self:GetOwner()
|
||||
|
||||
return util.TraceLine({
|
||||
start = client:GetShootPos(),
|
||||
endpos = client:GetShootPos() + client:GetForward() * 96,
|
||||
filter = client
|
||||
})
|
||||
end
|
||||
function TOOL:LeftClick( trace )
|
||||
|
||||
|
||||
if (SERVER) then
|
||||
if !CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands") then return false end
|
||||
|
||||
local entity = trace.Entity
|
||||
if !entity or entity and !IsValid(entity) then return end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if entity:GetClass() != "ix_npcspawner" then return end
|
||||
entity:Use(self:GetOwner())
|
||||
end
|
||||
end
|
||||
function TOOL:RightClick( trace )
|
||||
local entity = trace.Entity
|
||||
local client = self:GetOwner()
|
||||
if !entity or entity and !IsValid(entity) then
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
return
|
||||
end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if entity:GetClass() != "ix_npcspawner" then return end
|
||||
if client.npcEditStart then
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
else
|
||||
client.npcEditStart = entity:GetPos() + (entity:GetForward() * -60 + entity:GetRight()*-40 + entity:GetUp()*128)
|
||||
client.npcEnt = entity
|
||||
end
|
||||
end
|
||||
function TOOL:Reload(trace)
|
||||
local client = self:GetOwner()
|
||||
if !CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands") then return false end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if !client.npcEditStart or !client.npcEnt then return end
|
||||
local tr = util.TraceLine({
|
||||
start = client:GetShootPos(),
|
||||
endpos = client:GetShootPos() + client:GetForward() * 96,
|
||||
filter = client
|
||||
})
|
||||
client.npcEnt:SetSpawnPosStart(client.npcEditStart)
|
||||
client.npcEnt:SetSpawnPosEnd(tr.HitPos)
|
||||
|
||||
client.npcEditStart = nil
|
||||
client.npcEnt = nil
|
||||
end
|
||||
if CLIENT then
|
||||
hook.Add("PostDrawTranslucentRenderables", "NPCSpawnEdit", function(bDepth, bSkybox)
|
||||
if ( bSkybox ) then return end
|
||||
if LocalPlayer().npcEditStart then
|
||||
local tr = util.TraceLine({
|
||||
start = LocalPlayer():GetShootPos(),
|
||||
endpos = LocalPlayer():GetShootPos() + LocalPlayer():GetForward() * 96,
|
||||
filter = LocalPlayer()
|
||||
})
|
||||
local center, min, max = LocalPlayer().npcEnt:SpawnAreaPosition(LocalPlayer().npcEditStart, tr.HitPos)
|
||||
local color = Color(255, 255, 255, 255)
|
||||
|
||||
render.DrawWireframeBox(center, angle_zero, min, max, color)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
language.Add( "Tool.sh_npcspawnedit.name", "NPC Spawner Configurator" )
|
||||
language.Add( "Tool.sh_npcspawnedit.desc", "You can edit NPC spawner entities with it." )
|
||||
language.Add( "Tool.sh_npcspawnedit.left", "Open spawner menu" )
|
||||
language.Add( "Tool.sh_npcspawnedit.right", "Edit spawner area bounds. Click again to stop changing bounds." )
|
||||
language.Add( "Tool.sh_npcspawnedit.reload", "Save your area bound changes." )
|
||||
end
|
||||
@@ -0,0 +1,74 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
TOOL.Category = "HL2RP Staff QoL"
|
||||
TOOL.Name = "Panel Add"
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.ClientConVar[ "url" ] = ""
|
||||
TOOL.ClientConVar[ "scale" ] = 1
|
||||
TOOL.ClientConVar[ "brightness" ] = 100
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
|
||||
function TOOL:LeftClick( trace )
|
||||
if (SERVER) then
|
||||
if !CAMI.PlayerHasAccess(self:GetOwner(), "Helix - Manage Panels") then return false end
|
||||
|
||||
local position = trace.HitPos
|
||||
local angles = trace.HitNormal:Angle()
|
||||
angles:RotateAroundAxis(angles:Up(), 90)
|
||||
angles:RotateAroundAxis(angles:Forward(), 90)
|
||||
|
||||
if !ix.plugin.list then return end
|
||||
if !ix.plugin.list["3dpanel"] then return end
|
||||
if !ix.plugin.list["3dpanel"].AddPanel then return end
|
||||
|
||||
local url = self:GetClientInfo( "url", "" )
|
||||
local scale = self:GetClientNumber( "scale", 0 )
|
||||
local brightness = self:GetClientNumber( "brightness", 0 )
|
||||
|
||||
ix.plugin.list["3dpanel"]:AddPanel(position + angles:Up() * 0.1, angles, url, scale, brightness)
|
||||
|
||||
return "@panelAdded"
|
||||
end
|
||||
end
|
||||
|
||||
function TOOL:RightClick( trace )
|
||||
if !ix.plugin.list then return end
|
||||
if !ix.plugin.list["3dpanel"] then return end
|
||||
if !ix.plugin.list["3dpanel"].RemovePanel then return end
|
||||
|
||||
local position = trace.HitPos
|
||||
-- Remove the panel(s) and get the amount removed.
|
||||
local amount = ix.plugin.list["3dpanel"]:RemovePanel(position, false)
|
||||
|
||||
return "@panelRemoved", amount
|
||||
end
|
||||
|
||||
function TOOL.BuildCPanel( CPanel )
|
||||
CPanel:AddControl( "Header", { Description = "Enter URL!" } )
|
||||
CPanel:AddControl( "textbox", { Label = "URL", Command = "sh_paneladd_url", Help = false } )
|
||||
CPanel:AddControl( "Slider", { Label = "Scale", Command = "sh_paneladd_scale", Type = "Float", Min = 0.001, Max = 5, Help = false } )
|
||||
CPanel:AddControl( "Slider", { Label = "Brightness", Command = "sh_paneladd_brightness", Type = "Float", Min = 0, Max = 255, Help = false } )
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
language.Add( "Tool.sh_paneladd.name", "Panel Add" )
|
||||
language.Add( "Tool.sh_paneladd.desc", "Same as /paneladd" )
|
||||
language.Add( "Tool.sh_paneladd.left", "Primary: Add Panel" )
|
||||
language.Add( "Tool.sh_paneladd.right", "Right Click: Remove Panel" )
|
||||
language.Add( "Tool.sh_paneladd.reload", "Nothing." )
|
||||
end
|
||||
@@ -0,0 +1,84 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
TOOL.Category = "HL2RP Staff QoL"
|
||||
TOOL.Name = "Persist"
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
|
||||
local function GetRealModel(entity)
|
||||
return entity:GetClass() == "prop_effect" and entity.AttachedEntity:GetModel() or entity:GetModel()
|
||||
end
|
||||
|
||||
function TOOL:LeftClick( trace )
|
||||
if (SERVER) then
|
||||
if !CAMI.PlayerHasAccess(client, "Helix - Basic Admin Commands") then return false end
|
||||
|
||||
local entity = trace.Entity
|
||||
if !entity or entity and !IsValid(entity) then return end
|
||||
if entity:IsPlayer() or entity:IsVehicle() or entity.bNoPersist then return end
|
||||
if !self.GetOwner then return end
|
||||
if !self:GetOwner() then return end
|
||||
if !IsValid(self:GetOwner()) then return end
|
||||
if !ix.plugin.list then return end
|
||||
if !ix.plugin.list["persistence"] then return end
|
||||
if !ix.plugin.list["persistence"].stored then return end
|
||||
|
||||
local lampCount = 0
|
||||
|
||||
for _, v in pairs(ix.plugin.list["persistence"].stored) do
|
||||
if IsValid(v) and v:GetClass() == "gmod_lamp" then
|
||||
lampCount = lampCount + 1
|
||||
end
|
||||
end
|
||||
|
||||
if !entity:GetNetVar("Persistent") then
|
||||
if entity:GetClass() == "gmod_lamp" and lampCount >= ix.config.Get("maxLamps", 1) then
|
||||
return self:GetOwner():Notify("Max persisted lamps reached.")
|
||||
end
|
||||
|
||||
ix.plugin.list["persistence"].stored[#ix.plugin.list["persistence"].stored + 1] = entity
|
||||
|
||||
entity:SetNetVar("Persistent", true)
|
||||
ix.saveEnts:SaveEntity(entity)
|
||||
|
||||
ix.log.Add(self:GetOwner(), "persist", GetRealModel(entity), true)
|
||||
self:GetOwner():Notify("You persisted this entity.")
|
||||
else
|
||||
for k, v in ipairs(ix.plugin.list["persistence"].stored) do
|
||||
if (v == entity) then
|
||||
table.remove(ix.plugin.list["persistence"].stored, k)
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
entity:SetNetVar("Persistent", false)
|
||||
ix.saveEnts:DeleteEntity(entity)
|
||||
|
||||
ix.log.Add(self:GetOwner(), "persist", GetRealModel(entity), false)
|
||||
self:GetOwner():Notify("You unpersisted this entity.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
language.Add( "Tool.sh_persist.name", "Persist" )
|
||||
language.Add( "Tool.sh_persist.desc", "Same as persist in context menu" )
|
||||
language.Add( "Tool.sh_persist.left", "Primary: Persist/Unpersist" )
|
||||
language.Add( "Tool.sh_persist.right", "Nothing." )
|
||||
language.Add( "Tool.sh_persist.reload", "Nothing." )
|
||||
end
|
||||
@@ -0,0 +1,79 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
TOOL.Category = "HL2RP Staff QoL"
|
||||
TOOL.Name = "Text Add"
|
||||
TOOL.RequiresTraceHit = true
|
||||
|
||||
TOOL.ClientConVar[ "text" ] = ""
|
||||
TOOL.ClientConVar[ "scale" ] = 1
|
||||
|
||||
TOOL.Information = {
|
||||
{ name = "left" },
|
||||
{ name = "right" },
|
||||
{ name = "reload" }
|
||||
}
|
||||
|
||||
function TOOL:LeftClick( trace )
|
||||
if (SERVER) then
|
||||
if !CAMI.PlayerHasAccess(self:GetOwner(), "Helix - Basic Admin Commands") then return false end
|
||||
|
||||
local position = trace.HitPos
|
||||
local angles = trace.HitNormal:Angle()
|
||||
angles:RotateAroundAxis(angles:Up(), 90)
|
||||
angles:RotateAroundAxis(angles:Forward(), 90)
|
||||
|
||||
if !ix.plugin.list then return end
|
||||
if !ix.plugin.list["3dtext"] then return end
|
||||
if !ix.plugin.list["3dtext"].AddText then return end
|
||||
|
||||
local text = self:GetClientInfo( "text", "" )
|
||||
local scale = self:GetClientNumber( "scale", 0 )
|
||||
|
||||
local index = ix.plugin.list["3dtext"]:AddText(position + angles:Up() * 0.1, angles, text, scale)
|
||||
|
||||
undo.Create("ix3dText")
|
||||
undo.SetPlayer(self:GetOwner())
|
||||
undo.AddFunction(function()
|
||||
if (ix.plugin.list["3dtext"]:RemoveTextByID(index)) then
|
||||
ix.log.Add(self:GetOwner(), "undo3dText")
|
||||
end
|
||||
end)
|
||||
undo.Finish()
|
||||
|
||||
return "@textAdded"
|
||||
end
|
||||
end
|
||||
|
||||
function TOOL:RightClick( trace )
|
||||
if !ix.plugin.list then return end
|
||||
if !ix.plugin.list["3dtext"] then return end
|
||||
if !ix.plugin.list["3dtext"].RemoveText then return end
|
||||
|
||||
local position = trace.HitPos + trace.HitNormal * 2
|
||||
local amount = ix.plugin.list["3dtext"]:RemoveText(position, false)
|
||||
|
||||
return "@textRemoved", amount
|
||||
end
|
||||
|
||||
function TOOL.BuildCPanel( CPanel )
|
||||
CPanel:AddControl( "Header", { Description = "Enter Text!" } )
|
||||
CPanel:AddControl( "textbox", { Label = "Text", Command = "sh_textadd_text", Help = false } )
|
||||
CPanel:AddControl( "Slider", { Label = "Scale", Command = "sh_textadd_scale", Type = "Float", Min = 0.001, Max = 5, Help = false } )
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
language.Add( "Tool.sh_textadd.name", "Text Add" )
|
||||
language.Add( "Tool.sh_textadd.desc", "Same as /textadd" )
|
||||
language.Add( "Tool.sh_textadd.left", "Primary: Add Text" )
|
||||
language.Add( "Tool.sh_textadd.right", "Right Click: Remove Text." )
|
||||
language.Add( "Tool.sh_textadd.reload", "Nothing." )
|
||||
end
|
||||
490
gamemodes/ixhl2rp/entities/weapons/ix_stunstick.lua
Normal file
490
gamemodes/ixhl2rp/entities/weapons/ix_stunstick.lua
Normal file
@@ -0,0 +1,490 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
if (CLIENT) then
|
||||
SWEP.PrintName = "CV-2000 Stun Baton"
|
||||
SWEP.Slot = 0
|
||||
SWEP.SlotPos = 5
|
||||
SWEP.DrawAmmo = false
|
||||
SWEP.DrawCrosshair = false
|
||||
end
|
||||
|
||||
SWEP.Category = "HL2 RP"
|
||||
SWEP.Author = "Chessnut"
|
||||
SWEP.Instructions = "Primary Fire: Stun.\nALT + Primary Fire: Toggle stun.\nSecondary Fire: Push/Knock."
|
||||
SWEP.Purpose = "Hitting things and knocking on doors."
|
||||
SWEP.Drop = false
|
||||
|
||||
SWEP.HoldType = "melee"
|
||||
|
||||
SWEP.Spawnable = true
|
||||
SWEP.AdminOnly = true
|
||||
|
||||
SWEP.ViewModelFOV = 47
|
||||
SWEP.ViewModelFlip = false
|
||||
SWEP.AnimPrefix = "melee"
|
||||
|
||||
SWEP.ViewTranslation = 4
|
||||
|
||||
SWEP.Primary.ClipSize = -1
|
||||
SWEP.Primary.DefaultClip = -1
|
||||
SWEP.Primary.Automatic = false
|
||||
SWEP.Primary.Ammo = ""
|
||||
SWEP.Primary.Damage = 15
|
||||
SWEP.Primary.Delay = 0.7
|
||||
|
||||
SWEP.Secondary.ClipSize = -1
|
||||
SWEP.Secondary.DefaultClip = 0
|
||||
SWEP.Secondary.Automatic = false
|
||||
SWEP.Secondary.Ammo = ""
|
||||
|
||||
SWEP.ViewModel = Model("models/weapons/c_wn_stunstick.mdl")
|
||||
SWEP.WorldModel = Model("models/weapons/w_wn_stunbaton.mdl")
|
||||
|
||||
SWEP.UseHands = true
|
||||
SWEP.LowerAngles = Angle(15, -10, -20)
|
||||
|
||||
SWEP.FireWhenLowered = true
|
||||
|
||||
function SWEP:SetupDataTables()
|
||||
self:NetworkVar("Bool", 0, "Activated")
|
||||
self:NetworkVarNotify( "Activated", self.OnActiveToggle )
|
||||
end
|
||||
|
||||
function SWEP:Precache()
|
||||
util.PrecacheSound("physics/wood/wood_crate_impact_hard3.wav")
|
||||
end
|
||||
|
||||
function SWEP:StartStunstickSound()
|
||||
if (SERVER) then
|
||||
local client = self:GetOwner()
|
||||
|
||||
self.patch1 = CreateSound(client, "wn_stunstick/stunstick_idle_"..math.random(1, 4)..".wav")
|
||||
self.patch1:SetSoundLevel(40)
|
||||
self.patch1:Play()
|
||||
|
||||
self:SoundTimer()
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:StopStunstickSound()
|
||||
if (SERVER) then
|
||||
local patchToStop
|
||||
if (self.patch1 and self.patch1:IsPlaying()) then
|
||||
patchToStop = self.patch1
|
||||
else
|
||||
patchToStop = self.patch2
|
||||
end
|
||||
|
||||
if (!patchToStop) then return end
|
||||
|
||||
patchToStop:FadeOut(1)
|
||||
end
|
||||
end
|
||||
|
||||
-- for when someone primary fires or w/e
|
||||
function SWEP:DuckStunstickSound(vol, delta)
|
||||
if (SERVER) then
|
||||
if (!delta) then
|
||||
delta = 0.5
|
||||
end
|
||||
|
||||
if (!vol) then
|
||||
vol = 0.25
|
||||
end
|
||||
|
||||
local patchToDuck = self.patch1 and self.patch1:IsPlaying() and self.patch1 or self.patch2
|
||||
if (!patchToDuck) then return end
|
||||
|
||||
patchToDuck:ChangeVolume(vol, delta)
|
||||
timer.Simple(delta + 0.1, function()
|
||||
patchToDuck:ChangeVolume(1, delta)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function SWEP:OnActiveToggle(name, old, new)
|
||||
if (new) then
|
||||
self:StartStunstickSound()
|
||||
else
|
||||
self:StopStunstickSound()
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:SoundTimer()
|
||||
if (SERVER) then
|
||||
local client = self:GetOwner()
|
||||
|
||||
local tName = "stunstick_idle_"..client:SteamID64().."_timer"
|
||||
|
||||
if timer.Exists(tName) then timer.Remove(tName) end
|
||||
|
||||
timer.Create(tName, 12, 0, function()
|
||||
if (!IsValid(client)) then
|
||||
timer.Remove(tName)
|
||||
return
|
||||
end
|
||||
|
||||
if (!IsValid(self) or !self:GetActivated()) then
|
||||
return
|
||||
end
|
||||
|
||||
local patchToStart
|
||||
local patchToStop
|
||||
if (self.patch1 and self.patch1:IsPlaying()) then
|
||||
patchToStart = self.patch2
|
||||
patchToStop = self.patch1
|
||||
else
|
||||
patchToStart = self.patch1
|
||||
patchToStop = self.patch2
|
||||
end
|
||||
|
||||
if (!patchToStop) then
|
||||
timer.Remove(tName)
|
||||
return
|
||||
end
|
||||
|
||||
patchToStop:FadeOut(1)
|
||||
|
||||
patchToStart = CreateSound(client, "wn_stunstick/stunstick_idle_"..math.random(1, 4)..".wav")
|
||||
patchToStart:SetSoundLevel(40) -- maybe make this configurable idk
|
||||
patchToStart:Play()
|
||||
patchToStart:ChangeVolume( 0.1, 0 )
|
||||
patchToStart:ChangeVolume(1, 1)
|
||||
|
||||
if (self.patch1 and self.patch1:IsPlaying()) then
|
||||
self.patch2 = patchToStart
|
||||
else
|
||||
self.patch1 = patchToStart
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:CreateWMParticle()
|
||||
if self.particle and self.particle:IsValid() then
|
||||
self.particle:StopEmissionAndDestroyImmediately()
|
||||
end
|
||||
|
||||
self.particle = CreateParticleSystem(self, "wn_stunstick_fx", PATTACH_POINT_FOLLOW, 1, Vector(0, 0, 0))
|
||||
end
|
||||
|
||||
function SWEP:Initialize()
|
||||
self:SetHoldType(self.HoldType)
|
||||
end
|
||||
|
||||
function SWEP:OnRaised()
|
||||
self.lastRaiseTime = CurTime()
|
||||
end
|
||||
|
||||
function SWEP:OnLowered()
|
||||
self:SetActivated(false)
|
||||
|
||||
if (CLIENT) then
|
||||
if (self.particle and IsValid(self.particle)) then
|
||||
self.particle:StopEmissionAndDestroyImmediately()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:Holster(nextWep)
|
||||
if self.patch1 and self.patch1:IsPlaying() or self.patch2 and self.patch2:IsPlaying() then
|
||||
self:StopStunstickSound()
|
||||
end
|
||||
|
||||
self:OnLowered()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local STUNSTICK_GLOW_MATERIAL2 = Material("effects/blueflare1")
|
||||
local STUNSTICK_GLOW_MATERIAL_NOZ = Material("sprites/light_glow02_add_noz")
|
||||
|
||||
function SWEP:DrawWorldModel()
|
||||
self:DrawModel()
|
||||
|
||||
if (!self.particle or self.particle and !self.particle:IsValid()) then
|
||||
if self:GetActivated() then
|
||||
self:CreateWMParticle()
|
||||
end
|
||||
elseif (self.particle and self.particle:IsValid()) then
|
||||
if !self:GetActivated() then
|
||||
self.particle:StopEmissionAndDestroyImmediately()
|
||||
end
|
||||
end
|
||||
|
||||
if (self:GetActivated()) then
|
||||
local size = math.Rand(2.0, 6.0)
|
||||
local glow = math.Rand(0.6, 0.8) * 255
|
||||
local color = Color(glow / 2, glow / 1.5, glow / 1.1)
|
||||
local attachment = self:GetAttachment(1)
|
||||
|
||||
if (attachment) then
|
||||
local position = attachment.Pos
|
||||
|
||||
render.SetMaterial(STUNSTICK_GLOW_MATERIAL2)
|
||||
render.DrawSprite(position, size * 2, size * 2, color)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local NUM_BEAM_ATTACHEMENTS = 9
|
||||
local BEAM_ATTACH_CORE_NAME = "sparkrear"
|
||||
|
||||
SWEP.nextSpark = 0
|
||||
|
||||
function SWEP:PostDrawViewModel()
|
||||
if (!self:GetActivated()) then
|
||||
return
|
||||
end
|
||||
|
||||
local viewModel = LocalPlayer():GetViewModel()
|
||||
|
||||
if (!IsValid(viewModel)) then
|
||||
return
|
||||
end
|
||||
|
||||
cam.Start3D(EyePos(), EyeAngles())
|
||||
local size = math.Rand(3.0, 4.0)
|
||||
local color = Color(75, 100, 150, 50 + math.sin(RealTime() * 2)*20)
|
||||
|
||||
STUNSTICK_GLOW_MATERIAL_NOZ:SetFloat("$alpha", color.a / 255)
|
||||
|
||||
render.SetMaterial(STUNSTICK_GLOW_MATERIAL_NOZ)
|
||||
|
||||
local attachment = viewModel:GetAttachment(1)
|
||||
|
||||
if (attachment) then
|
||||
render.DrawSprite(attachment.Pos, size * 10, size * 15, color)
|
||||
end
|
||||
|
||||
for i = 1, NUM_BEAM_ATTACHEMENTS do
|
||||
attachment = viewModel:GetAttachment(viewModel:LookupAttachment("spark"..i.."a"))
|
||||
size = math.Rand(2.5, 5.0)
|
||||
|
||||
if (attachment and attachment.Pos) then
|
||||
render.DrawSprite(attachment.Pos, size, size, color)
|
||||
end
|
||||
|
||||
attachment = viewModel:GetAttachment(viewModel:LookupAttachment("spark"..i.."b"))
|
||||
size = math.Rand(2.5, 5.0)
|
||||
|
||||
if (attachment and attachment.Pos) then
|
||||
render.DrawSprite(attachment.Pos, size, size, color)
|
||||
end
|
||||
end
|
||||
cam.End3D()
|
||||
|
||||
local sparkAttachment = viewModel:GetAttachment(1)
|
||||
|
||||
if self.nextSpark <= CurTime() then
|
||||
self.nextSpark = CurTime() + math.random(1, 10)
|
||||
|
||||
local ef = EffectData()
|
||||
ef:SetOrigin(sparkAttachment.Pos)
|
||||
ef:SetMagnitude(math.random(1, 2))
|
||||
ef:SetScale(0.1)
|
||||
util.Effect("ElectricSpark", ef)
|
||||
|
||||
self:EmitSound("wn_stunstick/spark".. math.random(1, 4) ..".wav", nil, math.random(80, 120))
|
||||
end
|
||||
|
||||
if (self.particle and self.particle:IsValid() and self:GetActivated()) then
|
||||
self.particle:StopEmissionAndDestroyImmediately()
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:PrimaryAttack()
|
||||
self:SetNextPrimaryFire(CurTime() + self.Primary.Delay)
|
||||
|
||||
if (!self:GetOwner():IsWepRaised()) then
|
||||
return
|
||||
end
|
||||
|
||||
if (self:GetOwner():KeyDown(IN_WALK)) then
|
||||
if (SERVER) then
|
||||
self:SetActivated(!self:GetActivated())
|
||||
|
||||
local state = self:GetActivated()
|
||||
|
||||
if (state) then
|
||||
self:GetOwner():EmitSound("Weapon_StunStick.Activate")
|
||||
else
|
||||
self:GetOwner():EmitSound("Weapon_StunStick.Deactivate")
|
||||
end
|
||||
|
||||
local model = string.lower(self:GetOwner():GetModel())
|
||||
|
||||
if (ix.anim.GetModelClass(model) == "metrocop") then
|
||||
self:GetOwner():ForceSequence(state and "activatebaton" or "deactivatebaton", nil, nil, true)
|
||||
end
|
||||
end
|
||||
|
||||
if (CLIENT) then
|
||||
timer.Simple(0, function()
|
||||
if !(IsValid(self)) then return end
|
||||
if (self:GetActivated()) then
|
||||
self:CreateWMParticle()
|
||||
else
|
||||
if (self.particle and self.particle:IsValid()) then
|
||||
self.particle:StopEmissionAndDestroyImmediately()
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local result = hook.Run("CanDoMeleeAttack", self)
|
||||
if (result == false) then
|
||||
return
|
||||
end
|
||||
|
||||
if (self:GetActivated()) then
|
||||
self:DuckStunstickSound()
|
||||
end
|
||||
|
||||
self:EmitSound("wn_stunstick/stunstick_swing".. math.random(1, 3) ..".wav")
|
||||
self:SendWeaponAnim(ACT_VM_HITCENTER)
|
||||
|
||||
local damage = self.Primary.Damage
|
||||
|
||||
if (self:GetActivated()) then
|
||||
damage = 10
|
||||
end
|
||||
|
||||
self:GetOwner():SetAnimation(PLAYER_ATTACK1)
|
||||
self:GetOwner():ViewPunch(Angle(1, 0, 0.125))
|
||||
|
||||
timer.Simple(0.1, function()
|
||||
if !IsValid(self) then return end
|
||||
self:GetOwner():LagCompensation(true)
|
||||
local data = {}
|
||||
data.start = self:GetOwner():GetShootPos()
|
||||
data.endpos = data.start + self:GetOwner():GetAimVector()*72
|
||||
data.filter = self:GetOwner()
|
||||
local trace = util.TraceLine(data)
|
||||
self:GetOwner():LagCompensation(false)
|
||||
|
||||
if (SERVER and trace.Hit) then
|
||||
if (self:GetActivated()) then
|
||||
local effect = EffectData()
|
||||
effect:SetStart(trace.HitPos)
|
||||
effect:SetNormal(trace.HitNormal)
|
||||
effect:SetOrigin(trace.HitPos)
|
||||
util.Effect("StunstickImpact", effect, true, true)
|
||||
end
|
||||
|
||||
self:GetOwner():EmitSound("wn_stunstick/stunstick_fleshhit".. math.random(1, 3) ..".wav")
|
||||
|
||||
local entity = trace.Entity
|
||||
|
||||
if (IsValid(entity)) then
|
||||
if (entity:IsPlayer()) then
|
||||
if (self:GetActivated()) then
|
||||
entity.ixStuns = (entity.ixStuns or 0) + 1
|
||||
|
||||
timer.Simple(10, function()
|
||||
if (!entity.ixStuns) then return end
|
||||
entity.ixStuns = math.max(entity.ixStuns - 1, 0)
|
||||
end)
|
||||
end
|
||||
|
||||
entity:ViewPunch(Angle(-20, math.random(-15, 15), math.random(-10, 10)))
|
||||
|
||||
if (self:GetActivated() and entity.ixStuns > 2) then
|
||||
entity:SetRagdolled(true, 60)
|
||||
ix.log.Add(entity, "knockedOut", "hit by stunstick owned by "..self:GetOwner():GetName())
|
||||
entity.ixStuns = 0
|
||||
|
||||
return
|
||||
end
|
||||
elseif (entity:IsRagdoll()) then
|
||||
damage = self:GetActivated() and 2 or 10
|
||||
end
|
||||
|
||||
local damageInfo = DamageInfo()
|
||||
damageInfo:SetAttacker(self:GetOwner())
|
||||
damageInfo:SetInflictor(self)
|
||||
damageInfo:SetDamage(damage)
|
||||
damageInfo:SetDamageType(DMG_CLUB)
|
||||
damageInfo:SetDamagePosition(trace.HitPos)
|
||||
damageInfo:SetDamageForce(self:GetOwner():GetAimVector() * 10000)
|
||||
entity:DispatchTraceAttack(damageInfo, data.start, data.endpos)
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function SWEP:SecondaryAttack()
|
||||
self:GetOwner():LagCompensation(true)
|
||||
local data = {}
|
||||
data.start = self:GetOwner():GetShootPos()
|
||||
data.endpos = data.start + self:GetOwner():GetAimVector()*72
|
||||
data.filter = self:GetOwner()
|
||||
data.mins = Vector(-8, -8, -30)
|
||||
data.maxs = Vector(8, 8, 10)
|
||||
local trace = util.TraceHull(data)
|
||||
local entity = trace.Entity
|
||||
self:GetOwner():LagCompensation(false)
|
||||
|
||||
if (SERVER and IsValid(entity)) then
|
||||
local bPushed = false
|
||||
|
||||
if (entity:IsDoor()) then
|
||||
if (hook.Run("PlayerCanKnockOnDoor", self:GetOwner(), entity) == false) then
|
||||
return
|
||||
end
|
||||
|
||||
self:GetOwner():ViewPunch(Angle(-1.3, 1.8, 0))
|
||||
self:GetOwner():EmitSound("physics/wood/wood_crate_impact_hard3.wav")
|
||||
self:GetOwner():SetAnimation(PLAYER_ATTACK1)
|
||||
|
||||
self:SetNextSecondaryFire(CurTime() + 0.4)
|
||||
self:SetNextPrimaryFire(CurTime() + 1)
|
||||
elseif (entity:IsPlayer()) then
|
||||
local direction = self:GetOwner():GetAimVector() * (300 + (self:GetOwner():GetCharacter():GetAttribute("str", 0) * 3))
|
||||
direction.z = 0
|
||||
entity:SetVelocity(direction)
|
||||
|
||||
hook.Run("PlayerPushedPlayer", self:GetOwner(), entity)
|
||||
|
||||
bPushed = true
|
||||
else
|
||||
local physObj = entity:GetPhysicsObject()
|
||||
|
||||
if (IsValid(physObj)) then
|
||||
physObj:SetVelocity(self:GetOwner():GetAimVector() * 180)
|
||||
end
|
||||
|
||||
bPushed = true
|
||||
end
|
||||
|
||||
if (bPushed) then
|
||||
self:SetNextSecondaryFire(CurTime() + 1.5)
|
||||
self:SetNextPrimaryFire(CurTime() + 1.5)
|
||||
self:GetOwner():EmitSound("Weapon_Crossbow.BoltHitBody")
|
||||
|
||||
local model = string.lower(self:GetOwner():GetModel())
|
||||
|
||||
if (ix.anim.GetModelClass(model) == "metrocop") then
|
||||
self:GetOwner():ForceSequence("pushplayer")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
12
gamemodes/ixhl2rp/gamemode/cl_init.lua
Normal file
12
gamemodes/ixhl2rp/gamemode/cl_init.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
DeriveGamemode("helix")
|
||||
13
gamemodes/ixhl2rp/gamemode/init.lua
Normal file
13
gamemodes/ixhl2rp/gamemode/init.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile("cl_init.lua")
|
||||
DeriveGamemode("helix")
|
||||
35
gamemodes/ixhl2rp/glualint.json
Normal file
35
gamemodes/ixhl2rp/glualint.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"lint_maxScopeDepth": 20,
|
||||
"lint_syntaxErrors": true,
|
||||
"lint_syntaxInconsistencies": true,
|
||||
"lint_deprecated": true,
|
||||
"lint_trailingWhitespace": true,
|
||||
"lint_whitespaceStyle": false,
|
||||
"lint_beginnerMistakes": true,
|
||||
"lint_emptyBlocks": true,
|
||||
"lint_shadowing": true,
|
||||
"lint_gotos": true,
|
||||
"lint_doubleNegations": true,
|
||||
"lint_redundantIfStatements": false,
|
||||
"lint_redundantParentheses": true,
|
||||
"lint_duplicateTableKeys": true,
|
||||
"lint_profanity": true,
|
||||
"lint_unusedVars": true,
|
||||
"lint_unusedParameters": false,
|
||||
"lint_unusedLoopVars": false,
|
||||
"lint_inconsistentVariableStyle": false,
|
||||
"lint_ignoreFiles": [],
|
||||
|
||||
"prettyprint_spaceAfterParens": false,
|
||||
"prettyprint_spaceAfterBrackets": false,
|
||||
"prettyprint_spaceAfterBraces": false,
|
||||
"prettyprint_spaceEmptyBrackets": true,
|
||||
"prettyprint_spaceAfterLabel": false,
|
||||
"prettyprint_spaceBeforeComma": false,
|
||||
"prettyprint_spaceAfterComma": true,
|
||||
"prettyprint_semicolons": false,
|
||||
"prettyprint_cStyle": false,
|
||||
"prettyprint_rejectInvalidCode": false,
|
||||
"prettyprint_indentation": " ",
|
||||
"log_format": "auto"
|
||||
}
|
||||
8
gamemodes/ixhl2rp/ixhl2rp.txt
Normal file
8
gamemodes/ixhl2rp/ixhl2rp.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
"ixhl2rp"
|
||||
{
|
||||
"base" "helix"
|
||||
"title" "HL2 RP"
|
||||
"author" "willard.network"
|
||||
"category" "rp"
|
||||
"menusystem" "1"
|
||||
}
|
||||
131
gamemodes/ixhl2rp/plugins/ambient.lua
Normal file
131
gamemodes/ixhl2rp/plugins/ambient.lua
Normal file
@@ -0,0 +1,131 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
PLUGIN.name = "Ambient"
|
||||
PLUGIN.description = "Ambient Sounds"
|
||||
PLUGIN.author = "DrodA"
|
||||
PLUGIN.version = 1.0
|
||||
|
||||
ix.option.Add("enableAmbient", ix.type.bool, true, {
|
||||
category = "Background Music",
|
||||
OnChanged = function(old_value, new_value)
|
||||
if (!new_value) then
|
||||
PLUGIN:StopSound()
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
PLUGIN:PlaySound(PLUGIN.ambients[math.random(1, #PLUGIN.ambients)])
|
||||
end
|
||||
})
|
||||
|
||||
ix.option.Add("ambientVolume", ix.type.number, 0.7, {
|
||||
category = "Background Music",
|
||||
min = 0.1, max = 1, decimals = 1,
|
||||
OnChanged = function(old_value, new_value)
|
||||
PLUGIN:SetVolume(new_value)
|
||||
end
|
||||
})
|
||||
|
||||
ix.lang.AddTable("english", {
|
||||
optAmbientVolume = "Ambient music volume",
|
||||
optdAmbientVolume = "How loud the volume of the ambient music should be.",
|
||||
optEnableAmbient = "Enable ambient music",
|
||||
optdEnableAmbient = "Whether or not the ambient music should be enabled."
|
||||
})
|
||||
|
||||
if (SERVER) then return end
|
||||
|
||||
local timer_id = "ix_ambient_track"
|
||||
|
||||
PLUGIN.ambients = {
|
||||
{path = "music/passive/passivemusic_01.ogg", length = 85},
|
||||
{path = "music/passive/passivemusic_02.ogg", length = 130},
|
||||
{path = "music/passive/passivemusic_03.ogg", length = 95},
|
||||
{path = "music/passive/passivemusic_04.ogg", length = 125},
|
||||
{path = "music/passive/passivemusic_05.ogg", length = 215},
|
||||
{path = "music/passive/passivemusic_06.ogg", length = 210},
|
||||
{path = "music/passive/passivemusic_07.ogg", length = 245},
|
||||
{path = "music/passive/passivemusic_08.ogg", length = 268},
|
||||
{path = "music/passive/passivemusic_09.ogg", length = 150},
|
||||
{path = "music/passive/passivemusic_10.ogg", length = 260},
|
||||
{path = "music/passive/passivemusic_11.ogg", length = 340},
|
||||
{path = "music/passive/passivemusic_12.ogg", length = 260},
|
||||
{path = "music/passive/passivemusic_13.ogg", length = 440},
|
||||
{path = "music/passive/passivemusic_14.ogg", length = 130},
|
||||
{path = "music/passive/passivemusic_15.ogg", length = 130},
|
||||
{path = "music/passive/passivemusic_16.ogg", length = 250},
|
||||
{path = "music/passive/passivemusic_17.ogg", length = 270},
|
||||
{path = "music/passive/passivemusic_18.ogg", length = 320},
|
||||
{path = "music/passive/passivemusic_19.ogg", length = 100},
|
||||
{path = "music/passive/passivemusic_20.ogg", length = 210}
|
||||
}
|
||||
|
||||
for _, v in pairs(PLUGIN.ambients) do
|
||||
util.PrecacheSound(v.path)
|
||||
end
|
||||
|
||||
function PLUGIN:StopSound()
|
||||
if (timer.Exists(timer_id)) then
|
||||
timer.Remove(timer_id)
|
||||
end
|
||||
|
||||
if (self.ambient) then
|
||||
self.ambient:Stop()
|
||||
self.ambient = nil
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:SetVolume(volume)
|
||||
if !self.ambient then return end
|
||||
|
||||
self.ambient:ChangeVolume(volume)
|
||||
end
|
||||
|
||||
function PLUGIN:PlaySound(data)
|
||||
if (!ix.option.Get("enableAmbient")) then
|
||||
self:StopSound()
|
||||
return
|
||||
end
|
||||
|
||||
if (timer.Exists(timer_id)) then
|
||||
self:StopSound()
|
||||
end
|
||||
|
||||
self.ambient = CreateSound(LocalPlayer(), data.path)
|
||||
self.ambient:Play()
|
||||
self.ambient:ChangeVolume(ix.option.Get("ambientVolume"), 0)
|
||||
|
||||
timer.Create(timer_id, data.length, 1, function()
|
||||
PLUGIN:StopSound()
|
||||
|
||||
timer.Simple(math.random(30, 60), function()
|
||||
PLUGIN:PlaySound(PLUGIN.ambients[math.random(1, #PLUGIN.ambients)])
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function PLUGIN:CharacterLoaded(character)
|
||||
if (!timer.Exists(timer_id) and ix.option.Get("enableAmbient")) then
|
||||
self:PlaySound(PLUGIN.ambients[math.random(1, #PLUGIN.ambients)])
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:PostPlaySound(sound, isGlobal)
|
||||
if (isGlobal) then
|
||||
self:StopSound()
|
||||
|
||||
timer.Simple(SoundDuration(sound) + math.random(30, 60), function()
|
||||
PLUGIN:PlaySound(PLUGIN.ambients[math.random(1, #PLUGIN.ambients)])
|
||||
end)
|
||||
end
|
||||
end
|
||||
43
gamemodes/ixhl2rp/plugins/ammolimit.lua
Normal file
43
gamemodes/ixhl2rp/plugins/ammolimit.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
PLUGIN.name = "Ammo Limit"
|
||||
PLUGIN.author = "Gr4Ss"
|
||||
PLUGIN.description = "Limit how much ammo can be loaded from ammo boxes."
|
||||
|
||||
ix.lang.AddTable("english", {
|
||||
ammoLimitReached = "You have reached the equipped ammo limit!"
|
||||
})
|
||||
|
||||
ix.config.Add("ammoBoxLimit", 4, "The maximum amount of ammo boxes someone is allowed to equip", nil, {
|
||||
data = {min = 0, max = 10, decimals = 1},
|
||||
category = "Other"
|
||||
})
|
||||
|
||||
function PLUGIN:CanPlayerInteractItem(client, action, item, data)
|
||||
if (isentity(item)) then
|
||||
if (IsValid(item)) then
|
||||
item = ix.item.instances[item.ixItemID]
|
||||
else
|
||||
return
|
||||
end
|
||||
elseif (isnumber(item)) then
|
||||
item = ix.item.instances[item]
|
||||
end
|
||||
|
||||
if (!item) then return end
|
||||
if (action == "use" and item.ammo and item.ammoAmount and client:GetAmmoCount(item.ammo) >= item.ammoAmount * ix.config.Get("ammoBoxLimit")) then
|
||||
client:NotifyLocalized("ammoLimitReached")
|
||||
return false
|
||||
end
|
||||
end
|
||||
55
gamemodes/ixhl2rp/plugins/anoncombine/cl_hooks.lua
Normal file
55
gamemodes/ixhl2rp/plugins/anoncombine/cl_hooks.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
local chatTypeWhitelist = {
|
||||
["scoreboard"] = true,
|
||||
["radio"] = true
|
||||
}
|
||||
|
||||
function PLUGIN:GetHookCallPriority(hook)
|
||||
if (hook == "GetCharacterName" or hook == "PopulateCharacterInfo") then
|
||||
return 1500
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:GetCharacterName(client, chatType)
|
||||
if (!IsValid(client)) then return end
|
||||
if (LocalPlayer():IsCombine() or chatTypeWhitelist[chatType]) then return end
|
||||
|
||||
if (LocalPlayer():GetMoveType() == MOVETYPE_NOCLIP and !LocalPlayer():InVehicle()) then return end
|
||||
if (ix.faction.Get(LocalPlayer():Team()).recogniseAll) then return end
|
||||
|
||||
if (client:Team() == FACTION_OTA) then
|
||||
return client:GetCharacter():GetClass() == CLASS_EOW and "Elite Overwatch Soldier" or "Transhuman Arm Soldier"
|
||||
elseif (client:GetNetVar("combineMaskEquipped")) then
|
||||
return "Civil Protection Unit"
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:PopulateCharacterInfo(client, character, container)
|
||||
if (LocalPlayer():IsCombine() or !client:GetNetVar("combineMaskEquipped") and client:Team() != FACTION_OTA) then return end
|
||||
|
||||
timer.Simple(0.1, function()
|
||||
local description = container:GetRow("description")
|
||||
|
||||
if (IsValid(description)) then
|
||||
description:Remove()
|
||||
end
|
||||
|
||||
local geneticDesc = container:GetRow("geneticDesc")
|
||||
|
||||
if (IsValid(geneticDesc)) then
|
||||
local height = character:GetHeight()
|
||||
|
||||
geneticDesc:SetText(height .. " TALL")
|
||||
end
|
||||
end)
|
||||
end
|
||||
16
gamemodes/ixhl2rp/plugins/anoncombine/sh_plugin.lua
Normal file
16
gamemodes/ixhl2rp/plugins/anoncombine/sh_plugin.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
PLUGIN.name = "Anonymous Combine"
|
||||
PLUGIN.author = "Aspect™"
|
||||
PLUGIN.description = "Makes the Combine more anonymous."
|
||||
|
||||
ix.util.Include("cl_hooks.lua")
|
||||
54
gamemodes/ixhl2rp/plugins/arcademachines/cl_plugin.lua
Normal file
54
gamemodes/ixhl2rp/plugins/arcademachines/cl_plugin.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
surface.CreateFont( "arcade_font20", {
|
||||
font = "Calibri",
|
||||
size = 20,
|
||||
weight = 100
|
||||
})
|
||||
surface.CreateFont( "arcade_font25", {
|
||||
font = "Calibri",
|
||||
size = 25,
|
||||
weight = 100
|
||||
})
|
||||
surface.CreateFont( "arcade_font30", {
|
||||
font = "Calibri",
|
||||
size = 30,
|
||||
weight = 100
|
||||
})
|
||||
surface.CreateFont( "arcade_font60", {
|
||||
font = "Calibri",
|
||||
size = 60,
|
||||
weight = 100
|
||||
})
|
||||
surface.CreateFont( "arcade_font80", {
|
||||
font = "Calibri",
|
||||
size = 80,
|
||||
weight = 100
|
||||
})
|
||||
surface.CreateFont( "arcade_font120", {
|
||||
font = "Calibri",
|
||||
size = 120,
|
||||
weight = 100
|
||||
})
|
||||
|
||||
net.Receive("arcade_adjust_timer", function()
|
||||
local timers = {
|
||||
"PacMan_CloseTime",
|
||||
"PONG_CloseTime",
|
||||
"Space_CloseTime"
|
||||
}
|
||||
|
||||
for k, v in pairs(timers) do
|
||||
if (timer.Exists(v)) then
|
||||
timer.Adjust(v, (ix.config.Get("arcadeTime")) + timer.TimeLeft(v), 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
123
gamemodes/ixhl2rp/plugins/arcademachines/derma/cl_pacman.lua
Normal file
123
gamemodes/ixhl2rp/plugins/arcademachines/derma/cl_pacman.lua
Normal file
@@ -0,0 +1,123 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
net.Receive("arcade_request_pacman", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(300, 125)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, h, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
draw.SimpleText("Play PACMAN for "..ix.config.Get("arcadePrice").." Credit?", "arcade_font30", w/2, h/4, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local accept = vgui.Create("DButton", frame)
|
||||
accept:SetPos(5, 50)
|
||||
accept:SetSize(140,70)
|
||||
accept:SetText("")
|
||||
accept.DoClick = function()
|
||||
frame:Close()
|
||||
net.Start("arcade_accept_pacman")
|
||||
net.SendToServer()
|
||||
end
|
||||
accept.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,100,0))
|
||||
draw.SimpleText("Insert Credit", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local deny = vgui.Create("DButton", frame)
|
||||
deny:SetPos(155, 50)
|
||||
deny:SetSize(140,70)
|
||||
deny:SetText("")
|
||||
deny.DoClick = function()
|
||||
frame:Close()
|
||||
end
|
||||
deny.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(100,0,0))
|
||||
draw.SimpleText("Nevermind", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
net.Receive("arcade_open_pacman", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(ScrH()*0.95, ScrH()*0.95+25)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
timer.Create("PacMan_CloseTime", (ix.config.Get("arcadeTime")*ix.config.Get("arcadePrice")), 1, function() frame:Close() end)
|
||||
end
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, 50, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
|
||||
-- draw.RoundedBox(0, 0, 0, w, 65, Color(200,200,200))
|
||||
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local timeleft = string.FormattedTime(timer.TimeLeft("PacMan_CloseTime"))
|
||||
local extranum
|
||||
if timeleft.s < 10 then
|
||||
extranum = 0
|
||||
else
|
||||
extranum = ""
|
||||
end
|
||||
draw.SimpleText("Time Left: "..timeleft.m..":"..extranum..timeleft.s, "arcade_font30", 5, 17, Color(255,255,255))
|
||||
end
|
||||
end
|
||||
|
||||
Schema:AllowMessage(frame)
|
||||
|
||||
local close = vgui.Create("DButton", frame)
|
||||
close:SetPos(frame:GetWide()-50, 20)
|
||||
close:SetSize(50,25)
|
||||
close:SetText("Close")
|
||||
close.DoClick = function()
|
||||
frame:Close()
|
||||
timer.Remove("PacMan_CloseTime")
|
||||
end
|
||||
close.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(200,0,0))
|
||||
end
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local moretime = vgui.Create("DButton", frame)
|
||||
moretime:SetPos(frame:GetWide()-200, 20)
|
||||
moretime:SetSize(150,25)
|
||||
moretime:SetText("Insert another coin?")
|
||||
moretime.DoClick = function()
|
||||
net.Start("arcade_moretime_credit")
|
||||
net.SendToServer()
|
||||
end
|
||||
moretime.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,155,155))
|
||||
end
|
||||
end
|
||||
|
||||
local webshell = vgui.Create("DPanel", frame)
|
||||
webshell:SetSize(frame:GetWide(), frame:GetTall()-60)
|
||||
webshell:SetPos(0,60)
|
||||
|
||||
local web = vgui.Create("HTML", webshell)
|
||||
web:Dock( FILL )
|
||||
web:OpenURL(ix.config.Get("arcadePacManWebsite"))
|
||||
end)
|
||||
122
gamemodes/ixhl2rp/plugins/arcademachines/derma/cl_pong.lua
Normal file
122
gamemodes/ixhl2rp/plugins/arcademachines/derma/cl_pong.lua
Normal file
@@ -0,0 +1,122 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
net.Receive("arcade_request_pong", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(300, 125)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, h, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
draw.SimpleText("Play PONG for "..ix.config.Get("arcadePrice").." Credit?", "arcade_font30", w/2, h/4, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local accept = vgui.Create("DButton", frame)
|
||||
accept:SetPos(5, 50)
|
||||
accept:SetSize(140,70)
|
||||
accept:SetText("")
|
||||
accept.DoClick = function()
|
||||
frame:Close()
|
||||
net.Start("arcade_accept_pong")
|
||||
net.SendToServer()
|
||||
end
|
||||
accept.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,100,0))
|
||||
draw.SimpleText("Insert Credit", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local deny = vgui.Create("DButton", frame)
|
||||
deny:SetPos(155, 50)
|
||||
deny:SetSize(140,70)
|
||||
deny:SetText("")
|
||||
deny.DoClick = function()
|
||||
frame:Close()
|
||||
end
|
||||
deny.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(100,0,0))
|
||||
draw.SimpleText("Nevermind", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
net.Receive("arcade_open_pong", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(ScrH()*0.95, ScrH()*0.7+25)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
timer.Create("PONG_CloseTime", (ix.config.Get("arcadeTime")*ix.config.Get("arcadePrice")), 1, function() frame:Close() end)
|
||||
end
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, 50, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
|
||||
-- draw.RoundedBox(0, 0, 0, w, 65, Color(200,200,200))
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local timeleft = string.FormattedTime(timer.TimeLeft("PONG_CloseTime"))
|
||||
local extranum
|
||||
if timeleft.s < 10 then
|
||||
extranum = 0
|
||||
else
|
||||
extranum = ""
|
||||
end
|
||||
draw.SimpleText("Time Left: "..timeleft.m..":"..extranum..timeleft.s, "arcade_font30", 5, 17, Color(255,255,255))
|
||||
end
|
||||
end
|
||||
|
||||
Schema:AllowMessage(frame)
|
||||
|
||||
local close = vgui.Create("DButton", frame)
|
||||
close:SetPos(frame:GetWide()-50, 20)
|
||||
close:SetSize(50,25)
|
||||
close:SetText("Close")
|
||||
close.DoClick = function()
|
||||
frame:Close()
|
||||
timer.Remove("PONG_CloseTime")
|
||||
end
|
||||
close.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(200,0,0))
|
||||
end
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local moretime = vgui.Create("DButton", frame)
|
||||
moretime:SetPos(frame:GetWide()-200, 20)
|
||||
moretime:SetSize(150,25)
|
||||
moretime:SetText("Insert another coin?")
|
||||
moretime.DoClick = function()
|
||||
net.Start("arcade_moretime_credit")
|
||||
net.SendToServer()
|
||||
end
|
||||
moretime.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,155,155))
|
||||
end
|
||||
end
|
||||
|
||||
local webshell = vgui.Create("DPanel", frame)
|
||||
webshell:SetSize(frame:GetWide(), frame:GetTall()-60)
|
||||
webshell:SetPos(0,60)
|
||||
|
||||
local web = vgui.Create("HTML", webshell)
|
||||
web:Dock( FILL )
|
||||
web:OpenURL(ix.config.Get("arcadePongWebsite"))
|
||||
end)
|
||||
@@ -0,0 +1,122 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
net.Receive("arcade_request_space", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(300, 125)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, h, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
draw.SimpleText("Play Space Invaders for "..ix.config.Get("arcadePrice").." Credit?", "arcade_font25", w/2, h/4, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local accept = vgui.Create("DButton", frame)
|
||||
accept:SetPos(5, 50)
|
||||
accept:SetSize(140,70)
|
||||
accept:SetText("")
|
||||
accept.DoClick = function()
|
||||
frame:Close()
|
||||
net.Start("arcade_accept_space")
|
||||
net.SendToServer()
|
||||
end
|
||||
accept.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,100,0))
|
||||
draw.SimpleText("Insert Credit", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
local deny = vgui.Create("DButton", frame)
|
||||
deny:SetPos(155, 50)
|
||||
deny:SetSize(140,70)
|
||||
deny:SetText("")
|
||||
deny.DoClick = function()
|
||||
frame:Close()
|
||||
end
|
||||
deny.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(100,0,0))
|
||||
draw.SimpleText("Nevermind", "arcade_font30", w/2, h/2, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
net.Receive("arcade_open_space", function()
|
||||
|
||||
local frame = vgui.Create("DFrame")
|
||||
frame:SetSize(ScrH()*0.95, ScrH()*0.95+25)
|
||||
frame:Center()
|
||||
frame:MakePopup()
|
||||
frame:SetDraggable(false)
|
||||
frame:SetTitle("")
|
||||
frame:ShowCloseButton(false)
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
timer.Create("Space_CloseTime", (ix.config.Get("arcadeTime")*ix.config.Get("arcadePrice")), 1, function() frame:Close() end)
|
||||
end
|
||||
frame.Paint = function(self, w, h)
|
||||
Derma_DrawBackgroundBlur(frame, 4)
|
||||
draw.RoundedBox(0, 0, 0, w, 50, Color(0,0,0,100))
|
||||
draw.RoundedBox(0, 0, 0, w, 15, Color(25,25,25,255))
|
||||
|
||||
-- draw.RoundedBox(0, 0, 0, w, 65, Color(200,200,200))
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local timeleft = string.FormattedTime(timer.TimeLeft("Space_CloseTime"))
|
||||
local extranum
|
||||
if timeleft.s < 10 then
|
||||
extranum = 0
|
||||
else
|
||||
extranum = ""
|
||||
end
|
||||
draw.SimpleText("Time Left: "..timeleft.m..":"..extranum..timeleft.s, "arcade_font30", 5, 17, Color(255,255,255))
|
||||
end
|
||||
end
|
||||
|
||||
Schema:AllowMessage(frame)
|
||||
|
||||
local close = vgui.Create("DButton", frame)
|
||||
close:SetPos(frame:GetWide()-50, 20)
|
||||
close:SetSize(50,25)
|
||||
close:SetText("Close")
|
||||
close.DoClick = function()
|
||||
frame:Close()
|
||||
timer.Remove("Space_CloseTime")
|
||||
end
|
||||
close.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(200,0,0))
|
||||
end
|
||||
|
||||
if !ix.config.Get("arcadeDisableTokenSystem") then
|
||||
local moretime = vgui.Create("DButton", frame)
|
||||
moretime:SetPos(frame:GetWide()-200, 20)
|
||||
moretime:SetSize(150,25)
|
||||
moretime:SetText("Insert another coin?")
|
||||
moretime.DoClick = function()
|
||||
net.Start("arcade_moretime_credit")
|
||||
net.SendToServer()
|
||||
end
|
||||
moretime.Paint = function(self, w, h)
|
||||
draw.RoundedBox(0,0,0,w,h,Color(0,155,155))
|
||||
end
|
||||
end
|
||||
|
||||
local webshell = vgui.Create("DPanel", frame)
|
||||
webshell:SetSize(frame:GetWide(), frame:GetTall()-60)
|
||||
webshell:SetPos(0,60)
|
||||
|
||||
local web = vgui.Create("HTML", webshell)
|
||||
web:Dock( FILL )
|
||||
web:OpenURL(ix.config.Get("arcadeSpaceWebsite"))
|
||||
end)
|
||||
@@ -0,0 +1,102 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
include("shared.lua")
|
||||
|
||||
local DrawCircle
|
||||
|
||||
DrawCircle = function( x, y, radius, seg )
|
||||
local cir = {}
|
||||
|
||||
table.insert( cir, { x = x, y = y, u = 0.5, v = 0.5 } )
|
||||
for i = 0, seg do
|
||||
local a = math.rad( ( i / seg ) * -360 )
|
||||
table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
|
||||
end
|
||||
|
||||
local a = math.rad( 0 ) -- This is needed for non absolute segment counts
|
||||
table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
|
||||
|
||||
surface.DrawPoly( cir )
|
||||
end
|
||||
|
||||
local mat = {}
|
||||
mat[0] = Material("displays/pacman_open.png")
|
||||
mat[1] = Material("displays/pacman_closed.png")
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if LocalPlayer():GetPos():Distance( self:GetPos() ) > 500 then return end
|
||||
-- Basic setups
|
||||
local Pos = self:GetPos()
|
||||
local Ang = self:GetAngles()
|
||||
|
||||
|
||||
Ang:RotateAroundAxis(Ang:Up(), -90)
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 76)
|
||||
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*10, Ang, 0.05)
|
||||
-- draw.RoundedBox(0, -120, -250, 170, 110, Color(70, 70, 70))
|
||||
draw.SimpleText("PACMAN", "arcade_font120", -0, -450, HSVToColor(CurTime()*6*5%360,1,1), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
if ((CurTime()*4)%4) > 2 then
|
||||
draw.SimpleText("Insert "..ix.config.Get("arcadePrice").." Credit", "arcade_font60", -0, -360, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
draw.SimpleText("to play!", "arcade_font60", -0, -320, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
surface.SetDrawColor( 255, 255, 255, 255 )
|
||||
draw.NoTexture()
|
||||
if ((CurTime()*80)%494) < 160 then
|
||||
DrawCircle(100, -220, 10, 20)
|
||||
end
|
||||
if ((CurTime()*80)%494) < 260 then
|
||||
DrawCircle(0, -220, 10, 20)
|
||||
end
|
||||
if ((CurTime()*80)%494) < 360 then
|
||||
DrawCircle(-100, -220, 10, 20)
|
||||
end
|
||||
|
||||
surface.SetDrawColor( Color(255,255,255) )
|
||||
surface.SetMaterial( mat[math.Round(CurTime()*4)%2] )
|
||||
surface.DrawTexturedRectUV( 216-((CurTime()*80)%494), -250, 64, 64, 0, 0, 1, 1 )
|
||||
|
||||
-- Off screen Right = 216
|
||||
-- Off screen Left = -278
|
||||
-- Speed = 216-((CurTime()*30)%494)
|
||||
|
||||
--print(CurTime()%1)
|
||||
--print(216-(CurTime()%494))
|
||||
cam.End3D2D()
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 14)
|
||||
|
||||
local tr = LocalPlayer():GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
local HeighlightColor = HSVToColor(CurTime()*6*5%360,1,1)
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*22.4, Ang, 0.05)
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, HeighlightColor)
|
||||
else
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, Color(0, 0, 0, 240))
|
||||
end
|
||||
draw.RoundedBox(0, -195, 45, 30, 90, Color(40, 40, 40, 255))
|
||||
draw.SimpleText("|", "arcade_font60", -180, 85, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
cam.End3D2D()
|
||||
|
||||
end
|
||||
|
||||
/*
|
||||
|
||||
-22.174904 9.953964 -2.079835
|
||||
|
||||
-22.252708 8.003653 -6.987538
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,53 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
AddCSLuaFile("cl_init.lua")
|
||||
AddCSLuaFile("shared.lua")
|
||||
include("shared.lua")
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/freeman/arcade_pacman.mdl")
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetMoveType(MOVETYPE_VPHYSICS)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
local phys = self:GetPhysicsObject()
|
||||
phys:Wake()
|
||||
end
|
||||
|
||||
function ENT:Use(ply)
|
||||
|
||||
local tr = ply:GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
if ix.config.Get("arcadeDisableTokenSystem") then
|
||||
net.Start("arcade_open_pacman")
|
||||
net.Send(ply)
|
||||
else
|
||||
net.Start("arcade_request_pacman")
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("arcade_accept_pacman", function(_, client)
|
||||
PLUGIN:PayArcade(client, function()
|
||||
timer.Simple(1.5, function()
|
||||
net.Start("arcade_open_pacman")
|
||||
net.Send(client)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_gmodentity"
|
||||
ENT.PrintName = "Pacman"
|
||||
ENT.Author = "Owain Owjo"
|
||||
ENT.Category = "Arcade Machines"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminSpawnable = true
|
||||
@@ -0,0 +1,77 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
include("shared.lua")
|
||||
|
||||
local DrawCircle
|
||||
|
||||
DrawCircle = function( x, y, radius, seg )
|
||||
local cir = {}
|
||||
|
||||
table.insert( cir, { x = x, y = y, u = 0.5, v = 0.5 } )
|
||||
for i = 0, seg do
|
||||
local a = math.rad( ( i / seg ) * -360 )
|
||||
table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
|
||||
end
|
||||
|
||||
local a = math.rad( 0 ) -- This is needed for non absolute segment counts
|
||||
table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius, u = math.sin( a ) / 2 + 0.5, v = math.cos( a ) / 2 + 0.5 } )
|
||||
|
||||
surface.DrawPoly( cir )
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if LocalPlayer():GetPos():Distance( self:GetPos() ) > 500 then return end
|
||||
-- Basic setups
|
||||
local Pos = self:GetPos()
|
||||
local Ang = self:GetAngles()
|
||||
|
||||
|
||||
Ang:RotateAroundAxis(Ang:Up(), -90)
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 76)
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*10, Ang, 0.05)
|
||||
-- draw.RoundedBox(0, -120, -250, 170, 110, Color(70, 70, 70))
|
||||
draw.SimpleText("PONG", "arcade_font80", -0, -450, HSVToColor(CurTime()*6*5%360,1,1), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
if ((CurTime()*4)%4) > 2 then
|
||||
draw.SimpleText("Insert "..ix.config.Get("arcadePrice").." Credit", "arcade_font60", -0, -360, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
draw.SimpleText("to play!", "arcade_font60", -0, -320, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
surface.SetDrawColor( 255, 255, 255, 255 )
|
||||
draw.NoTexture()
|
||||
if ((CurTime()*40)%494) > 247 then
|
||||
DrawCircle(216-(CurTime()*80)%494, -220, 10, 20)
|
||||
else
|
||||
DrawCircle(-216+(CurTime()*80)%494, -220, 10, 20)
|
||||
end
|
||||
|
||||
draw.RoundedBox(0, -215, -260, 10, 70, Color(255,255,255))
|
||||
draw.RoundedBox(0, 205, -260, 10, 70, Color(255,255,255))
|
||||
|
||||
cam.End3D2D()
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 14)
|
||||
|
||||
local tr = LocalPlayer():GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
local HeighlightColor = HSVToColor(CurTime()*6*5%360,1,1)
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*22.4, Ang, 0.05)
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, HeighlightColor)
|
||||
else
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, Color(0, 0, 0, 240))
|
||||
end
|
||||
draw.RoundedBox(0, -195, 45, 30, 90, Color(40, 40, 40, 255))
|
||||
draw.SimpleText("|", "arcade_font60", -180, 85, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
cam.End3D2D()
|
||||
end
|
||||
@@ -0,0 +1,53 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
AddCSLuaFile("cl_init.lua")
|
||||
AddCSLuaFile("shared.lua")
|
||||
include("shared.lua")
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/freeman/arcade_pong.mdl")
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetMoveType(MOVETYPE_VPHYSICS)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
local phys = self:GetPhysicsObject()
|
||||
phys:Wake()
|
||||
end
|
||||
|
||||
function ENT:Use(ply)
|
||||
|
||||
local tr = ply:GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
if ix.config.Get("arcadeDisableTokenSystem") then
|
||||
net.Start("arcade_open_pong")
|
||||
net.Send(ply)
|
||||
else
|
||||
net.Start("arcade_request_pong")
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("arcade_accept_pong", function(_, client)
|
||||
PLUGIN:PayArcade(client, function()
|
||||
timer.Simple(1.5, function()
|
||||
net.Start("arcade_open_pong")
|
||||
net.Send(client)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_gmodentity"
|
||||
ENT.PrintName = "Pong"
|
||||
ENT.Author = "Owain Owjo"
|
||||
ENT.Category = "Arcade Machines"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminSpawnable = true
|
||||
@@ -0,0 +1,75 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
include("shared.lua")
|
||||
|
||||
local DrawShip
|
||||
|
||||
DrawShip = function()
|
||||
draw.RoundedBox(0, 216-((CurTime()*80)%494)+0, -200, 60, 20, Color(55,255,55))
|
||||
draw.RoundedBox(0, 216-((CurTime()*80)%494)+5, -205, 50, 5, Color(55,255,55))
|
||||
draw.RoundedBox(0, 216-((CurTime()*80)%494)+20, -215, 20, 10, Color(55,255,55))
|
||||
end
|
||||
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
|
||||
if LocalPlayer():GetPos():Distance( self:GetPos() ) > 500 then return end
|
||||
-- Basic setups
|
||||
local Pos = self:GetPos()
|
||||
local Ang = self:GetAngles()
|
||||
|
||||
|
||||
Ang:RotateAroundAxis(Ang:Up(), -90)
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 76)
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*10, Ang, 0.05)
|
||||
-- draw.RoundedBox(0, -120, -250, 170, 110, Color(70, 70, 70))
|
||||
draw.SimpleText("Space Invaders", "arcade_font80", -0, -450, HSVToColor(CurTime()*6*5%360,1,1), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
if ((CurTime()*4)%4) > 2 then
|
||||
draw.SimpleText("Insert "..ix.config.Get("arcadePrice").." Credit", "arcade_font60", -0, -360, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
draw.SimpleText("to play!", "arcade_font60", -0, -320, Color(55,210,55), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
|
||||
if ((CurTime()*80)%494) > 140 and ((CurTime()*80)%494) < 300 then
|
||||
draw.RoundedBox(0, 100, -210-((CurTime()*80)%494)/10, 10, 10, Color(55,255,55))
|
||||
end
|
||||
if ((CurTime()*80)%494) > 240 and ((CurTime()*80)%494) < 420 then
|
||||
draw.RoundedBox(0, 0, -200-((CurTime()*80)%494)/10, 10, 10, Color(55,255,55))
|
||||
end
|
||||
if ((CurTime()*80)%494) > 340 and ((CurTime()*80)%494) < 580 then
|
||||
draw.RoundedBox(0, -100, -190-((CurTime()*80)%494)/10, 10, 10, Color(55,255,55))
|
||||
end
|
||||
|
||||
DrawShip()
|
||||
|
||||
|
||||
-- Movement = 216-((CurTime()*60)%494)
|
||||
-- Off screen Right = 216
|
||||
-- Off screen Left = -278
|
||||
|
||||
cam.End3D2D()
|
||||
Ang:RotateAroundAxis(Ang:Forward(), 14)
|
||||
|
||||
local tr = LocalPlayer():GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
local HeighlightColor = HSVToColor(CurTime()*6*5%360,1,1)
|
||||
|
||||
cam.Start3D2D(Pos + Ang:Up()*22.4, Ang, 0.05)
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, HeighlightColor)
|
||||
else
|
||||
draw.RoundedBox(0, -200, 40, 40, 100, Color(0, 0, 0, 240))
|
||||
end
|
||||
draw.RoundedBox(0, -195, 45, 30, 90, Color(40, 40, 40, 255))
|
||||
draw.SimpleText("|", "arcade_font60", -180, 85, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
cam.End3D2D()
|
||||
end
|
||||
@@ -0,0 +1,53 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
AddCSLuaFile("cl_init.lua")
|
||||
AddCSLuaFile("shared.lua")
|
||||
include("shared.lua")
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/freeman/arcade_invaders.mdl")
|
||||
self:SetUseType(SIMPLE_USE)
|
||||
self:PhysicsInit(SOLID_VPHYSICS)
|
||||
self:SetMoveType(MOVETYPE_VPHYSICS)
|
||||
self:SetSolid(SOLID_VPHYSICS)
|
||||
local phys = self:GetPhysicsObject()
|
||||
phys:Wake()
|
||||
end
|
||||
|
||||
function ENT:Use(ply)
|
||||
|
||||
local tr = ply:GetEyeTrace().HitPos
|
||||
local pos = self:WorldToLocal(tr)
|
||||
|
||||
if pos.x < -22.174904 and pos.x > -23.252708 and pos.y < 9.953964 and pos.y > 8.003653 and pos.z < -2.079835 and pos.z > -6.987538 then
|
||||
if ix.config.Get("arcadeDisableTokenSystem") then
|
||||
net.Start("arcade_open_space")
|
||||
net.Send(ply)
|
||||
else
|
||||
net.Start("arcade_request_space")
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("arcade_accept_space", function(_, client)
|
||||
PLUGIN:PayArcade(client, function()
|
||||
timer.Simple(1.5, function()
|
||||
net.Start("arcade_open_space")
|
||||
net.Send(client)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_gmodentity"
|
||||
ENT.PrintName = "Space Invaders"
|
||||
ENT.Author = "Owain Owjo"
|
||||
ENT.Category = "Arcade Machines"
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminSpawnable = true
|
||||
44
gamemodes/ixhl2rp/plugins/arcademachines/sh_plugin.lua
Normal file
44
gamemodes/ixhl2rp/plugins/arcademachines/sh_plugin.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
PLUGIN.name = "Arcade Machines"
|
||||
PLUGIN.author = "The Dream Team, AleXXX_007 (Integration to IX)"
|
||||
PLUGIN.description = "Adds 3 arcade machines"
|
||||
|
||||
ix.config.Add("arcadeDisableTokenSystem", false, "Simply set this to true and all games are free", nil, {
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.config.Add("arcadePacManWebsite", "http://0wain.xyz/pacman/", "The website source. I suggest leaving it as is if you don't really understand this", nil, {
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.config.Add("arcadePongWebsite", "http://kanocomputing.github.io/Pong.js/examples/player-vs-bot.html", "The website source. I suggest leaving it as is if you don't really understand this", nil, {
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.config.Add("arcadeSpaceWebsite", "http://funhtml5games.com/spaceinvaders/index.html", "The website source. I suggest leaving it as is if you don't really understand this", nil, {
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.config.Add("arcadePrice", 1, "The price to play arcade game", nil, {
|
||||
data = {min = 1, max = 1000},
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.config.Add("arcadeTime", 300, "How long it is possible to play for 1 payment (SECONDS)", nil, {
|
||||
data = {min = 60, max = 3600},
|
||||
category = "Arcade Machines"
|
||||
})
|
||||
|
||||
ix.util.Include("cl_plugin.lua")
|
||||
ix.util.Include("sv_plugin.lua")
|
||||
75
gamemodes/ixhl2rp/plugins/arcademachines/sv_plugin.lua
Normal file
75
gamemodes/ixhl2rp/plugins/arcademachines/sv_plugin.lua
Normal file
@@ -0,0 +1,75 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
util.AddNetworkString("arcade_msg")
|
||||
|
||||
util.AddNetworkString("arcade_moretime_credit")
|
||||
util.AddNetworkString("arcade_adjust_timer")
|
||||
|
||||
util.AddNetworkString("arcade_request_pacman")
|
||||
util.AddNetworkString("arcade_accept_pacman")
|
||||
util.AddNetworkString("arcade_open_pacman")
|
||||
|
||||
util.AddNetworkString("arcade_request_space")
|
||||
util.AddNetworkString("arcade_accept_space")
|
||||
util.AddNetworkString("arcade_open_space")
|
||||
|
||||
util.AddNetworkString("arcade_request_pong")
|
||||
util.AddNetworkString("arcade_accept_pong")
|
||||
util.AddNetworkString("arcade_open_pong")
|
||||
|
||||
net.Receive("arcade_moretime_credit", function(_, client)
|
||||
PLUGIN:PayArcade(client, function()
|
||||
net.Start("arcade_adjust_timer")
|
||||
net.Send(client)
|
||||
end)
|
||||
end)
|
||||
|
||||
function PLUGIN:PayArcade(client, callback)
|
||||
local price = ix.config.Get("arcadePrice")
|
||||
|
||||
client:SelectCIDCard(function(cardItem)
|
||||
if (cardItem) then
|
||||
if (cardItem:GetData("active")) then
|
||||
if (cardItem:HasCredits(price)) then
|
||||
cardItem:TakeCredits(price, "Arcade machine", "Arcade Game cost")
|
||||
ix.city.main:AddCredits(price)
|
||||
|
||||
client:Notify("You paid " .. price .. " credit(s) to the arcade machine.")
|
||||
|
||||
callback()
|
||||
|
||||
client:EmitSound("buttons/lever8.wav", 65)
|
||||
else
|
||||
client:Notify("The arcade machines emits a mocking error sound. \"Insufficient funds.\"")
|
||||
end
|
||||
else
|
||||
ix.combineNotify:AddImportantNotification("WRN:// Inactive Identification Card #" .. cardItem:GetData("cid", 00000) .. " usage attempt detected", nil, client, client:GetPos())
|
||||
client:Notify("The arcade machine emits a mocking error sound. \"Unable to read CID card data.\"")
|
||||
end
|
||||
|
||||
cardItem:LoadOwnerGenericData(function(idCard, genericData)
|
||||
local isBOL = genericData.bol
|
||||
local isAC = genericData.anticitizen
|
||||
if (isBOL or isAC) then
|
||||
local text = isBOL and "BOL Suspect" or "Anti-Citizen"
|
||||
|
||||
ix.combineNotify:AddImportantNotification("WRN:// " .. text .. " Identification Card activity detected", nil, client, client:GetPos())
|
||||
end
|
||||
end)
|
||||
else
|
||||
client:Notify("The arcade machine emits a mocking error sound. \"Unable to read CID card data.\"")
|
||||
end
|
||||
end, function()
|
||||
client:Notify("The arcade machine stands idle, the CID card reader light blinking. It is waiting for a CID card.")
|
||||
end)
|
||||
end
|
||||
61
gamemodes/ixhl2rp/plugins/arccwbase/cl_plugin.lua
Normal file
61
gamemodes/ixhl2rp/plugins/arccwbase/cl_plugin.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
-- ArcCW.Sway
|
||||
function PLUGIN:CreateMove(userCmd)
|
||||
local client = LocalPlayer()
|
||||
local weapon = client:GetActiveWeapon()
|
||||
|
||||
if !weapon.ArcCW then return end
|
||||
|
||||
local angles = userCmd:GetViewAngles()
|
||||
|
||||
if (weapon:GetState() == ArcCW.STATE_SIGHTS and !weapon.NoSway) then
|
||||
local sway = weapon:GetBuff("Sway")
|
||||
sway = sway != 0 and sway or self.swayDefault
|
||||
-- sway = sway * math.Clamp(1 / (weapon:GetActiveSights().ScopeMagnification or 1), 0.1, 1)
|
||||
|
||||
if (sway == 0) then
|
||||
return
|
||||
end
|
||||
|
||||
local character = client:GetCharacter()
|
||||
local skillLevel = character:GetSkillLevel("guns")
|
||||
local minSkillLevel, maxSkillLevel = ix.weapons:GetWeaponSkillRequired(weapon:GetClass())
|
||||
|
||||
if (skillLevel < minSkillLevel) then
|
||||
sway = sway + (sway * self.swayMaxIncrease) * (1 - skillLevel / minSkillLevel)
|
||||
else
|
||||
skillLevel = math.min(skillLevel, maxSkillLevel)
|
||||
sway = sway - (sway * self.swayMaxDecrease) * ((skillLevel - minSkillLevel) / (maxSkillLevel - minSkillLevel))
|
||||
end
|
||||
|
||||
if weapon:InBipod() then
|
||||
sway = sway * (weapon.BipodDispersion * weapon:GetBuff_Mult("Mult_BipodDispersion"))
|
||||
end
|
||||
|
||||
if sway > 0.05 then
|
||||
angles.p = math.Clamp(angles.p + math.sin(CurTime() * 1.25) * FrameTime() * sway, -89, 89)
|
||||
|
||||
ArcCW.SwayDir = ArcCW.SwayDir + math.Rand(-360, 360) * FrameTime() / math.min(sway, 1)
|
||||
|
||||
angles.p = angles.p + math.sin(ArcCW.SwayDir) * FrameTime() * sway
|
||||
angles.y = angles.y + math.cos(ArcCW.SwayDir) * FrameTime() * sway
|
||||
|
||||
-- angles.p = angles.p + math.Rand(-1, 1) * FrameTime() * sway
|
||||
-- angles.y = angles.y + math.Rand(-1, 1) * FrameTime() * sway
|
||||
|
||||
userCmd:SetViewAngles(angles)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
hook.Remove("CreateMove", "ArcCW_Sway")
|
||||
@@ -0,0 +1,248 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Fire Particle"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/Items/AR2_Grenade.mdl"
|
||||
|
||||
ENT.FireTime = 15
|
||||
|
||||
ENT.Armed = false
|
||||
|
||||
ENT.NextDamageTick = 0
|
||||
|
||||
ENT.Ticks = 0
|
||||
|
||||
ENT.ArcCW_Killable = false
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
local maxs = Vector(1, 1, 1)
|
||||
local mins = -maxs
|
||||
self:PhysicsInitBox(mins, maxs)
|
||||
self:DrawShadow( false )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
self:Detonate()
|
||||
|
||||
self.FireTime = math.Rand(14.5, 15.5)
|
||||
|
||||
timer.Simple(0.1, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local fired = {
|
||||
"sprites/flamelet1",
|
||||
"sprites/flamelet2",
|
||||
"sprites/flamelet3",
|
||||
"sprites/flamelet4",
|
||||
"sprites/flamelet5",
|
||||
}
|
||||
local function GetFireParticle()
|
||||
return fired[math.random(#fired)]
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if !self.SpawnTime then self.SpawnTime = CurTime() end
|
||||
|
||||
if CLIENT then
|
||||
local emitter = ParticleEmitter(self:GetPos())
|
||||
|
||||
if !self:IsValid() or self:WaterLevel() > 2 then return end
|
||||
if !IsValid(emitter) then return end
|
||||
|
||||
if math.random(1, 100) < 10 then
|
||||
local fire = emitter:Add(GetFireParticle(), self:GetPos() + (VectorRand() * 16))
|
||||
fire:SetVelocity( VectorRand() * 500 * VectorRand() )
|
||||
fire:SetGravity( Vector(0, 0, 100) )
|
||||
fire:SetDieTime( math.Rand(0.5, 0.75) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 25 )
|
||||
fire:SetEndSize( 100 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 150 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.75)
|
||||
fire:SetNextThink( CurTime() + FrameTime() )
|
||||
fire:SetThinkFunction( function(pa)
|
||||
if !pa then return end
|
||||
local col1 = Color(255, 255, 255)
|
||||
local col2 = Color(0, 0, 0)
|
||||
|
||||
local col3 = col1
|
||||
local d = pa:GetLifeTime() / pa:GetDieTime()
|
||||
col3.r = Lerp(d, col1.r, col2.r)
|
||||
col3.g = Lerp(d, col1.g, col2.g)
|
||||
col3.b = Lerp(d, col1.b, col2.b)
|
||||
|
||||
pa:SetColor(col3.r, col3.g, col3.b)
|
||||
pa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
if math.random(1, 100) < 5 then
|
||||
local fire = emitter:Add("particles/smokey", self:GetPos())
|
||||
fire:SetVelocity( VectorRand() * 25 )
|
||||
fire:SetGravity( Vector(0, 0, 1500) )
|
||||
fire:SetDieTime( math.Rand(0.25, 1) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 10 )
|
||||
fire:SetEndSize( 150 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 150 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.75)
|
||||
fire:SetNextThink( CurTime() + FrameTime() )
|
||||
fire:SetThinkFunction( function(pa)
|
||||
if !pa then return end
|
||||
local col1 = Color(255, 135, 0)
|
||||
local col2 = Color(150, 150, 150)
|
||||
|
||||
local col3 = col1
|
||||
local d = pa:GetLifeTime() / pa:GetDieTime()
|
||||
col3.r = Lerp(d, col1.r, col2.r)
|
||||
col3.g = Lerp(d, col1.g, col2.g)
|
||||
col3.b = Lerp(d, col1.b, col2.b)
|
||||
|
||||
pa:SetColor(col3.r, col3.g, col3.b)
|
||||
pa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
emitter:Finish()
|
||||
|
||||
self.Ticks = self.Ticks + 1
|
||||
else
|
||||
|
||||
if self:GetVelocity():LengthSqr() <= 32 then
|
||||
self:SetMoveType( MOVETYPE_NONE )
|
||||
end
|
||||
|
||||
if self.NextDamageTick > CurTime() then return end
|
||||
|
||||
if self:WaterLevel() > 2 then self:Remove() return end
|
||||
|
||||
self.NextDamageTick = CurTime() + 0.25
|
||||
|
||||
for i, ent in pairs(ents.FindInSphere(self:GetPos(), 100)) do
|
||||
if (ent and IsValid(ent) and ((ent:IsPlayer() and ent:Alive()) or ent:IsNPC()) and ent:Health() > 0) then
|
||||
local timerName = "arrcw_go_fire_tracker_"..ent:EntIndex()
|
||||
if (!timer.Exists(timerName)) then
|
||||
local dmg = DamageInfo()
|
||||
dmg:SetDamageType(DMG_BURN)
|
||||
dmg:SetDamage(20)
|
||||
dmg:SetInflictor(self)
|
||||
dmg:SetAttacker(self:GetOwner())
|
||||
local burnStartTime = CurTime()
|
||||
timer.Create(timerName, 0.25, 0, function()
|
||||
if (!IsValid(ent)
|
||||
or (ent.Alive and !ent:Alive())
|
||||
or (ent:IsPlayer() and ent:Health() <= 2)
|
||||
or (ent:IsNPC() and ent:Health() == 0)
|
||||
or ent:WaterLevel() > 2) then
|
||||
timer.Remove(timerName)
|
||||
return
|
||||
end
|
||||
|
||||
if (!ent:IsOnFire()) then
|
||||
ent:Ignite(ix.config.Get("burnTime", 3) + 0.25)
|
||||
end
|
||||
|
||||
if (self and IsValid(self) and self:GetPos():DistToSqr(ent:GetPos()) < 10000) then
|
||||
burnStartTime = CurTime() -- still in the fire
|
||||
dmg:SetDamage(10) -- in the fire, more damage
|
||||
else
|
||||
dmg:SetDamage(4) -- out of the fire, less damage
|
||||
end
|
||||
|
||||
ent:TakeDamageInfo(dmg)
|
||||
|
||||
if ((burnStartTime + ix.config.Get("burnTime", 3)) <= CurTime()) then
|
||||
timer.Remove(timerName)
|
||||
return
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if self.SpawnTime + self.FireTime <= CurTime() then
|
||||
self:Remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if !self.FireSound then return end
|
||||
self.FireSound:Stop()
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if !self:IsValid() then return end
|
||||
|
||||
self.Armed = true
|
||||
|
||||
if self.Order and self.Order != 1 then return end
|
||||
|
||||
self.FireSound = CreateSound(self, "arccw_go/molotov/fire_loop_1.wav")
|
||||
self.FireSound:Play()
|
||||
|
||||
self.FireSound:ChangePitch(80, self.FireTime)
|
||||
|
||||
timer.Simple(self.FireTime - 1, function()
|
||||
if !IsValid(self) then return end
|
||||
|
||||
self.FireSound:ChangeVolume(0, 1)
|
||||
end)
|
||||
|
||||
timer.Simple(self.FireTime, function()
|
||||
if !IsValid(self) then return end
|
||||
|
||||
self:Remove()
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
-- cam.Start3D() -- Start the 3D function so we can draw onto the screen.
|
||||
-- render.SetMaterial( GetFireParticle() ) -- Tell render what material we want, in this case the flash from the gravgun
|
||||
-- render.DrawSprite( self:GetPos(), math.random(200, 250), math.random(200, 250), Color(255, 255, 255) ) -- Draw the sprite in the middle of the map, at 16x16 in it's original colour with full alpha.
|
||||
-- cam.End3D()
|
||||
end
|
||||
@@ -0,0 +1,73 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
-- Ugly way to get around some engine limitations
|
||||
ENT.PrintName = "Ricochet"
|
||||
ENT.Spawnable = false
|
||||
ENT.Type = "anim"
|
||||
|
||||
|
||||
if CLIENT then
|
||||
function ENT:Draw()
|
||||
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel("models/Combine_Helicopter/helicopter_bomb01.mdl")
|
||||
self:DrawShadow(false)
|
||||
self:SetNoDraw(true)
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if self.FireTime < CurTime() then
|
||||
local ricsleft = self.RicsLeft or 40
|
||||
self:FireBullets({
|
||||
Attacker = self.Owner,
|
||||
Damage = self.Damage,
|
||||
Force = 0,
|
||||
Distance = 5000,
|
||||
Num = 1,
|
||||
Tracer = 1,
|
||||
TracerName = "ToolTracer",
|
||||
Dir = self.Direction,
|
||||
Spread = Vector(0.025,0.025,0),
|
||||
Src = self:GetPos(),
|
||||
--IgnoreEntity = self.Owner,
|
||||
Callback = function(attacker, tr, dmginfo)
|
||||
if IsValid(self.Inflictor) then dmginfo:SetInflictor(self.Inflictor) end
|
||||
if ricsleft > 0 and self.Damage > 1 then
|
||||
local dir = tr.Normal - 2 * (tr.Normal:Dot(tr.HitNormal)) * tr.HitNormal
|
||||
for _, ent in pairs(ents.FindInCone(tr.HitPos, dir, 2000, math.cos(math.pi * 0.25))) do
|
||||
if ((ent:IsPlayer() and ent ~= self.Owner) or ent:IsNPC() or ent:IsNextBot())
|
||||
and util.QuickTrace(tr.HitPos, ent:WorldSpaceCenter() - tr.HitPos).Entity == ent then
|
||||
dir = (ent:WorldSpaceCenter() - tr.HitPos):GetNormalized()
|
||||
break
|
||||
end
|
||||
end
|
||||
local r = ents.Create("arccw_ricochet_gauss")
|
||||
r.FireTime = CurTime()
|
||||
r.Owner = self.Owner
|
||||
r.Damage = math.ceil(self.Damage * (tr.HitNonWorld and 0.9 or 0.99))
|
||||
r.Direction = dir
|
||||
r.Inflictor = self.Inflictor
|
||||
r.RicsLeft = ricsleft - 1
|
||||
r:SetPos(tr.HitPos)
|
||||
r:Spawn()
|
||||
end
|
||||
end
|
||||
})
|
||||
self:EmitSound("weapons/fx/rics/ric" .. math.random(1,5) .. ".wav", 70, 100)
|
||||
self:Remove()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,146 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Flash Grenade"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/arccw_go/w_eq_flashbang_thrown.mdl"
|
||||
ENT.FuseTime = 2.5
|
||||
ENT.ArmTime = 0
|
||||
ENT.ImpactFuse = false
|
||||
ENT.Armed = true
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( true )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
|
||||
if self.FuseTime <= 0 then
|
||||
self:Detonate()
|
||||
end
|
||||
|
||||
timer.Simple(0, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(data, physobj)
|
||||
if SERVER then
|
||||
if data.Speed > 75 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_hard" .. math.random(1,3) .. ".wav"))
|
||||
elseif data.Speed > 25 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_soft" .. math.random(1,3) .. ".wav"))
|
||||
end
|
||||
|
||||
if (CurTime() - self.SpawnTime >= self.ArmTime) and self.ImpactFuse then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if SERVER and CurTime() - self.SpawnTime >= self.FuseTime then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:FlashBang()
|
||||
if !self:IsValid() then return end
|
||||
self:EmitSound("arccw_go/flashbang/flashbang_explode1.wav", 100, 100, 1, CHAN_ITEM)
|
||||
self:EmitSound("arccw_go/flashbang/flashbang_explode1_distant.wav", 140, 100, 1, CHAN_WEAPON)
|
||||
|
||||
local attacker = self
|
||||
|
||||
if self:GetOwner():IsValid() then
|
||||
attacker = self:GetOwner()
|
||||
end
|
||||
|
||||
util.BlastDamage(self, attacker, self:GetPos(), 64, 10)
|
||||
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin( self:GetPos() )
|
||||
|
||||
util.Effect( "arccw_flashexplosion", effectdata)
|
||||
|
||||
local flashorigin = self:GetPos()
|
||||
|
||||
local flashpower = 1024
|
||||
local targets = ents.FindInSphere(flashorigin, flashpower)
|
||||
|
||||
for _, k in pairs(targets) do
|
||||
if k:IsPlayer() then
|
||||
local dist = k:EyePos():Distance(flashorigin)
|
||||
local dp = (k:EyePos() - flashorigin):Dot(k:EyeAngles():Forward())
|
||||
|
||||
local time = Lerp( dp, 2.5, 0.25 )
|
||||
|
||||
time = Lerp( dist / flashpower, time, 0 )
|
||||
|
||||
if k:VisibleVec( flashorigin ) then
|
||||
k:ScreenFade( SCREENFADE.IN, Color( 255, 255, 255, 255 ), 2.5, time )
|
||||
end
|
||||
|
||||
k:SetDSP( 37, false )
|
||||
|
||||
elseif k:IsNPC() then
|
||||
|
||||
k:SetNPCState(NPC_STATE_PLAYDEAD)
|
||||
|
||||
if timer.Exists( k:EntIndex() .. "_arccw_flashtimer" ) then
|
||||
timer.Remove( k:EntIndex() .. "_arccw_flashtimer" )
|
||||
end
|
||||
|
||||
timer.Create( k:EntIndex() .. "_arccw_flashtimer", 10, 1, function()
|
||||
if !k:IsValid() then return end
|
||||
k:SetNPCState(NPC_STATE_ALERT)
|
||||
end)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if !self:IsValid() or self:WaterLevel() > 2 then return end
|
||||
if !self.Armed then return end
|
||||
|
||||
self.Armed = false
|
||||
|
||||
self:FlashBang()
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
end
|
||||
@@ -0,0 +1,105 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Frag Grenade"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/arccw_go/w_eq_fraggrenade_thrown.mdl"
|
||||
ENT.FuseTime = 3.5
|
||||
ENT.ArmTime = 0
|
||||
ENT.ImpactFuse = false
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( true )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
|
||||
if self.FuseTime <= 0 then
|
||||
self:Detonate()
|
||||
end
|
||||
|
||||
timer.Simple(0, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(data, physobj)
|
||||
if SERVER then
|
||||
if data.Speed > 75 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_hard" .. math.random(1,3) .. ".wav"))
|
||||
elseif data.Speed > 25 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_soft" .. math.random(1,3) .. ".wav"))
|
||||
end
|
||||
|
||||
if (CurTime() - self.SpawnTime >= self.ArmTime) and self.ImpactFuse then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if SERVER and CurTime() - self.SpawnTime >= self.FuseTime then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if SERVER then
|
||||
if !self:IsValid() then return end
|
||||
local effectdata = EffectData()
|
||||
effectdata:SetOrigin( self:GetPos() )
|
||||
|
||||
if self:WaterLevel() >= 1 then
|
||||
util.Effect("WaterSurfaceExplosion", effectdata)
|
||||
self:EmitSound("weapons/underwater_explode3.wav", 120, 100, 1, CHAN_AUTO)
|
||||
else
|
||||
util.Effect("Explosion", effectdata)
|
||||
self:EmitSound("arccw_go/hegrenade/hegrenade_detonate_01.wav", 125, 100, 1, CHAN_AUTO)
|
||||
end
|
||||
|
||||
local attacker = self
|
||||
|
||||
if self.Owner:IsValid() then
|
||||
attacker = self.Owner
|
||||
end
|
||||
util.BlastDamage(self, attacker, self:GetPos(), 400, 150)
|
||||
|
||||
self:Remove()
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
end
|
||||
@@ -0,0 +1,310 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Incendiary Grenade"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/arccw_go/w_eq_incendiarygrenade_thrown.mdl"
|
||||
ENT.FuseTime = 5
|
||||
ENT.ArmTime = 0
|
||||
ENT.FireTime = 15
|
||||
ENT.ImpactFuse = false
|
||||
|
||||
ENT.Armed = false
|
||||
|
||||
ENT.NextDamageTick = 0
|
||||
|
||||
ENT.Ticks = 0
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar( "Bool", 0, "Armed" )
|
||||
|
||||
if SERVER then
|
||||
self:SetArmed(false)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( true )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
|
||||
timer.Simple(0, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(data, physobj)
|
||||
if SERVER then
|
||||
if data.Speed > 75 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_hard" .. math.random(1,3) .. ".wav"))
|
||||
elseif data.Speed > 25 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_soft" .. math.random(1,3) .. ".wav"))
|
||||
end
|
||||
|
||||
if (CurTime() - self.SpawnTime >= self.ArmTime) and self.ImpactFuse then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local fired = {
|
||||
"effects/fire_embers1",
|
||||
"effects/fire_embers2",
|
||||
"effects/fire_embers3",
|
||||
}
|
||||
local function GetFireParticle()
|
||||
return fired[math.random(#fired)]
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if !self.SpawnTime then self.SpawnTime = CurTime() end
|
||||
|
||||
if SERVER and CurTime() - self.SpawnTime >= self.FuseTime and !self.Armed then
|
||||
self:Detonate()
|
||||
self:SetArmed(true)
|
||||
end
|
||||
|
||||
if self:GetArmed() then
|
||||
|
||||
if SERVER then
|
||||
if self.NextDamageTick > CurTime() then return end
|
||||
|
||||
local dmg = DamageInfo()
|
||||
dmg:SetDamageType(DMG_BURN)
|
||||
dmg:SetDamage(75)
|
||||
dmg:SetInflictor(self)
|
||||
dmg:SetAttacker(self.Owner)
|
||||
util.BlastDamageInfo(dmg, self:GetPos(), 256)
|
||||
|
||||
self.NextDamageTick = CurTime() + 0.25
|
||||
|
||||
self.ArcCW_Killable = false
|
||||
else
|
||||
|
||||
if !self.Light then
|
||||
self.Light = DynamicLight(self:EntIndex())
|
||||
if (self.Light) then
|
||||
self.Light.Pos = self:GetPos()
|
||||
self.Light.r = 255
|
||||
self.Light.g = 135
|
||||
self.Light.b = 0
|
||||
self.Light.Brightness = 8
|
||||
self.Light.Size = 256
|
||||
self.Light.DieTime = CurTime() + self.FireTime
|
||||
end
|
||||
else
|
||||
self.Light.Pos = self:GetPos()
|
||||
end
|
||||
|
||||
local emitter = ParticleEmitter(self:GetPos())
|
||||
|
||||
if !self:IsValid() or self:WaterLevel() > 2 then return end
|
||||
if !IsValid(emitter) then return end
|
||||
|
||||
if self.Ticks % 5 == 0 then
|
||||
local fire = emitter:Add("particles/smokey", self:GetPos())
|
||||
fire:SetVelocity( (VectorRand() * 25) + (self:GetAngles():Up() * 300) )
|
||||
fire:SetGravity( Vector(0, 0, 1500) )
|
||||
fire:SetDieTime( math.Rand(0.5, 1) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 10 )
|
||||
fire:SetEndSize( 150 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 150 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.75)
|
||||
fire:SetNextThink( CurTime() + FrameTime() )
|
||||
fire:SetThinkFunction( function(pa)
|
||||
if !pa then return end
|
||||
local col1 = Color(255, 135, 0)
|
||||
local col2 = Color(255, 255, 255)
|
||||
|
||||
local col3 = col1
|
||||
local d = pa:GetLifeTime() / pa:GetDieTime()
|
||||
col3.r = Lerp(d, col1.r, col2.r)
|
||||
col3.g = Lerp(d, col1.g, col2.g)
|
||||
col3.b = Lerp(d, col1.b, col2.b)
|
||||
|
||||
pa:SetColor(col3.r, col3.g, col3.b)
|
||||
pa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
if self.Ticks % 10 == 0 then
|
||||
local fire = emitter:Add("effects/spark", self:GetPos())
|
||||
fire:SetVelocity( VectorRand() * 750 )
|
||||
fire:SetGravity( Vector(math.Rand(-5, 5), math.Rand(-5, 5), -2000) )
|
||||
fire:SetDieTime( math.Rand(0.5, 1) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 5 )
|
||||
fire:SetEndSize( 0 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 50 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.8)
|
||||
fire.Ticks = 0
|
||||
end
|
||||
|
||||
self.NextFlareTime = self.NextFlareTime or CurTime()
|
||||
|
||||
if self.NextFlareTime <= CurTime() then
|
||||
self.NextFlareTime = CurTime() + math.Rand(0.1, 0.5)
|
||||
local fire = emitter:Add("sprites/orangeflare1", self:GetPos())
|
||||
fire:SetVelocity( VectorRand() * 750 )
|
||||
fire:SetGravity( Vector(math.Rand(-5, 5), math.Rand(-5, 5), -2000) )
|
||||
fire:SetDieTime( math.Rand(1, 2) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 50 )
|
||||
fire:SetEndSize( 0 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 50 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.8)
|
||||
fire.Ticks = 0
|
||||
fire:SetNextThink( CurTime() + FrameTime() )
|
||||
fire:SetThinkFunction( function(pa)
|
||||
if !pa then return end
|
||||
|
||||
local aemitter = ParticleEmitter(pa:GetPos())
|
||||
|
||||
local d = pa:GetLifeTime() / pa:GetDieTime()
|
||||
|
||||
if !IsValid(aemitter) then return end
|
||||
|
||||
if pa.Ticks % 5 == 0 then
|
||||
local afire = aemitter:Add("particles/smokey", pa:GetPos())
|
||||
afire:SetVelocity( VectorRand() * 5 )
|
||||
afire:SetGravity( Vector(0, 0, 1500) )
|
||||
afire:SetDieTime( math.Rand(0.25, 0.5) * d )
|
||||
afire:SetStartAlpha( 255 )
|
||||
afire:SetEndAlpha( 0 )
|
||||
afire:SetStartSize( 5 * d )
|
||||
afire:SetEndSize( 20 )
|
||||
afire:SetRoll( math.Rand(-180, 180) )
|
||||
afire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
afire:SetColor( 255, 255, 255 )
|
||||
afire:SetAirResistance( 150 )
|
||||
afire:SetPos( pa:GetPos() )
|
||||
afire:SetLighting( false )
|
||||
afire:SetCollide(true)
|
||||
afire:SetBounce(0.9)
|
||||
afire:SetNextThink( CurTime() + FrameTime() )
|
||||
afire:SetThinkFunction( function(apa)
|
||||
if !apa then return end
|
||||
local col1 = Color(255, 135, 0)
|
||||
local col2 = Color(255, 255, 255)
|
||||
|
||||
local col3 = col1
|
||||
local d = apa:GetLifeTime() / apa:GetDieTime()
|
||||
col3.r = Lerp(d, col1.r, col2.r)
|
||||
col3.g = Lerp(d, col1.g, col2.g)
|
||||
col3.b = Lerp(d, col1.b, col2.b)
|
||||
|
||||
apa:SetColor(col3.r, col3.g, col3.b)
|
||||
apa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
aemitter:Finish()
|
||||
|
||||
pa.Ticks = pa.Ticks + 1
|
||||
|
||||
pa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
emitter:Finish()
|
||||
|
||||
self.Ticks = self.Ticks + 1
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
if !self.FireSound then return end
|
||||
self.FireSound:Stop()
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if !self:IsValid() then return end
|
||||
|
||||
self.Armed = true
|
||||
|
||||
self.FireSound = CreateSound(self, "weapons/flaregun/burn.wav")
|
||||
self.FireSound:Play()
|
||||
|
||||
self.FireSound:ChangePitch(80, self.FireTime)
|
||||
|
||||
timer.Simple(self.FireTime - 1, function()
|
||||
if !IsValid(self) then return end
|
||||
|
||||
self.FireSound:ChangeVolume(0, 1)
|
||||
end)
|
||||
|
||||
timer.Simple(self.FireTime, function()
|
||||
if !IsValid(self) then return end
|
||||
|
||||
self:Remove()
|
||||
end)
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
if CLIENT then
|
||||
self:DrawModel()
|
||||
|
||||
if !self:GetArmed() then return end
|
||||
|
||||
cam.Start3D() -- Start the 3D function so we can draw onto the screen.
|
||||
render.SetMaterial( Material("sprites/orangeflare1") ) -- Tell render what material we want, in this case the flash from the gravgun
|
||||
render.DrawSprite( self:GetPos(), math.random(400, 500), math.random(400, 500), Color(255, 255, 255) ) -- Draw the sprite in the middle of the map, at 16x16 in it's original colour with full alpha.
|
||||
cam.End3D()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,151 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Molotov Cocktail"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/arccw_go/w_eq_molotov_thrown.mdl"
|
||||
ENT.FuseTime = 5
|
||||
ENT.ArmTime = 0
|
||||
ENT.FireTime = 15
|
||||
ENT.ImpactFuse = true
|
||||
|
||||
ENT.Armed = false
|
||||
|
||||
ENT.NextDamageTick = 0
|
||||
|
||||
ENT.Ticks = 0
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( true )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
|
||||
timer.Simple(0, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(data, physobj)
|
||||
if SERVER then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if !self.SpawnTime then self.SpawnTime = CurTime() end
|
||||
|
||||
if SERVER and CurTime() - self.SpawnTime >= self.FuseTime and !self.Armed then
|
||||
self:Detonate()
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
local emitter = ParticleEmitter(self:GetPos())
|
||||
|
||||
if !self:IsValid() or self:WaterLevel() > 2 then return end
|
||||
if !IsValid(emitter) then return end
|
||||
|
||||
if self.Ticks % 5 == 0 then
|
||||
local fire = emitter:Add("particles/smokey", self:GetPos())
|
||||
fire:SetVelocity( (VectorRand() * 25) + (self:GetAngles():Up() * 300) )
|
||||
fire:SetGravity( Vector(0, 0, 1500) )
|
||||
fire:SetDieTime( math.Rand(0.5, 1) )
|
||||
fire:SetStartAlpha( 255 )
|
||||
fire:SetEndAlpha( 0 )
|
||||
fire:SetStartSize( 10 )
|
||||
fire:SetEndSize( 50 )
|
||||
fire:SetRoll( math.Rand(-180, 180) )
|
||||
fire:SetRollDelta( math.Rand(-0.2,0.2) )
|
||||
fire:SetColor( 255, 255, 255 )
|
||||
fire:SetAirResistance( 150 )
|
||||
fire:SetPos( self:GetPos() )
|
||||
fire:SetLighting( false )
|
||||
fire:SetCollide(true)
|
||||
fire:SetBounce(0.75)
|
||||
fire:SetNextThink( CurTime() + FrameTime() )
|
||||
fire:SetThinkFunction( function(pa)
|
||||
if !pa then return end
|
||||
local col1 = Color(255, 135, 0)
|
||||
local col2 = Color(255, 255, 255)
|
||||
|
||||
local col3 = col1
|
||||
local d = pa:GetLifeTime() / pa:GetDieTime()
|
||||
col3.r = Lerp(d, col1.r, col2.r)
|
||||
col3.g = Lerp(d, col1.g, col2.g)
|
||||
col3.b = Lerp(d, col1.b, col2.b)
|
||||
|
||||
pa:SetColor(col3.r, col3.g, col3.b)
|
||||
pa:SetNextThink( CurTime() + FrameTime() )
|
||||
end )
|
||||
end
|
||||
|
||||
emitter:Finish()
|
||||
|
||||
self.Ticks = self.Ticks + 1
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if self.Exploded then return end
|
||||
self.Exploded = true
|
||||
self:EmitSound("arccw_go/molotov/molotov_detonate_1.wav", 75, 100, 1, CHAN_ITEM)
|
||||
self:EmitSound("arccw_go/molotov/molotov_detonate_1_distant.wav", 100, 100, 1, CHAN_WEAPON)
|
||||
|
||||
for i = 1,10 do
|
||||
local cloud = ents.Create( "arccw_go_fire" )
|
||||
|
||||
if !IsValid(cloud) then return end
|
||||
|
||||
local vel = Vector(math.Rand(-1, 1), math.Rand(-1, 1), math.Rand(-1, 1)) * 1500
|
||||
|
||||
cloud.Order = i
|
||||
cloud:SetPos(self:GetPos() - (self:GetVelocity() * FrameTime()) + VectorRand())
|
||||
cloud:SetAbsVelocity(vel + self:GetVelocity())
|
||||
cloud:SetOwner(self:GetOwner())
|
||||
cloud:Spawn()
|
||||
end
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
if CLIENT then
|
||||
self:DrawModel()
|
||||
|
||||
cam.Start3D() -- Start the 3D function so we can draw onto the screen.
|
||||
render.SetMaterial( Material("sprites/orangeflare1") ) -- Tell render what material we want, in this case the flash from the gravgun
|
||||
render.DrawSprite( self:GetPos(), math.random(75, 100), math.random(75, 100), Color(255, 255, 255) ) -- Draw the sprite in the middle of the map, at 16x16 in it's original colour with full alpha.
|
||||
cam.End3D()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,89 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "base_entity"
|
||||
ENT.PrintName = "Smoke Grenade"
|
||||
ENT.Author = ""
|
||||
ENT.Information = ""
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/arccw_go/w_eq_smokegrenade_thrown.mdl"
|
||||
ENT.FuseTime = 3.5
|
||||
ENT.ArmTime = 0
|
||||
ENT.ImpactFuse = false
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
function ENT:Initialize()
|
||||
if SERVER then
|
||||
self:SetModel( self.Model )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( true )
|
||||
|
||||
local phys = self:GetPhysicsObject()
|
||||
if phys:IsValid() then
|
||||
phys:Wake()
|
||||
phys:SetBuoyancyRatio(0)
|
||||
end
|
||||
|
||||
self.SpawnTime = CurTime()
|
||||
|
||||
timer.Simple(0, function()
|
||||
if !IsValid(self) then return end
|
||||
self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:PhysicsCollide(data, physobj)
|
||||
if SERVER then
|
||||
if data.Speed > 75 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_hard" .. math.random(1,3) .. ".wav"))
|
||||
elseif data.Speed > 25 then
|
||||
self:EmitSound(Sound("physics/metal/metal_grenade_impact_soft" .. math.random(1,3) .. ".wav"))
|
||||
end
|
||||
|
||||
if (CurTime() - self.SpawnTime >= self.ArmTime) and self.ImpactFuse then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if SERVER and CurTime() - self.SpawnTime >= self.FuseTime then
|
||||
self:Detonate()
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:Detonate()
|
||||
if !self:IsValid() or self:WaterLevel() > 2 then return end
|
||||
self:EmitSound("arccw_go/smokegrenade/smoke_emit.wav", 90, 100, 1, CHAN_AUTO)
|
||||
|
||||
local cloud = ents.Create( "arccw_smoke" )
|
||||
|
||||
if !IsValid(cloud) then return end
|
||||
|
||||
cloud:SetPos(self:GetPos())
|
||||
cloud:Spawn()
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent()
|
||||
self:Draw()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
self:DrawModel()
|
||||
end
|
||||
@@ -0,0 +1,232 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Pulse Rifle"
|
||||
SWEP.TrueName = "Overwatch Standard Issue Pulse-Rifle"
|
||||
|
||||
-- Technically you can omit all trivia info, but that's not fun! Do a bit of research and write some stuff in!
|
||||
SWEP.Trivia_Class = "Pulse Rifle"
|
||||
SWEP.Trivia_Desc = "Overwatch Pulse Rifle given to most combine soldiers, developed from the V952.71.2 Prototype. Later models feature a integrated reflex sight, which display a black screen unless viewed through a Combine Soldier's visor. Removing the sight renders the weapon inoperable; perhaps a failsafe against rebels looting the weapon."
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
SWEP.Trivia_Calibre = "Medium Pulse Capsule"
|
||||
SWEP.Trivia_Mechanism = "Dark Energy Thumper"
|
||||
SWEP.Trivia_Country = "Universal Union - Earth Overwatch"
|
||||
SWEP.Trivia_Year = "Occupation Period 3, 203x"
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/oar2/v_o2rifle.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_IRifle.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.Damage = 20
|
||||
SWEP.DamageMin = 20
|
||||
SWEP.Range = 250 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 925 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 60
|
||||
SWEP.ReducedClipSize = 20
|
||||
|
||||
SWEP.Recoil = 0.45
|
||||
SWEP.RecoilSide = 0.55
|
||||
SWEP.RecoilRise = 1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 550 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 5 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 95 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 225
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "oar" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 115 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/oar2/ar2/fire1.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/ar21/primary.wav"
|
||||
SWEP.DistantShootSound = "weapons/oar/ar2.dist1.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellModel = nil
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = nil
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.95
|
||||
SWEP.SightedSpeedMult = 0.65
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2, 2, 2.267),
|
||||
Ang = Angle(-0.066, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 2)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Base",
|
||||
Offset = {
|
||||
vpos = Vector(1.631, 4.261, 23.079), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, 0),
|
||||
wpos = Vector(15.625, -0.1, -6.298),
|
||||
wang = Angle(-8.829, -0.556, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "stock",
|
||||
DefaultAttName = "Standard Stock"
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "ociw master", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-1.158, -1.022, 2.867), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 90, 0),
|
||||
wpos = Vector(6.099, 1.1, -3.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle_ironsight",
|
||||
Time = 0
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "IR_draw",
|
||||
Time = 0.4,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = {"IR_fire", "fire2", "fire3", "fire4"},
|
||||
Time = 0.25,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "IR_idle",
|
||||
Time = 0.25,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "IR_reload",
|
||||
Time = 1.7,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/oar2/ar2/npc_ar2_reload.wav", t = 0}},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reloadempty",
|
||||
Time = 1.7,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/oar2/ar2/npc_ar2_reload.wav", t = 0}},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Heavy Pulse Rifle"
|
||||
SWEP.TrueName = "Overwatch Hammer Issue"
|
||||
|
||||
-- Technically you can omit all trivia info, but that's not fun! Do a bit of research and write some stuff in!
|
||||
SWEP.Trivia_Class = "Heavy Assault Rifle"
|
||||
SWEP.Trivia_Desc = "A heavier, more powerful version of the Combine Pulse-Rifle. Extremely inaccurate when moving. Ball launcher not included and is sold separately."
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
SWEP.Trivia_Calibre = "High-Mass Pulse Capsule"
|
||||
SWEP.Trivia_Mechanism = "Dark Energy Thumper"
|
||||
SWEP.Trivia_Country = "Universal Union - Earth Overwatch"
|
||||
SWEP.Trivia_Year = "Occupation Period 3, 203x"
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/irifle2/c_irifle2.mdl"
|
||||
SWEP.WorldModel = "models/weapons/irifle2/w_irifle2.mdl"
|
||||
SWEP.ViewModelFOV = 90
|
||||
|
||||
SWEP.Damage = 23
|
||||
SWEP.DamageMin = 23
|
||||
SWEP.Range = 250 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_AIRBOAT
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 900 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 24 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 48
|
||||
SWEP.ReducedClipSize = 12
|
||||
|
||||
SWEP.Recoil = 0.7
|
||||
SWEP.RecoilSide = 0.5
|
||||
SWEP.RecoilRise = 0.02
|
||||
|
||||
|
||||
SWEP.Delay = 60 / 350 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 8 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 150 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 600
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ar21" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 115 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/ar21/primary.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/ar21/primary.wav"
|
||||
SWEP.DistantShootSound = "weapons/ar21/primary.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellModel = nil
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = nil
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(0, 0, 0),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.5,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = true
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-2, -6, 0)
|
||||
SWEP.ActiveAng = Angle(2, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
|
||||
["reducedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
WMBodygroups = {{ind = 1, bg = 2}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Magic Zoom",
|
||||
Slot = {"optic", "optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "ociw master", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.01, -4.495, 4.716), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 90, 0),
|
||||
wpos = Vector(6.099, 0.699, -6.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
},
|
||||
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"ubgl"},
|
||||
Bone = "ociw master",
|
||||
Offset = {
|
||||
vpos = Vector(-0.311, -9.306, -0.087),
|
||||
vang = Angle(0, 90, 0),
|
||||
wpos = Vector(17, 0.6, -4.676),
|
||||
wang = Angle(-10, 0, 180)
|
||||
},
|
||||
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "ociw master",
|
||||
Offset = {
|
||||
vpos = Vector(-1.05, -4.038, 3.24), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 90, 90),
|
||||
wpos = Vector(15.625, -0.1, -6.298),
|
||||
wang = Angle(-8.829, -0.556, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "stock",
|
||||
DefaultAttName = "Standard Stock"
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "ociw master", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-1.158, -1.022, 2.867), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 90, 0),
|
||||
wpos = Vector(6.099, 1.1, -3.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = false,
|
||||
["draw"] = {
|
||||
Source = "IR_draw",
|
||||
Time = 0.4,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = {"fire2", "fire3", "fire4"},
|
||||
Time = 0.5,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "IR_fire",
|
||||
Time = 0.1,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "IR_reload",
|
||||
Time = 2.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/ar21/ar2_reload_push.wav", t = 0}},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "IR_reload",
|
||||
Time = 2.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/ar21/ar2_reload_push.wav", t = 0}},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,584 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Oldie Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "M1911"
|
||||
SWEP.TrueName = "M1911"
|
||||
SWEP.Trivia_Class = "Pistol"
|
||||
SWEP.Trivia_Desc = "Commonly known simply as Colt, the M1911 is one of the most famous handguns on the planet. It went through both World War's as a standard-issue US Army pistol, and despite that it was replaced in 1986, its further variations are still a sidearm of choice in different US Special Forces. M1911A1 is the further generation of a M1911 pistol, after World War I, the military's Model 1911 went through various changes including shorter trigger with frame cuts, improved sights, an arched mainspring housing and a redesigned grip safety."
|
||||
SWEP.Trivia_Manufacturer = "Colt"
|
||||
SWEP.Trivia_Calibre = ".45 ACP"
|
||||
SWEP.Trivia_Mechanism = "Short Recoil"
|
||||
SWEP.Trivia_Country = "Italy"
|
||||
SWEP.Trivia_Year = 1911
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_1911/c_eft_1911/models/c_eft_1911.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_pist_usp.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 13
|
||||
SWEP.DamageMin = 13 -- damage done at maximum range
|
||||
SWEP.Range = 100 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 12 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 17
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 200
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.Recoil = 1.0
|
||||
SWEP.RecoilSide = 0.3
|
||||
SWEP.RecoilRise = 0.3
|
||||
SWEP.RecoilPunch = -2
|
||||
|
||||
SWEP.Delay = 60 / 350 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_pistol"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 12 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 350 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "1911" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 110 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.FirstShootSound = "weapons/m1911/m1911_fp.wav"
|
||||
SWEP.ShootSound = "weapons/m1911/m1911_fp.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/m1911/m1911_silenced_fp.wav"
|
||||
SWEP.DistantShootSound = "weapons/m1911/m1911_dist.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.75
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.99
|
||||
SWEP.SightedSpeedMult = 0.85
|
||||
SWEP.SightTime = 0.2
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.725, 2.5, 2.025),
|
||||
Ang = Angle(1, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "pistol"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL
|
||||
|
||||
SWEP.ActivePos = Vector(0, 2, 1.5)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, 0, -1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
SWEP.BarrelOffsetCrouch = Vector(0, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 2, 0.5)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 26
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[1] = "patron_001",
|
||||
[2] = "patron_002"
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["default_barrel"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["optic_mount"] = {
|
||||
VMBodygroups = {{ind = 10, bg = 1}},
|
||||
},
|
||||
["trigger_mount"] = {
|
||||
VMBodygroups = {{ind = 9, bg = 1}},
|
||||
},
|
||||
["default_mag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["default_hammer"] = {
|
||||
VMBodygroups = {{ind = 7, bg = 1}},
|
||||
},
|
||||
["default_trigger"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 1}},
|
||||
},
|
||||
["default_grip"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["default_catch"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 20
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-12.5, 4, -2.5),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = "eft_optic_small", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0.075, 21, 1.5),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(-0.075, 20, 1.5),
|
||||
vmax = Vector(-0.075, 22, 1.5),
|
||||
wmin = Vector(5.5, 0.5, -5.8),
|
||||
wmax = Vector(6.5, 0.5, -5.9),
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
InstalledEles = {"optic_mount"},
|
||||
ExcludeFlags = {"triggermountattached"},
|
||||
GivesFlags = {"opticmountattached"},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel", -- print name
|
||||
DefaultAttName = "Standard Barrel",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_barrel_icon.png"),
|
||||
Slot = "eft_barrel_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0.0734, 20.82208, -0.1864),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"default_barrel"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device", -- print name
|
||||
DefaultAttName = "No Muzzle Device",
|
||||
Slot = "eft_muzzle_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_muzzle", -- relevant bone any attachments will be mostly referring to
|
||||
RequireFlags = {"barrelthread"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Catch", -- print name
|
||||
DefaultAttName = "Standard Catch",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_catch_icon.png"),
|
||||
Slot = "eft_catch_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_catch", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"default_catch"},
|
||||
},
|
||||
{
|
||||
PrintName = "Hammer", -- print name
|
||||
DefaultAttName = "Standard Hammer",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_hammer_icon.png"),
|
||||
Slot = "eft_hammer_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_hammer", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"default_hammer"},
|
||||
},
|
||||
{
|
||||
PrintName = "Trigger", -- print name
|
||||
DefaultAttName = "Standard Trigger",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_trigger_icon.png"),
|
||||
Slot = "eft_trigger_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_trigger", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"default_trigger"},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip", -- print name
|
||||
DefaultAttName = "Standard Grip",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_grip_icon.png"),
|
||||
Slot = "eft_grip_1911", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_pistol_grip", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"default_grip"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = "eft_tactical", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 23.3, -0.5),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"trigger_mount"},
|
||||
ExcludeFlags = {"opticmountattached"},
|
||||
GivesFlags = {"triggermountattached"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
DefaultAttName = "7-round Mag",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/1911_mag_icon.png"),
|
||||
InstalledEles = {"default_mag"},
|
||||
Bone = "mod_magazine",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
Slot = "eft1911_mag"
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = ".45 ACP FMJ",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/9x19_Icon.png"),
|
||||
Slot = "ammo_eft_45"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_in.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_in.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = true,
|
||||
Time = 0.5,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_out.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_Empty",
|
||||
LHIK = true,
|
||||
Time = 0.5,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_out.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw_first",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_slider.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_slider.wav",
|
||||
t = 0.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.2,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.2,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 0.1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 0.1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_out.wav",
|
||||
t = 0.37
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullin.wav",
|
||||
t = 1.9
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_in.wav",
|
||||
t = 2
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LastClip1OutTime = 1, -- when should the belt visually replenish on a belt fed
|
||||
Time = 3.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_out.wav",
|
||||
t = 0.37
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullin.wav",
|
||||
t = 2.1
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_in.wav",
|
||||
t = 2.2
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_button.wav",
|
||||
t = 2.9
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_slider.wav",
|
||||
t = 3
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_long"] = {
|
||||
Source = "reload_extended",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
Time = 3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_out.wav",
|
||||
t = 0.37
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullin.wav",
|
||||
t = 2
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_in.wav",
|
||||
t = 2.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_long_empty"] = {
|
||||
Source = "reload_empty_extended",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
Time = 3.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_out.wav",
|
||||
t = 0.37
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_pullin.wav",
|
||||
t = 2.1
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_mag_in.wav",
|
||||
t = 2.2
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_button.wav",
|
||||
t = 2.9
|
||||
},
|
||||
{
|
||||
s = "weapons/eft_shared/grach_catch_slider.wav",
|
||||
t = 3
|
||||
}
|
||||
},
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "customise_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["enter_inspect_empty"] = {
|
||||
Source = "customise_begin_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "customise_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "customise_idle_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "customise_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "customise_end_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,634 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Oldie Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "AKS-74u"
|
||||
SWEP.Trivia_Class = "Carbine"
|
||||
SWEP.Trivia_Desc = "Reduced version of AKS-74 assault rifle, developed in the early 80s for combat vehicle crews and airborne troops, also became very popular with law enforcement and special forces for its compact size."
|
||||
SWEP.Trivia_Manufacturer = "Kalashnikov"
|
||||
SWEP.Trivia_Calibre = "5.45x39mm"
|
||||
SWEP.Trivia_Mechanism = "blowback-operated"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 1979
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_aks74u/eft_aks74u/models/c_eft_aks74u.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_smg1.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 13
|
||||
SWEP.DamageMin = 13 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 735 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 735
|
||||
|
||||
SWEP.Recoil = 0.6
|
||||
SWEP.RecoilSide = 0.24
|
||||
SWEP.RecoilRise = 0.35
|
||||
SWEP.RecoilPunch = 2
|
||||
|
||||
SWEP.Delay = 60 / 650 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 14 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 300 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ak74" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw_eft_aks74u/ak74_raw_close.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw_eft_aks74u/ak74_silenced_close.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft_aks74u/ak74_raw_far1.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_mp5"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[0] = "patron_in_weapon",
|
||||
[1] = "patron_001",
|
||||
[2] = "patron_002",
|
||||
[3] = "patron_003"
|
||||
}
|
||||
|
||||
SWEP.SpeedMult = 0.9
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.25
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.65, 3, 1.39),
|
||||
Ang = Angle(0, 0.0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 4, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-1, 3, 0.5)
|
||||
SWEP.CrouchAng = Angle(0, 0, -5)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 4, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["handguard"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
["pgrip"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["magazine"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["Stock_Fold"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["Stock_Gone"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}},
|
||||
},
|
||||
["Mount_scopes"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
["No_Mount"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 0}},
|
||||
},
|
||||
["Remove_Receiver"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["Rear_Mount"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 1}},
|
||||
AttPosMods = {
|
||||
[1] = {
|
||||
vpos = Vector(0, -5, 0.2),
|
||||
vang = Angle(90, -90, -90),
|
||||
}
|
||||
},
|
||||
},
|
||||
["b11_handguard"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 1}},
|
||||
AttPosMods = {
|
||||
[5] = {
|
||||
vpos = Vector(0, 2.5, -1.3),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
[6] = {
|
||||
vpos = Vector(1, 3.65, -0.35),
|
||||
vang = Angle(90, -90, 0),
|
||||
},
|
||||
[7] = {
|
||||
vpos = Vector(-1, 3.65, -0.35),
|
||||
vang = Angle(-90, -90, 0),
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-4.3, 4.2, -8),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/ironsight.png"),
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_topmount", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0.01, 0, 0.7),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
ExcludeFlags = {"NoReceiver"},
|
||||
InstalledEles = {"Mount_scopes"},
|
||||
},
|
||||
{
|
||||
PrintName = "Dust Cover", -- print name
|
||||
DefaultAttName = "6P26 Dust Cover",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/receiver_std.png"),
|
||||
Slot = "eft_aks74u_receiever",
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0.0, 0, 0),
|
||||
vang = Angle(0, 0, 0),
|
||||
},
|
||||
InstalledEles = {"Remove_Receiver"},
|
||||
},
|
||||
{
|
||||
PrintName = "Handguard",
|
||||
DefaultAttName = "6P26 Handguard",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/handguard_std.png"),
|
||||
InstalledEles = {"handguard"},
|
||||
Slot = "eftaks74u_handguard",
|
||||
Bone = "mod_handguard", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device",
|
||||
DefaultAttName = "No Muzzle",
|
||||
--DefaultAttIcon = Material("vgui/entities/eft_aks74u/handguard_std.png"),
|
||||
Slot = "eft_muzzle_ak545",
|
||||
Bone = "mod_handguard", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 5.8, -0.5),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "eft_foregrip",
|
||||
Bone = "mod_handguard",
|
||||
DefaultAttName = "No Underbarrel",
|
||||
Offset = {
|
||||
vpos = Vector(0, 2.5, -1.7),
|
||||
vang = Angle(0, -90, 0)
|
||||
},
|
||||
RequireFlags = {"lowerrail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Gadget - Left",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_handguard",
|
||||
DefaultAttName = "No Gadget",
|
||||
Offset = {
|
||||
vpos = Vector(1.1, 3.5, -0.5),
|
||||
vang = Angle(90, -90, 0)
|
||||
},
|
||||
RequireFlags = {"leftrail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Gadget - Right",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_handguard",
|
||||
DefaultAttName = "No Gadget",
|
||||
Offset = {
|
||||
vpos = Vector(-1.1, 3.5, -0.5),
|
||||
vang = Angle(-90, -90, 0)
|
||||
},
|
||||
RequireFlags = {"rightrail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = "eft_mag_ak545",
|
||||
Bone = "mod_magazine",
|
||||
DefaultAttName = "6L20 30-round magazine",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/mag_std.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, -0),
|
||||
vang = Angle(0, -90, 0)
|
||||
},
|
||||
InstalledEles = {"magazine"},
|
||||
},
|
||||
{
|
||||
PrintName = "Pistol Grip",
|
||||
Slot = {"eft_ak_pgrip"},
|
||||
Bone = "mod_pistol_grip",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/pgrip_std.png"),
|
||||
DefaultAttName = "6P4 Texolite Grip",
|
||||
--DefaultAttIcon = Material("vgui/entities/eft_aks74u/stock_unfolded.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(0, -90, 0)
|
||||
},
|
||||
InstalledEles = {"pgrip"},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"eft_aks74u_stock", "eftaks_stock"},
|
||||
Bone = "mod_stock",
|
||||
DefaultAttName = "Unfolded Stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_aks74u/stock_unfolded.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(0, 0, 0)
|
||||
},
|
||||
InstalledEles = {"Stock_Gone"},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
Slot = {"eft_ammo_545x39"},
|
||||
Bone = "mod_stock",
|
||||
DefaultAttName = "5.45x39mm BP ammo",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/762x51_icon.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(0, 0, 0)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.25,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = {"ready_1", "ready_2", "ready_3"},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.8,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_up.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_down.wav",
|
||||
t = 0.9
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 0.1,
|
||||
FrameRate = 300,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 0.1,
|
||||
FrameRate = 300,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 1.7, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.2, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_up.wav",
|
||||
t = 4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_down.wav",
|
||||
t = 4.4
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_saiga"] = {
|
||||
Source = "reload_saiga",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_saiga_empty"] = {
|
||||
Source = "reload_saiga_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 1.7, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.2, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_up.wav",
|
||||
t = 4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_down.wav",
|
||||
t = 4.4
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_6l31"] = {
|
||||
Source = "reload_6l31",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_6l31_empty"] = {
|
||||
Source = "reload_6l31_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 1.7, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.2, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_up.wav",
|
||||
t = 4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_down.wav",
|
||||
t = 4.4
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_drum"] = {
|
||||
Source = "reload_drum",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_drum_empty"] = {
|
||||
Source = "reload_drum_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 1.7, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.2, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magrelease_button.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magout_plastic.wav",
|
||||
t = 0.65
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_magin_plastic.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_up.wav",
|
||||
t = 4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_aks74u/ak74_slider_down.wav",
|
||||
t = 4.4
|
||||
}
|
||||
},
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "customize_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "customize_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "customize_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,444 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "MP-153"
|
||||
SWEP.TrueName = "MP-153"
|
||||
SWEP.Trivia_Class = "Semi-automatic shotgun"
|
||||
SWEP.Trivia_Desc = "Smoothbore multi-shot. MP-153 shotgun, produced by Izhmekh. Reliable and practical hunting and self-defence weapon."
|
||||
SWEP.Trivia_Manufacturer = "Izhmekh"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Gas-operated Rotating bolt"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 2000
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/darsu_eft/c_mp153.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/darsu_eft/c_mp153.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Num = 8 -- number of shots per trigger pull.
|
||||
SWEP.Damage = 9
|
||||
SWEP.DamageMin = 9 -- damage done at maximum range
|
||||
SWEP.RangeMin = 20 -- in METRES
|
||||
SWEP.Range = 70 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 4 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 8
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 415
|
||||
|
||||
SWEP.TriggerDelay = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
SWEP.ReloadInSights_FOVMult = 1
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 2
|
||||
SWEP.RecoilRise = 0.3
|
||||
SWEP.RecoilPunch = 2.5
|
||||
SWEP.VisualRecoilMult = 10
|
||||
SWEP.RecoilPunchBackMax = 18
|
||||
SWEP.RecoilPunchBackMaxSights = 19 -- may clip with scopes
|
||||
|
||||
SWEP.Delay = 60 / 120 -- 60 / RPM.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 60 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 350 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 300
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot" -- what ammo type the gun uses
|
||||
SWEP.MagID = "MP153" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = {"weapons/darsu_eft/mp153/mr153_fire_close1.wav", "weapons/darsu_eft/mp153/mr153_fire_close2.wav"}
|
||||
SWEP.ShootSoundSilenced = "weapons/darsu_eft/mp153/mr133_fire_silenced_close.wav"
|
||||
SWEP.DistantShootSound = {"weapons/darsu_eft/mp153/mr153_fire_distant1.wav", "weapons/darsu_eft/mp153/mr153_fire_distant2.wav"}
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellModel = "models/weapons/arccw/eft_shells/patron_12x70_shell.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.5
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.SpeedMult = 0.95
|
||||
SWEP.SightedSpeedMult = 0.8
|
||||
SWEP.SightTime = 0.5*0.93
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4.281, -2, 0.681),
|
||||
Ang = Angle(0.25, 0.004, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.Jamming = false
|
||||
SWEP.HeatCapacity = 9
|
||||
SWEP.HeatDissipation = 0.3
|
||||
SWEP.HeatLockout = true -- overheating means you cannot fire until heat has been fully depleted
|
||||
SWEP.HeatFix = true -- when the "fix" animation is played, all heat is restored.
|
||||
|
||||
SWEP.Malfunction = false
|
||||
SWEP.MalfunctionJam = false -- After a malfunction happens, the gun will dryfire until reload is pressed. If unset, instead plays animation right after.
|
||||
SWEP.MalfunctionTakeRound = false -- When malfunctioning, a bullet is consumed.
|
||||
SWEP.MalfunctionWait = 0 -- The amount of time to wait before playing malfunction animation (or can reload)
|
||||
SWEP.MalfunctionMean = 48 -- The mean number of shots between malfunctions, will be autocalculated if nil
|
||||
SWEP.MalfunctionVariance = 0.2 -- The fraction of mean for variance. e.g. 0.2 means 20% variance
|
||||
SWEP.MalfunctionSound = "weapons/arccw/malfunction.wav"
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL
|
||||
|
||||
SWEP.ActivePos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-1.2, -4.5, 0.2)
|
||||
SWEP.CrouchAng = Angle(0, 0, -6)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
SWEP.BarrelOffsetCrouch = Vector(0, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[1] = {"shellport", "patron_in_weapon"},
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["sightmount"] = {VMBodygroups = {{ind = 4, bg = 1}},},
|
||||
["bottommount"] = {VMBodygroups = {{ind = 5, bg = 1}},},
|
||||
|
||||
["b660"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, 46, 1.8),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
},
|
||||
["b710"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, 47.8, 1.8),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
["b750"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 3}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, 49.4, 1.8),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
},
|
||||
["m5"] = {VMBodygroups = {{ind = 3, bg = 1}},},
|
||||
["m6"] = {VMBodygroups = {{ind = 3, bg = 2}},},
|
||||
["m7"] = {VMBodygroups = {{ind = 3, bg = 3}},},
|
||||
["m8"] = {VMBodygroups = {{ind = 3, bg = 4}},},
|
||||
|
||||
["swooden"] = {VMBodygroups = {{ind = 6, bg = 1}},},
|
||||
["spistol"] = {VMBodygroups = {{ind = 6, bg = 2}},},
|
||||
|
||||
["12rip"] = {VMBodygroups = {{ind = 10, bg = 1}},},
|
||||
["12fl"] = {VMBodygroups = {{ind = 10, bg = 2}},},
|
||||
["12dss"] = {VMBodygroups = {{ind = 10, bg = 3}},},
|
||||
["12bmg"] = {VMBodygroups = {{ind = 10, bg = 4}},},
|
||||
["12ap20"] = {VMBodygroups = {{ind = 10, bg = 5}},},
|
||||
["12ftx"] = {VMBodygroups = {{ind = 10, bg = 6}},},
|
||||
["12g40"] = {VMBodygroups = {{ind = 10, bg = 7}},},
|
||||
["12cop"] = {VMBodygroups = {{ind = 10, bg = 8}},},
|
||||
["12p3"] = {VMBodygroups = {{ind = 10, bg = 9}},},
|
||||
["12p6u"] = {VMBodygroups = {{ind = 10, bg = 10}},},
|
||||
["12sfp"] = {VMBodygroups = {{ind = 10, bg = 11}},},
|
||||
|
||||
["12lead"] = {VMBodygroups = {{ind = 10, bg = 10}},},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 6
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10, 5.5, -2),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.ShotgunReload = true
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "None",
|
||||
//DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_sights_standard.png"),
|
||||
Slot = {"eft_optic_small", "eft_optic_medium", "eft_optic_large"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
InstalledEles = {"sightmount"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 17, 2.7),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel", -- print name
|
||||
DefaultAttName = "610mm barrel",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp153_b610.png"),
|
||||
Slot = "eft_mp153_barrel", -- what kind of attachments can fit here, can be string or table
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device",
|
||||
Slot = "eft_muzzle_12g",
|
||||
Bone = "weapon",
|
||||
DefaultAttName = "None",
|
||||
-- DefaultAttIcon = Material("vgui/entities/eft_attachments/att_scarl_muzzle_std.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 44, 1.8),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine", -- print name
|
||||
DefaultAttName = "4-shell",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp153_m4.png"),
|
||||
Slot = "eft_mp153_mag", -- what kind of attachments can fit here, can be string or table
|
||||
},
|
||||
{
|
||||
PrintName = "Stock", -- print name
|
||||
DefaultAttName = "Plastic stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp153_stock_std.png"),
|
||||
Slot = "eft_mp153_stock", -- what kind of attachments can fit here, can be string or table
|
||||
},
|
||||
{
|
||||
PrintName = "Left Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = {"eft_tactical"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"bottommount"},
|
||||
Offset = {
|
||||
vpos = Vector(1.3, 33.5, 1.35),
|
||||
vang = Angle(0, -90, 120),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Bottom Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = {"eft_tactical"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"bottommount"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 33.5, -.9),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Right Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = {"eft_tactical"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"bottommount"},
|
||||
Offset = {
|
||||
vpos = Vector(-1.3, 33.5, 1.35),
|
||||
vang = Angle(0, -90, 240),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo",
|
||||
DefaultAttName = "12/70 7mm buckshot",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/ammo/12g_def.png"),
|
||||
Slot = "ammo_eft_12"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_holster.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["ready"] = {
|
||||
Source = {"ready0", "ready1", "ready2"},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.4},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 0.8},
|
||||
},
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 0.15,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_trigger_hammer.wav", t = 0.05}
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
["sgreload_start"] = {
|
||||
Source = "reload_start",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
},
|
||||
},
|
||||
["sgreload_start_empty"] = {
|
||||
Source = "reload_start_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_pickup.wav", t = 0.15},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_in_port.wav", t = 0.85},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.2},
|
||||
},
|
||||
},
|
||||
["sgreload_insert"] = {
|
||||
Source = "reload_loop",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_pickup.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_in_mag2.wav", t = 0.3},
|
||||
},
|
||||
},
|
||||
["sgreload_finish"] = {
|
||||
Source = "reload_end",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handon.wav", t = 0.1},
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect"] = {
|
||||
Source = "enter_inspect",
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["idle_inspect"] = {
|
||||
Source = "idle_inspect",
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "exit_inspect",
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 1.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.8},
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = {"jam0","jam1","jam2"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.8},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_out_mag.wav", t = 1.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.52},
|
||||
},
|
||||
},
|
||||
["fix"] = {
|
||||
Source = {"misfire0","misfire1","misfire2"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
-- ShellEjectAt = 0.8,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.7},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_out_mag.wav", t = 0.75},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 0.9},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,749 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "MP-155"
|
||||
SWEP.TrueName = "MP-155"
|
||||
SWEP.Trivia_Class = "Semi-automatic shotgun"
|
||||
SWEP.Trivia_Desc = "Russian smoothbore multi-shot MP-155 12 gauge shotgun, manufactured by IzhMekh (\"Izhevsky Mechanical Plant\"). The gun weighs less than its predecessor MP-153 and features enhanced ergonomics and an easy-to-replace barrel mechanism. The new design also makes it easier to use for left-handed users."
|
||||
SWEP.Trivia_Manufacturer = "Izhmekh"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Gas-operated Rotating bolt"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 2017
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/darsu_eft/c_mp153.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/darsu_eft/c_mp153.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "1415003000"
|
||||
|
||||
SWEP.Num = 8 -- number of shots per trigger pull.
|
||||
SWEP.Damage = 10
|
||||
SWEP.DamageMin = 10 -- damage done at maximum range
|
||||
SWEP.RangeMin = 20 -- in METRES
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 4 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 8
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 415
|
||||
|
||||
SWEP.TriggerDelay = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
SWEP.ReloadInSights_FOVMult = 1
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 2
|
||||
|
||||
SWEP.RecoilRise = 0.3
|
||||
SWEP.RecoilPunch = 2.5
|
||||
SWEP.VisualRecoilMult = 10
|
||||
SWEP.RecoilPunchBackMax = 18
|
||||
SWEP.RecoilPunchBackMaxSights = 19 -- may clip with scopes
|
||||
|
||||
SWEP.Delay = 60 / 120 -- 60 / RPM.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 48 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 350 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 300
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot" -- what ammo type the gun uses
|
||||
SWEP.MagID = "MP153" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = {"weapons/darsu_eft/mp153/mr153_fire_close1.wav", "weapons/darsu_eft/mp153/mr153_fire_close2.wav"}
|
||||
SWEP.ShootSoundSilenced = "weapons/darsu_eft/mp153/mr133_fire_silenced_close.wav"
|
||||
SWEP.DistantShootSound = {"weapons/darsu_eft/mp153/mr153_fire_distant1.wav", "weapons/darsu_eft/mp153/mr153_fire_distant2.wav"}
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellModel = "models/weapons/arccw/eft_shells/patron_12x70_shell.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.5
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.8
|
||||
SWEP.SightTime = 0.5*1.07
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4.281, -2, 0.681),
|
||||
Ang = Angle(0.25, 0.004, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.Jamming = false
|
||||
SWEP.HeatCapacity = 9
|
||||
SWEP.HeatDissipation = 0.3
|
||||
SWEP.HeatLockout = true -- overheating means you cannot fire until heat has been fully depleted
|
||||
SWEP.HeatFix = true -- when the "fix" animation is played, all heat is restored.
|
||||
|
||||
SWEP.Malfunction = false
|
||||
SWEP.MalfunctionJam = false -- After a malfunction happens, the gun will dryfire until reload is pressed. If unset, instead plays animation right after.
|
||||
SWEP.MalfunctionTakeRound = false -- When malfunctioning, a bullet is consumed.
|
||||
SWEP.MalfunctionWait = 0 -- The amount of time to wait before playing malfunction animation (or can reload)
|
||||
SWEP.MalfunctionMean = 48 -- The mean number of shots between malfunctions, will be autocalculated if nil
|
||||
SWEP.MalfunctionVariance = 0.2 -- The fraction of mean for variance. e.g. 0.2 means 20% variance
|
||||
SWEP.MalfunctionSound = "weapons/arccw/malfunction.wav"
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL
|
||||
|
||||
SWEP.ActivePos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-1.2, -4.5, 0.2)
|
||||
SWEP.CrouchAng = Angle(0, 0, -6)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
SWEP.BarrelOffsetCrouch = Vector(0, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0.2, -3.5, 0.7)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 28
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[1] = {"shellport", "patron_in_weapon"},
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["sightmount"] = {VMBodygroups = {{ind = 4, bg = 1}},},
|
||||
["bottommount"] = {VMBodygroups = {{ind = 5, bg = 2}},},
|
||||
|
||||
|
||||
["m5"] = {VMBodygroups = {{ind = 3, bg = 6}},},
|
||||
["m6"] = {VMBodygroups = {{ind = 3, bg = 7}},},
|
||||
["m7"] = {VMBodygroups = {{ind = 3, bg = 8}},},
|
||||
["m8"] = {VMBodygroups = {{ind = 3, bg = 9}},},
|
||||
|
||||
["ultimapistol"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 4}},
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-4.281, -4.5, -1.0),
|
||||
Ang = Angle(0.25, 0.004, 0),
|
||||
Magnification = 1.5,
|
||||
}
|
||||
},
|
||||
["ultimatoprail"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}},
|
||||
AttPosMods = {
|
||||
[1] = {
|
||||
vpos = Vector(0, 19, 2.9),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-4.281, -4.5, -1.0),
|
||||
Ang = Angle(0.25, 0.004, 0),
|
||||
Magnification = 1.5,
|
||||
},
|
||||
NameChange = "MP-155 Ultima",
|
||||
TrueNameChange = "MP-155 Ultima",
|
||||
},
|
||||
["ultimastock"] = {VMBodygroups = {{ind = 8, bg = 1}},},
|
||||
|
||||
["ultimapistolend"] = {VMBodygroups = {{ind = 7, bg = 1}},},
|
||||
["ultimastockendL"] = {VMBodygroups = {{ind = 7, bg = 2}},},
|
||||
["ultimastockendM"] = {VMBodygroups = {{ind = 7, bg = 3}},},
|
||||
["ultimastockendS"] = {VMBodygroups = {{ind = 7, bg = 4}},},
|
||||
|
||||
["ultimacamera"] = {VMBodygroups = {{ind = 9, bg = 1}},},
|
||||
|
||||
["ultimahg"] = {VMBodygroups = {{ind = 2, bg = 2}},},
|
||||
|
||||
["12rip"] = {VMBodygroups = {{ind = 10, bg = 1}},},
|
||||
["12fl"] = {VMBodygroups = {{ind = 10, bg = 2}},},
|
||||
["12dss"] = {VMBodygroups = {{ind = 10, bg = 3}},},
|
||||
["12bmg"] = {VMBodygroups = {{ind = 10, bg = 4}},},
|
||||
["12ap20"] = {VMBodygroups = {{ind = 10, bg = 5}},},
|
||||
["12ftx"] = {VMBodygroups = {{ind = 10, bg = 6}},},
|
||||
["12g40"] = {VMBodygroups = {{ind = 10, bg = 7}},},
|
||||
["12cop"] = {VMBodygroups = {{ind = 10, bg = 8}},},
|
||||
["12p3"] = {VMBodygroups = {{ind = 10, bg = 9}},},
|
||||
["12p6u"] = {VMBodygroups = {{ind = 10, bg = 10}},},
|
||||
["12sfp"] = {VMBodygroups = {{ind = 10, bg = 11}},},
|
||||
|
||||
["12lead"] = {VMBodygroups = {{ind = 10, bg = 10}},},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 6
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10, 5.5, -2),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.ShotgunReload = true
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "None",
|
||||
//DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_sights_standard.png"),
|
||||
Slot = {"eft_optic_small", "eft_optic_medium", "eft_optic_large"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
InstalledEles = {"sightmount"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 17, 2.7),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Bodykit", -- print name
|
||||
DefaultAttName = "Default",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp155_kit_std.png"),
|
||||
Slot = "eft_mp155_kit", -- what kind of attachments can fit here, can be string or table
|
||||
GivesFlags = {"ultima"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device",
|
||||
Slot = "eft_muzzle_12g",
|
||||
Bone = "weapon",
|
||||
DefaultAttName = "None",
|
||||
-- DefaultAttIcon = Material("vgui/entities/eft_attachments/att_scarl_muzzle_std.png"),
|
||||
Offset = {
|
||||
vpos = Vector(0, 40, 1.8),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine", -- print name
|
||||
DefaultAttName = "4-shell",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp153_m4.png"),
|
||||
Slot = "eft_mp153_mag", -- what kind of attachments can fit here, can be string or table
|
||||
Installed = "mag_eft_mp153_6",
|
||||
},
|
||||
{
|
||||
PrintName = "Stock", -- print name
|
||||
DefaultAttName = "Walnut stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/mp155_stock_std.png"),
|
||||
Slot = "eft_mp155_stock", -- what kind of attachments can fit here, can be string or table
|
||||
GivesFlags = {"ultimacam"},
|
||||
},
|
||||
{
|
||||
PrintName = "Right Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = {"eft_tactical"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
RequireFlags = {"ultima"},
|
||||
HideIfBlocked = true,
|
||||
Offset = {
|
||||
vpos = Vector(-1.17, 33.4, 1.7),
|
||||
vang = Angle(0, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "eft_foregrip",
|
||||
Bone = "mod_mount_000",
|
||||
DefaultAttName = "No Underbarrel",
|
||||
Offset = {
|
||||
vpos = Vector(0, -5.5, -1.2),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
InstalledEles = {"bottommount"},
|
||||
RequireFlags = {"ultima"},
|
||||
},
|
||||
{
|
||||
PrintName = "Top Gadget", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
Slot = {"eft_tactical_big", "eft_mp155_tac"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
RequireFlags = {"ultima"},
|
||||
HideIfBlocked = true,
|
||||
Offset = {
|
||||
vpos = Vector(0, 33, 2.9),
|
||||
vang = Angle(0, -90, 180),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo",
|
||||
DefaultAttName = "12/70 7mm buckshot",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/ammo/12g_def.png"),
|
||||
Slot = "ammo_eft_12"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_holster.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["ready"] = {
|
||||
Source = {"ready0", "ready1", "ready2"},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.4},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 0.8},
|
||||
},
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 0.15,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_trigger_hammer.wav", t = 0.05}
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
["sgreload_start"] = {
|
||||
Source = "reload_start",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
},
|
||||
},
|
||||
["sgreload_start_empty"] = {
|
||||
Source = "reload_start_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_pickup.wav", t = 0.15},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_in_port.wav", t = 0.85},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.2},
|
||||
},
|
||||
},
|
||||
["sgreload_insert"] = {
|
||||
Source = "reload_loop",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_pickup.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_in_mag2.wav", t = 0.3},
|
||||
},
|
||||
},
|
||||
["sgreload_finish"] = {
|
||||
Source = "reload_end",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handon.wav", t = 0.1},
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect"] = {
|
||||
Source = "enter_inspect",
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
},
|
||||
},
|
||||
|
||||
["idle_inspect"] = {
|
||||
Source = "idle_inspect",
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "exit_inspect",
|
||||
SoundTable = {
|
||||
{s = "weapons/darsu_eft/mp153/mr133_draw.wav", t = 0.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 1.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.8},
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = {"jam0","jam1","jam2"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.8},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_out_mag.wav", t = 1.2},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 1.52},
|
||||
},
|
||||
},
|
||||
["fix"] = {
|
||||
Source = {"misfire0","misfire1","misfire2"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
-- ShellEjectAt = 0.8,
|
||||
SoundTable = {
|
||||
{s = "eft_shared/weap_handoff.wav", t = 0},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_up.wav", t = 0.7},
|
||||
{s = "weapons/darsu_eft/mp153/mr133_shell_out_mag.wav", t = 0.75},
|
||||
{s = "weapons/darsu_eft/mp153/mr153_slider_down.wav", t = 0.9},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
if CLIENT then
|
||||
-- Stuff to always draw thermal on this shotgun if camera is installed
|
||||
-- Mostly copied from arccw's cl_holosight.lua
|
||||
|
||||
local blackColor = Color(0, 0, 0)
|
||||
|
||||
local rtsize = ScrH()
|
||||
local rtmat = GetRenderTarget("arccw_rtmat_ultima", rtsize, rtsize, false)
|
||||
|
||||
local rtmaterial = CreateMaterial( "arccw_rtmat_ultima", "UnlitGeneric", {
|
||||
['$basetexture'] = rtmat:GetName(),
|
||||
} );
|
||||
|
||||
local colormod2 = Material("pp/colour")
|
||||
local pp_ca_base, pp_ca_r, pp_ca_g, pp_ca_b = Material("pp/arccw/ca_base"), Material("pp/arccw/ca_r"), Material("pp/arccw/ca_g"), Material("pp/arccw/ca_b")
|
||||
local pp_ca_r_thermal, pp_ca_g_thermal, pp_ca_b_thermal = Material("pp/arccw/ca_r_thermal"), Material("pp/arccw/ca_g_thermal"), Material("pp/arccw/ca_b_thermal")
|
||||
|
||||
pp_ca_r:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
pp_ca_g:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
pp_ca_b:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
|
||||
pp_ca_r_thermal:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
pp_ca_g_thermal:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
pp_ca_b_thermal:SetTexture("$basetexture", render.GetScreenEffectTexture())
|
||||
|
||||
local coldtime = 30
|
||||
|
||||
local reticle = Material("hud/scopes/ultimareticle6.png")
|
||||
|
||||
function SWEP:UltimaFormRTScope()
|
||||
cam.Start3D()
|
||||
|
||||
-- ArcCW.Overdraw = true
|
||||
-- ArcCW.LaserBehavior = true
|
||||
-- ArcCW.VMInRT = true
|
||||
|
||||
local rtangles, rtpos, rtdrawvm
|
||||
|
||||
if GetConVar("arccw_drawbarrel"):GetBool() and GetConVar("arccw_vm_coolsway"):GetBool() then
|
||||
rtangles = self.VMAng - self.VMAngOffset
|
||||
rtangles.x = rtangles.x - self.VMPosOffset_Lerp.z * 10
|
||||
rtangles.y = rtangles.y + self.VMPosOffset_Lerp.y * 10
|
||||
|
||||
rtpos = self.VMPos + self.VMAng:Forward() * 15
|
||||
else
|
||||
rtangles = EyeAngles()
|
||||
rtpos = EyePos()
|
||||
end
|
||||
|
||||
local addads = 1
|
||||
|
||||
local rt = {
|
||||
w = rtsize,
|
||||
h = rtsize,
|
||||
angles = rtangles,
|
||||
origin = rtpos,
|
||||
drawviewmodel = false,
|
||||
fov = 15,
|
||||
}
|
||||
|
||||
rtsize = ScrH()
|
||||
|
||||
if ScrH() > ScrW() then rtsize = ScrW() end
|
||||
|
||||
local rtres = ScrH()*0.2
|
||||
|
||||
rtmat = GetRenderTarget("arccw_rtmat_ultima", rtres, rtres, false)
|
||||
|
||||
render.PushRenderTarget(rtmat, 0, 0, rtsize, rtsize)
|
||||
|
||||
render.ClearRenderTarget(rt, blackColor)
|
||||
|
||||
-- if self:GetState() == ArcCW.STATE_SIGHTS then
|
||||
render.RenderView(rt)
|
||||
cam.Start3D(EyePos(), EyeAngles(), rt.fov, 0, 0, nil, nil, 0, nil)
|
||||
self:DoLaser(false)
|
||||
cam.End3D()
|
||||
-- end
|
||||
|
||||
-- ArcCW.Overdraw = false
|
||||
-- ArcCW.LaserBehavior = false
|
||||
-- ArcCW.VMInRT = false
|
||||
|
||||
-- self:FormPP(rtmat)
|
||||
|
||||
render.PopRenderTarget()
|
||||
|
||||
cam.End3D()
|
||||
|
||||
-- if asight.Thermal then
|
||||
self:UltimaFormThermalImaging(rtmat)
|
||||
-- end
|
||||
end
|
||||
|
||||
local function IsWHOT(ent)
|
||||
if !ent:IsValid() or ent:IsWorld() then return false end
|
||||
|
||||
if ent:IsPlayer() then -- balling
|
||||
if ent.ArcticMedShots_ActiveEffects and ent.ArcticMedShots_ActiveEffects["coldblooded"] or ent:Health() <= 0 then return false end -- arc stims
|
||||
return true
|
||||
end
|
||||
|
||||
if ent:IsNPC() or ent:IsNextBot() then -- npcs
|
||||
if ent.ArcCWCLHealth and ent.ArcCWCLHealth <= 0 or ent:Health() <= 0 then return false end
|
||||
return true
|
||||
end
|
||||
|
||||
if ent:IsRagdoll() then -- ragdolling
|
||||
if !ent.ArcCW_ColdTime then ent.ArcCW_ColdTime = CurTime() + coldtime end
|
||||
return ent.ArcCW_ColdTime > CurTime()
|
||||
end
|
||||
|
||||
if ent:IsVehicle() or ent:IsOnFire() or ent.ArcCW_Hot or ent:IsScripted() and !ent:GetOwner():IsValid() then -- vroom vroom + :fire: + ents but not guns (guns on ground will be fine)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function SWEP:UltimaFormThermalImaging(tex)
|
||||
if !tex then
|
||||
tex = render.GetRenderTarget()
|
||||
end
|
||||
|
||||
render.PushRenderTarget(tex)
|
||||
|
||||
cam.Start3D()
|
||||
|
||||
if tex then
|
||||
colormod2:SetTexture("$fbtexture", tex)
|
||||
else
|
||||
colormod2:SetTexture("$fbtexture", render.GetScreenEffectTexture())
|
||||
end
|
||||
|
||||
local nvsc = {r=255+0, g=255+1, b=255+16/255}
|
||||
local tvsc = {r=-255, g=-255, b=-255}
|
||||
|
||||
local tab = ents.GetAll()
|
||||
|
||||
-- table.Add(tab, player.GetAll())
|
||||
-- table.Add(tab, ents.FindByClass("npc_*"))
|
||||
|
||||
render.SetStencilEnable(true)
|
||||
render.SetStencilWriteMask(255)
|
||||
render.SetStencilTestMask(255)
|
||||
render.ClearStencil()
|
||||
|
||||
local sw = ScrH()
|
||||
local sh = sw
|
||||
|
||||
local sx = (ScrW() - sw) / 2
|
||||
local sy = (ScrH() - sh) / 2
|
||||
|
||||
render.SetScissorRect( sx, sy, sx + sw, sy + sh, true )
|
||||
|
||||
render.SetStencilReferenceValue(64)
|
||||
|
||||
render.SetStencilPassOperation(STENCIL_REPLACE)
|
||||
render.SetStencilFailOperation(STENCIL_KEEP)
|
||||
render.SetStencilZFailOperation(STENCIL_KEEP)
|
||||
render.SetStencilCompareFunction(STENCIL_ALWAYS)
|
||||
|
||||
for _, v in pairs(tab) do
|
||||
|
||||
if !IsWHOT(v) then continue end
|
||||
|
||||
-- if !asight.ThermalScopeSimple then
|
||||
render.SetBlend(0.5)
|
||||
render.SuppressEngineLighting(true)
|
||||
|
||||
render.SetColorModulation(250, 250, 250)
|
||||
|
||||
v:DrawModel()
|
||||
-- end
|
||||
end
|
||||
|
||||
render.SetColorModulation(1, 1, 1)
|
||||
|
||||
render.SuppressEngineLighting(false)
|
||||
|
||||
render.MaterialOverride()
|
||||
|
||||
render.SetBlend(1)
|
||||
|
||||
render.SetStencilCompareFunction(STENCIL_EQUAL)
|
||||
|
||||
|
||||
DrawColorModify({
|
||||
["$pp_colour_addr"] = 0,
|
||||
["$pp_colour_addg"] = 0,
|
||||
["$pp_colour_addb"] = 0,
|
||||
["$pp_colour_brightness"] = 0,
|
||||
["$pp_colour_contrast"] = 1,
|
||||
["$pp_colour_colour"] = 0,
|
||||
["$pp_colour_mulr"] = 0,
|
||||
["$pp_colour_mulg"] = 0,
|
||||
["$pp_colour_mulb"] = 0
|
||||
})
|
||||
|
||||
DrawColorModify({
|
||||
["$pp_colour_addr"] = tvsc.r - 255,
|
||||
["$pp_colour_addg"] = tvsc.g - 255,
|
||||
["$pp_colour_addb"] = tvsc.b - 255,
|
||||
["$pp_colour_addr"] = 0,
|
||||
["$pp_colour_addg"] = 0,
|
||||
["$pp_colour_addb"] = 0,
|
||||
["$pp_colour_brightness"] = 0,
|
||||
["$pp_colour_contrast"] = 1,
|
||||
["$pp_colour_colour"] = 1,
|
||||
["$pp_colour_mulr"] = 0,
|
||||
["$pp_colour_mulg"] = 0,
|
||||
["$pp_colour_mulb"] = 0
|
||||
})
|
||||
|
||||
-- if !asight.ThermalNoCC then
|
||||
render.SetStencilCompareFunction(STENCIL_NOTEQUAL)
|
||||
render.SetStencilPassOperation(STENCIL_KEEP)
|
||||
|
||||
|
||||
if GetConVar("arccw_thermalpp"):GetBool() and GetConVar("arccw_scopepp"):GetBool() then
|
||||
-- chromatic abberation
|
||||
|
||||
render.CopyRenderTargetToTexture(render.GetScreenEffectTexture())
|
||||
|
||||
render.SetMaterial( pp_ca_base )
|
||||
render.DrawScreenQuad()
|
||||
render.SetMaterial( pp_ca_r_thermal )
|
||||
render.DrawScreenQuad()
|
||||
render.SetMaterial( pp_ca_g_thermal )
|
||||
render.DrawScreenQuad()
|
||||
render.SetMaterial( pp_ca_b_thermal )
|
||||
render.DrawScreenQuad()
|
||||
-- pasted here cause otherwise either target colors will get fucked either pp either motion blur
|
||||
end
|
||||
|
||||
DrawColorModify({
|
||||
["$pp_colour_addr"] = nvsc.r - 255,
|
||||
["$pp_colour_addg"] = nvsc.g - 255,
|
||||
["$pp_colour_addb"] = nvsc.b - 255,
|
||||
-- ["$pp_colour_addr"] = 0,
|
||||
-- ["$pp_colour_addg"] = 0,
|
||||
-- ["$pp_colour_addb"] = 0,
|
||||
["$pp_colour_brightness"] = 0.1,
|
||||
["$pp_colour_contrast"] = 0.5,
|
||||
["$pp_colour_colour"] = 0.12,
|
||||
["$pp_colour_mulr"] = 0,
|
||||
["$pp_colour_mulg"] = 0,
|
||||
["$pp_colour_mulb"] = 0
|
||||
})
|
||||
-- end
|
||||
|
||||
render.SetScissorRect( sx, sy, sx + sw, sy + sh, false )
|
||||
|
||||
render.SetStencilEnable(false)
|
||||
|
||||
colormod2:SetTexture("$fbtexture", render.GetScreenEffectTexture())
|
||||
|
||||
cam.End3D()
|
||||
|
||||
if GetConVar("arccw_thermalpp"):GetBool() then
|
||||
if !render.SupportsPixelShaders_2_0() then return end
|
||||
|
||||
DrawSharpen(0.3,0.9)
|
||||
DrawBloom(0,0.3,5,5,3,0.5,1,1,1)
|
||||
-- DrawMotionBlur(0.7,1,1/(15)) -- seems to break shit
|
||||
end
|
||||
|
||||
|
||||
cam.Start2D()
|
||||
surface.SetMaterial(reticle)
|
||||
surface.SetDrawColor(255, 255, 255, 255)
|
||||
surface.DrawTexturedRect(0, 0, ScrH(), ScrH())
|
||||
cam.End2D()
|
||||
|
||||
render.PopRenderTarget()
|
||||
end
|
||||
|
||||
local fpsdelay = CurTime()
|
||||
|
||||
hook.Add("RenderScene", "ArcCW_ULTIMA_CAM", function()
|
||||
local wpn = LocalPlayer():GetActiveWeapon()
|
||||
|
||||
if wpn.ArcCW and wpn:GetClass() == "arccw_eft_mp155" and wpn.Attachments[8].Installed == "tac_eft_mp155_ultima_camera" then
|
||||
if fpsdelay > CurTime() then return end
|
||||
wpn:UltimaFormRTScope()
|
||||
wpn.Owner:GetViewModel():SetSubMaterial(28, "!arccw_rtmat_ultima")
|
||||
fpsdelay = CurTime()+1/15
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -0,0 +1,520 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Oldie Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Regiment 9mm"
|
||||
SWEP.TrueName = "MP5"
|
||||
SWEP.Trivia_Class = "Submachine-Gun"
|
||||
SWEP.Trivia_Desc = "HK MP5 9x19 submachinegun with Navy 3 Round Burst firing mechanism version, which features three-round cutoff. Widely acclaimed model of a submachinegun, primarily known as weapon of GSG9 and similar forces of the world, and famous through frequent appearance in movies and video games."
|
||||
SWEP.Trivia_Manufacturer = "Heckler and Koch"
|
||||
SWEP.Trivia_Calibre = "9x19mm"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Germany"
|
||||
SWEP.Trivia_Year = 1966
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then SWEP.PrintName = SWEP.TrueName end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_mp5/c_eft_mp5_std/models/c_eft_mp5_std.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arc_eft_mp5/w_eft_mp5_std/models/w_eft_mp5_std.mdl"
|
||||
SWEP.ViewModelFOV = 54
|
||||
|
||||
SWEP.Damage = 10
|
||||
SWEP.DamageMin = 10 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 400 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.CanFireUnderwater = false
|
||||
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 50
|
||||
SWEP.ReducedClipSize = 20
|
||||
|
||||
SWEP.Recoil = .38
|
||||
SWEP.RecoilSide = 0.125
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 800 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = -3,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 18 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 300 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "eft_mp5" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 110 -- pitch of shoot sound
|
||||
|
||||
SWEP.FirstShootSound = "weapons/arccw_eft/mp5k/mp5k_fp.wav"
|
||||
SWEP.ShootSound = "weapons/arccw_eft/mp5k/mp5k_fp.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw_eft/mp5k/mp5k_suppressed_fp.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft/mp5k/mp5k_dist.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_mp5"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellScale = 1.5
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.SightTime = 0.275
|
||||
|
||||
SWEP.SpeedMult = 0.96
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
|
||||
SWEP.BarrelLength = 20
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = true
|
||||
SWEP.ProceduralIronFire = true
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.642, -2, 2.05),
|
||||
Ang = Angle(-0.0, 0.0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "smg"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 0, 2)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(4, -2, 1)
|
||||
SWEP.HolsterAng = Angle(0, 50, -15)
|
||||
|
||||
SWEP.CustomizePos = Vector(-1.2 , 0, 1)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["Mount_scopes"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
WMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["Default_Stock"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
WMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["Magazine_30"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
WMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["Magazine_20"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 3}},
|
||||
WMBodygroups = {{ind = 4, bg = 3}},
|
||||
},
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 2}},
|
||||
WMBodygroups = {{ind = 4, bg = 2}},
|
||||
},
|
||||
["Default_Handguard"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
WMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
["Default_Muzzle"] = {
|
||||
VMBodygroups = {{ind = 7, bg = 1}},
|
||||
WMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vang = Angle(90, -90, -90),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(0, 0.5, 3.65),
|
||||
vmax = Vector(0, -1.6, 3.7),
|
||||
wmin = Vector(5.5, 0.5, -5.8),
|
||||
wmax = Vector(6.5, 0.5, -5.9),
|
||||
},
|
||||
InstalledEles = {"Mount_scopes"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device",
|
||||
DefaultAttName = "3 Lug adapter",
|
||||
Slot = {"eft_muzzle_mp5", "eft_surpressor_9mm"},
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/3lug_muzzleicon.png"),
|
||||
Bone = "mod_reciever",
|
||||
Offset = {
|
||||
vpos = Vector(0, 9.5, 2.25),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(16.6, 0.5, -5.3),
|
||||
wang = Angle(-5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"Default_Muzzle"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_reciever",
|
||||
Offset = {
|
||||
vpos = Vector(-.9, 5.5, 2), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, -90),
|
||||
wpos = Vector(13, -0.45, -4.95),
|
||||
wang = Angle(-5, 0, 90),
|
||||
},
|
||||
RequireFlags = {"siderail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "eft_foregrip",
|
||||
Bone = "mod_reciever",
|
||||
DefaultAttName = "No Underbarrel",
|
||||
Offset = {
|
||||
vpos = Vector(0, 6, 1.25),
|
||||
vang = Angle(90, -90, -90),
|
||||
wpos = Vector(12, 0, -4),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
RequireFlags = {"lowerrail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "eftmp5_stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/A2_StockIcon.png"),
|
||||
Bone = "mod_stock",
|
||||
DefaultAttName = "A2 Stock",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(2, 0.5, -3),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
InstalledEles = {"Default_Stock"},
|
||||
},
|
||||
{
|
||||
PrintName = "Handguard",
|
||||
Slot = "eftmp5_handguard",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/Navy_HandguardIcon.png"),
|
||||
Bone = "mod_reciever",
|
||||
DefaultAttName = "Navy Handguard",
|
||||
Offset = {
|
||||
vpos = Vector(0, 5.25, 1.9), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(-90, -0, -90),
|
||||
wpos = Vector(12.25, 0.5, -4.75),
|
||||
wang = Angle(85, 0, 180)
|
||||
},
|
||||
InstalledEles = {"Default_Handguard"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
DefaultAttName = "30-Round Mag",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/MP5_30Mag_Icon.png"),
|
||||
InstalledEles = {"Magazine_30"},
|
||||
Slot = "eftmp5_mag"
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "9x19 Pst Gzh",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/9x19_Icon.png"),
|
||||
Slot = "ammo_eft_9x19"
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = false,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw_first",
|
||||
Time = 1.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.3
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 0.
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = 0.75,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 2,
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 1,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 1,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
Time = 1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 1,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_long"] = {
|
||||
Source = "reload_extended",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_short"] = {
|
||||
Source = "reload_decreased",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
["reload_long_empty"] = {
|
||||
Source = "reload_empty_extended",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
["reload_short_empty"] = {
|
||||
Source = "reload_empty_decreased",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "customise_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "customise_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "customise_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,474 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Oldie Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Regiment-SD 9mm"
|
||||
SWEP.TrueName = "MP5SD"
|
||||
SWEP.Trivia_Class = "Submachine-Gun"
|
||||
SWEP.Trivia_Desc = "HK MP5 9x19 submachinegun with Navy 3 Round Burst firing mechanism version, which features three-round cutoff. Widely acclaimed model of a submachinegun, primarily known as weapon of GSG9 and similar forces of the world, and famous through frequent appearance in movies and video games."
|
||||
SWEP.Trivia_Manufacturer = "Heckler and Koch"
|
||||
SWEP.Trivia_Calibre = "9x19mm"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Germany"
|
||||
SWEP.Trivia_Year = 1966
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then SWEP.PrintName = SWEP.TrueName end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_mp5/c_eft_mp5/models/c_eft_mp5.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arc_eft_mp5/w_eft_mp5/models/w_eft_mp5.mdl"
|
||||
SWEP.ViewModelFOV = 54
|
||||
|
||||
SWEP.Damage = 10
|
||||
SWEP.DamageMin = 10 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 400 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.CanFireUnderwater = false
|
||||
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 50
|
||||
SWEP.ReducedClipSize = 20
|
||||
|
||||
SWEP.Recoil = .36
|
||||
SWEP.RecoilSide = 0.125
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 800 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = -3,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 15 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 250 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 150
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "eft_mp5" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 110 -- pitch of shoot sound
|
||||
|
||||
SWEP.FirstShootSound = "weapons/arccw_eft/mp5k/mp5k_suppressed_fp.wav"
|
||||
SWEP.ShootSound = "weapons/arccw_eft/mp5k/mp5k_suppressed_fp.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw_eft/mp5k/mp5k_suppressed_fp.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft/mp5k/mp5k_suppressed_tp.wav"
|
||||
|
||||
SWEP.GMMuzzleEffect = true
|
||||
SWEP.MuzzleEffect = ""
|
||||
SWEP.NoFlash = true
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellScale = 1.5
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.SightTime = 0.275
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = true
|
||||
SWEP.ProceduralIronFire = true
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.642, -2, 2.05),
|
||||
Ang = Angle(-0.0, 0.0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "smg"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 0, 2)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(4, -2, 1)
|
||||
SWEP.HolsterAng = Angle(0, 50, -15)
|
||||
|
||||
SWEP.CustomizePos = Vector(-1.2 , 0, 1)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["Mount_scopes"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
WMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["Gadget_Mount"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
WMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["Default_Stock"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
WMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["Magazine_30"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
WMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
["Magazine_20"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 3}},
|
||||
WMBodygroups = {{ind = 5, bg = 3}},
|
||||
},
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 2}},
|
||||
WMBodygroups = {{ind = 5, bg = 2}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vang = Angle(90, -90, -90),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(0, 0.5, 3.65),
|
||||
vmax = Vector(0, -1.6, 3.7),
|
||||
wmin = Vector(5.5, 0.5, -5.8),
|
||||
wmax = Vector(6.5, 0.5, -5.9),
|
||||
},
|
||||
InstalledEles = {"Mount_scopes"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_reciever",
|
||||
Offset = {
|
||||
vpos = Vector(0, 10, 1), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(16.65, 0.5, -4),
|
||||
wang = Angle(-5, 0, 180),
|
||||
},
|
||||
InstalledEles = {"Gadget_Mount"},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "eftmp5_stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/A2_StockIcon.png"),
|
||||
Bone = "mod_stock",
|
||||
DefaultAttName = "A2 Stock",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(2, 0.5, -3),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
InstalledEles = {"Default_Stock"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
DefaultAttName = "30-Round Mag",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/MP5_30Mag_Icon.png"),
|
||||
InstalledEles = {"Magazine_30"},
|
||||
Slot = "eftmp5_mag"
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "9x19 Pst Gzh",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/9x19_Icon.png"),
|
||||
Slot = "ammo_eft_9x19"
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = false
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw_first",
|
||||
Time = 1.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.3
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 0.
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = 0.75,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.75,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 1,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
Time = 1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "shoot_dry",
|
||||
Time = 1,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_long"] = {
|
||||
Source = "reload_extended",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_short"] = {
|
||||
Source = "reload_decreased",
|
||||
Time = 3,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magrelease.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 1.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
["reload_long_empty"] = {
|
||||
Source = "reload_empty_extended",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
["reload_short_empty"] = {
|
||||
Source = "reload_empty_decreased",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
FrameRate = 24,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltback.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltlock.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_magin.wav",
|
||||
t = 2.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp5k/handling/mp5k_boltrelease.wav",
|
||||
t = 3.5
|
||||
}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "customise_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "customise_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "customise_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0.6,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,505 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "MP7A1"
|
||||
SWEP.Trivia_Class = "PDW"
|
||||
SWEP.Trivia_Desc = "The MP7 is extremely compact, lightweight, can be used in very confined spaces, and is practically recoil-free. It can be carried continuously, making it the ideal personal weapon for the soldier of today. Those who carry it will be suitably armed for the broadest range of operations."
|
||||
SWEP.Trivia_Manufacturer = "Heckler & Koch"
|
||||
SWEP.Trivia_Calibre = "4.6x30mm"
|
||||
SWEP.Trivia_Mechanism = "blowback-operated"
|
||||
SWEP.Trivia_Country = "Germany"
|
||||
SWEP.Trivia_Year = 2003
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_mp7/eft_mp7/models/c_eft_mp7.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_smg1.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 10
|
||||
SWEP.DamageMin = 10 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1050 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 740
|
||||
|
||||
SWEP.Recoil = 0.39
|
||||
SWEP.RecoilSide = 0.091
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 850 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 17 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 400 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "mp7" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw_eft/mp7/eft_mp7_close.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw_eft/mp7/eft_mp7_surpressed.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft/mp7/eft_mp7_distant.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_mp5"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.25
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[0] = "patron_in_weapon",
|
||||
[1] = "patron_001",
|
||||
[2] = "patron_002",
|
||||
[3] = "patron_003",
|
||||
[4] = "patron_004",
|
||||
[5] = "patron_005"
|
||||
}
|
||||
|
||||
SWEP.SpeedMult = 0.97
|
||||
SWEP.SightedSpeedMult = 0.85
|
||||
SWEP.SightTime = 0.24
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.673, 3, 1.06),
|
||||
Ang = Angle(0, 0.0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "smg"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 4, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(0, 3, 0.6)
|
||||
SWEP.CrouchAng = Angle(0, 0, 5)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 3, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["Flip_Sights"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["Mag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["Stock"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-14, 6, -4),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-9, 5.5, -8.5),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_mp7/eft_mp7_sight.png"),
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_sight_front", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(0, -4, 0),
|
||||
vmax = Vector(0, -6.5, 0),
|
||||
},
|
||||
InstalledEles = {"Flip_Sights"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "eft_mp7_surpressor",
|
||||
Bone = "mod_muzzle",
|
||||
Offset = {
|
||||
vpos = Vector(-0, 0.5, 0), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Left",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_sight_front",
|
||||
Offset = {
|
||||
vpos = Vector(0.8, -1, -2), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Right",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_sight_front",
|
||||
Offset = {
|
||||
vpos = Vector(-0.8, -1, -2), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
DefaultAttName = "Unfolded Stock",
|
||||
Slot = "eft_mp7_stock",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_mp7/eft_mp7_StockUnFolded.png"),
|
||||
InstalledEles = {"Stock"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
DefaultAttName = "20-Round Mag",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_mp7/eft_mp7_mag20.png"),
|
||||
InstalledEles = {"Magazine_20"},
|
||||
Slot = "eft_mag_mp7",
|
||||
Bone = "mod_magazine", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
InstalledEles = {"Mag"},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "4.6x30mm FMJ",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_mp7/eft_mp7_bullet.png"),
|
||||
Slot = "ammo_eft_46x30"
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory_idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.9,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw_first", "draw_first2",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.8,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_bolt_in_slap.wav",
|
||||
t = 0.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload_short",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_short_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.8, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_bolt_in_slap.wav",
|
||||
t = 3.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.8, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_bolt_in_slap.wav",
|
||||
t = 3.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended2"] = {
|
||||
Source = "reload_long",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended2_empty"] = {
|
||||
Source = "reload_long_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.8, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_release_button.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_out.wav",
|
||||
t = 0.55
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_mag_in.wav",
|
||||
t = 1.85
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/mp7/mp5_weap_bolt_in_slap.wav",
|
||||
t = 3.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["0_to_1"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["0_to_2"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["1_to_2"] = {
|
||||
Source = "firemode_0",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["1_to_0"] = {
|
||||
Source = "firemode_0",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["2_to_1"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["2_to_0"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inventory_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inventory_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,382 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Oldie Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "PPSH-41"
|
||||
SWEP.Trivia_Class = "Submachine Gun"
|
||||
SWEP.Trivia_Desc = "The PPSh-41 (pistolet-pulemyot Shpagina; Russian: Пистолет-пулемёт Шпагина; Shpagin machine pistol ) is a Soviet submachine gun designed by Georgy Shpagin as a cheap, reliable, and simplified alternative to the PPD-40."
|
||||
SWEP.Trivia_Manufacturer = "Numerous"
|
||||
SWEP.Trivia_Calibre = " 7.62x25mm Tokarev"
|
||||
SWEP.Trivia_Mechanism = "Open Bolt"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 1941
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_ppsh/c_eft_ppsh/models/c_eft_ppsh.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_smg_mp5.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 8
|
||||
SWEP.DamageMin = 8 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 900 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 35 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 400
|
||||
|
||||
SWEP.Recoil = 0.34
|
||||
SWEP.RecoilSide = 0.25
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 900 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 20 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 450 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ppsh" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw_eft/ppsh/tt_fire_indoor_close.wav"
|
||||
SWEP.ShootSoundSilenced = "arccw_go/mp5/mp5_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft/ppsh/tt_fire_indoor_distant.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_mp5"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.25
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.98
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.3
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.6425, 3, 1.32),
|
||||
Ang = Angle(0.75, 0.05, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 3, 0.6)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(0, 3, 0.6)
|
||||
SWEP.CrouchAng = Angle(0, 0, 5)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 3, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 30
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["magazine"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-14, 6, -4),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-6, 4, -7),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = "eft_ppsh_magazine",
|
||||
DefaultAttName = "41-round PPSH magazine",
|
||||
Bone = "mod_magazine",
|
||||
Offset = {
|
||||
vpos = Vector(-0.0, -0, 0),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(-0, 0, 0),
|
||||
}
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "7.62x25 - FMJ",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/9x19_Icon.png"),
|
||||
Slot = "ammo_eft_762x25"
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "Holster",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 0.05,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 0.05,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magrelease_button.wav",
|
||||
t = 0.8
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magout.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magin.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30, 55},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magrelease_button.wav",
|
||||
t = 0.8
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magout.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magin.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_slider_jam.wav",
|
||||
t = 4.3
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended"] = {
|
||||
Source = "reload_extended",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magrelease_button.wav",
|
||||
t = 0.8
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magout.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magin.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_extended_empty"] = {
|
||||
Source = "reload_extended_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30, 55},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magrelease_button.wav",
|
||||
t = 0.8
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magout.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_magin.wav",
|
||||
t = 2.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ppsh/kedr_slider_jam.wav",
|
||||
t = 4.3
|
||||
}
|
||||
},
|
||||
},
|
||||
["1_to_2"] = {
|
||||
Source = "firemode",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["2_to_1"] = {
|
||||
Source = "firemode_alt",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inspect_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inspect_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inspect_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Draw",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_draw.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Slideback",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_Slideback.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Slideforward",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_Slideforward.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Clipout",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_clipout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Clipin",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_clipin.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MP5.Cliphit",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/mp5/mp5_cliphit.wav"
|
||||
})
|
||||
@@ -0,0 +1,396 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "T-5000"
|
||||
SWEP.Trivia_Class = "Bolt-Action Sniper"
|
||||
SWEP.Trivia_Desc = "High-accuracy ORSIS T-5000 rifle is an outstanding result of our company designers' efforts. This model was created in cooperation with professional shooters and has the properties required for a customer in the Russian market. T-5000 model is a hand-reloaded repeater with sliding breech bolt and two front locking lugs. It is a multi-purpose weapon. Its specifications provide high-accuracy long-range shots (up to 1500m), high level of shooter's convenience while preparatory, firing and recoil phases, swift sighting line recovery, excellent reliability and ergonomics."
|
||||
SWEP.Trivia_Manufacturer = "ORSIS"
|
||||
SWEP.Trivia_Calibre = "7.62x51mm NATO"
|
||||
SWEP.Trivia_Mechanism = "bolt-Action"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 2011
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_t5000/eft_t5000/models/c_eft_t5000.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_snip_scout.mdl"
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-9, 5.5, -8.5),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "0000000000"
|
||||
|
||||
SWEP.Damage = 70
|
||||
SWEP.DamageMin = 70 -- damage done at maximum range
|
||||
SWEP.Range = 150 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 826 -- projectile or phys bullet muzzle velocity
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 5 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 10
|
||||
|
||||
SWEP.Recoil = 6
|
||||
SWEP.RecoilSide = 1.5
|
||||
SWEP.RecoilRise = 4
|
||||
SWEP.VisualRecoilMult = 1
|
||||
|
||||
SWEP.Delay = 60 / 45-- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = {
|
||||
"weapon_ar2",
|
||||
"weapon_crossbow",
|
||||
}
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 1 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 650 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "T5000" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 115 -- volume of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw_eft_t5000/sv98_fire_close.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw_eft_t5000/rsass_indoor_close_silenced1.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft_t5000/sv98_fire_far.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_4"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 90
|
||||
SWEP.ShellScale = 1.5
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.ProceduralViewBobAttachment = 1
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
SWEP.SpeedMult = 0.9
|
||||
SWEP.SightedSpeedMult = 0.6
|
||||
SWEP.SightTime = 0.24
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[0] = "patron_in_weapon",
|
||||
[1] = "patron_001",
|
||||
[2] = "patron_002",
|
||||
[3] = "patron_003"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
SWEP.ShotgunReload = false
|
||||
|
||||
SWEP.ManualAction = true -- pump/bolt action
|
||||
SWEP.NoLastCycle = true -- do not cycle on last shot
|
||||
|
||||
SWEP.CaseBones = {
|
||||
}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.6, -3, 2.75),
|
||||
Ang = Angle(0.1, -0.05, 0),
|
||||
Magnification = 1.25,
|
||||
CrosshairInSights = false,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-0, 0, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.SprintPos = Vector(5, -2, -2)
|
||||
SWEP.SprintAng = Angle(0, 30, 0)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 0, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 0, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, 0)
|
||||
SWEP.BarrelOffsetHip = Vector(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 30
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["Muzzle"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(0, 18.5, 0.75),
|
||||
vmax = Vector(0, 20, 0.75),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle Device", -- print name
|
||||
DefaultAttName = "Standard Muzzle Device",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_t5000/muzzle_t5000_icon.png"),
|
||||
Slot = "eft_muzzle_762x51", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 47.5, -0.25),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
InstalledEles = {"Muzzle"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Right",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "weapon",
|
||||
Offset = {
|
||||
vpos = Vector(-1.45, 33, -0.45), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Left",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "weapon",
|
||||
Offset = {
|
||||
vpos = Vector(1.45, 33, -0.45), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Top",
|
||||
Slot = "eft_tactical_big",
|
||||
Bone = "weapon",
|
||||
Offset = {
|
||||
vpos = Vector(0, 33, 1), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 180),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Bottom",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "weapon",
|
||||
Offset = {
|
||||
vpos = Vector(0, 31.8, -1.85), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "7.62x51mm M80",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/762x51_icon.png"),
|
||||
Slot = "ammo_eft_762x51"
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.25,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.25,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = {"ready_1", "ready_2", "ready_3"},
|
||||
LHIK = false,
|
||||
LHIKIn = 0.25,
|
||||
LHIKOut = 0.25,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_1.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_2.wav",
|
||||
t = 1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_3.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_4.wav",
|
||||
t = 1.2
|
||||
}
|
||||
}
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"fire"},
|
||||
},
|
||||
["cycle"] = {
|
||||
Source = {"chamber_1", "chamber_2", "chamber_3"},
|
||||
ShellEjectAt = 20 / 30,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_1.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_2.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_3.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_4.wav",
|
||||
t = 0.7
|
||||
}
|
||||
}
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = {"fire"},
|
||||
},
|
||||
["cycle_ads"] = {
|
||||
Source = {"chamber_1", "chamber_2", "chamber_3"},
|
||||
ShellEjectAt = 20 / 30,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_1.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_2.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_3.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_4.wav",
|
||||
t = 0.7
|
||||
}
|
||||
}
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_magbutton.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_mag_out.wav",
|
||||
t = 0.75
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_mag_in.wav",
|
||||
t = 2.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_mag_out.wav",
|
||||
t = 0.7
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_mag_in.wav",
|
||||
t = 2.3
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_1.wav",
|
||||
t = 3.5
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_2.wav",
|
||||
t = 3.6
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_3.wav",
|
||||
t = 3.7
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft_t5000/t5000_bolt_4.wav",
|
||||
t = 3.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inventory_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inventory_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,383 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "UMP-45"
|
||||
SWEP.Trivia_Class = "Submachine Gun"
|
||||
SWEP.Trivia_Desc = "Heckler & Koch UMP - submachine gun, designed by German company Heckler & Koch in the 1990s as a lighter and cheaper analog of the MP5. This version is designed to fire a .45 ACP cartridge and has a reduced to 600 rpm rate of fire."
|
||||
SWEP.Trivia_Manufacturer = "Heckler & Koch"
|
||||
SWEP.Trivia_Calibre = ".45 ACP"
|
||||
SWEP.Trivia_Mechanism = "blowback-operated"
|
||||
SWEP.Trivia_Country = "Germany"
|
||||
SWEP.Trivia_Year = 2000
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_ump/eft_ump/models/c_eft_ump.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_smg_ump45.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 12
|
||||
SWEP.DamageMin = 12 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 700 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 400
|
||||
|
||||
SWEP.Recoil = 0.275
|
||||
SWEP.RecoilSide = 0.125
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 550 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 14 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 300 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ppsh" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw_eft/ump/gyrza_close1.wav"
|
||||
SWEP.ShootSoundSilenced = "arccw_go/mp5/mp5_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw_eft/ump/gyrza_distant1.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_mp5"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.25
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[0] = "patron_in_weapon",
|
||||
[1] = "patron_001",
|
||||
[2] = "patron_002",
|
||||
[3] = "patron_003",
|
||||
[4] = "patron_004",
|
||||
[5] = "patron_005",
|
||||
[6] = "patron_006",
|
||||
[7] = "patron_007",
|
||||
[8] = "patron_008",
|
||||
[9] = "patron_009",
|
||||
[10] = "patron_010",
|
||||
[11] = "patron_011",
|
||||
[12] = "patron_012",
|
||||
[13] = "patron_013",
|
||||
[14] = "patron_014",
|
||||
[15] = "patron_015",
|
||||
[16] = "patron_016",
|
||||
[17] = "patron_017",
|
||||
[18] = "patron_018",
|
||||
[19] = "patron_019",
|
||||
[20] = "patron_020",
|
||||
[21] = "patron_021",
|
||||
[22] = "patron_022",
|
||||
[23] = "patron_023",
|
||||
[24] = "patron_024",
|
||||
[25] = "patron_025"
|
||||
}
|
||||
|
||||
SWEP.SpeedMult = 0.96
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.3
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.6425, 3, 1.7),
|
||||
Ang = Angle(0, 0.0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 4, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(0, 3, 0.6)
|
||||
SWEP.CrouchAng = Angle(0, 0, 5)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 3, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 30
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-14, 6, -4),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-6, 4, -8.5),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_ump/eft_ump_iron.png"),
|
||||
Slot = {"eft_optic_large", "eft_optic_medium", "eft_optic_small"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vang = Angle(90, -90, -90),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 180),
|
||||
SlideAmount = { -- how far this attachment can slide in both directions.
|
||||
-- overrides Offset
|
||||
vmin = Vector(0, -4.5, 3),
|
||||
vmax = Vector(0, -1, 3),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Left",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_reciever",
|
||||
Offset = {
|
||||
vpos = Vector(1, 4, 1), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical - Right",
|
||||
Slot = "eft_tactical",
|
||||
Bone = "mod_reciever",
|
||||
Offset = {
|
||||
vpos = Vector(-1.1, 4, 1), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "eft_foregrip",
|
||||
Bone = "mod_reciever",
|
||||
DefaultAttName = "No Underbarrel",
|
||||
Offset = {
|
||||
vpos = Vector(0, 5, 0.1),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory_idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.9,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw_first", "draw_first2",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.8,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_bolt_in_slap.wav",
|
||||
t = 0.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.4, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_release_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_out.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_in.wav",
|
||||
t = 2
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4, -- In/Out controls how long it takes to switch to regular animation.
|
||||
LHIKOut = 0.8, -- (not actually inverse kinematics)
|
||||
LHIKEaseIn = 0.4, -- how long LHIK eases in.
|
||||
LHIKEaseOut = 0.4, -- if no value is specified then ease = lhikin
|
||||
Checkpoints = { 0.8, 1.9 },
|
||||
SoundTable = {
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_release_button.wav",
|
||||
t = 0.35
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_out.wav",
|
||||
t = 0.4
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_mag_in.wav",
|
||||
t = 2
|
||||
},
|
||||
{
|
||||
s = "weapons/arccw_eft/ump/mp5_weap_bolt_in_slap.wav",
|
||||
t = 3.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["0_to_1"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["0_to_2"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["1_to_2"] = {
|
||||
Source = "firemode_0",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["1_to_0"] = {
|
||||
Source = "firemode_0",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["2_to_1"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["2_to_0"] = {
|
||||
Source = "firemode_1",
|
||||
LHIK = false,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inventory_begin",
|
||||
LHIK = true,
|
||||
LHIKIn = 1,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory_idle",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inventory_end",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,735 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "HK USP .45"
|
||||
SWEP.TrueName = "HK USP .45"
|
||||
SWEP.Trivia_Class = "Pistol"
|
||||
SWEP.Trivia_Desc = "The HK USP (Universelle Selbstladepistole - Universal Self-loading Pistol) pistol is a further replacement of the HK P7 series pistols. Internationally accepted as an accurate and ultra-reliable handgun. Using a modified Browning-type action with a special patented recoil reduction system, the USP recoil reduction system reduces recoil effects on pistol components and also lowers the recoil forces felt by the shooter. This particular variant is chambered in .45 ACP. Manufactured by Heckler & Koch."
|
||||
SWEP.Trivia_Manufacturer = "Heckler & Koch"
|
||||
SWEP.Trivia_Calibre = ".45 ACP"
|
||||
SWEP.Trivia_Mechanism = "Short Recoil"
|
||||
SWEP.Trivia_Country = "Germany"
|
||||
SWEP.Trivia_Year = 1989
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arc_eft_usp/c_eft_usp.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/v_pist_m9.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 15
|
||||
SWEP.DamageMin = 15 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 17 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 24
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 200
|
||||
|
||||
SWEP.TriggerDelay = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
SWEP.ReloadInSights_FOVMult = 1
|
||||
|
||||
SWEP.Recoil = 1.0
|
||||
SWEP.RecoilSide = 0.5
|
||||
SWEP.RecoilRise = 0.24
|
||||
SWEP.RecoilPunch = 2.5
|
||||
SWEP.VisualRecoilMult = 12
|
||||
SWEP.RecoilPunchBackMax = 15
|
||||
SWEP.RecoilPunchBackMaxSights = 15 -- may clip with scopes
|
||||
|
||||
SWEP.Delay = 60 / 450 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_pistol"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 12 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 350 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "pistol" -- what ammo type the gun uses
|
||||
SWEP.MagID = "USP" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 110 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "arc_eft_usp/usp_fire_close_alt.wav"
|
||||
SWEP.ShootSoundSilenced = "arc_eft_usp/usp_fire_surpressed_alt.wav"
|
||||
SWEP.DistantShootSound = "arc_eft_usp/usp_fire_distant_alt.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol"
|
||||
SWEP.ShellModel = "models/shells/shell_9mm.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.75
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
SWEP.CamAttachment = 3 -- if set, this attachment will control camera movement
|
||||
|
||||
SWEP.SpeedMult = 0.98
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.2
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.65, 5, 2.17),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.Jamming = false
|
||||
SWEP.HeatCapacity = 32
|
||||
SWEP.HeatDissipation = 1
|
||||
SWEP.HeatLockout = true -- overheating means you cannot fire until heat has been fully depleted
|
||||
SWEP.HeatFix = true -- when the "fix" animation is played, all heat is restored.
|
||||
|
||||
SWEP.Malfunction = false
|
||||
SWEP.MalfunctionJam = false -- After a malfunction happens, the gun will dryfire until reload is pressed. If unset, instead plays animation right after.
|
||||
SWEP.MalfunctionTakeRound = false -- When malfunctioning, a bullet is consumed.
|
||||
SWEP.MalfunctionWait = 0 -- The amount of time to wait before playing malfunction animation (or can reload)
|
||||
SWEP.MalfunctionMean = 64 -- The mean number of shots between malfunctions, will be autocalculated if nil
|
||||
SWEP.MalfunctionVariance = 0.2 -- The fraction of mean for variance. e.g. 0.2 means 20% variance
|
||||
SWEP.MalfunctionSound = "weapons/arccw/malfunction.wav"
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "pistol"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL
|
||||
|
||||
SWEP.ActivePos = Vector(0, 2, 1.5)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-1, -1, 1.4)
|
||||
SWEP.CrouchAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
SWEP.BarrelOffsetCrouch = Vector(0, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 2, 0.5)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[1] = {"shellport", "patron_in_weapon"},
|
||||
[2] = "patron_001",
|
||||
[3] = "patron_002",
|
||||
[4] = "patron_003",
|
||||
[5] = "patron_004",
|
||||
[6] = "patron_005",
|
||||
[7] = "patron_006",
|
||||
[8] = "patron_007",
|
||||
[9] = "patron_008",
|
||||
[10] = "patron_009",
|
||||
[11] = "patron_010",
|
||||
[12] = "patron_011",
|
||||
[13] = "patron_012",
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["hidereceiver"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["showmount"] = {
|
||||
VMBodygroups = {{ind = 9, bg = 1}},
|
||||
},
|
||||
["hidemount"] = {
|
||||
VMBodygroups = {{ind = 9, bg = 0}},
|
||||
},
|
||||
["hidesights"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
["sightmount"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 2}},
|
||||
},
|
||||
["hidebarrel"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["45_AP"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 1}},
|
||||
},
|
||||
["45_RIP"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 2}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-12.6, 5.5, -7),
|
||||
ang = Angle(-0, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "None",
|
||||
//DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_sights_standard.png"),
|
||||
Slot = "eft_optic_small", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
InstalledEles = {"sightmount"},
|
||||
GivesFlags = {"opticattached"},
|
||||
Offset = {
|
||||
vpos = Vector(0, -2, 0.9),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Iron Sights", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_sights_standard.png"),
|
||||
Slot = "eft_usp_sights", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
InstalledEles = {"hidesights"},
|
||||
ExcludeFlags = {"opticattached"},
|
||||
Offset = {
|
||||
vpos = Vector(0, -2.4, 0.75),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Slide", -- print name
|
||||
DefaultAttName = "Standard Slide",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_slide_default.png"),
|
||||
Slot = "eft_usp_slide", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_reciever", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"hidereceiver"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Compensator", -- print name
|
||||
DefaultAttName = "No Compensator",
|
||||
//DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_barrel_match.png"),
|
||||
Slot = "eft_usp_compensator", -- what kind of attachments can fit here, can be string or table
|
||||
GivesFlags = {"Compensator"},
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 23.7, -0.45),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel", -- print name
|
||||
DefaultAttName = "Standard Barrel",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_barrel_match.png"),
|
||||
Slot = "eft_usp_barrel", -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "mod_barrel", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"hidebarrel"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, -0),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle", -- print name
|
||||
DefaultAttName = "No Muzzle Device",
|
||||
//DefaultAttIcon = Material("vgui/entities/eft_attachments/usp_barrel_match.png"),
|
||||
Slot = "eft_muzzle_1911", -- what kind of attachments can fit here, can be string or table
|
||||
ExcludeFlags = {"Compensator"},
|
||||
RequireFlags = {"threadedbarrel"},
|
||||
Bone = "mod_barrel", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 3.7, 0.45),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical", -- print name
|
||||
DefaultAttName = "No Tactical",
|
||||
//ExcludeFlags = {"Compensator"},
|
||||
Slot = {"eft_tactical", "eft_usp_mount"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "weapon", -- relevant bone any attachments will be mostly referring to
|
||||
InstalledEles = {"showmount"},
|
||||
Offset = {
|
||||
vpos = Vector(0, 23.7, -0.45),
|
||||
vang = Angle(0, -90, 0),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = ".45 ACP FMJ",
|
||||
DefaultAttIcon = Material("vgui/entities/eft_attachments/9x19_Icon.png"),
|
||||
Slot = "ammo_eft_45"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_in.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_in.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_out.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_out.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_pistol_use.wav",
|
||||
t = 0.45
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_slider_in.wav",
|
||||
t = 0.8
|
||||
}
|
||||
},
|
||||
},
|
||||
["trigger"] = {
|
||||
Source = "trigger",
|
||||
Time = 0.1,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire_new",
|
||||
Time = 0.2,
|
||||
ShellEjectAt = 0,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_trigger_hammer.wav",
|
||||
t = 0.05
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire_new",
|
||||
Time = 0.2,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_trigger_hammer.wav",
|
||||
t = 0
|
||||
}
|
||||
},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_dry",
|
||||
Time = 0.0,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_dry",
|
||||
Time = 0.0,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
LastClip1OutTime = 2, -- when should the belt visually replenish on a belt fed
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magrelease_button.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_out.wav",
|
||||
t = 0.7
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullout.wav",
|
||||
t = 0.75
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magin_rig.wav",
|
||||
t = 1.3
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_mag_pullout.wav",
|
||||
t = 1.9
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullin.wav",
|
||||
t = 3
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_in.wav",
|
||||
t = 3.1
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 0.4,
|
||||
LastClip1OutTime = 2, -- when should the belt visually replenish on a belt fed
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magrelease_button.wav",
|
||||
t = 0.6
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_out.wav",
|
||||
t = 0.7
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullout.wav",
|
||||
t = 0.75
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magin_rig.wav",
|
||||
t = 1.3
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_mag_pullout.wav",
|
||||
t = 1.9
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullin.wav",
|
||||
t = 3
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_in.wav",
|
||||
t = 3.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_bolt_catch_button.wav",
|
||||
t = 4.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_pistol_use.wav",
|
||||
t = 4.125
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_slider_in.wav",
|
||||
t = 4.3
|
||||
}
|
||||
},
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inventory_start",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_handoff.wav",
|
||||
t = 0
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin3.wav",
|
||||
t = 0.5
|
||||
}
|
||||
},
|
||||
},
|
||||
["enter_inspect_empty"] = {
|
||||
Source = "inventory_start_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_handoff.wav",
|
||||
t = 0
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin3.wav",
|
||||
t = 0.5
|
||||
}
|
||||
},
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inventory",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "inventory_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inventory_end_alt",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin3.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magrelease_button.wav",
|
||||
t = 1
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_out.wav",
|
||||
t = 1.2
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin2.wav",
|
||||
t = 2
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 2.4
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullin.wav",
|
||||
t = 3.45
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_in.wav",
|
||||
t = 3.55
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 3.9
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 4.2
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_pistol_use.wav",
|
||||
t = 5.1
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_slider_in.wav",
|
||||
t = 6
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin2.wav",
|
||||
t = 6.2
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 6.3
|
||||
}
|
||||
},
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "inventory_end_new_empty",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin1.wav",
|
||||
t = 0.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin3.wav",
|
||||
t = 0.5
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_magrelease_button.wav",
|
||||
t = 1
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_out.wav",
|
||||
t = 1.2
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullout.wav",
|
||||
t = 1.1
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin2.wav",
|
||||
t = 2
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 2.4
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_pullin.wav",
|
||||
t = 3.45
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_mag_in.wav",
|
||||
t = 3.55
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 3.9
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weapon_generic_pistol_spin4.wav",
|
||||
t = 4.2
|
||||
}
|
||||
},
|
||||
},
|
||||
["fix"] = {
|
||||
Source = {"jam_soft"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_pistol_use.wav",
|
||||
t = 0.75
|
||||
},
|
||||
{
|
||||
s = "eft_shared/weap_round_out.wav",
|
||||
t = 0.9
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_slider_in.wav",
|
||||
t = 1.2
|
||||
}
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = {"jam_feed", "jam_shell"},
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "eft_shared/weap_round_out.wav",
|
||||
t = 2.3
|
||||
},
|
||||
{
|
||||
s = "arc_eft_usp/usp_slider_in.wav",
|
||||
t = 2.6
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,305 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Special Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Volk-ed PKP"
|
||||
SWEP.Trivia_Class = "Energy Machine Gun"
|
||||
SWEP.Trivia_Desc = "Belt-fed fully automatic energy weapon. Can not penetrate. Damage increase over long distance"
|
||||
SWEP.Trivia_Manufacturer = "Some guy with a volk and pkp"
|
||||
SWEP.Trivia_Calibre = "Energy Cells"
|
||||
SWEP.Trivia_Mechanism = "Magic"
|
||||
SWEP.Trivia_Country = "The Motherland"
|
||||
SWEP.Trivia_Year = 2077
|
||||
|
||||
SWEP.CrouchPos = Vector(-1, 3, -0.5)
|
||||
SWEP.CrouchAng = Angle(0, 0, -15)
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/fml/c_volked_pkp.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/fml/w_volked_pkp.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "00000000"
|
||||
SWEP.DefaultWMBodygroups = "00000000"
|
||||
|
||||
SWEP.Damage = 15
|
||||
SWEP.DamageMin = 15
|
||||
SWEP.Range = 500 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 900 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 100 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 120
|
||||
SWEP.ReducedClipSize = 60
|
||||
|
||||
SWEP.Recoil = 0.4
|
||||
SWEP.RecoilSide = 0.15
|
||||
SWEP.RecoilRise = 0.75
|
||||
|
||||
SWEP.Delay = 60 / 700 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.CustomizePos = Vector(10, 2, -3)
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 80
|
||||
|
||||
SWEP.AccuracyMOA = 3.5 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 700 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 220
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "m200b" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 70 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 120 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/fml_pkp_volk/fire.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/fml_pkp_volk/ak74_suppressed_fp.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw/negev/negev-1-distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_smg"
|
||||
SWEP.ShellModel = "models/weapons/arccw/fml/shell_volked_pkp.mdl"
|
||||
SWEP.ShellPitch = 95
|
||||
SWEP.ShellScale = 1.5
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.65
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.475
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
[6] = "Weapon_Bullet0",
|
||||
[5] = "Weapon_Bullet",
|
||||
[4] = "Weapon_Bullet2",
|
||||
[3] = "Weapon_Bullet3",
|
||||
[2] = "Weapon_Bullet4",
|
||||
[1] = "Weapon_Bullet5",
|
||||
}
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.523, -3, 0.469),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.MeleeTime = 0.5
|
||||
SWEP.MeleeAttackTime = 0.1
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 5, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(8, -2, -4.011)
|
||||
SWEP.HolsterAng = Angle(1.898, 54.613, -10.113)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 32
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["bkrail"] = {
|
||||
VMElements = {
|
||||
{
|
||||
Model = "models/weapons/arccw/atts/backup_rail.mdl",
|
||||
Bone = "Weapon_Main",
|
||||
Offset = {
|
||||
pos = Vector(0, -3.8, 12),
|
||||
ang = Angle(180, 90, 180),
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "Weapon_Lid", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, -0.5, -1.5), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(7, 0.9, -6),
|
||||
wang = Angle(-9.738, -1, 180)
|
||||
},
|
||||
InstalledEles = {"nors"},
|
||||
CorrectiveAng = Angle(0, 0, 0),
|
||||
ExtraSightDist = 3
|
||||
},
|
||||
{
|
||||
PrintName = "Backup Optic", -- print name
|
||||
Slot = {"optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "Weapon_Main", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-0.6, -4.2, 12), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -45),
|
||||
wpos = Vector(3, 0.832, -2),
|
||||
wang = Angle(-10.393, 0, 180)
|
||||
},
|
||||
InstalledEles = {"bkrail"},
|
||||
KeepBaseIrons = true,
|
||||
ExtraSightDist = 12
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "Weapon_Main",
|
||||
Offset = {
|
||||
vpos = Vector(0, -2, 22),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(25, 0.825, -7.5),
|
||||
wang = Angle(-9.738, -1, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip", "ubgl", "bipod"},
|
||||
Bone = "Weapon_Main",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1, 14.738),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(14.329, 0.602, -4.453),
|
||||
wang = Angle(-10.216, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Weapon_Main",
|
||||
Offset = {
|
||||
vpos = Vector(-0.5, 0, 22), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(17, 2, -7),
|
||||
wang = Angle(-10.393, 0, -90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
DefaultAttName = "None",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
Bone = "Weapon_Main",
|
||||
Offset = {
|
||||
vpos = Vector(1, -2, 4),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(8, 1, -3),
|
||||
wang = Angle(-9, 0, 180)
|
||||
},
|
||||
FreeSlot = true,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.35,
|
||||
SoundTable = {{s = "weapons/arccw/m249/m249_draw.wav", t = 0}},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "deploy",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "iron",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LastClip1OutTime = 95/60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LastClip1OutTime = 95/60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["bash"] = {
|
||||
Source = {"melee"},
|
||||
Time = 30/60,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,320 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
-- Model adapted from this: https://steamcommunity.com/sharedfiles/filedetails/?id=646754302
|
||||
-- Thanks!
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Special Weaponry" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.AutoIconAngle = Angle(90, 0, 0)
|
||||
|
||||
SWEP.PrintName = "M2014 Gauss Rifle"
|
||||
SWEP.Trivia_Class = "Antimateriel Rifle"
|
||||
SWEP.Trivia_Desc = "Advanced anti-materiel rifle developed following controversial tests at the 2020 Lingshan Incident. Its lethality is comparable to .50 BMG rounds, but has more power and less recoil."
|
||||
SWEP.Trivia_Manufacturer = "CryNet Armories"
|
||||
SWEP.Trivia_Calibre = "10mm Slug"
|
||||
SWEP.Trivia_Mechanism = "Magnetic Acceleration"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 2025
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_gauss_rifle.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/w_gauss_rifle.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.Damage = 200
|
||||
SWEP.DamageMin = 100 -- damage done at maximum range
|
||||
SWEP.RangeMin = 50
|
||||
SWEP.Range = 200 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 12000 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.Tracer = "ToolTracer"
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 4 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 8
|
||||
SWEP.ReducedClipSize = 2
|
||||
|
||||
SWEP.Recoil = 4.5
|
||||
SWEP.RecoilSide = 2
|
||||
SWEP.MaxRecoilBlowback = 0.7
|
||||
|
||||
SWEP.Delay = 60 / 50 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = {"weapon_crossbow"}
|
||||
SWEP.NPCWeight = 10
|
||||
|
||||
SWEP.AccuracyMOA = 1 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 900 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "SniperPenetratedRound" -- what ammo type the gun uses
|
||||
SWEP.MagID = "gauss_rifle" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 135 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/arccw/gauss_rifle/gauss-1.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_01.wav"
|
||||
SWEP.DistantShootSound = nil --"weapons/arccw/bfg/bfg_fire_distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = nil
|
||||
SWEP.ShellModel = "models/shells/shell_338mag.mdl"
|
||||
SWEP.ShellPitch = 60
|
||||
SWEP.ShellScale = 2
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SightTime = 0.45
|
||||
SWEP.SpeedMult = 0.85
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-1.841, 0, 0.879),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_RPG
|
||||
|
||||
SWEP.ActivePos = Vector(1, 4, 0.5)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CustomizePos = Vector(7, 6, -2)
|
||||
|
||||
SWEP.HolsterPos = Vector(6, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 55
|
||||
SWEP.AttachmentElements = {
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic", "optic_sniper", "optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "body", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-5, -4.5, 0), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(180, 0, -90),
|
||||
wpos = Vector(10, 1, -8),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
VMScale = Vector(1, 1, 1), --Vector(0.75, 0.75, 0.75),
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 0, 0),
|
||||
Installed = "optic_gauss_scope",
|
||||
ExtraSightDist = 5,
|
||||
},
|
||||
{
|
||||
PrintName = "Capacitor",
|
||||
DefaultAttName = "Standard Capacitors",
|
||||
Slot = "gauss_rifle_capacitor",
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip", "bipod"},
|
||||
Bone = "body",
|
||||
Offset = {
|
||||
vpos = Vector(-14, -1, 0),
|
||||
vang = Angle(180, 0, -90),
|
||||
wpos = Vector(18, 1, -4),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "body",
|
||||
Offset = {
|
||||
vpos = Vector(-20, -1.2, 0),
|
||||
vang = Angle(180, 0, -90),
|
||||
wpos = Vector(28, 1, -5),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
ExtraSightDist = 15
|
||||
},
|
||||
{
|
||||
PrintName = "Munitions",
|
||||
DefaultAttName = "Iron Slugs",
|
||||
Slot = "gauss_rifle_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = {"perk", "go_perk"}
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "body", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(-5, -1.5, 0.7), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(180, 0, -90),
|
||||
wpos = Vector(10, 2, -4),
|
||||
wang = Angle(-5, 0, 180)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_PreDoEffects = function(wep, fx)
|
||||
return true
|
||||
end
|
||||
|
||||
SWEP.Hook_SelectFireAnimation = function(wep, anim)
|
||||
local cap = wep.Attachments[2].Installed
|
||||
if anim and cap == "gauss_rifle_capacitor" then
|
||||
return anim .. "_turbo"
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 4
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1.5,
|
||||
LHIK = false
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 1.2,
|
||||
},
|
||||
["fire_turbo"] = {
|
||||
Source = "shoot_turbo",
|
||||
Time = 1.2,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot_iron",
|
||||
Time = 1.2,
|
||||
},
|
||||
["fire_iron_turbo"] = {
|
||||
Source = "shoot_iron",
|
||||
Time = 1.2 / 1.5,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {25, 50, 70, 100, 115},
|
||||
FrameRate = 37,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 1,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ArcCW_Gauss_Rifle.Draw",
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 1.0,
|
||||
sound = "weapons/arccw/gauss_rifle/draw.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ArcCW_Gauss_Rifle.Boltback",
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 1.0,
|
||||
sound = "weapons/arccw/gauss_rifle/boltback.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ArcCW_Gauss_Rifle.Boltforward",
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 1.0,
|
||||
sound = "weapons/arccw/gauss_rifle/boltforward.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ArcCW_Gauss_Rifle.Clipout",
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 1.0,
|
||||
sound = "weapons/arccw/gauss_rifle/clipout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ArcCW_Gauss_Rifle.Clipin",
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 1.0,
|
||||
sound = "weapons/arccw/gauss_rifle/clipin.wav"
|
||||
})
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" then
|
||||
SWEP.Kind = WEAPON_EQUIP1
|
||||
SWEP.Slot = 6
|
||||
SWEP.CanBuy = { ROLE_TRAITOR }
|
||||
SWEP.LimitedStock = true
|
||||
SWEP.AutoSpawnable = false
|
||||
SWEP.EquipMenuData = {
|
||||
type = "Weapon",
|
||||
desc = "Extremely powerful futuristic antimaterial rifle.\nHas unique and noticable tracers.\nCapacitor and munition attachments are free."
|
||||
}
|
||||
SWEP.Icon = "arccw/ttticons/arccw_m107.png"
|
||||
end
|
||||
|
||||
local cvar = CreateConVar("arccw_gauss_rifle_op", "0", FCVAR_REPLICATED + FCVAR_ARCHIVE, "Enable to make the Gauss Rifle very overpowered. Set to 2 to also make it admin only.", 0, 2)
|
||||
if cvar:GetInt() > 0 then
|
||||
SWEP.AdminOnly = (cvar:GetInt() > 1)
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 1
|
||||
SWEP.HipDispersion = 300
|
||||
SWEP.MoveDispersion = 150
|
||||
SWEP.SpeedMult = 0.9
|
||||
SWEP.SightedSpeedMult = 0.6
|
||||
SWEP.SightTime = 0.3
|
||||
end
|
||||
@@ -0,0 +1,86 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base_nade"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "ArcCW - GSO (Gear)" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "M84 Stun"
|
||||
SWEP.Trivia_Class = "Hand Grenade"
|
||||
SWEP.Trivia_Desc = "The M84 is the currently-issued stun grenade (\"flashbang\") of the United States Armed Forces and SWAT teams throughout the United States. Upon detonation, it emits an intensely loud \"bang\" of 170–180 decibels and a blinding flash of more than one million candela within five feet of initiation, sufficient to cause immediate flash blindness, deafness, tinnitus, and inner ear disturbance. Exposed personnel experience disorientation, confusion and loss of coordination and balance. While these effects are all intended to be temporary, there is risk of permanent injury. Consequently, the M84 is classified as a less-lethal weapon."
|
||||
SWEP.Trivia_Manufacturer = "Picatinny Arsenal"
|
||||
SWEP.Trivia_Calibre = "N/A"
|
||||
SWEP.Trivia_Mechanism = "Magnesium/Ammonium Nitrate Mix"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1995
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.NotForNPCs = true
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw_go/v_eq_flashbang.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/w_eq_flashbang_thrown.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 2, -1),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.FuseTime = 2.5
|
||||
|
||||
SWEP.Throwing = true
|
||||
|
||||
SWEP.Primary.ClipSize = 1
|
||||
|
||||
SWEP.MuzzleVelocity = 1000
|
||||
SWEP.ShootEntity = "arccw_thr_go_flash"
|
||||
|
||||
SWEP.TTTWeaponType = "weapon_ttt_confgrenade"
|
||||
SWEP.NPCWeaponType = "weapon_grenade"
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.PullPinTime = 0.5
|
||||
|
||||
SWEP.Animations = {
|
||||
["draw"] = {
|
||||
Source = "deploy",
|
||||
},
|
||||
["pre_throw"] = {
|
||||
Source = "pullpin",
|
||||
},
|
||||
["throw"] = {
|
||||
Source = "throw",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "arccw_go/hegrenade/grenade_throw.wav",
|
||||
t = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade_Start",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull_start.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull.wav"
|
||||
})
|
||||
@@ -0,0 +1,86 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base_nade"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "ArcCW - GSO (Gear)" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "M67 Frag"
|
||||
SWEP.Trivia_Class = "Hand Grenade"
|
||||
SWEP.Trivia_Desc = "High explosive fragmentation hand grenade. Can be cooked."
|
||||
SWEP.Trivia_Manufacturer = "Day & Zimmermann"
|
||||
SWEP.Trivia_Calibre = "N/A"
|
||||
SWEP.Trivia_Mechanism = "Composition B"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1968
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.NotForNPCs = true
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw_go/v_eq_fraggrenade.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/w_eq_fraggrenade_thrown.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 2, -1),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.FuseTime = 3.5
|
||||
|
||||
SWEP.Throwing = true
|
||||
|
||||
SWEP.Primary.ClipSize = 1
|
||||
|
||||
SWEP.MuzzleVelocity = 1000
|
||||
SWEP.ShootEntity = "arccw_thr_go_frag"
|
||||
|
||||
SWEP.TTTWeaponType = "weapon_ttt_confgrenade"
|
||||
SWEP.NPCWeaponType = "weapon_grenade"
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.PullPinTime = 0.5
|
||||
|
||||
SWEP.Animations = {
|
||||
["draw"] = {
|
||||
Source = "deploy",
|
||||
},
|
||||
["pre_throw"] = {
|
||||
Source = "pullpin",
|
||||
},
|
||||
["throw"] = {
|
||||
Source = "throw",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "arccw_go/hegrenade/grenade_throw.wav",
|
||||
t = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade_Start",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull_start.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull.wav"
|
||||
})
|
||||
@@ -0,0 +1,86 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base_nade"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "ArcCW - GSO (Gear)" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "AN/M14 Thermite"
|
||||
SWEP.Trivia_Class = "Hand Grenade"
|
||||
SWEP.Trivia_Desc = "A grenade that produces extremely hot molten iron via a burning thermite reaction. It is mainly intended to be used to destroy material rather than as a weapon."
|
||||
SWEP.Trivia_Manufacturer = "Day & Zimmermann"
|
||||
SWEP.Trivia_Calibre = "N/A"
|
||||
SWEP.Trivia_Mechanism = "Thermite TH3"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1944
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.NotForNPCs = true
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw_go/v_eq_incendiarygrenade.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/w_eq_incendiarygrenade_thrown.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 2, -1),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.FuseTime = 5
|
||||
|
||||
SWEP.Throwing = true
|
||||
|
||||
SWEP.Primary.ClipSize = 1
|
||||
|
||||
SWEP.MuzzleVelocity = 1000
|
||||
SWEP.ShootEntity = "arccw_thr_go_incendiary"
|
||||
|
||||
SWEP.TTTWeaponType = "weapon_zm_molotov"
|
||||
SWEP.NPCWeaponType = "weapon_grenade"
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.PullPinTime = 0.5
|
||||
|
||||
SWEP.Animations = {
|
||||
["draw"] = {
|
||||
Source = "deploy",
|
||||
},
|
||||
["pre_throw"] = {
|
||||
Source = "pullpin",
|
||||
},
|
||||
["throw"] = {
|
||||
Source = "throw",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "arccw_go/hegrenade/grenade_throw.wav",
|
||||
t = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade_Start",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull_start.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull.wav"
|
||||
})
|
||||
@@ -0,0 +1,91 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base_nade"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "ArcCW - GSO (Gear)" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Molotov Cocktail"
|
||||
SWEP.Trivia_Class = "Hand Grenade"
|
||||
SWEP.Trivia_Desc = "Improvised hand grenade created with a bottle of fuel and a rag, lit on fire and thrown. The Molotov Cocktail earned its name from Soviet foreign minister Vyacheslav Molotov, who claimed that Soviet bombing raids were humanitarian aid packages. Sarcastically, the Finns dubbed the bombs 'Molotov's Breadbaskets', and when they developed the fuel bomb to fight Soviet tanks, named them 'Molotov's Cocktails', to go with his food parcels."
|
||||
SWEP.Trivia_Manufacturer = "The People"
|
||||
SWEP.Trivia_Calibre = "N/A"
|
||||
SWEP.Trivia_Mechanism = "Gasoline + Dish Soap"
|
||||
SWEP.Trivia_Country = "Finland"
|
||||
SWEP.Trivia_Year = 1939
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.NotForNPCs = true
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw_go/v_eq_molotov.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/w_eq_molotov_thrown.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 2, -1),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.ProceduralViewBobIntensity = 0
|
||||
|
||||
SWEP.FuseTime = false
|
||||
|
||||
SWEP.FuseTime = false
|
||||
|
||||
SWEP.Throwing = true
|
||||
|
||||
SWEP.Primary.ClipSize = 1
|
||||
|
||||
SWEP.MuzzleVelocity = 1000
|
||||
SWEP.ShootEntity = "arccw_thr_go_molotov"
|
||||
|
||||
SWEP.TTTWeaponType = "weapon_zm_molotov"
|
||||
SWEP.NPCWeaponType = "weapon_grenade"
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.PullPinTime = 1
|
||||
|
||||
SWEP.Animations = {
|
||||
["draw"] = {
|
||||
Source = "deploy",
|
||||
},
|
||||
["pre_throw"] = {
|
||||
Source = "pullpin",
|
||||
SoundTable = {
|
||||
{
|
||||
t = 0,
|
||||
s = "arccw_go/molotov/fire_idle_loop_1.wav",
|
||||
c = CHAN_WEAPON
|
||||
}
|
||||
}
|
||||
},
|
||||
["throw"] = {
|
||||
Source = "throw",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE,
|
||||
SoundTable = {
|
||||
{
|
||||
t = 0,
|
||||
s = "arccw_go/molotov/grenade_throw.wav",
|
||||
c = CHAN_WEAPON
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_MOLOTOV.Draw",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/molotov/molotov_draw.wav"
|
||||
})
|
||||
@@ -0,0 +1,86 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base_nade"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "ArcCW - GSO (Gear)" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Model 5210 Smoke"
|
||||
SWEP.Trivia_Class = "Hand Grenade"
|
||||
SWEP.Trivia_Desc = "A smoke grenade that produces a white smoke cloud for concealment. Smoke clouds last for around 15 seconds."
|
||||
SWEP.Trivia_Manufacturer = "Combined Systems INC"
|
||||
SWEP.Trivia_Calibre = "N/A"
|
||||
SWEP.Trivia_Mechanism = "Pyrotechnic delay fuze"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1997
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.NotForNPCs = true
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw_go/v_eq_smokegrenade.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw_go/w_eq_smokegrenade_thrown.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 2, -1),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.FuseTime = 3.5
|
||||
|
||||
SWEP.Throwing = true
|
||||
|
||||
SWEP.Primary.ClipSize = 1
|
||||
|
||||
SWEP.MuzzleVelocity = 1000
|
||||
SWEP.ShootEntity = "arccw_thr_go_smoke"
|
||||
|
||||
SWEP.TTTWeaponType = "weapon_ttt_smokegrenade"
|
||||
SWEP.NPCWeaponType = "weapon_grenade"
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.PullPinTime = 0.5
|
||||
|
||||
SWEP.Animations = {
|
||||
["draw"] = {
|
||||
Source = "deploy",
|
||||
},
|
||||
["pre_throw"] = {
|
||||
Source = "pullpin",
|
||||
},
|
||||
["throw"] = {
|
||||
Source = "throw",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE,
|
||||
SoundTable = {
|
||||
{
|
||||
s = "arccw_go/hegrenade/grenade_throw.wav",
|
||||
t = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade_Start",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull_start.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ARCCW_GO_GRENADE.PullPin_Grenade",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "arccw_go/hegrenade/pinpull.wav"
|
||||
})
|
||||
@@ -0,0 +1,279 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Heavy Shotgun"
|
||||
SWEP.TrueName = "Heavy Shotgun"
|
||||
SWEP.Trivia_Class = "Semi-Auto"
|
||||
SWEP.Trivia_Desc = "The Heavy Shotgun does a great job at destroying targets at close range. When it comes to certain situations"
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
SWEP.Trivia_Calibre = "6 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Bulgaria"
|
||||
SWEP.Trivia_Year = 2015
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
SWEP.ViewModel = "models/weapons/c_heavyshotgun.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_heavyshotgun.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.DefaultBodygroups = "0000000"
|
||||
|
||||
SWEP.Damage = 11
|
||||
SWEP.DamageMin = 11 -- damage done at maximum range
|
||||
SWEP.Range = 90 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 150 -- projectile or phys bullet muzzle velocity
|
||||
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 6
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 12 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 20
|
||||
SWEP.ReducedClipSize = 5
|
||||
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 0.5
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.Delay = 60 / 90 -- 60 / RPM.
|
||||
SWEP.Num = 8 -- number of shots per trigger pull.
|
||||
SWEP.RunawayBurst = false
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NotForNPCS = true
|
||||
SWEP.NPCWeaponType = {"weapon_shotgun"}
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 45 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 250 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 500
|
||||
|
||||
SWEP.ShootWhileSprint = false
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot" -- what ammo type the gun uses
|
||||
SWEP.MagID = "HShotgun" -- the magazine pool this gun draws from
|
||||
SWEP.ShootVol = 200 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 90 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "shotgun_dbl_fire.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_silencer_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw/ak47/ak47-1-distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_minimi"
|
||||
SWEP.ShellModel = ""
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = ""
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.75
|
||||
SWEP.SightedSpeedMult = 0.6
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4, -4, 0),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(7, 1, -2),
|
||||
ang = Angle(0, 90, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
SWEP.BarrelLength = 20
|
||||
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Choke",
|
||||
DefaultAttName = "Standard Choke",
|
||||
Slot = "choke",
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_shotgun",
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 0.4,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "idle",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire1",
|
||||
Time = 0.5,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire1",
|
||||
Time = 0.5,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 30,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
}
|
||||
|
||||
local soundData = {
|
||||
name = "Weapon_Swing" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "draw_minigun_heavy.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Weapon_Swing2" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "draw_default.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Magazine.Out" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "sniper_military_slideback_1.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Magazine.In" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "sniper_military_slideforward_1.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Cock" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "shotgun_cock.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
@@ -0,0 +1,289 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "OICW"
|
||||
SWEP.TrueName = "Overwatch Tactical Issue"
|
||||
|
||||
-- Technically you can omit all trivia info, but that's not fun! Do a bit of research and write some stuff in!
|
||||
SWEP.Trivia_Class = "Assault Rifle"
|
||||
SWEP.Trivia_Desc = "Fast firing battle rifle designed to replace the human MP7 in the Combine's arsenal, with an ever faster 5-round burst mode. Good for runnin' and gunnin'."
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
SWEP.Trivia_Calibre = "Light Pulse Capsule"
|
||||
SWEP.Trivia_Mechanism = "Dark Energy Cyclotron"
|
||||
SWEP.Trivia_Country = "Universal Union - Earth Overwatch"
|
||||
SWEP.Trivia_Year = "Occupation Period 1, 201x"
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
end
|
||||
|
||||
SWEP.UseHands = false
|
||||
|
||||
SWEP.ViewModel = "models/weapons/oicw/v_oicw.mdl"
|
||||
SWEP.WorldModel = "models/weapons/oicw/w_oicw.mdl"
|
||||
SWEP.ViewModelFOV = 54
|
||||
|
||||
SWEP.Damage = 12
|
||||
SWEP.DamageMin = 12
|
||||
SWEP.Range = 350 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 600 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 45 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 60
|
||||
SWEP.ReducedClipSize = 30
|
||||
|
||||
SWEP.Recoil = 0.53
|
||||
SWEP.RecoilSide = 0.3
|
||||
SWEP.RecoilRise = 0.1
|
||||
|
||||
|
||||
SWEP.Delay = 60 / 600 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = -5,
|
||||
Mult_RPM = 2,
|
||||
RunawayBurst = true,
|
||||
PostBurstDelay = 0.25
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 150
|
||||
|
||||
SWEP.AccuracyMOA = 12 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 450 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "oicw2" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 115 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/oicw/smg1_fire1.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_silencer_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/oicw/smg1_fire1.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellModel = nil
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = nil
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 1
|
||||
SWEP.SightedSpeedMult = 0.7
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-10, 0, 0),
|
||||
Ang = Angle(-30, 0 ,0),
|
||||
Magnification = 2,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = true
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-2, -6, 0)
|
||||
SWEP.ActiveAng = Angle(2, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, 0)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
|
||||
["optic"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{indc = 1, bg = 1}},
|
||||
},
|
||||
["optic_lp"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Integral Sight (2x)",
|
||||
Slot = {"optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "Bip01 R Hand", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(10.438, -1.599, 11.939), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(6.099, 0.699, -6.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(2, 0, 0),
|
||||
},
|
||||
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"ubgl"},
|
||||
Bone = "Bip01 R Hand",
|
||||
Offset = {
|
||||
vpos = Vector(21.67, -2.573, 3.747),
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(17, 0.6, -4.676),
|
||||
wang = Angle(-10, 0, 180)
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "Bip01 R Hand",
|
||||
Offset = {
|
||||
vpos = Vector(31.375, -2.731, 7.867),
|
||||
vang = Angle(-1.7, 0, 0),
|
||||
wpos = Vector(26.648, 0.782, -8.042),
|
||||
wang = Angle(-9.79, 0, 180)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Bip01 R Hand",
|
||||
Offset = {
|
||||
vpos = Vector(19.806, -4.776, 8.824), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(-2, 0, -90),
|
||||
wpos = Vector(15.625, -0.1, -6.298),
|
||||
wang = Angle(-8.829, -0.556, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "stock",
|
||||
DefaultAttName = "Standard Stock"
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "Bip01 R Hand", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(12.66, -3.62, 9.439), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(6.099, 1.1, -3.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = false,
|
||||
|
||||
["draw"] = {
|
||||
Source = "AR2_draw",
|
||||
Time = 0.4,
|
||||
SoundTable = {{s = "weapons/arccw/ak47/ak47_draw.wav", t = 0}},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = {"AR2_primary_fire3", "AR2_primary_fire4"},
|
||||
Time = 0.5,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "AR2_primary_dry",
|
||||
Time = 0.5,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "AR2_reload",
|
||||
Time = 2.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/oicw/smg1_reload.wav", t = 0}},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "AR2_reload",
|
||||
Time = 2.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {{s = "weapons/oicw/smg1_reload.wav", t = 0}},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,231 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Ordinal Rifle"
|
||||
SWEP.TrueName = "Ordinal Rifle"
|
||||
SWEP.Trivia_Class = "Assault Carbine"
|
||||
SWEP.Trivia_Desc = "It does the shoot"
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
SWEP.Trivia_Calibre = "Energy things"
|
||||
SWEP.Trivia_Mechanism = "Plasma Pulse"
|
||||
SWEP.Trivia_Country = "Bulgaria"
|
||||
SWEP.Trivia_Year = 2015
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_ordinalriflearccw.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_ordinalriflearccw.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10, 4.2, -6),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.DefaultBodygroups = "00000000000"
|
||||
|
||||
SWEP.Damage = 19
|
||||
SWEP.DamageMin = 19
|
||||
SWEP.Range = 250 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1050 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 45
|
||||
SWEP.ReducedClipSize = 10
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 700
|
||||
|
||||
SWEP.Recoil = 0.3
|
||||
SWEP.RecoilSide = 0.670
|
||||
SWEP.RecoilRise = 0.1
|
||||
|
||||
SWEP.Delay = 60 / 525 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 5 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 100 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 175
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ar2" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 60 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 140 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/ar2/fire1.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/ar2/fire1.wav"
|
||||
SWEP.DistantShootSound = "weapons/ar2/fire1.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_minimi"
|
||||
SWEP.ShellModel = ""
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = ""
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 1
|
||||
SWEP.SightedSpeedMult = 1
|
||||
SWEP.SightTime = 0.2
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.2, -1, 0.3),
|
||||
Ang = Angle(0, 0, -30),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = true
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(2,2,-0.6)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(0, -3, 1)
|
||||
SWEP.CrouchAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = "optic_lp",
|
||||
Bone = "pulserifle",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Offset = {
|
||||
vpos = Vector(-0, -5, 4.25),
|
||||
vang = Angle(0, 90, 0),
|
||||
},
|
||||
VMScale = Vector(1.15, 1.15, 1.15),
|
||||
CorrectivePos = Vector(0, -10, 0),
|
||||
CorrectiveAng = Angle(0, 0, 0),
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "foregrip",
|
||||
Bone = "pulserifle",
|
||||
Offset = {
|
||||
vpos = Vector(0, 10, -1.1),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "pulserifle",
|
||||
Offset = {
|
||||
vpos = Vector(-0, 12, 1.2),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Hammer",
|
||||
Slot = "ar2_hammer",
|
||||
DefaultAttName = "Standard Pulse-Action",
|
||||
},
|
||||
{
|
||||
PrintName = "Plug Type",
|
||||
Slot = "ar2_ammo",
|
||||
DefaultAttName = "Standard Plug"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "pulserifle", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.5, -1, 4), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"fire1","fire2"},
|
||||
Time = 0.5,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire3",
|
||||
Time = 0.5,
|
||||
},
|
||||
["enter_sights"] = {
|
||||
Source = "idle",
|
||||
Time = 0,
|
||||
},
|
||||
["idle_sights"] = {
|
||||
Source = "idle",
|
||||
Time = 0,
|
||||
},
|
||||
["exit_sights"] = {
|
||||
Source = "idle",
|
||||
Time = 0,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
Source = "inspect",
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,308 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Suppressor LMG"
|
||||
SWEP.TrueName = "Suppressor LMG"
|
||||
SWEP.Trivia_Class = "Light Machine Gun"
|
||||
SWEP.Trivia_Desc = "The Combine Suppressor uses this weapon effectively when it comes to his job title. it can deal massive damage due to it's fast firerate. However it's barrel overheating will cause it to have poor accuracy. Thus, this weapon is most effective in CQC."
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
SWEP.Trivia_Calibre = "Big Ass Bullet"
|
||||
SWEP.Trivia_Mechanism = "Plasma Pulse Shit"
|
||||
SWEP.Trivia_Country = "Bulgaria"
|
||||
SWEP.Trivia_Year = 2015
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Suppressor LMG"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
SWEP.ViewModel = "models/weapons/c_suppressor.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_suppressor.mdl"
|
||||
SWEP.ViewModelFOV = 55
|
||||
SWEP.DefaultBodygroups = "0000000"
|
||||
|
||||
SWEP.Damage = 10
|
||||
SWEP.DamageMin = 10 -- damage done at maximum range
|
||||
SWEP.Range = 120 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_AIRBOAT
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1800 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 6
|
||||
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 150 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 200
|
||||
SWEP.ReducedClipSize = 75
|
||||
|
||||
|
||||
SWEP.Recoil = 0.8
|
||||
SWEP.RecoilSide = 0.75
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.Delay = 60 / 700 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NotForNPCS = true
|
||||
SWEP.NPCWeaponType = {"weapon_shotgun"}
|
||||
SWEP.NPCWeight = 50
|
||||
|
||||
SWEP.AccuracyMOA = 50 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 300 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.ShootWhileSprint = false
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "Pulse LMG" -- the magazine pool this gun draws from
|
||||
SWEP.ShootVol = 120 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 90 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "fire2.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_silencer_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw/ak47/ak47-1-distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_minimi"
|
||||
SWEP.ShellModel = ""
|
||||
SWEP.ShellScale = 0
|
||||
SWEP.ShellMaterial = ""
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.75
|
||||
SWEP.SightedSpeedMult = 0.6
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4, -4, 0),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 3, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 34
|
||||
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["reducedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
WMBodygroups = {{ind = 1, bg = 2}},
|
||||
},
|
||||
["nors"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 2, bg = 1},
|
||||
{ind = 3, bg = 1},
|
||||
},
|
||||
},
|
||||
["nobrake"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 6, bg = 1},
|
||||
},
|
||||
},
|
||||
["pwraith"] = {
|
||||
VMBodygroups = {},
|
||||
WMBodygroups = {},
|
||||
TrueNameChange = "Suppressor LMG",
|
||||
NameChange = "Hell's Wraith"
|
||||
},
|
||||
["mount"] = {
|
||||
VMElements = {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "suppressor",
|
||||
Offset = {
|
||||
vpos = Vector(-1.5, -20, 0),
|
||||
vang = Angle(0, 80, 90),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"ubgl", "bipod"},
|
||||
Bone = "suppressor",
|
||||
Offset = {
|
||||
vpos = Vector(-4, -10, 1),
|
||||
vang = Angle(0, 80, 90),
|
||||
wpos = Vector(0, 0, 0),
|
||||
wang = Angle(0, 0, 0)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 0.4,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "idle",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"fire"},
|
||||
Time = 0.5,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 0.5,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
Time = 4,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
}
|
||||
|
||||
local soundData = {
|
||||
name = "Weapon_Swing" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "draw_minigun_heavy.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Weapon_Swing2" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "draw_default.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Magazine.Out" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "sniper_military_slideback_1.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
|
||||
local soundData = {
|
||||
name = "Magazine.In" ,
|
||||
channel = CHAN_WEAPON,
|
||||
volume = 0.5,
|
||||
soundlevel = 80,
|
||||
pitchstart = 100,
|
||||
pitchend = 100,
|
||||
sound = "sniper_military_slideforward_1.wav"
|
||||
}
|
||||
sound.Add(soundData)
|
||||
@@ -0,0 +1,648 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Oldie Weaponry"
|
||||
SWEP.UC_CategoryPack = "1Urban Decay"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/12g.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.UC_ShellColor = Color(0.7*255, 0.2*255, 0.2*255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Express-12"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Remington 870"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Shotgun"
|
||||
SWEP.Trivia_Desc = "Classic pump-action shotgun, renowned for its high quality parts and assembly. A simple firearm with a simple purpose. Marketed primarily to civilians for use in hunting game and self-defense, but it has found popularity among police departments for a relatively innocuous appearance and ability to accept custom loaded less-lethal shells."
|
||||
SWEP.Trivia_Manufacturer = "Mauer Armaments"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Pump Action"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1950
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Remington Arms"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_870.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_870.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
SWEP.DefaultBodygroups = "000000000"
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-5.5, 5, -5.5),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1 - ( 0.35 * 0.5 )
|
||||
}
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 8
|
||||
SWEP.DamageMin = 8
|
||||
SWEP.Penetration = 1
|
||||
SWEP.Num = 8
|
||||
|
||||
SWEP.Range = 45
|
||||
SWEP.RangeMin = 5
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 200
|
||||
|
||||
SWEP.HullSize = 0.5
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults_Shotgun
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 6
|
||||
SWEP.ExtendedClipSize = 8
|
||||
SWEP.ReducedClipSize = 6
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 2
|
||||
|
||||
SWEP.RecoilRise = 0.3
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
|
||||
SWEP.Sway = 0.5
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 120
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
PrintName = "fcg.pump",
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NoLastCycle = true
|
||||
SWEP.ManualAction = true
|
||||
SWEP.ShotgunReload = true
|
||||
|
||||
SWEP.ShootVol = 160
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 210
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 40
|
||||
SWEP.HipDispersion = 250
|
||||
SWEP.MoveDispersion = 250
|
||||
SWEP.JumpDispersion = 300
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.91
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.3
|
||||
SWEP.ShootSpeedMult = 0.75
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 32
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.66, -3, 2.2),
|
||||
Ang = Angle(-0.75, 0, 2.8),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "",
|
||||
}
|
||||
|
||||
SWEP.HolsterPos = Vector(2, 0, -2)
|
||||
SWEP.HolsterAng = Angle(-5.5, 20, -20)
|
||||
|
||||
SWEP.SprintPos = Vector(-0.5, -4, -2)
|
||||
SWEP.SprintAng = Angle(3.5, 7, -20)
|
||||
|
||||
SWEP.ActivePos = Vector(-0.75, -2, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, -3)
|
||||
|
||||
SWEP.CrouchPos = Vector(-3.8, -2, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(3, 0, -4)
|
||||
|
||||
|
||||
|
||||
SWEP.Malfunction = false
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
SWEP.MalfunctionMean = 500
|
||||
SWEP.MalfunctionVariance = 0.99
|
||||
-- Firing sounds --
|
||||
|
||||
local path = ")weapons/arccw_ud/870/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = {
|
||||
path .. "fire-sup-01.ogg",
|
||||
path .. "fire-sup-02.ogg",
|
||||
path .. "fire-sup-03.ogg",
|
||||
path .. "fire-sup-04.ogg",
|
||||
path .. "fire-sup-05.ogg",
|
||||
path .. "fire-sup-06.ogg"
|
||||
}
|
||||
--[[SWEP.DistantShootSound = path .. "fire_dist.ogg"
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"]]
|
||||
SWEP.ShootDrySound = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}
|
||||
|
||||
local tail = ")/arccw_uc/common/12ga/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-12ga-pasg-ext-01.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-02.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-03.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-04.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-05.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
local shellin = {path .. "shell-insert-01.ogg", path .. "shell-insert-02.ogg", path .. "shell-insert-03.ogg"}
|
||||
|
||||
SWEP.Animations = {
|
||||
["ready"] = {
|
||||
Source = "sgreload_finish_empty",
|
||||
Time = 37 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 1.2,
|
||||
LHIKOut = 1.4,
|
||||
SoundTable = {
|
||||
{s = common .. "raise.ogg", t = 0.2},
|
||||
{s = common .. "rattle.ogg", t = 0.2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.5},
|
||||
{s = path .. "rack_1.ogg", t = 0.4},
|
||||
{s = path .. "rack_2.ogg", t = 0.6},
|
||||
{s = common .. "shoulder.ogg", t = 0.9},
|
||||
},
|
||||
ProcDraw = true,
|
||||
},
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
--Time = 23 / 30,
|
||||
MinProgress = 8 / 30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
--Time = 23 / 30,
|
||||
MinProgress = 8 / 30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["cycle"] = {
|
||||
Source = "cycle",
|
||||
--Time = 20 / 30,
|
||||
ShellEjectAt = 0.1,
|
||||
MinProgress = 0.26,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "rack_1.ogg", t = 0},
|
||||
{s = path .. "eject.ogg", t = 0.1},
|
||||
{s = path .. "rack_2.ogg", t = 0.11},
|
||||
},
|
||||
},
|
||||
|
||||
["cycle_jammed"] = {
|
||||
Source = "jamcycle",
|
||||
--Time = 20 / 30,
|
||||
ShellEjectAt = 0.1,
|
||||
MinProgress = 0.26,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "rack_1.ogg", t = 0},
|
||||
{s = path .. "eject.ogg", t = 0.1},
|
||||
{s = path .. "rack_2.ogg", t = 0.11},
|
||||
},
|
||||
},
|
||||
|
||||
["fix"] = {
|
||||
Source = "fix",
|
||||
Time = 50 / 30,
|
||||
ShellEjectAt = 0.7, -- should make the shell eject offscreen cuz the anim already has it
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.5},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1},
|
||||
{s = path .. "rack_1.ogg", t = 0.6},
|
||||
{s = path .. "eject.ogg", t = 0.7},
|
||||
{s = path .. "rack_2.ogg", t = 0.9},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.7},
|
||||
}
|
||||
},
|
||||
["sgreload_start"] = {
|
||||
Source = "sgreload_start",
|
||||
Time = 16 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = common .. "shoulder.ogg", t = 0.1},
|
||||
},
|
||||
},
|
||||
["sgreload_insert"] = {
|
||||
Source = "sgreload_insert",
|
||||
Time = 18 / 30,
|
||||
MinProgress = 0.24,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = shellin, t = 0},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
},
|
||||
},
|
||||
["sgreload_finish"] = {
|
||||
Source = "sgreload_finish",
|
||||
Time = 20 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.4,
|
||||
TPAnimStartTime = 0.8,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = common .. "shoulder.ogg", t = 0.27},
|
||||
},
|
||||
},
|
||||
["sgreload_finish_empty"] = {
|
||||
Source = "sgreload_finish_empty",
|
||||
Time = 37 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.6,
|
||||
LHIKOut = 0.8,
|
||||
TPAnimStartTime = 0.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
ShellEjectAt = 0.5,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.5},
|
||||
{s = path .. "rack_1.ogg", t = 0.4},
|
||||
{s = path .. "eject.ogg", t = 0.5},
|
||||
{s = path .. "rack_2.ogg", t = 0.525},
|
||||
{s = common .. "shoulder.ogg", t = 0.9},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep, data)
|
||||
local vm = data.vm
|
||||
if !IsValid(vm) then return end
|
||||
-- if wep.Attachments[1].Installed then
|
||||
-- vm:SetBodygroup(8, 2)
|
||||
-- elseif wep.Attachments[2].Installed == "ud_870_barrel_long" then
|
||||
-- vm:SetBodygroup(8, 1)
|
||||
-- else
|
||||
-- vm:SetBodygroup(8, 0)
|
||||
-- end
|
||||
|
||||
-- 8rnd tube and either barrel should remove the clamp
|
||||
if vm:GetBodygroup(7) == 1 and vm:GetBodygroup(1) != 0 then
|
||||
vm:SetBodygroup(7, 2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[0] = "870_shell1",
|
||||
}
|
||||
|
||||
SWEP.DefaultSkin = 1
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ud_870_optic_ringsight"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 8, bg = 1},
|
||||
},
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-3.665, -2.75, 2.1),
|
||||
Ang = Angle(-0.6, 0, 1),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "",
|
||||
},
|
||||
},
|
||||
["optic_rail"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 8, bg = 2},
|
||||
}
|
||||
},
|
||||
["ud_shotgun_rail_fg"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["ud_870_slide_moe"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
["ud_870_slide_long"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 2}},
|
||||
},
|
||||
["ud_870_slide_poly"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 3}},
|
||||
},
|
||||
["ud_shotgun_rail_fg"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["ud_870_barrel_long"] = {
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(-0.03, -0.65, 39.5),
|
||||
}
|
||||
},
|
||||
VMBodygroups = {
|
||||
{ind = 1, bg = 1},
|
||||
},
|
||||
},
|
||||
["ud_870_barrel_sawnoff"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 1, bg = 2},
|
||||
{ind = 7, bg = 2}
|
||||
},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(-0.03, -0.9, 19),
|
||||
}
|
||||
},
|
||||
},
|
||||
["ud_870_tube_reduced"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 2, bg = 2},
|
||||
{ind = 7, bg = 2}
|
||||
},
|
||||
},
|
||||
["ud_870_tube_ext"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 2, bg = 1},
|
||||
{ind = 7, bg = 1}
|
||||
},
|
||||
},
|
||||
["ud_870_stock_poly"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["ud_870_stock_sawnoff"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}},
|
||||
},
|
||||
["ud_870_stock_raptor"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 3}},
|
||||
},
|
||||
|
||||
["ud_870_skin_dirty"] = {
|
||||
VMSkin = 0
|
||||
},
|
||||
["ud_870_skin_custom"] = {
|
||||
VMSkin = 3
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp","optic","optic_sniper","ud_870_optic"},
|
||||
Bone = "870_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1.75, -2),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
VMScale = Vector(1, 1, 1),
|
||||
CorrectiveAng = Angle(1.8, 0.1, 0),
|
||||
InstalledEles = {"optic_rail"}
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "16\" Standard Barrel",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_870_barrel.png", "smooth mips"),
|
||||
Slot = "ud_870_barrel",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"choke", "muzzle_shotgun"},
|
||||
Bone = "870_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.03, -0.75, 26.3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Forend",
|
||||
DefaultAttName = "Factory Forend",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_870_slide.png", "smooth mips"),
|
||||
Slot = {"ud_870_slide"},
|
||||
Bone = "870_slide",
|
||||
Offset = {
|
||||
vpos = Vector(3, -4.4, -29),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "870_slide",
|
||||
Offset = {
|
||||
vpos = Vector(0, 1.1, 0),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_shotgun_rail_fg"}
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "870_slide",
|
||||
Offset = {
|
||||
vpos = Vector(0, 1, 4.25),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
DefaultAttName = "Wooden Stock",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_870_stock.png", "smooth mips"),
|
||||
Slot = {"ud_870_stock"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tube Type",
|
||||
Slot = {"ud_870_tube"},
|
||||
DefaultAttName = "6 Shell Tube",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_870_tube.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"BUCK\" #00 Buckshot",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_shotgun_generic.png", "mips smooth"),
|
||||
Slot = "ud_ammo_shotgun",
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "870_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0.7, 0, 5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = "ud_870_skin",
|
||||
DefaultAttName = "Polished Steel",
|
||||
FreeSlot = true
|
||||
}
|
||||
}
|
||||
|
||||
local lookup_barrel = {
|
||||
default = 1,
|
||||
ud_870_barrel_long = 2,
|
||||
ud_870_barrel_sawnoff = 0,
|
||||
}
|
||||
|
||||
local lookup_tube = {
|
||||
default = 1,
|
||||
ud_870_tube_ext = 2,
|
||||
ud_870_tube_reduced = 0,
|
||||
}
|
||||
|
||||
SWEP.Hook_ExtraFlags = function(wep, data)
|
||||
|
||||
local barrel = wep.Attachments[2].Installed and lookup_barrel[wep.Attachments[2].Installed] or lookup_barrel["default"]
|
||||
local tube = wep.Attachments[8].Installed and lookup_tube[wep.Attachments[8].Installed] or lookup_tube["default"]
|
||||
|
||||
if barrel < tube then
|
||||
table.insert(data, "nomuzzleblocking")
|
||||
end
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,783 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Modern Weaponry"
|
||||
SWEP.UC_CategoryPack = "1Urban Decay"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/12g.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.UC_ShellColor = Color(0.7*255, 0.2*255, 0.2*255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "FC1040"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Benelli M4"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Shotgun"
|
||||
SWEP.Trivia_Desc = [[Semi-automatic shotgun designed for close-quarters urban warfare. Uses an innovative short-stroke gas system that eliminates complex mechanisms found on most gas-operated automatic weapons. Its main use is in destroying locked doors.
|
||||
|
||||
Devastating damage output, but control is required to avoid spending more time reloading than fighting.]]
|
||||
SWEP.Trivia_Manufacturer = "Iscapelli Armaments"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated Rotating Bolt"
|
||||
SWEP.Trivia_Country = "Italy"
|
||||
SWEP.Trivia_Year = 1998
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Benelli Armi SpA"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_m1014.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_m1014.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-4, 4, -4.5),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
SWEP.DefaultPoseParams = {["grip"] = 0}
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
|
||||
SWEP.Damage = 9
|
||||
SWEP.DamageMin = 9
|
||||
SWEP.Penetration = 1
|
||||
SWEP.Num = 8
|
||||
|
||||
SWEP.Range = 90
|
||||
SWEP.RangeMin = 4
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 200
|
||||
|
||||
SWEP.HullSize = 0.25
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults_Shotgun
|
||||
|
||||
-- Jamming --
|
||||
|
||||
SWEP.Malfunction = false
|
||||
SWEP.MalfunctionJam = false
|
||||
SWEP.MalfunctionPostFire = false
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 2
|
||||
SWEP.Primary.ClipSize = 4
|
||||
SWEP.ExtendedClipSize = 7
|
||||
SWEP.ReducedClipSize = 2
|
||||
|
||||
SWEP.ChamberLoadNonEmpty = 2
|
||||
SWEP.ChamberLoadEmpty = 1
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 2
|
||||
|
||||
SWEP.RecoilRise = 0.24
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
|
||||
SWEP.Sway = 0.5
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 120
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ShotgunReload = true
|
||||
|
||||
SWEP.ShootVol = 160
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 210
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 45
|
||||
SWEP.HipDispersion = 400
|
||||
SWEP.MoveDispersion = 100
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.92
|
||||
SWEP.SightedSpeedMult = 0.6
|
||||
SWEP.SightTime = 0.4
|
||||
SWEP.ShootSpeedMult = 0.75
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 48
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.73, -2, 1.1),
|
||||
Ang = Angle(.25, 0.01, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "",
|
||||
}
|
||||
|
||||
SWEP.HolsterPos = Vector(2, 0, -3)
|
||||
SWEP.HolsterAng = Angle(-5.5, 20, -20)
|
||||
|
||||
SWEP.SprintPos = Vector(-0.5, -4, -3)
|
||||
SWEP.SprintAng = Angle(3.5, 7, -20)
|
||||
|
||||
SWEP.ActivePos = Vector(-0.1, -0.5, 0.75)
|
||||
SWEP.ActiveAng = Angle(0, 0, -0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, -2, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(3, 0, -4.5)
|
||||
|
||||
-- Firing sounds --
|
||||
|
||||
local path2 = ")weapons/arccw_ud/m16/"
|
||||
local path1 = ")weapons/arccw_ud/870/"
|
||||
local path = ")weapons/arccw_ud/m1014/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
SWEP.ShootSound = {
|
||||
path1 .. "fire-01.ogg",
|
||||
path1 .. "fire-02.ogg",
|
||||
path1 .. "fire-03.ogg",
|
||||
path1 .. "fire-04.ogg",
|
||||
path1 .. "fire-05.ogg",
|
||||
path1 .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = {
|
||||
path1 .. "fire-sup-01.ogg",
|
||||
path1 .. "fire-sup-02.ogg",
|
||||
path1 .. "fire-sup-03.ogg",
|
||||
path1 .. "fire-sup-04.ogg",
|
||||
path1 .. "fire-sup-05.ogg",
|
||||
path1 .. "fire-sup-06.ogg"
|
||||
}
|
||||
--[[SWEP.DistantShootSound = path .. "fire_dist.ogg"
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"]]
|
||||
SWEP.ShootDrySound = path .. "dryfire.ogg"
|
||||
|
||||
local tail = ")/arccw_uc/common/12ga/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-12ga-pasg-ext-01.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-02.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-03.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-04.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-05.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
local rottle = {common .. "cloth_1.ogg", common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local ratel = {common .. "rattle1.ogg", common .. "rattle2.ogg", common .. "rattle3.ogg"}
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
local shellin = {path .. "shell-insert-01.ogg", path .. "shell-insert-02.ogg", path .. "shell-insert-03.ogg"}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty",
|
||||
},
|
||||
["idle_jammed"] = {
|
||||
Source = "idle_jammed",
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "equip",
|
||||
Time = 60 / 30,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.35},
|
||||
{s = path .. "chback.ogg", t = 0.35},
|
||||
{s = path .. "chamber.ogg", t = 0.6},
|
||||
{s = rottle, t = 0.75},
|
||||
},
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 30 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = 30 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_jammed"] = {
|
||||
Source = "draw_jammed",
|
||||
Time = 30 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_jammed"] = {
|
||||
Source = "holster_jammed",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 16 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg", t = 0, v = 0.45}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 18 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg", t = 0}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 18 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 20 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_jammed"] = {
|
||||
Source = "fire_jam",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = false,
|
||||
SoundTable = {
|
||||
{s = path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg", t = 0}, -- Not temporary
|
||||
--{s = path1 .. "eject.ogg", t = 0}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = "jam_fix",
|
||||
Time = 60 / 30,
|
||||
ShellEjectAt = 0.8,
|
||||
LHIK = false,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path2 .. "grab.ogg", t = 0.1},
|
||||
{s = path .. "chback.ogg", t = 0.7},
|
||||
{s = path1 .. "eject.ogg", t = 0.8, v = 0.4},
|
||||
{s = path .. "chamber.ogg", t = 0.9},
|
||||
{s = rottle, t = 1.2},
|
||||
},
|
||||
},
|
||||
["unjam_empty"] = {
|
||||
Source = "jam_fix_empty",
|
||||
Time = 60 / 30,
|
||||
ShellEjectAt = 1.1,
|
||||
LHIK = false,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path2 .. "grab.ogg", t = .4},
|
||||
{s = path .. "chback.ogg", t = 0.8},
|
||||
{s = path1 .. "eject.ogg", t = 1.1},
|
||||
{s = rottle, t = 1.2},
|
||||
},
|
||||
},
|
||||
["sgreload_start"] = {
|
||||
Source = "sgreload_start",
|
||||
Time = 16 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0.2,
|
||||
//LHIKEaseIn = 0.2,
|
||||
//LHIKOut = 0,
|
||||
},
|
||||
["sgreload_start_empty"] = {
|
||||
Source = "sgreload_start_empty",
|
||||
Time = 40 / 30,
|
||||
MinProgress = 1,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0.2,
|
||||
//LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "breechload.ogg", t = 0.25},
|
||||
{s = path .. "breechclose.ogg", t = 0.9},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_insert"] = {
|
||||
Source = "sgreload_insert",
|
||||
Time = 18 / 30,
|
||||
MinProgress = 0.24,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.3,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0,
|
||||
//LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = shellin, t = 0},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.05},
|
||||
},
|
||||
},
|
||||
["sgreload_finish"] = {
|
||||
Source = "sgreload_finish",
|
||||
Time = 30 / 30,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0,
|
||||
//LHIKEaseOut = 0.3,
|
||||
//LHIKOut = 0.6,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.8,
|
||||
SoundTable = {
|
||||
{s = common .. "shoulder.ogg", t = 0.3},
|
||||
},
|
||||
},
|
||||
|
||||
-- stock animla below
|
||||
|
||||
["idle_stock"] = {
|
||||
Source = "idle_stock",
|
||||
},
|
||||
["idle_empty_stock"] = {
|
||||
Source = "idle_empty_stock",
|
||||
},
|
||||
["idle_jammed_stock"] = {
|
||||
Source = "idle_jammed_stock",
|
||||
},
|
||||
["draw_stock"] = {
|
||||
Source = "draw_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_empty_stock"] = {
|
||||
Source = "draw_empty_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_jammed_stock"] = {
|
||||
Source = "draw_jammed_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster_stock"] = {
|
||||
Source = "holster_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_empty_stock"] = {
|
||||
Source = "holster_empty_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_jammed_stock"] = {
|
||||
Source = "holster_jammed_stock",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire_stock"] = {
|
||||
Source = "fire_stock",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg", t = 0}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_empty_stock"] = {
|
||||
Source = "fire_empty_stock",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Not temporary
|
||||
{s = path1 .. "eject.ogg", t = 0.01}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_jammed_stock"] = {
|
||||
Source = "fire_jam_stock",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = false,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Not temporary
|
||||
--{s = path1 .. "eject.ogg", t = 0}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["unjam_stock"] = {
|
||||
Source = "jam_fix_stock",
|
||||
Time = 60 / 30,
|
||||
ShellEjectAt = 1.1,
|
||||
LHIK = false,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path2 .. "grab.ogg", t = .4},
|
||||
{s = path .. "chback.ogg", t = 0.8},
|
||||
{s = path1 .. "eject.ogg", t = 1.1},
|
||||
{s = path .. "breechclose.ogg", t = 0.9},
|
||||
{s = rottle, t = 1.2},
|
||||
},
|
||||
},
|
||||
["unjam_empty_stock"] = {
|
||||
Source = "jam_fix_empty_stock",
|
||||
Time = 60 / 30,
|
||||
ShellEjectAt = 1.1,
|
||||
LHIK = false,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path2 .. "grab.ogg", t = .4},
|
||||
{s = path .. "chback.ogg", t = 0.8},
|
||||
{s = path1 .. "eject.ogg", t = 1.1},
|
||||
--{s = path .. "breechclose.ogg", t = 1.2},
|
||||
{s = rottle, t = 1.2},
|
||||
},
|
||||
},
|
||||
["sgreload_start_stock"] = {
|
||||
Source = "sgreload_start_stock",
|
||||
Time = 16 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0.2,
|
||||
//LHIKEaseIn = 0.2,
|
||||
//LHIKOut = 0,
|
||||
},
|
||||
["sgreload_start_empty_stock"] = {
|
||||
Source = "sgreload_start_empty_stock",
|
||||
Time = 40 / 30,
|
||||
MinProgress = 1,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0.2,
|
||||
//LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "breechload.ogg", t = 0.05},
|
||||
{s = path .. "breechclose.ogg", t = 0.75},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_finish_stock"] = {
|
||||
Source = "sgreload_finish_stock",
|
||||
Time = 22 / 30,
|
||||
LHIK = false,
|
||||
//LHIKIn = 0,
|
||||
//LHIKEaseOut = 0.3,
|
||||
//LHIKOut = 0.6,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.8,
|
||||
SoundTable = {
|
||||
{s = common .. "shoulder.ogg", t = 0.4},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
--[1] = "1014_shell1",
|
||||
}
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ud_autoshotgun_barrel_short"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, -0.40, 19.6),
|
||||
}
|
||||
},
|
||||
},
|
||||
["ud_autoshotgun_barrel_sawnoff"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(-0.03, -0.75, 22.2),
|
||||
}
|
||||
},
|
||||
},
|
||||
["ud_autoshotgun_barrel_sport"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, -0.40, 26.3),
|
||||
}
|
||||
},
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-2.73, -2, 1.01),
|
||||
Ang = Angle(0.95, 0.01, 0),
|
||||
Magnification = 1.1
|
||||
},
|
||||
},
|
||||
["ud_autoshotgun_tube_short"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 2, bg = 1},
|
||||
{ind = 4, bg = 1},
|
||||
},
|
||||
},
|
||||
["ud_autoshotgun_tube_long"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 0}},
|
||||
},
|
||||
|
||||
["ud_autoshotgun_stock_in"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
VMPoseParams = {["grip"] = 0}
|
||||
},
|
||||
["ud_autoshotgun_stock_buffer"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 2}},
|
||||
VMPoseParams = {["grip"] = 0}
|
||||
},
|
||||
["ud_autoshotgun_stock_sport"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 3, bg = 3},
|
||||
{ind = 6, bg = 1},
|
||||
},
|
||||
VMPoseParams = {["grip"] = 1}
|
||||
},
|
||||
["ud_autoshotgun_stock_gripstock"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 3, bg = 5},
|
||||
},
|
||||
VMPoseParams = {["grip"] = 0}
|
||||
},
|
||||
|
||||
["ud_m1014_handguard_sport"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 2}},
|
||||
},
|
||||
["ud_autoshotgun_rail_fg"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic", "optic_sniper"},
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.025, -1.35, 2.5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "18.5\" Factory Barrel", --16\" M4 Super 90 SBS Barrel
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_m1014_barrel.png", "smooth mips"),
|
||||
Slot = "ud_1014_barrel",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"choke", "muzzle_shotgun"},
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -0.40, 24.5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
ExcludeFlags = {"nomuzzle"}
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip","ud_1014_handguard"},
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, 1.7, 9),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_autoshotgun_rail_fg"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0.8, 0.8, 13),
|
||||
vang = Angle(90, 0, 0),
|
||||
},
|
||||
InstalledEles = {"ud_autoshotgun_rail_fg"},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ud_1014_stock"},
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.02, 1.9, -2.07),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
DefaultAttName = "Extended Stock",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_m1014_stock.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Tube Type",
|
||||
Slot = {"ud_1014_tube"},
|
||||
DefaultAttName = "4 Shell Tube",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_m1014_tube.png", "smooth mips"),
|
||||
DefaultEles = {"ud_autoshotgun_tube_short"},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"BUCK\" #00 Buckshot",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_shotgun_generic.png", "mips smooth"),
|
||||
Slot = "ud_ammo_shotgun",
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "1014_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0.7, -0.5, 4),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
local lookup_barrel = {
|
||||
default = 1,
|
||||
ud_m1014_barrel_short = 0,
|
||||
}
|
||||
|
||||
local lookup_tube = {
|
||||
default = 0,
|
||||
ud_m1014_tube_ext = 1,
|
||||
}
|
||||
|
||||
SWEP.Hook_ExtraFlags = function(wep, data)
|
||||
|
||||
local barrel = wep.Attachments[2].Installed and lookup_barrel[wep.Attachments[2].Installed] or lookup_barrel["default"]
|
||||
local tube = wep.Attachments[7].Installed and lookup_tube[wep.Attachments[7].Installed] or lookup_tube["default"]
|
||||
|
||||
if barrel < tube then
|
||||
table.insert(data, "nomuzzleblocking")
|
||||
end
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,458 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Special Weaponry"
|
||||
SWEP.UC_CategoryPack = "1Urban Decay"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_m79"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/ud_shells/12.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 0
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 3
|
||||
SWEP.CamAttachment = 2
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "AMSGL"
|
||||
-- (American) Squad Grenade Launcher or something. similar to M16's fake name
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "M79"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Grenade Launcher"
|
||||
SWEP.Trivia_Desc = "Single-shot 40mm grenade launcher intended to provide infantry with portable long-range explosive firepower. Accurate, flexible and reliable, it is well-respected among American soldiers."
|
||||
SWEP.Trivia_Manufacturer = "Stoner's Legacy Ltd."
|
||||
SWEP.Trivia_Calibre = "40x46mm"
|
||||
SWEP.Trivia_Mechanism = "Break-action"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1961
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Springfield Armory"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_m79.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_m79.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-8, 5.5, -4.5),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1 - ( 0.35 * 0.5 )
|
||||
}
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 200
|
||||
SWEP.DamageMin = 200
|
||||
SWEP.Range = 40
|
||||
SWEP.RangeMin = 0
|
||||
|
||||
SWEP.Num = 1
|
||||
SWEP.Penetration = 0
|
||||
|
||||
SWEP.ShootEntity = "arccw_uc_40mm_he"
|
||||
SWEP.MuzzleVelocity = 5000
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 0
|
||||
SWEP.Primary.ClipSize = 1
|
||||
SWEP.ExtendedClipSize = 1
|
||||
SWEP.ReducedClipSize = 1
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 4
|
||||
SWEP.RecoilSide = 2
|
||||
SWEP.RecoilSide = 1
|
||||
|
||||
SWEP.RecoilRise = 0.24
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
|
||||
SWEP.Sway = 0.5
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 220
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ShootVol = 160
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_rpg"
|
||||
SWEP.NPCWeight = 210
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 30
|
||||
SWEP.HipDispersion = 500
|
||||
SWEP.MoveDispersion = 200
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "smg1_grenade"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.92
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.4
|
||||
SWEP.ShootSpeedMult = 0.75
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 48
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.51, -5, 2.2),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Midpoint = {
|
||||
Pos = Vector(0, 0, 0),
|
||||
Ang = Angle(0, -1, 0),
|
||||
},
|
||||
Magnification = 1,
|
||||
SwitchToSound = "",
|
||||
CrosshairInSights = false,
|
||||
}
|
||||
|
||||
SWEP.HolsterPos = Vector(-0.5, -4, -3)
|
||||
SWEP.HolsterAng = Angle(3.5, 7, -20)
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, -2, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -4)
|
||||
SWEP.BarrelOffsetHip = Vector(6, 0, -8)
|
||||
|
||||
-- Firing sounds --
|
||||
|
||||
local common = ")/arccw_uc/common/"
|
||||
local path = ")/arccw_uc/common/40mm/"
|
||||
local rottle = {common .. "cloth_1.ogg", common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
|
||||
--SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSound = {
|
||||
path .. "fire-dist-01.ogg",
|
||||
path .. "fire-dist-02.ogg",
|
||||
path .. "fire-dist-03.ogg",
|
||||
path .. "fire-dist-04.ogg",
|
||||
path .. "fire-dist-05.ogg",
|
||||
path .. "fire-dist-06.ogg"
|
||||
}
|
||||
--[[SWEP.DistantShootSoundOutdoors = {
|
||||
path .. "fire-dist-01.ogg",
|
||||
path .. "fire-dist-02.ogg",
|
||||
path .. "fire-dist-03.ogg",
|
||||
path .. "fire-dist-04.ogg",
|
||||
path .. "fire-dist-05.ogg",
|
||||
path .. "fire-dist-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}]]
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 20 / 30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 20 / 30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0}},
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
Time = 101 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.6,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
LastClip1OutTime = 1.5,
|
||||
MinProgress = 2.2,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "breaker_open.ogg", t = 0.3},
|
||||
{s = common .. "gl_remove.ogg", t = 0.9},
|
||||
{s = rottle, t = 1.0},
|
||||
{s = common .. "magpouch.ogg", t = 1.4},
|
||||
{s = common .. "40mm_casing_1.ogg", t = 1.6},
|
||||
{s = common .. "gl_insert.ogg", t = 2.0},
|
||||
{s = rottle, t = 2.25},
|
||||
{s = common .. "breaker_close.ogg", t = 2.5},
|
||||
-- {
|
||||
-- t = 0.6,
|
||||
-- e = "RagdollImpact", -- Please add some kind of smoke particle after opening the chamber
|
||||
-- att = 1,
|
||||
-- mag = 100,
|
||||
-- }
|
||||
},
|
||||
},["reload_shotgun"] = {
|
||||
Source = "reload",
|
||||
Time = 101 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.6,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
LastClip1OutTime = 1.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "breaker_open.ogg", t = 0.3},
|
||||
{s = common .. "gl_remove.ogg", t = 0.9},
|
||||
{s = rottle, t = 1.0},
|
||||
{s = common .. "40mm_casing_1.ogg", t = 1.6},
|
||||
{s = common .. "gl_insert.ogg", t = 2.0},
|
||||
{s = rottle, t = 2.25},
|
||||
{s = common .. "breaker_close.ogg", t = 2.5},
|
||||
{
|
||||
t = 1, ind = 1, bg = 2, -- Empty shell bodygroup
|
||||
},
|
||||
{
|
||||
t = 1.5, ind = 1, bg = 1,
|
||||
}
|
||||
},
|
||||
},
|
||||
["reload_caseless"] = {
|
||||
Source = "reload_caseless",
|
||||
Time = 101 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.74,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "breaker_open.ogg", t = 0.3},
|
||||
{s = rottle, t = 0.75},
|
||||
{s = common .. "gl_insert.ogg", t = 1.5},
|
||||
{s = rottle, t = 2.0},
|
||||
{s = common .. "breaker_close.ogg", t = 2.25},
|
||||
-- {
|
||||
-- t = 0.6,
|
||||
-- e = "muzzleflash_m79", -- Please add some kind of smoke particle after opening the chamber
|
||||
-- att = nil,
|
||||
-- mag = 100,
|
||||
-- }
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "m79_grenade",
|
||||
}
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["m79_pirategun"] = {
|
||||
VMBodygroups = {{ind = 0, bg = 1}},
|
||||
},
|
||||
["m79_nostock"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["m79_rail"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
|
||||
["40mm_buckshot"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["40mm_buckshot_empty"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
},
|
||||
["40mm_caseless"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 3}},
|
||||
},
|
||||
["40mm_hornetnest"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 4}},
|
||||
},
|
||||
["40mm_incendiary"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 5}},
|
||||
},
|
||||
["40mm_napalm"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 5}},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic", "optic_sniper"},
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.6, 1),
|
||||
vang = Angle(90, 2, -90),
|
||||
},
|
||||
InstalledEles = {"m79_rail"},
|
||||
ExcludeFlags = {"m79_pirategun"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tube",
|
||||
DefaultAttName = "Standard Tube",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_m79_barrel.png", "smooth mips"),
|
||||
Slot = "ud_m79_barrel",
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(3.45, -5.3, -22),
|
||||
vang = Angle(90, 2, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0.4, 1.25),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"m79_rail"},
|
||||
ExcludeFlags = {"m79_pirategun"},
|
||||
MergeSlots = {10},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(0.25, 0, 5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
ExcludeFlags = {"m79_pirategun"},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ud_m79_stock"},
|
||||
DefaultAttName = "Wooden Stock",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_m79_stock.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Grenade Type",
|
||||
DefaultAttName = "High Explosive",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_40mm_generic.png", "smooth mips"),
|
||||
Slot = "uc_40mm",
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg_singleshot", -- Fire group
|
||||
DefaultAttName = "Standard Internals",
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(0.8, -1, 0),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "M203 slot",
|
||||
Slot = "uc_ubgl",
|
||||
Bone = "m79_front",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1.1, 0.9),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"m79_rail"},
|
||||
ExcludeFlags = {"m79_pirategun"},
|
||||
Hidden = true,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,932 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Oldie Weaponry"
|
||||
SWEP.UC_CategoryPack = "1Urban Decay"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/556x45.mdl"
|
||||
SWEP.ShellScale = 0.666
|
||||
--SWEP.ShellMaterial = "models/weapons/arcticcw/shell_556"
|
||||
SWEP.ShellPitch = 100
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 3
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.TracerCol = Color(25, 255, 25)
|
||||
SWEP.TracerWidth = 2
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Patriot 809"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Mini-14"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Semi-Automatic Rifle"
|
||||
SWEP.Trivia_Desc = [[Autoloading rifle designed for better accuracy than competing models. Due to its appearance, it is sometimes exempted from gun control laws targeting "Assault Weapons" despite its identical ability to kill. This has helped it find success despite its higher cost and non-standard magazine well.
|
||||
|
||||
While it can perform well in close-quarters combat, its high accuracy excels in mid-range engagements.]]
|
||||
SWEP.Trivia_Manufacturer = "Rifles International"
|
||||
SWEP.Trivia_Calibre = "5.56x45mm NATO"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated Rotating Bolt"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1973
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Sturm, Ruger & Company"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_mini14.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_mini14.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
SWEP.DefaultSkin = 0
|
||||
SWEP.DefaultPoseParams = {["grip"] = 0}
|
||||
|
||||
-- Damage --
|
||||
|
||||
SWEP.Damage = 22
|
||||
SWEP.DamageMin = 22
|
||||
SWEP.RangeMin = 50
|
||||
SWEP.Range = 400 -- 4 shot until ~275m
|
||||
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 990
|
||||
SWEP.PhysBulletMuzzleVelocity = 960
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 20
|
||||
SWEP.ExtendedClipSize = 30
|
||||
SWEP.ReducedClipSize = 10
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 0.45
|
||||
SWEP.RecoilSide = 0.2
|
||||
|
||||
SWEP.RecoilRise = 0.5
|
||||
SWEP.RecoilPunch = 1
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
SWEP.RecoilPunchBack = 1
|
||||
|
||||
SWEP.Sway = 0.25
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 540
|
||||
SWEP.Num = 1
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 60
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 4
|
||||
SWEP.HipDispersion = 800
|
||||
SWEP.MoveDispersion = 300
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "smg1"
|
||||
SWEP.MagID = "mini14"
|
||||
|
||||
SWEP.HeatCapacity = 75
|
||||
SWEP.HeatDissipation = 5
|
||||
SWEP.HeatDelayTime = 3
|
||||
|
||||
SWEP.MalfunctionMean = 100
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.9
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.35
|
||||
SWEP.ShootSpeedMult = 0.9
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 36
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HolsterPos = Vector(2, 0, -2)
|
||||
SWEP.HolsterAng = Angle(-5.5, 20, -20)
|
||||
|
||||
SWEP.SprintPos = Vector(-0.5, -4, -2)
|
||||
SWEP.SprintAng = Angle(3.5, 7, -20)
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4.305, -7, 2.55),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "",
|
||||
CrosshairInSights = false,
|
||||
}
|
||||
|
||||
SWEP.ActivePos = Vector(-1, -1, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, -3)
|
||||
|
||||
SWEP.CustomizePos = Vector(5, -2, -2)
|
||||
SWEP.CustomizeAng = Angle(15, 25, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-5, -4, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.BarrelOffsetHip = Vector(3, 0, -3)
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10, 6.5, -6),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1 - ( 0.35 * 0.75 )
|
||||
}
|
||||
|
||||
-- Firing sounds --
|
||||
|
||||
local path = ")weapons/arccw_ud/mini14/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = path .. "fire_supp.ogg"
|
||||
SWEP.DistantShootSound = nil
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"
|
||||
SWEP.ShootDrySound = path .. "dryfire.ogg"
|
||||
|
||||
local tail = ")/arccw_uc/common/556x45/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-556x45-rif-ext-01.ogg",
|
||||
tail .. "fire-dist-556x45-rif-ext-02.ogg",
|
||||
tail .. "fire-dist-556x45-rif-ext-03.ogg",
|
||||
tail .. "fire-dist-556x45-rif-ext-04.ogg",
|
||||
tail .. "fire-dist-556x45-rif-ext-05.ogg",
|
||||
tail .. "fire-dist-556x45-rif-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-rifle-01.ogg",
|
||||
common .. "fire-dist-int-rifle-02.ogg",
|
||||
common .. "fire-dist-int-rifle-03.ogg",
|
||||
common .. "fire-dist-int-rifle-04.ogg",
|
||||
common .. "fire-dist-int-rifle-05.ogg",
|
||||
common .. "fire-dist-int-rifle-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[2] = "mini14_bullet1", [3] = "mini14_bullet2"
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ud_mini14_mag_10"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}},
|
||||
},
|
||||
["ud_mini14_mag_30"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
},
|
||||
["ud_mini14_mag_42"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 4}},
|
||||
},
|
||||
["ud_mini14_mag_60"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 5}},
|
||||
},
|
||||
["ud_mini14_mag_15_22lr"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 3}},
|
||||
},
|
||||
["ud_mini14_mag_30_762"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 6}},
|
||||
},
|
||||
["ud_mini14_rail_optic"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
|
||||
["ud_mini14_rail_fg"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
|
||||
["ud_mini14_barrel_long"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, -2.15, 34.5),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ud_mini14_barrel_short"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 2}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, -2.15, 27.5),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ud_mini14_barrel_stub"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 3}},
|
||||
AttPosMods = {
|
||||
[3] = {
|
||||
vpos = Vector(0, -2.1, 25),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
["ud_mini14_receiver_762"] = {
|
||||
TrueNameChange = "Mini-30",
|
||||
NameChange = "Patriot 816"
|
||||
},
|
||||
["ud_mini14_receiver_auto"] = {
|
||||
TrueNameChange = "AC-556",
|
||||
NameChange = "Patriot ACC"
|
||||
},
|
||||
["ud_mini14_receiver_22lr"] = {
|
||||
TrueNameChange = "Mini-14 .22 LR",
|
||||
NameChange = "Patriot 822"
|
||||
},
|
||||
|
||||
["ud_mini14_stock_polymer"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
VMPoseParams = {["grip"] = 0}
|
||||
},
|
||||
["ud_mini14_stock_sawnoff"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
VMPoseParams = {["grip"] = 0}
|
||||
},
|
||||
["ud_mini14_stock_tactical"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 4}},
|
||||
VMPoseParams = {["grip"] = 1}
|
||||
},
|
||||
["ud_mini14_stock_tactical_polymer"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 3}},
|
||||
VMSkin = 1,
|
||||
VMPoseParams = {["grip"] = 1}
|
||||
},
|
||||
|
||||
["ud_mini14_clamp"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
}
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
SWEP.Animations = {
|
||||
["ready"] = {
|
||||
Source = "unjam",
|
||||
Time = 40 / 30,
|
||||
SoundTable = {
|
||||
{s = common .. "raise.ogg", t = 0},
|
||||
{s = common .. "rattle.ogg", t = 0.2},
|
||||
{s = path .. "chback.ogg", t = 0.25},
|
||||
{s = path .. "chamber.ogg", t = 0.35},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.8},
|
||||
{s = common .. "shoulder.ogg", t = 1},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKEaseIn = 0.5,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.5,
|
||||
ProcDraw = true,
|
||||
},
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = 12 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
Time = 12 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 20 / 30,
|
||||
ShellEjectAt = 0.01,
|
||||
LastClip1OutTime = 0,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 20 / 30,
|
||||
ShellEjectAt = 0.01,
|
||||
LastClip1OutTime = 0,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 20 / 30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Temporary
|
||||
},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 20 / 30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path .. "mech_last.ogg", t = 0}, -- Temporary
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = "unjam",
|
||||
Time = 40 / 30,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "chback.ogg", t = 0.25},
|
||||
{s = path .. "chamber.ogg", t = 0.35},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.8},
|
||||
{s = common .. "shoulder.ogg", t = 1},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKEaseIn = 0.5,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.5,
|
||||
ShellEjectAt = .35,
|
||||
},
|
||||
-- 20 Round Reloads --
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 66 / 30,
|
||||
MinProgress = 1.4,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.25},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 0.6},
|
||||
{s = path .. "magin.ogg", t = 1.05},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.3},
|
||||
{s = common .. "shoulder.ogg", t = 1.75},
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.1,
|
||||
LastClip1OutTime = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.15},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 0.6},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = path .. "chback.ogg", t = 1.85},
|
||||
{s = path .. "chamber.ogg", t = 1.95},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.2},
|
||||
{s = common .. "shoulder.ogg", t = 2.4},
|
||||
},
|
||||
},
|
||||
|
||||
-- 10 Round Reloads --
|
||||
|
||||
["reload_10"] = {
|
||||
Source = "reload_10",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.6,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.15},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.6, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.5},
|
||||
},
|
||||
},
|
||||
["reload_empty_10"] = {
|
||||
Source = "reload_empty_10",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.1,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.15},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 0.6, c = ci},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = path .. "chback.ogg", t = 1.90},
|
||||
{s = path .. "chamber.ogg", t = 2.00},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.4},
|
||||
{s = common .. "shoulder.ogg", t = 2.5},
|
||||
},
|
||||
},
|
||||
|
||||
-- 30 Round Reloads --
|
||||
|
||||
["reload_30"] = {
|
||||
Source = "reload_30",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.4,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.3},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.4},
|
||||
{s = common .. "shoulder.ogg", t = 1.85},
|
||||
},
|
||||
},
|
||||
["reload_empty_30"] = {
|
||||
Source = "reload_empty_30",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.3,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.65, c = ci},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.20},
|
||||
{s = path .. "chback.ogg", t = 2},
|
||||
{s = path .. "chamber.ogg", t = 2.1},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.65},
|
||||
},
|
||||
},
|
||||
|
||||
-- 30 polymer Reloads --
|
||||
|
||||
["reload_30_tac"] = {
|
||||
Source = "reload_30_tac",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.4,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.3},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.4},
|
||||
{s = common .. "shoulder.ogg", t = 1.85},
|
||||
},
|
||||
},
|
||||
["reload_empty_30_tac"] = {
|
||||
Source = "reload_empty_30_tac",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.3,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.65, c = ci},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.20},
|
||||
{s = path .. "chback.ogg", t = 2},
|
||||
{s = path .. "chamber.ogg", t = 2.1},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.65},
|
||||
},
|
||||
},
|
||||
|
||||
-- 7.62 reloads --
|
||||
|
||||
["reload_762"] = {
|
||||
Source = "reload_762",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.4,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.3},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.4},
|
||||
{s = common .. "shoulder.ogg", t = 1.85},
|
||||
},
|
||||
},
|
||||
["reload_empty_762"] = {
|
||||
Source = "reload_empty_762",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.3,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.65, c = ci},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.20},
|
||||
{s = path .. "chback.ogg", t = 2},
|
||||
{s = path .. "chamber.ogg", t = 2.1},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.65},
|
||||
},
|
||||
},
|
||||
|
||||
-- 60 round reloads (?) --
|
||||
|
||||
["reload_60"] = {
|
||||
Source = "reload_60",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.4,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.35},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.4},
|
||||
{s = common .. "shoulder.ogg", t = 1.85},
|
||||
},
|
||||
},
|
||||
["reload_empty_60"] = {
|
||||
Source = "reload_empty_60",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.3,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.35},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = common .. "rifle_magdrop.ogg", t = 0.9},
|
||||
{s = path .. "magin.ogg", t = 1.20},
|
||||
{s = path .. "chback.ogg", t = 1.9},
|
||||
{s = path .. "chamber.ogg", t = 2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.65},
|
||||
},
|
||||
},
|
||||
|
||||
-- 15 22lr Round Reloads --
|
||||
|
||||
["reload_15_22lr"] = {
|
||||
Source = "reload_15_22lr",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.6,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.45,
|
||||
LHIKOut = 0.7,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.15},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.3},
|
||||
{s = common .. "magpouch.ogg", t = 0.65, c = ci},
|
||||
{s = path .. "magin.ogg", t = .9},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.4},
|
||||
},
|
||||
},
|
||||
["reload_empty_15_22lr"] = {
|
||||
Source = "reload_empty_15_22lr",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Time = 86 / 30,
|
||||
MinProgress = 2.2,
|
||||
LastClip1OutTime = 0.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.45,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.0},
|
||||
{s = path .. "magout.ogg", t = 0.15},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.5},
|
||||
{s = common .. "pistol_magdrop.ogg", t = 0.9},
|
||||
{s = common .. "magpouch.ogg", t = 0.7, c = ci},
|
||||
{s = path .. "magin.ogg", t = 1.10},
|
||||
{s = path .. "chback.ogg", t = 1.9},
|
||||
{s = path .. "chamber.ogg", t = 2.0},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 2.3},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep,data)
|
||||
local vm = data.vm
|
||||
if !IsValid(vm) then return end
|
||||
|
||||
local atts = wep.Attachments
|
||||
local barr = string.Replace(atts[2].Installed or "default","ud_mini14_barrel_","")
|
||||
local muzz = atts[3].Installed
|
||||
local tac = atts[6].Installed
|
||||
|
||||
if muzz or barr == "stub" or barr == "default" then
|
||||
vm:SetBodygroup(7,2)
|
||||
elseif barr == "short" then
|
||||
vm:SetBodygroup(7,1)
|
||||
elseif barr == "long" then
|
||||
vm:SetBodygroup(7,0)
|
||||
end
|
||||
|
||||
if !tac then
|
||||
vm:SetBodygroup(6,0)
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp","optic","optic_sniper"},
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.6, 6),
|
||||
vang = Angle(90, 2, -90),
|
||||
},
|
||||
VMScale = Vector(1.2,1.2,1.2),
|
||||
WMScale = VMScale,
|
||||
InstalledEles = {"ud_mini14_rail_optic"},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "20\" Standard Barrel",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_mini14_barrel.png", "smooth mips"),
|
||||
Slot = "ud_mini14_barrel",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"muzzle"},
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -2.15, 30),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = vpos,
|
||||
},
|
||||
VMScale = Vector(1.5,1.5,1.5),
|
||||
WMScale = VMScale,
|
||||
ExcludeFlags = {"nomuzzle"},
|
||||
},
|
||||
{
|
||||
PrintName = "Receiver",
|
||||
DefaultAttName = "Mini-14 Receiver",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_mini14_receiver.png", "smooth mips"),
|
||||
Slot = "ud_mini14_receiver",
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 14),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_mini14_rail_fg"},
|
||||
MergeSlots = {14}
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac"},
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1.5, 22.3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_mini14_clamp"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = {"ud_mini14_mag"},
|
||||
DefaultAttName = "20-Round Mag",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_mini14_mag_20.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ud_mini14_stock"},
|
||||
DefaultAttName = "Wooden Stock",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_mini14_stock.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(1.1, -0.5, 6),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "M203 slot",
|
||||
Slot = "uc_ubgl",
|
||||
Bone = "mini14_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1.2, 10),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_mini14_rail_fg"},
|
||||
ExcludeFlags = {"ak_noubs","barrel_rpk"},
|
||||
Hidden = true,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,825 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Modern Weaponry"
|
||||
SWEP.UC_CategoryPack = "1Urban Decay"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/9x19.mdl"
|
||||
SWEP.ShellScale = 1
|
||||
--SWEP.ShellMaterial = "models/weapons/arcticcw/shell_9mm"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.PistolShellSoundsTable
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 3
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.TracerCol = Color(25, 255, 25)
|
||||
SWEP.TracerWidth = 2
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "IAL-9"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Uzi"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Submachine Gun"
|
||||
SWEP.Trivia_Desc = "Revolutionary submachine gun developed to arm a young State of Israel following the Second World War. Its ergonomic design, low cost, reliability, and great handling made it popular among militaries, police forces, and private security firms worldwide.\n\nBoasts excellent recoil control partially due to a below average cyclic rate. Good for hip firing in close quarters."
|
||||
SWEP.Trivia_Manufacturer = "IAL Metal Industries"
|
||||
SWEP.Trivia_Calibre = "9x19mm Parabellum"
|
||||
SWEP.Trivia_Mechanism = "Open Bolt"
|
||||
SWEP.Trivia_Country = "Israel"
|
||||
SWEP.Trivia_Year = 1950
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Israeli Military Industries"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_uzi.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_uzi.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
-- Damage --
|
||||
|
||||
SWEP.Damage = 8
|
||||
SWEP.DamageMin = 8
|
||||
SWEP.Penetration = 1
|
||||
|
||||
SWEP.RangeMin = 15
|
||||
SWEP.Range = 100 -- 4 shot until ~35m
|
||||
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 400
|
||||
SWEP.PhysBulletMuzzleVelocity = 400
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 0
|
||||
SWEP.Primary.ClipSize = 32
|
||||
SWEP.ExtendedClipSize = 40
|
||||
SWEP.ReducedClipSize = 16
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 0.3
|
||||
SWEP.RecoilSide = 0.35
|
||||
|
||||
SWEP.RecoilRise = 0.2
|
||||
SWEP.RecoilPunch = 1
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 0.6
|
||||
SWEP.RecoilPunchBack = 1.5
|
||||
|
||||
SWEP.Sway = 0.3
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.TriggerDelay = true
|
||||
|
||||
SWEP.Delay = 60 / 700
|
||||
SWEP.Num = 1
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
Mult_TriggerDelayTime = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
Mult_TriggerDelayTime = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 60
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 15
|
||||
SWEP.HipDispersion = 400
|
||||
SWEP.MoveDispersion = 100
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "pistol"
|
||||
SWEP.MagID = "uzi"
|
||||
|
||||
SWEP.HeatCapacity = 75
|
||||
SWEP.HeatDissipation = 15
|
||||
SWEP.HeatDelayTime = 3
|
||||
|
||||
SWEP.MalfunctionMean = 200
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.95
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.3
|
||||
SWEP.ShootSpeedMult = 0.95
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
SWEP.ExtraSightDist = 7
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HolsterPos = Vector(0.5, -2, 1)
|
||||
SWEP.HolsterAng = Angle(-8.5, 8, -10)
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.869, -6, 1.95),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "",
|
||||
ViewModelFOV = 55,
|
||||
}
|
||||
|
||||
SWEP.ActivePos = Vector(0.4, -1.9, 1.4)
|
||||
SWEP.ActiveAng = Angle(0, 0, -3)
|
||||
|
||||
SWEP.CustomizePos = Vector(5, -2, -2)
|
||||
SWEP.CustomizeAng = Angle(15, 25, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-3, -3, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.BarrelOffsetHip = Vector(4, 0, -4)
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-16, 4, -3),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
-- Firing sounds --
|
||||
local path = ")weapons/arccw_ud/uzi/"
|
||||
local path1 = ")weapons/arccw_ud/glock/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
--SWEP.FirstShootSound = path .. "fire.ogg"
|
||||
--SWEP.ShootSound = path .. "fire_auto.ogg"
|
||||
SWEP.ShootSoundSilenced = path1 .. "fire_supp.ogg"
|
||||
SWEP.ShootDrySound = path .. "dryfire.ogg"
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
|
||||
local tail = ")/arccw_uc/common/9x19/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-9x19-smg-ext-01.ogg",
|
||||
tail .. "fire-dist-9x19-smg-ext-02.ogg",
|
||||
tail .. "fire-dist-9x19-smg-ext-03.ogg",
|
||||
tail .. "fire-dist-9x19-smg-ext-04.ogg",
|
||||
tail .. "fire-dist-9x19-smg-ext-05.ogg",
|
||||
tail .. "fire-dist-9x19-smg-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-pistol-01.ogg",
|
||||
common .. "fire-dist-int-pistol-02.ogg",
|
||||
common .. "fire-dist-int-pistol-03.ogg",
|
||||
common .. "fire-dist-int-pistol-04.ogg",
|
||||
common .. "fire-dist-int-pistol-05.ogg",
|
||||
common .. "fire-dist-int-pistol-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 0.5
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "uzi_b1", [2] = "uzi_b2", [3] = "uzi_b3", [4] = "uzi_b4"
|
||||
}
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
|
||||
["ud_uzi_mag_20"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["ud_uzi_mag_40"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 2}},
|
||||
},
|
||||
["ud_uzi_mag_100"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 3}},
|
||||
},
|
||||
["ud_uzi_mag_45_10"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
},
|
||||
["ud_uzi_mag_45_22"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 2}},
|
||||
},
|
||||
|
||||
["ud_uzi_rail_optic"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}},
|
||||
},
|
||||
|
||||
["ud_uzi_clamp"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}},
|
||||
},
|
||||
|
||||
["ud_uzi_rail_fg"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}},
|
||||
},
|
||||
|
||||
["ud_uzi_stock_wood"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 2}},
|
||||
},
|
||||
["ud_uzi_stock_polymer"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 3}},
|
||||
},
|
||||
["ud_uzi_stock_folded"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 1}},
|
||||
},
|
||||
["ud_uzi_stock_remove"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 4}},
|
||||
},
|
||||
|
||||
["ud_uzi_body_carbine"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
NameChange = "IAL-C9",
|
||||
TrueNameChange = "Uzi Carbine",
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(-0.2, 0.5, 20.8),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ud_uzi_body_mini"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
NameChange = "IAL-S9",
|
||||
TrueNameChange = "Mini Uzi",
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(-0.2, 0.5, 11.8),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ud_uzi_body_micro"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 3},{ind = 4, bg = 1},{ind = 3, bg = 4}},
|
||||
NameChange = "IAL-M9",
|
||||
TrueNameChange = "Micro Uzi",
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-2.869, 3, 1.95),
|
||||
Ang = Angle(-0, 0.035, 0),
|
||||
Magnification = 1,
|
||||
CrosshairInSights = false
|
||||
},
|
||||
AttPosMods = {
|
||||
[1] = {
|
||||
vpos = Vector(-0.2, -1.8, -1.5),
|
||||
},
|
||||
[4] = {
|
||||
vpos = Vector(-0.2, 0.3, 7.8),
|
||||
},
|
||||
[6] = {
|
||||
vpos = Vector(-0.25, 1.4, 6),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ud_uzi_body_civvy"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 4}},
|
||||
NameChange = "IAL-C9 Model GB",
|
||||
TrueNameChange = "Uzi Action-B",
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(-0.2, 0.5, 23.8),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep, data)
|
||||
local vm = data.vm
|
||||
if !IsValid(vm) then return end
|
||||
local barrel = wep.Attachments[2].Installed
|
||||
if barrel == "ud_uzi_body_micro" then
|
||||
if wep.Attachments[1].Installed then
|
||||
vm:SetBodygroup(4, 3)
|
||||
end
|
||||
if wep.Attachments[6].Installed then
|
||||
vm:SetBodygroup(6, 0)
|
||||
vm:SetBodygroup(5, 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
SWEP.Animations = {
|
||||
["ready"] = {
|
||||
Source = "fix",
|
||||
Time = 40 / 30,
|
||||
ShellEjectAt = false,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = common .. "raise.ogg", t = 0},
|
||||
{s = common .. "rattle.ogg", t = 0.2},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.15},
|
||||
{s = path .. "chback.ogg", t = 0.3, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 0.65, c = ci},
|
||||
},
|
||||
ProcDraw = true,
|
||||
},
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 0.25,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
Time = 0.25,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 13 / 30,
|
||||
ShellEjectAt = 0.03,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 13 / 30,
|
||||
ShellEjectAt = 0.03,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 13 / 30,
|
||||
ShellEjectAt = 0.03,
|
||||
SoundTable = {{ s = path .. "chforward.ogg", t = 0 }},
|
||||
},
|
||||
|
||||
["trigger"] = {
|
||||
Source = "idle",
|
||||
Time = 0.025,
|
||||
SoundTable = {
|
||||
{s = path .. "prefire.ogg", t = 0, c = ci},
|
||||
},
|
||||
},
|
||||
["trigger_empty"] = {
|
||||
Source = "idle",
|
||||
Time = 0,
|
||||
SoundTable = nil,
|
||||
},
|
||||
|
||||
["fix"] = {
|
||||
Source = "fix",
|
||||
Time = 40 / 30,
|
||||
ShellEjectAt = false,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.15},
|
||||
{s = path .. "chback.ogg", t = 0.3, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 0.65, c = ci},
|
||||
},
|
||||
},
|
||||
["fix_empty"] = {
|
||||
Source = "fix_empty",
|
||||
Time = 40 / 30,
|
||||
ShellEjectAt = false,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.15},
|
||||
{s = path .. "chback.ogg", t = 0.3, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 0.65, c = ci},
|
||||
},
|
||||
},
|
||||
|
||||
["fix_micro"] = {
|
||||
Source = "fix_micro",
|
||||
Time = 40 / 30,
|
||||
ShellEjectAt = false,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.15},
|
||||
{s = path .. "chback.ogg", t = 0.3, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 0.65, c = ci},
|
||||
},
|
||||
},
|
||||
["fix_empty_micro"] = {
|
||||
Source = "fix_empty_micro",
|
||||
Time = 40 / 30,
|
||||
ShellEjectAt = false,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.15},
|
||||
{s = path .. "chback.ogg", t = 0.3, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 0.65, c = ci},
|
||||
},
|
||||
},
|
||||
|
||||
-- 32 Round Reloads --
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.2,
|
||||
LastClip1OutTime = 67 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = common .. "magpouch.ogg", t = 0.025},
|
||||
{s = path .. "magout.ogg", t = 0.25, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = path .. "magin.ogg", t = 0.55, c = ci},
|
||||
{s = common .. "magpouchin.ogg", t = 1.35, v = .35},
|
||||
{s = common .. "shoulder.ogg", t = 1.75},
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 90 / 30,
|
||||
MinProgress = 2.2,
|
||||
LastClip1OutTime = 1.8,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.3,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.55,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "magout.ogg", t = 0.4, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = common .. "magpouch.ogg", t = 0.85},
|
||||
{s = common .. "magdrop_smg.ogg", t = 1.0},
|
||||
{s = path .. "magin.ogg", t = 1.1, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.25},
|
||||
{s = path .. "chback.ogg", t = 1.935, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 2.15, c = ci},
|
||||
{s = common .. "shoulder.ogg", t = 2.6},
|
||||
},
|
||||
},
|
||||
|
||||
-- 16 Round Reloads --
|
||||
|
||||
["reload_16"] = {
|
||||
Source = "reload_16",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.2,
|
||||
LastClip1OutTime = 67 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = common .. "magpouch.ogg", t = 0.025},
|
||||
{s = path .. "magout.ogg", t = 0.25, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = path .. "magin.ogg", t = 0.55, c = ci},
|
||||
{s = common .. "magpouchin.ogg", t = 1.35, v = .35},
|
||||
{s = common .. "shoulder.ogg", t = 1.75},
|
||||
},
|
||||
},
|
||||
["reload_empty_16"] = {
|
||||
Source = "reload_empty_16",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 90 / 30,
|
||||
MinProgress = 2.2,
|
||||
LastClip1OutTime = 1.8,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.3,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.55,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "magout.ogg", t = 0.4, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = common .. "magpouch.ogg", t = 0.85},
|
||||
{s = common .. "magdrop_smg.ogg", t = 1.0},
|
||||
{s = path .. "magin.ogg", t = 1.1, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.25},
|
||||
{s = path .. "chback.ogg", t = 1.947, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 2.15, c = ci},
|
||||
{s = common .. "shoulder.ogg", t = 2.45},
|
||||
},
|
||||
},
|
||||
|
||||
-- 41 Round Reloads --
|
||||
|
||||
["reload_41"] = {
|
||||
Source = "reload_41",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.2,
|
||||
LastClip1OutTime = 67 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = common .. "magpouch.ogg", t = 0.025},
|
||||
{s = path .. "magout.ogg", t = 0.35, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = path .. "magin.ogg", t = 0.65, c = ci},
|
||||
{s = common .. "magpouchin.ogg", t = 1.35, v = .35},
|
||||
{s = common .. "shoulder.ogg", t = 1.75},
|
||||
},
|
||||
},
|
||||
["reload_empty_41"] = {
|
||||
Source = "reload_empty_41",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 90 / 30,
|
||||
MinProgress = 2.2,
|
||||
LastClip1OutTime = 1.8,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.3,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.55,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "magout.ogg", t = 0.4, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = common .. "magpouch.ogg", t = 0.85},
|
||||
{s = common .. "magdrop_smg.ogg", t = 1.0},
|
||||
{s = path .. "magin.ogg", t = 1.1, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 1.25},
|
||||
{s = path .. "chback.ogg", t = 1.947, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 2.15, c = ci},
|
||||
{s = common .. "shoulder.ogg", t = 2.6},
|
||||
},
|
||||
},
|
||||
|
||||
-- 100 Round Reloads --
|
||||
|
||||
["reload_100"] = {
|
||||
Source = "reload_100",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 67 / 30,
|
||||
MinProgress = 1.6,
|
||||
LastClip1OutTime = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKEaseIn = 0.4,
|
||||
LHIKEaseOut = 0.15,
|
||||
LHIKOut = 0.4,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "magout.ogg", t = 0.25, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.75},
|
||||
{s = path .. "magin.ogg", t = 1.15, c = ci},
|
||||
{s = common .. "cloth_4.ogg", t = 1.65},
|
||||
{s = common .. "shoulder.ogg", t = 1.95},
|
||||
},
|
||||
},
|
||||
["reload_empty_100"] = {
|
||||
Source = "reload_empty_100",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Time = 90 / 30,
|
||||
MinProgress = 2.4,
|
||||
LastClip1OutTime = 1.8,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKEaseIn = 0.3,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.55,
|
||||
SoundTable = {
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0},
|
||||
{s = path .. "magout.ogg", t = 0.25, c = ci},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.25},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.75},
|
||||
{s = common .. "magdrop.ogg", t = 1.0},
|
||||
{s = path .. "magin.ogg", t = 1.15, c = ci},
|
||||
{s = common .. "cloth_4.ogg", t = 1.65},
|
||||
{s = path .. "chback.ogg", t = 2.0, c = ci},
|
||||
{s = path .. "chforward.ogg", t = 2.25, c = ci},
|
||||
{s = common .. "shoulder.ogg", t = 2.7},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.AutosolveSourceSeq = "idle"
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp","optic"}, -- ,"optic"
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.2, -1.55, -0.5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_uzi_rail_optic"}
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "10\" Standard Barrel",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_uzi_body.png", "smooth mips"),
|
||||
Slot = "ud_uzi_frame",
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(2.6, -3.7, -17.3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "9x19mm Parabellum",
|
||||
DefaultAttIcon = Material("entities/att/uc_bullets/9x19.png", "smooth mips"),
|
||||
Slot = "ud_uzi_caliber",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"muzzle"},
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.2, 0.5, 14.8),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.2, 1.85, 6.9), -- nice
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ud_uzi_rail_fg"},
|
||||
ExcludeFlags = {"micro"}
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-1.35, 0.9,5.8),
|
||||
vang = Angle(90, 0, 180),
|
||||
},
|
||||
InstalledEles = {"ud_uzi_clamp"}
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ud_uzi_stock"},
|
||||
DefaultAttName = "Folding Stock",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_uzi_stock.png", "smooth mips"),
|
||||
ExcludeFlags = {"micro"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = {"ud_uzi_mag"},
|
||||
DefaultAttName = "32-Round Mag",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ud_uzi_mag_32.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "uzi_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0.4, 1.3, 2.3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,575 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Oldie Weaponry"
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol_deagle"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/50ae.mdl"
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.UC_ShellColor = Color(0.7*255, 0.2*255, 0.2*255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.TracerWidth = 1
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Enforcement .44"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Model 329PD"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Revolver"
|
||||
SWEP.Trivia_Desc = [[Though commonly viewed as archaic, revolvers maintain a large following today for their reliability, accuracy, and evocative sentiment. This model was famously "the most powerful handgun in the world" at its time, though its usurpers have not changed the fact that it packs a mean punch.
|
||||
|
||||
Has a heavy trigger pull. Single-action mode removes trigger delay and increases accuracy, but requires manual cocking of the hammer.]]
|
||||
SWEP.Trivia_Manufacturer = "Sneed & Walwakashi"
|
||||
SWEP.Trivia_Calibre = ".44 Magnum"
|
||||
SWEP.Trivia_Mechanism = "Double-Action"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1955
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Smith & Wesson"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ur_329pd.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ur_329pd.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 45 -- 2 shot close range kill
|
||||
SWEP.DamageMin = 45 -- 7 shot long range kill
|
||||
SWEP.RangeMin = 10
|
||||
SWEP.Range = 160
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 470
|
||||
SWEP.PhysBulletMuzzleVelocity = 470
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Jamming --
|
||||
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
SWEP.MalfunctionMean = math.huge -- Theoretically it will never malfunction
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 0
|
||||
SWEP.Primary.ClipSize = 6
|
||||
SWEP.RejectMagSizeChange = true -- Signals to attachments that mag size shouldn't be changeable; needs to be implemented attachment-side with att.Compatible
|
||||
SWEP.UC_CanManualAction = true -- In case this ever applies to anything other than shotguns
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 1
|
||||
|
||||
SWEP.RecoilRise = 1
|
||||
SWEP.VisualRecoilMult = 1.5
|
||||
SWEP.MaxRecoilBlowback = 2
|
||||
SWEP.MaxRecoilPunch = 6
|
||||
|
||||
SWEP.Sway = 1.1
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.TriggerDelay = true
|
||||
|
||||
SWEP.Delay = 0.25
|
||||
SWEP.Num = 1
|
||||
SWEP.FiremodeSound = false
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
PrintName = "ur.329.dact",
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
PrintName = "fcg.safe2",
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = false -- can't in mw and can't here
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_357"
|
||||
SWEP.NPCWeight = 70
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 5
|
||||
SWEP.HipDispersion = 500
|
||||
SWEP.MoveDispersion = 250
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "357"
|
||||
SWEP.MagID = "deagle"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.95
|
||||
SWEP.SightedSpeedMult = 0.9
|
||||
SWEP.SightTime = 0.25
|
||||
SWEP.ShootSpeedMult = 0.8
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 12
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "revolver"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.7, 2, 0.733),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "",
|
||||
ViewModelFOV = 55,
|
||||
}
|
||||
|
||||
SWEP.ActivePos = Vector(0, 2, 0.9)
|
||||
SWEP.ActiveAng = Angle(0, 0, -1)
|
||||
|
||||
SWEP.CustomizePos = Vector(2, 0, -1.5)
|
||||
SWEP.CustomizeAng = Angle(15, 15, 05)
|
||||
|
||||
SWEP.CrouchPos = Vector(-2.2, 1, 0.6)
|
||||
SWEP.CrouchAng = Angle(0, 0, -14)
|
||||
|
||||
SWEP.HolsterPos = Vector(-1, 2, 1)
|
||||
SWEP.HolsterAng = Angle(-15.5, 2, -4)
|
||||
|
||||
SWEP.SprintPos = Vector(0.3, 1, 0)
|
||||
SWEP.SprintAng = Angle(-3, 9, -12)
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-7.5, 4, -4.5),
|
||||
ang = Angle(-6, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
}
|
||||
|
||||
-- Weapon sounds --
|
||||
|
||||
local path = ")weapons/arccw_ur/sw329/"
|
||||
local path1 = ")weapons/arccw_ur/sw586/"
|
||||
local path2 = ")weapons/arccw_ur/1911/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
local rottle = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
|
||||
SWEP.DistantShootSound = nil
|
||||
SWEP.DistantShootSoundSilenced = nil
|
||||
SWEP.ShootDrySound = {common .. "revolver_hammer-01.ogg", common .. "revolver_hammer-02.ogg", common .. "revolver_hammer-03.ogg"}
|
||||
|
||||
local tail = ")/arccw_uc/common/44mag/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-44mag-pistol-ext-01.ogg",
|
||||
tail .. "fire-dist-44mag-pistol-ext-02.ogg",
|
||||
tail .. "fire-dist-44mag-pistol-ext-03.ogg",
|
||||
tail .. "fire-dist-44mag-pistol-ext-04.ogg",
|
||||
tail .. "fire-dist-44mag-pistol-ext-05.ogg",
|
||||
tail .. "fire-dist-44mag-pistol-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
path .. "fire-dist-01.ogg",
|
||||
path .. "fire-dist-02.ogg",
|
||||
path .. "fire-dist-03.ogg",
|
||||
path .. "fire-dist-04.ogg",
|
||||
path .. "fire-dist-05.ogg",
|
||||
path .. "fire-dist-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 0.75
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet1", [2] = "Bullet2", [3] = "Bullet3", [4] = "Bullet4", [5] = "Bullet5", [6] = "Bullet6"
|
||||
}
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000"
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ur_329_barrel_m29"] = {
|
||||
VMBodygroups = { { ind = 1, bg = 1 } },
|
||||
NameChange = "Thunderbolt .44",
|
||||
TrueNameChange = "Model 29"
|
||||
},
|
||||
["ur_329_barrel_master"] = {
|
||||
VMBodygroups = { { ind = 1, bg = 2 } },
|
||||
NameChange = "Thunderbolt .44 Master",
|
||||
TrueNameChange = "Model 29"
|
||||
},
|
||||
["ur_329_barrel_pocket"] = {
|
||||
VMBodygroups = { { ind = 1, bg = 3 } },
|
||||
NameChange = "Companion .44",
|
||||
TrueNameChange = "Model 629"
|
||||
}
|
||||
}
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
SWEP.Hook_TranslateAnimation = function(wep,anim)
|
||||
if wep:GetCurrentFiremode().Override_ManualAction and anim == "fire_dry" then
|
||||
return "fire_dry_sact"
|
||||
end
|
||||
if wep:GetCurrentFiremode().Override_ManualAction and anim ~= "fire" and (anim ~= "reload" or !wep:GetNeedCycle()) then
|
||||
return anim .. "_cocked"
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 3,
|
||||
},
|
||||
["idle_cocked"] = {
|
||||
Source = "idle_cocked",
|
||||
Time = 3,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 86 / 60,
|
||||
SoundTable = {
|
||||
{s = path2 .. "draw.ogg", t = 0},
|
||||
{ s = path1 .. "cylinder_in.ogg", t = 0.2 },
|
||||
{s = common .. "raise.ogg", t = 0.55},
|
||||
},
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.7,
|
||||
MinProgress = .4,
|
||||
SoundTable = {
|
||||
{s = path2 .. "draw.ogg", t = 0}, -- Not Temporary
|
||||
{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["draw_cocked"] = {
|
||||
Source = "draw_cocked",
|
||||
Time = 0.7,
|
||||
MinProgress = .4,
|
||||
SoundTable = {
|
||||
{s = path2 .. "draw.ogg", t = 0}, -- Not Temporary
|
||||
{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 0.5,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_2.ogg", t = 0},
|
||||
{s = path2 .. "holster.ogg", t = 0.12}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
["holster_cocked"] = {
|
||||
Source = "holster_cocked",
|
||||
Time = 0.5,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_2.ogg", t = 0},
|
||||
{s = path2 .. "holster.ogg", t = 0.12}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
SoundTable = {
|
||||
{ s = {common .. "revolver_hammer-01.ogg", common .. "revolver_hammer-02.ogg", common .. "revolver_hammer-03.ogg"}, t = 0 }
|
||||
},
|
||||
MinProgress = .2,
|
||||
},
|
||||
["fire_dry"] = {
|
||||
Source = "dryfire",
|
||||
SoundTable = {
|
||||
{ s = {common .. "revolver_hammer-01.ogg", common .. "revolver_hammer-02.ogg", common .. "revolver_hammer-03.ogg"}, t = 0 }
|
||||
},
|
||||
},
|
||||
["fire_dry_sact"] = {
|
||||
Source = "dryfire_sact",
|
||||
SoundTable = {
|
||||
{ s = {common .. "revolver_hammer-01.ogg", common .. "revolver_hammer-02.ogg", common .. "revolver_hammer-03.ogg"}, t = 0 },
|
||||
{ s = { common .. "revolver_trigger-01.ogg", common .. "revolver_trigger-03.ogg" }, t = 0.25 + 0.2 },
|
||||
},
|
||||
},
|
||||
|
||||
["trigger"] = {
|
||||
Source = "trigger",
|
||||
Time = 0.1,
|
||||
SoundTable = {
|
||||
{ s = { common .. "revolver_trigger-01.ogg", common .. "revolver_trigger-02.ogg", common .. "revolver_trigger-03.ogg" }, t = 0 }
|
||||
},
|
||||
},
|
||||
|
||||
["cycle"] = {
|
||||
Source = "cocking",
|
||||
MinProgress = 0.5,
|
||||
SoundTable = {
|
||||
{ s = { common .. "revolver_trigger-01.ogg", common .. "revolver_trigger-03.ogg" }, t = 0.2 }
|
||||
}
|
||||
},
|
||||
|
||||
["fix"] = {
|
||||
Source = "cocking",
|
||||
MinProgress = 0.5,
|
||||
SoundTable = {
|
||||
{ s = { common .. "revolver_trigger-01.ogg", common .. "revolver_trigger-03.ogg" }, t = 0.2 }
|
||||
}
|
||||
},
|
||||
|
||||
["1_to_2"] = {
|
||||
Source = "cocking",
|
||||
Time = 0.8,
|
||||
SoundTable = {
|
||||
{ s = { common .. "revolver_trigger-01.ogg", common .. "revolver_trigger-03.ogg" }, t = 0.1 }
|
||||
}
|
||||
},
|
||||
["2_to_1"] = {
|
||||
Source = "decocking",
|
||||
Time = 0.8,
|
||||
SoundTable = {
|
||||
{ s = common .. "revolver_trigger-02.ogg", t = 0.1 }
|
||||
}
|
||||
},
|
||||
["2_to_3"] = {
|
||||
Source = "decocking",
|
||||
Time = 0.8,
|
||||
SoundTable = {
|
||||
{ s = common .. "revolver_trigger-02.ogg", t = 0.1 }
|
||||
}
|
||||
},
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
Time = 3.0,
|
||||
MinProgress = 1.8,
|
||||
ShellEjectAt = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.6,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 },
|
||||
{ s = path .. "cyl_latch.ogg", t = 0.1 },
|
||||
{ s = path1 .. "cylinder_out.ogg", t = 0.2 },
|
||||
{ s = path1 .. "extractor1.ogg", t = 0.65 },
|
||||
{ s = path1 .. "extract1.ogg", t = 0.65, p = 110, v = 0.25 },
|
||||
{ s = path1 .. "extractor2.ogg", t = 0.75, p = 110 },
|
||||
{ s = path1 .. "cylinder_extract.ogg", t = 0.75 },
|
||||
{ s = path1 .. "extractor2.ogg", t = 0.825 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 1.2, v = 0.2 },
|
||||
{ s = path1 .. "speedloader.ogg", t = 1.65 },
|
||||
{ s = path1 .. "cylinder_in.ogg", t = 2.15 },
|
||||
{ s = rottle, t = 2.4 },
|
||||
},
|
||||
},
|
||||
["reload_cocked"] = {
|
||||
Source = "reload_cocked",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
Time = 3.0,
|
||||
MinProgress = 1.8,
|
||||
ShellEjectAt = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.6,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 },
|
||||
{ s = path .. "cyl_latch.ogg", t = 0.1 },
|
||||
{ s = path1 .. "cylinder_out.ogg", t = 0.2 },
|
||||
{ s = path1 .. "extractor1.ogg", t = 0.65 },
|
||||
{ s = path1 .. "extract1.ogg", t = 0.65, p = 110, v = 0.25 },
|
||||
{ s = path1 .. "extractor2.ogg", t = 0.75, p = 110 },
|
||||
{ s = path1 .. "cylinder_extract.ogg", t = 0.75 },
|
||||
{ s = path1 .. "extractor2.ogg", t = 0.825 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 1.2, v = 0.2 },
|
||||
{ s = path1 .. "speedloader.ogg", t = 1.65 },
|
||||
{ s = path1 .. "cylinder_in.ogg", t = 2.15 },
|
||||
{ s = rottle, t = 2.4 },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Attachments --
|
||||
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp"},
|
||||
DefaultAttName = "Iron Sights",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(3, -3.6, 0),
|
||||
vang = Angle(0, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
Slot = {"ur_329_barrel"},
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_329_barrel.png","mips smooth"),
|
||||
DefaultAttName = "4\" Snubnose Barrel",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(3.07, -3.8, -27),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
Slot = {"ur_329_caliber"},
|
||||
DefaultAttIcon = Material("entities/att/uc_bullets/44magnum.png","mips smooth"),
|
||||
DefaultAttName = ".44 Magnum",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(3.07, -3.8, -27),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
InstalledEles = {"tac_rail"},
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(6.75, -2.5, 0),
|
||||
vang = Angle(0, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = {"ur_329_grip", "uc_stock", "go_stock_pistol_bt"},
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(-2, 2, 0),
|
||||
vang = Angle(0, 0, -90),
|
||||
},
|
||||
},
|
||||
--[[]
|
||||
{
|
||||
PrintName = "Grip",
|
||||
DefaultAttName = "Factory Grip",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_329_grip.png","mips smooth"),
|
||||
Slot = "ur_329_grip"
|
||||
},
|
||||
]]
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
ExcludeFlags = {"329_ss"}
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals",
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm","fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(7.1, -2.4, -0.1),
|
||||
vang = Angle(0, 0, -90),
|
||||
},
|
||||
VMScale = Vector(.75,.75,.75),
|
||||
},
|
||||
}
|
||||
1558
gamemodes/ixhl2rp/plugins/arccwbase/entities/weapons/arccw_ur_ak.lua
Normal file
1558
gamemodes/ixhl2rp/plugins/arccwbase/entities/weapons/arccw_ur_ak.lua
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,942 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Modern Weaponry" -- edit this if you like
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "AWP"
|
||||
|
||||
SWEP.Trivia_Class = "Sniper Rifle"
|
||||
SWEP.Trivia_Desc = "A heavy rifle purpose-built for extreme range combat under extreme climates, first developed for the British military but quickly adopted by many more. Iconic for its appearance among military and police marksmen, this rifle is a symbol of discipline and order.\n\nOffers outstanding precision and kill potential, but its long bolt pull and reload time can become a hinderance outside its ideal engagement range.\n\nOne shot. One kill. You know the routine."
|
||||
SWEP.Trivia_Manufacturer = "Accuracy International"
|
||||
SWEP.Trivia_Calibre = "7.62x51mm NATO"
|
||||
SWEP.Trivia_Mechanism = "Bolt Action"
|
||||
SWEP.Trivia_Country = "United Kingdom"
|
||||
SWEP.Trivia_Year = 1982
|
||||
|
||||
if !GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = "Apex Precision"
|
||||
SWEP.Trivia_Manufacturer = "Marksman Institute"
|
||||
end
|
||||
|
||||
|
||||
SWEP.Slot = 3
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ur_aw.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ur_aw.mdl"
|
||||
SWEP.ViewModelFOV = 70
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.BulletBones = {
|
||||
--[1] = "top_round",
|
||||
[2] = "mag_round",
|
||||
}
|
||||
|
||||
-- Damage --
|
||||
|
||||
SWEP.Damage = 95 -- 2 shot close range
|
||||
SWEP.DamageMin = 95 -- 2 shot long range
|
||||
SWEP.RangeMin = 100
|
||||
SWEP.Range = 400 -- 2 shot at ~300m
|
||||
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 1050
|
||||
SWEP.PhysBulletMuzzleVelocity = 1400
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 5
|
||||
SWEP.ExtendedClipSize = 10
|
||||
SWEP.ReducedClipSize = 5
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 3.3
|
||||
SWEP.RecoilSide = 0.550
|
||||
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
SWEP.VisualRecoilMult = 5
|
||||
SWEP.MaxRecoilBlowback = 4
|
||||
SWEP.MaxRecoilPunch = 4
|
||||
SWEP.RecoilPunchBack = 3
|
||||
SWEP.RecoilPunchBackMax = 3.5
|
||||
SWEP.RecoilPunchBackMaxSights = 2.5
|
||||
|
||||
SWEP.Sway = 0.2
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 80
|
||||
SWEP.Num = 1
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
PrintName = "fcg.bolt",
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_crossbow"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = .5
|
||||
SWEP.HipDispersion = 1500
|
||||
SWEP.MoveDispersion = 25
|
||||
SWEP.JumpDispersion = 700 -- tactical unrealism set to 700 later
|
||||
|
||||
SWEP.Primary.Ammo = "ar2"
|
||||
SWEP.MagID = "awp"
|
||||
|
||||
SWEP.HeatCapacity = 75
|
||||
SWEP.HeatDissipation = 15
|
||||
SWEP.HeatDelayTime = 3
|
||||
|
||||
-- SWEP.Malfunction = true
|
||||
SWEP.MalfunctionMean = 200
|
||||
--SWEP.MeleeTime = 1.5
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.8
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.4
|
||||
SWEP.ShootSpeedMult = 0.5
|
||||
|
||||
local path = ")weapons/arccw_ur/ak/"
|
||||
|
||||
local testpath = ")weapons/arccw_ur/aw_placeholders/"
|
||||
local path1 = ")weapons/arccw_ur/aw_placeholders/338/"
|
||||
|
||||
local path1 = ")weapons/arccw_ur/mp5/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
local rottle = {common .. "cloth_1.ogg", common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local ratel = {common .. "rattle1.ogg", common .. "rattle2.ogg", common .. "rattle3.ogg"}
|
||||
local rutle = {common .. "movement-sniper-03.ogg",common .. "movement-sniper-04.ogg"}
|
||||
|
||||
SWEP.ShootSound = {
|
||||
testpath .. "fire-01.ogg",
|
||||
testpath .. "fire-02.ogg",
|
||||
testpath .. "fire-03.ogg",
|
||||
testpath .. "fire-04.ogg",
|
||||
testpath .. "fire-05.ogg",
|
||||
testpath .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = {
|
||||
testpath .. "fire-sup-01.ogg",
|
||||
testpath .. "fire-sup-02.ogg",
|
||||
testpath .. "fire-sup-03.ogg",
|
||||
testpath .. "fire-sup-04.ogg",
|
||||
testpath .. "fire-sup-05.ogg",
|
||||
testpath .. "fire-sup-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSound = nil
|
||||
SWEP.DistantShootSoundSilenced = nil
|
||||
SWEP.ShootDrySound = testpath .. "dryfire.ogg"
|
||||
|
||||
local tail = ")/arccw_uc/common/308/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-308-rif-ext-01.ogg",
|
||||
tail .. "fire-dist-308-rif-ext-02.ogg",
|
||||
tail .. "fire-dist-308-rif-ext-03.ogg",
|
||||
tail .. "fire-dist-308-rif-ext-04.ogg",
|
||||
tail .. "fire-dist-308-rif-ext-05.ogg",
|
||||
tail .. "fire-dist-308-rif-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_ak47"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/556x45.mdl"
|
||||
SWEP.ShellPitch = 90
|
||||
SWEP.ShellScale = 1.145
|
||||
SWEP.ShellRotateAngle = Angle(0, 0, 0)
|
||||
|
||||
SWEP.ManualAction = true
|
||||
-- SWEP.ManualAction = false
|
||||
SWEP.NoLastCycle = true
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.37, -5, 0.68),
|
||||
Ang = Angle(0, 0, 2),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
SWEP.LaserOffsetAngle = Angle(0, 0, 0)
|
||||
SWEP.LaserIronsAngle = Angle(0, 1.5, 0)
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-0.1, 0.1, 0.2)
|
||||
SWEP.ActiveAng = Angle(0, 0, -1)
|
||||
|
||||
SWEP.SprintPos = Vector(-1, -1, 1.2)
|
||||
SWEP.SprintAng = Angle(-15, 8, -10)
|
||||
|
||||
SWEP.CrouchPos = Vector(-2, -2, -0.8)
|
||||
SWEP.CrouchAng = Angle(0, 0, -14)
|
||||
|
||||
SWEP.HolsterPos = Vector(-1, -1, 1.2)
|
||||
SWEP.HolsterAng = Angle(-15, 8, -10)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, 0)
|
||||
SWEP.BarrelOffsetHip = Vector(0, 0, 0)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 0, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
-- SWEP.CustomizePos = Vector(6.5, 0.8, -0.2)
|
||||
-- SWEP.CustomizeAng = Angle(8, 18, 15)
|
||||
|
||||
SWEP.BarrelLength = 54
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["barrel_long"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}},
|
||||
AttPosMods = {[3] = {
|
||||
vpos = Vector(0, 40, 1.75),
|
||||
vang = Angle(0, 270, 0),
|
||||
}}
|
||||
},
|
||||
["barrel_short"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 2}},
|
||||
AttPosMods = {[3] = {
|
||||
vpos = Vector(0, 28, 1.75),
|
||||
vang = Angle(0, 270, 0),
|
||||
}}
|
||||
},
|
||||
["barrel_sd"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 3}}
|
||||
},
|
||||
|
||||
["mag_338"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 2}}
|
||||
},
|
||||
["mag_300"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 2}}
|
||||
},
|
||||
["mag_ext"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 1}}
|
||||
},
|
||||
["mag_ext_magnum"] = {
|
||||
--VMBodygroups = {{ind = 3, bg = 3}}
|
||||
},
|
||||
|
||||
["rail_bottom"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}}
|
||||
},
|
||||
["rail_top"] = {
|
||||
VMBodygroups = {{ind = 7, bg = 1}}
|
||||
},
|
||||
["sights_compact"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 2}},
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-3.395, -5, 1.35),
|
||||
Ang = Angle(0, 0, 2),
|
||||
Magnification = 1,
|
||||
}
|
||||
},
|
||||
["sights_flipped"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 1}}
|
||||
},
|
||||
|
||||
["skin_black"] = {
|
||||
VMSkin = 1
|
||||
},
|
||||
["skin_tan"] = {
|
||||
VMSkin = 2
|
||||
},
|
||||
["skin_cust"] = {
|
||||
VMSkin = 3
|
||||
},
|
||||
|
||||
["stock_at"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}}
|
||||
},
|
||||
["stock_ru"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}}
|
||||
},
|
||||
["stock_ru_rubber"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 3}}
|
||||
},
|
||||
["stock_fixed"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 4, bg = 4},
|
||||
{ind = 5, bg = 1},
|
||||
}
|
||||
},
|
||||
["stock_none"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 4, bg = 5},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 2
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-7, 5, -4.8),
|
||||
ang = Angle(-12, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
DefaultAttIcon = Material("entities/att/ur_aw/ironsights.png", "mips smooth"),
|
||||
Slot = {"optic","optic_lp","optic_sniper"},
|
||||
Bone = "tag_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(0, 6, 2.65),
|
||||
vang = Angle(0, -90, 0),
|
||||
},
|
||||
CorrectivePos = Vector(0, 0, 0),
|
||||
CorrectiveAng = Angle(0, 180, 0),
|
||||
VMScale = Vector(1.05, 1.05, 1.05),
|
||||
SlideAmount = {
|
||||
vmin = Vector(0, 5.5, 2.65),
|
||||
vmax = Vector(0, 7, 2.65),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "24\" Police Barrel",
|
||||
DefaultAttIcon = Material("entities/att/ur_aw/bar_def.png", "mips smooth"),
|
||||
Slot = "ur_aw_barrel",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"muzzle","ur_aw_muzzle"},
|
||||
Bone = "tag_weapon",
|
||||
VMScale = Vector(1.5, 1.5, 1.5),
|
||||
WMScale = VMScale,
|
||||
Offset = {
|
||||
vpos = Vector(0, 35.2, 1.675),
|
||||
vang = Angle(0, 270, 0),
|
||||
},
|
||||
ExcludeFlags = {"barrel_sd"},
|
||||
Installed = "ur_aw_muzzle_brake",
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
DefaultAttName = "7.62x51mm NATO",
|
||||
DefaultAttIcon = Material("entities/att/uc_bullets/762x51.png", "mips smooth"),
|
||||
Slot = {"ur_aw_cal"},
|
||||
Bone = "tag_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(2.8, -4.2, -11.5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = {"ur_aw_mag"},
|
||||
DefaultAttName = "5-Round Mag",
|
||||
DefaultAttIcon = Material("entities/att/ur_aw/mag308_5.png", "mips smooth"),
|
||||
ExcludeFlags = {"mag_338"}
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "tag_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(0,16, -.6),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
VMScale = Vector(1, 1, 1),
|
||||
InstalledEles = {"rail_bottom"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac"},
|
||||
Bone = "tag_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(-1.2, 16, 1.1),
|
||||
vang = Angle(-90, 270, 0),
|
||||
},
|
||||
GivesFlags = {"tac"},
|
||||
InstalledEles = {"rail_top"}
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ur_aw_stock"},
|
||||
DefaultAttName = "Factory Stock",
|
||||
DefaultAttIcon = Material("entities/att/ur_aw/stock_def.png", "mips smooth"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
HideIfBlocked = true
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "tag_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(.85, 4.6, 0.5),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Finish",
|
||||
Slot = {"ur_aw_skin"},
|
||||
FreeSlot = true,
|
||||
DefaultAttName = "Olive Drab",
|
||||
DefaultAttIcon = Material("entities/att/ur_aw/skin_green.png", "mips smooth"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function SWEP:Hook_TranslateAnimation(anim)
|
||||
|
||||
end
|
||||
|
||||
SWEP.Hook_NameChange = function(wep,name)
|
||||
local atts = wep.Attachments
|
||||
local barr = string.Replace(atts[2].Installed or "default", "ur_aw_barrel_", "")
|
||||
local cal = string.Replace(atts[4].Installed or "default", "ur_aw_cal_", "")
|
||||
local stock = string.Replace(atts[8].Installed or "default", "ur_aw_stock_", "")
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
if cal ~= "default" then
|
||||
return "AWM"
|
||||
elseif barr == "sd" then
|
||||
return "AWS"
|
||||
elseif stock == "at" then
|
||||
return "AT"
|
||||
end
|
||||
else
|
||||
if cal == "338" then
|
||||
return "Apex Magnum"
|
||||
elseif barr == "sd" then
|
||||
return "Apex Spectre"
|
||||
elseif stock == "at" then
|
||||
return "Apex Tactical"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep, data)
|
||||
local vm = data.vm
|
||||
if !IsValid(vm) then return end
|
||||
|
||||
local atts = wep.Attachments
|
||||
local cal = string.Replace(atts[4].Installed or "default", "ur_aw_cal_", "")
|
||||
local mag = string.Replace(atts[5].Installed or "default", "ur_aw_mag_", "")
|
||||
local flags = wep:GetWeaponFlags()
|
||||
|
||||
local pistolGrip = table.HasValue(flags,"pistolgrip")
|
||||
|
||||
if cal ~= "default" then
|
||||
if pistolGrip then
|
||||
vm:SetBodygroup(1,3)
|
||||
else
|
||||
vm:SetBodygroup(1,1)
|
||||
end
|
||||
elseif pistolGrip then
|
||||
vm:SetBodygroup(1,2)
|
||||
else
|
||||
vm:SetBodygroup(1,0)
|
||||
end
|
||||
|
||||
if atts[1].Installed then
|
||||
if table.HasValue(flags,"sights_compact") then
|
||||
vm:SetBodygroup(8,3)
|
||||
else
|
||||
vm:SetBodygroup(8,1)
|
||||
end
|
||||
end
|
||||
|
||||
if mag == "10" then
|
||||
vm:SetBodygroup(3,1)
|
||||
elseif mag == "10m" then
|
||||
vm:SetBodygroup(3,3)
|
||||
elseif cal ~= "default" then
|
||||
vm:SetBodygroup(3,2)
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Animations = {
|
||||
["ready"] = {
|
||||
Source = "cycle",
|
||||
Time = 1.47,
|
||||
MinProgress = 1.3,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.07},
|
||||
{s = testpath .. "boltup.ogg", t = 0.1},
|
||||
{s = testpath .. "boltback.ogg", t = 0.2},
|
||||
{s = testpath .. "boltforward.ogg", t = 0.32},
|
||||
{s = testpath .. "boltdown.ogg", t = 0.6},
|
||||
},
|
||||
ProcDraw = true,
|
||||
},
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
Time = 35 / 30,
|
||||
MinProgess = .5,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0},
|
||||
{s = common .. "raise.ogg", t = 0.2},
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
Time = .75,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0},
|
||||
},
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 35 / 30,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0},
|
||||
{s = common .. "raise.ogg", t = 0.2},
|
||||
},
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0},
|
||||
},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"fire"},
|
||||
Time = 27 / 30,
|
||||
MinProgress = 0.2,
|
||||
SoundTable = {
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
},
|
||||
|
||||
["fire_iron"] = {
|
||||
Source = {"fire_iron"},
|
||||
Time = 27 / 30,
|
||||
MinProgress = 0.2,
|
||||
SoundTable = {
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
},
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 1,
|
||||
Time = 85 / 30,
|
||||
LHIKEaseOut = 0.25,
|
||||
MinProgress = 1.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.1},
|
||||
{s = testpath .. "magrel.ogg", t = 0.2},
|
||||
{s = testpath .. "magout.ogg", t = 0.3},
|
||||
{s = rottle, t = 0.75},
|
||||
{s = common .. "magpouch.ogg", t = 0.8, v = 0.4},
|
||||
{s = testpath .. "struggle.ogg", t = 0.9},
|
||||
{s = testpath .. "magin.ogg", t = 1.2},
|
||||
{s = rottle, t = 1.4},
|
||||
{s = ratel, t = 1.5},
|
||||
},
|
||||
},
|
||||
["reload_10"] = {
|
||||
Source = "reload_exte",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 1.15,
|
||||
LHIKEaseOut = 0.25,
|
||||
MinProgress = 2.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.1},
|
||||
{s = testpath .. "magrel.ogg", t = 0.2},
|
||||
{s = testpath .. "magout.ogg", t = 0.3},
|
||||
{s = rottle, t = 0.75},
|
||||
{s = common .. "magpouch.ogg", t = 0.8, v = 0.4},
|
||||
{s = testpath .. "struggle.ogg", t = 0.9},
|
||||
{s = testpath .. "magin.ogg", t = 1.2},
|
||||
{s = rottle, t = 1.4},
|
||||
{s = ratel, t = 1.5},
|
||||
},
|
||||
},
|
||||
["reload_338"] = {
|
||||
Source = "reload_magnum",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 1.15,
|
||||
LHIKEaseOut = 0.25,
|
||||
MinProgress = 2.5,
|
||||
Time = 3.4,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.1},
|
||||
{s = testpath .. "magrel.ogg", t = 0.2},
|
||||
{s = testpath .. "magout.ogg", t = 0.4},
|
||||
{s = rottle, t = 0.75},
|
||||
{s = common .. "magpouch.ogg", t = 0.8, v = 0.4},
|
||||
{s = testpath .. "struggle.ogg", t = 1.1, v = 1.1},
|
||||
{s = testpath .. "magin.ogg", t = 1.3},
|
||||
{s = testpath .. "magtap.ogg", t = 1.95},
|
||||
{s = rottle, t = 2.3, v = 0.6},
|
||||
{s = ratel, t = 2.35, v = 0.6},
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = false,
|
||||
LHIKIn = 0.9,
|
||||
LHIKOut = 1.25,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.5,
|
||||
MinProgress = 3.0,
|
||||
ShellEjectAt = .45,
|
||||
LastClip1OutTime = 1.8,
|
||||
Time = 4.5,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.05},
|
||||
{s = testpath .. "boltup.ogg", t = 0.15},
|
||||
{s = testpath .. "boltback_reload.ogg", t = 0.18},
|
||||
{s = testpath .. "eject.ogg", t = 0.45},
|
||||
{s = rottle, t = 0.6},
|
||||
{s = testpath .. "magrel.ogg", t = 1.0},
|
||||
{s = testpath .. "magout_empty.ogg", t = 1.2},
|
||||
{s = rottle, t = 1.25},
|
||||
{s = testpath .. "magdrop_metal.ogg", t = 1.5, v = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 1.6, v = 0.4},
|
||||
{s = rottle, t = 1.65},
|
||||
{s = testpath .. "struggle.ogg", t = 2},
|
||||
{s = testpath .. "magin.ogg", t = 2.1},
|
||||
{s = rottle, t = 2.4},
|
||||
{s = ratel, t = 2.6},
|
||||
{s = testpath .. "boltforward_reload.ogg", t = 2.7},
|
||||
{s = testpath .. "boltdown.ogg", t = 3.1},
|
||||
{s = common .. "shoulder.ogg", t = 3.15},
|
||||
},
|
||||
},
|
||||
["reload_empty_10"] = {
|
||||
Source = "reload_empty_exte",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = false,
|
||||
LHIKIn = 0.9,
|
||||
LHIKOut = 1.25,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.5,
|
||||
ShellEjectAt = .5,
|
||||
MinProgress = 3.5,
|
||||
LastClip1OutTime = 1.8,
|
||||
Time = 4.5,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.05},
|
||||
{s = testpath .. "boltup.ogg", t = 0.15},
|
||||
{s = testpath .. "boltback_reload.ogg", t = 0.18},
|
||||
{s = testpath .. "eject.ogg", t = 0.45},
|
||||
{s = rottle, t = .6},
|
||||
{s = testpath .. "magrel.ogg", t = 1.0},
|
||||
{s = testpath .. "magout_empty.ogg", t = 1.2},
|
||||
{s = rottle, t = 1.25},
|
||||
{s = testpath .. "magdrop_metal.ogg", t = 1.6, v = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 1.6, v = 0.4},
|
||||
{s = rottle, t = 1.65},
|
||||
{s = testpath .. "struggle.ogg", t = 2.1},
|
||||
{s = testpath .. "magin.ogg", t = 2.2},
|
||||
{s = rottle, t = 2.5},
|
||||
{s = testpath .. "boltforward_reload.ogg", t = 2.8},
|
||||
{s = ratel, t = 2.7},
|
||||
{s = testpath .. "boltdown.ogg", t = 3.2},
|
||||
{s = common .. "shoulder.ogg", t = 3.2},
|
||||
},
|
||||
},
|
||||
["reload_empty_338"] = {
|
||||
Source = "reload_empty_magnum",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = false,
|
||||
LHIKIn = 0.9,
|
||||
LHIKOut = 1.25,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.5,
|
||||
ShellEjectAt = .5,
|
||||
LastClip1OutTime = 1.5,
|
||||
MinProgress = 4,
|
||||
Time = 4.25,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.05},
|
||||
{s = testpath .. "boltup.ogg", t = 0.15},
|
||||
{s = testpath .. "boltback_reload.ogg", t = 0.18},
|
||||
{s = testpath .. "eject.ogg", t = 0.45},
|
||||
{s = rottle, t = 0.6},
|
||||
{s = testpath .. "magrel.ogg", t = 1.0},
|
||||
{s = testpath .. "magout_empty.ogg", t = 1.1},
|
||||
{s = rottle, t = 1.25},
|
||||
{s = testpath .. "magdrop_metal.ogg", t = 1.5, v = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 1.6, v = 0.4},
|
||||
{s = rottle, t = 1.65},
|
||||
{s = testpath .. "struggle.ogg", t = 1.8},
|
||||
{s = testpath .. "magin.ogg", t = 1.9},
|
||||
{s = rottle, t = 2.4},
|
||||
{s = testpath .. "magtap.ogg", t = 2.5},
|
||||
{s = ratel, t = 2.6},
|
||||
{s = testpath .. "boltforward_reload.ogg", t = 2.7},
|
||||
{s = testpath .. "boltdown.ogg", t = 3.1},
|
||||
{s = common .. "shoulder.ogg", t = 3.15},
|
||||
},
|
||||
},
|
||||
["reload_empty_10_338"] = {
|
||||
Source = "reload_empty_exte_magnum",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.9,
|
||||
LHIKOut = 1.25,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.5,
|
||||
MinProgress = 4,
|
||||
LastClip1OutTime = 2.3,
|
||||
Time = 4.5,
|
||||
ShellEjectAt = .5,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.05},
|
||||
{s = testpath .. "boltup.ogg", t = 0.15},
|
||||
{s = testpath .. "boltback_reload.ogg", t = 0.18},
|
||||
{s = testpath .. "eject.ogg", t = 0.45},
|
||||
{s = rottle, t = 0.6},
|
||||
{s = testpath .. "magrel.ogg", t = 1.0},
|
||||
{s = testpath .. "magout_empty.ogg", t = 1.1},
|
||||
{s = rottle, t = 1.25},
|
||||
{s = testpath .. "magdrop_metal.ogg", t = 1.5, v = 0.4},
|
||||
{s = common .. "magpouch.ogg", t = 1.6, v = 0.4},
|
||||
{s = rottle, t = 1.65},
|
||||
{s = testpath .. "struggle.ogg", t = 1.85},
|
||||
{s = testpath .. "magin.ogg", t = 2.0},
|
||||
{s = rottle, t = 2.4},
|
||||
{s = testpath .. "magtap.ogg", t = 2.6},
|
||||
{s = ratel, t = 2.6},
|
||||
{s = testpath .. "boltforward_reload.ogg", t = 2.9},
|
||||
{s = testpath .. "boltdown.ogg", t = 3.3},
|
||||
{s = common .. "shoulder.ogg", t = 3.35},
|
||||
},
|
||||
},
|
||||
["reload_10_338"] = {
|
||||
Source = "reload_exte_magnum",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.65,
|
||||
LHIKEaseOut = 0.25,
|
||||
MinProgress = 3,
|
||||
Time = 3.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.1},
|
||||
{s = testpath .. "magrel.ogg", t = 0.2},
|
||||
{s = testpath .. "magout.ogg", t = 0.4},
|
||||
{s = rottle, t = 0.75},
|
||||
{s = common .. "magpouch.ogg", t = 0.8, v = 0.4},
|
||||
{s = testpath .. "struggle.ogg", t = 1.1, v = 1},
|
||||
{s = testpath .. "magin.ogg", t = 1.4},
|
||||
{s = testpath .. "magtap.ogg", t = 2.0},
|
||||
{s = rottle, t = 2.3, v = 0.6},
|
||||
{s = ratel, t = 2.35, v = 0.6},
|
||||
},
|
||||
},
|
||||
["cycle"] = {
|
||||
Source = "cycle",
|
||||
Time = 1.47,
|
||||
ShellEjectAt = 0.4,
|
||||
MinProgress = 0.9,
|
||||
SoundTable = {
|
||||
{s = ratel, t = 0.07},
|
||||
{s = testpath .. "boltup.ogg", t = 0.1},
|
||||
{s = testpath .. "boltback.ogg", t = 0.2},
|
||||
{s = testpath .. "boltforward.ogg", t = 0.32},
|
||||
{s = testpath .. "eject.ogg", t = 0.4},
|
||||
{s = testpath .. "boltdown.ogg", t = 0.6},
|
||||
|
||||
--{s = common .. "shoulder.ogg", t = 0.7},
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect"] = {
|
||||
Source = "inspect_enter",
|
||||
-- time = 35 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 2.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-sniper-03.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inspect_loop",
|
||||
-- time = 72 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inspect_exit",
|
||||
-- time = 66 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
SoundTable = {
|
||||
{s = common .. "movement-sniper-01.ogg", t = 0},
|
||||
{s = rottle, t = 0.25},
|
||||
{s = testpath .. "boltup_inspect.ogg", t = 1.2},
|
||||
{s = common .. "movement-sniper-03.ogg", t = 1.25},
|
||||
{s = testpath .. "boltback_inspect.ogg", t = 1.35},
|
||||
{s = testpath .. "boltforward_inspect.ogg", t = 1.8},
|
||||
{s = testpath .. "boltdown_inspect.ogg", t = 1.9},
|
||||
{s = rottle, t = 2.0},
|
||||
{s = common .. "movement-sniper-04.ogg", t = 2.2},
|
||||
},
|
||||
},
|
||||
["enter_inspect_empty"] = { -- Animations needed!
|
||||
Source = "inspect_enter",
|
||||
-- time = 35 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 2.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = rutle, t = 0.1},
|
||||
},
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "inspect_loop",
|
||||
-- time = 72 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "inspect_exit",
|
||||
-- time = 66 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
SoundTable = {
|
||||
{s = common .. "movement-sniper-01.ogg", t = 0.05},
|
||||
{s = rottle, t = 0.25},
|
||||
{s = testpath .. "boltup_inspect.ogg", t = 1.2},
|
||||
{s = common .. "movement-sniper-03.ogg", t = 1.25},
|
||||
{s = testpath .. "boltback_inspect.ogg", t = 1.35},
|
||||
{s = testpath .. "boltforward_inspect.ogg", t = 1.8},
|
||||
{s = testpath .. "boltdown_inspect.ogg", t = 1.9},
|
||||
{s = rottle, t = 2.0},
|
||||
{s = common .. "movement-sniper-04.ogg", t = 2.2},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
@@ -0,0 +1,525 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Oldie Weaponry"
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/12g.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.UC_ShellColor = Color(0.7*255, 0.2*255, 0.2*255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 6
|
||||
SWEP.CamAttachment = 7
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Volga Super" -- it's marketed to Americans
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "IZh-58"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Shotgun"
|
||||
SWEP.Trivia_Desc = [[The design of the double-barrel shotgun is so ubiquitous that it is usually referred to by weapon class instead of model name. These traditional shotguns are very popular in both rural and urban communities around the world for their simplicity and reliability.
|
||||
|
||||
Both barrels can be fired back-to-back in quick, deadly succession, but they must be reloaded frequently. Switch to burst firemode to pull both triggers at once.]]
|
||||
SWEP.Trivia_Manufacturer = "Sikov Machining Plant"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Break Action"
|
||||
SWEP.Trivia_Country = "Soviet Union"
|
||||
SWEP.Trivia_Year = 1958
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Izhevsk Mechanical Plant"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ur_dbs.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ur_dbs.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-3, 3, -5),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 18 -- 6 pellets to kill
|
||||
SWEP.DamageMin = 10 -- 10 pellets to kill
|
||||
SWEP.Range = 40
|
||||
SWEP.RangeMin = 6
|
||||
SWEP.Num = 8
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 365
|
||||
SWEP.PhysBulletMuzzleVelocity = 365
|
||||
|
||||
SWEP.HullSize = 0.25
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults_Shotgun
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 0
|
||||
SWEP.Primary.ClipSize = 2
|
||||
SWEP.RejectMagSizeChange = true -- Signals to attachments that mag size shouldn't be changeable; needs to be implemented attachment-side with att.Compatible
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 2.8
|
||||
SWEP.RecoilSide = 2
|
||||
|
||||
SWEP.RecoilRise = 0.24
|
||||
SWEP.VisualRecoilMult = 0
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
|
||||
SWEP.Sway = 0.5
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 350
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
PrintName = "fcg.break",
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
PrintName = "ur.spas12.dbl",
|
||||
Mult_AccuracyMOA = 1.15,
|
||||
Mult_HipDispersion = 0.8,
|
||||
Mult_Num = 2,
|
||||
Override_AmmoPerShot = 2,
|
||||
Mult_Damage = 2,
|
||||
Mult_DamageMin = 2,
|
||||
Mult_VisualRecoilMult = 2,
|
||||
|
||||
CustomBars = "--___",
|
||||
},
|
||||
{
|
||||
PrintName = "fcg.safe2",
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.UC_CanManualAction = true
|
||||
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
SWEP.MalfunctionMean = math.huge -- Theoretically it will never malfunction
|
||||
|
||||
SWEP.ShootVol = 160
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = false
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 210
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 25
|
||||
SWEP.HipDispersion = 400
|
||||
SWEP.MoveDispersion = 125
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.91
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.25
|
||||
SWEP.ShootSpeedMult = 0.75
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 49
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-1.5, 0, 2.5),
|
||||
Ang = Angle(0, 0, 3),
|
||||
Magnification = 1.05,
|
||||
SwitchToSound = "",
|
||||
}
|
||||
|
||||
SWEP.SprintPos = Vector(7, 0, 0)
|
||||
SWEP.SprintAng = Angle(-10, 40, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(7, 0, 0)
|
||||
SWEP.HolsterAng = Angle(-10, 40, -10)
|
||||
|
||||
SWEP.ActivePos = Vector(1, 1.5, 1.5)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-1, 2, 1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -20)
|
||||
|
||||
SWEP.CustomizePos = Vector(10, 1, 2)
|
||||
SWEP.CustomizeAng = Angle(10, 40, 20)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(3, 0, -4.5)
|
||||
|
||||
-- Firing sounds --
|
||||
|
||||
local path = ")weapons/arccw_ur/dbs/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
SWEP.ShootSoundSilenced = path .. "fire_supp.ogg"
|
||||
--[[SWEP.DistantShootSound = {path .. "fire-dist-01.ogg", path .. "fire-dist-02.ogg", path .. "fire-dist-03.ogg", path .. "fire-dist-04.ogg", path .. "fire-dist-05.ogg"}
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"]]
|
||||
SWEP.ShootDrySound = common .. "manual_trigger.ogg"
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
|
||||
local tail = ")/arccw_uc/common/12ga/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-12ga-pasg-ext-01.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-02.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-03.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-04.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-05.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = function(wep,data)
|
||||
ArcCW.UC.InnyOuty(wep)
|
||||
|
||||
if wep:GetCurrentFiremode().Override_AmmoPerShot == 2 then
|
||||
timer.Simple(0.05, function()
|
||||
if IsValid(wep) then
|
||||
wep:EmitSound(wep.ShootSound[math.random(1,#wep.ShootSound)], data.volume * .4, data.pitch, 1, CHAN_WEAPON - 1)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- Animations --
|
||||
|
||||
local ratel = {common .. "rattle1.ogg", common .. "rattle2.ogg", common .. "rattle3.ogg"}
|
||||
local rottle = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local shellin = {common .. "dbs-shell-insert-01.ogg", common .. "dbs-shell-insert-02.ogg", common .. "dbs-shell-insert-03.ogg", common .. "dbs-shell-insert-04.ogg", common .. "dbs-shell-insert-05.ogg", common .. "dbs-shell-insert-06.ogg", common .. "dbs-shell-insert-07.ogg", common .. "dbs-shell-insert-08.ogg", common .. "dbs-shell-insert-09.ogg", common .. "dbs-shell-insert-10.ogg", common .. "dbs-shell-insert-11.ogg", common .. "dbs-shell-insert-12.ogg"}
|
||||
local shellfall = {path .. "shell-fall-01.ogg", path .. "shell-fall-02.ogg", path .. "shell-fall-03.ogg", path .. "shell-fall-04.ogg"}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
--Time = 20 / 30,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "grab.ogg", t = 0.2},
|
||||
{s = path .. "shoulder.ogg", t = 0.5},
|
||||
},
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "deploy",
|
||||
Time = 26 / 30,
|
||||
SoundTable = {
|
||||
{s = path .. "close.ogg", t = 0.1},
|
||||
{s = common .. "shoulder.ogg", t = 0.2},
|
||||
{s = path .. "shoulder.ogg", t = 0.455},
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
|
||||
["fire"] = { -- first barrel
|
||||
Source = "fire",
|
||||
-- Time = 23 / 25,--30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
-- Time = 23 / 25,--30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
|
||||
["fire_empty"] = { -- second barrel
|
||||
Source = "fire_empty", -- fire_empty
|
||||
-- Time = 23 / 25,--30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty", -- fire_empty
|
||||
-- Time = 23 / 25,--30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0}},
|
||||
},
|
||||
|
||||
["fire_2bst"] = { -- both
|
||||
Source = "fireboth",
|
||||
-- Time = 35 / 25,--30,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
MinProgress = 0.3
|
||||
},
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
ShellEjectAt = 0.91,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_4.ogg", t = 0},
|
||||
{s = path .. "open.ogg", t = 0.2},
|
||||
{s = path .. "eject.ogg", t = 0.8},
|
||||
{s = common .. "magpouch_pull_small.ogg", t = 1.0},
|
||||
{s = shellfall, t = 1.0},
|
||||
{s = common .. "cloth_2.ogg", t = 1.1},
|
||||
{s = path .. "struggle.ogg", t = 1.5, v = 0.5},
|
||||
{s = shellin, t = 1.8},
|
||||
{s = path .. "grab.ogg", t = 2.15, v = 0.5},
|
||||
{s = path .. "close.ogg", t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.4},
|
||||
{s = path .. "shoulder.ogg", t = 2.675},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
MinProgress = 2.05,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
ShellEjectAt = 1.0,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_4.ogg", t = 0},
|
||||
{s = path .. "open.ogg", t = 0.3},
|
||||
{s = path .. "eject.ogg", t = 0.8},
|
||||
{s = shellfall, t = 0.9},
|
||||
{s = shellfall, t = 0.95},
|
||||
{s = common .. "cloth_2.ogg", t = 1.1},
|
||||
{s = common .. "magpouch_pull_small.ogg", t = 1.2},
|
||||
{s = path .. "struggle.ogg", t = 1.7, v = 0.5},
|
||||
{s = shellin, t = 1.85},
|
||||
{s = shellin, t = 1.9},
|
||||
{s = path .. "grab.ogg", t = 2.17, v = 0.5},
|
||||
{s = path .. "close.ogg", t = 2.3},
|
||||
{s = common .. "shoulder.ogg", t = 2.44},
|
||||
{s = path .. "shoulder.ogg", t = 2.6},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
MinProgress = 2.05,
|
||||
},
|
||||
|
||||
["reload_extractor"] = {
|
||||
Source = "reload2",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
ShellEjectAt = 0.4,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_4.ogg", t = 0},
|
||||
{s = path .. "open.ogg", t = 0.2},
|
||||
{s = common .. "magpouch_pull_small.ogg", t = 0.5},
|
||||
{s = shellfall, t = 0.4},
|
||||
{s = common .. "cloth_2.ogg", t = 0.6},
|
||||
{s = path .. "struggle.ogg", t = 1.0, v = 0.5},
|
||||
{s = shellin, t = 1.2},
|
||||
{s = path .. "grab.ogg", t = 1.5, v = 0.5},
|
||||
{s = path .. "close.ogg", t = 1.7},
|
||||
{s = common .. "shoulder.ogg", t = 1.8},
|
||||
{s = path .. "shoulder.ogg", t = 2.2},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
MinProgress = 1.3,
|
||||
},
|
||||
["reload_empty_extractor"] = {
|
||||
Source = "reload2_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
ShellEjectAt = 0.4,
|
||||
SoundTable = {
|
||||
{s = common .. "cloth_4.ogg", t = 0},
|
||||
{s = path .. "open.ogg", t = 0.2},
|
||||
{s = common .. "magpouch_pull_small.ogg", t = 0.5},
|
||||
{s = shellfall, t = 0.4},
|
||||
{s = shellfall, t = 0.45},
|
||||
{s = common .. "cloth_2.ogg", t = 0.6},
|
||||
{s = path .. "struggle.ogg", t = 1.0, v = 0.5},
|
||||
{s = shellin, t = 1.2},
|
||||
{s = shellin, t = 1.25},
|
||||
{s = path .. "grab.ogg", t = 1.5, v = 0.5},
|
||||
{s = path .. "close.ogg", t = 1.7},
|
||||
{s = common .. "shoulder.ogg", t = 1.8},
|
||||
{s = path .. "shoulder.ogg", t = 2.2},
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
MinProgress = 1.3,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
--[1] = "1014_shell1",
|
||||
}
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["barrel_mid"] = { VMBodygroups = { {ind = 1, bg = 1} } },
|
||||
["barrel_compact"] = { VMBodygroups = { {ind = 1, bg = 4} } },
|
||||
["barrel_sw"] = { VMBodygroups = { {ind = 1, bg = 2} } },
|
||||
["barrel_swplus"] = { VMBodygroups = { {ind = 1, bg = 3}, {ind = 3, bg = 1} } },
|
||||
|
||||
["stock_sw"] = { VMBodygroups = { {ind = 2, bg = 1} } },
|
||||
}
|
||||
|
||||
SWEP.DefaultBodygroups = "00000000"
|
||||
|
||||
SWEP.Attachments = {
|
||||
-- {
|
||||
-- PrintName = "Optic",
|
||||
-- DefaultAttName = "Iron Sights",
|
||||
-- Slot = {"optic_lp","optic"},
|
||||
-- Bone = "barrels",
|
||||
-- Offset = {
|
||||
-- vpos = Vector(0.5, -1.75, 1.5),
|
||||
-- vang = Angle(0, 90, 0),
|
||||
-- },
|
||||
-- VMScale = Vector(1,1,1),
|
||||
-- CorrectivePos = Vector(0, 0, -0.0),
|
||||
-- CorrectiveAng = Angle(0, 180, 0),
|
||||
-- },
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "26\" Factory Barrel",
|
||||
DefaultAttIcon = Material("entities/att/ur_dbs/blong.png", "smooth mips"),
|
||||
Slot = "ur_db_barrel",
|
||||
Bone = "body",
|
||||
Offset = {
|
||||
vpos = Vector(-0.4, -5, -6),
|
||||
vang = Angle(0, 90, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
Slot = "choke",
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ur_db_stock"},
|
||||
DefaultAttName = "Wooden Stock",
|
||||
DefaultAttIcon = Material("entities/att/ur_dbs/s.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"BUCK\" #00 Buckshot",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_shotgun_generic.png", "mips smooth"),
|
||||
Slot = {"ud_ammo_shotgun"},
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = {"uc_fg_singleshot", "uc_db_fg"}, -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm", "uc_db_tp"},
|
||||
FreeSlot = true,
|
||||
Bone = "body",
|
||||
Offset = {
|
||||
vpos = Vector(-0.55, 1, -0.5),
|
||||
vang = Angle(0, 90, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,857 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Modern Weaponry"
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol_deagle"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/50ae.mdl"
|
||||
SWEP.ShellScale = 1
|
||||
--SWEP.ShellMaterial = "models/weapons/arcticcw/shell_9mm"
|
||||
SWEP.ShellPitch = 90
|
||||
SWEP.UC_ShellColor = Color(0.7*255, 0.2*255, 0.2*255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.TracerWidth = 1
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Predator .50"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "Desert Eagle"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Pistol"
|
||||
SWEP.Trivia_Desc = "Unorthodox pistol in both weight and design, marketed as an alternative to high-caliber revolvers. Its huge rounds, unrivaled in power for a handgun cartridge, can easily blast a human skull apart.\nDespite being one of the most famous weapons in action culture, it rarely sees practical use because of its massive, bulky frame and pointlessly large caliber.\n\nWe both know that won't stop you."
|
||||
SWEP.Trivia_Manufacturer = "ISM"
|
||||
SWEP.Trivia_Calibre = ".50 Action Express"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated Rotating Bolt"
|
||||
SWEP.Trivia_Country = "Israel"
|
||||
SWEP.Trivia_Year = 1983
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Magnum Research"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ud_deagle.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ud_deagle.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 44 -- 2 shot close range kill
|
||||
SWEP.DamageMin = 44 -- 9 shot long range kill (big bullet falls off quickly)
|
||||
SWEP.RangeMin = 10
|
||||
SWEP.Range = 120 -- 2 shot until ~50m
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 470
|
||||
SWEP.PhysBulletMuzzleVelocity = 470
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Jamming --
|
||||
|
||||
--SWEP.Malfunction = true
|
||||
SWEP.MalfunctionJam = false
|
||||
--SWEP.MalfunctionMean = 21
|
||||
SWEP.MalfunctionPostFire = false
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 7
|
||||
SWEP.ExtendedClipSize = 14
|
||||
SWEP.ReducedClipSize = 5
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 3
|
||||
SWEP.RecoilSide = 1
|
||||
|
||||
SWEP.RecoilRise = 0.75
|
||||
SWEP.VisualRecoilMult = 1.5
|
||||
SWEP.MaxRecoilBlowback = 2
|
||||
SWEP.MaxRecoilPunch = 6
|
||||
|
||||
SWEP.Sway = 1.1
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 200
|
||||
SWEP.Num = 1
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_357"
|
||||
SWEP.NPCWeight = 70
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 4
|
||||
SWEP.HipDispersion = 600
|
||||
SWEP.MoveDispersion = 200
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "357"
|
||||
SWEP.MagID = "deagle"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.925
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.25
|
||||
SWEP.ShootSpeedMult = 0.8
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 12
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HolsterPos = Vector(0.3, 3, 1)
|
||||
SWEP.HolsterAng = Angle(-5, 15, -20)
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "revolver"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.549, 1, 1.505),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "",
|
||||
ViewModelFOV = 55,
|
||||
}
|
||||
|
||||
SWEP.ActivePos = Vector(-0.5, 1.5, 1.15)
|
||||
SWEP.ActiveAng = Angle(0.5, 0.5, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(-1, -2, 2)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-2.2, 1, 0.6)
|
||||
SWEP.CrouchAng = Angle(0, 0, -14)
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10.5, 4, -4),
|
||||
ang = Angle(-6, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
}
|
||||
|
||||
-- Weapon sounds --
|
||||
|
||||
local path = ")weapons/arccw_ur/deagle/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
local rottle = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local rutle = {common .. "movement-smg-03.ogg",common .. "movement-smg-04.ogg"}
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
|
||||
SWEP.ShootSoundSilenced = path .. "fire_sup.ogg"
|
||||
SWEP.DistantShootSound = nil
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"
|
||||
SWEP.ShootDrySound = path .. "dryfire.ogg"
|
||||
|
||||
local tail = ")/arccw_uc/common/50ae/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-50ae-pistol-ext-01.ogg",
|
||||
tail .. "fire-dist-50ae-pistol-ext-02.ogg",
|
||||
tail .. "fire-dist-50ae-pistol-ext-03.ogg",
|
||||
tail .. "fire-dist-50ae-pistol-ext-04.ogg",
|
||||
tail .. "fire-dist-50ae-pistol-ext-05.ogg",
|
||||
tail .. "fire-dist-50ae-pistol-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-shotgun-01.ogg",
|
||||
common .. "fire-dist-int-shotgun-02.ogg",
|
||||
common .. "fire-dist-int-shotgun-03.ogg",
|
||||
common .. "fire-dist-int-shotgun-04.ogg",
|
||||
common .. "fire-dist-int-shotgun-05.ogg",
|
||||
common .. "fire-dist-int-shotgun-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 0.75
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet1", [2] = "Bullet2", [3] = "Bullet3", [4] = "Bullet4", [5] = "Bullet5", [6] = "Bullet6", [7] = "Bullet7"
|
||||
}
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000"
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ur_deagle_barrel_modern"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["ur_deagle_barrel_compact"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 5}},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, 0, .15),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
}
|
||||
},
|
||||
["ur_deagle_barrel_compen"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 4}},
|
||||
},
|
||||
["ur_deagle_barrel_ext"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, 0, 1.95),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ur_deagle_barrel_marksman"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 3}},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, -0.05, 5.1),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
},
|
||||
["ur_deagle_barrel_annihilator"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 6}},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, -0.05, 1.25),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
["ur_deagle_mag_ext"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}}
|
||||
},
|
||||
|
||||
["ur_deagle_grip_wooden"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}}
|
||||
},
|
||||
["ur_deagle_grip_rubber"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}}
|
||||
},
|
||||
|
||||
["tac_rail"] = {
|
||||
VMBodygroups = {{ind = 5, bg = 1}}
|
||||
},
|
||||
["ur_deagle_caliber_44"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 1}}
|
||||
},
|
||||
["ur_deagle_caliber_357"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 2}}
|
||||
},
|
||||
["ur_deagle_caliber_410"] = {
|
||||
VMBodygroups = {{ind = 6, bg = 3}}
|
||||
},
|
||||
|
||||
["ur_deagle_skin_black"] = {
|
||||
VMSkin = 1,
|
||||
},
|
||||
["ur_deagle_skin_gold"] = {
|
||||
VMSkin = 2,
|
||||
},
|
||||
["ur_deagle_skin_chrome"] = {
|
||||
VMSkin = 3,
|
||||
},
|
||||
["ur_deagle_skin_modern"] = {
|
||||
VMBodygroups = {{ind = 0, bg = 1}},
|
||||
VMSkin = 3,
|
||||
},
|
||||
["ur_deagle_skin_sex"] = {
|
||||
VMBodygroups = {{ind = 0, bg = 1}},
|
||||
VMSkin = 4,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep,data)
|
||||
local vm = data.vm
|
||||
if !IsValid(vm) then return end
|
||||
local optic = wep.Attachments[1].Installed
|
||||
local tritium = (optic == "ur_deagle_tritium")
|
||||
local barrel = wep.Attachments[2].Installed or 0
|
||||
|
||||
if tritium then
|
||||
-- Setup for when we introduce new barrel options
|
||||
if barrel == "ur_deagle_barrel_marksman" then
|
||||
vm:SetBodygroup(3,3)
|
||||
elseif barrel == "ur_deagle_barrel_ext" then
|
||||
vm:SetBodygroup(3,2)
|
||||
elseif barrel == "ur_deagle_barrel_compact" then
|
||||
vm:SetBodygroup(3,4)
|
||||
elseif barrel == "ur_deagle_barrel_annihilator" then
|
||||
vm:SetBodygroup(3,5)
|
||||
else
|
||||
vm:SetBodygroup(3,1)
|
||||
end
|
||||
-- elseif optic and barrel == 0 then
|
||||
-- vm:SetBodygroup(1,1)
|
||||
end
|
||||
|
||||
if barrel == "ur_deagle_barrel_annihilator" then
|
||||
if vm:GetBodygroup(5) == 1 then
|
||||
vm:SetBodygroup(5,2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SWEP.Hook_NameChange = function(wep, name)
|
||||
if wep.Attachments[2].Installed == "ur_deagle_barrel_annihilator" then
|
||||
return "Annihilator"
|
||||
elseif !GetConVar("arccw_truenames"):GetBool() then
|
||||
local add = ".50"
|
||||
local cal = wep.Attachments[3].Installed
|
||||
|
||||
if cal == "ur_deagle_caliber_357" then
|
||||
add = ".357"
|
||||
elseif cal == "ur_deagle_caliber_44" then
|
||||
add = ".44"
|
||||
elseif cal == "ur_deagle_caliber_410" then
|
||||
add = ".410"
|
||||
end
|
||||
|
||||
return "Predator " .. add
|
||||
else
|
||||
return "Desert Eagle"
|
||||
end
|
||||
end
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty",
|
||||
Time = 120 / 60,
|
||||
},
|
||||
["idle_jammed"] = { -- pistol-like malfucntions not implemented yet in arccw
|
||||
Source = "idle_jammed",
|
||||
Time = 120 / 60,
|
||||
},
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 120 / 60,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 73 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.6,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = path .. "slidepull.ogg", t = 12 / 60, c = ca },
|
||||
{ s = path .. "chamber.ogg", t = 20 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
ProcDraw = true,
|
||||
SoundTable = {
|
||||
--{s = path .. "draw.ogg", t = 0}, -- Not Temporary
|
||||
{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
ProcHolster = true,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
--{s = path .. "holster.ogg", t = 0.2}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = {"fire_01", "fire_02", "fire_03"},
|
||||
Time = 0.9,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = {"fire_01", "fire_02", "fire_03"},
|
||||
Time = 0.9,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_jammed"] = {
|
||||
Source = "fire_jammed",
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 0.9,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {{ s = path .. "mech_last.ogg", t = 0 }},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 0.9,
|
||||
ShellEjectAt = 0.05,
|
||||
SoundTable = {{ s = path .. "mech_last.ogg", t = 0 }},
|
||||
},
|
||||
|
||||
-- 7-R Reloads --
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.3525,
|
||||
Time = 2.2,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.6,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout.ogg", t = 6 / 60, c = ca },
|
||||
{ s = rottle, t = 10 / 60, c = ca },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 30 / 60, c = ca },
|
||||
{ s = rottle, t = 55 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 61 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 66 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.75,
|
||||
Time = 2.55,
|
||||
LastClip1OutTime = 0.76,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.55,
|
||||
LHIKOut = 0.7,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout_old.ogg", t = 8 / 60, c = ca },
|
||||
{ s = rottle, t = 10 / 60, c = ca },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 26 / 60, c = ca },
|
||||
{ s = common .. "pistol_magdrop.ogg", t = 40 / 60, c = ca },
|
||||
{ s = rottle, t = 55 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 58 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 62 / 60, c = ca },
|
||||
{ s = path .. "chamber.ogg", t = 90 / 60, c = ca },
|
||||
{ s = rottle, t = 75 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
|
||||
-- 10-R Reloads --
|
||||
|
||||
["reload_10"] = {
|
||||
Source = "reload_exte",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.3525,
|
||||
Time = 139 / 60,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.6,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout.ogg", t = 6 / 60, c = ca },
|
||||
{ s = rottle, t = 10 / 60, c = ca },
|
||||
{ s = common .. "magpouch.ogg", t = 30 / 60, c = ca },
|
||||
{ s = rottle, t = 55 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 64 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 71 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
["reload_empty_10"] = {
|
||||
Source = "reload_empty_exte",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.75,
|
||||
Time = 160 / 60,
|
||||
LastClip1OutTime = 0.76,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.55,
|
||||
LHIKOut = 0.7,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout_old.ogg", t = 8 / 60, c = ca },
|
||||
{ s = rottle, t = 10 / 60, c = ca },
|
||||
{ s = common .. "magpouch.ogg", t = 26 / 60, c = ca },
|
||||
{ s = common .. "pistol_magdrop.ogg", t = 40 / 60, c = ca },
|
||||
{ s = rottle, t = 55 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 60 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 66 / 60, c = ca },
|
||||
{ s = path .. "chamber.ogg", t = 94 / 60, c = ca },
|
||||
{ s = rottle, t = 75 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
|
||||
["unjam"] = {
|
||||
Source = "unjam",
|
||||
Time = 0.9,
|
||||
-- ShellEjectAt = 0.65,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "unjam.ogg", t = .4}
|
||||
},
|
||||
LHIK = true,
|
||||
LHIKIn = .2,
|
||||
LHIKOut = .2,
|
||||
LHIKEaseOut = .75,
|
||||
},
|
||||
-- Inspecc --
|
||||
-- disabled due to suck balls
|
||||
["enter_inspect"] = {
|
||||
Source = "enter_inspect",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = rutle, t = 0.1},
|
||||
},
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "idle_inspect",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "exit_inspect",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout.ogg", t = 8 / 60, c = ca },
|
||||
{ s = rottle, t = 100 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 106 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 114 / 60, c = ca },
|
||||
{ s = path .. "rack1.ogg", t = 155 / 60, c = ca },
|
||||
{ s = rottle, t = 160 / 60, c = ca },
|
||||
{ s = path .. "rack2.ogg", t = 178 / 60, c = ca },
|
||||
{ s = rottle, t = 180 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect_empty"] = {
|
||||
Source = "enter_inspect_empty",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
},
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "idle_inspect_empty",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "exit_inspect_empty",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout.ogg", t = 8 / 60, c = ca },
|
||||
{ s = rottle, t = 100 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 106 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 114 / 60, c = ca },
|
||||
{ s = rottle, t = 160 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect_jammed"] = {
|
||||
Source = "enter_inspect_jammed",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
},
|
||||
},
|
||||
["idle_inspect_jammed"] = {
|
||||
Source = "idle_inspect_jammed",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect_jammed"] = {
|
||||
Source = "exit_inspect_jammed",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60, c = ca },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60, c = ca },
|
||||
{ s = path .. "magout.ogg", t = 8 / 60, c = ca },
|
||||
{ s = rottle, t = 100 / 60, c = ca },
|
||||
{ s = path .. "magin_miss.ogg", t = 106 / 60, c = ca },
|
||||
{ s = path .. "magin_old.ogg", t = 114 / 60, c = ca },
|
||||
{ s = rottle, t = 160 / 60, c = ca },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- ADS animation blending, thanks fesiug --
|
||||
|
||||
SWEP.Hook_Think = function(wep)
|
||||
if IsValid(wep) and wep.ArcCW then
|
||||
local vm = wep:GetOwner():GetViewModel()
|
||||
|
||||
local delta = 1-wep:GetSightDelta()
|
||||
|
||||
local bipoded = wep:GetInBipod()
|
||||
wep.ADSBipodAnims = math.Approach(wep.ADSBipodAnims or 0, bipoded and 1 or 0, FrameTime() / 0.5)
|
||||
|
||||
vm:SetPoseParameter("sights", Lerp( math.ease.InOutCubic(math.max(delta, wep.ADSBipodAnims)), 0, 1)) -- thanks fesiug
|
||||
|
||||
local slot = wep.Attachments[3].Installed
|
||||
if wep.Attachments[7].Installed or slot == "ur_deagle_caliber_357" then
|
||||
vm:SetPoseParameter("light", 1)
|
||||
elseif slot == "ur_deagle_caliber_44" then
|
||||
vm:SetPoseParameter("light", .5)
|
||||
else
|
||||
vm:SetPoseParameter("light", 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Attachments --
|
||||
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp","ur_deagle_tritium","optic"},
|
||||
DefaultAttName = "Iron Sights",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(0, -5.15, 6.4),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
Slot = {"ur_deagle_barrel"},
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_deagle_barrel.png","mips smooth"),
|
||||
DefaultAttName = "6\" Standard Barrel",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(3.07, -3.8, -27),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
Slot = {"ur_deagle_caliber"},
|
||||
DefaultAttIcon = Material("entities/att/uc_bullets/50ae.png","mips smooth"),
|
||||
DefaultAttName = ".50 Action Express",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(3.07, -3.8, -27),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"muzzle"},
|
||||
Bone = "Barrel",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 0.75),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"nofh"},
|
||||
ExcludeFlags = {"barrel_annihilator"},
|
||||
Hidden = true,
|
||||
Integral = true,
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
InstalledEles = {"tac_rail"},
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.5, 7),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
MergeSlots = {15},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = {"ur_deagle_mag"},
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_deagle_mag_7.png","mips smooth"),
|
||||
DefaultAttName = "7-Round Mag",
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"uc_stock", "go_stock_pistol_bt"},
|
||||
VMScale = Vector(1.1, 1.1, 1.1),
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(0, -0.25, -1),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
DefaultAttName = "Factory Grip",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_deagle_grip_plastic.png","mips smooth"),
|
||||
Slot = "ur_deagle_grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm","fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(0.55, -3.4, 4.2),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
VMScale = Vector(.65,.65,.65),
|
||||
},
|
||||
{
|
||||
PrintName = "Finish",
|
||||
Slot = {"ur_deagle_skin"},
|
||||
DefaultAttName = "Stainless Steel",
|
||||
DefaultAttIcon = Material("entities/att/acwatt_ur_deagle_finish_default.png","mips smooth"),
|
||||
FreeSlot = true,
|
||||
},
|
||||
{
|
||||
PrintName = "M203 slot",
|
||||
Slot = "uc_ubgl",
|
||||
Bone = "Body",
|
||||
Offset = {
|
||||
vpos = Vector(0, -4.8, 6.0),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
Hidden = true,
|
||||
}
|
||||
}
|
||||
1169
gamemodes/ixhl2rp/plugins/arccwbase/entities/weapons/arccw_ur_g3.lua
Normal file
1169
gamemodes/ixhl2rp/plugins/arccwbase/entities/weapons/arccw_ur_g3.lua
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,901 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Oldie Weaponry"
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/9x19.mdl"
|
||||
SWEP.ShellScale = 1
|
||||
--SWEP.ShellMaterial = "models/weapons/arcticcw/shell_9mm"
|
||||
SWEP.ShellPitch = 90
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 5
|
||||
SWEP.TracerNum = 0 -- subsonic by default
|
||||
SWEP.TracerWidth = 1
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "AMAS" -- American Automatic Sidearm
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "M1911"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Pistol"
|
||||
SWEP.Trivia_Desc = [[Venerable semi-automatic pistol issued by the US Army throughout both World Wars and then some. Even after more than a century of service, it is rarely considered an obsolete design, and its short recoil mechanism has been inherited by most modern pistols.
|
||||
|
||||
Easy to handle and packing respectable stopping power, the antiquated single-stack magazine is its only notable downside.]]
|
||||
SWEP.Trivia_Manufacturer = "Stoner's Legacy Ltd."
|
||||
SWEP.Trivia_Calibre = ".45 ACP"
|
||||
SWEP.Trivia_Mechanism = "Short Recoil"
|
||||
SWEP.Trivia_Country = "USA"
|
||||
SWEP.Trivia_Year = 1911
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Colt's Manufacturing Company"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ur_m1911.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ur_m1911.mdl"
|
||||
SWEP.ViewModelFOV = 66
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 14 -- 3 shot short range kill (2 shot chest point-blank)
|
||||
SWEP.DamageMin = 14 -- 7 shot long range kill
|
||||
SWEP.RangeMin = 10
|
||||
SWEP.Range = 100 -- 3 shot until ~40m
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 253
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults
|
||||
|
||||
-- Jamming --
|
||||
|
||||
--SWEP.Malfunction = true
|
||||
SWEP.MalfunctionJam = false
|
||||
--SWEP.MalfunctionMean = 21
|
||||
SWEP.MalfunctionPostFire = false
|
||||
SWEP.MalfunctionTakeRound = false
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 12
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 1.00
|
||||
SWEP.RecoilSide = 0.75
|
||||
|
||||
SWEP.RecoilRise = 0.30
|
||||
SWEP.VisualRecoilMult = 1.0
|
||||
SWEP.MaxRecoilBlowback = .5
|
||||
SWEP.MaxRecoilPunch = .8
|
||||
|
||||
SWEP.Sway = 1
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 400
|
||||
SWEP.Num = 1
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ShootPitch = 100
|
||||
SWEP.ShootVol = 120
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_pistol"
|
||||
SWEP.NPCWeight = 70
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 12
|
||||
SWEP.HipDispersion = 400
|
||||
SWEP.MoveDispersion = 150
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "pistol"
|
||||
SWEP.MagID = "m1911"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.97
|
||||
SWEP.SightedSpeedMult = 0.875
|
||||
SWEP.SightTime = 0.25
|
||||
SWEP.ShootSpeedMult = 1
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 8
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HolsterPos = Vector(0.3, 3, 1.6)
|
||||
SWEP.HolsterAng = Angle(-14, 0, -0.5)
|
||||
|
||||
SWEP.SprintPos = Vector(0.3, 3, 1)
|
||||
SWEP.SprintAng = Angle(-5, 15, -20)
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "pistol"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.33, 10, 1.5),
|
||||
Ang = Angle(0.2, 0.02, 5.5),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "",
|
||||
}
|
||||
|
||||
SWEP.ActivePos = Vector(0.3, 3, 1.3)
|
||||
SWEP.ActiveAng = Angle(0, 0, -0.5)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 0, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-2, 0, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -8)
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-9, 4, -4.25),
|
||||
ang = Angle(-6, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
}
|
||||
|
||||
-- Weapon sounds --
|
||||
|
||||
local path = ")weapons/arccw_ur/1911/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
local rottle = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local rutle = {common .. "movement-pistol-01.ogg",common .. "movement-pistol-02.ogg",common .. "movement-pistol-03.ogg",common .. "movement-pistol-04.ogg"}
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.ShootSoundSilenced = {
|
||||
path .. "fire-sup-01.ogg",
|
||||
path .. "fire-sup-02.ogg",
|
||||
path .. "fire-sup-03.ogg",
|
||||
path .. "fire-sup-04.ogg",
|
||||
path .. "fire-sup-05.ogg",
|
||||
path .. "fire-sup-06.ogg"
|
||||
}
|
||||
|
||||
SWEP.DistantShootSound = nil
|
||||
SWEP.DistantShootSoundSilenced = nil
|
||||
SWEP.ShootDrySound = path .. "dryfire.ogg"
|
||||
|
||||
local tail = ")/arccw_uc/common/45acp/"
|
||||
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-45acp-pistol-ext-01.ogg",
|
||||
tail .. "fire-dist-45acp-pistol-ext-02.ogg",
|
||||
tail .. "fire-dist-45acp-pistol-ext-03.ogg",
|
||||
tail .. "fire-dist-45acp-pistol-ext-04.ogg",
|
||||
tail .. "fire-dist-45acp-pistol-ext-05.ogg",
|
||||
tail .. "fire-dist-45acp-pistol-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoors = {
|
||||
common .. "fire-dist-int-pistol-01.ogg",
|
||||
common .. "fire-dist-int-pistol-02.ogg",
|
||||
common .. "fire-dist-int-pistol-03.ogg",
|
||||
common .. "fire-dist-int-pistol-04.ogg",
|
||||
common .. "fire-dist-int-pistol-05.ogg",
|
||||
common .. "fire-dist-int-pistol-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Bodygroups --
|
||||
SWEP.BulletBones = {
|
||||
[1] = "mag_round1",
|
||||
[2] = "mag_round2",
|
||||
[3] = "mag_round3",
|
||||
[4] = "mag_round4",
|
||||
[5] = "mag_round5",
|
||||
[6] = "mag_round6",
|
||||
[7] = "mag_round7"
|
||||
}
|
||||
SWEP.DefaultBodygroups = "000000000"
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["ur_1911_slide_compact"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 0, bg = 1},
|
||||
{ind = 1, bg = 1}
|
||||
},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, -3.58, .22),
|
||||
vang = Angle(0, 90, 0),
|
||||
}
|
||||
},
|
||||
NameChange = "AMAD",
|
||||
TrueNameChange = "Colt Officer's ACP",
|
||||
},
|
||||
|
||||
["ur_1911_slide_compact_custom"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 0, bg = 1},
|
||||
{ind = 1, bg = 5}
|
||||
},
|
||||
AttPosMods = {
|
||||
[4] = {
|
||||
vpos = Vector(0, -3.58, .22),
|
||||
vang = Angle(0, 90, 0),
|
||||
}
|
||||
},
|
||||
NameChange = "AMAD",
|
||||
TrueNameChange = "Colt Officer's ACP",
|
||||
},
|
||||
|
||||
["ur_1911_slide_custom"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 1, bg = 4}
|
||||
},
|
||||
},
|
||||
|
||||
["ur_1911_slide_m45"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 1, bg = 2},
|
||||
{ind = 4, bg = 1},
|
||||
{ind = 5, bg = 1},
|
||||
},
|
||||
--VMSkin = 1,
|
||||
NameChange = "AMASIN",
|
||||
TrueNameChange = "M45",
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-2.3, 10, 1.4),
|
||||
Ang = Angle(0.275, 0.07, 5.5),
|
||||
},
|
||||
},
|
||||
|
||||
["ur_1911_slide_m45_custom"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 1, bg = 3},
|
||||
{ind = 4, bg = 1},
|
||||
{ind = 5, bg = 1},
|
||||
},
|
||||
--VMSkin = 1,
|
||||
NameChange = "AMASIN",
|
||||
TrueNameChange = "M45",
|
||||
Override_IronSightStruct = {
|
||||
Pos = Vector(-2.3, 10, 1.4),
|
||||
Ang = Angle(0.275, 0.07, 5.5),
|
||||
},
|
||||
},
|
||||
|
||||
["ur_1911_mag_ext"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 3, bg = 1}
|
||||
}
|
||||
},
|
||||
|
||||
["ur_1911_grip_snake"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 6, bg = 1}
|
||||
}
|
||||
},
|
||||
["ur_1911_grip_pachmayr"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 6, bg = 2}
|
||||
}
|
||||
},
|
||||
|
||||
["ur_1911_skin_silver"] = {
|
||||
VMSkin = 1
|
||||
},
|
||||
["ur_1911_skin_tan"] = {
|
||||
VMSkin = 2
|
||||
},
|
||||
["ur_1911_skin_custom"] = {
|
||||
VMSkin = 3
|
||||
},
|
||||
|
||||
["ur_1911_cal_9mm"] = {
|
||||
NameChange = "AMAS-9",
|
||||
TrueNameChange = "SR1911",
|
||||
},
|
||||
["ur_1911_cal_10auto"] = {
|
||||
NameChange = "AMAS Elite",
|
||||
TrueNameChange = "Delta Elite",
|
||||
},
|
||||
|
||||
["optic_rail"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 7, bg = 1}
|
||||
}
|
||||
},
|
||||
["tac_rail"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 8, bg = 1}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Hook_ModifyBodygroups = function(wep, data)
|
||||
-- local vm = data.vm
|
||||
-- if !IsValid(vm) then return end
|
||||
|
||||
-- local att_skin = wep.Attachments[14].Installed
|
||||
-- local att_slide = wep.Attachments[2].Installed
|
||||
|
||||
-- if att_slide == "ur_1911_slide_m45" and att_skin == "ur_1911_skin_custom" then
|
||||
-- vm:SetBodygroup(1, 3)
|
||||
-- end
|
||||
end
|
||||
|
||||
-- SWEP.Hook_NameChange = function(wep,name)
|
||||
-- if GetConVar("arccw_truenames"):GetBool() then
|
||||
-- local atts = wep.Attachments
|
||||
-- local cal = string.Replace(atts[3].Installed or "45acp", "ur_1911_cal_", "")
|
||||
|
||||
-- if cal == "10auto" then return GetConVar("arccw_truenames"):GetBool() and "Delta Elite" or ""
|
||||
-- elseif cal == "9mm" then return GetConVar("arccw_truenames"):GetBool() and "SR1911" or ""
|
||||
-- end
|
||||
|
||||
-- return "M1911"
|
||||
-- else
|
||||
-- return "AMAS"
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 10 / 30,
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty",
|
||||
Time = 10 / 30,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "fix",
|
||||
Time = 1.6,
|
||||
MinProgress = 1.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
ShellEjectAt = false,
|
||||
ProcDraw = true,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{s = path .. "draw.ogg", t = 0.05},
|
||||
{ s = path .. "mech.ogg",t = 28 / 60}, -- Temporary
|
||||
{ s = path .. "slidedrop.ogg",t = 35 / 60},
|
||||
},
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = .75,
|
||||
MinProgress = .4,
|
||||
--ProcDraw = true,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "draw.ogg", t = 0.05}, -- Not Temporary
|
||||
{s = rutle, t = 0.1},
|
||||
--{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw_empty",
|
||||
Time = .75,
|
||||
MinProgress = .4,
|
||||
--ProcDraw = true,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "draw.ogg", t = 0.05}, -- Not Temporary
|
||||
{s = rutle, t = 0.1},
|
||||
--{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["draw_jam"] = {
|
||||
Source = "draw_jam",
|
||||
Time = .75,
|
||||
MinProgress = .4,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "draw.ogg", t = 0.05}, -- Not Temporary
|
||||
{s = rutle, t = 0.1},
|
||||
--{s = common .. "raise.ogg", t = 0.05},
|
||||
},
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
Time = .75,
|
||||
SoundTable = {
|
||||
{s = rutle, t = 0.05},
|
||||
{s = path .. "holster.ogg", t = 0.2}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster_empty",
|
||||
Time = .75,
|
||||
SoundTable = {
|
||||
{s = rutle, t = 0.05},
|
||||
{s = path .. "holster.ogg", t = 0.2}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
["holster_jam"] = {
|
||||
Source = "holster_jam",
|
||||
Time = 18 / 30,
|
||||
SoundTable = {
|
||||
{s = rutle, t = 0.05},
|
||||
{s = path .. "holster.ogg", t = 0.2}, -- Not Temporary
|
||||
},
|
||||
},
|
||||
|
||||
["fire"] = {
|
||||
Source = "fire",
|
||||
Time = 30 / 30,
|
||||
ShellEjectAt = 0,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire",
|
||||
Time = 30 / 30,
|
||||
ShellEjectAt = 0,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 24 / 30,
|
||||
ShellEjectAt = 0,
|
||||
SoundTable = {
|
||||
{ s = path .. "mech_last.ogg", t = 0 },
|
||||
},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty",
|
||||
Time = 24 / 30,
|
||||
ShellEjectAt = 0,
|
||||
SoundTable = {
|
||||
{ s = path .. "mech_last.ogg", t = 0 },
|
||||
},
|
||||
},
|
||||
["fire_jammed"] = {
|
||||
Source = "fire_jam",
|
||||
Time = 30 / 30,
|
||||
MinProgress = 0.5,
|
||||
ShellEjectAt = false,
|
||||
SoundTable = {
|
||||
--{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }
|
||||
},
|
||||
},
|
||||
|
||||
-- 7-R Reloads --
|
||||
|
||||
["reload_10"] = {
|
||||
Source = "reload_ext",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.3525,
|
||||
Time = 65 / 30,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 0 / 60 },
|
||||
{ s = common .. "magrelease.ogg", t = 17 / 60 },
|
||||
{ s = path .. "magout.ogg", t = 26 / 60 },
|
||||
{ s = rottle, t = 10 / 60 },
|
||||
{ s = rottle, t = 55 / 60 },
|
||||
{ s = common .. "magpouch_replace_small.ogg", t = 80 / 60 },
|
||||
{ s = path .. "magin.ogg", t = 50 / 60 },
|
||||
},
|
||||
},
|
||||
["reload_empty_10"] = {
|
||||
Source = "reload_empty_ext",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.75,
|
||||
Time = 75 / 30,
|
||||
LastClip1OutTime = 0.76,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.55,
|
||||
LHIKOut = 0.7,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60 },
|
||||
{ s = path .. "magout.ogg", t = 16 / 60 },
|
||||
{ s = rottle, t = 10 / 60 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 29 / 60 },
|
||||
{ s = common .. "pistol_magdrop.ogg", t = 40 / 60 },
|
||||
{ s = rottle, t = 55 / 60 },
|
||||
{ s = path .. "magin.ogg", t = 64 / 60 },
|
||||
{ s = rottle, t = 90 / 60 },
|
||||
{ s = path .. "slidedrop.ogg", t = 94 / 60 },
|
||||
},
|
||||
},
|
||||
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.3525,
|
||||
Time = 65 / 30,
|
||||
LastClip1OutTime = 0.9,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LHIKOut = 0.62,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 5 / 60 },
|
||||
{ s = rottle, t = 10 / 60 },
|
||||
{ s = common .. "magrelease.ogg", t = 17 / 60 },
|
||||
{ s = path .. "magout.ogg", t = 26 / 60 },
|
||||
{ s = path .. "magin.ogg", t = 45 / 60 },
|
||||
{ s = rottle, t = 55 / 60 },
|
||||
{ s = common .. "magpouch_replace_small.ogg", t = 80 / 60 },
|
||||
{ s = path .. "grab.ogg", t = 110 / 60 },
|
||||
},
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_PISTOL,
|
||||
MinProgress = 1.75,
|
||||
Time = 75 / 30,
|
||||
LastClip1OutTime = 0.76,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKEaseIn = 0.1,
|
||||
LHIKEaseOut = 0.55,
|
||||
LHIKOut = 0.7,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = common .. "magrelease.ogg", t = 7 / 60 },
|
||||
{ s = path .. "magout.ogg", t = 16 / 60 },
|
||||
{ s = rottle, t = 10 / 60 },
|
||||
{ s = common .. "magpouch_pull_small.ogg", t = 29 / 60 },
|
||||
{ s = common .. "pistol_magdrop.ogg", t = 40 / 60 },
|
||||
{ s = rottle, t = 55 / 60 },
|
||||
{ s = path .. "magin.ogg", t = 64 / 60 },
|
||||
{ s = rottle, t = 90 / 60 },
|
||||
{ s = path .. "slidedrop.ogg", t = 94 / 60 },
|
||||
{ s = path .. "grab.ogg", t = 125 / 60 },
|
||||
},
|
||||
},
|
||||
|
||||
-- Jam Animations --
|
||||
|
||||
["fix"] = {
|
||||
Source = "fix",
|
||||
--Time = 40 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
ShellEjectAt = 30 / 60,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = path .. "mech.ogg",t = 28 / 60}, -- Temporary
|
||||
{ s = path .. "slidedrop.ogg",t = 35 / 60},
|
||||
},
|
||||
},
|
||||
|
||||
["fix_empty"] = {
|
||||
Source = "fix_empty",
|
||||
--Time = 40 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
ShellEjectAt = 30 / 60,
|
||||
SoundTable = {
|
||||
{ s = rottle, t = 0 / 60 },
|
||||
{ s = path .. "mech.ogg",t = 28 / 60},
|
||||
},
|
||||
},
|
||||
|
||||
["idle_jammed"] = {
|
||||
Source = "idle_jam",
|
||||
-- time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
-- SoundTable = {
|
||||
-- },
|
||||
},
|
||||
|
||||
-- -- Inspecc --
|
||||
|
||||
["enter_inspect"] = {
|
||||
Source = "enter_inspect",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-pistol-04.ogg", t = 0},
|
||||
},
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "idle_inspect",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "exit_inspect",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.05},
|
||||
{s = common .. "movement-pistol-03.ogg", t = 0.1},
|
||||
{s = common .. "movement-pistol-01.ogg", t = 1},
|
||||
{s = rottle, t = 1},
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect_empty"] = {
|
||||
Source = "enter_inspect_empty",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-pistol-04.ogg", t = 0},
|
||||
},
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "idle_inspect_empty",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "exit_inspect_empty",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.05},
|
||||
{s = common .. "movement-pistol-03.ogg", t = 0.1},
|
||||
{s = common .. "movement-pistol-01.ogg", t = 1},
|
||||
{s = rottle, t = 1},
|
||||
},
|
||||
},
|
||||
["enter_inspect_jammed"] = {
|
||||
Source = "enter_inspect_jam",
|
||||
time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.1,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-pistol-04.ogg", t = 0},
|
||||
},
|
||||
},
|
||||
["idle_inspect_jammed"] = {
|
||||
Source = "idle_inspect_jam",
|
||||
time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
},
|
||||
["exit_inspect_jammed"] = {
|
||||
Source = "exit_inspect_jam",
|
||||
time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.84,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.05},
|
||||
{s = common .. "movement-pistol-03.ogg", t = 0.1},
|
||||
{s = common .. "movement-pistol-01.ogg", t = 1},
|
||||
{s = rottle, t = 1},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- ADS animation blending, thanks fesiug --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
|
||||
-- Attachments --
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp"},
|
||||
DefaultAttName = "Iron Sights",
|
||||
Bone = "vm_pivot",
|
||||
Offset = {
|
||||
vpos = Vector(-0.01, -2.3, 1.6),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"optic_rail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Slide",
|
||||
Slot = {"ur_m1911_slide"},
|
||||
DefaultAttIcon = Material("entities/att/ur_1911/slide_std.png","mips smooth"),
|
||||
DefaultAttName = "5\" Government Slide",
|
||||
},
|
||||
{
|
||||
PrintName = "Caliber",
|
||||
Slot = {"ur_m1911_caliber"},
|
||||
DefaultAttIcon = Material("entities/att/uc_bullets/45acp.png","mips smooth"),
|
||||
DefaultAttName = ".45 ACP",
|
||||
Bone = "vm_pivot",
|
||||
Offset = {
|
||||
vpos = Vector(3.07, -3.8, -27),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
DefaultFlags = {"cal_subsonic"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"muzzle"},
|
||||
Bone = "vm_barrel",
|
||||
Offset = {
|
||||
vpos = Vector(0.02, -4.4, 0.12),
|
||||
vang = Angle(0, 90, 0),
|
||||
},
|
||||
InstalledEles = {"nofh"},
|
||||
ExcludeFlags = {"barrel_annihilator"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "vm_pivot",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 4),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"tac_rail"},
|
||||
},
|
||||
{
|
||||
PrintName = "Magazine",
|
||||
Slot = {"ur_m1911_mag"},
|
||||
DefaultAttIcon = Material("entities/att/ur_1911/mag7.png","mips smooth"),
|
||||
DefaultAttName = "7-Round Mag",
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"uc_stock", "go_stock_pistol_bt"},
|
||||
VMScale = Vector(1, 1, 1),
|
||||
Bone = "vm_pivot",
|
||||
Offset = {
|
||||
vpos = Vector(0, 3, -3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
DefaultAttName = "Factory Grip",
|
||||
DefaultAttIcon = Material("entities/att/ur_1911/grip.png","mips smooth"),
|
||||
Slot = "ur_m1911_grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"FMJ\" Full Metal Jacket",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_generic.png", "mips smooth"),
|
||||
Slot = "uc_ammo",
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "vm_pivot",
|
||||
Offset = {
|
||||
vpos = Vector(0.35, -0.5, 3),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
VMScale = Vector(.75,.75,.75),
|
||||
},
|
||||
{
|
||||
PrintName = "Finish",
|
||||
Slot = {"ur_m1911_skin"},
|
||||
DefaultAttName = "Grey",
|
||||
DefaultAttIcon = Material("entities/att/ur_1911/skin.png","mips smooth"),
|
||||
FreeSlot = true,
|
||||
},
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,830 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true
|
||||
SWEP.Category = "Willard - Modern Weaponry"
|
||||
SWEP.UC_CategoryPack = "2Urban Renewal"
|
||||
SWEP.AdminOnly = false
|
||||
SWEP.UseHands = true
|
||||
|
||||
-- Muzzle and shell effects --
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellEffect = "arccw_uc_shelleffect"
|
||||
SWEP.ShellModel = "models/weapons/arccw/uc_shells/12g.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 1
|
||||
SWEP.UC_ShellColor = Color(0.7 * 255, 0.2 * 255, 0.2 * 255)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1
|
||||
SWEP.CaseEffectAttachment = 2
|
||||
SWEP.CamAttachment = 3
|
||||
|
||||
-- Fake name --
|
||||
|
||||
SWEP.PrintName = "Martello 12/70" -- Italian for "hammer"
|
||||
|
||||
-- True name --
|
||||
|
||||
SWEP.TrueName = "SPAS-12"
|
||||
|
||||
-- Trivia --
|
||||
|
||||
SWEP.Trivia_Class = "Shotgun"
|
||||
SWEP.Trivia_Desc = [[Flexible combat shotgun with the ability to toggle between manual and semi-automatic action. This "dual-mode operation" allows the weapon to cycle low pressure, less-lethal rounds that lack the energy to extract themselves.
|
||||
The weapon's attempts to reach the American civilian market may have been slowed by legal challenges, but it remains prominent in popular culture for its intimidating and tactical appearance.
|
||||
|
||||
Highly versatile, but encumbering to carry and difficult to reload. Switch to pump-action mode to tighten spread and conserve ammo.]]
|
||||
SWEP.Trivia_Manufacturer = "Iscapelli Armaments"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Hybrid"
|
||||
SWEP.Trivia_Country = "Italy"
|
||||
SWEP.Trivia_Year = 1979
|
||||
|
||||
-- Weapon slot --
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
-- Weapon's manufacturer real name --
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Luigi Franchi SpA"
|
||||
end
|
||||
|
||||
-- Viewmodel / Worldmodel / FOV --
|
||||
|
||||
SWEP.ViewModel = "models/weapons/arccw/c_ur_spas12.mdl"
|
||||
SWEP.WorldModel = "models/weapons/arccw/c_ur_spas12.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-5.8, 5, -4.5),
|
||||
ang = Angle(-12, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
-- Damage parameters --
|
||||
|
||||
SWEP.Damage = 10 -- 6 pellets to kill
|
||||
SWEP.DamageMin = 10 -- 10 pellets to kill
|
||||
SWEP.Range = 90
|
||||
SWEP.RangeMin = 6
|
||||
SWEP.Num = 8
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil
|
||||
SWEP.MuzzleVelocity = 365
|
||||
SWEP.PhysBulletMuzzleVelocity = 365
|
||||
|
||||
SWEP.HullSize = 0.25
|
||||
|
||||
SWEP.BodyDamageMults = ArcCW.UC.BodyDamageMults_Shotgun
|
||||
|
||||
-- Mag size --
|
||||
|
||||
SWEP.ChamberSize = 1
|
||||
SWEP.Primary.ClipSize = 8
|
||||
SWEP.ChamberLoadEmpty = 1
|
||||
|
||||
-- Recoil --
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 2
|
||||
|
||||
SWEP.RecoilRise = 0.24
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.MaxRecoilBlowback = 1
|
||||
SWEP.MaxRecoilPunch = 1
|
||||
|
||||
SWEP.Sway = 0.5
|
||||
|
||||
-- Firerate / Firemodes --
|
||||
|
||||
SWEP.Delay = 60 / 120
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
PrintName = "fcg.pump",
|
||||
Override_ManualAction = true,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.UC_CanManualAction = true
|
||||
SWEP.ShotgunReload = true
|
||||
SWEP.NoLastCycle = true
|
||||
|
||||
SWEP.ShootVol = 160
|
||||
SWEP.ShootPitch = 100
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.ReloadInSights = true
|
||||
|
||||
-- NPC --
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_shotgun"
|
||||
SWEP.NPCWeight = 210
|
||||
|
||||
-- Accuracy --
|
||||
|
||||
SWEP.AccuracyMOA = 45
|
||||
SWEP.HipDispersion = 325
|
||||
SWEP.MoveDispersion = 400
|
||||
SWEP.JumpDispersion = 1000
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot"
|
||||
|
||||
-- Speed multipliers --
|
||||
|
||||
SWEP.SpeedMult = 0.88
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.4
|
||||
SWEP.ShootSpeedMult = 0.75
|
||||
|
||||
-- Length --
|
||||
|
||||
SWEP.BarrelLength = 46
|
||||
SWEP.ExtraSightDist = 2
|
||||
|
||||
-- Ironsights / Customization / Poses --
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.765, -4, 1.3),
|
||||
Ang = Angle(.2, 0, 1),
|
||||
Magnification = 1.05,
|
||||
SwitchToSound = "",
|
||||
}
|
||||
|
||||
SWEP.SprintPos = Vector(-0.5, -4, -3)
|
||||
SWEP.SprintAng = Angle(3.5, 7, -20)
|
||||
|
||||
SWEP.HolsterPos = Vector(2.5, -1, -3)
|
||||
SWEP.HolsterAng = Angle(-3.5, 20, -20)
|
||||
|
||||
SWEP.ActivePos = Vector(-0.3, -3, 0.1)
|
||||
SWEP.ActiveAng = Angle(1, 1, -1)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, -2, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -30)
|
||||
|
||||
SWEP.CustomizePos = Vector(0, 0, 0)
|
||||
SWEP.CustomizeAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(3, 0, -4.5)
|
||||
|
||||
-- Firing sounds --
|
||||
|
||||
local path1 = ")weapons/arccw_ud/870/"
|
||||
local path = ")weapons/arccw_ur/spas12/"
|
||||
local common = ")/arccw_uc/common/"
|
||||
SWEP.ShootSoundSilenced = path .. "fire_supp.ogg"
|
||||
--[[SWEP.DistantShootSound = {path .. "fire-dist-01.ogg", path .. "fire-dist-02.ogg", path .. "fire-dist-03.ogg", path .. "fire-dist-04.ogg", path .. "fire-dist-05.ogg"}
|
||||
SWEP.DistantShootSoundSilenced = common .. "sup_tail.ogg"]]
|
||||
SWEP.ShootDrySound = common .. "manual_trigger.ogg"
|
||||
|
||||
SWEP.ShootSound = {
|
||||
path .. "fire-01.ogg",
|
||||
path .. "fire-02.ogg",
|
||||
path .. "fire-03.ogg",
|
||||
path .. "fire-04.ogg",
|
||||
path .. "fire-05.ogg",
|
||||
path .. "fire-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
path .. "fire-dist-01.ogg",
|
||||
path .. "fire-dist-02.ogg",
|
||||
path .. "fire-dist-03.ogg",
|
||||
path .. "fire-dist-04.ogg",
|
||||
path .. "fire-dist-05.ogg",
|
||||
}
|
||||
|
||||
local tail = ")/arccw_uc/common/12ga/"
|
||||
|
||||
SWEP.ShootSoundSilenced = {
|
||||
tail .. "fire-sup-01.ogg",
|
||||
tail .. "fire-sup-02.ogg",
|
||||
tail .. "fire-sup-03.ogg",
|
||||
tail .. "fire-sup-04.ogg",
|
||||
tail .. "fire-sup-05.ogg",
|
||||
tail .. "fire-sup-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoors = {
|
||||
tail .. "fire-dist-12ga-pasg-ext-01.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-02.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-03.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-04.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-05.ogg",
|
||||
tail .. "fire-dist-12ga-pasg-ext-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsSilenced = {
|
||||
common .. "sup-tail-01.ogg",
|
||||
common .. "sup-tail-02.ogg",
|
||||
common .. "sup-tail-03.ogg",
|
||||
common .. "sup-tail-04.ogg",
|
||||
common .. "sup-tail-05.ogg",
|
||||
common .. "sup-tail-06.ogg",
|
||||
common .. "sup-tail-07.ogg",
|
||||
common .. "sup-tail-08.ogg",
|
||||
common .. "sup-tail-09.ogg",
|
||||
common .. "sup-tail-10.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundIndoorsSilenced = {
|
||||
common .. "fire-dist-int-pistol-light-01.ogg",
|
||||
common .. "fire-dist-int-pistol-light-02.ogg",
|
||||
common .. "fire-dist-int-pistol-light-03.ogg",
|
||||
common .. "fire-dist-int-pistol-light-04.ogg",
|
||||
common .. "fire-dist-int-pistol-light-05.ogg",
|
||||
common .. "fire-dist-int-pistol-light-06.ogg"
|
||||
}
|
||||
SWEP.DistantShootSoundOutdoorsVolume = 1
|
||||
SWEP.DistantShootSoundIndoorsVolume = 1
|
||||
SWEP.Hook_AddShootSound = ArcCW.UC.InnyOuty
|
||||
|
||||
-- Animations --
|
||||
|
||||
SWEP.Hook_Think = ArcCW.UC.ADSReload
|
||||
|
||||
SWEP.Hook_TranslateAnimation = function(wep,anim)
|
||||
if wep:GetCurrentFiremode().Override_ManualAction and anim == "idle_empty" then
|
||||
return "idle_empty_manual"
|
||||
end
|
||||
end
|
||||
SWEP.Hook_SelectFireAnimation = function(wep,data)
|
||||
if wep:GetCurrentFiremode().Override_AmmoPerShot == 2 then
|
||||
return "fire_2bst"
|
||||
elseif wep:GetCurrentFiremode().Override_ManualAction then
|
||||
return "fire_manual"
|
||||
end
|
||||
end
|
||||
SWEP.Hook_SelectReloadAnimation = function(wep,curanim)
|
||||
if wep:GetCurrentFiremode().Override_ManualAction and curanim == "sgreload_start_empty" then
|
||||
return "sgreload_start_empty_manual"
|
||||
end
|
||||
end
|
||||
|
||||
local ratel = {common .. "rattle1.ogg", common .. "rattle2.ogg", common .. "rattle3.ogg"}
|
||||
local rottle = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}
|
||||
local rutle = {common .. "movement-shotgun-01.ogg",common .. "movement-shotgun-02.ogg",common .. "movement-shotgun-03.ogg",common .. "movement-shotgun-04.ogg"}
|
||||
local shellin = {path .. "shell-insert-01.ogg", path .. "shell-insert-02.ogg", path .. "shell-insert-03.ogg", path .. "shell-insert-04.ogg", path .. "shell-insert-05.ogg", path .. "shell-insert-06.ogg", path .. "shell-insert-07.ogg", path .. "shell-insert-08.ogg", path .. "shell-insert-09.ogg", path .. "shell-insert-10.ogg", path .. "shell-insert-11.ogg", path .. "shell-insert-12.ogg"}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["idle_empty"] = {
|
||||
Source = "idle_empty_semi",
|
||||
},
|
||||
["idle_empty_manual"] = {
|
||||
Source = "idle_empty",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
--Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["draw_empty"] = {
|
||||
Source = "draw", -- draw_empty
|
||||
--Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.DrawSounds,
|
||||
},
|
||||
["holster"] = {
|
||||
Source = "holster",
|
||||
--Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["holster_empty"] = {
|
||||
Source = "holster", -- holster_empty
|
||||
--Time = 20 / 30,
|
||||
SoundTable = ArcCW.UC.HolsterSounds,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "fire_semi",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0, v = 0.25 }},
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "fire_semi",
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
},
|
||||
["fire_2bst"] = {
|
||||
Source = "fire_semi",
|
||||
Time = 35 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {{ s = {path .. "mech-01.ogg", path .. "mech-02.ogg", path .. "mech-03.ogg", path .. "mech-04.ogg", path .. "mech-05.ogg", path .. "mech-06.ogg"}, t = 0 }},
|
||||
MinProgress = 0.4
|
||||
},
|
||||
["fire_manual"] = { -- No bolt cycling
|
||||
Source = "fire_pump",
|
||||
Time = 23 / 25,--30,
|
||||
MinProgress = 0.3,
|
||||
ShellEjectAt = false,
|
||||
SoundTable = {{ s = common .. "manual_trigger.ogg", t = 0}},
|
||||
},
|
||||
["cycle"] = {
|
||||
Source = "cycle",
|
||||
Time = 30 / 30,
|
||||
ShellEjectAt = 0.1,
|
||||
MinProgress = 0.35,
|
||||
SoundTable = {
|
||||
{s = path .. "forearm_back.ogg", t = 0},
|
||||
{s = path1 .. "eject.ogg", t = 0.1},
|
||||
{s = path .. "forearm_forward.ogg", t = 0.2}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["unjam"] = {
|
||||
Source = "cycle",
|
||||
Time = 30 / 30,
|
||||
ShellEjectAt = 0.01,
|
||||
MinProgress = .25,
|
||||
SoundTable = {
|
||||
{s = path .. "forearm_back.ogg", t = 0},
|
||||
{s = path1 .. "eject.ogg", t = 0.1},
|
||||
{s = path .. "forearm_forward.ogg", t = 0.2}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_empty"] = {
|
||||
Source = "fire_empty_semi", -- fire_empty
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path1 .. "eject.ogg", t = 0}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["fire_iron_empty"] = {
|
||||
Source = "fire_empty_semi", -- fire_empty
|
||||
Time = 23 / 25,--30,
|
||||
ShellEjectAt = 0.01,
|
||||
SoundTable = {
|
||||
{s = path1 .. "eject.ogg", t = 0}, -- Not temporary
|
||||
},
|
||||
},
|
||||
["sgreload_start"] = {
|
||||
Source = "sgreload_start",
|
||||
Time = 25 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = path .. "turn.ogg", t = 0}, -- Temporary
|
||||
{s = rottle, t = 0.1},
|
||||
{s = path .. "grab.ogg", t = 0.15},
|
||||
}
|
||||
},
|
||||
["sgreload_start_fold"] = {
|
||||
Source = "sgreload_start_fold",
|
||||
Time = 25 / 30,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = path .. "turn.ogg", t = 0}, -- Temporary
|
||||
{s = rottle, t = 0.1},
|
||||
{s = path .. "grab.ogg", t = 0.15},
|
||||
}
|
||||
},
|
||||
["sgreload_start_empty"] = {
|
||||
Source = "sgreload_start_empty_semi",
|
||||
Time = 80 / 30,
|
||||
-- MinProgress = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
ShellEjectAt = false,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "breechload.ogg", t = .4},
|
||||
{s = path .. "breechclose.ogg", t = 1}, -- Temporary
|
||||
{s = path .. "turn.ogg", t = 1.4}, -- Temporary
|
||||
{s = rottle, t = 1.5},
|
||||
{s = path .. "grab.ogg", t = 1.9},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_start_empty_fold"] = {
|
||||
Source = "sgreload_start_empty_semi_fold",
|
||||
Time = 80 / 30,
|
||||
-- MinProgress = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
ShellEjectAt = false,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = path .. "breechload.ogg", t = .4},
|
||||
{s = path .. "breechclose.ogg", t = 1}, -- Temporary
|
||||
{s = path .. "turn.ogg", t = 1.4}, -- Temporary
|
||||
{s = rottle, t = 1.5},
|
||||
{s = path .. "grab.ogg", t = 1.9},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_start_empty_manual"] = {
|
||||
Source = "sgreload_start_empty",
|
||||
Time = 85 / 30,
|
||||
MinProgress = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
ShellEjectAt = .1,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = path .. "forearm_back.ogg", t = 0},
|
||||
{s = path1 .. "eject.ogg", t = 0.1},
|
||||
{s = rottle, t = .2},
|
||||
{s = path .. "breechload.ogg", t = .7},
|
||||
{s = path .. "forearm_forward.ogg", t = 1.6},
|
||||
{s = path .. "turn.ogg", t = 1.4}, -- Temporary
|
||||
{s = rottle, t = 1.5},
|
||||
{s = path .. "grab.ogg", t = 2.0},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_start_empty_manual_fold"] = {
|
||||
Source = "sgreload_start_empty_fold",
|
||||
Time = 85 / 30,
|
||||
MinProgress = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0,
|
||||
TPAnimStartTime = 0.5,
|
||||
ShellEjectAt = .1,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
SoundTable = {
|
||||
{s = path .. "forearm_back.ogg", t = 0},
|
||||
{s = path1 .. "eject.ogg", t = 0.1},
|
||||
{s = rottle, t = .2},
|
||||
{s = path .. "breechload.ogg", t = .7},
|
||||
{s = path .. "forearm_forward.ogg", t = 1.6},
|
||||
{s = path .. "turn.ogg", t = 1.4}, -- Temporary
|
||||
{s = rottle, t = 1.5},
|
||||
{s = path .. "grab.ogg", t = 2.0},
|
||||
},
|
||||
ForceEmpty = true,
|
||||
},
|
||||
["sgreload_insert"] = {
|
||||
Source = "sgreload_insert",
|
||||
Time = 18 / 30,
|
||||
MinProgress = 0.24,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = shellin, t = 0},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.05},
|
||||
},
|
||||
},
|
||||
["sgreload_insert_fold"] = {
|
||||
Source = "sgreload_insert_fold",
|
||||
Time = 18 / 30,
|
||||
MinProgress = 0.24,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0,
|
||||
SoundTable = {
|
||||
{s = shellin, t = 0},
|
||||
{s = {common .. "cloth_2.ogg", common .. "cloth_3.ogg", common .. "cloth_4.ogg", common .. "cloth_6.ogg", common .. "rattle.ogg"}, t = 0.05},
|
||||
},
|
||||
},
|
||||
["sgreload_finish"] = {
|
||||
Source = "sgreload_finish",
|
||||
Time = 45 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.6,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.8,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.2},
|
||||
{s = path .. "return.ogg", t = 0.475}, -- Temporary
|
||||
{s = common .. "shoulder.ogg", t = 0.55},
|
||||
},
|
||||
},
|
||||
["sgreload_finish_fold"] = {
|
||||
Source = "sgreload_finish_fold",
|
||||
Time = 45 / 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKEaseOut = 0.3,
|
||||
LHIKOut = 0.6,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
TPAnimStartTime = 0.8,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0.2},
|
||||
{s = path .. "return.ogg", t = 0.475}, -- Temporary
|
||||
{s = common .. "shoulder.ogg", t = 0.55},
|
||||
},
|
||||
},
|
||||
|
||||
["enter_inspect"] = {
|
||||
Source = "inspect_enter",
|
||||
-- time = 35 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 2.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-shotgun-01.ogg", t = 0.1},
|
||||
},
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
Source = "inspect_loop",
|
||||
-- time = 72 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
Source = "inspect_exit",
|
||||
-- time = 66 / 60,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
SoundTable = {
|
||||
{s = common .. "movement-shotgun-02.ogg", t = 0.3},
|
||||
{s = rottle, t = 0.25},
|
||||
{s = rottle, t = 1.2},
|
||||
{s = common .. "movement-shotgun-04.ogg", t = 1.3},
|
||||
},
|
||||
},
|
||||
["enter_inspect_empty"] = { -- Animations needed!
|
||||
Source = "inspect_enter",
|
||||
-- time = 35 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 2.5,
|
||||
SoundTable = {
|
||||
{s = rottle, t = 0},
|
||||
{s = common .. "movement-shotgun-01.ogg", t = 0.1},
|
||||
},
|
||||
},
|
||||
["idle_inspect_empty"] = {
|
||||
Source = "inspect_loop",
|
||||
-- time = 72 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
},
|
||||
["exit_inspect_empty"] = {
|
||||
Source = "inspect_exit",
|
||||
-- time = 66 / 60,
|
||||
LHIK = false,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 999, -- maybe im dumb
|
||||
SoundTable = {
|
||||
{s = common .. "movement-shotgun-02.ogg", t = 0.3},
|
||||
{s = rottle, t = 0.25},
|
||||
{s = rottle, t = 1.2},
|
||||
{s = common .. "movement-shotgun-04.ogg", t = 1.3},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
--[1] = "1014_shell1",
|
||||
}
|
||||
|
||||
-- Bodygroups --
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["uc_manualonly"] = {
|
||||
Override_Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
PrintName = "fcg.pump",
|
||||
Override_ManualAction = true,
|
||||
Mult_AccuracyMOA = 0.8,
|
||||
Mult_HipDispersion = 0.8,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
},
|
||||
},
|
||||
Override_Firemodes_Priority = 10,
|
||||
},
|
||||
["uc_spas_slam"] = {
|
||||
RequireFlags = {"freeman", "needsmanual"},
|
||||
Override_Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
PrintName = "fcg.slam",
|
||||
Override_ManualAction = true,
|
||||
Mult_AccuracyMOA = 0.8,
|
||||
Mult_HipDispersion = 0.8,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
},
|
||||
},
|
||||
Override_Firemodes_Priority = 15,
|
||||
},
|
||||
["ur_spas12_barrel_short"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
AttPosMods = {[3] = {
|
||||
vpos = Vector(-0.02, 22.25, -0.7),
|
||||
}}
|
||||
},
|
||||
|
||||
["ur_spas12_stock_full"] = {
|
||||
VMBodygroups = {
|
||||
{ind = 3, bg = 1},
|
||||
}
|
||||
},
|
||||
["ur_spas12_stock_in"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 2}}
|
||||
},
|
||||
["ur_spas12_stock_none"] = {
|
||||
VMBodygroups = {{ind = 3, bg = 3}}
|
||||
},
|
||||
|
||||
["ur_spas12_tube_reduced"] = {
|
||||
VMBodygroups = {{ind = 2, bg = 1}}
|
||||
},
|
||||
|
||||
["rail_classic"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 2}}
|
||||
},
|
||||
["rail_modern"] = {
|
||||
VMBodygroups = {{ind = 4, bg = 1}},
|
||||
AttPosMods = {[1] = {
|
||||
SlideAmount = {
|
||||
vmin = Vector(0, 0.5, 0.65),
|
||||
vmax = Vector(0, 2.5, 0.65)
|
||||
},
|
||||
}}
|
||||
},
|
||||
["rail_none_fix"] = {
|
||||
VMBodygroups = {{ind = 8, bg = 0}}
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.DefaultBodygroups = "00000000"
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "spas_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1, 0.4),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
CorrectiveAng = Angle(180,0,0),
|
||||
SlideAmount = {
|
||||
vmin = Vector(0, -2, 0.4),
|
||||
vmax = Vector(0, 1, 0.4)
|
||||
},
|
||||
InstalledEles = {"rail_classic"},
|
||||
DefaultEles = {"rail_none_fix"},
|
||||
ExcludeFlags = {"spas12_foldstock"}
|
||||
},
|
||||
{
|
||||
PrintName = "Barrel",
|
||||
DefaultAttName = "21.5\" Special Purpose Barrel", --16\" M4 Super 90 SBS Barrel
|
||||
DefaultAttIcon = Material("entities/att/ur_spas/barrel_std.png", "smooth mips"),
|
||||
Slot = "ur_spas12_barrel",
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = {"choke", "muzzle_shotgun"},
|
||||
Bone = "spas_parent",
|
||||
Offset = {
|
||||
vpos = Vector(-0.02, 26.9, -0.6),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
ExcludeFlags = {"nomuzzle"}
|
||||
},
|
||||
-- {
|
||||
-- PrintName = "Underbarrel",
|
||||
-- Slot = {"foregrip"},
|
||||
-- Bone = "pump",
|
||||
-- MergeSlots = {13},
|
||||
-- Offset = {
|
||||
-- vpos = Vector(0, -5, .1),
|
||||
-- vang = Angle(90, -90, -90),
|
||||
-- },
|
||||
-- },
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = {"tac_pistol"},
|
||||
Bone = "spas_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0, 20, -2.3),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = {"ur_spas12_stock"},
|
||||
DefaultAttName = "Extended Stock",
|
||||
DefaultAttIcon = Material("entities/att/ur_spas/stock_std.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Tube Type",
|
||||
Slot = {"ur_spas12_tube"},
|
||||
DefaultAttName = "8 Shell Tube",
|
||||
DefaultAttIcon = Material("entities/att/ur_spas/magbig.png", "smooth mips"),
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
DefaultAttName = "\"BUCK\" #00 Buckshot",
|
||||
DefaultAttIcon = Material("entities/att/arccw_uc_ammo_shotgun_generic.png", "mips smooth"),
|
||||
Slot = {"ud_ammo_shotgun"},
|
||||
},
|
||||
{
|
||||
PrintName = "Powder Load",
|
||||
Slot = "uc_powder",
|
||||
DefaultAttName = "Standard Load"
|
||||
},
|
||||
{
|
||||
PrintName = "Training Package",
|
||||
Slot = "uc_tp",
|
||||
DefaultAttName = "Basic Training"
|
||||
},
|
||||
{
|
||||
PrintName = "Internals",
|
||||
Slot = "uc_fg", -- Fire group
|
||||
DefaultAttName = "Standard Internals"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = {"charm", "fml_charm", "ur_spas12_charm"},
|
||||
FreeSlot = true,
|
||||
Bone = "spas_parent",
|
||||
Offset = {
|
||||
vpos = Vector(0.6, .5, -1.5),
|
||||
vang = Angle(90, -90, -90),
|
||||
},
|
||||
},
|
||||
-- {
|
||||
-- PrintName = "M203 slot",
|
||||
-- Slot = "uc_ubgl",
|
||||
-- Bone = "pump",
|
||||
-- Offset = {
|
||||
-- vpos = Vector(0, -5, 1.25),
|
||||
-- vang = Angle(90, -90, -90),
|
||||
-- },
|
||||
-- Hidden = true,
|
||||
-- },
|
||||
}
|
||||
|
||||
local lookup_barrel = {
|
||||
default = 1,
|
||||
ur_spas12_comp = 1,
|
||||
ur_spas12_barrel_short = 0,
|
||||
}
|
||||
|
||||
local lookup_tube = {
|
||||
default = 1,
|
||||
ur_spas12_tube_reduced = 0,
|
||||
}
|
||||
|
||||
SWEP.Hook_ExtraFlags = function(wep, data)
|
||||
|
||||
local barrel = wep.Attachments[2].Installed and lookup_barrel[wep.Attachments[2].Installed] or lookup_barrel["default"]
|
||||
local tube = wep.Attachments[7].Installed and lookup_tube[wep.Attachments[7].Installed] or lookup_tube["default"]
|
||||
|
||||
if barrel < tube then
|
||||
table.insert(data, "nomuzzleblocking")
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,292 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "AR2"
|
||||
SWEP.TrueName = "OSIPR"
|
||||
SWEP.Trivia_Class = "Assault Rifle"
|
||||
SWEP.Trivia_Desc = "Dark Energy powered assault rifle manufactured by the Combine. The OSIPR is essentially a Combine variant of current assault rifles, commonly issued to Overwatch Soldiers and Overwatch Elites."
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
SWEP.Trivia_Calibre = "Dark Energy"
|
||||
SWEP.Trivia_Mechanism = "Thumper and Capsules"
|
||||
SWEP.Trivia_Country = "Bulgaria"
|
||||
SWEP.Trivia_Year = 2020
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/ArcCW/c_irifle.mdl"
|
||||
SWEP.WorldModel = "models/weapons/ArcCW/w_irifle.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.Damage = 20
|
||||
SWEP.DamageMin = 20 -- damage done at maximum range
|
||||
SWEP.Range = 250 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1100 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.Tracer = AR2Tracer -- override tracer effect
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 45
|
||||
SWEP.ReducedClipSize = 15
|
||||
|
||||
SWEP.Recoil = 0.45
|
||||
SWEP.RecoilSide = 0.55
|
||||
SWEP.RecoilRise = 1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 550 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 200
|
||||
|
||||
SWEP.AccuracyMOA = 5 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 95 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 225
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "type2" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 115 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "weapons/ArcCW/fire1.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_silencer_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw/ak47/ak47-1-distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellModel = "models/weapons/arccw/irifleshell.mdl"
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.33
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-5.131, -9.03, 2.267),
|
||||
Ang = Angle(-0.066, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 3, 0)
|
||||
SWEP.ActiveAng = Angle(2, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(0.532, -6, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["extendedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 1}},
|
||||
WMBodygroups = {{ind = 1, bg = 1}},
|
||||
},
|
||||
["reducedmag"] = {
|
||||
VMBodygroups = {{ind = 1, bg = 2}},
|
||||
WMBodygroups = {{ind = 1, bg = 2}},
|
||||
},
|
||||
["mount"] = {
|
||||
VMElements = {
|
||||
{
|
||||
Model = "models/weapons/arccw/atts/mount_ak.mdl",
|
||||
Bone = "ar2_weapon",
|
||||
Scale = Vector(-1, -1, 1),
|
||||
Offset = {
|
||||
pos = Vector(4, 3.75, 0),
|
||||
ang = Angle(180, 180, -90)
|
||||
}
|
||||
}
|
||||
},
|
||||
WMElements = {
|
||||
{
|
||||
Model = "models/weapons/arccw/atts/mount_ak.mdl",
|
||||
Scale = Vector(-1, -1, 1),
|
||||
Offset = {
|
||||
pos = Vector(5.714, 0.73, -6),
|
||||
ang = Angle(171, 0, -1)
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
["fcg_semi"] = {
|
||||
TrueNameChange = "Vepr-KM",
|
||||
NameChange = "Wasp-2",
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic", "optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "ar2_weapon", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 3.75, 1), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(180, 180, -90),
|
||||
wpos = Vector(7, 0, -7), -- offset that the attachment will be relative to the bone
|
||||
wang = Angle(170, 180, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "stock",
|
||||
DefaultAttName = "Standard Stock"
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "ar2_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(15, 0, 0.5), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(15.625, -0.1, -6.298),
|
||||
wang = Angle(-8.829, -0.556, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"ubgl", "foregrip"},
|
||||
Bone = "ar2_weapon",
|
||||
Offset = {
|
||||
vpos = Vector(-5, 1, 1),
|
||||
vang = Angle(180, 180, -40),
|
||||
wpos = Vector(5, 1.1, -6.298),
|
||||
wang = Angle(-8.829, -0.556, -90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.4,
|
||||
SoundTable = {{s = "weapons/arccw/ak47/ak47_draw.wav", t = 0}},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"fire1", "fire2", "fire3", "fire4"},
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = {"fire1", "fire2", "fire3", "fire4"},
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
SoundTable = {{s = "weapons/ArcCW/npc_ar2_reload.wav", t = 0}},
|
||||
Time = 2,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reloadempty",
|
||||
SoundTable = {{s = "weapons/ArcCW/npc_ar2_reload.wav", t = 0}},
|
||||
Time = 2,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,254 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Overwatch Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Pulse SMG"
|
||||
SWEP.TrueName = "Pulse SMG"
|
||||
SWEP.Trivia_Class = "Submachine Gun"
|
||||
SWEP.Trivia_Desc = "A predecessor to the Pulse Rifle, commonly used by Combine Grunts."
|
||||
SWEP.Trivia_Manufacturer = "The Combine"
|
||||
SWEP.Trivia_Calibre = "Dark Energy"
|
||||
SWEP.Trivia_Mechanism = "Thumper and Capsules"
|
||||
SWEP.Trivia_Country = "Bulgaria"
|
||||
SWEP.Trivia_Year = 2015
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then
|
||||
SWEP.PrintName = SWEP.TrueName
|
||||
SWEP.Trivia_Manufacturer = "Overwatch"
|
||||
end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_ipistol.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_ipistol.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.MirrorVMWM = nil -- Copy the viewmodel, along with all its attachments, to the worldmodel. Super convenient!
|
||||
SWEP.MirrorWorldModel = nil -- Use this to set the mirrored viewmodel to a different model, without any floating speedloaders or cartridges you may have. Needs MirrorVMWM
|
||||
SWEP.HideViewmodel = nil
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(3, 0, 0),
|
||||
ang = Angle(0, 0, 180),
|
||||
bone = "ValveBiped.Bip01_R_Hand",
|
||||
scale = 1
|
||||
}
|
||||
|
||||
SWEP.Damage = 15
|
||||
SWEP.DamageMin = 15 -- damage done at maximum range
|
||||
SWEP.Range = 160 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1100 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.Tracer = AR2Tracer -- override tracer effect
|
||||
SWEP.TracerNum = 1 -- tracer every X
|
||||
SWEP.TracerCol = Color(255, 25, 25)
|
||||
SWEP.TracerWidth = 3
|
||||
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 20 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 45
|
||||
SWEP.ReducedClipSize = 15
|
||||
|
||||
SWEP.Recoil = 0.1
|
||||
SWEP.RecoilSide = 0.45
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.Delay = 60 / 600
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 200
|
||||
|
||||
SWEP.AccuracyMOA = 14 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 300 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 350
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
SWEP.MagID = "type2" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 103 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "psmg_fire.wav"
|
||||
SWEP.ShootSoundSilenced = "weapons/arccw/m4a1/m4a1_silencer_01.wav"
|
||||
SWEP.DistantShootSound = "weapons/arccw/ak47/ak47-1-distant.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_1"
|
||||
SWEP.ShellModel = "models/weapons/arccw/irifleshell.mdl"
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.25
|
||||
SWEP.VisualRecoilMult = 1
|
||||
SWEP.RecoilRise = 1
|
||||
|
||||
SWEP.BulletBones = { -- the bone that represents bullets in gun/mag
|
||||
-- [0] = "bulletchamber",
|
||||
-- [1] = "bullet1"
|
||||
}
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-4.651, -5.829, -0.551),
|
||||
Ang = Angle(-0.066, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(3.216, 0.402, -3.82)
|
||||
SWEP.HolsterAng = Vector(-9.146, 20.402, -26.734)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Stock",
|
||||
Slot = "stock",
|
||||
DefaultAttName = "Standard Stock"
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "ipistol",
|
||||
Offset = {
|
||||
vpos = Vector(0.5, 3, -6), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(-90, 0, 0),
|
||||
wpos = Vector(21, 1.1, -2),
|
||||
wang = Angle(-8.829, -0.556, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"ubgl", "foregrip"},
|
||||
Bone = "ipistol",
|
||||
Offset = {
|
||||
vpos = Vector(-0, 2, -6),
|
||||
vang = Angle(270, 0, -90),
|
||||
wpos = Vector(17, 1.1, -3),
|
||||
wang = Angle(90, 90, -90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1.3,
|
||||
SoundTable = {{s = "weapons/arccw/ak47/ak47_draw.wav", t = 0}},
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "draw",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"attack1"},
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = {"fire1", "fire2", "fire3", "fire4"},
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
SoundTable = {{s = "psmg_reload.wav", t = 0}},
|
||||
Time = 1.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
SoundTable = {{s = "psmg_reload.wav", t = 0}},
|
||||
Time = 1.5,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Framerate = 37,
|
||||
Checkpoints = {28, 38, 69},
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,383 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Bastard Gun"
|
||||
SWEP.Trivia_Class = "Submachine Gun"
|
||||
SWEP.Trivia_Desc = "Submachinegun, 5.45 caliber. It's got poor accuracy and overheats like hell. That's why they call it a Bastard gun, hahah."
|
||||
SWEP.Trivia_Manufacturer = "Unknown"
|
||||
SWEP.Trivia_Calibre = "5.45x39mm"
|
||||
SWEP.Trivia_Mechanism = "Russian Magic"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_BastardGun.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_BastardGun.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 9
|
||||
SWEP.DamageMin = 9 -- damage done at maximum range
|
||||
SWEP.Range = 75 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 250 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 300
|
||||
|
||||
SWEP.Recoil = 0.200
|
||||
SWEP.RecoilSide = 0.100
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 650 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_smg1"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 14 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 325 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ump" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 110 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.FirstShootSound = "BastardGun/Shoot.wav"
|
||||
SWEP.ShootSound = "BastardGun/Shoot.wav"
|
||||
SWEP.ShootSoundSilenced = "BastardGun/Shoots.wav"
|
||||
SWEP.DistantShootSound = "BastardGun/Shoot.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_smg"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellScale = 1.25
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.95
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.300
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-7.7, -9.849, 1.6),
|
||||
Ang = Angle(-0.201, -0.851, -1.4),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 2, -1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, 0, -1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlightpete"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-15, 8, -4),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "BastardGun",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.4, 14),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"rail"},
|
||||
VMScale = Vector(1.25, 1.25, 1.25),
|
||||
CorrectiveAng = Angle(-0.5, 0, 0),
|
||||
CorrectivePos = Vector(0, 0, 0)
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "foregrip",
|
||||
Bone = "BastardGun",
|
||||
DefaultAttName = "Standard Foregrip",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0, 14),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ubrms"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "BastardGun",
|
||||
Offset = {
|
||||
vpos = Vector(-1.201, -2.3, 18),
|
||||
vang = Angle(90.5, 0, 0),
|
||||
},
|
||||
InstalledEles = {"tacms"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "BastardGun",
|
||||
Offset = {
|
||||
vpos = Vector(0, -2.25, 24),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "go_ammo",
|
||||
DefaultAttName = "Standard Ammo"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "go_perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skinpete"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "BastardGun", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.8, -1.3, 0), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Jamming = true
|
||||
SWEP.HeatCapacity = 65
|
||||
SWEP.HeatDissipation = 12
|
||||
SWEP.HeatLockout = true
|
||||
SWEP.HeatDelayTime = 3.5
|
||||
SWEP.HeatFix = true
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet1",
|
||||
[2] = "Bullet2",
|
||||
[3] = "Bullet3",
|
||||
[4] = "Bullet4",
|
||||
[5] = "Bullet5",
|
||||
[6] = "Bullet6",
|
||||
[7] = "Bullet7",
|
||||
[8] = "Bullet8",
|
||||
[9] = "Bullet9",
|
||||
[10] = "Bullet10",
|
||||
[11] = "Bullet11",
|
||||
[12] = "Bullet12",
|
||||
[13] = "Bullet13",
|
||||
[14] = "Bullet14",
|
||||
[15] = "Bullet15",
|
||||
[16] = "Bullet16",
|
||||
[17] = "Bullet17",
|
||||
[18] = "Bullet18",
|
||||
[19] = "Bullet19",
|
||||
[20] = "Bullet20",
|
||||
[21] = "Bullet21",
|
||||
[22] = "Bullet22",
|
||||
[23] = "Bullet23",
|
||||
[24] = "Bullet24",
|
||||
[25] = "Bullet25",
|
||||
[26] = "Bullet26",
|
||||
[27] = "Bullet27",
|
||||
[28] = "Bullet28",
|
||||
[29] = "Bullet29",
|
||||
[30] = "Bullet30",
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fix"] = {
|
||||
Source = "fix",
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.25,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reloadpartial",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 2.1,
|
||||
LHIKEaseOut = 0.3,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {16, 30, 55},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.4,
|
||||
LHIKOut = 2.5,
|
||||
LHIKEaseOut = 0.3,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "BG.BoltPull",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/BoltPull.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.Clip",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/Clip.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.Hit",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/Hit.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.ClipIn",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/ClipIn.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.ClipIn2",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/ClipIn2.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.ClipOut",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/ClipOut.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.ClipOut1",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/ClipOut1.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.ClipOut2",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/ClipOut2.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.Fix",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/Fix.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "BG.Fix1",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "BastardGun/Fix1.wav"
|
||||
})
|
||||
@@ -0,0 +1,318 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Duplet"
|
||||
SWEP.Trivia_Class = "Shotgun"
|
||||
SWEP.Trivia_Desc = "The 12-gauge shotgun is one of the best close combat weapons ever. A blast from both of its barrels can kill almost any mutant on the spot."
|
||||
SWEP.Trivia_Manufacturer = "Unknown"
|
||||
SWEP.Trivia_Calibre = "12 Gauge"
|
||||
SWEP.Trivia_Mechanism = "Break-Action"
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_duplet.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_duplet.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.Damage = 7
|
||||
SWEP.DamageMin = 7 -- damage done at maximum range
|
||||
SWEP.Range = 50 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BUCKSHOT
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1100 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 2 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 2
|
||||
SWEP.ReducedClipSize = 1
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 1
|
||||
SWEP.MaxRecoilBlowback = 2
|
||||
|
||||
SWEP.AccuracyMOA = 45 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 600 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 150
|
||||
|
||||
SWEP.Delay = 60 / 600 -- 60 / RPM.
|
||||
SWEP.Num = 8 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
PrintName = "SNGL",
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
PrintName = "BOTH",
|
||||
Mode = -2,
|
||||
RunawayBurst = true,
|
||||
Override_ShotRecoilTable = {
|
||||
[1] = 0.25
|
||||
}
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = {"weapon_annabelle", "weapon_shotgun"}
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.Primary.Ammo = "buckshot" -- what ammo type the gun uses
|
||||
|
||||
SWEP.ShootVol = 120 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.FirstShootSound = "Duplet/Shoot.wav"
|
||||
SWEP.ShootSound = "Duplet/Shoot1.wav"
|
||||
SWEP.DistantShootSound = "Duplet/Shoot.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_shotgun"
|
||||
SWEP.ShellModel = "models/shells/shell_12gauge.mdl"
|
||||
SWEP.ShellPitch = 100
|
||||
SWEP.ShellSounds = ArcCW.ShotgunShellSoundsTable
|
||||
SWEP.ShellScale = 1.5
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.94
|
||||
SWEP.SightedSpeedMult = 0.5
|
||||
SWEP.SightTime = 0.30
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {}
|
||||
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Buckshot1",
|
||||
[2] = "Buckshot2"
|
||||
}
|
||||
|
||||
SWEP.CaseBones = {
|
||||
[1] = "Buckshot1",
|
||||
[2] = "Buckshot2"
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN
|
||||
|
||||
SWEP.ActivePos = Vector(1, 12, -2)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-3, 3, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3.5, 2, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-5, 7.5, -4),
|
||||
ang = Angle(-15, 0, -180)
|
||||
}
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlightd"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ShootVol = 130 -- volume of shoot sound
|
||||
|
||||
SWEP.SpeedMult = 0.97
|
||||
SWEP.SightedSpeedMult = 0.80
|
||||
SWEP.SightTime = 0.225
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-7.591, -4.824, 2),
|
||||
Ang = Angle(-0.704, -3, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "shotgun"
|
||||
SWEP.HoldtypeSights = "ar2"
|
||||
|
||||
SWEP.ExtraSightDist = 5
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "Optic", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, 0.2, 2), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(13.762, 0.5, -6.102),
|
||||
wang = Angle(-15, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Choke",
|
||||
DefaultAttName = "Standard Choke",
|
||||
Slot = "choke",
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip", "style_pistol"},
|
||||
Bone = "Optic",
|
||||
Offset = {
|
||||
vpos = Vector(0, 3.635, 3.635),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(14.329, 0.8, -4.453),
|
||||
wang = Angle(-15, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Optic",
|
||||
Offset = {
|
||||
vpos = Vector(-1.5, 0.8, 3.6), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(92, 0, 180),
|
||||
wpos = Vector(20, -0.6, -7.5),
|
||||
wang = Angle(-15, -3, 90)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_shotgun"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk",
|
||||
DefaultAttName = "None"
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skind"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "Optic", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.42, 2.3, 7.8), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(18, 1.3, -5.7),
|
||||
wang = Angle(-15, 0, 180)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
Time = 1
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.5,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
SoundTable = {{s = "weapons/arccw/nova/nova_draw.wav", t = 0}},
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
SoundTable = {{s = "weapons/arccw/nova/nova_draw.wav", t = 0}},
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.4,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot_iron",
|
||||
Time = 0.4,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload_part",
|
||||
Time = 2.15,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
Checkpoints = {28, 64, 102},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LastClip1OutTime = 0.4,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
Time = 2.6,
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN,
|
||||
Checkpoints = {28, 64, 102},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LastClip1OutTime = 0.4,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_Duplet.Lever",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Duplet/Lever.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_Duplet.Load",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Duplet/Load.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_Duplet.In",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Duplet/In.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_Duplet.Out",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Duplet/Out.wav"
|
||||
})
|
||||
@@ -0,0 +1,275 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Helsing"
|
||||
SWEP.Trivia_Class = "Helsing"
|
||||
SWEP.Trivia_Desc = "A silent, revolving air gun that shoots metal bolts. Overpressurizing its tank increases power, but the extra pressure vents before long."
|
||||
SWEP.Trivia_Manufacturer = "Unknown"
|
||||
SWEP.Trivia_Calibre = "Helsing Bolt"
|
||||
SWEP.Trivia_Mechanism = "Pneumatic"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_Helsing.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_Helsing.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultSkin = 0
|
||||
|
||||
SWEP.Damage = 29
|
||||
SWEP.DamageMin = 29
|
||||
SWEP.Range = 40 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 200 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.AlwaysPhysBullet = true
|
||||
SWEP.PhysTracerProfile = 0
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.Tracer = "arccw_tracer"
|
||||
SWEP.TracerCol = Color(38, 38, 38)
|
||||
|
||||
SWEP.CanFireUnderwater = true
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 8 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 8
|
||||
SWEP.ReducedClipSize = 6
|
||||
|
||||
SWEP.Recoil = 1
|
||||
SWEP.RecoilSide = 1
|
||||
SWEP.RecoilRise = 1
|
||||
SWEP.VisualRecoilMult = 0.5
|
||||
|
||||
SWEP.Delay = 60 / 180 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = {"weapon_ar2"}
|
||||
SWEP.NPCWeight = 75
|
||||
|
||||
SWEP.AccuracyMOA = 3 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 150 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "357" -- what ammo type the gun uses
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 95 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "Helsing/Shoot.mp3"
|
||||
SWEP.ShootSoundSilenced = "Helsing/Shoot.mp3"
|
||||
SWEP.DistantShootSound = "Helsing/Shoot.mp3"
|
||||
|
||||
SWEP.MuzzleEffect = nil
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 0 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
SWEP.SightTime = 0.28
|
||||
|
||||
SWEP.SpeedMult = 0.975
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {
|
||||
[1] = "Bullet1",
|
||||
[2] = "Bullet2",
|
||||
[3] = "Bullet3",
|
||||
[4] = "Bullet4",
|
||||
[5] = "Bullet5",
|
||||
[6] = "Bullet6",
|
||||
}
|
||||
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-5.881, 0, 2.184),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 1)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.HolsterPos = Vector(5, 0, 0)
|
||||
SWEP.HolsterAng = Angle(-4, 30.016, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-3, 0, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-16.105, 7, -5.715),
|
||||
ang = Angle(-10.52, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.GuaranteeLaser = false
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Arrow1",
|
||||
[2] = "Arrow2",
|
||||
[3] = "Arrow3",
|
||||
[4] = "Arrow4",
|
||||
[5] = "Arrow5",
|
||||
[6] = "Arrow6",
|
||||
[7] = "Arrow7",
|
||||
[8] = "Arrow8",
|
||||
}
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "Helsing",
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.8, 3.5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Helsing",
|
||||
Offset = {
|
||||
vpos = Vector(-0.5, -0.601, 17.7),
|
||||
vang = Angle(89.7, 0.4, 180),
|
||||
},
|
||||
VMScale = Vector(0.7, 0.7, 0.7),
|
||||
WMScale = Vector(0.7, 0.7, 0.7),
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip"},
|
||||
Bone = "Helsing",
|
||||
Offset = {
|
||||
vpos = Vector(0, 2.599, 19),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet",
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = {"perk"}
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "Helsing",
|
||||
Offset = {
|
||||
vpos = Vector(0.37, -0.7, 2.7), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(10, 1.25, -4),
|
||||
wang = Angle(0, -4.211, 180)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw"
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
Time = 2.4,
|
||||
LastClip1OutTime = 1.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
LastClip1OutTime = 1.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "HS.Reload",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Helsing/helsingrl1.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "HS.Reload2",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Helsing/helsingrl2.wav"
|
||||
})
|
||||
|
||||
@@ -0,0 +1,330 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Kalash"
|
||||
SWEP.TrueName = "AK-74M"
|
||||
SWEP.Trivia_Class = "Assault Rifle"
|
||||
SWEP.Trivia_Desc = "The classic pre-war assault rifle. Despite being very common, it is held in very high regard in the Metro due to its reliability and performance."
|
||||
SWEP.Trivia_Manufacturer = "Izhmash"
|
||||
SWEP.Trivia_Calibre = "5.45x39mm"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 1991
|
||||
|
||||
SWEP.Slot = 2
|
||||
SWEP.UseHands = true
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then SWEP.PrintName = SWEP.TrueName end
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_kalash.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_kalash.mdl"
|
||||
SWEP.ViewModelFOV = 90
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 13
|
||||
SWEP.DamageMin = 13 -- damage done at maximum range
|
||||
SWEP.Range = 500 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 880 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 30 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 880
|
||||
|
||||
SWEP.Recoil = 0.93
|
||||
SWEP.RecoilSide = 0.65
|
||||
SWEP.RecoilRise = 0.3
|
||||
SWEP.RecoilPunch = 2
|
||||
|
||||
SWEP.Delay = 60 / 550 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 200
|
||||
|
||||
SWEP.AccuracyMOA = 10 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 750 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ak47" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "Kalash/Shoot.wav"
|
||||
SWEP.ShootSoundSilenced = "2012/shoots.wav"
|
||||
SWEP.DistantShootSound = "Kalash/Shoot.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_ak47"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 90
|
||||
SWEP.ShellScale = 1.5
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.91
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.30
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-7.9, -7.437, 1.759),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, 0, -1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlightk"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-10, 8.6, -5),
|
||||
ang = Angle(-190, 180, 0)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "AK",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Offset = {
|
||||
vpos = Vector(0, -5.2, 11),
|
||||
vang = Angle(-90, -180, 90),
|
||||
},
|
||||
InstalledEles = {"sidemount"},
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip", "ubgl"},
|
||||
Bone = "AK",
|
||||
Offset = {
|
||||
vpos = Vector(-0, -1.601, 17),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"ubrms"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "AK",
|
||||
Offset = {
|
||||
vpos = Vector(-0.601, -2.701, 12),
|
||||
vang = Angle(-90, 180, 0),
|
||||
},
|
||||
InstalledEles = {"sidemount"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "AK",
|
||||
Offset = {
|
||||
vpos = Vector(0.1, -2.651, 28.6),
|
||||
vang = Angle(-90, 180, 0),
|
||||
},
|
||||
InstalledEles = {"no_fh"}
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "go_ammo",
|
||||
DefaultAttName = "Standard Ammo"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "go_perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skink"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "AK", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.759, -2.401, 9), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet30",
|
||||
[2] = "Bullet29",
|
||||
[3] = "Bullet28",
|
||||
[4] = "Bullet27",
|
||||
[5] = "Bullet26",
|
||||
[6] = "Bullet25",
|
||||
[7] = "Bullet24",
|
||||
[8] = "Bullet23",
|
||||
[9] = "Bullet22",
|
||||
[10] = "Bullet21",
|
||||
[11] = "Bullet20",
|
||||
[12] = "Bullet19",
|
||||
[13] = "Bullet18",
|
||||
[14] = "Bullet17",
|
||||
[15] = "Bullet16",
|
||||
[16] = "Bullet15",
|
||||
[17] = "Bullet14",
|
||||
[18] = "Bullet13",
|
||||
[19] = "Bullet12",
|
||||
[20] = "Bullet11",
|
||||
[21] = "Bullet10",
|
||||
[22] = "Bullet9",
|
||||
[23] = "Bullet8",
|
||||
[24] = "Bullet7",
|
||||
[25] = "Bullet6",
|
||||
[26] = "Bullet5",
|
||||
[27] = "Bullet4",
|
||||
[28] = "Bullet3",
|
||||
[29] = "Bullet2",
|
||||
[30] = "Bullet1",
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "ak47_idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "drawfirst",
|
||||
Time = 1.5,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"shoot"},
|
||||
Time = 0.3,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shootis",
|
||||
Time = 0.1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Checkpoints = {16, 30},
|
||||
Time = 2,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LHIKEaseOut = 0.25,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload_empty",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Checkpoints = {16, 30, 55},
|
||||
Time = 3,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LHIKEaseOut = 0.25,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["enter_inspect"] = false,
|
||||
["idle_inspect"] = false,
|
||||
["exit_inspect"] = false,
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "Kalash.Bolt",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Kalash/Bolt.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Kalash.Clipout",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Kalash/Clipout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Kalash.Clipin",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Kalash/Clipin.wav"
|
||||
})
|
||||
@@ -0,0 +1,328 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Kalash2012"
|
||||
SWEP.Trivia_Class = "Assault Rifle"
|
||||
SWEP.Trivia_Desc = "At the start of World War 3, this was the best assault rifle used by the army. It is extremely sought after in the Metro due to its great performance."
|
||||
SWEP.Trivia_Manufacturer = "Unknown"
|
||||
SWEP.Trivia_Calibre = "5.45x39mm"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
|
||||
SWEP.Slot = 2
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_kalash2012.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_kalash2012.mdl"
|
||||
SWEP.ViewModelFOV = 80
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 8
|
||||
SWEP.DamageMin = 8 -- damage done at maximum range
|
||||
SWEP.Range = 500 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1050 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 50 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 1050
|
||||
|
||||
SWEP.Recoil = 0.42
|
||||
SWEP.RecoilSide = 0.65
|
||||
SWEP.RecoilRise = 0.1
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 700 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 200
|
||||
|
||||
SWEP.AccuracyMOA = 9 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 500 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 200
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ak47" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 120 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "2012/shoot.wav"
|
||||
SWEP.ShootSoundSilenced = "2012/shoots.wav"
|
||||
SWEP.DistantShootSound = "2012/shoot3.wav"
|
||||
SWEP.DistantShootSoundSilenced = "2012/shoots.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_ak47"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 90
|
||||
SWEP.ShellScale = 1.5
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.91
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.30
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-7.191, -7.5, 1.1),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, 0, -1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlight2012"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-18, 8.2, -1),
|
||||
ang = Angle(-200, 180, 0)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "2012",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Offset = {
|
||||
vpos = Vector(0.1, -5.4, 9),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"sidemount"},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "2012",
|
||||
Offset = {
|
||||
vpos = Vector(1.3, -1.201, 11),
|
||||
vang = Angle(90, 0, 0),
|
||||
},
|
||||
InstalledEles = {"sidemount"},
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "2012",
|
||||
Offset = {
|
||||
vpos = Vector(0.05, -0.9, 26.9),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
InstalledEles = {"no_fh"}
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "go_ammo",
|
||||
DefaultAttName = "Standard Ammo"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "go_perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skin2012"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "2012", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(1.399, -1.3, 3.65), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[5] = "Bullet1",
|
||||
[6] = "Bullet2",
|
||||
[7] = "Bullet3",
|
||||
[8] = "Bullet4",
|
||||
[9] = "Bullet5",
|
||||
[10] = "Bullet6",
|
||||
[11] = "Bullet7",
|
||||
[12] = "Bullet8",
|
||||
[13] = "Bullet9",
|
||||
[14] = "Bullet10",
|
||||
[15] = "Bullet11",
|
||||
[16] = "Bullet12",
|
||||
[17] = "Bullet13",
|
||||
[18] = "Bullet14",
|
||||
[19] = "Bullet15",
|
||||
[20] = "Bullet16",
|
||||
[21] = "Bullet17",
|
||||
[22] = "Bullet18",
|
||||
[23] = "Bullet19",
|
||||
[24] = "Bullet20",
|
||||
[25] = "Bullet21",
|
||||
[26] = "Bullet22",
|
||||
[27] = "Bullet23",
|
||||
[28] = "Bullet24",
|
||||
[29] = "Bullet25",
|
||||
[30] = "Bullet26",
|
||||
[31] = "Bullet27",
|
||||
[32] = "Bullet28",
|
||||
[33] = "Bullet29",
|
||||
[34] = "Bullet30",
|
||||
[35] = "Bullet31",
|
||||
[36] = "Bullet32",
|
||||
[37] = "Bullet33",
|
||||
[38] = "Bullet34",
|
||||
[39] = "Bullet35",
|
||||
[40] = "Bullet36",
|
||||
[41] = "Bullet37",
|
||||
[42] = "Bullet38",
|
||||
[43] = "Bullet39",
|
||||
[44] = "Bullet40",
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
Time = 0.5,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 1.5,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = {"shoot", "shoot1"},
|
||||
Time = 0.3,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot_iron",
|
||||
Time = 0.1,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Checkpoints = {16, 30},
|
||||
Time = 2.4,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LHIKEaseOut = 0.25,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_SMG1,
|
||||
Checkpoints = {16, 30, 55},
|
||||
Time = 2.6,
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.3,
|
||||
LHIKOut = 0.3,
|
||||
LHIKEaseOut = 0.25,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["enter_inspect"] = false,
|
||||
["idle_inspect"] = false,
|
||||
["exit_inspect"] = false,
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "2012.Cliphit",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "2012/cliphit.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "2012.Clipout",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "2012/clipout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "2012.Clipin",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "2012/clipin.wav"
|
||||
})
|
||||
@@ -0,0 +1,291 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Revolver"
|
||||
SWEP.Trivia_Class = "Revolver"
|
||||
SWEP.Trivia_Desc = "A simple and reliable weapon produced in the Metro. Has great stopping power but kicks like a mule."
|
||||
SWEP.Trivia_Manufacturer = "Unknown"
|
||||
SWEP.Trivia_Calibre = ".44 Magnum"
|
||||
SWEP.Trivia_Mechanism = "Double Action"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
|
||||
SWEP.Slot = 1
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_MetroRevolver.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_MetroRevolver.mdl"
|
||||
SWEP.ViewModelFOV = 60
|
||||
|
||||
SWEP.DefaultSkin = 0
|
||||
|
||||
SWEP.Damage = 32
|
||||
SWEP.DamageMin = 32
|
||||
SWEP.Range = 40 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 1230 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.CanFireUnderwater = false
|
||||
SWEP.ChamberSize = 0 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 6 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 6
|
||||
SWEP.ReducedClipSize = 4
|
||||
|
||||
SWEP.Recoil = 2.5
|
||||
SWEP.RecoilSide = 1
|
||||
SWEP.RecoilRise = 1.8
|
||||
SWEP.VisualRecoilMult = 0.5
|
||||
|
||||
SWEP.Delay = 60 / 180 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
PrintName = "DACT",
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0,
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = {"weapon_pistol", "weapon_357"}
|
||||
SWEP.NPCWeight = 75
|
||||
|
||||
SWEP.AccuracyMOA = 8 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 350 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "357" -- what ammo type the gun uses
|
||||
SWEP.MagID = "ragingbull" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 100 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 95 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "Revolver/Shot.wav"
|
||||
SWEP.ShootSoundSilenced = "Revolver/Shots.wav"
|
||||
SWEP.DistantShootSound = "Revolver/Shot.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_pistol_deagle"
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 0 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
SWEP.SightTime = 0.28
|
||||
|
||||
SWEP.SpeedMult = 0.975
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
|
||||
SWEP.BarrelLength = 18
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {
|
||||
[1] = "Bullet1",
|
||||
[2] = "Bullet2",
|
||||
[3] = "Bullet3",
|
||||
[4] = "Bullet4",
|
||||
[5] = "Bullet5",
|
||||
[6] = "Bullet6",
|
||||
}
|
||||
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-2.721, -2, 1.759),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "normal"
|
||||
SWEP.HoldtypeActive = "pistol"
|
||||
SWEP.HoldtypeSights = "revolver"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 1)
|
||||
SWEP.ActiveAng = Angle(0, 1, 0)
|
||||
|
||||
SWEP.CustomizePos = Vector(20, 5, -5)
|
||||
|
||||
SWEP.HolsterPos = Vector(0, -10, -10)
|
||||
SWEP.HolsterAng = Angle(45, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-3, 0, 0)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.SprintPos = Vector(0, -10, -10)
|
||||
SWEP.SprintAng = Angle(45, 0, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.ExtraSightDist = 10
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlightmr"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-19.2, 4.1, -2),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic_lp", "optic"},
|
||||
Bone = "ValveBiped.Weapon_bone",
|
||||
Offset = {
|
||||
vpos = Vector(3, 0, 2.2),
|
||||
vang = Angle(0, 0, 0),
|
||||
},
|
||||
VMScale = Vector(0.7, 0.7, 0.7),
|
||||
CorrectiveAng = nil --Angle(90, 0, -90)
|
||||
},
|
||||
{
|
||||
PrintName = "Muzzle",
|
||||
DefaultAttName = "Standard Muzzle",
|
||||
Slot = "muzzle",
|
||||
Bone = "ValveBiped.Weapon_bone",
|
||||
Offset = {
|
||||
vpos = Vector(8.699, 0, 1.75),
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(15.2, 1, -4.3),
|
||||
wang = Angle(0, 0, 0)
|
||||
},
|
||||
VMScale = Vector(0.7, 0.7, 0.7),
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac_pistol",
|
||||
Bone = "ValveBiped.Weapon_bone",
|
||||
Offset = {
|
||||
vpos = Vector(7, 0, 1),
|
||||
vang = Angle(0, -1, 0),
|
||||
wpos = Vector(15, 1, -3.4),
|
||||
wang = Angle(0, 0, 180)
|
||||
}
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet",
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = {"perk", "perk_revolver"}
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skinmr"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "ValveBiped.Weapon_bone",
|
||||
Offset = {
|
||||
vpos = Vector(1.799, -0.301, -0.301), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(0, 0, 0),
|
||||
wpos = Vector(10, 1.25, -4),
|
||||
wang = Angle(0, -4.211, 180)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 0.7,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
Time = 2.15,
|
||||
FrameRate = 30,
|
||||
LastClip1OutTime = 1.3,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_REVOLVER,
|
||||
FrameRate = 30,
|
||||
LastClip1OutTime = 1.3,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "MR.BI",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Revolver/Bulletsin.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "MR.BO",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Revolver/Bulletsout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "MR.Close",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Revolver/Close.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "MR.Open",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Revolver/Op.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "MR.MT",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "Revolver/Mt.wav"
|
||||
})
|
||||
@@ -0,0 +1,280 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "Tikhar"
|
||||
SWEP.Trivia_Class = "Tikhar"
|
||||
SWEP.Trivia_Desc = "A makeshift air gun, surprisingly silent and accurate. Overpressurizing its tank increases power, but the extra pressure vents before long."
|
||||
SWEP.Trivia_Manufacturer = "Homemade"
|
||||
SWEP.Trivia_Calibre = "Ball Bearings"
|
||||
SWEP.Trivia_Mechanism = "Pneumatic"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
|
||||
SWEP.Slot = 3
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_Tikhar.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_Tikhar.mdl"
|
||||
SWEP.ViewModelFOV = 65
|
||||
|
||||
SWEP.DefaultBodygroups = "00000"
|
||||
|
||||
SWEP.Damage = 25
|
||||
SWEP.DamageMin = 25
|
||||
SWEP.Range = 50 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 200 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
|
||||
SWEP.AlwaysPhysBullet = true
|
||||
SWEP.PhysTracerProfile = 0
|
||||
SWEP.TracerNum = 1
|
||||
SWEP.Tracer = "arccw_tracer"
|
||||
SWEP.TracerCol = Color(38, 38, 38)
|
||||
|
||||
SWEP.CanFireUnderwater = true
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 15 -- DefaultClip is automatically set.
|
||||
SWEP.ExtendedClipSize = 30
|
||||
SWEP.ReducedClipSize = 10
|
||||
|
||||
SWEP.Recoil = 0.9
|
||||
SWEP.RecoilSide = 0.65
|
||||
SWEP.RecoilRise = 1
|
||||
SWEP.VisualRecoilMult = 1
|
||||
|
||||
SWEP.Delay = 60 / 180 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.AccuracyMOA = 3 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 150 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 250
|
||||
|
||||
SWEP.Primary.Ammo = "ar2" -- what ammo type the gun uses
|
||||
|
||||
SWEP.ShootVol = 120 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 110 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "Tikhar/Shoot.wav"
|
||||
SWEP.DistantShootSound = "Tikhar/Shoot.wav"
|
||||
SWEP.ShootSoundSilenced = "Tikhar/Shoot.wav"
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 0 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.89
|
||||
SWEP.SightedSpeedMult = 0.65
|
||||
|
||||
SWEP.RevolverReload = true
|
||||
|
||||
SWEP.ProceduralRegularFire = false
|
||||
SWEP.ProceduralIronFire = false
|
||||
|
||||
SWEP.CaseBones = {
|
||||
[1] = "Bullet16",
|
||||
[2] = "Bullet15",
|
||||
[3] = "Bullet14",
|
||||
[4] = "Bullet13",
|
||||
[5] = "Bullet12",
|
||||
[6] = "Bullet11",
|
||||
[7] = "Bullet10",
|
||||
[8] = "Bullet9",
|
||||
[9] = "Bullet8",
|
||||
[10] = "Bullet7",
|
||||
[11] = "Bullet6",
|
||||
[12] = "Bullet5",
|
||||
[13] = "Bullet4",
|
||||
[14] = "Bullet3",
|
||||
[15] = "Bullet2",
|
||||
[16] = "Bullet1",
|
||||
}
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-3.217, 0, 0.959),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(0, 0, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.HolsterPos = Vector(3.5, 2, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.BarrelLength = 27
|
||||
|
||||
SWEP.ShellRotateAngle = Angle(180, 180, 0)
|
||||
|
||||
SWEP.ExtraSightDist = 6
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-13, 4, -4),
|
||||
ang = Angle(-10.52, 0, 180)
|
||||
}
|
||||
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic", -- print name
|
||||
DefaultAttName = "Iron Sights",
|
||||
Slot = {"optic", "optic_sniper", "optic_lp"}, -- what kind of attachments can fit here, can be string or table
|
||||
Bone = "Tikhar", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0, -3.5, 14),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
VMScale = Vector(1.1, 1.1, 1.1),
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = {"foregrip", "bipod"},
|
||||
Bone = "Tikhar",
|
||||
Offset = {
|
||||
vpos = Vector(0, 0.699, 7.791),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "Tikhar",
|
||||
Offset = {
|
||||
vpos = Vector(0.6, -2.597, 15.064), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, 0),
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Grip",
|
||||
Slot = "grip",
|
||||
DefaultAttName = "Standard Grip"
|
||||
},
|
||||
{
|
||||
PrintName = "Fire Group",
|
||||
Slot = "fcg",
|
||||
DefaultAttName = "Standard FCG"
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "ammo_bullet"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "Tikhar", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.7, -2.1, 5),
|
||||
vang = Angle(90, 0, -90),
|
||||
},
|
||||
VMScale = Vector(1, 1, 1),
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet16",
|
||||
[2] = "Bullet15",
|
||||
[3] = "Bullet14",
|
||||
[4] = "Bullet13",
|
||||
[5] = "Bullet12",
|
||||
[6] = "Bullet11",
|
||||
[7] = "Bullet10",
|
||||
[8] = "Bullet9",
|
||||
[9] = "Bullet8",
|
||||
[10] = "Bullet7",
|
||||
[11] = "Bullet6",
|
||||
[12] = "Bullet5",
|
||||
[13] = "Bullet4",
|
||||
[14] = "Bullet3",
|
||||
[15] = "Bullet2",
|
||||
[16] = "Bullet1",
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle"
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
Time = 1,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 1.5,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.25,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot",
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {24, 60},
|
||||
FrameRate = 30,
|
||||
Time = 4.2,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
LastClip1OutTime = 2,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
Checkpoints = {24, 60, 102},
|
||||
FrameRate = 30,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.5,
|
||||
LHIKOut = 0.5,
|
||||
LastClip1OutTime = 2,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,328 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
SWEP.Base = "arccw_base"
|
||||
SWEP.Spawnable = true -- this obviously has to be set to true
|
||||
SWEP.Category = "Willard - Junk Weapons" -- edit this if you like
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.PrintName = "VSV"
|
||||
SWEP.TrueName = "VSK-94"
|
||||
SWEP.Trivia_Class = "Assault Rifle"
|
||||
SWEP.Trivia_Desc = "An accurate and powerful assault rifle good for medium-range combat. Its somewhat low muzzle velocity translates into lower noise and faster bullet drop."
|
||||
SWEP.Trivia_Manufacturer = "Konstruktorskoe Buro Priborostroeniya"
|
||||
SWEP.Trivia_Calibre = "5.45x39mm"
|
||||
SWEP.Trivia_Mechanism = "Gas-Operated"
|
||||
SWEP.Trivia_Country = "Russia"
|
||||
SWEP.Trivia_Year = 1994
|
||||
|
||||
SWEP.Slot = 2
|
||||
|
||||
if GetConVar("arccw_truenames"):GetBool() then SWEP.PrintName = SWEP.TrueName end
|
||||
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.ViewModel = "models/weapons/c_VSV.mdl"
|
||||
SWEP.WorldModel = "models/weapons/c_VSV.mdl"
|
||||
SWEP.ViewModelFOV = 65
|
||||
|
||||
SWEP.DefaultBodygroups = "000000000000"
|
||||
|
||||
SWEP.Damage = 14
|
||||
SWEP.DamageMin = 14
|
||||
SWEP.Range = 400 -- in METRES
|
||||
SWEP.Penetration = 1
|
||||
SWEP.DamageType = DMG_BULLET
|
||||
SWEP.ShootEntity = nil -- entity to fire, if any
|
||||
SWEP.MuzzleVelocity = 270 -- projectile or phys bullet muzzle velocity
|
||||
-- IN M/S
|
||||
SWEP.ChamberSize = 1 -- how many rounds can be chambered.
|
||||
SWEP.Primary.ClipSize = 20 -- DefaultClip is automatically set.
|
||||
|
||||
SWEP.PhysBulletMuzzleVelocity = 270
|
||||
|
||||
SWEP.Recoil = 0.62
|
||||
SWEP.RecoilSide = 0.255
|
||||
SWEP.RecoilRise = 0.2
|
||||
SWEP.RecoilPunch = 2.5
|
||||
|
||||
SWEP.Delay = 60 / 600 -- 60 / RPM.
|
||||
SWEP.Num = 1 -- number of shots per trigger pull.
|
||||
SWEP.Firemodes = {
|
||||
{
|
||||
Mode = 2,
|
||||
},
|
||||
{
|
||||
Mode = 1,
|
||||
},
|
||||
{
|
||||
Mode = 0
|
||||
}
|
||||
}
|
||||
|
||||
SWEP.NPCWeaponType = "weapon_ar2"
|
||||
SWEP.NPCWeight = 100
|
||||
|
||||
SWEP.AccuracyMOA = 9 -- accuracy in Minutes of Angle. There are 60 MOA in a degree.
|
||||
SWEP.HipDispersion = 650 -- inaccuracy added by hip firing.
|
||||
SWEP.MoveDispersion = 100
|
||||
|
||||
SWEP.Primary.Ammo = "smg1" -- what ammo type the gun uses
|
||||
SWEP.MagID = "stanag" -- the magazine pool this gun draws from
|
||||
|
||||
SWEP.ShootVol = 110 -- volume of shoot sound
|
||||
SWEP.ShootPitch = 100 -- pitch of shoot sound
|
||||
|
||||
SWEP.ShootSound = "VSV/shoot.wav"
|
||||
SWEP.DistantShootSound = "VSV/shoot2.wav"
|
||||
|
||||
SWEP.MeleeSwingSound = "arccw_go/m249/m249_draw.wav"
|
||||
SWEP.MeleeMissSound = "weapons/iceaxe/iceaxe_swing1.wav"
|
||||
SWEP.MeleeHitSound = "arccw_go/knife/knife_hitwall1.wav"
|
||||
SWEP.MeleeHitNPCSound = "physics/body/body_medium_break2.wav"
|
||||
|
||||
SWEP.MuzzleEffect = "muzzleflash_4"
|
||||
SWEP.ShellModel = "models/shells/shell_556.mdl"
|
||||
SWEP.ShellPitch = 95
|
||||
SWEP.ShellScale = 1.25
|
||||
SWEP.ShellRotateAngle = Angle(0, 180, 0)
|
||||
|
||||
SWEP.MuzzleEffectAttachment = 1 -- which attachment to put the muzzle on
|
||||
SWEP.CaseEffectAttachment = 2 -- which attachment to put the case effect on
|
||||
|
||||
SWEP.SpeedMult = 0.97
|
||||
SWEP.SightedSpeedMult = 0.75
|
||||
SWEP.SightTime = 0.30
|
||||
|
||||
SWEP.IronSightStruct = {
|
||||
Pos = Vector(-6.281, -5, 1.879),
|
||||
Ang = Angle(0, 0, 0),
|
||||
Magnification = 1.1,
|
||||
SwitchToSound = "", -- sound that plays when switching to this sight
|
||||
CrosshairInSights = false
|
||||
}
|
||||
|
||||
SWEP.HoldtypeHolstered = "passive"
|
||||
SWEP.HoldtypeActive = "ar2"
|
||||
SWEP.HoldtypeSights = "rpg"
|
||||
|
||||
SWEP.AnimShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
|
||||
|
||||
SWEP.ActivePos = Vector(-1, 2, 0)
|
||||
SWEP.ActiveAng = Angle(0, 0, 0)
|
||||
|
||||
SWEP.CrouchPos = Vector(-4, 0, -1)
|
||||
SWEP.CrouchAng = Angle(0, 0, -10)
|
||||
|
||||
SWEP.HolsterPos = Vector(3, 3, 0)
|
||||
SWEP.HolsterAng = Angle(-7.036, 30.016, 0)
|
||||
|
||||
SWEP.BarrelOffsetSighted = Vector(0, 0, -1)
|
||||
SWEP.BarrelOffsetHip = Vector(2, 0, -2)
|
||||
|
||||
SWEP.CustomizePos = Vector(8, 0, 1)
|
||||
SWEP.CustomizeAng = Angle(5, 30, 30)
|
||||
|
||||
SWEP.BarrelLength = 24
|
||||
|
||||
SWEP.AttachmentElements = {
|
||||
["lastlightvsv"] = {
|
||||
VMSkin = 1,
|
||||
WMSkin = 1,
|
||||
},
|
||||
}
|
||||
SWEP.ExtraSightDist = 10
|
||||
SWEP.GuaranteeLaser = true
|
||||
|
||||
SWEP.WorldModelOffset = {
|
||||
pos = Vector(-12, 7, -3.5),
|
||||
ang = Angle(-10, 0, 180)
|
||||
}
|
||||
|
||||
SWEP.MirrorVMWM = true
|
||||
|
||||
SWEP.Attachments = {
|
||||
{
|
||||
PrintName = "Optic",
|
||||
Slot = {"optic", "optic_lp"},
|
||||
Bone = "VSV",
|
||||
DefaultAttName = "Iron Sights",
|
||||
Offset = {
|
||||
vpos = Vector(0.05, -3.1, 3.635),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(22, 1, -7),
|
||||
wang = Angle(-9.79, 0, 180)
|
||||
},
|
||||
VMScale = Vector(1, 1, 1),
|
||||
InstalledEles = {"rs_none", "fs_down"},
|
||||
CorrectiveAng = Angle(0, 0, 0),
|
||||
},
|
||||
{
|
||||
PrintName = "Underbarrel",
|
||||
Slot = "foregrip",
|
||||
Bone = "VSV",
|
||||
Offset = {
|
||||
vpos = Vector(0, -1, 11),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(22, 1, -7),
|
||||
wang = Angle(-9.79, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Tactical",
|
||||
Slot = "tac",
|
||||
Bone = "VSV",
|
||||
Offset = {
|
||||
vpos = Vector(0, -0.7, 15),
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(22, 1, -7),
|
||||
wang = Angle(-9.79, 0, 180)
|
||||
},
|
||||
},
|
||||
{
|
||||
PrintName = "Ammo Type",
|
||||
Slot = "go_ammo",
|
||||
DefaultAttName = "Standard Ammo"
|
||||
},
|
||||
{
|
||||
PrintName = "Perk",
|
||||
Slot = "go_perk"
|
||||
},
|
||||
{
|
||||
PrintName = "Skin",
|
||||
Slot = {"metro_skinvsv"},
|
||||
DefaultAttName = "Metro 2033",
|
||||
FreeSlot = true
|
||||
},
|
||||
{
|
||||
PrintName = "Charm",
|
||||
Slot = "charm",
|
||||
FreeSlot = true,
|
||||
Bone = "VSV", -- relevant bone any attachments will be mostly referring to
|
||||
Offset = {
|
||||
vpos = Vector(0.6, -1.601, 0.4), -- offset that the attachment will be relative to the bone
|
||||
vang = Angle(90, 0, -90),
|
||||
wpos = Vector(6.099, 1.1, -3.301),
|
||||
wang = Angle(171.817, 180-1.17, 0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
SWEP.BulletBones = {
|
||||
[1] = "Bullet20",
|
||||
[2] = "Bullet19",
|
||||
[3] = "Bullet18",
|
||||
[4] = "Bullet17",
|
||||
[5] = "Bullet16",
|
||||
[6] = "Bullet15",
|
||||
[7] = "Bullet14",
|
||||
[8] = "Bullet13",
|
||||
[9] = "Bullet12",
|
||||
[10] = "Bullet11",
|
||||
[11] = "Bullet10",
|
||||
[12] = "Bullet9",
|
||||
[13] = "Bullet8",
|
||||
[14] = "Bullet7",
|
||||
[15] = "Bullet6",
|
||||
[16] = "Bullet5",
|
||||
[17] = "Bullet4",
|
||||
[18] = "Bullet3",
|
||||
[19] = "Bullet2",
|
||||
[20] = "Bullet1",
|
||||
}
|
||||
|
||||
SWEP.Animations = {
|
||||
["idle"] = {
|
||||
Source = "idle",
|
||||
},
|
||||
["draw"] = {
|
||||
Source = "draw",
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["ready"] = {
|
||||
Source = "ready",
|
||||
Time = 1.7,
|
||||
LHIK = true,
|
||||
LHIKIn = 0,
|
||||
LHIKOut = 0.5,
|
||||
},
|
||||
["fire"] = {
|
||||
Source = "shoot",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["fire_iron"] = {
|
||||
Source = "shoot_iron",
|
||||
Time = 0.5,
|
||||
ShellEjectAt = 0,
|
||||
},
|
||||
["reload"] = {
|
||||
Source = "reloadpart",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
Time = 2.3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKEaseIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["reload_empty"] = {
|
||||
Source = "reload",
|
||||
TPAnim = ACT_HL2MP_GESTURE_RELOAD_AR2,
|
||||
FrameRate = 30,
|
||||
Time = 3,
|
||||
LHIK = true,
|
||||
LHIKIn = 0.2,
|
||||
LHIKOut = 0.2,
|
||||
LHIKEaseOut = 0.2,
|
||||
LastClip1OutTime = 1,
|
||||
},
|
||||
["enter_inspect"] = {
|
||||
LHIK = false,
|
||||
},
|
||||
["idle_inspect"] = {
|
||||
LHIK = false,
|
||||
},
|
||||
["exit_inspect"] = {
|
||||
LHIK = false,
|
||||
},
|
||||
}
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_VSV.CA",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "VSV/VSVCA.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_VSV.Clipout",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "VSV/VSVClipout.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Weapon_VSV.Clipin",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "VSV/VSVClipin.wav"
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "VSV.Cliphit",
|
||||
channel = 16,
|
||||
volume = 1.0,
|
||||
sound = "VSV/cliphit.wav"
|
||||
})
|
||||
@@ -0,0 +1,30 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
ITEM.name = "OSPR2A-EXP"
|
||||
ITEM.description = "A heavier, more powerful version of the Combine Pulse-Rifle. Extremely inaccurate when moving. Ball launcher not included and is sold separately."
|
||||
ITEM.model = "models/weapons/irifle2/w_irifle2.mdl"
|
||||
ITEM.class = "arccw_ar21"
|
||||
ITEM.weaponCategory = "primary"
|
||||
ITEM.balanceCat = "assaultrifle"
|
||||
ITEM.baseDamage = 23
|
||||
ITEM.armorPen = 0.8
|
||||
ITEM.width = 4
|
||||
ITEM.height = 2
|
||||
ITEM.iconCam = {
|
||||
pos = Vector(-19.67, 199.67, 5.91),
|
||||
ang = Angle(1.2, 633.49, 0),
|
||||
fov = 10.64
|
||||
}
|
||||
|
||||
ITEM.replaceOnDeath = "dummy_biolock_expar2"
|
||||
|
||||
ITEM.magazines = {["magazine_heavypulse"] = true}
|
||||
@@ -0,0 +1,29 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
ITEM.name = "HK USP .45"
|
||||
ITEM.description = "The USP 45 is a semi-automatic handgun utilizing standard 9mm rounds. It is quite popular among the Civil Protection for use in daily duties and containment as an effective firearm."
|
||||
ITEM.model = "models/weapons/unloaded/pist_p228.mdl"
|
||||
ITEM.class = "arccw_eft_usp"
|
||||
ITEM.weaponCategory = "sidearm"
|
||||
ITEM.balanceCat = "pistol"
|
||||
ITEM.baseDamage = 15
|
||||
ITEM.armorPen = 0.6
|
||||
ITEM.width = 2
|
||||
ITEM.height = 1
|
||||
ITEM.iconCam = {
|
||||
pos = Vector(138.44, -705.16, 149.66),
|
||||
ang = Angle(11.67, 461.26, 0),
|
||||
fov = 1.32
|
||||
}
|
||||
|
||||
|
||||
ITEM.magazines = {["magazine_usp"] = true}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user