From 56f9db57ef9b01d8f049a41f203756ee628fba2e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 12 Mar 2025 16:37:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E4=BB=BB=E5=8A=A1=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/playroom/playroomCfg.go | 26 +++++++++++++++++++++++++ src/server/game/RegisterNetworkFunc.go | 12 +++++++----- src/server/gamedata/reader.go | 17 ++++++++++++++++ 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index 82a53a99..7a959ac0 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -226,3 +226,29 @@ func GetMoodEffect(Id int) (int, int) { } return gamedata.GetIntValue(data, "MType"), gamedata.GetIntValue(data, "MEffect") } + +func IsStokeCat(Id int) bool { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "StokeCatId") + if err != nil { + return false + } + return gamedata.GetIntValue(data, "Value") == Id +} + +func IsTakeCat(Id int) bool { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "TakeCatId") + if err != nil { + return false + } + Ids := gamedata.GetIntSliceValue(data, "Value") + return GoUtil.InArray(Id, Ids) +} + +func IsPlayCat(Id int) bool { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PlayCatId") + if err != nil { + return false + } + Ids := gamedata.GetIntSliceValue(data, "Value") + return GoUtil.InArray(Id, Ids) +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index d6c1bfc7..ea9cccc9 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -3025,18 +3025,20 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { }) return err } - if req.Id == 2 { + if playroomCfg.IsStokeCat(int(req.Id)) { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_STOKECAT}) } + if playroomCfg.IsPlayCat(int(req.Id)) { + player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PLAYCAT}) + } + if playroomCfg.IsTakeCat(int(req.Id)) { + player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_TAKECAT}) + } switch req.Type { case playroom.MOOD_TYPE_CLEAN: player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_CLEANCAT}) case playroom.MOOD_TYPE_FOOD: player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_FEEDCAT}) - case playroom.MOOD_TYPE_PLAY: - player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PLAYCAT}) - case playroom.MOOD_TYPE_TAKE: - player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_TAKECAT}) } player.PlayMod.save() LimitedTimePlayroomTrigger(player) diff --git a/src/server/gamedata/reader.go b/src/server/gamedata/reader.go index 71ce208a..e7ee6fdd 100644 --- a/src/server/gamedata/reader.go +++ b/src/server/gamedata/reader.go @@ -129,6 +129,23 @@ func GetIntValue(a interface{}, key string) int { return 0 } +func GetIntSliceValue(a interface{}, key string) []int { + if a == nil { + return nil + } + if v, ok := a.(map[string]interface{})[key]; ok { + if v == nil { + return nil + } + var r []int + for _, v := range v.([]interface{}) { + r = append(r, int(v.(float64))) + } + return r + } + return nil +} + func GetFloatValue(a interface{}, key string) float64 { if a == nil { return 0