Exemplo n.º 1
0
        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);
        }