package task import ( "blazing/modules/blazing/model" "sync" ) // RegisterTask 注册任务奖励 // 参数:任务ID、分支(OutState)、物品列表、精灵类型(0=无) func RegisterTask(taskID uint32, outState uint32, items []model.ItemInfo, petType uint32) { if _, ok := TaskResultMap[taskID]; !ok { TaskResultMap[taskID] = make(map[uint32]TaskResult) } TaskResultMap[taskID][outState] = TaskResult{ ItemList: items, PetTypeId: petType, } } func init() { // -------------------------- 新手任务 -------------------------- RegisterTask(85, 1, []model.ItemInfo{ // 新手任务1(默认分支1) {100027, 1}, // 新手帽 {100028, 1}, // 新手腰带 {500001, 1}, // 精灵仓库 {500502, 1}, // 精灵恢复仓 }, 0) RegisterTask(86, 1, []model.ItemInfo{}, 1) // 新手任务2(分支1:布布种子) RegisterTask(86, 2, []model.ItemInfo{}, 7) // 新手任务2(分支2:小火猴) RegisterTask(86, 3, []model.ItemInfo{}, 4) // 新手任务2(分支3:伊优) RegisterTask(86, 0, []model.ItemInfo{}, 1) // 新手任务2(默认分支:布布种子) RegisterTask(87, 0, []model.ItemInfo{ // 新手任务3(默认分支) {300001, 5}, // 普通胶囊x5 {300011, 3}, // 初级体力药剂x3 }, 0) RegisterTask(88, 1, []model.ItemInfo{ // 新手任务4(默认分支) {1, 50000}, // 赛尔豆x50000 {3, 50000}, // 累积经验x50000 {5, 20}, // 金豆x20 {300650, 3}, // 全能学习力遗忘器x3 // {300651, 6}, // 全能学习力注入器x6 }, 0) // -------------------------- 普通任务(无精灵奖励) -------------------------- RegisterTask(90, 0, []model.ItemInfo{ // 克洛斯星的皮皮 {1, 1000}, // 赛尔豆x1000 {3, 1000}, // 经验x1000 }, 0) RegisterTask(8, 0, []model.ItemInfo{{500510, 1}}, 0) // 西塔的珍贵回忆(记忆晶体x1) RegisterTask(9, 0, []model.ItemInfo{{100059, 1}}, 0) // 进入神秘通道(电能锯子x1) RegisterTask(10, 0, []model.ItemInfo{}, 0) // 神秘通道拼图(无奖励) RegisterTask(12, 0, []model.ItemInfo{}, 0) // 精灵广场拿石头(无奖励) RegisterTask(19, 0, []model.ItemInfo{{3, 3000}}, 0) // 先锋队招募(积累经验x3000) RegisterTask(25, 0, []model.ItemInfo{{400501, 10}}, 0) // 新船员的考验(神奇扭蛋牌x10) RegisterTask(37, 0, []model.ItemInfo{ // 帕诺星系星球测绘 {1, 3000}, // 赛尔豆x3000 {100178, 1}, // 勘察头盔x1 {100179, 1}, // 勘察护腕x1 {100180, 1}, // 勘察腰带x1 {100181, 1}, // 勘察军靴x1 }, 0) RegisterTask(47, 0, []model.ItemInfo{ // 突围磁风暴 {3, 5000}, // 累积经验x5000 {1, 5000}, // 赛尔豆x5000 {500585, 1}, // 磁力光束枪台x1 }, 0) RegisterTask(48, 0, []model.ItemInfo{ // 神秘失踪的爱丽丝 {3, 3000}, // 累积经验x3000 {1, 2000}, // 赛尔豆x2000 //{700452, 2}, // 中型智慧芯片x2 }, 0) RegisterTask(52, 0, []model.ItemInfo{ // 谁偷走了雪球能源? {3, 3000}, // 累积经验x3000 {400021, 10}, // 雪球能源x10 {100254, 1}, // 斯诺纪念x1 }, 0) RegisterTask(54, 0, []model.ItemInfo{ // 米鲁族的两个小不点 {3, 5000}, // 累积经验x5000 {400021, 10}, // 雪球能源x10 }, 0) RegisterTask(57, 0, []model.ItemInfo{ // 米鲁族食王选拔赛 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(58, 0, []model.ItemInfo{ // 斯诺岩洞的不解之谜 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 {400021, 10}, // 雪球能源x10 }, 0) RegisterTask(63, 0, []model.ItemInfo{ // 新型试作机SR-01同步调试 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(64, 0, []model.ItemInfo{ // 铸造斯诺冰冠 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 {400021, 10}, // 雪球能源x10 }, 0) RegisterTask(65, 0, []model.ItemInfo{ // 露希欧星勘察 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(66, 0, []model.ItemInfo{ // 合金强化试验 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(68, 0, []model.ItemInfo{ // 资料室的神秘事件 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(69, 0, []model.ItemInfo{ // 宇宙遭遇站 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(70, 0, []model.ItemInfo{ // 船体紧急修复 {3, 3000}, // 累积经验x3000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(72, 0, []model.ItemInfo{ // 船长搜救任务 {3, 2000}, // 累积经验x2000 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(73, 0, []model.ItemInfo{ // 秘制改良机SR-02 {100303, 1}, // SR-02铠甲x1 {400055, 30}, // 变形能量块x30 {3, 3000}, // 累积经验x3000 }, 0) RegisterTask(74, 0, []model.ItemInfo{{3, 3000}}, 0) // 露希欧星历险(积累经验x3000) RegisterTask(75, 0, []model.ItemInfo{ // 哈莫的童年片段一 {3, 3000}, // 累积经验x3000 {100324, 1}, // 龙之纪念x1 }, 0) RegisterTask(79, 0, []model.ItemInfo{ // 寻找哈莫雷特的族人 {3, 3000}, // 累积经验x3000 {1, 2000}, // 赛尔豆x2000 }, 0) RegisterTask(80, 0, []model.ItemInfo{ // 重铸贾斯丁站长 {3, 2000}, // 累积经验x2000 {1, 3000}, // 赛尔豆x3000 }, 0) RegisterTask(81, 0, []model.ItemInfo{ // 守候宿命的追随者 {3, 1000}, // 累积经验x1000 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(83, 0, []model.ItemInfo{ // 光暗之迷 {3, 1000}, // 累积经验x1000 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(84, 0, []model.ItemInfo{ // 星球改造计划 {3, 2000}, // 累积经验x2000 {1, 2000}, // 赛尔豆x2000 }, 0) RegisterTask(89, 0, []model.ItemInfo{ // 试炼之塔的磨练 {3, 500}, // 累积经验x500 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(91, 0, []model.ItemInfo{ // 月光下的约定 {3, 2000}, // 累积经验x2000 {1, 2000}, // 赛尔豆x2000 }, 246) RegisterTask(93, 0, []model.ItemInfo{ // 云霄星的新来客 {3, 1000}, // 累积经验x1000 {1, 500}, // 赛尔豆x500 }, 0) RegisterTask(94, 0, []model.ItemInfo{ // 初识星球能源 {3, 500}, // 累积经验x500 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(96, 0, []model.ItemInfo{ // 旅途中的伙伴 {3, 500}, // 累积经验x500 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(97, 0, []model.ItemInfo{ // 我是音乐小麦霸 {3, 1000}, // 累积经验x1000 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(98, 0, []model.ItemInfo{ // 尼布守卫战 {3, 2000}, // 累积经验x2000 {1, 1000}, // 赛尔豆x1000 }, 0) RegisterTask(201, 0, []model.ItemInfo{{100062, 1}}, 0) // 教官考核(教官指挥棒x1) RegisterTask(300, 0, []model.ItemInfo{}, 300) // 领取谱尼真身(谱尼的精元x1) // -------------------------- 带精灵奖励的任务 -------------------------- RegisterTask(28, 0, []model.ItemInfo{}, 102) // 遗迹中的精灵信号(奇塔,类型102) RegisterTask(40, 0, []model.ItemInfo{}, 139) // 时空之门(迪卢卡,类型139) RegisterTask(49, 0, []model.ItemInfo{ // 密林中的托尼(托尼+物品) // {700452, 2}, // 中型智慧芯片x2 }, 158) // 托尼(类型158) RegisterTask(71, 0, []model.ItemInfo{ // 赛尔号大整修(TOE+物品) {3, 1000}, // 累积经验x1000 {1, 1000}, // 赛尔豆x1000 }, 213) // TOE(类型213) RegisterTask(92, 0, []model.ItemInfo{ // 站长归来(尼布+物品) {3, 2000}, // 累积经验x2000 {1, 2000}, // 赛尔豆x2000 }, 95) // 尼布(类型95) RegisterTask(133, 0, []model.ItemInfo{ // 寻找迷失的心(史空+物品) {3, 2000}, // 累积经验x2000 {1, 2000}, // 赛尔豆x2000 }, 381) // 史空(类型381) // -------------------------- 多分支任务 -------------------------- RegisterTask(95, 1, []model.ItemInfo{ // 宇宙中的黑色旋涡(分支1:刺蜂套装) {3, 4000}, // 累积经验x4000 {1, 2000}, // 赛尔豆x2000 {100346, 1}, // 刺蜂重盔x1 {100347, 1}, // 刺蜂护肩x1 {100348, 1}, // 刺蜂腰带x1 {100349, 1}, // 刺蜂滚轮x1 }, 0) RegisterTask(95, 2, []model.ItemInfo{ // 宇宙中的黑色旋涡(分支2:锡蝶套装) {3, 4000}, // 累积经验x4000 {1, 2000}, // 赛尔豆x2000 {100350, 1}, // 锡蝶重盔x1 {100351, 1}, // 锡蝶护肩x1 {100352, 1}, // 锡蝶腰带x1 {100353, 1}, // 锡蝶滚轮x1 }, 0) } // 任务触发里程碑 // func Test_event(b *testing.T) { // topic := bus.NewTopic[*Task]() //直接注册到用户 // for i := 0; i < 1; i++ { // isdone := false // t := topic.Sub(func(v *Task) { //用户初始化时注册里程碑 // if v.done { //如果任务完成 // isdone = true // fmt.Println(v.id, "任务完成") // return // } // // if v.cfunc != nil { // // v.cont = v.cfunc(v.cont) //增加计数 // // } // if v.cont > 5 { //如果计数达到,标记任务完成 // v.done = true // } // fmt.Println(v.id, "当前任务计数", v.cont, "是否完成", v.done) // }) // if isdone { //如果任务完成,取消注册 // t.Cancel() // } // } // // task1 := &Task{id: 1, cfunc: func(t uint32) uint32 { //满足任务1后推定 // // //fmt.Println(1, "当前任务计数", t) // // //实现自定义逻辑 // // //增加用户计数 // // //增加服务器总计数 // // return t + 1 // // }} // topic.Pub(task1) // topic.Pub(task1) // topic.Pub(&Task{id: 2, done: true}) // topic.Pub(task1) //发送事件 // task1.Complete() // fmt.Println("当前任务状态", task1.IsDone()) // } type TaskTree struct { AllTasks []*Task //任务集合 mu sync.Mutex } // Various event types const EventA = 0x01 type Task struct { id uint32 //cfunc func(uint32) uint32 cont uint32 done bool } func (e *Task) IsDone() bool { return e.done } func (e *Task) Complete() { e.done = true } func (e *Task) EventID() string { return "Task" } // Event type for testing purposes type Event struct { Data string type1 uint32 } // Type returns the event type func (ev Event) Type() uint32 { return ev.type1 }