diff --git a/bin/json/game_rdtask.json b/bin/json/game_rdtask.json index 7f1a6b5f2..875c5a000 100644 --- a/bin/json/game_rdtask.json +++ b/bin/json/game_rdtask.json @@ -94,7 +94,7 @@ 101 ], "sidequest": [ - 2022, + 2002, 2004 ] }, diff --git a/bin/json/game_rdtaskcondi.json b/bin/json/game_rdtaskcondi.json index 1b8c3f0d0..247b86540 100644 --- a/bin/json/game_rdtaskcondi.json +++ b/bin/json/game_rdtaskcondi.json @@ -3,6 +3,7 @@ "id": 101, "datatype": 2, "type": 1, + "inited": [], "data1": 25001, "data2": 0, "data3": 0, @@ -13,6 +14,7 @@ "id": 102, "datatype": 2, "type": 2, + "inited": [], "data1": 3, "data2": 0, "data3": 0, @@ -23,6 +25,7 @@ "id": 103, "datatype": 2, "type": 3, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -33,6 +36,7 @@ "id": 104, "datatype": 2, "type": 4, + "inited": [], "data1": 25001, "data2": 20, "data3": 0, @@ -43,6 +47,7 @@ "id": 105, "datatype": 2, "type": 5, + "inited": [], "data1": 25001, "data2": 2, "data3": 0, @@ -53,6 +58,7 @@ "id": 106, "datatype": 2, "type": 6, + "inited": [], "data1": 25004, "data2": 4, "data3": 0, @@ -63,6 +69,7 @@ "id": 107, "datatype": 2, "type": 7, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -73,6 +80,7 @@ "id": 108, "datatype": 2, "type": 8, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -83,6 +91,7 @@ "id": 109, "datatype": 2, "type": 9, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -93,6 +102,7 @@ "id": 110, "datatype": 2, "type": 10, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -103,6 +113,7 @@ "id": 111, "datatype": 2, "type": 11, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -113,6 +124,7 @@ "id": 112, "datatype": 2, "type": 12, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -123,6 +135,7 @@ "id": 113, "datatype": 2, "type": 13, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -133,6 +146,13 @@ "id": 114, "datatype": 2, "type": 14, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 10, "data2": 0, "data3": 0, @@ -143,6 +163,13 @@ "id": 115, "datatype": 2, "type": 15, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 10, "data2": 0, "data3": 0, @@ -153,6 +180,13 @@ "id": 116, "datatype": 2, "type": 16, + "inited": [ + 1, + 0, + -1, + -1, + -1 + ], "data1": 5, "data2": 3, "data3": 0, @@ -163,6 +197,13 @@ "id": 117, "datatype": 2, "type": 17, + "inited": [ + 1, + 0, + -1, + -1, + -1 + ], "data1": 7, "data2": 5, "data3": 0, @@ -173,6 +214,13 @@ "id": 118, "datatype": 2, "type": 18, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 1, "data2": 0, "data3": 0, @@ -183,6 +231,13 @@ "id": 119, "datatype": 2, "type": 19, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 2, "data2": 0, "data3": 0, @@ -193,6 +248,7 @@ "id": 120, "datatype": 2, "type": 20, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -203,6 +259,13 @@ "id": 121, "datatype": 2, "type": 21, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 2, "data2": 0, "data3": 0, @@ -213,6 +276,13 @@ "id": 122, "datatype": 2, "type": 22, + "inited": [ + 1, + -1, + -1, + -1, + -1 + ], "data1": 25001, "data2": 0, "data3": 0, @@ -223,6 +293,13 @@ "id": 123, "datatype": 2, "type": 23, + "inited": [ + 1, + 0, + 0, + -1, + -1 + ], "data1": 3, "data2": 5, "data3": 20, @@ -233,6 +310,7 @@ "id": 124, "datatype": 2, "type": 24, + "inited": [], "data1": 4, "data2": 0, "data3": 0, @@ -243,6 +321,7 @@ "id": 125, "datatype": 2, "type": 25, + "inited": [], "data1": 3, "data2": 25001, "data3": 6, @@ -253,6 +332,7 @@ "id": 126, "datatype": 2, "type": 26, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -263,6 +343,7 @@ "id": 127, "datatype": 2, "type": 27, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -273,6 +354,7 @@ "id": 128, "datatype": 2, "type": 28, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -283,6 +365,7 @@ "id": 129, "datatype": 2, "type": 29, + "inited": [], "data1": 2, "data2": 22, "data3": 25004, @@ -293,6 +376,7 @@ "id": 130, "datatype": 2, "type": 30, + "inited": [], "data1": 5, "data2": 3, "data3": 0, @@ -303,6 +387,7 @@ "id": 131, "datatype": 2, "type": 31, + "inited": [], "data1": 4, "data2": 3, "data3": 0, @@ -313,6 +398,7 @@ "id": 132, "datatype": 2, "type": 32, + "inited": [], "data1": 3, "data2": 3, "data3": 20, @@ -323,6 +409,7 @@ "id": 133, "datatype": 2, "type": 33, + "inited": [], "data1": 3, "data2": 3, "data3": 23, @@ -333,6 +420,7 @@ "id": 134, "datatype": 2, "type": 34, + "inited": [], "data1": 5, "data2": 2, "data3": 0, @@ -343,6 +431,7 @@ "id": 135, "datatype": 2, "type": 35, + "inited": [], "data1": 2, "data2": 25001, "data3": 0, @@ -353,6 +442,7 @@ "id": 136, "datatype": 2, "type": 36, + "inited": [], "data1": 1, "data2": 3, "data3": 3, @@ -363,6 +453,7 @@ "id": 137, "datatype": 2, "type": 37, + "inited": [], "data1": 1, "data2": 3, "data3": 0, @@ -373,6 +464,7 @@ "id": 138, "datatype": 2, "type": 38, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -383,6 +475,7 @@ "id": 139, "datatype": 2, "type": 39, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -393,6 +486,7 @@ "id": 140, "datatype": 2, "type": 40, + "inited": [], "data1": 2, "data2": 2, "data3": 0, @@ -403,6 +497,7 @@ "id": 141, "datatype": 2, "type": 41, + "inited": [], "data1": 2, "data2": 2, "data3": 1, @@ -413,6 +508,7 @@ "id": 142, "datatype": 2, "type": 42, + "inited": [], "data1": 2, "data2": 2, "data3": 2, @@ -423,6 +519,7 @@ "id": 143, "datatype": 2, "type": 43, + "inited": [], "data1": 2, "data2": 2, "data3": 0, @@ -433,6 +530,7 @@ "id": 144, "datatype": 2, "type": 44, + "inited": [], "data1": 3, "data2": 0, "data3": 0, @@ -443,6 +541,7 @@ "id": 145, "datatype": 2, "type": 45, + "inited": [], "data1": 2, "data2": 1, "data3": 1, @@ -453,6 +552,7 @@ "id": 146, "datatype": 2, "type": 46, + "inited": [], "data1": 1, "data2": 1, "data3": 1, @@ -463,6 +563,7 @@ "id": 147, "datatype": 2, "type": 47, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -473,6 +574,7 @@ "id": 148, "datatype": 2, "type": 48, + "inited": [], "data1": 1, "data2": 1, "data3": 2, @@ -483,6 +585,7 @@ "id": 149, "datatype": 2, "type": 49, + "inited": [], "data1": 1, "data2": 1, "data3": 2, @@ -493,6 +596,7 @@ "id": 150, "datatype": 2, "type": 50, + "inited": [], "data1": 1, "data2": 1, "data3": 0, @@ -503,6 +607,7 @@ "id": 151, "datatype": 2, "type": 51, + "inited": [], "data1": 1, "data2": 1, "data3": 0, @@ -513,6 +618,7 @@ "id": 152, "datatype": 2, "type": 52, + "inited": [], "data1": 1, "data2": 45003, "data3": 0, @@ -523,6 +629,7 @@ "id": 153, "datatype": 2, "type": 53, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -533,6 +640,7 @@ "id": 154, "datatype": 2, "type": 54, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -543,6 +651,7 @@ "id": 155, "datatype": 2, "type": 55, + "inited": [], "data1": 2, "data2": 3, "data3": 0, @@ -553,6 +662,7 @@ "id": 156, "datatype": 2, "type": 56, + "inited": [], "data1": 1, "data2": 1, "data3": 2, @@ -563,6 +673,7 @@ "id": 157, "datatype": 2, "type": 57, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -573,6 +684,7 @@ "id": 158, "datatype": 2, "type": 58, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -583,6 +695,7 @@ "id": 159, "datatype": 2, "type": 59, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -593,6 +706,7 @@ "id": 160, "datatype": 2, "type": 60, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -603,6 +717,7 @@ "id": 161, "datatype": 2, "type": 61, + "inited": [], "data1": 101, "data2": 0, "data3": 0, @@ -613,6 +728,7 @@ "id": 162, "datatype": 2, "type": 62, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -623,6 +739,7 @@ "id": 163, "datatype": 2, "type": 63, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -633,6 +750,7 @@ "id": 164, "datatype": 2, "type": 64, + "inited": [], "data1": 2, "data2": 0, "data3": 0, @@ -643,6 +761,7 @@ "id": 165, "datatype": 2, "type": 65, + "inited": [], "data1": 2, "data2": 10001, "data3": 0, @@ -653,6 +772,7 @@ "id": 166, "datatype": 2, "type": 66, + "inited": [], "data1": 2, "data2": 1, "data3": 0, @@ -663,6 +783,7 @@ "id": 167, "datatype": 2, "type": 67, + "inited": [], "data1": 1000, "data2": 1, "data3": 0, @@ -673,6 +794,7 @@ "id": 168, "datatype": 2, "type": 68, + "inited": [], "data1": 1000, "data2": 1, "data3": 0, @@ -683,6 +805,7 @@ "id": 169, "datatype": 2, "type": 69, + "inited": [], "data1": 1, "data2": 0, "data3": 0, @@ -693,6 +816,7 @@ "id": 170, "datatype": 2, "type": 1, + "inited": [], "data1": 25004, "data2": 0, "data3": 0, @@ -703,6 +827,7 @@ "id": 171, "datatype": 2, "type": 70, + "inited": [], "data1": 101, "data2": 0, "data3": 0, diff --git a/comm/imodule.go b/comm/imodule.go index c504444e8..e56de0547 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -121,9 +121,12 @@ type ( // 随机任务 IRtask interface { + // 条件校验 CheckCondi(session IUserSession, condiId int32) (code pb.ErrorCode) //任务触发 SendToRtask(session IUserSession, rtaskType TaskType, params ...int32) (code pb.ErrorCode) + // 初始化条件数据 + InitCondiData(uid string) error } //好友 diff --git a/modules/rtask/model_record.go b/modules/rtask/model_record.go index 840464e33..c303125c5 100644 --- a/modules/rtask/model_record.go +++ b/modules/rtask/model_record.go @@ -6,8 +6,10 @@ import ( "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" "go_dreamfactory/pb" + "time" "github.com/pkg/errors" + "go.mongodb.org/mongo-driver/bson/primitive" ) type ModelRtaskRecord struct { @@ -42,3 +44,89 @@ func (this *ModelRtaskRecord) getRecord(uid string) *pb.DBRtaskRecord { } return record } + +// 初始化任务条件数据 +func (this *ModelRtaskRecord) initCondiData(uid string) error { + dr := this.getRecord(uid) + grc, err := this.moduleRtask.configure.getRtaskCondiCfg() + if err != nil { + return err + } + if grc == nil { + return errors.New("getRtaskCondiCfg err") + } + + if dr != nil && dr.Vals == nil { + record := &pb.DBRtaskRecord{Uid: uid} + record.Id = primitive.NewObjectID().Hex() + record.Vals = make(map[int32]*pb.RtaskData) + for _, v := range grc.GetDataList() { + // 不符合参数配置长度则不初始化 + if len(v.Inited) != 5 { + continue + } + + vals := []int32{} + for _, p := range v.Inited { + if p == 1 { + vals = append(vals, 0) + } else if p == 0 { + vals = append(vals) + } else if p == -1 { + break + } + } + + record.Vals[v.Id] = &pb.RtaskData{ + Data: toMap(vals...), + Rtype: v.Type, + Timestamp: time.Now().Unix(), + } + } + + if err := this.Add(uid, record); err != nil { + return err + } + + } else { + for _, v := range grc.GetDataList() { + if len(v.Inited) != 5 { + continue + } + vals := []int32{} + for i, p := range v.Inited { + if p == 1 { + vals = append(vals, 0) + } else if p == 0 { + sv := int32(0) + switch i { + case 0: + sv = v.Data1 + case 1: + sv = v.Data2 + case 2: + sv = v.Data3 + case 3: + sv = v.Data4 + case 4: + sv = v.Data5 + } + vals = append(vals, sv) + } else if p == -1 { + break + } + } + dr.Vals[v.Id] = &pb.RtaskData{ + Data: toMap(vals...), + Rtype: v.Type, + Timestamp: time.Now().Unix(), + } + + } + update := map[string]interface{}{ + "vals": dr.Vals, + } + err = this.Change(uid, update) + } + return nil +} diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 374234be7..e0747f286 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -240,9 +240,15 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T return } +// 任务条件校验 func (this *ModuleRtask) CheckCondi(session comm.IUserSession, condiId int32) (code pb.ErrorCode) { if _, ok := this.modelRtask.checkCondi(session.GetUserId(), condiId); !ok { code = pb.ErrorCode_RtaskCondiNoReach } return } + +// 初始化任务条件数据 +func (this *ModuleRtask) InitCondiData(uid string) error { + return this.modelRtaskRecord.initCondiData(uid) +} diff --git a/modules/user/api_login.go b/modules/user/api_login.go index bb95d0b7b..b1f1932a2 100644 --- a/modules/user/api_login.go +++ b/modules/user/api_login.go @@ -135,6 +135,9 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod rsp.Ex = expand } + // if this.module.ModuleSys.IsAccess("", user.Lv) { + this.module.ModuleRtask.InitCondiData(user.Uid) + // } } mail := &pb.DBMailData{ ObjId: primitive.NewObjectID().Hex(), diff --git a/sys/configure/structs/Game.RdtaskCondiData.go b/sys/configure/structs/Game.RdtaskCondiData.go index 43231949d..c9e2d2af7 100644 --- a/sys/configure/structs/Game.RdtaskCondiData.go +++ b/sys/configure/structs/Game.RdtaskCondiData.go @@ -14,6 +14,7 @@ type GameRdtaskCondiData struct { Id int32 Datatype int32 Type int32 + Inited []int32 Data1 int32 Data2 int32 Data3 int32 @@ -31,6 +32,20 @@ func (_v *GameRdtaskCondiData)Deserialize(_buf map[string]interface{}) (err erro { 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["datatype"].(float64); !_ok_ { err = errors.New("datatype error"); return }; _v.Datatype = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["inited"].([]interface{}); !_ok_ { err = errors.New("inited error"); return } + + _v.Inited = 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.Inited = append(_v.Inited, _list_v_) + } + } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data1"].(float64); !_ok_ { err = errors.New("data1 error"); return }; _v.Data1 = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data2"].(float64); !_ok_ { err = errors.New("data2 error"); return }; _v.Data2 = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data3"].(float64); !_ok_ { err = errors.New("data3 error"); return }; _v.Data3 = int32(_tempNum_) }