活动通行证
This commit is contained in:
parent
099f76a1ce
commit
702d216a06
122
src/server/conf/pass/passCfg.go
Normal file
122
src/server/conf/pass/passCfg.go
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
package passCfg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"server/game/mod/item"
|
||||||
|
"server/gamedata"
|
||||||
|
"slices"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
CFG_PASS_TEMPLATE = "PassTemplate"
|
||||||
|
CFG_PASS = "Pass"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
gamedata.InitCfg(CFG_PASS_TEMPLATE)
|
||||||
|
gamedata.InitCfg(CFG_PASS)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetTemplate(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "Template")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetActivityItemId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "ItemId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLowChargeId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "LowChargeId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHighChargeId(Id int) int {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PASS_TEMPLATE, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "HighChargeId")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNewLevel(Template int, Score int, Reward []int) []int {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
NewReward := make([]int, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
LevelScore := gamedata.GetIntValue(v, "TotalScore")
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if Score >= LevelScore && !slices.Contains(Reward, Index) {
|
||||||
|
NewReward = append(NewReward, Index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NewReward
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetFreeChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "FreeReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLowChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "LowReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHighChargeItems(Template int, Reward []int) []*item.Item {
|
||||||
|
data, err := gamedata.GetData(CFG_PASS)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
for _, v := range data {
|
||||||
|
if gamedata.GetIntValue(v, "Template") != Template {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Index := gamedata.GetIntValue(v, "Level")
|
||||||
|
if slices.Contains(Reward, Index) {
|
||||||
|
Items = append(Items, gamedata.GetItemList(data, "HighReward")...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Items
|
||||||
|
}
|
||||||
@ -7,6 +7,7 @@ import (
|
|||||||
itemCfg "server/conf/item"
|
itemCfg "server/conf/item"
|
||||||
mailCfg "server/conf/mail"
|
mailCfg "server/conf/mail"
|
||||||
miningCfg "server/conf/mining"
|
miningCfg "server/conf/mining"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
raceCfg "server/conf/race"
|
raceCfg "server/conf/race"
|
||||||
"server/game/mod/activity"
|
"server/game/mod/activity"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
@ -114,16 +115,16 @@ func GetActivityInfoById(p *Player, Id int) *ActivityInfo {
|
|||||||
func GetActivityStatus(p *Player, actType int) int {
|
func GetActivityStatus(p *Player, actType int) int {
|
||||||
ActivityInfo := GetActivityInfo(p, actType)
|
ActivityInfo := GetActivityInfo(p, actType)
|
||||||
if ActivityInfo == nil {
|
if ActivityInfo == nil {
|
||||||
return 0
|
return ACT_STATUS_NOT_START
|
||||||
}
|
}
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
if Now < ActivityInfo.StartT {
|
if Now < ActivityInfo.StartT {
|
||||||
return 0
|
return ACT_STATUS_NOT_START
|
||||||
}
|
}
|
||||||
if Now > ActivityInfo.EndT {
|
if Now > ActivityInfo.EndT {
|
||||||
return 2
|
return ACT_STATUS_END
|
||||||
}
|
}
|
||||||
return 1
|
return ACT_STATUS_START
|
||||||
}
|
}
|
||||||
|
|
||||||
func MiningBackData(p *Player) {
|
func MiningBackData(p *Player) {
|
||||||
@ -218,6 +219,26 @@ func RedBackData(p *Player) {
|
|||||||
p.PushClientRes(&msg.ResActRed{Red: result})
|
p.PushClientRes(&msg.ResActRed{Red: result})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ActPassBackData(p *Player) {
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Status := GetActivityStatus(p, activity.ACT_TYPE_PASS)
|
||||||
|
Template := passCfg.GetTemplate(ActivityInfo.Id)
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
p.PushClientRes(&msg.ResActPass{
|
||||||
|
Id: int32(ActivityInfo.Id),
|
||||||
|
Status: int32(Status),
|
||||||
|
Template: int32(Template),
|
||||||
|
EndTime: int32(ActivityInfo.EndT),
|
||||||
|
LowPass: PassMod.LowPass > 0,
|
||||||
|
HighPass: PassMod.HighPass > 0,
|
||||||
|
Score: int32(PassMod.Num),
|
||||||
|
Reward: GoUtil.IntToInt32(PassMod.Reward),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
||||||
Items := make([]*item.Item, 0)
|
Items := make([]*item.Item, 0)
|
||||||
for _, v := range ActType {
|
for _, v := range ActType {
|
||||||
@ -240,6 +261,10 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item {
|
|||||||
ItemId := raceCfg.GetCoin(ActivityInfo.Id)
|
ItemId := raceCfg.GetCoin(ActivityInfo.Id)
|
||||||
Item := item.NewItem(ItemId, 1)
|
Item := item.NewItem(ItemId, 1)
|
||||||
Items = append(Items, Item)
|
Items = append(Items, Item)
|
||||||
|
case activity.ACT_TYPE_PASS:
|
||||||
|
ItemId := passCfg.GetActivityItemId(ActivityInfo.Id)
|
||||||
|
Item := item.NewItem(ItemId, 1)
|
||||||
|
Items = append(Items, Item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Items
|
return Items
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package game
|
|||||||
import (
|
import (
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
activityCfg "server/conf/activity"
|
activityCfg "server/conf/activity"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
|
"server/game/mod/activity"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
MsgMod "server/game/mod/msg"
|
MsgMod "server/game/mod/msg"
|
||||||
"server/game/mod/piggyBank"
|
"server/game/mod/piggyBank"
|
||||||
@ -74,6 +76,36 @@ func ActivityFire(p *Player, ChargeId int) {
|
|||||||
p.BackDataActivity()
|
p.BackDataActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PassFire(p *Player, ChargeId int) {
|
||||||
|
ActivityStatus := GetActivityStatus(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityStatus != ACT_STATUS_START {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
LowChargeId := passCfg.GetLowChargeId(ActivityInfo.Id)
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
Items := []*item.Item{}
|
||||||
|
if ChargeId == LowChargeId {
|
||||||
|
Items = PassMod.GetLowChargeItems()
|
||||||
|
}
|
||||||
|
HighChargeId := passCfg.GetHighChargeId(ActivityInfo.Id)
|
||||||
|
if ChargeId == HighChargeId {
|
||||||
|
Items = PassMod.GetHighChargeItems()
|
||||||
|
}
|
||||||
|
if len(Items) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := p.HandleItem(Items, msg.ITEM_POP_LABEL_PassCharge.String())
|
||||||
|
if err != nil {
|
||||||
|
log.Debug("PassFire err : %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
p.PlayMod.save()
|
||||||
|
}
|
||||||
|
|
||||||
func PlayroomFire(p *Player, ChargeId int) {
|
func PlayroomFire(p *Player, ChargeId int) {
|
||||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||||
Item := PlayroomMod.Fire(ChargeId)
|
Item := PlayroomMod.Fire(ChargeId)
|
||||||
|
|||||||
@ -851,6 +851,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
|||||||
RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘
|
RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘
|
||||||
RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励
|
RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励
|
||||||
RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖
|
RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖
|
||||||
|
// 活动通行证
|
||||||
|
RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据
|
||||||
|
RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励
|
||||||
// #region playroom
|
// #region playroom
|
||||||
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据
|
||||||
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息
|
||||||
|
|||||||
@ -769,6 +769,14 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{}
|
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{}
|
||||||
|
case item.ITEM_TYPE_ACT_PASS: // 活动通行证
|
||||||
|
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS)
|
||||||
|
if ActivityInfo == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
PassMod := p.PlayMod.getPassMod()
|
||||||
|
PassMod.AddExp(v.Num)
|
||||||
|
ActPassBackData(p)
|
||||||
default:
|
default:
|
||||||
err := ItemMod.AddItem(v.Id, v.Num)
|
err := ItemMod.AddItem(v.Id, v.Num)
|
||||||
p.TeLog("asset_change", map[string]interface{}{
|
p.TeLog("asset_change", map[string]interface{}{
|
||||||
|
|||||||
@ -5143,3 +5143,31 @@ func ReqCatnipRefuse(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReqActPass(player *Player, buf []byte) error {
|
||||||
|
ActPassBackData(player)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReqActPassReward(player *Player, buf []byte) error {
|
||||||
|
PassMod := player.PlayMod.getPassMod()
|
||||||
|
Items, NewLevel := PassMod.GetRewardItems()
|
||||||
|
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_ActPassReward.String())
|
||||||
|
if err != nil {
|
||||||
|
player.SendErrClienRes(&msg.ResActPassReward{
|
||||||
|
Code: msg.RES_CODE_FAIL,
|
||||||
|
Msg: err.Error(),
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
player.TeLog("act_pass_reward", map[string]interface{}{
|
||||||
|
"NewLevel": NewLevel,
|
||||||
|
"Items": Items,
|
||||||
|
})
|
||||||
|
player.PlayMod.save()
|
||||||
|
player.PushClientRes(&msg.ResActPassReward{
|
||||||
|
Code: msg.RES_CODE_SUCCESS,
|
||||||
|
RewardLevel: GoUtil.IntToInt32(NewLevel),
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -23,6 +23,7 @@ const (
|
|||||||
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
ACT_TYPE_ADD_GIFT = 5 // 加送礼包
|
||||||
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包
|
||||||
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
ACT_TYPE_CATNIP = 7 // 猫草大作战
|
||||||
|
ACT_TYPE_PASS = 8 // 通行证
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@ -57,6 +57,7 @@ const (
|
|||||||
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
||||||
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
||||||
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
||||||
|
ITEM_TYPE_ACT_PASS = 116 // 通行证活动道具
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *ItemMod) InitData() {
|
func (i *ItemMod) InitData() {
|
||||||
|
|||||||
@ -1,17 +1,86 @@
|
|||||||
package pass
|
package pass
|
||||||
|
|
||||||
|
import (
|
||||||
|
"server/GoUtil"
|
||||||
|
passCfg "server/conf/pass"
|
||||||
|
"server/game/mod/item"
|
||||||
|
)
|
||||||
|
|
||||||
type PassMod struct {
|
type PassMod struct {
|
||||||
LowPass int // 低级通行证
|
LowPass int64 // 低级通行证
|
||||||
HighPass int // 高级通行证
|
HighPass int64 // 高级通行证
|
||||||
Num int // 积分
|
Num int // 积分
|
||||||
FreeReward []int // 免费奖励领取情况
|
Reward []int // 免费奖励领取情况
|
||||||
LowReward []int // 付费奖励领取情况
|
Id int
|
||||||
HighReward []int // 高级奖励领取情况
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PassMod) InitData() {
|
func (p *PassMod) InitData() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PassMod) ZeroUpdate(Id int) {}
|
func (p *PassMod) ZeroUpdate(Id int) {
|
||||||
|
p.Login(Id)
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PassMod) Login() {}
|
func (p *PassMod) GetRewardItems() ([]*item.Item, []int) {
|
||||||
|
NewLevel := passCfg.GetNewLevel(passCfg.GetTemplate(p.Id), p.Num, p.Reward)
|
||||||
|
if len(NewLevel) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
Items := make([]*item.Item, 0)
|
||||||
|
Items = append(Items, passCfg.GetFreeChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
if p.LowPass != 0 {
|
||||||
|
Items = append(Items, passCfg.GetLowChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
}
|
||||||
|
if p.HighPass != 0 {
|
||||||
|
Items = append(Items, passCfg.GetHighChargeItems(passCfg.GetTemplate(p.Id), p.Reward)...)
|
||||||
|
}
|
||||||
|
p.Reward = append(p.Reward, NewLevel...)
|
||||||
|
return Items, NewLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) Login(Id int) int {
|
||||||
|
OldId := p.Id
|
||||||
|
if Id == 0 {
|
||||||
|
p.Id = 0
|
||||||
|
return OldId
|
||||||
|
}
|
||||||
|
if p.Id == Id {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
p.Id = Id
|
||||||
|
p.LowPass = 0
|
||||||
|
p.HighPass = 0
|
||||||
|
p.Num = 0
|
||||||
|
p.Reward = make([]int, 0)
|
||||||
|
return p.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) GetLowChargeItems() []*item.Item {
|
||||||
|
if p.LowPass != 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Template := passCfg.GetTemplate(p.Id)
|
||||||
|
if Template == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := passCfg.GetLowChargeItems(Template, p.Reward)
|
||||||
|
p.LowPass = GoUtil.Now()
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) GetHighChargeItems() []*item.Item {
|
||||||
|
if p.HighPass != 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Template := passCfg.GetTemplate(p.Id)
|
||||||
|
if Template == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Items := passCfg.GetHighChargeItems(Template, p.Reward)
|
||||||
|
p.HighPass = GoUtil.Now()
|
||||||
|
return Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PassMod) AddExp(Score int) {
|
||||||
|
p.Num += Score
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user