Skip to content

Commit b45cf1b

Browse files
committed
Add print-kills example
1 parent 44db23c commit b45cf1b

File tree

3 files changed

+305
-0
lines changed

3 files changed

+305
-0
lines changed

examples/print-kills/README.md

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
# Printing kills
2+
3+
This example shows how to use the library to print out all kills including attackers, weapons, headshots, wallbangs & victims.
4+
5+
## Running the example
6+
7+
`go run printkills.go -demo /path/to/demo`
8+
9+
<details>
10+
<summary>Sample output</summary>
11+
12+
```
13+
[T]xms*ASUS ♥ /F/ <AK-47 (HS)> [CT]crisby
14+
[CT]tiziaN <USP-S (HS)> [T]Ex6TenZ-BALLISTIX
15+
[CT]tiziaN <USP-S> [T]mistou * Cooler Master
16+
[CT]tiziaN <USP-S (HS)> [T]ALEX * Intel
17+
[T]xms*ASUS ♥ /F/ <Glock-18 (HS)> [CT]tiziaN
18+
[T]to1nou * Seagate <Glock-18 (HS)> [CT]kzy LJ∼
19+
[T]to1nou * Seagate <Glock-18> [CT]crisby
20+
[T]to1nou * Seagate <USP-S (HS)> [CT]syrsoNR
21+
[CT]keev <USP-S (HS)> [T]to1nou * Seagate
22+
[CT]keev <USP-S (HS)> [T]xms*ASUS ♥ /F/
23+
[T]Ex6TenZ-BALLISTIX <Desert Eagle (HS)> [CT]syrsoNR
24+
[CT]kzy LJ∼ <FAMAS (HS)> [T]ALEX * Intel
25+
[CT]crisby <UMP-45 (HS)> [T]to1nou * Seagate
26+
[CT]kzy LJ∼ <FAMAS> [T]Ex6TenZ-BALLISTIX
27+
[CT]kzy LJ∼ <FAMAS (HS)> [T]xms*ASUS ♥ /F/
28+
[CT]keev <UMP-45> [T]mistou * Cooler Master
29+
[CT]crisby <UMP-45 (HS)> [T]to1nou * Seagate
30+
[CT]kzy LJ∼ <FAMAS (HS)> [T]Ex6TenZ-BALLISTIX
31+
[CT]crisby <USP-S> [CT]kzy LJ∼
32+
[CT]crisby <USP-S (HS)> [T]xms*ASUS ♥ /F/
33+
[T]mistou * Cooler Master <Glock-18 (HS)> [CT]crisby
34+
[CT]syrsoNR <M4A1> [T]ALEX * Intel
35+
[CT]syrsoNR <M4A1 (HS)> [T]mistou * Cooler Master
36+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]crisby
37+
[CT]syrsoNR <M4A1 (HS) (WB)> [T]Ex6TenZ-BALLISTIX
38+
[CT]kzy LJ∼ <FAMAS> [T]mistou * Cooler Master
39+
[T]to1nou * Seagate <AWP> [CT]kzy LJ∼
40+
[T]ALEX * Intel <AK-47 (HS)> [CT]syrsoNR
41+
[T]ALEX * Intel <AK-47> [T]xms*ASUS ♥ /F/
42+
[CT]tiziaN <M4A1> [T]ALEX * Intel
43+
[CT]keev <Desert Eagle> [T]to1nou * Seagate
44+
[T]to1nou * Seagate <AK-47 (HS)> [CT]syrsoNR
45+
[CT]crisby <M4A1> [T]to1nou * Seagate
46+
[T]xms*ASUS ♥ /F/ <AK-47 (HS)> [CT]crisby
47+
[CT]kzy LJ∼ <M4A1 (HS)> [T]xms*ASUS ♥ /F/
48+
[CT]kzy LJ∼ <M4A1 (HS)> [T]mistou * Cooler Master
49+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]kzy LJ∼
50+
[CT]tiziaN <AK-47> [T]ALEX * Intel
51+
[CT]keev <AWP> [T]Ex6TenZ-BALLISTIX
52+
[CT]keev <AWP> [T]mistou * Cooler Master
53+
[T]Ex6TenZ-BALLISTIX <Tec-9 (HS)> [CT]keev
54+
[T]Ex6TenZ-BALLISTIX <Tec-9 (HS)> [CT]tiziaN
55+
[T]xms*ASUS ♥ /F/ <Desert Eagle (HS) (WB)> [CT]crisby
56+
[T]ALEX * Intel <AWP> [CT]syrsoNR
57+
[T]mistou * Cooler Master <AK-47 (HS)> [CT]syrsoNR
58+
[CT]keev <AWP> [T]xms*ASUS ♥ /F/
59+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]crisby
60+
[CT]keev <AWP (HS)> [T]to1nou * Seagate
61+
[CT]kzy LJ∼ <M4A1 (HS)> [T]ALEX * Intel
62+
[CT]keev <AWP> [T]Ex6TenZ-BALLISTIX
63+
[CT]kzy LJ∼ <M4A1> [T]mistou * Cooler Master
64+
[T]xms*ASUS ♥ /F/ <Tec-9> [CT]keev
65+
[CT]tiziaN <M4A1 (HS)> [T]mistou * Cooler Master
66+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]syrsoNR
67+
[T]to1nou * Seagate <AK-47> [CT]tiziaN
68+
[CT]kzy LJ∼ <AK-47 (HS)> [T]mistou * Cooler Master
69+
[T]ALEX * Intel <AK-47> [CT]syrsoNR
70+
[CT]tiziaN <p250> [T]Ex6TenZ-BALLISTIX
71+
[T]to1nou * Seagate <AWP> [CT]tiziaN
72+
[T]ALEX * Intel <AK-47> [CT]keev
73+
[CT]crisby <M4A1> [T]xms*ASUS ♥ /F/
74+
[CT]crisby <M4A1> [T]to1nou * Seagate
75+
[CT]crisby <M4A1 (HS)> [T]ALEX * Intel
76+
[CT]tiziaN <M4A1 (HS)> [T]xms*ASUS ♥ /F/
77+
[T]Ex6TenZ-BALLISTIX <Tec-9 (HS)> [CT]tiziaN
78+
[T]to1nou * Seagate <AK-47> [CT]crisby
79+
[T]ALEX * Intel <AK-47 (HS)> [CT]syrsoNR
80+
[T]mistou * Cooler Master <Tec-9 (HS)> [CT]keev
81+
[T]to1nou * Seagate <AK-47 (HS)> [CT]kzy LJ∼
82+
[CT]crisby <p250 (HS)> [T]to1nou * Seagate
83+
[T]xms*ASUS ♥ /F/ <AK-47 (HS)> [CT]crisby
84+
[CT]kzy LJ∼ <M4A1> [T]xms*ASUS ♥ /F/
85+
[CT]kzy LJ∼ <M4A1 (HS)> [T]ALEX * Intel
86+
[CT]keev <AWP> [T]Ex6TenZ-BALLISTIX
87+
[CT]keev <AWP> [T]mistou * Cooler Master
88+
[CT]kzy LJ∼ <M4A1> [T]xms*ASUS ♥ /F/
89+
[CT]kzy LJ∼ <M4A1 (HS)> [T]Ex6TenZ-BALLISTIX
90+
[T]to1nou * Seagate <AWP> [CT]kzy LJ∼
91+
[CT]tiziaN <FAMAS (HS)> [T]ALEX * Intel
92+
[T]to1nou * Seagate <AWP> [CT]tiziaN
93+
[CT]keev <AWP (HS) (WB)> [T]to1nou * Seagate
94+
[CT]crisby <M4A1> [T]mistou * Cooler Master
95+
[CT]kzy LJ∼ <M4A1> [T]ALEX * Intel
96+
[T]to1nou * Seagate <Tec-9 (HS)> [CT]crisby
97+
[CT]tiziaN <M4A1> [T]mistou * Cooler Master
98+
[CT]tiziaN <M4A1 (HS)> [T]Ex6TenZ-BALLISTIX
99+
[T]to1nou * Seagate <Tec-9 (HS)> [CT]tiziaN
100+
[CT]syrsoNR <AK-47 (WB)> [T]to1nou * Seagate
101+
[CT]keev <USP-S (HS)> [T]xms*ASUS ♥ /F/
102+
[CT]tiziaN <M4A1 (HS)> [T]mistou * Cooler Master
103+
[T]xms*ASUS ♥ /F/ <Tec-9> [CT]tiziaN
104+
[CT]syrsoNR <AK-47> [T]ALEX * Intel
105+
[T]to1nou * Seagate <Tec-9> [CT]syrsoNR
106+
[CT]crisby <M4A1 (HS)> [T]to1nou * Seagate
107+
[CT]crisby <M4A1 (HS)> [T]xms*ASUS ♥ /F/
108+
[T]Ex6TenZ-BALLISTIX <Galil AR> [CT]kzy LJ∼
109+
[CT]crisby <M4A1 (HS)> [T]Ex6TenZ-BALLISTIX
110+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]tiziaN
111+
[CT]keev <Tec-9 (HS)> [T]mistou * Cooler Master
112+
[T]xms*ASUS ♥ /F/ <AK-47> [CT]syrsoNR
113+
[T]Ex6TenZ-BALLISTIX <AK-47> [CT]keev
114+
[CT]crisby <M4A1 (HS)> [T]Ex6TenZ-BALLISTIX
115+
[CT]crisby <M4A1 (HS)> [T]ALEX * Intel
116+
[T]to1nou * Seagate <AK-47> [CT]kzy LJ∼
117+
[T]xms*ASUS ♥ /F/ <AK-47> [CT]crisby
118+
[CT]mistou * Cooler Master <P2000 (HS)> [T]tiziaN
119+
[CT]mistou * Cooler Master <P2000 (HS)> [T]syrsoNR
120+
[CT]mistou * Cooler Master <P2000 (HS)> [T]keev
121+
[CT]xms*ASUS ♥ /F/ <USP-S (HS)> [T]crisby
122+
[CT]ALEX * Intel <USP-S (HS)> [T]kzy LJ∼
123+
[T]tiziaN <Desert Eagle (HS)> [CT]Ex6TenZ-BALLISTIX
124+
[CT]mistou * Cooler Master <M4A1 (HS)> [T]kzy LJ∼
125+
[CT]ALEX * Intel <FAMAS> [T]syrsoNR
126+
[T]crisby <Desert Eagle (HS)> [CT]ALEX * Intel
127+
[CT]to1nou * Seagate <FAMAS (HS)> [T]crisby
128+
[T]keev <Desert Eagle> [CT]to1nou * Seagate
129+
[CT]mistou * Cooler Master <M4A1 (HS)> [T]tiziaN
130+
[T]keev <FAMAS (WB)> [CT]mistou * Cooler Master
131+
[T]keev <FAMAS> [CT]xms*ASUS ♥ /F/
132+
[CT]mistou * Cooler Master <Five-SeveN> [T]tiziaN
133+
[T]syrsoNR <AK-47> [CT]mistou * Cooler Master
134+
[T]kzy LJ∼ <AK-47 (HS)> [CT]xms*ASUS ♥ /F/
135+
[CT]to1nou * Seagate <Five-SeveN (HS)> [T]crisby
136+
[T]syrsoNR <AK-47 (HS)> [CT]ALEX * Intel
137+
[CT]to1nou * Seagate <Five-SeveN (HS)> [T]syrsoNR
138+
[CT]Ex6TenZ-BALLISTIX <Five-SeveN (HS)> [T]kzy LJ∼
139+
[CT]to1nou * Seagate <Five-SeveN> [T]keev
140+
[T]crisby <Tec-9 (HS)> [CT]xms*ASUS ♥ /F/
141+
[CT]mistou * Cooler Master <FAMAS (HS)> [T]kzy LJ∼
142+
[CT]mistou * Cooler Master <FAMAS> [T]crisby
143+
[T]syrsoNR <Tec-9 (HS)> [CT]Ex6TenZ-BALLISTIX
144+
[CT]to1nou * Seagate <AK-47 (HS)> [T]tiziaN
145+
[CT]ALEX * Intel <M4A1> [T]syrsoNR
146+
[CT]to1nou * Seagate <AK-47> [T]keev
147+
[T]kzy LJ∼ <Desert Eagle (HS)> [CT]mistou * Cooler Master
148+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]tiziaN
149+
[CT]to1nou * Seagate <AK-47> [T]syrsoNR
150+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]crisby
151+
[CT]to1nou * Seagate <AK-47> [T]keev
152+
[CT]ALEX * Intel <M4A1> [T]kzy LJ∼
153+
[T]keev <AWP> [CT]mistou * Cooler Master
154+
[T]tiziaN <AK-47 (HS)> [CT]xms*ASUS ♥ /F/
155+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]tiziaN
156+
[CT]to1nou * Seagate <AK-47> [T]syrsoNR
157+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]kzy LJ∼
158+
[CT]Ex6TenZ-BALLISTIX <M4A1 (HS)> [T]keev
159+
[T]crisby <AK-47> [CT]to1nou * Seagate
160+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]crisby
161+
[CT]to1nou * Seagate <AWP> [T]syrsoNR
162+
[T]keev <AK-47 (HS)> [CT]Ex6TenZ-BALLISTIX
163+
[T]kzy LJ∼ <AK-47> [CT]xms*ASUS ♥ /F/
164+
[CT]ALEX * Intel <AK-47> [T]keev
165+
[T]kzy LJ∼ <AK-47 (HS)> [CT]ALEX * Intel
166+
[T]crisby <AK-47 (HS)> [CT]to1nou * Seagate
167+
[CT]mistou * Cooler Master <AWP (WB)> [T]kzy LJ∼
168+
[T]syrsoNR <AK-47> [CT]ALEX * Intel
169+
[T]syrsoNR <AK-47 (HS)> [CT]xms*ASUS ♥ /F/
170+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]syrsoNR
171+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]tiziaN
172+
[CT]mistou * Cooler Master <AWP> [T]kzy LJ∼
173+
[T]crisby <AK-47> [CT]to1nou * Seagate
174+
[CT]Ex6TenZ-BALLISTIX <M4A1> [T]crisby
175+
[CT]Ex6TenZ-BALLISTIX <P2000> [T]keev
176+
[CT]syrsoNR <World> [CT]syrsoNR
177+
[CT]ALEX * Intel <World> [CT]ALEX * Intel
178+
[CT]tiziaN <World> [CT]tiziaN
179+
tiziaN <World> tiziaN
180+
[CT]tiziaN <World> [CT]tiziaN
181+
[CT]ALEX * Intel <World> [CT]ALEX * Intel
182+
[T]crisby <World> [T]crisby
183+
crisby <World> crisby
184+
crisby <World> crisby
185+
crisby <World> crisby
186+
[T]tiziaN <World> [T]tiziaN
187+
crisby <World> crisby
188+
[CT]mistou * Cooler Master <World> [CT]mistou * Cooler Master
189+
[T]keev <World> [T]keev
190+
[T]crisby <World> [T]crisby
191+
[CT]mistou * Cooler Master <AWP> [T]tiziaN
192+
[T]crisby <p250> [CT]mistou * Cooler Master
193+
[T]keev <Tec-9> [T]crisby
194+
[T]keev <AWP> [T]crisby
195+
[T]keev <AWP> [CT]ALEX * Intel
196+
[T]crisby <AWP> [T]crisby
197+
[T]crisby <AWP> [T]crisby
198+
[T]keev <AWP> [T]crisby
199+
[T]tiziaN <AK-47> [T]keev
200+
[CT]mistou * Cooler Master <Five-SeveN (HS)> [T]keev
201+
[CT]mistou * Cooler Master <Five-SeveN (HS)> [T]tiziaN
202+
[T]keev <Tec-9> [CT]mistou * Cooler Master
203+
[T]keev <Desert Eagle> [T]keev
204+
[T]keev <Desert Eagle (HS)> [T]keev
205+
[CT]ALEX * Intel <AK-47 (HS)> [T]tiziaN
206+
[T]keev <M4A1> [T]keev
207+
[T]crisby <Tec-9 (HS)> [T]keev
208+
[T]keev <AK-47 (HS)> [CT]ALEX * Intel
209+
[CT]mistou * Cooler Master <AWP> [T]crisby
210+
[T]keev <AK-47> [CT]mistou * Cooler Master
211+
[T]keev <Galil AR> [T]keev
212+
[T]keev <AWP> [T]keev
213+
[T]keev <AK-47 (HS)> [T]keev
214+
[T]keev <AK-47 (HS)> [T]keev
215+
[T]tiziaN <Galil AR (HS)> [T]keev
216+
[CT]ALEX * Intel <FAMAS> [T]tiziaN
217+
[CT]ALEX * Intel <FAMAS (HS)> [T]keev
218+
[CT]mistou * Cooler Master <Five-SeveN (HS)> [T]keev
219+
[CT]ALEX * Intel <FAMAS (HS)> [T]keev
220+
[T]crisby <AK-47> [CT]ALEX * Intel
221+
[CT]mistou * Cooler Master <AK-47 (HS)> [T]crisby
222+
[T]keev <AK-47> [T]keev
223+
[T]keev <FAMAS> [T]keev
224+
[T]keev <FAMAS> [T]crisby
225+
[T]keev <FAMAS (HS)> [T]tiziaN
226+
[T]keev <p250> [T]keev
227+
[CT]mistou * Cooler Master <AWP> [T]keev
228+
[T]tiziaN <Galil AR (HS)> [CT]mistou * Cooler Master
229+
[T]crisby <AK-47 (HS) (WB)> [T]keev
230+
[T]keev <Tec-9 (HS)> [CT]ALEX * Intel
231+
[T]crisby <AK-47 (HS)> [T]keev
232+
[T]keev <Tec-9> [T]keev
233+
```
234+
</details>

examples/print-kills/printkills.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"os"
7+
8+
dem "github.com/markus-wa/demoinfocs-golang"
9+
common "github.com/markus-wa/demoinfocs-golang/common"
10+
events "github.com/markus-wa/demoinfocs-golang/events"
11+
ex "github.com/markus-wa/demoinfocs-golang/examples"
12+
)
13+
14+
// Run like this: go run printkills.go -demo /path/to/demo.dem
15+
func main() {
16+
f, err := os.Open(ex.DemoPathFromArgs())
17+
defer f.Close()
18+
checkError(err)
19+
20+
p := dem.NewParser(f)
21+
22+
// Parse header
23+
_, err = p.ParseHeader()
24+
checkError(err)
25+
26+
// Register handler on kill events
27+
p.RegisterEventHandler(func(e events.PlayerKilledEvent) {
28+
var hs string
29+
if e.IsHeadshot {
30+
hs = " (HS)"
31+
}
32+
var wallBang string
33+
if e.PenetratedObjects > 0 {
34+
wallBang = " (WB)"
35+
}
36+
fmt.Printf("%s <%v%s%s> %s\n", formatPlayer(e.Killer), e.Weapon.Weapon, hs, wallBang, formatPlayer(e.Victim))
37+
})
38+
39+
// Parse to end
40+
err = p.ParseToEnd()
41+
checkError(err)
42+
}
43+
44+
func formatPlayer(p *common.Player) string {
45+
switch p.Team {
46+
case common.TeamTerrorists:
47+
return "[T]" + p.Name
48+
case common.TeamCounterTerrorists:
49+
return "[CT]" + p.Name
50+
}
51+
return p.Name
52+
}
53+
54+
func checkError(err error) {
55+
if err != nil {
56+
log.Fatal(err)
57+
}
58+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import (
4+
"os"
5+
"testing"
6+
)
7+
8+
// Just make sure the example runs
9+
func TestPrintKills(t *testing.T) {
10+
os.Args = []string{"cmd", "-demo", "../../cs-demos/default.dem"}
11+
12+
main()
13+
}

0 commit comments

Comments
 (0)