开服庆典活动
This commit is contained in:
parent
f8e9e0e453
commit
e7959048eb
39
bin/json/game_hdcelebration.json
Normal file
39
bin/json/game_hdcelebration.json
Normal file
@ -0,0 +1,39 @@
|
||||
[
|
||||
{
|
||||
"ID": 1,
|
||||
"systemtype": 1,
|
||||
"bosstype": [
|
||||
0
|
||||
],
|
||||
"num": [
|
||||
6
|
||||
],
|
||||
"days": 2
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"systemtype": 2,
|
||||
"bosstype": [
|
||||
31
|
||||
],
|
||||
"num": [
|
||||
6
|
||||
],
|
||||
"days": 2
|
||||
},
|
||||
{
|
||||
"ID": 3,
|
||||
"systemtype": 2,
|
||||
"bosstype": [
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"num": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"days": 2
|
||||
}
|
||||
]
|
@ -11,6 +11,7 @@
|
||||
"resources": "Person/10000/10000M.prefab",
|
||||
"vague": "Person/10000/10000MT.prefab",
|
||||
"pvpAnimator": "Person/10000/10000_MPvp.controller",
|
||||
"mainq": "Person/10000/10000M_q.prefab",
|
||||
"playerhead": "tx_js_nz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_1",
|
||||
@ -29,6 +30,7 @@
|
||||
"resources": "Person/10000/10000W.prefab",
|
||||
"vague": "Person/10000/10000WT.prefab",
|
||||
"pvpAnimator": "Person/10000/10000_WPvp.controller",
|
||||
"mainq": "Person/10000/10000W_q.prefab",
|
||||
"playerhead": "tx_js_nvz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_2",
|
||||
@ -47,6 +49,7 @@
|
||||
"resources": "",
|
||||
"vague": "",
|
||||
"pvpAnimator": "",
|
||||
"mainq": "",
|
||||
"playerhead": "tx_js_nz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_3",
|
||||
@ -65,6 +68,7 @@
|
||||
"resources": "",
|
||||
"vague": "",
|
||||
"pvpAnimator": "",
|
||||
"mainq": "",
|
||||
"playerhead": "tx_js_nvz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_4",
|
||||
@ -83,6 +87,7 @@
|
||||
"resources": "",
|
||||
"vague": "",
|
||||
"pvpAnimator": "",
|
||||
"mainq": "",
|
||||
"playerhead": "tx_js_nz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_5",
|
||||
@ -101,6 +106,7 @@
|
||||
"resources": "",
|
||||
"vague": "",
|
||||
"pvpAnimator": "",
|
||||
"mainq": "",
|
||||
"playerhead": "tx_js_nvz",
|
||||
"name": {
|
||||
"key": "playerinfor_playerinfor_overview_name_6",
|
||||
|
@ -996,6 +996,10 @@ const (
|
||||
XSFundExp = 6 //现时活动 经验基金
|
||||
HdLevel = 7 //开服等级活动
|
||||
HdTypeSign = 8 //七日签到
|
||||
HdTypeTurntable = 9 //大转盘
|
||||
|
||||
AddUpRecharge = 10 //累计充值
|
||||
|
||||
// 特殊类型活动 只受活动开启限制
|
||||
HdTypeTurntable = 1001 //大转盘
|
||||
HdCelebration = 1002 // 庆典活动
|
||||
)
|
||||
|
@ -594,6 +594,9 @@ type (
|
||||
GetAllHdInfo() (hdList map[int32][]*pb.DBHuodong) // 获取所有活动信息
|
||||
GetHdInfoByItype(itype int32) (result []*pb.DBHuodong, err error) //
|
||||
UpdateActivitySlider(session IUserSession) // 修改活动进度
|
||||
|
||||
// 庆典活动
|
||||
HDCelebration(session IUserSession, systemtype int32, bosstype int32)
|
||||
}
|
||||
//每日任务
|
||||
IDailytask interface {
|
||||
|
@ -24,7 +24,7 @@ func (this *apiComp) GetHdData(session comm.IUserSession, req *pb.ActivityGetHdD
|
||||
curTime := configure.Now().Unix()
|
||||
for _, id := range req.Oid {
|
||||
if activity, err = this.module.modelhdList.getHdListByHdId(id); err != nil {
|
||||
if activity.Stime <= curTime && curTime <= activity.Etime {
|
||||
if activity.Stime > curTime || curTime > activity.Etime { // 不在活动范围内数据不给活动记录数据
|
||||
continue
|
||||
}
|
||||
}
|
||||
@ -52,6 +52,25 @@ func (this *apiComp) GetHdData(session comm.IUserSession, req *pb.ActivityGetHdD
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取开服庆典活动
|
||||
if activity.Itype == comm.HdCelebration {
|
||||
key := fmt.Sprintf("%s:%s", session.GetUserId(), id)
|
||||
if data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), key); err != nil {
|
||||
// 注意 Gotarr:map[int32]int32 key value 已经挑战的次数
|
||||
if !utils.IsToday(data.Lasttime) { // 不是今天重置
|
||||
data.Lasttime = configure.Now().Unix()
|
||||
data.Gotarr = make(map[int32]int32)
|
||||
// 计算进度
|
||||
data.Val = int32((configure.Now().Unix()-activity.Stime)/24*3600) + 1
|
||||
update := make(map[string]interface{})
|
||||
update["lasttime"] = data.Lasttime
|
||||
update["val"] = data.Val
|
||||
update["gotarr"] = data.Gotarr
|
||||
this.module.modelhdData.ModifyActivityList(session.GetUserId(), data.Id, update)
|
||||
}
|
||||
}
|
||||
}
|
||||
result = append(result, list)
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
|
||||
const (
|
||||
venturegiftsdraw = "game_venturegiftsdraw.json" //大转盘
|
||||
hdcelebration = "game_hdcelebration.json" //开服庆典
|
||||
)
|
||||
|
||||
// /配置管理基础组件
|
||||
@ -29,6 +30,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
||||
this.module = module.(*Activity)
|
||||
err = this.LoadMultiConfigure(map[string]interface{}{
|
||||
venturegiftsdraw: cfg.NewGameVenturegiftsDraw,
|
||||
hdcelebration: cfg.NewGameCelebration,
|
||||
})
|
||||
|
||||
configure.RegisterConfigure(venturegiftsdraw, cfg.NewGameVenturegiftsDraw, func() {
|
||||
@ -97,3 +99,28 @@ func (this *configureComp) GetPool1() (m map[int32]*cfg.GameVenturegiftsDrawData
|
||||
func (this *configureComp) GetPool2() (m map[int32]*cfg.GameVenturegiftsDrawData) {
|
||||
return this.pool2
|
||||
}
|
||||
|
||||
// id
|
||||
func (this *configureComp) GetHDCelebration(id int32) (conf *cfg.GameCelebrationData, err error) {
|
||||
var (
|
||||
v interface{}
|
||||
ok bool
|
||||
)
|
||||
if v, err = this.GetConfigure(hdcelebration); err == nil {
|
||||
if conf, ok = v.(*cfg.GameCelebration).GetDataMap()[id]; !ok {
|
||||
err = fmt.Errorf("%T no is *cfg.GameCelebrationData", v)
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (this *configureComp) GetHDCelebrationData() (days []int32) {
|
||||
|
||||
if v, err := this.GetConfigure(hdcelebration); err == nil {
|
||||
for _, v := range v.(*cfg.GameCelebration).GetDataList() {
|
||||
days = append(days, v.Days)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/configure"
|
||||
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/x/bsonx"
|
||||
@ -54,6 +55,7 @@ func (this *modelhdData) getHddataByOid(uid string, oid string) (result *pb.DBAc
|
||||
result.Id = fmt.Sprintf("%s:%s", uid, oid)
|
||||
result.Uid = uid
|
||||
result.Hdoid = oid
|
||||
result.Lasttime = configure.Now().Unix()
|
||||
this.AddList(uid, result.Id, result)
|
||||
err = nil
|
||||
return
|
||||
|
@ -93,3 +93,9 @@ func (this *modelHdList) LoadActivityData() {
|
||||
}
|
||||
}
|
||||
}
|
||||
func (this *modelHdList) getHdInfoByType(itype int32) (activity []*pb.DBHuodong) {
|
||||
if v, ok := this.activity[itype]; ok {
|
||||
return v
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -6,8 +6,10 @@ import (
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/configure"
|
||||
cfg "go_dreamfactory/sys/configure/structs"
|
||||
"go_dreamfactory/sys/db"
|
||||
"go_dreamfactory/utils"
|
||||
)
|
||||
|
||||
type Activity struct {
|
||||
@ -205,3 +207,64 @@ func (this *Activity) Turntable(drawIndex int32, reward []int32) (item *cfg.Game
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 统计庆典活动完成情况
|
||||
func (this *Activity) HDCelebration(session comm.IUserSession, systemtype int32, bosstype int32) bool {
|
||||
bDouble := false // 是否开启双倍奖励
|
||||
if activity := this.modelhdList.getHdInfoByType(comm.HdCelebration); activity != nil {
|
||||
for _, v := range activity {
|
||||
if configure.Now().Unix() > v.Stime && configure.Now().Unix() < v.Etime { // 活动范围内
|
||||
update := make(map[string]interface{})
|
||||
bChange := false
|
||||
// 查询玩家活动记录
|
||||
key := fmt.Sprintf("%s:%s", session.GetUserId(), v.Id)
|
||||
if data, err := this.modelhdData.getHddataByOid(session.GetUserId(), key); err != nil {
|
||||
// 注意 Gotarr:map[int32]int32 key value 已经挑战的次数
|
||||
if !utils.IsToday(data.Lasttime) { // 不是今天重置
|
||||
data.Lasttime = configure.Now().Unix()
|
||||
data.Gotarr = make(map[int32]int32)
|
||||
// 计算进度
|
||||
data.Val = int32((configure.Now().Unix()-v.Stime)/24*3600) + 1
|
||||
update["lasttime"] = data.Lasttime
|
||||
update["val"] = data.Val
|
||||
update["gotarr"] = data.Gotarr
|
||||
bChange = true
|
||||
}
|
||||
var pos int32
|
||||
|
||||
for index, v := range this.configure.GetHDCelebrationData() {
|
||||
for i := 0; i < int(v); i++ {
|
||||
pos++
|
||||
if data.Val == pos {
|
||||
if conf, err := this.configure.GetHDCelebration(int32(index) + 1); err != nil {
|
||||
// kay = bosstype << 8 + systemtype
|
||||
if conf.Systemtype == systemtype {
|
||||
data.Gotarr[bosstype] += 1
|
||||
// 天数
|
||||
var idays int32
|
||||
for i, v1 := range conf.Bosstype {
|
||||
if v1 == systemtype {
|
||||
idays = conf.Num[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
// 更新信息
|
||||
update["gotarr"] = data.Gotarr
|
||||
bChange = true
|
||||
if data.Gotarr[bosstype] <= idays {
|
||||
bDouble = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if bChange {
|
||||
this.modelhdData.ModifyActivityList(session.GetUserId(), data.Id, update)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return bDouble
|
||||
}
|
||||
|
42
sys/configure/structs/Game.HDCelebration.go
Normal file
42
sys/configure/structs/Game.HDCelebration.go
Normal file
@ -0,0 +1,42 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
package cfg
|
||||
|
||||
type GameHDCelebration struct {
|
||||
_dataMap map[int32]*GameHDCelebrationData
|
||||
_dataList []*GameHDCelebrationData
|
||||
}
|
||||
|
||||
func NewGameHDCelebration(_buf []map[string]interface{}) (*GameHDCelebration, error) {
|
||||
_dataList := make([]*GameHDCelebrationData, 0, len(_buf))
|
||||
dataMap := make(map[int32]*GameHDCelebrationData)
|
||||
for _, _ele_ := range _buf {
|
||||
if _v, err2 := DeserializeGameHDCelebrationData(_ele_); err2 != nil {
|
||||
return nil, err2
|
||||
} else {
|
||||
_dataList = append(_dataList, _v)
|
||||
dataMap[_v.ID] = _v
|
||||
}
|
||||
}
|
||||
return &GameHDCelebration{_dataList:_dataList, _dataMap:dataMap}, nil
|
||||
}
|
||||
|
||||
func (table *GameHDCelebration) GetDataMap() map[int32]*GameHDCelebrationData {
|
||||
return table._dataMap
|
||||
}
|
||||
|
||||
func (table *GameHDCelebration) GetDataList() []*GameHDCelebrationData {
|
||||
return table._dataList
|
||||
}
|
||||
|
||||
func (table *GameHDCelebration) Get(key int32) *GameHDCelebrationData {
|
||||
return table._dataMap[key]
|
||||
}
|
||||
|
||||
|
69
sys/configure/structs/Game.HDCelebrationData.go
Normal file
69
sys/configure/structs/Game.HDCelebrationData.go
Normal file
@ -0,0 +1,69 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
package cfg
|
||||
|
||||
import "errors"
|
||||
|
||||
type GameHDCelebrationData struct {
|
||||
ID int32
|
||||
Systemtype int32
|
||||
Bosstype []int32
|
||||
Num []int32
|
||||
Days int32
|
||||
}
|
||||
|
||||
const TypeId_GameHDCelebrationData = -1921981892
|
||||
|
||||
func (*GameHDCelebrationData) GetTypeId() int32 {
|
||||
return -1921981892
|
||||
}
|
||||
|
||||
func (_v *GameHDCelebrationData)Deserialize(_buf map[string]interface{}) (err error) {
|
||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ID"].(float64); !_ok_ { err = errors.New("ID error"); return }; _v.ID = int32(_tempNum_) }
|
||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["systemtype"].(float64); !_ok_ { err = errors.New("systemtype error"); return }; _v.Systemtype = int32(_tempNum_) }
|
||||
{
|
||||
var _arr_ []interface{}
|
||||
var _ok_ bool
|
||||
if _arr_, _ok_ = _buf["bosstype"].([]interface{}); !_ok_ { err = errors.New("bosstype error"); return }
|
||||
|
||||
_v.Bosstype = make([]int32, 0, len(_arr_))
|
||||
|
||||
for _, _e_ := range _arr_ {
|
||||
var _list_v_ int32
|
||||
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
|
||||
_v.Bosstype = append(_v.Bosstype, _list_v_)
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
var _arr_ []interface{}
|
||||
var _ok_ bool
|
||||
if _arr_, _ok_ = _buf["num"].([]interface{}); !_ok_ { err = errors.New("num error"); return }
|
||||
|
||||
_v.Num = make([]int32, 0, len(_arr_))
|
||||
|
||||
for _, _e_ := range _arr_ {
|
||||
var _list_v_ int32
|
||||
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
|
||||
_v.Num = append(_v.Num, _list_v_)
|
||||
}
|
||||
}
|
||||
|
||||
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["days"].(float64); !_ok_ { err = errors.New("days error"); return }; _v.Days = int32(_tempNum_) }
|
||||
return
|
||||
}
|
||||
|
||||
func DeserializeGameHDCelebrationData(_buf map[string]interface{}) (*GameHDCelebrationData, error) {
|
||||
v := &GameHDCelebrationData{}
|
||||
if err := v.Deserialize(_buf); err == nil {
|
||||
return v, nil
|
||||
} else {
|
||||
return nil, err
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ type GamePlayerInfor_overviewData struct {
|
||||
Resources string
|
||||
Vague string
|
||||
PvpAnimator string
|
||||
Mainq string
|
||||
Playerhead string
|
||||
Name string
|
||||
}
|
||||
@ -53,6 +54,7 @@ func (_v *GamePlayerInfor_overviewData)Deserialize(_buf map[string]interface{})
|
||||
{ var _ok_ bool; if _v.Resources, _ok_ = _buf["resources"].(string); !_ok_ { err = errors.New("resources error"); return } }
|
||||
{ var _ok_ bool; if _v.Vague, _ok_ = _buf["vague"].(string); !_ok_ { err = errors.New("vague error"); return } }
|
||||
{ var _ok_ bool; if _v.PvpAnimator, _ok_ = _buf["pvpAnimator"].(string); !_ok_ { err = errors.New("pvpAnimator error"); return } }
|
||||
{ var _ok_ bool; if _v.Mainq, _ok_ = _buf["mainq"].(string); !_ok_ { err = errors.New("mainq error"); return } }
|
||||
{ var _ok_ bool; if _v.Playerhead, _ok_ = _buf["playerhead"].(string); !_ok_ { err = errors.New("playerhead error"); return } }
|
||||
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
|
||||
return
|
||||
|
@ -233,6 +233,7 @@ type Tables struct {
|
||||
Heroupstory *GameHeroupstory
|
||||
HeroupstoryChapter *GameHeroupstoryChapter
|
||||
HeroupstoryBattle *GameHeroupstoryBattle
|
||||
HDCelebration *GameHDCelebration
|
||||
}
|
||||
|
||||
func NewTables(loader JsonLoader) (*Tables, error) {
|
||||
@ -1572,5 +1573,11 @@ func NewTables(loader JsonLoader) (*Tables, error) {
|
||||
if tables.HeroupstoryBattle, err = NewGameHeroupstoryBattle(buf) ; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if buf, err = loader("game_hdcelebration") ; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if tables.HDCelebration, err = NewGameHDCelebration(buf) ; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return tables, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user