每日任务优化
This commit is contained in:
parent
4fcae1b8f0
commit
b8309ca89d
@ -5,6 +5,7 @@ import (
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -12,6 +13,7 @@ const (
|
||||
DAILY_TASK = "DailyTask"
|
||||
DAILY_TASK_ACTIVE = "DailyTaskActive"
|
||||
DAILY_TASK_JACKPOT = "DailyTaskJackpot"
|
||||
DAILY_TASK_REWARD = "DailyTaskReward"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -19,6 +21,51 @@ func init() {
|
||||
gamedata.InitCfg(DAILY_TASK)
|
||||
gamedata.InitCfg(DAILY_TASK_ACTIVE)
|
||||
gamedata.InitCfg(DAILY_TASK_JACKPOT)
|
||||
gamedata.InitCfg(DAILY_TASK_REWARD)
|
||||
}
|
||||
|
||||
func GetDailyTaskReward(Id, factory, activityId int) []*item.Item {
|
||||
data, err := gamedata.GetData(DAILY_TASK_REWARD)
|
||||
if err != nil {
|
||||
log.Debug("GetDailyTaskReward err:%v", err)
|
||||
return nil
|
||||
}
|
||||
for _, v := range data {
|
||||
sortId := gamedata.GetIntValue(v, "SortId")
|
||||
rewardGroupType := gamedata.GetIntValue(v, "RewardGroupType")
|
||||
if sortId == Id && rewardGroupType == activityId {
|
||||
items := gamedata.GetItemList(v, "ItemID")
|
||||
petCoinBase := gamedata.GetIntValue(v, "PetCoinBase")
|
||||
if petCoinBase > 0 {
|
||||
petCoinNum := int(float64(petCoinBase) * (float64(factory)/1000 + 1))
|
||||
petCoinNum = (petCoinNum/5 + 1) * 5 // 向上取整到5的倍数
|
||||
items = append(items, &item.Item{
|
||||
Id: item.ITEM_STAR_ID,
|
||||
Num: petCoinNum,
|
||||
})
|
||||
}
|
||||
return items
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetActivityIds() []int {
|
||||
data, err := gamedata.GetDataByKey(DAILY_TASK_CONST, "RewardGroupType_const")
|
||||
if err != nil {
|
||||
log.Debug("GetActivityIds err:%v", err)
|
||||
return nil
|
||||
}
|
||||
str := gamedata.GetStringValue(data, "Value")
|
||||
strArr := strings.Split(str, "|")
|
||||
result := make([]int, 0, len(strArr))
|
||||
for _, v := range strArr {
|
||||
a, _ := strconv.Atoi(v)
|
||||
if a != 0 {
|
||||
result = append(result, a)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// 获取任务列表
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
activityCfg "server/conf/activity"
|
||||
catnipCfg "server/conf/catnip"
|
||||
champshipCfg "server/conf/champship"
|
||||
dailyTaskCfg "server/conf/daily_task"
|
||||
guesscolorCfg "server/conf/guess_color"
|
||||
languageCfg "server/conf/language"
|
||||
miningCfg "server/conf/mining"
|
||||
@ -456,3 +457,24 @@ func (p *Player) GetChampshipActivityId() (int, int) {
|
||||
}
|
||||
return todayActivityId, yesterdayActivityId
|
||||
}
|
||||
|
||||
func (p *Player) GetDailyTaskActivityId() int {
|
||||
var activityId int
|
||||
activiyCfgList := activityCfg.GetActivityListOrigin()
|
||||
Now := GoUtil.Now()
|
||||
level := p.GetBaseMod().GetLevel()
|
||||
activityIds := dailyTaskCfg.GetActivityIds()
|
||||
for _, v := range activiyCfgList {
|
||||
if !GoUtil.InArray(v.Type, activityIds) {
|
||||
continue
|
||||
}
|
||||
if v.Level > level {
|
||||
continue
|
||||
}
|
||||
if v.StartTime <= Now && v.EndTime >= Now {
|
||||
activityId = v.Id
|
||||
break
|
||||
}
|
||||
}
|
||||
return activityId
|
||||
}
|
||||
|
||||
@ -8,7 +8,8 @@ import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func getTaskReward(Id, AreaId int) []*item.Item {
|
||||
func getTaskReward(Id, AreaId, activityId int) []*item.Item {
|
||||
|
||||
switch Id {
|
||||
case 2:
|
||||
StarNum := int(50 * math.Pow(1.04, float64(AreaId)))
|
||||
|
||||
@ -3,6 +3,7 @@ package dailyTask
|
||||
import (
|
||||
"fmt"
|
||||
dailyTaskCfg "server/conf/daily_task"
|
||||
orderCfg "server/conf/order"
|
||||
"server/game/mod/item"
|
||||
"server/game/mod/quest"
|
||||
GoUtil "server/game_util"
|
||||
@ -48,15 +49,15 @@ func (dt *DailyTaskMod) Unlock() {
|
||||
dt.Lock = true
|
||||
}
|
||||
|
||||
func (dt *DailyTaskMod) LevUpTrigger(Lv, AreaId int) bool {
|
||||
func (dt *DailyTaskMod) LevUpTrigger(Lv, AreaId, dailyAcitivityId int) bool {
|
||||
if len(dt.DayTask) != 0 {
|
||||
return false
|
||||
}
|
||||
dt.ZeroUpdate(Lv, AreaId)
|
||||
dt.ZeroUpdate(Lv, AreaId, dailyAcitivityId)
|
||||
return true
|
||||
}
|
||||
|
||||
func (dt *DailyTaskMod) ZeroUpdate(Lv, AreaId int) {
|
||||
func (dt *DailyTaskMod) ZeroUpdate(Lv, AreaId, activityId int) {
|
||||
TaskList := dailyTaskCfg.GetTaskList(Lv)
|
||||
if len(TaskList) <= 0 {
|
||||
return
|
||||
@ -65,6 +66,7 @@ func (dt *DailyTaskMod) ZeroUpdate(Lv, AreaId int) {
|
||||
LastTaskId := GoUtil.GetMapKey(dt.lastTask)
|
||||
TaskList1 := GoUtil.SubSlices(TaskListId, LastTaskId)
|
||||
TaskId := GoUtil.RandSliceNum(TaskList1, 3)
|
||||
OrderFactor := orderCfg.GetOrderFactor(AreaId)
|
||||
for i := 0; i < len(TaskId); i++ {
|
||||
Id := i + 1
|
||||
questStr := TaskList[TaskId[i]]
|
||||
@ -72,7 +74,7 @@ func (dt *DailyTaskMod) ZeroUpdate(Lv, AreaId int) {
|
||||
if err != nil {
|
||||
log.Debug("parse quest err str : %s", questStr)
|
||||
}
|
||||
Items := getTaskReward(Id, AreaId)
|
||||
Items := dailyTaskCfg.GetDailyTaskReward(Id, OrderFactor, activityId)
|
||||
dt.DayTask[Id] = DailyTask{
|
||||
Items: Items,
|
||||
UnLock: Id == 1,
|
||||
|
||||
@ -6,6 +6,7 @@ import (
|
||||
"server/game/mod/champship"
|
||||
"server/game/mod/charge"
|
||||
"server/game/mod/chess"
|
||||
dailyTask "server/game/mod/daily_task"
|
||||
"server/game/mod/decorate"
|
||||
"server/game/mod/endless"
|
||||
"server/game/mod/face"
|
||||
@ -85,3 +86,7 @@ func (p *Player) GetLimitedTimeEventMod() *limitedTimeEvent.LimitedTimeEventMod
|
||||
func (p *Player) GetMiningMod() *mining.MiningMod {
|
||||
return p.PlayMod.getMiningMod()
|
||||
}
|
||||
|
||||
func (p *Player) GetDailyTaskMod() *dailyTask.DailyTaskMod {
|
||||
return p.PlayMod.getDailyTaskMod()
|
||||
}
|
||||
|
||||
@ -537,7 +537,8 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
|
||||
// 日常任务解锁
|
||||
DailyTaskMod := player.PlayMod.getDailyTaskMod()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
if DailyTaskMod.LevUpTrigger(BaseMod.Level, DecorateMod.GetAreaId()) {
|
||||
dailyAcitivityId := player.GetDailyTaskActivityId()
|
||||
if DailyTaskMod.LevUpTrigger(BaseMod.Level, DecorateMod.GetAreaId(), dailyAcitivityId) {
|
||||
player.PushClientRes(DailyTaskMod.BackData())
|
||||
}
|
||||
upLv = BaseMod.Level
|
||||
|
||||
@ -350,10 +350,6 @@ func (p *Player) ZeroUpdate(a []interface{}) {
|
||||
p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String())
|
||||
p.PushClientRes(p.PlayMod.getCardMod().BackData())
|
||||
|
||||
// 每日任务
|
||||
p.PlayMod.getDailyTaskMod().ZeroUpdate(p.GetPlayerBaseMod().GetLevel(), p.PlayMod.getDecorateMod().GetAreaId())
|
||||
p.PushClientRes(p.PlayMod.getDailyTaskMod().BackData())
|
||||
|
||||
// 能量商店
|
||||
p.PlayMod.getBaseMod().ZeroUpdate()
|
||||
p.PushClientRes(p.PlayMod.getBaseMod().BackData())
|
||||
@ -390,6 +386,11 @@ func (p *Player) ZeroUpdate(a []interface{}) {
|
||||
p.PlayMod.getChampshipMod().ZeroUpdate()
|
||||
p.initAcitivity()
|
||||
p.ActivityZeroUpdate()
|
||||
|
||||
// 每日任务
|
||||
p.PlayMod.getDailyTaskMod().ZeroUpdate(p.GetPlayerBaseMod().GetLevel(), p.PlayMod.getDecorateMod().GetAreaId(), p.GetDailyTaskActivityId())
|
||||
p.PushClientRes(p.PlayMod.getDailyTaskMod().BackData())
|
||||
|
||||
p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_LOGIN})
|
||||
p.PlayMod.save()
|
||||
}
|
||||
|
||||
25
src/server/test/dailytask_test.go
Normal file
25
src/server/test/dailytask_test.go
Normal file
@ -0,0 +1,25 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"server/game"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDailyActiviyId(t *testing.T) {
|
||||
player := new(game.Player)
|
||||
player.InitPlayerByUid(100001)
|
||||
ids := player.GetDailyTaskActivityId()
|
||||
if ids == 0 {
|
||||
t.Errorf("GetDailyTaskActivityId failed, ids is empty")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDailyZeroUpdate(t *testing.T) {
|
||||
player := new(game.Player)
|
||||
player.InitPlayerByUid(100001)
|
||||
DailyTaskMod := player.GetDailyTaskMod()
|
||||
BaseMod := player.GetBaseMod()
|
||||
DecorateMod := player.GetDecorateMod()
|
||||
DailyTaskMod.ZeroUpdate(BaseMod.Level, DecorateMod.GetAreaId(), player.GetDailyTaskActivityId())
|
||||
DailyTaskMod.BackData()
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user