mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
Upload
This commit is contained in:
132
addons/pillpack/lua/includes/modules/ppp_includes/util.lua
Normal file
132
addons/pillpack/lua/includes/modules/ppp_includes/util.lua
Normal file
@@ -0,0 +1,132 @@
|
||||
--[[
|
||||
| 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()
|
||||
helpers = {}
|
||||
|
||||
function helpers.makeList(str, n1, n2)
|
||||
if not n2 then
|
||||
n2 = n1
|
||||
n1 = 1
|
||||
end
|
||||
|
||||
local lst = {}
|
||||
|
||||
for i = n1, n2 do
|
||||
table.insert(lst, string.Replace(str, "#", tostring(i)))
|
||||
end
|
||||
|
||||
return lst
|
||||
end
|
||||
|
||||
common = {}
|
||||
|
||||
if SERVER then
|
||||
function common.shoot(ply, ent, tbl)
|
||||
local aim = ent.formTable.aim
|
||||
if ent.formTable.canAim and not ent.formTable.canAim(ply, ent) then return end
|
||||
if aim.usesSecondaryEnt and not IsValid(ent:GetPillAimEnt()) then return end
|
||||
local aimEnt = aim.usesSecondaryEnt and ent:GetPillAimEnt() or (ent.formTable.type == "ply" and ent:GetPuppet()) or ent
|
||||
local start
|
||||
|
||||
if aim.attachment then
|
||||
start = aimEnt:GetAttachment(aimEnt:LookupAttachment(aim.attachment))
|
||||
elseif aim.offset then
|
||||
local a = ply:EyeAngles()
|
||||
a.p = 0
|
||||
|
||||
start = {
|
||||
Pos = ply:EyePos() + a:Forward() * aim.offset,
|
||||
Ang = ply:EyeAngles()
|
||||
}
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
local bullet = {}
|
||||
|
||||
-- PLZ FIX
|
||||
if aim.overrideStart then
|
||||
bullet.Src = ent:LocalToWorld(aim.overrideStart)
|
||||
else
|
||||
if not start then return end
|
||||
bullet.Src = start.Pos
|
||||
end
|
||||
|
||||
--debugoverlay.Sphere(bullet.Src,10,1, Color(0,0,255), true)
|
||||
--[[bullet.Src = start.Pos]]
|
||||
bullet.Attacker = ply
|
||||
|
||||
if aim.simple then
|
||||
bullet.Dir = ply:EyeAngles():Forward()
|
||||
else
|
||||
bullet.Dir = start.Ang:Forward()
|
||||
end
|
||||
|
||||
if tbl.spread then
|
||||
bullet.Spread = Vector(tbl.spread, tbl.spread, 0)
|
||||
end
|
||||
|
||||
bullet.Num = tbl.num
|
||||
bullet.Damage = tbl.damage
|
||||
bullet.Force = tbl.force
|
||||
bullet.Tracer = tbl.tracer and not aim.fixTracers and 1 or 0
|
||||
|
||||
if aim.fixTracers then
|
||||
bullet.Callback = function(_ply, tr, dmg)
|
||||
local ed = EffectData()
|
||||
ed:SetStart(tr.StartPos)
|
||||
ed:SetOrigin(tr.HitPos)
|
||||
ed:SetScale(5000)
|
||||
util.Effect(tbl.tracer, ed)
|
||||
end
|
||||
else
|
||||
bullet.TracerName = tbl.tracer
|
||||
end
|
||||
|
||||
--[[bullet.Callback=function(ply,tr,dmg)
|
||||
if tr.HitPos then
|
||||
debugoverlay.Sphere(tr.HitPos,50,5, Color(0,255,0), true)
|
||||
end
|
||||
end]]
|
||||
aimEnt:FireBullets(bullet)
|
||||
|
||||
--Animation
|
||||
if tbl.anim then
|
||||
ent:PillAnim(tbl.anim, true)
|
||||
end
|
||||
|
||||
--Sound
|
||||
ent:PillSound("shoot", true)
|
||||
end
|
||||
|
||||
function common.melee(ply, ent, tbl)
|
||||
if not ply:IsOnGround() then return end
|
||||
|
||||
if tbl.animCount then
|
||||
ent:PillAnim("melee" .. math.random(tbl.animCount), true)
|
||||
else
|
||||
ent:PillAnim("melee", true)
|
||||
end
|
||||
|
||||
ent:PillGesture("melee")
|
||||
ent:PillSound("melee")
|
||||
|
||||
timer.Simple(tbl.delay, function()
|
||||
if not IsValid(ent) then return end
|
||||
|
||||
if ply:TraceHullAttack(ply:EyePos(), ply:EyePos() + ply:EyeAngles():Forward() * tbl.range, Vector(-10, -10, -10), Vector(10, 10, 10), tbl.dmg, DMG_SLASH, 1, true) then
|
||||
ent:PillSound("melee_hit")
|
||||
else
|
||||
ent:PillSound("melee_miss")
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user