From c019b57fde6c4fbfe8911d86904ca1f3e17838a7 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 26 Mar 2025 18:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E8=A1=A5=E5=8F=91=E9=82=AE?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/activity/ActivityCfg.go | 9 +++ src/server/conf/item/ItemCfg.go | 10 +++ src/server/conf/language/languageCfg.go | 29 ++++++++ src/server/conf/mail/mailCfg.go | 12 ++++ src/server/game/ActivityFunc.go | 74 +++++++++++++++++--- src/server/game/Trigger.go | 13 +--- src/server/game/mod/base/Base.go | 5 +- src/server/game/mod/guessColor/guessColor.go | 9 ++- src/server/game/mod/mining/mining.go | 9 ++- src/server/game/mod/race/race.go | 9 ++- 10 files changed, 149 insertions(+), 30 deletions(-) create mode 100644 src/server/conf/language/languageCfg.go diff --git a/src/server/conf/activity/ActivityCfg.go b/src/server/conf/activity/ActivityCfg.go index 6acada21..f528c787 100644 --- a/src/server/conf/activity/ActivityCfg.go +++ b/src/server/conf/activity/ActivityCfg.go @@ -2,6 +2,7 @@ package activityCfg import ( "server/GoUtil" + languageCfg "server/conf/language" "server/game/mod/item" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" @@ -97,3 +98,11 @@ func GetAcitivityRewardItems(ActId int) []*item.Item { } return nil } + +func GetActivityTitle(ActId, Lang int) string { + data, err := gamedata.GetDataByIntKey(CFG_ACTIVITY, ActId) + if err != nil { + log.Debug("GetActivityTitle err:%v", err) + } + return languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Title")) +} diff --git a/src/server/conf/item/ItemCfg.go b/src/server/conf/item/ItemCfg.go index 8b027b4a..a9cd90e9 100644 --- a/src/server/conf/item/ItemCfg.go +++ b/src/server/conf/item/ItemCfg.go @@ -1,6 +1,7 @@ package itemCfg import ( + languageCfg "server/conf/language" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" "strconv" @@ -46,3 +47,12 @@ func GetItemEffectList(Id int) []int { } return res } + +func GetItemName(Id, Lang int) string { + data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) + if err != nil { + log.Debug("ItemCfg GetItemName Id:%v not found", Id) + return "" + } + return languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Name")) +} diff --git a/src/server/conf/language/languageCfg.go b/src/server/conf/language/languageCfg.go new file mode 100644 index 00000000..3ab884fe --- /dev/null +++ b/src/server/conf/language/languageCfg.go @@ -0,0 +1,29 @@ +package languageCfg + +import "server/gamedata" + +const ( + CFG_LANGUAGE = "languageData" +) + +const ( + LANGUAGE_EN = 1 + LANGUAGE_CN = 2 +) + +func init() { + gamedata.InitCfg(CFG_LANGUAGE) +} + +func GetLanguage(lang int, key string) string { + data, err := gamedata.GetDataByKey(CFG_LANGUAGE, key) + if err != nil { + return key + } + switch lang { + case LANGUAGE_EN: + return gamedata.GetStringValue(data, "English") + default: + return key + } +} diff --git a/src/server/conf/mail/mailCfg.go b/src/server/conf/mail/mailCfg.go index 6b11e0db..98952eb8 100644 --- a/src/server/conf/mail/mailCfg.go +++ b/src/server/conf/mail/mailCfg.go @@ -1,7 +1,9 @@ package mailCfg import ( + "fmt" "server/GoUtil" + languageCfg "server/conf/language" "server/game/mod/item" "server/gamedata" "strings" @@ -63,3 +65,13 @@ func GetTriggerMail() []*TriggerMail { } return ret } + +func GetRecallMail(Lang int, Title, ItemName string) (string, string) { + data, err := gamedata.GetDataByIntKey(CFG_MAIL, 12) + if err != nil { + return "", "" + } + mt := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Title")) + mc := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Content")) + return fmt.Sprintf(mt, Title), fmt.Sprintf(mc, Title, ItemName) +} diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index b4512cc1..23963ab5 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -2,24 +2,73 @@ package game import ( "server/GoUtil" + activityCfg "server/conf/activity" guesscolorCfg "server/conf/guessColor" + itemCfg "server/conf/item" + mailCfg "server/conf/mail" miningCfg "server/conf/mining" raceCfg "server/conf/race" "server/game/mod/item" + "server/game/mod/mail" "server/msg" ) // 活动模块 登录 func ActivityLogin(p *Player) { - ActivityInfo := GetActivityInfo(p, ACT_TYPE_MINING) - if ActivityInfo != nil { - MiningMod := p.PlayMod.getMiningMod() - MiningMod.Login(ActivityInfo.Id) + + ItemMod := p.PlayMod.getItemMod() + MailMod := p.PlayMod.getMailMod() + BaseMod := p.PlayMod.getBaseMod() + Lang := BaseMod.GetLang() + + // 挖矿 + ActivityId := GetActivityId(p, ACT_TYPE_MINING) + MiningMod := p.PlayMod.getMiningMod() + OldId := MiningMod.Login(ActivityId) + if OldId != 0 { + ItemId := guesscolorCfg.GetActivityItemId(OldId) + ItemNum := ItemMod.GetItem(ItemId) + if ItemNum != 0 { + ItemMod.AddItem(ItemId, -ItemNum) + ItemName := itemCfg.GetItemName(ItemId, Lang) + ActivityTitle := activityCfg.GetActivityTitle(ActivityId, Lang) + mt, mc := mailCfg.GetRecallMail(Lang, ActivityTitle, ItemName) + Items := []*item.Item{item.NewItem(ItemId, ItemNum)} + MailMod.Send(mt, mc, Items, mail.MAIL_TYPE_NORMAL) + } } - ActivityInfo = GetActivityInfo(p, ACT_TYPE_GUESS_COLOR) - if ActivityInfo != nil { - GuessColorMod := p.PlayMod.getGuessColorMod() - GuessColorMod.Login(ActivityInfo.Id) + // 猜颜色 + ActivityId = GetActivityId(p, ACT_TYPE_GUESS_COLOR) + GuessColorMod := p.PlayMod.getGuessColorMod() + OldId = GuessColorMod.Login(ActivityId) + if OldId != 0 { + ItemId := guesscolorCfg.GetActivityItemId(OldId) + ItemNum := ItemMod.GetItem(ItemId) + if ItemNum != 0 { + ItemMod.AddItem(ItemId, -ItemNum) + ItemName := itemCfg.GetItemName(ItemId, Lang) + ActivityTitle := activityCfg.GetActivityTitle(ActivityId, Lang) + mt, mc := mailCfg.GetRecallMail(Lang, ActivityTitle, ItemName) + Items := []*item.Item{item.NewItem(ItemId, ItemNum)} + MailMod.Send(mt, mc, Items, mail.MAIL_TYPE_NORMAL) + } + } + + // 赛跑 + ActivityId = GetActivityId(p, ACT_TYPE_GUESS_COLOR) + RaceMod := p.PlayMod.getRaceMod() + OldId = RaceMod.Login(ActivityId) + if OldId != 0 { + ItemId := guesscolorCfg.GetActivityItemId(OldId) + ItemNum := ItemMod.GetItem(ItemId) + if ItemNum != 0 { + ItemMod.AddItem(ItemId, -ItemNum) + ItemName := itemCfg.GetItemName(ItemId, Lang) + ActivityTitle := activityCfg.GetActivityTitle(ActivityId, Lang) + mt, mc := mailCfg.GetRecallMail(Lang, ActivityTitle, ItemName) + Items := []*item.Item{item.NewItem(ItemId, ItemNum)} + MailMod.Send(mt, mc, Items, mail.MAIL_TYPE_NORMAL) + } } } @@ -46,6 +95,15 @@ func GetActivityInfo(p *Player, actType int) *ActivityInfo { return nil } +func GetActivityId(p *Player, actType int) int { + for _, v := range p.activity { + if v.Type == actType { + return v.Id + } + } + return 0 +} + func GetActivityInfoById(p *Player, Id int) *ActivityInfo { for _, v := range p.activity { if v.Id == Id { diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 493029ed..fbf6e9e8 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -6,10 +6,10 @@ import ( "server/MergeConst" "server/conf" champshipCfg "server/conf/champship" + languageCfg "server/conf/language" mailCfg "server/conf/mail" mergeDataCfg "server/conf/mergeData" "server/db" - "server/game/mod/base" "server/game/mod/chess" "server/game/mod/item" "server/game/mod/mail" @@ -46,15 +46,8 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { tr := false for _, v := range t { if checkTriggerCondition(player, v.Trigger) { - Title := "" - Content := "" - if BaseMod.GetLang() == base.LANG_CN { - Title = v.Title - Content = v.Content - } else { - Title = v.EnglistTitle - Content = v.EnglistContent - } + Title := languageCfg.GetLanguage(BaseMod.Lang, v.Title) + Content := languageCfg.GetLanguage(BaseMod.Lang, v.Content) MailMod.Send(Title, Content, v.Items, mail.MAIL_TYPE_NORMAL) MailMod.AddTriggerMail(v.Id) tr = true diff --git a/src/server/game/mod/base/Base.go b/src/server/game/mod/base/Base.go index 58292a81..2f1e9dc8 100644 --- a/src/server/game/mod/base/Base.go +++ b/src/server/game/mod/base/Base.go @@ -4,14 +4,13 @@ import ( "fmt" "server/GoUtil" baseCfg "server/conf/base" + languageCfg "server/conf/language" "server/game/mod/item" "server/msg" ) const ( ModuleName = "base" - LANG_EN = 1 //英文 - LANG_CN = 2 //中文 ) type Base struct { @@ -49,7 +48,7 @@ func (b *Base) InitData(Uid int) { b.NickName = fmt.Sprintf("Player_%d", Uid) } if b.Lang == 0 { - b.Lang = LANG_EN + b.Lang = languageCfg.LANGUAGE_EN } } diff --git a/src/server/game/mod/guessColor/guessColor.go b/src/server/game/mod/guessColor/guessColor.go index d14bf195..f81b673c 100644 --- a/src/server/game/mod/guessColor/guessColor.go +++ b/src/server/game/mod/guessColor/guessColor.go @@ -52,12 +52,14 @@ func (g *GuessColorMod) InitData() { } } -func (g *GuessColorMod) Login(Id int) { +func (g *GuessColorMod) Login(Id int) int { + OldId := g.Id if Id == 0 { - return + g.Id = 0 + return g.Id } if g.Id == Id { - return + return 0 } g.Id = Id g.Pass = 1 @@ -70,6 +72,7 @@ func (g *GuessColorMod) Login(Id int) { g.Guess = 0 g.MapList = make([]map[int32]int32, 0) g.OMap = make(map[int32]int32) + return OldId } func (g *GuessColorMod) ZeroUpdate(Id int) { diff --git a/src/server/game/mod/mining/mining.go b/src/server/game/mod/mining/mining.go index d881b2d3..7d169353 100644 --- a/src/server/game/mod/mining/mining.go +++ b/src/server/game/mod/mining/mining.go @@ -20,18 +20,21 @@ func (m *MiningMod) InitData() { } } -func (m *MiningMod) Login(Id int) { +func (m *MiningMod) Login(Id int) int { + OldId := m.Id if Id == 0 { - return + m.Id = 0 + return OldId } if m.Id == Id { - return + return 0 } m.Id = Id m.Map = make(map[int32]string) m.Gem = make([]int, 0) m.Pass = 1 m.Mining = 0 + return m.Id } func (m *MiningMod) ZeroUpdate(Id int) { diff --git a/src/server/game/mod/race/race.go b/src/server/game/mod/race/race.go index a9d80807..79aef20f 100644 --- a/src/server/game/mod/race/race.go +++ b/src/server/game/mod/race/race.go @@ -24,12 +24,14 @@ type Opponent struct { Progress int } -func (r *RaceMod) Login(Id int) { +func (r *RaceMod) Login(Id int) int { + OldId := r.Id if Id == 0 { - return + r.Id = 0 + return OldId } if r.Id == Id { - return + return 0 } r.Id = Id r.Pass = 1 @@ -38,6 +40,7 @@ func (r *RaceMod) Login(Id int) { r.Progress = 0 r.Rank = 0 r.Opponent = nil + return OldId } func (r *RaceMod) ZeroUpdate(Id int) {