diff --git a/modules/dispatch/model_dispatch.go b/modules/dispatch/model_dispatch.go index 07733d246..e7b291ede 100644 --- a/modules/dispatch/model_dispatch.go +++ b/modules/dispatch/model_dispatch.go @@ -136,20 +136,19 @@ func (this *modelDispatch) taskRandom(uid string, dispatch *pb.DBDispatch) (task func (this *modelDispatch) randomTask(dispatch *pb.DBDispatch, n int) (tasks []*pb.DispatchTask) { total := 0 + existmap := make(map[int32]int32) + for _, v := range dispatch.Nb.Tasks { + if v != nil { + existmap[v.TaskId] = v.TaskId + } + } for total < n { rid := this.getTasksWeight(dispatch.Nb.Lv) if rid == 0 { return nil } - //去重 - exist := false - for _, v := range dispatch.Nb.Tasks { - if v != nil && v.TaskId == rid { - exist = true - } - } - //不存在 - if !exist { + + if _, ok := existmap[rid]; !ok { tasks = append(tasks, &pb.DispatchTask{ TaskId: rid, }) diff --git a/modules/rtask/help.go b/modules/rtask/help.go index 33f7e6bce..2eaa8987d 100644 --- a/modules/rtask/help.go +++ b/modules/rtask/help.go @@ -10,6 +10,7 @@ import ( ) func lenParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (n int, err error) { + if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 && cfg.Data4 != 0 && cfg.Data5 != 0 { if len(vals) != 5 { err = errors.New(fmt.Sprintf("%v 参数个数不一致,期望5实际是%v", cfg.Id, len(vals))) @@ -50,7 +51,7 @@ func lenParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (n int, err error) { } } - if cfg.Data1 != 0 { + if cfg.Data1 != 0 && vals[0] != 0 { if len(vals) != 1 { err = errors.New(fmt.Sprintf("%v 参数个数不一致,期望1实际是%v", cfg.Id, len(vals))) return @@ -149,7 +150,7 @@ func greatEual(actual, expected int32) bool { return actual >= expected } -//小于等于 +// 小于等于 func lessEqual(actual, expected int32) bool { return actual <= expected }