1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
local CLIENT_PAC_DIR = "artery/client/pacs"
local itm = nrequire("item.lua")
local ball
function finddmgpoint(name)
local filepath = string.format(CLIENT_PAC_DIR .. "/%s.txt",name)
local filetext = file.Read(filepath,"DATA")
local outfit = CompileString(string.format("return {%s}",filetext),name)()
ball = LocalPlayer():FindPACPart(outfit, "wep_point")
print("point is",ball,type(ball))
end
function finddmgbox(who,name)
local filepath = string.format(CLIENT_PAC_DIR .. "/%s.txt",name)
local filetext = file.Read(filepath,"DATA")
assert(filetext ~= nil, string.format("Could not find a pac file for name %q (%s)",name,filepath))
local outfit = CompileString(string.format("return {%s}",filetext),name)()
assert(outfit ~= nil, string.format("Failed to compile %q",filetext))
ball = who:FindPACPart(outfit, "wep_box")
print("box is", ball,type(ball))
assert(ball ~= pac.NULL, string.format("Could not find a prop called %q on pac %q","web_box",name))
end
local swingtbl = {}
local tracking = false
net.Receive("artery_doanimation",function()
local animname = net.ReadString()
local animtime = net.ReadDouble()
local wepname = net.ReadString()
local pacname = net.ReadString()
local animdir = net.ReadString()
local who = net.ReadEntity()
swingtbl = {}
--pac.SetupENT(who)
finddmgbox(who,pacname)
tracking = true
print("Doing animation:",animname,animtime,echoname)
who:SetLuaAnimation(animname)
timer.Simple(animtime,function()
tracking = false
who:StopLuaAnimation(animname)
net.Start("artery_notifyserverofswing")
net.WriteString(wepname)
net.WriteString(animdir)
print("Seding swingtbl:")
PrintTable(swingtbl)
net.WriteTable(swingtbl)
net.SendToServer()
end)
end)
concommand.Add("artery_startanimation",function(ply,cmd,args)
swingtbl = {}
ply:SetLuaAnimation(args[1])
timer.Simple(args[2],function()
ply:StopLuaAnimation(args[1])
end)
end)
--[[
local lastpos
hook.Add("Tick","trace_weppos",function()
if not ball or not ball.Entity then return end
if lastpos == nil then lastpos = ball.Entity:GetPos() end
--`print("Distance between ", ball.Entity:GetPos(), "and", lastpos, " is" ,ball.Entity:GetPos():Distance(lastpos))
if ball.Entity:GetPos():Distance(lastpos) > 2 and tracking then
swingtbl[#swingtbl + 1] = ball.Entity:GetPos() - LocalPlayer():GetPos()
print(ball.Entity:GetPos() - LocalPlayer():GetPos())
end
lastpos = ball.Entity:GetPos()
end)
]]
|