add support for JP chat command responses

This commit is contained in:
wish
2023-02-08 00:01:02 +11:00
parent a47bde7a4a
commit 132870f020
2 changed files with 81 additions and 29 deletions

View File

@@ -53,7 +53,7 @@ func init() {
} }
func sendDisabledCommandMessage(s *Session, cmd config.Command) { func sendDisabledCommandMessage(s *Session, cmd config.Command) {
sendServerChatMessage(s, fmt.Sprintf("%s command is disabled", cmd.Name)) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandDisabled"], cmd.Name))
} }
func sendServerChatMessage(s *Session, message string) { func sendServerChatMessage(s *Session, message string) {
@@ -82,7 +82,7 @@ func parseChatCommand(s *Session, command string) {
if strings.HasPrefix(command, commands["Reload"].Prefix) { if strings.HasPrefix(command, commands["Reload"].Prefix) {
// Flush all objects and users and reload // Flush all objects and users and reload
if commands["Reload"].Enabled { if commands["Reload"].Enabled {
sendServerChatMessage(s, "Reloading players...") sendServerChatMessage(s, s.server.dict["commandReload"])
var temp mhfpacket.MHFPacket var temp mhfpacket.MHFPacket
deleteNotif := byteframe.NewByteFrame() deleteNotif := byteframe.NewByteFrame()
for _, object := range s.stage.objects { for _, object := range s.stage.objects {
@@ -145,18 +145,18 @@ func parseChatCommand(s *Session, command string) {
if strings.HasPrefix(command, commands["KeyQuest"].Prefix) { if strings.HasPrefix(command, commands["KeyQuest"].Prefix) {
if commands["KeyQuest"].Enabled { if commands["KeyQuest"].Enabled {
if strings.HasPrefix(command, "!kqf get") { if strings.HasPrefix(command, fmt.Sprintf("%s get", commands["KeyQuest"].Prefix)) {
sendServerChatMessage(s, fmt.Sprintf("KQF: %x", s.kqf)) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandKqfGet"], s.kqf))
} else if strings.HasPrefix(command, "!kqf set") { } else if strings.HasPrefix(command, fmt.Sprintf("%s set", commands["KeyQuest"].Prefix)) {
var hexs string var hexs string
n, numerr := fmt.Sscanf(command, "!kqf set %s", &hexs) n, numerr := fmt.Sscanf(command, fmt.Sprintf("%s set %%s", commands["KeyQuest"].Prefix), &hexs)
if numerr != nil || n != 1 || len(hexs) != 16 { if numerr != nil || n != 1 || len(hexs) != 16 {
sendServerChatMessage(s, "Error in command. Format: !kqf set xxxxxxxxxxxxxxxx") sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandKqfSetError"], commands["KeyQuest"].Prefix))
} else { } else {
hexd, _ := hex.DecodeString(hexs) hexd, _ := hex.DecodeString(hexs)
s.kqf = hexd s.kqf = hexd
s.kqfOverride = true s.kqfOverride = true
sendServerChatMessage(s, "KQF set, please switch Land/World") sendServerChatMessage(s, s.server.dict["commandKqfSetSuccess"])
} }
} }
} else { } else {
@@ -168,13 +168,13 @@ func parseChatCommand(s *Session, command string) {
// Set account rights // Set account rights
if commands["Rights"].Enabled { if commands["Rights"].Enabled {
var v uint32 var v uint32
n, err := fmt.Sscanf(command, "!rights %d", &v) n, err := fmt.Sscanf(command, fmt.Sprintf("%s %%d", commands["Rights"].Prefix), &v)
if err != nil || n != 1 { if err != nil || n != 1 {
sendServerChatMessage(s, "Error in command. Format: !rights n") sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandRightsError"], commands["Rights"].Prefix))
} else { } else {
_, err = s.server.db.Exec("UPDATE users u SET rights=$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", v, s.charID) _, err = s.server.db.Exec("UPDATE users u SET rights=$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", v, s.charID)
if err == nil { if err == nil {
sendServerChatMessage(s, fmt.Sprintf("Set rights integer: %d", v)) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandRightsSuccess"], v))
} }
} }
} else { } else {
@@ -185,9 +185,9 @@ func parseChatCommand(s *Session, command string) {
if strings.HasPrefix(command, commands["Course"].Prefix) { if strings.HasPrefix(command, commands["Course"].Prefix) {
if commands["Course"].Enabled { if commands["Course"].Enabled {
var name string var name string
n, err := fmt.Sscanf(command, "!course %s", &name) n, err := fmt.Sscanf(command, fmt.Sprintf("%s %%s", commands["Course"].Prefix), &name)
if err != nil || n != 1 { if err != nil || n != 1 {
sendServerChatMessage(s, "Error in command. Format: !course <name>") sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandCourseError"], commands["Course"].Prefix))
} else { } else {
name = strings.ToLower(name) name = strings.ToLower(name)
for _, course := range mhfpacket.Courses() { for _, course := range mhfpacket.Courses() {
@@ -205,11 +205,11 @@ func parseChatCommand(s *Session, command string) {
}) })
if ei != -1 { if ei != -1 {
s.courses = append(s.courses[:ei], s.courses[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.server.dict["commandCourseDisabled"], 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.server.dict["commandCourseEnabled"], course.Aliases[0]))
} }
var newInt uint32 var newInt uint32
for _, course := range s.courses { for _, course := range s.courses {
@@ -218,7 +218,7 @@ func parseChatCommand(s *Session, command string) {
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) 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) updateRights(s)
} else { } else {
sendServerChatMessage(s, fmt.Sprintf(`%s Course is locked`, course.Aliases[0])) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandCourseLocked"], course.Aliases[0]))
} }
} }
} }
@@ -234,42 +234,42 @@ func parseChatCommand(s *Session, command string) {
if getRaviSemaphore(s.server) != nil { if getRaviSemaphore(s.server) != nil {
s.server.raviente.Lock() s.server.raviente.Lock()
if !strings.HasPrefix(command, "!ravi ") { if !strings.HasPrefix(command, "!ravi ") {
sendServerChatMessage(s, "No Raviente command specified!") sendServerChatMessage(s, s.server.dict["commandRaviNoCommand"])
} else { } else {
if strings.HasPrefix(command, "!ravi start") { if strings.HasPrefix(command, "!ravi start") {
if s.server.raviente.register.startTime == 0 { if s.server.raviente.register.startTime == 0 {
s.server.raviente.register.startTime = s.server.raviente.register.postTime s.server.raviente.register.startTime = s.server.raviente.register.postTime
sendServerChatMessage(s, "The Great Slaying will begin in a moment") sendServerChatMessage(s, s.server.dict["commandRaviStartSuccess"])
s.notifyRavi() s.notifyRavi()
} else { } else {
sendServerChatMessage(s, "The Great Slaying has already begun!") sendServerChatMessage(s, s.server.dict["commandRaviStartError"])
} }
} else if strings.HasPrefix(command, "!ravi cm") || strings.HasPrefix(command, "!ravi checkmultiplier") { } else if strings.HasPrefix(command, "!ravi cm") || strings.HasPrefix(command, "!ravi checkmultiplier") {
sendServerChatMessage(s, fmt.Sprintf("Raviente multiplier is currently %dx", s.server.raviente.GetRaviMultiplier(s.server))) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandRaviMultiplier"], s.server.raviente.GetRaviMultiplier(s.server)))
} else if strings.HasPrefix(command, "!ravi sr") || strings.HasPrefix(command, "!ravi sendres") { } else if strings.HasPrefix(command, "!ravi sr") || strings.HasPrefix(command, "!ravi sendres") {
if s.server.raviente.state.stateData[28] > 0 { if s.server.raviente.state.stateData[28] > 0 {
sendServerChatMessage(s, "Sending resurrection support!") sendServerChatMessage(s, s.server.dict["commandRaviResSuccess"])
s.server.raviente.state.stateData[28] = 0 s.server.raviente.state.stateData[28] = 0
} else { } else {
sendServerChatMessage(s, "Resurrection support has not been requested!") sendServerChatMessage(s, s.server.dict["commandRaviResError"])
} }
} else if strings.HasPrefix(command, "!ravi ss") || strings.HasPrefix(command, "!ravi sendsed") { } else if strings.HasPrefix(command, "!ravi ss") || strings.HasPrefix(command, "!ravi sendsed") {
sendServerChatMessage(s, "Sending sedation support if requested!") sendServerChatMessage(s, s.server.dict["commandRaviSedSuccess"])
// Total BerRavi HP // Total BerRavi HP
HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4] HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4]
s.server.raviente.support.supportData[1] = HP s.server.raviente.support.supportData[1] = HP
} else if strings.HasPrefix(command, "!ravi rs") || strings.HasPrefix(command, "!ravi reqsed") { } else if strings.HasPrefix(command, "!ravi rs") || strings.HasPrefix(command, "!ravi reqsed") {
sendServerChatMessage(s, "Requesting sedation support!") sendServerChatMessage(s, s.server.dict["commandRaviRequest"])
// Total BerRavi HP // Total BerRavi HP
HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4] HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4]
s.server.raviente.support.supportData[1] = HP + 12 s.server.raviente.support.supportData[1] = HP + 12
} else { } else {
sendServerChatMessage(s, "Raviente command not recognised!") sendServerChatMessage(s, s.server.dict["commandRaviError"])
} }
} }
s.server.raviente.Unlock() s.server.raviente.Unlock()
} else { } else {
sendServerChatMessage(s, "No one has joined the Great Slaying!") sendServerChatMessage(s, s.server.dict["commandRaviNoPlayers"])
} }
} else { } else {
sendDisabledCommandMessage(s, commands["Raviente"]) sendDisabledCommandMessage(s, commands["Raviente"])
@@ -279,11 +279,11 @@ func parseChatCommand(s *Session, command string) {
if strings.HasPrefix(command, commands["Teleport"].Prefix) { if strings.HasPrefix(command, commands["Teleport"].Prefix) {
if commands["Teleport"].Enabled { if commands["Teleport"].Enabled {
var x, y int16 var x, y int16
n, err := fmt.Sscanf(command, "!tele %d %d", &x, &y) n, err := fmt.Sscanf(command, fmt.Sprintf("%s %%d %%d", commands["Teleport"].Prefix), &x, &y)
if err != nil || n != 2 { if err != nil || n != 2 {
sendServerChatMessage(s, "Invalid command. Usage:\"!tele 500 500\"") sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandTeleportError"], commands["Teleport"].Prefix))
} else { } else {
sendServerChatMessage(s, fmt.Sprintf("Teleporting to %d %d", x, y)) sendServerChatMessage(s, fmt.Sprintf(s.server.dict["commandTeleportSuccess"], x, y))
// Make the inside of the casted binary // Make the inside of the casted binary
payload := byteframe.NewByteFrame() payload := byteframe.NewByteFrame()

View File

@@ -6,6 +6,32 @@ func getLangStrings(s *Server) map[string]string {
case "jp": case "jp":
strings["language"] = "日本語" strings["language"] = "日本語"
strings["cafeReset"] = "%d/%dにリセット" strings["cafeReset"] = "%d/%dにリセット"
strings["commandDisabled"] = "%sのコマンドは無効です"
strings["commandReload"] = "リロードします"
strings["commandKqfGet"] = "現在のキークエストフラグ:%x"
strings["commandKqfSetError"] = "キークエコマンドエラー 例:%s set xxxxxxxxxxxxxxxx"
strings["commandKqfSetSuccess"] = "キークエストのフラグが更新されました。ワールド/ランドを移動してください"
strings["commandRightsError"] = "コース更新コマンドエラー 例:%s x"
strings["commandRightsSuccess"] = "コース情報を更新しました:%d"
strings["commandCourseError"] = "コース確認コマンドエラー 例:%s <name>"
strings["commandCourseDisabled"] = "%sコースは無効です"
strings["commandCourseEnabled"] = "%sコースは有効です"
strings["commandCourseLocked"] = "%sコースはロックされています"
strings["commandTeleportError"] = "テレポートコマンドエラー 構文:%s x y"
strings["commandTeleportSuccess"] = "%d %dにテレポート"
strings["commandRaviNoCommand"] = "ラヴィコマンドが指定されていません"
strings["commandRaviStartSuccess"] = "大討伐を開始します"
strings["commandRaviStartError"] = "大討伐は既に開催されています"
strings["commandRaviMultiplier"] = "ラヴィダメージ倍率:x%d"
strings["commandRaviResSuccess"] = "復活支援を実行します"
strings["commandRaviResError"] = "復活支援は実行されませんでした"
strings["commandRaviSedSuccess"] = "鎮静支援を実行します"
strings["commandRaviRequest"] = "鎮静支援を要請します"
strings["commandRaviError"] = "ラヴィコマンドが認識されません"
strings["commandRaviNoPlayers"] = "誰も大討伐に参加していません"
strings["ravienteBerserk"] = "<大討伐:猛狂期>が開催されました!" strings["ravienteBerserk"] = "<大討伐:猛狂期>が開催されました!"
strings["ravienteExtreme"] = "<大討伐:猛狂期【極】>が開催されました!" strings["ravienteExtreme"] = "<大討伐:猛狂期【極】>が開催されました!"
strings["ravienteExtremeLimited"] = "<大討伐:猛狂期【極】(制限付)>が開催されました!" strings["ravienteExtremeLimited"] = "<大討伐:猛狂期【極】(制限付)>が開催されました!"
@@ -28,6 +54,32 @@ func getLangStrings(s *Server) map[string]string {
default: default:
strings["language"] = "English" strings["language"] = "English"
strings["cafeReset"] = "Resets on %d/%d" strings["cafeReset"] = "Resets on %d/%d"
strings["commandDisabled"] = "%s command is disabled"
strings["commandReload"] = "Reloading players..."
strings["commandKqfGet"] = "KQF: %x"
strings["commandKqfSetError"] = "Error in command. Format: %s set xxxxxxxxxxxxxxxx"
strings["commandKqfSetSuccess"] = "KQF set, please switch Land/World"
strings["commandRightsError"] = "Error in command. Format: %s x"
strings["commandRightsSuccess"] = "Set rights integer: %d"
strings["commandCourseError"] = "Error in command. Format: %s <name>"
strings["commandCourseDisabled"] = "%s Course disabled"
strings["commandCourseEnabled"] = "%s Course enabled"
strings["commandCourseLocked"] = "%s Course is locked"
strings["commandTeleportError"] = "Error in command. Format: %s x y"
strings["commandTeleportSuccess"] = "Teleporting to %d %d"
strings["commandRaviNoCommand"] = "No Raviente command specified!"
strings["commandRaviStartSuccess"] = "The Great Slaying will begin in a moment"
strings["commandRaviStartError"] = "The Great Slaying has already begun!"
strings["commandRaviMultiplier"] = "Raviente multiplier is currently %dx"
strings["commandRaviResSuccess"] = "Sending resurrection support!"
strings["commandRaviResError"] = "Resurrection support has not been requested!"
strings["commandRaviSedSuccess"] = "Sending sedation support if requested!"
strings["commandRaviRequest"] = "Requesting sedation support!"
strings["commandRaviError"] = "Raviente command not recognised!"
strings["commandRaviNoPlayers"] = "No one has joined the Great Slaying!"
strings["ravienteBerserk"] = "<Great Slaying: Berserk> is being held!" strings["ravienteBerserk"] = "<Great Slaying: Berserk> is being held!"
strings["ravienteExtreme"] = "<Great Slaying: Extreme> is being held!" strings["ravienteExtreme"] = "<Great Slaying: Extreme> is being held!"
strings["ravienteExtremeLimited"] = "<Great Slaying: Extreme (Limited)> is being held!" strings["ravienteExtremeLimited"] = "<Great Slaying: Extreme (Limited)> is being held!"