79 lines
1.8 KiB
Lua
79 lines
1.8 KiB
Lua
AddCSLuaFile()
|
|
|
|
ENT.Base = "base_gmodentity"
|
|
ENT.Type = "anim"
|
|
ENT.PrintName = "Care Package"
|
|
|
|
if SERVER then
|
|
local function get_random_key(tbl)
|
|
local total = 0
|
|
for k,v in pairs(tbl) do
|
|
total = total + v
|
|
end
|
|
|
|
local rand = math.random(0, total)
|
|
local count = 0
|
|
|
|
for k,v in pairs(tbl) do
|
|
count = count + v
|
|
if rand <= count then
|
|
return k
|
|
end
|
|
end
|
|
end
|
|
|
|
local Items = {
|
|
[1] = 50,
|
|
[2] = 50,
|
|
[3] = 50,
|
|
[5] = 50,
|
|
[6] = 50,
|
|
[7] = 50,
|
|
[8] = 50,
|
|
[9] = 40,
|
|
[10] = 35,
|
|
[11] = 30,
|
|
[12] = 30,
|
|
[13] = 20,
|
|
[14] = 20,
|
|
[15] = 20,
|
|
[16] = 15,
|
|
[17] = 15,
|
|
[18] = 10,
|
|
[20] = 5,
|
|
[21] = 5,
|
|
}
|
|
|
|
function ENT:Initialize()
|
|
self:SetModel("models/cod/score_carepackage.mdl")
|
|
self:PhysicsInit(SOLID_VPHYSICS)
|
|
self:SetMoveType(MOVETYPE_VPHYSICS)
|
|
self:SetUseType(SIMPLE_USE)
|
|
|
|
self.Item = get_random_key(Items)
|
|
self:GetPhysicsObject():SetVelocity(Vector(0,0,-256))
|
|
self:SetNWFloat('Item', self.Item)
|
|
end
|
|
|
|
function ENT:Open(ply)
|
|
if self.Item == 0 then
|
|
local wep = ply:GetActiveWeapon()
|
|
ply:GiveAmmo(wep:GetMaxClip1()*10, wep:GetPrimaryAmmoType(), false)
|
|
else
|
|
COD:KillstreakAddOther(ply, false, self.Item)
|
|
net.Start("COD.KillstreaksHUD")
|
|
net.WriteFloat(self.Item)
|
|
net.Send(ply)
|
|
end
|
|
self:EmitSound("items/ammocrate_open.wav")
|
|
self:Remove()
|
|
end
|
|
|
|
net.Receive("COD.PickupCarePackage", function(len, ply)
|
|
local ent = net.ReadEntity()
|
|
if IsValid(ent) then
|
|
ent:Open(ply)
|
|
end
|
|
end)
|
|
end
|