local AbsActExcel = require("excel.absAct") local Gm = require("chat.Gm") local Msg = require("core.Msg") local ObjHuman = require("core.ObjHuman") local Log = require("common.Log") local Broadcast = require("broadcast.Broadcast") local Lang = require("common.Lang") local ItemDefine = require("bag.ItemDefine") local HeroLogic = require("hero.HeroLogic") local BagLogic = require("bag.BagLogic") local HeroGrid = require("hero.HeroGrid") local DrawCardExcel = require("excel.drawCard").drawCard local HeroExcel = require("excel.hero").hero local MailExcel = require("excel.mail") local ChatPaoMaLogic = require("chat.ChatPaoMaLogic") local HeroBook = require("hero.HeroBook") local AbsActLogic = require("absAct.AbsActLogic") local AbsActDefine = require("absAct.AbsActDefine") local YunYingLogic = require("yunying.YunYingLogic") local PanelDefine = require("broadcast.PanelDefine") local DrawCardLogic = require("drawCard.DrawCardLogic") local ZhanbuLogic = require("zhanbu.ZhanbuLogic") local MailManager = require("mail.MailManager") local MailDefine = require("mail.MailIdDefine") local LimitPerpleHeroLogic = require("present.LimitPerpleHeroLogic") local CombatLogic = require("combat.CombatLogic") local Grid = require("bag.Grid") function onLogin(human, id) local state, endTime, starTime = AbsActLogic.isStarted(human, id) if state then return end local config = AbsActExcel.absActivity[id] if not config then return end local actId = config.turns[1] -- 默认选择第一期 local perpleHeroConfig = AbsActExcel.perpleHero[actId] if not perpleHeroConfig then return end local items = { } local len = 0 local have = BagLogic.getItemCnt(human, perpleHeroConfig.item1[1]) if have > 0 and perpleHeroConfig.prop > 0 then len = len + 1 items[len] = { } items[len][1] = ItemDefine.ITEM_JINBI_ID items[len][2] = have * perpleHeroConfig.prop BagLogic.delItem(human, perpleHeroConfig.item1[1], have, "abs_perpleHero") end if len > 0 then local mailConfig = MailExcel.mail[MailDefine.MAIL_ID_ABS_PERPHERO] local title = mailConfig.title local senderName = mailConfig.senderName local content = mailConfig.content MailManager.add(MailManager.SYSTEM, human.db._id, title, content, items, senderName) end end -- 返回活动数据 function getAndSendMsg(human,id) local state,endTime, starTime = AbsActLogic.isStarted(human, id) local absActConfig = AbsActExcel.absActivity[id] -- 活动未开 if not state then return end AbsActLogic.checkAbsActClean(human, id) local absAct = human.db.absAct[id] -- 没有活动数据 if not absAct then return end local actId = absActConfig.actId local config = AbsActExcel.perpleHero[actId] -- 发送数据 local msgRet = Msg.gc.GC_ABS_ACT_PERPLE_HERO_QUERY msgRet.perpleHero[0] = 1 if not absAct.perpleHero then absAct.perpleHero = config.heroID[1] end msgRet.perpleHero[1] = absAct.perpleHero or config.heroID[1] msgRet.leftCnt = config.cnt if absAct.noTargetHeroCnt then msgRet.leftCnt = config.cnt - absAct.noTargetHeroCnt end local heroConfig = config.heroID local len = #heroConfig for i = 1,len do HeroGrid.makeHeroSimpleByID(msgRet.heroList[i], heroConfig[i],nil,nil,nil,true) end msgRet.heroList[0] = len Grid.makeItem(msgRet.aItem, config.item1[1], config.item1[2]) Grid.makeItem(msgRet.bItem, config.item2[1], config.item2[2]) Msg.send(msgRet,human.fd) end -- 设置心仪英雄 function setPerpleHero(human,heroID,id) local state,endTime, starTime = AbsActLogic.isStarted(human, id) local absActConfig = AbsActExcel.absActivity[id] -- 活动未开 if not state then return end AbsActLogic.checkAbsActClean(human, id) local absAct = human.db.absAct[id] -- 没有活动数据 if not absAct then return end -- 英雄ID校验失败 local config = AbsActExcel.perpleHero[absActConfig.actId].heroID local len = #config local check = false for i = 1,len do if config[i] == heroID then check = true break end end if not check then return end if absAct.perpleHero then if not ObjHuman.checkRMB(human, 2000) then return end ObjHuman.decZuanshi(human,-2000,"abs_perpleHero") end absAct.perpleHero = heroID end function onDrawCardActive(human, id, op, actConfig, skip,isAct) local state,actID = AbsActLogic.isStartedByType(human, AbsActDefine.ABS_ACT_TYPE_4) if not state then return end AbsActLogic.checkAbsActClean(human, actID) local absAct = human.db.absAct[actID] -- 没有活动数据 if not absAct then return end local config = DrawCardExcel[id] if not config then return end local heroCnt = nil if op == DrawCardLogic.DRAWCARD_OP_1 then heroCnt = 1 elseif op == DrawCardLogic.DRAWCARD_OP_2 then heroCnt = 10 else return end if HeroLogic.getEmptyCnt(human) < heroCnt then return Broadcast.sendErr(human, Lang.HERO_BAG_FULL) end if not DrawCardLogic.checkUseItem(human, id, op, config,isAct) then return end local heroLen = 0 local heroList = {} local heroNewList = {} local heroIndexList = {} local fenjielist = {} local heroIDs = nil local randomMin = math.random(1, heroCnt) for i = 1, heroCnt do config = DrawCardExcel[id] if id == DrawCardLogic.DRAWCARD_ID2 and op == DrawCardLogic.DRAWCARD_OP_2 and i == randomMin then config = DrawCardExcel[DrawCardLogic.DRAWCARD_ID5] elseif id == DrawCardLogic.DRAWCARD_ID2 and op == DrawCardLogic.DRAWCARD_OP_1 then config = DrawCardExcel[DrawCardLogic.DRAWCARD_ID6] end local heroID = DrawCardLogic.randHeroID(human, id, op, config, actConfig, i == randomMin, isAct) local heroConfig = HeroExcel[heroID] local star = heroConfig.star local name = heroConfig.name local grade = heroConfig.grade local isNew = not HeroBook.isGet(human, heroConfig.id, heroConfig.star) local heroIndex, fjlist = HeroLogic.addHero(human, heroID,nil, 1, "abs_perpleHero") heroLen = heroLen + 1 heroList[heroLen] = heroID heroNewList[heroLen] = isNew heroIndexList[heroLen] = heroIndex if fjlist and type(fjlist) == "table" then for fjItemID, fjItemCnt in pairs(fjlist) do fenjielist[fjItemID] = (fenjielist[fjItemID] or 0) + fjItemCnt end end if not heroIDs then heroIDs = heroID else heroIDs = heroIDs .. "|" .. heroID end if heroID == absAct.perpleHero and absAct.noTargetHeroCnt then absAct.noTargetHeroCnt = 0 end if id == DrawCardLogic.DRAWCARD_ID1 then ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE3, grade, heroID) elseif id == DrawCardLogic.DRAWCARD_ID2 then ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE1, grade, heroID) elseif id == DrawCardLogic.DRAWCARD_ID3 then ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE2, grade, heroID) elseif id == DrawCardLogic.DRAWCARD_ID6 then ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE21, grade, heroID) end end DrawCardLogic.sendDrawOp(human, id, op, heroList, fenjielist, heroNewList,heroIndexList,isAct) YunYingLogic.sendGroupUpdate(YYInfo[id], human, PanelDefine.PANEL_ID_3704) Log.write(Log.LOGID_OSS_DRAWCARD, human.db._id, human.db.account, human.db.name, human.db.lv, id, heroIDs, itemID or 0, cnt or 0, zuanshi or 0, 0) absAct.drawCardCnt = absAct.drawCardCnt or 0 absAct.drawCardCnt = absAct.drawCardCnt + heroCnt --if absAct.drawCardCnt >= 1 then -- absAct.drawCardCnt = absAct.drawCardCnt - 1 -- ZhanbuLogic.addZhanbuItem(human) --end ZhanbuLogic.addZhanbuItem(human,heroCnt*5) YunYingLogic.onCallBack(human, "onDrawCard", heroCnt, nil, id) end function getConfigByActID(id) local absActConfig = AbsActExcel.absActivity[id] if not absActConfig then return end local actId = absActConfig.actId return AbsActExcel.perpleHero[actId] end function heroCombat(human, heroID) CombatLogic.combatFightVedio(human, heroID) end function isRed(human, YYInfo, funcConfig) return false end function isActive(human, YYInfo, funcConfig) return not isOpen(human, YYInfo, funcConfig) end function isOpen(human, YYInfo, funcConfig) return AbsActLogic.isStarted(human, funcConfig.funcID) end