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()); }
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); }
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); }
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)); } }
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); }
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(); } }