This commit is contained in:
liwei1dao 2022-11-28 17:32:48 +08:00
commit 26a63c00c3
26 changed files with 260 additions and 121 deletions

View File

@ -644,5 +644,22 @@
"text": "功能暂未开启" "text": "功能暂未开启"
}, },
"uiid": 0 "uiid": 0
},
{
"id": "sign",
"name": {
"key": "num_2028",
"text": "签到"
},
"main": 5,
"optional": "",
"wkqbx": 2,
"kqbx": 0,
"img": "zc_icon_01",
"prompt": {
"key": "opencond_prompt_sign",
"text": "功能暂未开启"
},
"uiid": 0
} }
] ]

View File

@ -9,8 +9,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 102, "id": 102,
@ -22,8 +25,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 103, "id": 103,
@ -35,8 +41,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 104, "id": 104,
@ -48,8 +57,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 105, "id": 105,
@ -61,8 +73,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 106, "id": 106,
@ -74,8 +89,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 107, "id": 107,
@ -87,8 +105,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 108, "id": 108,
@ -100,8 +121,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 109, "id": 109,
@ -113,8 +137,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 110, "id": 110,
@ -126,8 +153,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 111, "id": 111,
@ -139,8 +169,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 112, "id": 112,
@ -152,8 +185,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 113, "id": 113,
@ -165,8 +201,11 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
}, },
{ {
"id": 114, "id": 114,
@ -178,7 +217,10 @@
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [],
"playexp": 1000, "playexp": {
"NoMidwayExit": 0 "a": "attr",
"t": "exp",
"n": 1000
}
} }
] ]

View File

@ -336,6 +336,7 @@ const (
Reddot28 ReddotType = 10028 //任务----周常活跃奖励红点 Reddot28 ReddotType = 10028 //任务----周常活跃奖励红点
Reddot29 ReddotType = 10029 //公会----申请红点 Reddot29 ReddotType = 10029 //公会----申请红点
Reddot30 ReddotType = 10030 //邮件-----未读邮件红点 Reddot30 ReddotType = 10030 //邮件-----未读邮件红点
Reddot31 ReddotType = 10031 //维京远征 有挑战次数
) )
type TaskType int32 type TaskType int32
@ -546,16 +547,16 @@ const (
ChatSystem3 ChatSystemType = 3 ///装备升级公告 ChatSystem3 ChatSystemType = 3 ///装备升级公告
ChatSystem4 ChatSystemType = 4 ///爬塔公告 ChatSystem4 ChatSystemType = 4 ///爬塔公告
ChatSystem5 ChatSystemType = 5 ///停机维护公告 ChatSystem5 ChatSystemType = 5 ///停机维护公告
ChatSystem10 ChatSystemType = 6 ///通关了赛季塔 【玩家名称】通关了赛季塔50层 ChatSystem6 ChatSystemType = 6 ///通关了赛季塔 【玩家名称】通关了赛季塔50层
ChatSystem11 ChatSystemType = 7 ///英雄升级 【玩家名称】已将【英雄名称】培养至60级 ChatSystem7 ChatSystemType = 7 ///英雄升级 【玩家名称】已将【英雄名称】培养至60级
ChatSystem12 ChatSystemType = 8 ///英雄升星 【玩家名称】已将【英雄名称】培养至6星 ChatSystem8 ChatSystemType = 8 ///英雄升星 【玩家名称】已将【英雄名称】培养至6星
ChatSystem13 ChatSystemType = 9 ///英雄技能培养 【玩家名称】已将【英雄名称】技能培养至满级! ChatSystem9 ChatSystemType = 9 ///英雄技能培养 【玩家名称】已将【英雄名称】技能培养至满级!
ChatSystem14 ChatSystemType = 10 ///英雄共鸣 【玩家名称】已将【英雄名称】共鸣至满级! ChatSystem10 ChatSystemType = 10 ///英雄共鸣 【玩家名称】已将【英雄名称】共鸣至满级!
ChatSystem15 ChatSystemType = 11 ///英雄觉醒 【玩家名称】已将【英雄名称】觉醒至满级! ChatSystem11 ChatSystemType = 11 ///英雄觉醒 【玩家名称】已将【英雄名称】觉醒至满级!
ChatSystem16 ChatSystemType = 12 ///玩家升级 【玩家名称】达到了60级 ChatSystem12 ChatSystemType = 12 ///玩家升级 【玩家名称】达到了60级
ChatSystem17 ChatSystemType = 13 ///英雄招募 【玩家名称】在招募中获得了【英雄名称】! ChatSystem13 ChatSystemType = 13 ///英雄招募 【玩家名称】在招募中获得了【英雄名称】!
ChatSystem18 ChatSystemType = 14 ///维京远征 【玩家名称】通关了火焰泰坦难度16 ChatSystem14 ChatSystemType = 14 ///维京远征 【玩家名称】通关了火焰泰坦难度16
ChatSystem24 ChatSystemType = 15 ///狩猎 【玩家名称】通关了巨型猩猩难度8! ChatSystem15 ChatSystemType = 15 ///狩猎 【玩家名称】通关了巨型猩猩难度8!
) )
// 巨兽列车 // 巨兽列车

View File

@ -240,9 +240,11 @@ type (
} }
IViking interface { IViking interface {
CheckUserBaseVikingInfo(uid string) (data []*pb.DBVikingRank) // 查询玩家最佳通关记录 CheckUserBaseVikingInfo(uid string) (data []*pb.DBVikingRank) // 查询玩家最佳通关记录
IReddot
} }
IHunting interface { IHunting interface {
CheckUserBaseHuntingInfo(uid string) (data []*pb.DBHuntingRank) // 查询玩家最佳通关记录 CheckUserBaseHuntingInfo(uid string) (data []*pb.DBHuntingRank) // 查询玩家最佳通关记录
IReddot
} }
// 公会 // 公会
ISociaty interface { ISociaty interface {

View File

@ -7,6 +7,7 @@ import (
"sync" "sync"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
@ -18,13 +19,11 @@ import (
*/ */
type clientComp struct { type clientComp struct {
modules.MCompGate modules.MCompGate
options *Options options *Options
service core.IService service core.IService
module *Battle module *Battle
conn *websocket.Conn clinets []*client
seq uint64 i int
pendingmutex sync.Mutex
pending map[uint64]*MessageCall //高并发回调
} }
//组件初始化接口 //组件初始化接口
@ -32,19 +31,44 @@ func (this *clientComp) Init(service core.IService, module core.IModule, comp co
this.MCompGate.Init(service, module, comp, options) this.MCompGate.Init(service, module, comp, options)
this.options = options.(*Options) this.options = options.(*Options)
this.module = module.(*Battle) this.module = module.(*Battle)
this.pending = make(map[uint64]*MessageCall) this.clinets = make([]*client, len(this.options.BattleServerAddr))
return return
} }
func (this *clientComp) Start() (err error) { func (this *clientComp) Start() (err error) {
err = this.MCompGate.Start() err = this.MCompGate.Start()
dialer := websocket.Dialer{} for i, v := range this.options.BattleServerAddr {
this.conn, _, err = dialer.Dial(this.options.BattleServerAddr, nil) if this.clinets[i], err = newClient(v, this.options.Log); err != nil {
return
}
}
return return
} }
//校验战斗过程
func (this *clientComp) callBattle(ctx context.Context, method string, req proto.Message, reply proto.Message) (err error) { func (this *clientComp) callBattle(ctx context.Context, method string, req proto.Message, reply proto.Message) (err error) {
i := this.i % len(this.clinets)
this.i += 1
err = this.clinets[i].callBattle(ctx, method, req, reply)
return
}
func newClient(addr string, log log.ILogger) (c *client, err error) {
c = &client{log: log, pending: make(map[uint64]*MessageCall)}
dialer := websocket.Dialer{}
c.conn, _, err = dialer.Dial(addr, nil)
return
}
type client struct {
log log.ILogger
conn *websocket.Conn
seq uint64
pendingmutex sync.Mutex
pending map[uint64]*MessageCall //高并发回调
}
//校验战斗过程
func (this *client) callBattle(ctx context.Context, method string, req proto.Message, reply proto.Message) (err error) {
call := new(MessageCall) call := new(MessageCall)
call.Done = make(chan *MessageCall, 10) call.Done = make(chan *MessageCall, 10)
call.Args = req call.Args = req
@ -74,7 +98,7 @@ func (this *clientComp) callBattle(ctx context.Context, method string, req proto
this.pendingmutex.Unlock() this.pendingmutex.Unlock()
if call != nil { if call != nil {
call.Error = ctx.Err() call.Error = ctx.Err()
call.done(this.options.Log) call.done(this.log)
} }
return ctx.Err() return ctx.Err()
case call := <-call.Done: case call := <-call.Done:
@ -83,7 +107,7 @@ func (this *clientComp) callBattle(ctx context.Context, method string, req proto
return return
} }
func (this *clientComp) run() { func (this *client) run() {
var ( var (
data []byte data []byte
msg *pb.BattleRpcMessage = &pb.BattleRpcMessage{} msg *pb.BattleRpcMessage = &pb.BattleRpcMessage{}
@ -92,23 +116,23 @@ func (this *clientComp) run() {
locp: locp:
for { for {
if _, data, err = this.conn.ReadMessage(); err != nil { if _, data, err = this.conn.ReadMessage(); err != nil {
this.module.Errorf("client err:%v", err) this.log.Errorf("client err:%v", err)
break locp break locp
} }
if err = proto.Unmarshal(data, msg); err != nil { if err = proto.Unmarshal(data, msg); err != nil {
this.module.Errorf("client Unmarshal err:%v", err) this.log.Errorf("client Unmarshal err:%v", err)
break locp break locp
} }
go this.handleresponse(msg) go this.handleresponse(msg)
} }
} }
func (this *clientComp) handleresponse(resp *pb.BattleRpcMessage) { func (this *client) handleresponse(resp *pb.BattleRpcMessage) {
var call *MessageCall var call *MessageCall
this.pendingmutex.Lock() this.pendingmutex.Lock()
call = this.pending[resp.Rid] call = this.pending[resp.Rid]
delete(this.pending, resp.Rid) delete(this.pending, resp.Rid)
this.pendingmutex.Unlock() this.pendingmutex.Unlock()
call.Error = resp.Data.UnmarshalTo(call.Reply) call.Error = resp.Data.UnmarshalTo(call.Reply)
call.done(this.options.Log) call.done(this.log)
} }

View File

@ -13,7 +13,7 @@ type (
} }
Options struct { Options struct {
modules.Options modules.Options
BattleServerAddr string BattleServerAddr []string
} }
) )
@ -25,7 +25,7 @@ func (this *Options) GetLog() log.ILogger {
return this.Log return this.Log
} }
func (this *Options) GetBattleServerAddr() string { func (this *Options) GetBattleServerAddr() []string {
return this.BattleServerAddr return this.BattleServerAddr
} }

View File

@ -1,6 +1,7 @@
package hero package hero
import ( import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/modules" "go_dreamfactory/modules"
) )
@ -10,6 +11,7 @@ type apiComp struct {
modules.MCompGate modules.MCompGate
service core.IService service core.IService
module *Hero module *Hero
chat comm.IChat
} }
const ( //消息回复的头名称 const ( //消息回复的头名称
@ -42,6 +44,10 @@ func (this *apiComp) Init(service core.IService, module core.IModule, comp core.
func (this *apiComp) Start() (err error) { func (this *apiComp) Start() (err error) {
err = this.MCompGate.Start() err = this.MCompGate.Start()
var module core.IModule
if module, err = this.service.GetModule(comm.ModuleChat); err != nil {
return
}
this.chat = module.(comm.IChat)
return return
} }

View File

@ -104,6 +104,14 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
chanegCard = append(chanegCard, _hero) chanegCard = append(chanegCard, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard}) session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero}) session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero})
//英雄觉醒 【玩家名称】已将【英雄名称】觉醒至满级!
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem11, nil, _hero.JuexingLv, 0, user.Name, _hero.HeroID)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
//任务相关 //任务相关
this.module.ModuleRtask.SendToRtask(session, comm.Rtype34, 1, _hero.JuexingLv) this.module.ModuleRtask.SendToRtask(session, comm.Rtype34, 1, _hero.JuexingLv)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype119, _hero.JuexingLv) this.module.ModuleRtask.SendToRtask(session, comm.Rtype119, _hero.JuexingLv)

View File

@ -230,6 +230,14 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
} }
code = this.module.CreateRepeatHeros(session, _mapAddHero, true) code = this.module.CreateRepeatHeros(session, _mapAddHero, true)
///英雄招募 【玩家名称】在招募中获得了【英雄名称】!
for hid := range _mapAddHero {
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem13, nil, 0, 0, user.Name, hid)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
}
rsp.Heroes = szCards rsp.Heroes = szCards
session.SendMsg(string(this.module.GetType()), DrawCard, rsp) session.SendMsg(string(this.module.GetType()), DrawCard, rsp)

View File

@ -149,6 +149,12 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
this.module.DispenseRes(session, resonConfig.Prize, true) this.module.DispenseRes(session, resonConfig.Prize, true)
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero}) session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
//英雄共鸣 【玩家名称】已将【英雄名称】共鸣至满级!
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem10, nil, _hero.ResonateNum, 0, user.Name, _hero.HeroID)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
// 任务相关 // 任务相关
this.module.ModuleRtask.SendToRtask(session, comm.Rtype39, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype39, 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype127, _hero.Star, utils.ToInt32(_hero.HeroID), _hero.ResonateNum) //A星英雄共鸣N级 this.module.ModuleRtask.SendToRtask(session, comm.Rtype127, _hero.Star, utils.ToInt32(_hero.HeroID), _hero.ResonateNum) //A星英雄共鸣N级

View File

@ -163,7 +163,12 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
ChangeList = append(ChangeList, _hero) ChangeList = append(ChangeList, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList}) session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero}) session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
//英雄技能培养 【玩家名称】已将【英雄名称】技能培养至满级!
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem9, nil, _hero.Lv, 0, user.Name, _hero.HeroID)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
this.module.ModuleRtask.SendToRtask(session, comm.Rtype52, utils.ToInt32(_hero.HeroID), 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype52, utils.ToInt32(_hero.HeroID), 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype53, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype53, 1)
// 检查是不是满级技能 // 检查是不是满级技能
@ -175,6 +180,7 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
} }
} }
if maxLv { if maxLv {
this.module.ModuleRtask.SendToRtask(session, comm.Rtype54, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype54, 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype57, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype57, 1)
} }

View File

@ -169,6 +169,12 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard}) session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero}) session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
//英雄升星 【玩家名称】已将【英雄名称】培养至6星
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem8, nil, _hero.Lv, 0, user.Name, _hero.HeroID)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
this.module.ModuleRtask.SendToRtask(session, comm.Rtype6, utils.ToInt32(_hero.HeroID), _hero.Star) this.module.ModuleRtask.SendToRtask(session, comm.Rtype6, utils.ToInt32(_hero.HeroID), _hero.Star)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype25, 1, utils.ToInt32(_hero.HeroID), _hero.Star) this.module.ModuleRtask.SendToRtask(session, comm.Rtype25, 1, utils.ToInt32(_hero.HeroID), _hero.Star)
if _hero.Star == 4 { if _hero.Star == 4 {

View File

@ -136,6 +136,12 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
if newhero != nil { if newhero != nil {
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了 _changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了
} }
//英雄升级 【玩家名称】已将【英雄名称】培养至60级
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem7, nil, _hero.Lv, 0, user.Name, _hero.HeroID)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: _changeHero}) session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: _changeHero})
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero}) session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
return return

View File

@ -22,6 +22,7 @@ type apiComp struct {
configure *configureComp configure *configureComp
module *Hunting module *Hunting
friend comm.IFriend friend comm.IFriend
chat comm.IChat
} }
//组件初始化接口 //组件初始化接口
@ -40,5 +41,9 @@ func (this *apiComp) Start() (err error) {
return return
} }
this.friend = module.(comm.IFriend) this.friend = module.(comm.IFriend)
if module, err = this.service.GetModule(comm.ModuleChat); err != nil {
return
}
this.chat = module.(comm.IChat)
return return
} }

View File

@ -66,6 +66,10 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen
BossType: req.BossType, BossType: req.BossType,
Difficulty: req.Difficulty, Difficulty: req.Difficulty,
}) })
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem15, nil, req.BossType, req.Difficulty, user.Name)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
return return
} }

View File

@ -147,6 +147,11 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
} }
} }
code = this.module.ModifySeasonPagodaData(session.GetUserId(), mapData) code = this.module.ModifySeasonPagodaData(session.GetUserId(), mapData)
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem6, nil, pagoda.PagodaId, 0, user.Name)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda}) session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda})
} }

View File

@ -33,6 +33,5 @@ func (this *ModuleSys) GetType() core.M_Modules {
} }
func (this *ModuleSys) IsAccess(funcName string, userId string) (code pb.ErrorCode) { func (this *ModuleSys) IsAccess(funcName string, userId string) (code pb.ErrorCode) {
// return this.modelSys.IsAccess(funcName, userId) return this.modelSys.IsAccess(funcName, userId)
return pb.ErrorCode_Success
} }

View File

@ -144,7 +144,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod
// 初始化随机任务数据 // 初始化随机任务数据
// this.module.ModuleRtask.InitCondiData(user.Uid) // this.module.ModuleRtask.InitCondiData(user.Uid)
//this.Sign(session, &pb.UserSignReq{})
// 日常登录任务 // 日常登录任务
this.module.ModuleRtask.SendToRtask(session, comm.Rtype7, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype7, 1)

View File

@ -22,7 +22,9 @@ func (this *apiComp) Sign(session comm.IUserSession, req *pb.UserSignReq) (code
update map[string]interface{} update map[string]interface{}
bReward bool bReward bool
) )
if code = this.module.ModuleSys.IsAccess(comm.Sign, session.GetUserId()); code != pb.ErrorCode_Success {
return
}
update = make(map[string]interface{}, 0) update = make(map[string]interface{}, 0)
if sign, err := this.module.modelSign.GetUserSign(session.GetUserId()); err == nil { if sign, err := this.module.modelSign.GetUserSign(session.GetUserId()); err == nil {
start, _ := utils.GetMonthStartEnd() start, _ := utils.GetMonthStartEnd()

View File

@ -69,58 +69,3 @@ func (this *ModelSign) updateSignData(uid string, sign *pb.DBSign) (err error) {
} }
return return
} }
// 检测是否达到重置日期
func (this *ModelSign) checkResetSignData(session comm.IUserSession) (code pb.ErrorCode) {
var (
update map[string]interface{}
bReward bool
)
update = make(map[string]interface{}, 0)
if sign, err := this.module.modelSign.GetUserSign(session.GetUserId()); err == nil {
start, _ := utils.GetMonthStartEnd()
if sign.RTime < start { // 重置
sign.RTime = configure.Now().Unix()
sign.SignTime = sign.RTime
sign.SignCount = 1
if newGroup := this.module.configure.GetSignResetConf(sign.Cid + 1); newGroup != -1 { // 获取当前的组id
sign.Cid += 1
sign.Group = newGroup
update["cid"] = sign.Cid
update["group"] = sign.Group
}
update["rTime"] = sign.RTime
update["signTime"] = sign.SignTime
update["signCount"] = sign.SignCount
this.Change(session.GetUserId(), update)
bReward = true
} else {
if !utils.IsToday(sign.SignTime) {
sign.SignCount += 1
update["signCount"] = sign.SignCount
sign.SignTime = configure.Now().Unix()
update["signTime"] = sign.SignTime
sign.RTime = sign.SignTime
update["rTime"] = sign.RTime
this.Change(session.GetUserId(), update)
bReward = true
}
}
_data := this.module.configure.GetSignConf(sign.Cid, sign.Group)
if _data != nil { // 发奖
if bReward {
this.module.DispenseRes(session, _data.Loopgift, true)
}
} else {
if bReward {
this.module.DispenseRes(session, this.module.globalConf.UnifiedReward, true) // 发放通用奖励
}
}
session.SendMsg(string(this.module.GetType()), "sign", &pb.UserSignResp{
Data: sign,
Reward: bReward,
})
}
return
}

View File

@ -192,6 +192,15 @@ func (this *ModelUser) ChangeLevel(event interface{}, next func(event interface{
ul.session.SendMsg(string(this.module.GetType()), UserSubTypeLvChangedPush, ul.session.SendMsg(string(this.module.GetType()), UserSubTypeLvChangedPush,
&pb.UserLvChangedPush{Uid: ul.session.GetUserId(), Exp: ul.exp, Lv: ul.lv}) &pb.UserLvChangedPush{Uid: ul.session.GetUserId(), Exp: ul.exp, Lv: ul.lv})
this.module.DispenseRes(ul.session, rewards, true) this.module.DispenseRes(ul.session, rewards, true)
mc, err := this.module.service.GetModule(comm.ModuleChat)
if err != nil {
return
}
if chat, ok := mc.(comm.IChat); ok {
chat.SendSysChatToUser(ul.session, comm.ChatSystem12, ul.lv, 0, ul.name)
}
} }
} }
@ -202,4 +211,5 @@ type UserListen struct {
session comm.IUserSession session comm.IUserSession
exp int64 exp int64
lv int32 lv int32
name string
} }

View File

@ -409,6 +409,7 @@ func (this *User) EventUserChanged(session comm.IUserSession) {
ul.session = session ul.session = session
ul.exp = user.Exp ul.exp = user.Exp
ul.lv = user.Lv ul.lv = user.Lv
ul.name = user.Name
} }
this.modelUser.EventApp.Dispatch(comm.EventUserChanged, ul) this.modelUser.EventApp.Dispatch(comm.EventUserChanged, ul)
} }

View File

@ -22,6 +22,7 @@ type apiComp struct {
configure *configureComp configure *configureComp
module *Viking module *Viking
friend comm.IFriend friend comm.IFriend
chat comm.IChat
} }
//组件初始化接口 //组件初始化接口
@ -40,5 +41,10 @@ func (this *apiComp) Start() (err error) {
return return
} }
this.friend = module.(comm.IFriend) this.friend = module.(comm.IFriend)
if module, err = this.service.GetModule(comm.ModuleChat); err != nil {
return
}
this.chat = module.(comm.IChat)
return return
} }

View File

@ -121,7 +121,11 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
Data: viking, Data: viking,
Asset: asset, Asset: asset,
}) })
if user := this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
this.chat.SendSysChatToWorld(comm.ChatSystem14, nil, req.BossId, req.Difficulty, user.Name)
} else {
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
}
// 随机任务统计 // 随机任务统计
this.module.ModuleRtask.SendToRtask(session, comm.Rtype73, req.Difficulty, req.BossId, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype73, req.Difficulty, req.BossId, 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype74, req.Difficulty, req.BossId) this.module.ModuleRtask.SendToRtask(session, comm.Rtype74, req.Difficulty, req.BossId)

View File

@ -63,3 +63,15 @@ func (this *modelViking) getVikingList(uid string) (result *pb.DBViking, err err
func (this *modelViking) modifyVikingDataByObjId(uid string, data map[string]interface{}) error { func (this *modelViking) modifyVikingDataByObjId(uid string, data map[string]interface{}) error {
return this.Change(uid, data) return this.Change(uid, data)
} }
// 红点检测
func (this *modelViking) checkReddot31(uid string) bool {
list, err := this.module.modelViking.getVikingList(uid)
if err != nil {
return false
}
if list.LeftCount > 0 {
return true
}
return false
}

View File

@ -144,3 +144,17 @@ func (this *Viking) CheckRank(uid string, boosID int32, difficulty int32, viking
this.modulerank.SetRankListData("vikingRank"+strconv.Itoa(int(boosID)), difficulty<<16+costTime, objID) this.modulerank.SetRankListData("vikingRank"+strconv.Itoa(int(boosID)), difficulty<<16+costTime, objID)
} }
} }
//红点查询
func (this *Viking) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) {
reddot = make(map[comm.ReddotType]bool)
for _, v := range rid {
switch v {
case comm.Reddot31:
reddot[comm.Reddot31] = this.modelViking.checkReddot31(session.GetUserId())
break
}
}
return
}