diff --git a/src/server/conf/mining/mining_cfg.go b/src/server/conf/mining/mining_cfg.go index 6ce840f3..1d85c6e3 100644 --- a/src/server/conf/mining/mining_cfg.go +++ b/src/server/conf/mining/mining_cfg.go @@ -46,6 +46,14 @@ func GetLoseItem(Id int) []*item.Item { return gamedata.GetItemList(data, "ItemCost") } +func GetStartItemNum(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "StartItemNum") +} + func GetPassArea(Id int) int { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { diff --git a/src/server/game/activity_func.go b/src/server/game/activity_func.go index 377eceda..80d3f9c1 100644 --- a/src/server/game/activity_func.go +++ b/src/server/game/activity_func.go @@ -16,6 +16,7 @@ import ( "server/game/mod/mail" GoUtil "server/game_util" "server/msg" + "server/pkg/github.com/name5566/leaf/log" ) // 活动模块 登录 @@ -77,6 +78,16 @@ func (p *Player) ActivityLogin() { p.SendActivityMail(ItemId, ItemNum, PassActivityId, RewardItems) } } + + // 初始化活动道具 + initItem := p.GetMiningMod().GetInitItem() + if len(initItem) > 0 { + err := p.HandleItem(initItem, "") + if err != nil { + log.Debug("ActivityLogin initItem err : %s", err) + } + } + } // 发送活动邮件 diff --git a/src/server/game/charge_func.go b/src/server/game/charge_func.go index 3603cb55..52fecc2e 100644 --- a/src/server/game/charge_func.go +++ b/src/server/game/charge_func.go @@ -80,7 +80,7 @@ func (p *Player) ActivityFire(ChargeId int) { return } p.PlayMod.save() - p.initAcitivity() + p.initActivity() p.BackDataActivity() } diff --git a/src/server/game/gm_handler.go b/src/server/game/gm_handler.go index d503df46..c5f5fc00 100644 --- a/src/server/game/gm_handler.go +++ b/src/server/game/gm_handler.go @@ -101,7 +101,7 @@ func ReqGmCommand_(player *Player, Command string) error { player.PlayMod.getBaseMod().Level = num player.PlayMod.getBaseMod().Exp = 0 player.PushClientRes(player.PlayerBaseMod.BackAsset()) - player.initAcitivity() + player.initActivity() player.PlayMod.getGuideTaskMod().Unlock(num) player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV, nil, 1) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) @@ -124,7 +124,7 @@ func ReqGmCommand_(player *Player, Command string) error { ActivityMod.Var = nil ActivityMod.InitData() player.PlayMod.save() - player.initAcitivity() + player.initActivity() player.BackDataActivity() case "weekUpdate": VarMod := player.PlayMod.getVarMod() diff --git a/src/server/game/mod/mining/mining.go b/src/server/game/mod/mining/mining.go index 8a020f0d..f31e552b 100644 --- a/src/server/game/mod/mining/mining.go +++ b/src/server/game/mod/mining/mining.go @@ -7,11 +7,12 @@ import ( ) type MiningMod struct { - Id int - Map map[int32]string - Gem []int - Pass int - Mining int + Id int + Map map[int32]string + Gem []int + Pass int + Mining int + InitItem bool } func (m *MiningMod) InitData() { @@ -34,9 +35,26 @@ func (m *MiningMod) Login(Id int) int { m.Gem = nil m.Pass = 1 m.Mining = 0 + m.InitItem = false return OldId } +func (m *MiningMod) GetInitItem() []*item.Item { + if m.InitItem { + return nil + } + if m.Id == 0 { + return nil + } + initItemNum := miningCfg.GetStartItemNum(m.Id) + initItemId := miningCfg.GetActivityItemId(m.Id) + if initItemNum > 0 && initItemId > 0 { + m.InitItem = true + return []*item.Item{item.NewItem(initItemId, initItemNum)} + } + return nil +} + func (m *MiningMod) ZeroUpdate(Id int) { m.Login(Id) } diff --git a/src/server/game/mod_factory.go b/src/server/game/mod_factory.go index f7ba48bd..12118ed9 100644 --- a/src/server/game/mod_factory.go +++ b/src/server/game/mod_factory.go @@ -12,6 +12,7 @@ import ( "server/game/mod/face" "server/game/mod/friend" "server/game/mod/fur" + "server/game/mod/item" limitedTimeEvent "server/game/mod/limited_time_event" "server/game/mod/mail" "server/game/mod/mining" @@ -90,3 +91,7 @@ func (p *Player) GetMiningMod() *mining.MiningMod { func (p *Player) GetDailyTaskMod() *dailyTask.DailyTaskMod { return p.PlayMod.getDailyTaskMod() } + +func (p *Player) GetItemMod() *item.ItemMod { + return p.PlayMod.getItemMod() +} diff --git a/src/server/game/player_base_mod.go b/src/server/game/player_base_mod.go index 83e5557a..8f0628f7 100644 --- a/src/server/game/player_base_mod.go +++ b/src/server/game/player_base_mod.go @@ -561,7 +561,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) player.PushClientRes(OrderMod.BackData()) // 重载活动 - player.initAcitivity() + player.initActivity() player.BackDataActivity() player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_UPLV}) player.TeLog("level_up", map[string]interface{}{ diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 69841604..1f778886 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -248,7 +248,7 @@ func (p *Player) InitPlayer(UserName string) error { log.Debug("AddFunc failed:", err) } p.McronSave.Start() - p.initAcitivity() + p.initActivity() p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() @@ -307,7 +307,7 @@ func (p *Player) InitPlayerByUid(Uid int) error { log.Debug("AddFunc failed:", err) } p.McronSave.Start() - p.initAcitivity() + p.initActivity() p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() @@ -384,7 +384,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { } p.PlayroomBackData() p.PlayMod.getChampshipMod().ZeroUpdate() - p.initAcitivity() + p.initActivity() p.ActivityZeroUpdate() // 每日任务 @@ -1164,7 +1164,7 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) { } // 初始化活动 -func (p *Player) initAcitivity() { +func (p *Player) initActivity() { p.activity = make(map[int]*ActivityInfo) ActivityList := activityCfg.GetActivityList() Level := p.GetPlayerBaseMod().GetLevel() @@ -1186,6 +1186,7 @@ func (p *Player) initAcitivity() { Title: v.Title, } } + p.ActivityLogin() } func (p *Player) BackDataActivity() { diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index a65efe67..96bf554d 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -4621,7 +4621,7 @@ func ReqActivityReward(player *Player, buf []byte) error { "Items": Items, }) player.PlayMod.save() - player.initAcitivity() + player.initActivity() player.BackDataActivity() player.PushClientRes(&msg.ResActivityReward{ Code: msg.RES_CODE_SUCCESS, diff --git a/src/server/test/mining_test.go b/src/server/test/mining_test.go index 35b7b500..858a6fe1 100644 --- a/src/server/test/mining_test.go +++ b/src/server/test/mining_test.go @@ -18,3 +18,9 @@ func TestGetPassReward(t *testing.T) { } player.MiningBackData() } + +func TestInitActivityItem(t *testing.T) { + player := new(game.Player) + player.GetBaseMod().Level = 15 + player.Login() +}