活动补发邮件

This commit is contained in:
hahwu 2025-03-26 18:21:45 +08:00
parent 7797127879
commit c019b57fde
10 changed files with 149 additions and 30 deletions

View File

@ -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"))
}

View File

@ -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"))
}

View File

@ -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
}
}

View File

@ -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)
}

View File

@ -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 {

View File

@ -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

View File

@ -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
}
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {