Esempio n. 1
0
        public void _Init()
        {
            float start = JHSTime.Time;

            dbService     = DbService.Instance;
            leagueManager = LeagueManager.Instance;
            leagueManager.RequiredGames = Settings.MIN_GAMES_TO_DECIDE_RANKING_SKILLS;
            List <RankConfig> configs = ConfigManager.GetRankConfigs();

            leagueManager._Configure(configs);
            leagueManager.OnPlayerChanged  = OnPlayerChanged;
            leagueManager.OnPlayerDemoted  = OnPlayerDemoted;
            leagueManager.OnPlayerPromoted = OnPlayerPromoted;
            leagueManager.OnPlayerRemoved  = OnPlayerRemoved;
            foreach (RankConfig config in configs)
            {
                LeagueType rank = config.RankId;

                IList <Rankings> usr = DbService.Instance.GetRank(rank);
                foreach (Rankings usrrank in usr)
                {
                    RankinngOBJ obj = dbService.GetRankinData(new RankinngOBJ(usrrank.UserId, usrrank.PlayerName));
                    if (obj != null)
                    {
                        KnownPlayers.Add(usrrank.UserId, obj);
                        leagueManager._AddPlayer(obj.RefLeagueData);
                    }
                }
            }
            LOG.Info("Finished loading ranking, time-consuming:" + (JHSTime.Time - start) + " sec.");
            LOG.Info(leagueManager.ToString());
        }
Esempio n. 2
0
        public bool Execute(JHSNetworkMessage netMsg)
        {
            if (DbManager == null)
            {
                DbManager = AccountManager.Instance;
            }
            if (rankingManager == null)
            {
                rankingManager = RankingManager.Instance;
            }

            Empty packet = netMsg.ReadMessage <Empty>();

            if (packet != null)
            {
                uint       connectionId = netMsg.conn.connectionId;
                AccountOBJ account      = DbManager.GetOnlineByConnectionId(connectionId);
                if (account != null)
                {
                    if (account.RankRequestTime > JHSTime.Time)
                    {
                        netMsg.conn.Send(NetworkConstants.UPDATE_RANKINGS, new RankingPacket()
                        {
                            PayLoadType = RankingPacketType.ERROR
                        });
                        return(true);
                    }
                    account.RankRequestTime = JHSTime.Time + Settings.CAN_REQUEST_RANK_UPDATE_TIME;
                    RankinngOBJ rankings = rankingManager._GetPlayer(account);
                    if (rankings != null)
                    {
                        if (rankings.GameCount < Settings.MIN_GAMES_TO_DECIDE_RANKING_SKILLS)
                        {
                            netMsg.conn.Send(NetworkConstants.UPDATE_RANKINGS, new RankingPacket()
                            {
                                GameCount   = rankings.GameCount < Settings.MIN_GAMES_TO_DECIDE_RANKING_SKILLS ? (byte)(Settings.MIN_GAMES_TO_DECIDE_RANKING_SKILLS - rankings.GameCount) : (byte)0,
                                PayLoadType = RankingPacketType.GAME_COUNT,
                            });
                            return(true);
                        }

                        LeagueData[] data = rankingManager._GetLegue(rankings.League);

                        netMsg.conn.Send(NetworkConstants.UPDATE_RANKINGS, new RankingPacket()
                        {
                            CurrentLeague  = rankings.League,
                            GameCount      = (byte)rankings.GameCount,
                            LeaguePosition = (byte)(rankings.RankNo > 100 ? 255: rankings.RankNo),
                            PayLoadType    = RankingPacketType.UPDATE_DATA,
                            rankingData    = data,
                            LeaguePoints   = (uint)rankings.LeaguePoints
                        });
                    }
                }
            }
            return(true);
        }
Esempio n. 3
0
 public RankinngOBJ _GetPlayer(AccountOBJ user)
 {
     if (KnownPlayers.TryGetValue(user.Id, out RankinngOBJ obj))
     {
         return(obj);
     }
     else
     {
         RankinngOBJ objx = dbService.GetRankinData(new RankinngOBJ(user.Id, user.PlayerName));
         if (objx != null)
         {
             KnownPlayers.Add(objx.UserId, objx);
             leagueManager._AddPlayer(objx.RefLeagueData);
             return(objx);
         }
     }
     return(null);
 }
Esempio n. 4
0
        public RankinngOBJ GetRankinData(RankinngOBJ entity)
        {
            IDbEntity that = Get(entity.GetId());

            if (that != null)
            {
                return((RankinngOBJ)that);
            }

            CHeck();
            Rankings ran = session.QueryOver <Rankings>().Where(x => x.UserId == entity.UserId).List().FirstOrDefault();

            if (ran != null)
            {
                RankinngOBJ dat = new RankinngOBJ(ran);
                ENTITY.Add(dat.GetId(), dat);
                return(dat);
            }
            else
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    ran = new Rankings()
                    {
                        UserId       = entity.UserId,
                        PlayerName   = entity.PlayerName,
                        League       = (int)LeagueType.NONE,
                        LeaguePoints = 0,
                        GameCount    = 0,
                        Kills        = 0,
                        Deaths       = 0,
                    };
                    session.Save(ran);
                    transaction.Commit();
                }
                return(GetRankinData(entity));
            }
        }
Esempio n. 5
0
        public bool Execute(JHSNetworkMessage netMsg)
        {
            if (DbManager == null)
            {
                DbManager = AccountManager.Instance;
            }
            if (queueManager == null)
            {
                queueManager = GameServerManager.Instance;
            }
            if (dbService == null)
            {
                dbService = DbService.Instance;
            }
            UpdateMatchResult packet = netMsg.ReadMessage <UpdateMatchResult>();

            if (packet != null)
            {
                uint connectionId = netMsg.conn.connectionId;
                var  server       = queueManager.GetServerByConnectionId(connectionId);
                if (server != null)
                {
                    AccountOBJ user = DbManager.GetOnlineByUserId(packet.UserId);
                    if (user == null)
                    {
                        user = dbService.GetAccountFromDB(packet.UserId);
                    }
                    if (user != null)
                    {
                        lock (user)
                        {
                            foreach (DBPlayerActive active in packet.Actives)
                            {
                                ActivesOBJ obj = user.GetActive((int)active.ActiveId);
                                obj.Value = (int)active.Value;
                                DbService.UpdateEntityIntime(obj);
                            }
                            user.Data.Exp += (int)packet.EXP;

                            RankinngOBJ RankData = RankingManager.GetPlayer(user);
                            if (RankData != null)
                            {
                                RankData.GameCount += 1;
                                RankData.Kills     += (int)packet.KillCount;

                                if (!packet.HasWon)
                                {
                                    RankData.Deaths += 1;
                                }
                            }
                            user.OnGameResultRecieved();
                            DbService.UpdateEntityIntime(user);
                        }
                        LOG.Info(string.Format("SaveResult  ::  Server[{0}] userid[{1}]", connectionId, packet.UserId));
                    }
                    else
                    {
                        LOG.Info(string.Format("SaveResult Error unknown user ::  Server[{0}] userid[{1}]", connectionId, packet.UserId));
                    }
                    netMsg.conn.Send(GameServerOP.PUTROLE, new Empty());
                }
            }
            return(true);
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            float StartTime = JHSTime.Time;

            Console.Title = "LoginServer";
            AppDomain.CurrentDomain.DomainUnload += CleanupBeforeExit;
            AppDomain.CurrentDomain.ProcessExit  += new EventHandler(CurrentDomain_ProcessExit);
            Properties props = new Properties(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs/Config.ini"));

            Settings.AutoCreate   = bool.Parse(props.get("AUTO_CREATE"));
            Settings.BINDPASSWORD = uint.Parse(props.get("BINDPASSWORD"));
            Settings.GAMEVERSION  = int.Parse(props.get("GAMEVERSION"));
            Settings.DEBUG_MODE   = int.Parse(props.get("DEBUG_MODE"));

            Settings.MIN_PLAYERS     = int.Parse(props.get("MIN_PLAYERS"));
            Settings.MAX_PLAYERS     = int.Parse(props.get("MAX_PLAYERS"));
            Settings.CHECK_CAN_START = int.Parse(props.get("CHECK_CAN_START"));
            Settings.MAX_WAIT_TIME   = int.Parse(props.get("MAX_WAIT_TIME"));
            Settings.RANKING_SEASON  = int.Parse(props.get("RANKING_SEASON"));
            Settings.CAN_REQUEST_RANK_UPDATE_TIME       = int.Parse(props.get("CAN_REQUEST_RANK_UPDATE_TIME"));
            Settings.MIN_GAMES_TO_DECIDE_RANKING_SKILLS = int.Parse(props.get("MIN_GAMES_TO_DECIDE_RANKING_SKILLS"));
            Settings.USE_RANKING_QUEUES    = bool.Parse(props.get("USE_RANKING_QUEUES"));
            Settings.START_WITH_ONE_PLAYER = bool.Parse(props.get("START_WITH_ONE_PLAYER"));
            Settings.DEBUG_GET_PLAYER      = bool.Parse(props.get("ALLOW_NOT_REGISTERED_GET_ROLE_INFO"));
            LOG.Error("Starting LoginServer");
            LOG.Info("Starting LoginServer");
            List <short> skins = new List <short>();

            string[] d = props.get("DEFAULT_SKIKINS").Split(',');
            foreach (string str in d)
            {
                skins.Add(short.Parse(str));
            }
            Settings.randomSkins = skins.ToArray();
            DbService.Instance.Start();
            ConfigManager.LoadConfigs();
            RankingManager.Init();
            NetworkServer.Instance.SetConfig(props);
            NetworkServer.Instance.InitHandlers();
            NetworkServer.Instance.Start();
            LOG.Info("Finished loading Server, time-consuming:" + (JHSTime.Time - StartTime) + " sec.");
WATIREGION:

            string line = Console.ReadLine();

            if (line == "exit")
            {
                goto EXITPROGRAM;
            }
            if (line == "aadd")
            {
                Console.SetCursorPosition(0, Console.CursorTop - 1);
                AccountOBJ obj = DbService.Instance.GetAccountFromDB(2);
                if (obj != null)
                {
                    RankinngOBJ data = RankingManager.GetPlayer(obj);
                    RankingManager.UpdatePlayer(obj.Id, data.LeaguePoints + 100);
                }
            }
            if (line == "add")
            {
                AccountOBJ obj = DbService.Instance.GetAccountFromDB(1);
                if (obj != null)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    RankinngOBJ data = RankingManager.GetPlayer(obj);
                    if (data != null)
                    {
                        RankingManager.UpdatePlayer(obj.Id, data.LeaguePoints + 100);
                    }
                }
            }
            if (line == "gamec")
            {
                AccountOBJ obj = DbService.Instance.GetAccountFromDB(1);
                if (obj != null)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    RankinngOBJ data = RankingManager.GetPlayer(obj);
                    if (data != null)
                    {
                        RankingManager.UpdatePlayer(obj.Id, data.LeaguePoints + 100, data.GameCount + 1, data.Kills + 1, 0);
                    }
                }
            }
            if (line == "add2")
            {
                AccountOBJ obj = DbService.Instance.GetAccountFromDB(1);
                if (obj != null)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    RankinngOBJ data = RankingManager.GetPlayer(obj);
                    RankingManager.UpdatePlayer(obj.Id, data.LeaguePoints + 1000);
                }
            }
            if (line == "del")
            {
                AccountOBJ obj = DbService.Instance.GetAccountFromDB(1);
                if (obj != null)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    RankinngOBJ data = RankingManager.GetPlayer(obj);
                    RankingManager.UpdatePlayer(obj.Id, data.LeaguePoints - 100);
                }
            }

            goto WATIREGION;

EXITPROGRAM:
            Console.WriteLine("Saving Database.");
            if (DbService.Instance.SaveAll())
            {
                Console.WriteLine("Server is now down.");
                Console.ReadKey();
            }
        }