/
NuLookup.go
96 lines (80 loc) · 2.19 KB
/
NuLookup.go
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package fesl
import (
"fmt"
"strconv"
"github.com/Synaxis/bfheroesFesl/inter/network"
"github.com/Synaxis/bfheroesFesl/inter/network/codec"
"github.com/sirupsen/logrus"
)
type ansNuLookupUserInfo struct {
TXN string `fesl:"TXN"`
UserInfo []userInfo `fesl:"userInfo"`
}
type userInfo struct {
Namespace string `fesl:"namespace"`
XUID int `fesl:"xuid"`
MasterUserID string `fesl:"masterUserId"`
UserID string `fesl:"userId"`
UserName string `fesl:"userName"`
ClientID string `fesl:"cid"`
}
func (fm *Fesl) NuLookupUserInfo(event network.EvProcess) {
if event.Client.HashState.Get("clientType") == "server" && event.Process.Msg["userInfo.0.userName"] == "MargeSimpson" {
fm.NuLookupUserInfoServer(event)
return
}
answer := ansNuLookupUserInfo{
TXN: "NuLookupUserInfo",
UserInfo: []userInfo{}}
keys, _ := strconv.Atoi(event.Process.Msg["userInfo.[]"])
for i := 0; i < keys; i++ {
heroNamePkt := event.Process.Msg[fmt.Sprintf("userInfo.%d.userName", i)]
var id, userID, heroName, online string
err := fm.db.stmtGetHeroByName.QueryRow(heroNamePkt).Scan(&id, &userID, //br
&heroName, &online) //auth
if err != nil {
return
}
answer.UserInfo = append(answer.UserInfo, userInfo{
UserName: heroName,
UserID: id,
MasterUserID: id,
Namespace: "MAIN",
XUID: 24,
ClientID: heroName,
})
}
event.Client.Answer(&codec.Packet{
Content: answer,
Send: event.Process.HEX,
Message: acct,
})
}
// NuLookupUserInfoServer - Server Login 1step
func (fm *Fesl) NuLookupUserInfoServer(event network.EvProcess) {
var err error
var id, userID, servername, secretKey, username string
err = fm.db.stmtGetServerByID.QueryRow(event.Client.HashState.Get("sID")).Scan(&id, &userID, //br
&servername, &secretKey, &username)
if err != nil {
logrus.Errorln(err)
return
}
HEX := event.Process.HEX
event.Client.Answer(&codec.Packet{
Content: ansNuLookupUserInfo{
TXN: "NuLookupUserInfo",
UserInfo: []userInfo{
{
Namespace: "MAIN",
XUID: 24,
MasterUserID: "1",
UserID: "1",
UserName: servername,
},
},
},
Send: HEX,
Message: acct,
})
}