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 |