| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- local LuaMongo = _G.lua_mongo
- local DB = require("common.DB")
- local HeroExcel = require("excel.hero")
- local HeroLogic = require("hero.HeroLogic")
- local Config = require("Config")
- local RoleLogic = require("role.RoleLogic")
- local ObjHuman = require("core.ObjHuman")
- local RoleDefine = require("role.RoleDefine")
- local AssessExcel = require("excel.assess")
- local MoshouLogic = require("moshou.MoshouLogic")
- local CombatDefine = require("combat.CombatDefine")
- local CombatPosLogic = require("combat.CombatPosLogic")
- local Msg = require("core.Msg")
- db = db or { }
- -- 启动后初始化
- function initAfterStart()
- -- 中心服不处理
- if _G.is_middle == true then return end
- -- 处理排行榜数据
- local cnt = 0
- LuaMongo.find(DB.db_hero_pingfen, nil, { id = 1, attr=1 })
- while true do
- local net = { }
- if not LuaMongo.next(net) then
- break
- end
- cnt = cnt + 1
- if cnt % 1000 == 0 then
- _G.collectgarbage("step", 100000)
- end
- updateData(net.id, RoleDefine.PINGFEN_LV, net.attr[RoleDefine.PINGFEN_LV])
- updateData(net.id, RoleDefine.PINGFEN_STAR, net.attr[RoleDefine.PINGFEN_STAR])
- updateData(net.id, RoleDefine.PINGFEN_JINJIE, net.attr[RoleDefine.PINGFEN_JINJIE])
- updateData(net.id, RoleDefine.PINGFEN_EQUIP, net.attr[RoleDefine.PINGFEN_EQUIP])
- updateData(net.id, RoleDefine.PINGFEN_UNION, net.attr[RoleDefine.PINGFEN_UNION])
- updateData(net.id, RoleDefine.PINGFEN_FUWEN, net.attr[RoleDefine.PINGFEN_FUWEN])
- end
- end
- function updateData(heroID, pingFengType, pingFeng)
- db[heroID] = db[heroID] or { }
- db[heroID][pingFengType] = db[heroID][pingFengType] or 0
- if pingFeng > db[heroID][pingFengType] then
- db[heroID][pingFengType] = pingFeng
- end
- end
- -- 提交当前战役阵容
- local queryHeroByUuid = { uuid = nil}
- local net = {}
- function onLogin(human)
- if _G.is_middle == true then return end
- local combatHero = CombatPosLogic.getCombatHeros(human, CombatDefine.COMBAT_TYPE1)
- if not combatHero then return end
- local len = 0
- for k, uuid in pairs(combatHero) do
- local heroGrid = HeroLogic.getHeroGridByUuid(human, uuid)
- if heroGrid then
- local heroConfig = HeroExcel.hero[heroGrid.id]
- local attrs = ObjHuman.getHeroAttrs(human, heroGrid.bagIndex)
-
- net.index = heroGrid.bagIndex
- net.id = heroGrid.id
- net.lv = heroGrid.lv
- net.quality = heroGrid.quality
- net.camp = heroConfig.camp
- net.uuid = heroGrid.uuid
- net[RoleDefine.PINGFEN_LV] = attrs[RoleDefine.PINGFEN_LV]
- net[RoleDefine.PINGFEN_STAR] = attrs[RoleDefine.PINGFEN_STAR]
- net[RoleDefine.PINGFEN_JINJIE] = attrs[RoleDefine.PINGFEN_JINJIE]
- net[RoleDefine.PINGFEN_EQUIP] = attrs[RoleDefine.PINGFEN_EQUIP]
- net[RoleDefine.PINGFEN_UNION] = attrs[RoleDefine.PINGFEN_UNION]
- net[RoleDefine.PINGFEN_FUWEN] = attrs[RoleDefine.PINGFEN_FUWEN]
-
- add(human, net)
- end
- end
- end
- --
- function add(human, grid)
- local heroConfig = HeroExcel.hero[grid.id]
- local net = { }
- net.id = grid.id
- net.uuid = grid.uuid or 0
- net.icon = heroConfig.head
- net.camp = heroConfig.camp
- net.job = heroConfig.job
- net.star = heroConfig.star
- net.lv = grid.lv or 1
- net.quality = grid.quality or 0
- net.srvIndex = Config.SVR_INDEX
- net.srvName = Config.SVR_NAME
- net.attr = {}
- net.attr[RoleDefine.PINGFEN_LV] = grid[RoleDefine.PINGFEN_LV]
- net.attr[RoleDefine.PINGFEN_STAR] = grid[RoleDefine.PINGFEN_STAR]
- net.attr[RoleDefine.PINGFEN_JINJIE] = grid[RoleDefine.PINGFEN_JINJIE]
- net.attr[RoleDefine.PINGFEN_EQUIP] = grid[RoleDefine.PINGFEN_EQUIP]
- net.attr[RoleDefine.PINGFEN_UNION] = grid[RoleDefine.PINGFEN_UNION]
- net.attr[RoleDefine.PINGFEN_FUWEN] = grid[RoleDefine.PINGFEN_FUWEN]
- net.roleBase = {}
- RoleLogic.makeRoleBase(human.db, net.roleBase)
- updateData(net.id, RoleDefine.PINGFEN_LV, net.attr[RoleDefine.PINGFEN_LV])
- updateData(net.id, RoleDefine.PINGFEN_STAR, net.attr[RoleDefine.PINGFEN_STAR])
- updateData(net.id, RoleDefine.PINGFEN_JINJIE, net.attr[RoleDefine.PINGFEN_JINJIE])
- updateData(net.id, RoleDefine.PINGFEN_EQUIP, net.attr[RoleDefine.PINGFEN_EQUIP])
- updateData(net.id, RoleDefine.PINGFEN_UNION, net.attr[RoleDefine.PINGFEN_UNION])
- updateData(net.id, RoleDefine.PINGFEN_FUWEN, net.attr[RoleDefine.PINGFEN_FUWEN])
- local data = queryDB(grid.uuid, pingFengType)
- if data ~= nil then
- queryHeroByUuid.uuid = grid.uuid
- local setTb = { ["$set"] = net }
- LuaMongo.update(DB.db_hero_pingfen, queryHeroByUuid, setTb)
- return
- end
- LuaMongo.insert(DB.db_hero_pingfen, net)
- end
- -- 查询队列
- function queryDB(uuid)
- queryHeroByUuid.uuid = uuid
- local heroData = { }
- LuaMongo.find(DB.db_hero_pingfen, queryHeroByUuid)
- if not LuaMongo.next(heroData) then
- return nil
- end
- return heroData
- end
-
- --
- function query(human, id)
- local dbData = db[id]
- if not dbData then return end
- local msgRet = Msg.gc.GC_HERO_STRONG_QUERY
- local len = 0
- for k, v in pairs(dbData) do
- len = len + 1
- msgRet.pingFengType[len] = k
- msgRet.pingFengValue[len] = v
- end
- msgRet.pingFengType[0] = len
- msgRet.pingFengValue[0] = len
- Msg.send(msgRet, human.fd)
- end
- function doCalcMoShouPingFen(human, attr)
- -- 魔兽评分
- local moShouPingFen = 0
- local moShouLv = MoshouLogic.getMoshouLv(human)
- local moShouLvPingFen = AssessExcel.moShouLv[moShouLv] and AssessExcel.moShouLv[moShouLv].grade or 0
- moShouPingFen = moShouPingFen + moShouLvPingFen
- local jingLian = MoshouLogic.getMoShouJiLian(human)
- local jingLianPingFen = AssessExcel.moShouJingLian[jingLian] and AssessExcel.moShouJingLian[jingLian].grade or 0
- moShouPingFen = moShouPingFen + jingLianPingFen
- local zhuHun = MoshouLogic.getMoShouZhuHunNum(human)
- local zhuHunPingFen = AssessExcel.moShouZhuHun[zhuHun] and AssessExcel.moShouZhuHun[zhuHun].grade or 0
- moShouPingFen = moShouPingFen + zhuHunPingFen
- local skillLV = MoshouLogic.getMoShouSkillLv(human)
- local skillLVPingFen = AssessExcel.moShouSkillLv[skillLV] and AssessExcel.moShouSkillLv[skillLV].grade or 0
- moShouPingFen = moShouPingFen + skillLVPingFen
- attr[RoleDefine.PINGFEN_MOSHOU] = moShouPingFen
- human.db.moShouPingFen = moShouPingFen
- end
|