mirror of
https://github.com/PretendoNetwork/friends.git
synced 2026-08-03 00:19:57 -05:00
Added "Player went offline" notifications
This commit is contained in:
parent
ad69375448
commit
f33ae1d660
55
main.go
55
main.go
|
|
@ -34,7 +34,9 @@ func main() {
|
|||
|
||||
lastOnline := nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
|
||||
updateUserLastOnlineTime(pid, lastOnline)
|
||||
sendUserWentOfflineWiiUNotifications(packet.Sender())
|
||||
|
||||
fmt.Println("Leaving")
|
||||
})
|
||||
|
|
@ -83,3 +85,56 @@ func main() {
|
|||
|
||||
nexServer.Listen(":60001")
|
||||
}
|
||||
|
||||
// Maybe this function should go in a different file?
|
||||
func sendUserWentOfflineWiiUNotifications(client *nex.Client) {
|
||||
lastOnline := nex.NewDateTime(0)
|
||||
lastOnline.FromTimestamp(time.Now())
|
||||
|
||||
nintendoNotificationEventGeneral := nexproto.NewNintendoNotificationEventGeneral()
|
||||
|
||||
nintendoNotificationEventGeneral.U32Param = 0
|
||||
nintendoNotificationEventGeneral.U64Param1 = 0
|
||||
nintendoNotificationEventGeneral.U64Param2 = lastOnline.Value()
|
||||
nintendoNotificationEventGeneral.StrParam = ""
|
||||
|
||||
eventObject := nexproto.NewNintendoNotificationEvent()
|
||||
eventObject.Type = 10
|
||||
eventObject.SenderPID = client.PID()
|
||||
eventObject.DataHolder = nex.NewDataHolder()
|
||||
eventObject.DataHolder.Name = "NintendoNotificationEventGeneral"
|
||||
eventObject.DataHolder.Object = nintendoNotificationEventGeneral
|
||||
|
||||
stream := nex.NewStreamOut(nexServer)
|
||||
stream.WriteStructure(eventObject)
|
||||
|
||||
rmcRequest := nex.NewRMCRequest()
|
||||
rmcRequest.SetProtocolID(nexproto.NintendoNotificationsProtocolID)
|
||||
rmcRequest.SetCallID(3810693103)
|
||||
rmcRequest.SetMethodID(nexproto.NintendoNotificationsMethodProcessNintendoNotificationEvent1)
|
||||
rmcRequest.SetParameters(stream.Bytes())
|
||||
|
||||
rmcRequestBytes := rmcRequest.Bytes()
|
||||
|
||||
friendList := getUserFriendList(client.PID())
|
||||
|
||||
for i := 0; i < len(friendList); i++ {
|
||||
friendPID := friendList[i].NNAInfo.PrincipalBasicInfo.PID
|
||||
connectedUser := connectedUsers[friendPID]
|
||||
|
||||
if connectedUser != nil {
|
||||
requestPacket, _ := nex.NewPacketV0(connectedUser.Client, nil)
|
||||
|
||||
requestPacket.SetVersion(0)
|
||||
requestPacket.SetSource(0xA1)
|
||||
requestPacket.SetDestination(0xAF)
|
||||
requestPacket.SetType(nex.DataPacket)
|
||||
requestPacket.SetPayload(rmcRequestBytes)
|
||||
|
||||
requestPacket.AddFlag(nex.FlagNeedsAck)
|
||||
requestPacket.AddFlag(nex.FlagReliable)
|
||||
|
||||
nexServer.Send(requestPacket)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user