mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 07:55:33 +01:00
update rights integer via struct
This commit is contained in:
@@ -3,6 +3,7 @@ package mhfpacket
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
ps "erupe-ce/common/pascalstring"
|
ps "erupe-ce/common/pascalstring"
|
||||||
|
"golang.org/x/exp/slices"
|
||||||
|
|
||||||
"erupe-ce/common/byteframe"
|
"erupe-ce/common/byteframe"
|
||||||
"erupe-ce/network"
|
"erupe-ce/network"
|
||||||
@@ -95,7 +96,11 @@ func Courses() []Course {
|
|||||||
// GetCourseStruct returns a slice of Course(s) from a rights integer
|
// GetCourseStruct returns a slice of Course(s) from a rights integer
|
||||||
func GetCourseStruct(rights uint32) []Course {
|
func GetCourseStruct(rights uint32) []Course {
|
||||||
var resp []Course
|
var resp []Course
|
||||||
for _, course := range Courses() {
|
s := Courses()
|
||||||
|
slices.SortStableFunc(s, func(i, j Course) bool {
|
||||||
|
return i.ID > j.ID
|
||||||
|
})
|
||||||
|
for _, course := range s {
|
||||||
if rights-course.Value < 0x80000000 {
|
if rights-course.Value < 0x80000000 {
|
||||||
resp = append(resp, course)
|
resp = append(resp, course)
|
||||||
rights -= course.Value
|
rights -= course.Value
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ func logoutPlayer(s *Session) {
|
|||||||
timePlayed += sessionTime
|
timePlayed += sessionTime
|
||||||
|
|
||||||
var rpGained int
|
var rpGained int
|
||||||
if s.FindCourse("Netcafe").Value != 0 {
|
if s.FindCourse("Netcafe").ID != 0 {
|
||||||
rpGained = timePlayed / 900
|
rpGained = timePlayed / 900
|
||||||
timePlayed = timePlayed % 900
|
timePlayed = timePlayed % 900
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -325,22 +325,28 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
if strings.ToLower(name) == strings.ToLower(alias) {
|
if strings.ToLower(name) == strings.ToLower(alias) {
|
||||||
if slices.Contains(s.server.erupeConfig.Courses, config.Course{Name: course.Aliases[0], Enabled: true}) {
|
if slices.Contains(s.server.erupeConfig.Courses, config.Course{Name: course.Aliases[0], Enabled: true}) {
|
||||||
if s.FindCourse(name).Value != 0 {
|
if s.FindCourse(name).Value != 0 {
|
||||||
existingIndex := -1
|
ei := slices.IndexFunc(s.courses, func(c mhfpacket.Course) bool {
|
||||||
for i, course := range s.courses {
|
for _, alias := range c.Aliases {
|
||||||
for _, alias := range course.Aliases {
|
|
||||||
if strings.ToLower(name) == strings.ToLower(alias) {
|
if strings.ToLower(name) == strings.ToLower(alias) {
|
||||||
existingIndex = i
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return false
|
||||||
if existingIndex >= 0 {
|
})
|
||||||
s.courses = append(s.courses[:existingIndex], s.courses[existingIndex+1:]...)
|
if ei != -1 {
|
||||||
|
s.courses = append(s.courses[:ei], s.courses[ei+1:]...)
|
||||||
sendServerChatMessage(s, fmt.Sprintf(`%s Course disabled.`, course.Aliases[0]))
|
sendServerChatMessage(s, fmt.Sprintf(`%s Course disabled.`, course.Aliases[0]))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
s.courses = append(s.courses, course)
|
s.courses = append(s.courses, course)
|
||||||
sendServerChatMessage(s, fmt.Sprintf(`%s Course enabled.`, course.Aliases[0]))
|
sendServerChatMessage(s, fmt.Sprintf(`%s Course enabled.`, course.Aliases[0]))
|
||||||
}
|
}
|
||||||
|
var newInt uint32
|
||||||
|
for _, course := range s.courses {
|
||||||
|
newInt += course.Value
|
||||||
|
}
|
||||||
|
s.server.db.Exec("UPDATE users u SET rights=$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", newInt, s.charID)
|
||||||
|
updateRights(s)
|
||||||
} else {
|
} else {
|
||||||
sendServerChatMessage(s, fmt.Sprintf(`%s Course is locked.`, course.Aliases[0]))
|
sendServerChatMessage(s, fmt.Sprintf(`%s Course is locked.`, course.Aliases[0]))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user