@@ -55,12 +55,30 @@ func main() {
5555 m := make (map [string ]palrcon.Player )
5656
5757 for _ , player := range players {
58- m [player .SteamID ] = player
58+ if player .PlayerUID == "00000000" {
59+ continue
60+ }
61+
62+ m [player .PlayerUID ] = player
5963 }
6064
6165 return m
6266 }
6367
68+ retriedBoarcast := func (message string ) error {
69+ var err error
70+ for i := 0 ; i < 10 ; i ++ {
71+ err = palRCON .Broadcast (message )
72+ if err != nil {
73+ slog .Error ("failed to broadcast" , "error" , err )
74+ continue
75+ }
76+ return nil
77+ }
78+
79+ return fmt .Errorf ("failed to broadcast: %w" , err )
80+ }
81+
6482 for {
6583 {
6684 players , err := palRCON .GetPlayers ()
@@ -80,23 +98,24 @@ func main() {
8098 }
8199
82100 for _ , player := range players {
83- if _ , ok := prev [player .SteamID ]; ! ok {
84- err := palRCON . Broadcast (fmt .Sprintf ("joined:%s" , player .Name ))
101+ if _ , ok := prev [player .PlayerUID ]; ! ok {
102+ err := retriedBoarcast (fmt .Sprintf ("joined:%s" , player .Name ))
85103 if err != nil {
86104 slog .Error ("failed to broadcast" , "error" , err )
105+ continue
87106 }
88107
89108 slog .Info ("Player joined" , "player" , player )
90109 }
91110 }
92111 for _ , player := range prev {
93- if _ , ok := playersMap [player .SteamID ]; ! ok {
94- err := palRCON .Broadcast (fmt .Sprintf ("left:%s" , player .Name ))
112+ if _ , ok := playersMap [player .PlayerUID ]; ! ok {
113+ slog .Info ("Player left" , "player" , player )
114+
115+ err := retriedBoarcast (fmt .Sprintf ("left:%s" , player .Name ))
95116 if err != nil {
96117 slog .Error ("failed to broadcast" , "error" , err )
97118 }
98-
99- slog .Info ("Player left" , "player" , player )
100119 }
101120 }
102121
0 commit comments