public int EnterPTKuaFuMap(int serverID, int roleId, int ptid, int mapCode, int kuaFuLine, out string signToken, out string signKey, out int kuaFuServerID, out string[] ips, out int[] ports) { ips = null; ports = null; signToken = null; signKey = null; kuaFuServerID = 0; string worldRoleID = ConstData.FormatWorldRoleID(roleId, ptid); KuaFuWorldRoleData roleData = this.LoadKuaFuWorldRoleData(roleId, ptid, worldRoleID); int result; if (null == roleData) { result = -4010; } else { kuaFuServerID = KuaFuServerManager.EnterKuaFuMapLine(kuaFuLine, mapCode); if (kuaFuServerID <= 0) { result = -100; } else { KuaFuServerInfo serverInfo = KuaFuServerManager.GetKuaFuServerInfo(kuaFuServerID); if (null != serverInfo) { ips = new string[] { serverInfo.Ip }; ports = new int[] { serverInfo.Port }; } signToken = Guid.NewGuid().ToString("N"); signKey = Guid.NewGuid().ToString("N"); long utcTicks = TimeUtil.UTCTicks(); lock (this.Mutex) { KuaFuServerLoginData loginData; if (!this.WorldRoleIDDict.TryGetValue(worldRoleID, out loginData)) { loginData = new KuaFuServerLoginData(); loginData.TempRoleID = roleData.TempRoleID; this.WorldRoleIDDict[worldRoleID] = loginData; } loginData.SignKey = signKey; loginData.SignToken = signToken; loginData.EndTicks = utcTicks + 86400000L; loginData.TargetServerID = kuaFuServerID; loginData.ServerId = ConstData.ConvertToKuaFuServerID(serverID, ptid); loginData.RoleId = roleId; loginData.PTID = ptid; loginData.GameId = (long)mapCode; result = loginData.TempRoleID; } } } return(result); }