103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
module("CrossServerDispatcher", package.seeall)
 | 
						|
--[[
 | 
						|
    actorData[AtvId]
 | 
						|
    {
 | 
						|
        mCrossActorId, --原服玩家id
 | 
						|
        mRawSrvId --原服跨服serverid
 | 
						|
    }
 | 
						|
]]--
 | 
						|
----------------------------------------------------------
 | 
						|
---跨服角色处理
 | 
						|
----------------------------------------------------------
 | 
						|
 | 
						|
--获取玩家数据
 | 
						|
function GetGlobalData(nActorId)
 | 
						|
    if nActorId == nil then
 | 
						|
        assert(false)
 | 
						|
    end
 | 
						|
    local var = System.getStaticVar();
 | 
						|
    if var.globalCsData == nil then
 | 
						|
        var.globalCsData = {}
 | 
						|
    end
 | 
						|
 | 
						|
    if var.globalCsData[nActorId] == nil then
 | 
						|
        var.globalCsData[nActorId] = {}
 | 
						|
    end
 | 
						|
 | 
						|
    return var.globalCsData[nActorId]
 | 
						|
end
 | 
						|
 | 
						|
-- 初始化
 | 
						|
function InitActor(nActorId, nCrossActorId, nRawSrvId)
 | 
						|
    local globalData = GetGlobalData(nActorId);
 | 
						|
    if globalData.actorData == nil then
 | 
						|
        globalData.actorData = {}
 | 
						|
    end
 | 
						|
    print("InitActor.."..nActorId.."..nCrossActorId.."..nCrossActorId.."..nRawSrvId.."..nRawSrvId)
 | 
						|
    globalData.actorData.mCrossActorId = nCrossActorId;
 | 
						|
    globalData.actorData.mRawSrvId = nRawSrvId;
 | 
						|
end
 | 
						|
 | 
						|
-- 初始化
 | 
						|
function GetCrossServerActor(nActorId)
 | 
						|
    local globalData = GetGlobalData(nActorId);
 | 
						|
    if globalData.actorData == nil then
 | 
						|
        return 0, 0
 | 
						|
    end
 | 
						|
    local data =  globalData.actorData;
 | 
						|
    print("mCrossActorId.."..data.mCrossActorId.."..mRawSrvId.."..data.mRawSrvId)
 | 
						|
    return data.mCrossActorId,data.mRawSrvId;
 | 
						|
end
 | 
						|
 | 
						|
----------------------------------------------------------
 | 
						|
---跨服账号处理
 | 
						|
----------------------------------------------------------
 | 
						|
--获取玩家数据
 | 
						|
 | 
						|
-- @brief 获取某个活动的缓存数据(这个数据,不存储仅缓存)
 | 
						|
-- @param fbId 活动id
 | 
						|
function GetCenterCacheData(atvId)
 | 
						|
    if atvId == nil then
 | 
						|
        assert(false)
 | 
						|
    end
 | 
						|
    local var = System.getDyanmicVar();
 | 
						|
    if var.centerAccountData == nil then
 | 
						|
        var.centerAccountData = {}
 | 
						|
    end
 | 
						|
 | 
						|
    if var.centerAccountData[atvId] == nil then
 | 
						|
        var.centerAccountData[atvId] = {}
 | 
						|
    end
 | 
						|
 | 
						|
    return var.centerAccountData[atvId]
 | 
						|
end
 | 
						|
 | 
						|
-- 初始化
 | 
						|
function InitCSAccount(nAcouuntId, nRawSrvId, pActor)
 | 
						|
    local nKey = string.format("%d%d", nAcouuntId,nRawSrvId);
 | 
						|
    print("InitCSAccount nAcouuntId.."..nAcouuntId.."..nAcouuntId.."..nRawSrvId.."..nKey.."..nKey)
 | 
						|
    local globalData = GetCenterCacheData(nKey);
 | 
						|
    local handle = Actor.getHandle(pActor)
 | 
						|
    globalData[nKey] = handle
 | 
						|
end
 | 
						|
 | 
						|
-- 初始化
 | 
						|
function DeleteCSAccount(nAcouuntId, nRawSrvId)
 | 
						|
    local nKey = string.format("%d%d", nAcouuntId,nRawSrvId);
 | 
						|
    print("DeleteCSAccount nAcouuntId.."..nAcouuntId.."..nAcouuntId.."..nRawSrvId.."..nKey.."..nKey)
 | 
						|
    local globalData = GetCenterCacheData(nKey);
 | 
						|
    
 | 
						|
    local pActor = Actor.getEntity(globalData[nKey] or 0)
 | 
						|
    if pActor then
 | 
						|
        Actor.KickUserAccount(pActor)
 | 
						|
    end
 | 
						|
    globalData[nKey] = nil
 | 
						|
end
 | 
						|
 | 
						|
-- function CheckCSAccount(nAcouuntId, nRawSrvId)
 | 
						|
--     local nKey = string.format("%d%d", nAcouuntId,nRawSrvId);
 | 
						|
--     print("CheckCSAccount nAcouuntId.."..nAcouuntId.."..nAcouuntId.."..nRawSrvId.."..nKey.."..nKey)
 | 
						|
--     local globalData = GetCenterCacheData(nKey);
 | 
						|
 | 
						|
--     return (globalData[nKey] or 0)
 | 
						|
-- end |