Skip to content

Commit 588eca1

Browse files
committed
Fix bugs
1 parent 5c04939 commit 588eca1

2 files changed

Lines changed: 39 additions & 8 deletions

File tree

main.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

pkg/palrcon/palrcon.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,19 @@ func (p *palRCON) execute(command string) (string, error) {
5555
return result, fmt.Errorf("failed to execute the command: %w", err)
5656
}
5757

58-
return result, nil
58+
if len(result) == 0 {
59+
return result, nil
60+
}
61+
62+
raw := []byte(result)
63+
i := len(raw)
64+
for ; i > 0; i-- {
65+
if raw[i-1] != 0 {
66+
break
67+
}
68+
}
69+
70+
return string(raw[:i]), nil
5971
}
6072

6173
func (p *palRCON) GetPlayers() ([]Player, error) {

0 commit comments

Comments
 (0)