| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- local LuaMongo = _G.lua_mongo
- local CommonDB = require("common.CommonDB")
- local Util = require("common.Util")
- local ObjHuman = require("core.ObjHuman")
- local CombatVideo = require("combat.CombatVideo")
- local RoleDBLogic = require("role.RoleDBLogic")
- local RoleLogic = require("role.RoleLogic")
- local CombatLogic = require("combat.CombatLogic")
- local CombatDefine = require("combat.CombatDefine")
- local CombatPosLogic = require("combat.CombatPosLogic")
- local MoZhuExcel = require("excel.mozhu")
- local Util = require("common.Util")
- MOZHU_DB = MOZHU_DB or {}
- function initAfterStart()
- --if _G.is_middle ~= true then return end
- print(" initAfterStart initAfterStart")
- MOZHU_DB = CommonDB.getValueByKey(CommonDB.KEY_CIYUAN_MOZHU) or {}
- if not MOZHU_DB.time then
- initMoZhu()
- end
- end
- MOZHU_CITIAO_RARE_MAX = nil
- -- 随机 次元魔蛛 词条
- function randomCiTiao()
- local weekTime = Util.getWeekStartTime(os.time())
- if MOZHU_DB.citiaoTime and MOZHU_DB.citiaoTime == weekTime then
- return
- end
- MOZHU_DB.citiao = {}
- if not MOZHU_CITIAO_RARE_MAX then
- -- 防止策划删减 词条
- MOZHU_CITIAO_RARE_MAX = 0
- for k, v in pairs(MoZhuExcel.citiao) do
- if v then
- MOZHU_CITIAO_RARE_MAX = MOZHU_CITIAO_RARE_MAX + v.quanzhong
- end
- end
- end
- local getRare = 0
- for i = 1 , 1 do
- local random = math.random(1, MOZHU_CITIAO_RARE_MAX - getRare)
- for k, v in pairs(MoZhuExcel.citiao) do
- if not MOZHU_DB.citiao[k] and random <= v.quanzhong then
- MOZHU_DB.citiao[k] = i
- getRare = getRare + v.quanzhong
- break
- elseif not MOZHU_DB.citiao[k] then
- -- 防止循环最后一个是 已经随机过的 导致 随机不出来
- random = random - v.quanzhong
- end
- end
- end
- MOZHU_DB.citiaoTime = weekTime
- return MOZHU_DB.citiao
- end
- function initMoZhu()
- MOZHU_DB.time = os.time()
- MOZHU_DB.unionRank = {}
- MOZHU_DB.roleRank = {}
- MOZHU_DB.role = {}
- MOZHU_DB.union= {}
- randomCiTiao()
- saveMoZhu()
- end
- function getMoZhu()
- if not MOZHU_DB or MOZHU_DB == {} then
- MOZHU_DB = CommonDB.getValueByKey(CommonDB.KEY_CIYUAN_MOZHU) or {}
- end
- return MOZHU_DB
- end
- function saveMoZhu()
- CommonDB.updateValue(CommonDB.KEY_CIYUAN_MOZHU, MOZHU_DB)
- -- Util.printTable(MOZHU_DB)
- end
- function updateHurt(uuid, roleBase, maxHurt)
- local isChange = false
- if not MOZHU_DB.role[uuid] then
- MOZHU_DB.role[uuid] = MOZHU_DB.role[uuid] or {}
- MOZHU_DB.role[uuid].roleBase = roleBase
- MOZHU_DB.role[uuid].hurt = maxHurt
- MOZHU_DB.roleRank[#MOZHU_DB.roleRank + 1 ] = uuid
- isChange = true
- else
- if MOZHU_DB.role[uuid].hurt < maxHurt then
- MOZHU_DB.role[uuid].hurt = maxHurt
- isChange = true
- end
- end
- if isChange then
- refresRoleRank()
- end
- return isChange
- end
- function updateUnion(unionUuid, unionBase, isChange)
- if not unionUuid or unionUuid == "" then return end
- if not MOZHU_DB.union[unionUuid] then
- MOZHU_DB.union[unionUuid] = MOZHU_DB.union[unionUuid] or {}
- MOZHU_DB.union[unionUuid].unionBase = unionBase
- MOZHU_DB.union[unionUuid].time = os.time()
- MOZHU_DB.unionRank[#MOZHU_DB.unionRank + 1] = unionUuid
- end
- local unionHurt = 0
- for _, db in pairs(MOZHU_DB.role) do
- if db.roleBase and db.roleBase.unionUuid == unionUuid then
- unionHurt = unionHurt + db.hurt
- end
- end
- MOZHU_DB.union[unionUuid].hurt = unionHurt
- MOZHU_DB.union[unionUuid].time = os.time()
- refreshUnionRank()
- end
- function chageRoleUnionUuid(uuid, unionUuid)
- if not MOZHU_DB.role[uuid] then
- return
- end
- MOZHU_DB.role[uuid].roleBase.unionUuid = unionUuid
- end
- function refreshUnion(unionUuid, notRefresh)
- if not MOZHU_DB.union[unionUuid] then
- return
- end
- local unionHurt = 0
- for _, db in pairs(MOZHU_DB.role) do
- if db.roleBase and db.roleBase.unionUuid == unionUuid then
- unionHurt = unionHurt + db.hurt
- end
- end
- MOZHU_DB.union[unionUuid].hurt = unionHurt
- if notRefresh then
- else
- refreshUnionRank()
- end
- end
- function sortUnion(a, b)
- print(" a , b ", a , b )
- local unionA = MOZHU_DB.union[a] or 0
- local unionB = MOZHU_DB.union[b] or 0
- if unionA.hurt > unionB.hurt then
- return true
- elseif unionA.hurt == unionB.hurt then
- return unionA.time < unionB.time
- end
- end
- function refreshAllUnion()
-
- for unionUuid in pairs(MOZHU_DB.union) do
- refreshUnion(unionUuid, true)
- end
- refreshUnionRank()
- end
- function refreshUnionRank()
- -- Util.printTable( MOZHU_DB.unionRank)
- table.sort( MOZHU_DB.unionRank, sortUnion )
- end
- function sortRole(a, b)
- local roleA = MOZHU_DB.role[a]
- local roleB = MOZHU_DB.role[b]
- return roleA.hurt > roleB.hurt
- end
- function refresRoleRank()
- table.sort( MOZHU_DB.roleRank, sortRole)
- end
- function getRoleRank(uuid)
- if not MOZHU_DB.role[uuid] then
- return 0,0
- end
- for k, v in ipairs(MOZHU_DB.roleRank) do
- if v == uuid then
- return k, MOZHU_DB.role[uuid].hurt
- end
- end
- return 0,0
- end
- function getUnionRank(unionUuid)
- if not unionUuid or unionUuid == "" then
- return 0
- end
- for k, v in ipairs(MOZHU_DB.unionRank) do
- if v == unionUuid then
- return k
- end
- end
- return 0
- end
- function dismissUnion(unionUuid)
- local rank = getUnionRank(unionUuid)
- if rank > 0 then
- table.remove( MOZHU_DB.unionRank, rank)
- end
-
- if MOZHU_DB.union[unionUuid] then
- MOZHU_DB.union[unionUuid] = nil
- end
- saveMoZhu()
- end
- function delRole(uuid)
- if MOZHU_DB.role and MOZHU_DB.role[uuid] then
- local rank = getRoleRank(uuid)
- local role = MOZHU_DB.role[uuid]
- if rank > 0 and role.hurt >= 50000000 then
- table.remove( MOZHU_DB.roleRank, rank)
- MOZHU_DB.role[uuid] = nil
- refreshUnion(role.roleBase.unionUuid)
- end
- end
- end
- function checkUnion()
- for index, unionUuid in ipairs(MOZHU_DB.unionRank) do
- if unionUuid == "" then
- table.remove( MOZHU_DB.unionRank, index)
- if MOZHU_DB.union[""] then
- MOZHU_DB.union[""] = nil
- end
- saveMoZhu()
- break
- end
- end
- end
|