package moonfantasy import ( "crypto/rand" "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" "math/big" "time" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) TriggerCheck(session comm.IUserSession, req *pb.MoonfantasyTriggerReq) (code pb.ErrorCode) { return } ///获取本服聊天消息记录 func (this *apiComp) Trigger(session comm.IUserSession, req *pb.MoonfantasyTriggerReq) (code pb.ErrorCode, data proto.Message) { var ( user *pb.DBUser umfantasy *pb.DBUserMFantasy globalconf *cfg.GameGlobalData uexpand *pb.DBUserExpand boss *cfg.GameDreamlandBoosData mdata *pb.DBMoonFantasy chat *pb.DBChat issucc bool err error ) if code = this.TriggerCheck(session, req); code != pb.ErrorCode_Success { return } globalconf = this.module.configure.GetGlobalConf() n, _ := rand.Int(rand.Reader, big.NewInt(100)) if int32(n.Int64()) < globalconf.DreamlandPro { issucc = true } else { issucc = false } if issucc { if uexpand, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil { code = pb.ErrorCode_DBError this.module.Errorln(err) return } if time.Unix(uexpand.MoonfantasyLastTrigger, 0).Day() != time.Now().Day() { uexpand.MoonfantasyTriggerNum = 0 } if uexpand.MoonfantasyTriggerNum >= globalconf.DreamlandTriggernum { return } if boss, err = this.module.configure.GetMonster(); err != nil { code = pb.ErrorCode_ConfigNoFound return } if user = this.module.ModuleUser.GetUser(session.GetUserId()); user == nil { this.module.Errorf("no found uer:%d", session.GetUserId()) code = pb.ErrorCode_DBError return } if umfantasy, err = this.module.modelUserMF.QueryUsermfantasy(session.GetUserId()); err != nil { code = pb.ErrorCode_CacheReadError return } if mdata, err = this.module.modelDream.addDreamData(&pb.UserInfo{Uid: user.Uid, Name: user.Name, Avatar: user.Avatar}, boss); err != nil { code = pb.ErrorCode_DBError return } umfantasy.Mfantasys = append(umfantasy.Mfantasys, mdata.Id) this.module.modelUserMF.Change(session.GetUserId(), map[string]interface{}{ "mfantasys": umfantasy.Mfantasys, }) this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), map[string]interface{}{ "moonfantasyTriggerNum": uexpand.MoonfantasyTriggerNum + 1, "moonfantasyLastTrigger": time.Now().Unix(), }) chat = &pb.DBChat{ Ctype: pb.ChatType_Moonfantasy, Suid: session.GetUserId(), Avatar: req.Avatar, Uname: req.Uname, Slv: req.Ulv, Stag: session.GetServiecTag(), Content: mdata.Monster, AppendStr: mdata.Id, } this.module.modelDream.noticeuserfriend(session.GetServiecTag(), session.GetUserId(), mdata.Id, chat) session.SendMsg(string(this.module.GetType()), "trigger", &pb.MoonfantasyTriggerResp{Issucc: true, Mid: mdata.Id, Monster: mdata.Monster}) } else { session.SendMsg(string(this.module.GetType()), "trigger", &pb.MoonfantasyTriggerResp{Issucc: false}) } return }