package controller import ( "blazing/common/socket/errorcode" "blazing/logic/service/player" "blazing/logic/service/task" "blazing/modules/blazing/model" ) /** * 接受任务 */ func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *player.Player) (result *task.AcceptTaskOutboundInfo, err errorcode.ErrorCode) { //isdaliy := false // if data.Head.CMD != 2201 { //判断是每日任务 // //isdaliy = true // } if c.Info.TaskList[data.TaskId-1] == 0 { c.Info.TaskList[data.TaskId-1] = 1 } c.Service.Task(uint32(data.TaskId), func(t *model.TaskEX) bool { t.Data = []uint32{} return true }) result = &task.AcceptTaskOutboundInfo{} result.TaskId = data.TaskId return result, 0 } /** * 更新任务步骤 */ func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *player.Player) (result *task.AddTaskBufOutboundInfo, err errorcode.ErrorCode) { // isdaliy := false // if data.Head.CMD != 2204 { //判断是每日任务 // isdaliy = true // } c.Service.Task(data.TaskId, func(te *model.TaskEX) bool { te.Data = data.TaskList return true }) return result, 0 } /** * 完成任务 */ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *player.Player) (result *task.CompleteTaskOutboundInfo, err errorcode.ErrorCode) { if c.Info.TaskList[data.TaskId-1] != 1 { //如果任务没有接受或者已经完成Complete_Task return result, 0 } c.Info.TaskList[data.TaskId-1] = 3 result = &task.CompleteTaskOutboundInfo{} result.ItemList = make([]task.ItemInfo, 0) result.TaskId = data.TaskId // 根据任务ID和选择分支(OutState)处理奖励 switch data.TaskId { // 新手任务1 case 85: // out_id=1(默认分支)的奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 100027, ItemCount: 1}, // 新手帽(默认数量1) task.ItemInfo{ItemId: 100028, ItemCount: 1}, // 新手腰带 task.ItemInfo{ItemId: 500001, ItemCount: 1}, // 精灵仓库 task.ItemInfo{ItemId: 500502, ItemCount: 1}, // 精灵恢复仓 //task.ItemInfo{ItemId: 500503, ItemCount: 1}, // 分子转化仪 ) // 新手任务2(选择不同精灵) case 86: var petType int // 根据out_id(data.OutState)选择宠物类型 switch data.OutState { case 1: petType = 1 // 布布种子 case 2: petType = 7 // 小火猴 case 3: petType = 4 // 伊优 default: // 默认给布布种子(或日志告警) petType = 1 // log.Printf("任务86未知分支out_id=%d,默认奖励布布种子", data.OutState) } // 生成宠物(pet_dv=31,锁个体) r := c.GenPetInfo(petType, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 新手任务3 case 87: // out_id=1的奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 300001, ItemCount: 5}, // 普通胶囊x5 task.ItemInfo{ItemId: 300011, ItemCount: 5}, // 初级体力药剂x3 ) // 新手任务4 case 88: // out_id=1的奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 1, ItemCount: 50000}, // 赛尔豆x50000 task.ItemInfo{ItemId: 3, ItemCount: 50000}, // 累积经验x50000 task.ItemInfo{ItemId: 5, ItemCount: 20}, // 金豆x20 task.ItemInfo{ItemId: 300650, ItemCount: 3}, // 全能学习力遗忘器x3 task.ItemInfo{ItemId: 300651, ItemCount: 6}, // 全能学习力注入器x6 ) // 克洛斯星的皮皮 case 90: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 经验x1000 ) // 西塔的珍贵回忆 case 8: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 500510, ItemCount: 1}, // 记忆晶体x1 ) // 进入神秘通道 case 9: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 100059, ItemCount: 1}, // 电能锯子x1 ) // 神秘通道拼图(无奖励物品) case 10: // 无物品奖励,无需处理 // 精灵广场拿石头(无奖励物品) case 12: // 无物品奖励,无需处理 // 先锋队招募 case 19: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 积累经验x3000 ) // 新船员的考验 case 25: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 400501, ItemCount: 10}, // 神奇扭蛋牌x10 ) // 遗迹中的精灵信号(奖励奇塔) case 28: // out_id=1,宠物类型102(奇塔) r := c.GenPetInfo(102, 31, -1, 0, 0, 5) // pet_dv默认-1(随机个体) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 帕诺星系星球测绘 case 37: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 task.ItemInfo{ItemId: 700452, ItemCount: 1}, // 中型智慧芯片x1 task.ItemInfo{ItemId: 100178, ItemCount: 1}, // 勘察头盔x1 task.ItemInfo{ItemId: 100179, ItemCount: 1}, // 勘察护腕x1 task.ItemInfo{ItemId: 100180, ItemCount: 1}, // 勘察腰带x1 task.ItemInfo{ItemId: 100181, ItemCount: 1}, // 勘察军靴x1 ) // 时空之门(奖励迪卢卡) case 40: // out_id=1,宠物类型139(迪卢卡) r := c.GenPetInfo(139, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 突围磁风暴 case 47: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 5000}, // 累积经验x5000 task.ItemInfo{ItemId: 1, ItemCount: 5000}, // 赛尔豆x5000 task.ItemInfo{ItemId: 500585, ItemCount: 1}, // 磁力光束枪台x1 ) // 神秘失踪的爱丽丝 case 48: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 task.ItemInfo{ItemId: 700452, ItemCount: 2}, // 中型智慧芯片x2 ) // 密林中的托尼(奖励托尼+物品) case 49: // 1. 奖励宠物:托尼(类型158) r := c.GenPetInfo(158, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 2. 奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 700452, ItemCount: 2}, // 中型智慧芯片x2 ) // 谁偷走了雪球能源? case 52: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 task.ItemInfo{ItemId: 100254, ItemCount: 1}, // 斯诺纪念x1 ) // 米鲁族的两个小不点 case 54: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 5000}, // 累积经验x5000 task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 ) // 米鲁族食王选拔赛 case 57: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 斯诺岩洞的不解之谜 case 58: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 ) // 新型试作机SR-01同步调试 case 63: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 铸造斯诺冰冠 case 64: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 task.ItemInfo{ItemId: 400021, ItemCount: 10}, // 雪球能源x10 ) // 露希欧星勘察 case 65: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 合金强化试验 case 66: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 资料室的神秘事件 case 68: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 宇宙遭遇站 case 69: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 船体紧急修复 case 70: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 赛尔号大整修(奖励TOE+物品) case 71: // 1. 奖励宠物:TOE(类型213) r := c.GenPetInfo(213, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 2. 奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 船长搜救任务 case 72: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 秘制改良机SR-02 case 73: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 100303, ItemCount: 1}, // SR-02铠甲x1 task.ItemInfo{ItemId: 400055, ItemCount: 30}, // 变形能量块x30 task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 ) // 露希欧星历险 case 74: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 积累经验x3000 ) // 哈莫的童年片段一 case 75: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 100324, ItemCount: 1}, // 龙之纪念x1 ) // 寻找哈莫雷特的族人 case 79: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 3000}, // 累积经验x3000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 ) // 重铸贾斯丁站长 case 80: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 3000}, // 赛尔豆x3000 ) // 守候宿命的追随者 case 81: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 光暗之迷 case 83: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 星球改造计划 case 84: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 ) // 试炼之塔的磨练 case 89: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 月光下的约定 case 91: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 task.ItemInfo{ItemId: 400124, ItemCount: 1}, // 艾贝多芬的精元x1 ) // 站长归来(奖励尼布+物品) case 92: // 1. 奖励宠物:尼布(类型95) r := c.GenPetInfo(95, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 2. 奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 ) // 云霄星的新来客 case 93: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 task.ItemInfo{ItemId: 1, ItemCount: 500}, // 赛尔豆x500 ) // 初识星球能源 case 94: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 宇宙中的黑色旋涡(两个奖励分支) case 95: switch data.OutState { case 1: // 分支1:刺蜂套装 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 4000}, // 累积经验x4000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 task.ItemInfo{ItemId: 100346, ItemCount: 1}, // 刺蜂重盔x1 task.ItemInfo{ItemId: 100347, ItemCount: 1}, // 刺蜂护肩x1 task.ItemInfo{ItemId: 100348, ItemCount: 1}, // 刺蜂腰带x1 task.ItemInfo{ItemId: 100349, ItemCount: 1}, // 刺蜂滚轮x1 ) case 2: // 分支2:锡蝶套装 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 4000}, // 累积经验x4000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 task.ItemInfo{ItemId: 100350, ItemCount: 1}, // 锡蝶重盔x1 task.ItemInfo{ItemId: 100351, ItemCount: 1}, // 锡蝶护肩x1 task.ItemInfo{ItemId: 100352, ItemCount: 1}, // 锡蝶腰带x1 task.ItemInfo{ItemId: 100353, ItemCount: 1}, // 锡蝶滚轮x1 ) default: // 默认给分支1奖励 // log.Printf("任务95未知分支out_id=%d,默认奖励刺蜂套装", data.OutState) result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 4000}, task.ItemInfo{ItemId: 1, ItemCount: 2000}, task.ItemInfo{ItemId: 100346, ItemCount: 1}, task.ItemInfo{ItemId: 100347, ItemCount: 1}, task.ItemInfo{ItemId: 100348, ItemCount: 1}, task.ItemInfo{ItemId: 100349, ItemCount: 1}, ) } // 旅途中的伙伴 case 96: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 500}, // 累积经验x500 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 我是音乐小麦霸 case 97: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 1000}, // 累积经验x1000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 尼布守卫战 case 98: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 1000}, // 赛尔豆x1000 ) // 寻找迷失的心(奖励史空+物品) case 133: // 1. 奖励宠物:史空(类型381) r := c.GenPetInfo(381, 31, -1, 0, 0, 5) result.CaptureTime = r.CatchTime result.PetTypeId = r.ID c.Service.PetAdd(*r) // 2. 奖励物品 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 2000}, // 累积经验x2000 task.ItemInfo{ItemId: 1, ItemCount: 2000}, // 赛尔豆x2000 ) // 教官考核 case 201: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 100062, ItemCount: 1}, // 教官指挥棒x1 ) // 领取谱尼真身(需校验物品,奖励谱尼精元) case 300: // 注意:此处省略“check节点”的物品校验逻辑(需先检查玩家背包是否有7个裂片) // 实际业务中需先校验,通过后再发奖励 result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 400150, ItemCount: 1}, // 谱尼的精元x1 ) // 每日任务之毛毛 case 401: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000 ) // 每日任务之小火猴 case 402: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 ) // 每日任务之布布种子 case 403: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 ) // 每日任务之依优 case 404: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x20000 ) // 每日任务之比比鼠 case 405: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000 ) // 每日任务之幽浮 case 406: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000 ) // 每日任务之利牙鱼 case 407: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 3, ItemCount: 20000}, // 积累经验x2000 ) // 每日任务之谱尼扭蛋牌 case 462: result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 400501, ItemCount: 5}, // 神奇扭蛋牌x5 ) default: // 未定义的任务ID,可添加日志 // log.Printf("未处理的任务ID: %d", data.TaskId) } var ttt []model.SingleItemInfo for _, v := range result.ItemList { ttt = append(ttt, model.SingleItemInfo{ItemId: v.ItemId, ItemCnt: v.ItemCount}) } r := c.ItemAdd(ttt...) tempItemList := make([]task.ItemInfo, 0) for _, v := range result.ItemList { for _, v1 := range r { if v1.ItemId == v.ItemId { tempItemList = append(tempItemList, task.ItemInfo{ItemId: v.ItemId, ItemCount: v.ItemCount}) } } } result.ItemList = tempItemList //临时变量为了防止报错的时候返回数据没问题 return result, 0 } /** * 获取任务状态 */ func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *player.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) { result = &task.GetTaskBufOutboundInfo{ TaskId: data.TaskId, } c.Service.Task(data.TaskId, func(te *model.TaskEX) bool { result.TaskList = te.Data return false }) return result, 0 } /** * 删除任务 */ func (h Controller) Delete_Task(data *task.DeleteTaskInboundInfo, c *player.Player) (result *task.DeleteTaskOutboundInfo, err errorcode.ErrorCode) { if c.Info.TaskList[data.TaskId-1] == 1 { c.Info.TaskList[data.TaskId-1] = 0 return &task.DeleteTaskOutboundInfo{TaskId: data.TaskId}, 0 } return &task.DeleteTaskOutboundInfo{}, 0 }