DerpINV for darkrp, creating a pocket swep that sends a usermessage?

Hey, so I’ve seen that great script for DarkRP calld DerpINV. But I think it kind of sucks that you have to do alt+e to pickup stuff, and that you have to type !inv to get into the inventory…

So I tried to make the swep run a usermessage, but it didn’t work… I nearly tried everything… Does anyone have a idea?

DerpINV user function



local function plyuse(ply, ent)
	-- handle normal ents first
	if !ply.canuse then
		return false
	end
	if items[ent:GetClass()] then
		if !ply.inv[ent:GetClass()] then
			ply.inv[ent:GetClass()] = 0
		end
	
		if ply.inv._size >= maxitems:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "Your inventory is full!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		local max = items[ent:GetClass()]["max"]
		
		if max > 0 and ply.inv[ent:GetClass()] >= max then
			ply:ColChat("DrpInv", Color(0,255,0), "You have reached the maximum amount for that item!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		ply.inv._size = ply.inv._size + 1
		ply:AddItem(ent:GetClass(), 1)
		
		ply:EmitSound("items/ammo_pickup.wav", 100, 100)
		
		local vec = ply:GetPos() - ent:GetPos()
		ent:GetPhysicsObject():ApplyForceCenter(Vector(0,0,450))
		ent:SetNotSolid(true)
		
		local ed = EffectData()
		ed:SetEntity(ent)
		util.Effect( "propspawn", ed )	
		
		SafeRemoveEntityDelayed(ent, 0.75)
		
		ply.canuse = false
		timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
		return false
	end
	-- now handle the stupid special cases
	-- sweps first
	if ent:GetClass() == "spawned_weapon" and weps[ent.weaponclass] then
		if ply.inv._size >= maxitems:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "Your inventory is full!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		if #table.ClearKeys(ply.inv.sweps) >= maxguns:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "You have reached the maximum amount of sweps!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		local gun = {
			model = ent:GetModel(),
			class = ent.weaponclass
		}
		
		ply.inv._size = ply.inv._size + 1
		ply:AddSwep(gun)

		ply:EmitSound("items/ammo_pickup.wav", 100, 100)
		
		local vec = ply:GetPos() - ent:GetPos()
		ent:GetPhysicsObject():ApplyForceCenter(Vector(0,0,400))
		ent:SetNotSolid(true)
		
		local ed = EffectData()
		ed:SetEntity(ent)
		util.Effect( "propspawn", ed )	
		
		SafeRemoveEntityDelayed(ent, 0.75)
		
		ply.canuse = false
		timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
		return false
	end
	-- now food
	if ent:GetClass() == "spawned_food" and foodies[ent:GetModel()] then
		if ply.inv._size >= maxitems:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "Your inventory is full!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		if #table.ClearKeys(ply.inv.foods) >= maxfood:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "You have reached the maximum amount of food!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		local food = {
			model = ent:GetModel(),
			amount = ent.FoodEnergy
		}
		
		ply.inv._size = ply.inv._size + 1
		ply:AddFood(food)

		ply:EmitSound("items/ammo_pickup.wav", 100, 100)
		
		local vec = ply:GetPos() - ent:GetPos()
		ent:GetPhysicsObject():ApplyForceCenter(Vector(0,0,800)) -- fatty melons need a bigger kick
		ent:SetNotSolid(true)
		
		local ed = EffectData()
		ed:SetEntity(ent)
		util.Effect( "propspawn", ed )	
		
		SafeRemoveEntityDelayed(ent, 0.75)
		
		ply.canuse = false
		timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
		return false
	end
	-- lastly shipments
	if ent:GetClass() == "spawned_shipment" then
		if ply.inv._size >= maxitems:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "Your inventory is full!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		if #table.ClearKeys(ply.inv.ships) >= maxshipments:GetInt() then
			ply:ColChat("DrpInv", Color(0,255,0), "You have reached the maximum amount of shipments!")
			ply.canuse = false
			timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
			return false
		end
		
		local ship = {
			cont = ent.dt.contents,
			count = ent.dt.count
		}
		
		ply.inv._size = ply.inv._size + 1
		ply:AddShip(ship)

		ply:EmitSound("items/ammo_pickup.wav", 100, 100)
		
		local vec = ply:GetPos() - ent:GetPos()
		ent:GetPhysicsObject():ApplyForceCenter(Vector(0,0,1500)) -- forget what i said aboot melons...
		ent:SetNotSolid(true)
		
		local ed = EffectData()
		ed:SetEntity(ent)
		util.Effect( "propspawn", ed )	
		
		SafeRemoveEntityDelayed(ent, 0.75)
		
		ply.canuse = false
		timer.Create("canuse" .. ply:UniqueID(), 1, 1,function() ply.canuse = true end)
		return false
	end
	return true
end
--hook.Add("PlayerUse","DrpPlyUse",plyuse)
usermessage.hook("OpenDRPPickup",plyuse)
--concommand.Add("testingdrp",plyuse)


Pocket swep



if SERVER then
	AddCSLuaFile("shared.lua")
end

if CLIENT then
	SWEP.PrintName = "Pocket"
	SWEP.Slot = 1
	SWEP.SlotPos = 1
	SWEP.DrawAmmo = false
	SWEP.DrawCrosshair = true
end

SWEP.Base = "weapon_cs_base2"

SWEP.Author = "FPtje and everyone who gave FPtje the idea"
SWEP.Instructions = "Left click to pick up, right click to drop, reload for menu"
SWEP.Contact = ""
SWEP.Purpose = ""
SWEP.IconLetter = ""

SWEP.ViewModelFOV = 62
SWEP.ViewModelFlip = false
SWEP.AnimPrefix	 = "rpg"

SWEP.Spawnable = false
SWEP.AdminSpawnable = true
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 = ""

local DropItem

if CLIENT then
	SWEP.FrameVisible = false
end

function SWEP:Initialize()
	self:SetWeaponHoldType("normal")
end

function SWEP:Deploy()
	if SERVER then
		self.Owner:DrawViewModel(false)
		self.Owner:DrawWorldModel(false)
	end
end

function SWEP:PrimaryAttack(um) -- derpinv_pickuptraceweaponRaw
	umsg.Start("OpenDRPPickup")
	--umsg.End()
end

function SWEP:SecondaryAttack()
	LocalPlayer():ConCommand("say !inv")
	timer.Simple(9999999, function() end) -- To prevent mass inv spam (resets it self.)
end


Anyone got a idea?

Usermessages are outdated, use net library instead :stuck_out_tongue:

The problem is that im alittle noob to that… :confused: And since DarkRP uses it, I though I should use it… :slight_smile:

The problem is that the script allready uses it, and i don’t feal like recoding it. Do you have a idea?