147 lines
3.0 KiB
Lua
147 lines
3.0 KiB
Lua
AddCSLuaFile()
|
|
|
|
if SERVER then
|
|
AddCSLuaFile("cl_menu.lua")
|
|
include("sv_init.lua")
|
|
end
|
|
|
|
if CLIENT then
|
|
include("cl_menu.lua")
|
|
end
|
|
|
|
SWEP.PrintName = "Pocket"
|
|
SWEP.Slot = 1
|
|
SWEP.SlotPos = 1
|
|
SWEP.DrawAmmo = false
|
|
SWEP.DrawCrosshair = true
|
|
|
|
SWEP.Base = "weapon_cs_base2"
|
|
|
|
SWEP.Author = "DarkRP Developers"
|
|
SWEP.Instructions = "Left click to pick up\nRight click to drop\nReload to open the menu"
|
|
SWEP.Contact = ""
|
|
SWEP.Purpose = ""
|
|
SWEP.IsDarkRPPocket = true
|
|
|
|
SWEP.IconLetter = ""
|
|
|
|
SWEP.ViewModelFOV = 62
|
|
SWEP.ViewModelFlip = false
|
|
SWEP.AnimPrefix = "rpg"
|
|
SWEP.WorldModel = ""
|
|
|
|
SWEP.Spawnable = true
|
|
SWEP.AdminOnly = true
|
|
SWEP.Category = "DarkRP (Utility)"
|
|
SWEP.Primary.ClipSize = -1
|
|
SWEP.Primary.DefaultClip = 0
|
|
SWEP.Primary.Automatic = false
|
|
SWEP.Primary.Ammo = ""
|
|
|
|
SWEP.Secondary.ClipSize = -1
|
|
SWEP.Secondary.DefaultClip = 0
|
|
SWEP.Secondary.Automatic = false
|
|
SWEP.Secondary.Ammo = ""
|
|
|
|
function SWEP:Initialize()
|
|
self:SetHoldType("normal")
|
|
end
|
|
|
|
function SWEP:Deploy()
|
|
return true
|
|
end
|
|
|
|
function SWEP:DrawWorldModel() end
|
|
|
|
function SWEP:PreDrawViewModel(vm)
|
|
return true
|
|
end
|
|
|
|
function SWEP:Holster()
|
|
if not SERVER then return true end
|
|
|
|
local Owner = self:GetOwner()
|
|
Owner:DrawViewModel(true)
|
|
Owner:DrawWorldModel(true)
|
|
|
|
return true
|
|
end
|
|
|
|
function SWEP:PrimaryAttack()
|
|
self:SetNextPrimaryFire(CurTime() + 0.2)
|
|
|
|
if not SERVER then return end
|
|
|
|
local Owner = self:GetOwner()
|
|
|
|
if not IsValid(Owner) then return end
|
|
|
|
local ent = Owner:GetEyeTrace().Entity
|
|
local canPickup, message = hook.Call("canPocket", GAMEMODE, Owner, ent)
|
|
|
|
if not canPickup then
|
|
if message then DarkRP.notify(Owner, 1, 4, message) end
|
|
return
|
|
end
|
|
|
|
Owner:addPocketItem(ent)
|
|
end
|
|
|
|
function SWEP:SecondaryAttack()
|
|
if not SERVER then return end
|
|
|
|
local Owner = self:GetOwner()
|
|
|
|
if not IsValid(Owner) then return end
|
|
|
|
local maxK = 0
|
|
|
|
for k in pairs(Owner:getPocketItems()) do
|
|
if k < maxK then continue end
|
|
maxK = k
|
|
end
|
|
|
|
if maxK == 0 then
|
|
DarkRP.notify(Owner, 1, 4, DarkRP.getPhrase("pocket_no_items"))
|
|
return
|
|
end
|
|
|
|
if SERVER then
|
|
local canPickup, message = hook.Call("canDropPocketItem", nil, Owner, maxK, Owner.darkRPPocket[maxK])
|
|
if canPickup == false then
|
|
if message then DarkRP.notify(Owner, 1, 4, message) end
|
|
return
|
|
end
|
|
end
|
|
|
|
Owner:dropPocketItem(maxK)
|
|
end
|
|
|
|
function SWEP:Reload()
|
|
if CLIENT then
|
|
DarkRP.openPocketMenu()
|
|
end
|
|
|
|
if SERVER and game.SinglePlayer() then
|
|
net.Start("DarkRP_PocketMenu")
|
|
net.Send(self:GetOwner())
|
|
end
|
|
end
|
|
|
|
local meta = FindMetaTable("Player")
|
|
DarkRP.stub{
|
|
name = "getPocketItems",
|
|
description = "Get a player's pocket items.",
|
|
parameters = {
|
|
},
|
|
returns = {
|
|
{
|
|
name = "items",
|
|
description = "A table containing crucial information about the items in the pocket.",
|
|
type = "table"
|
|
}
|
|
},
|
|
metatable = meta,
|
|
realm = "Shared"
|
|
}
|