public bool Execute(JHSNetworkMessage netMsg) { if (DbManager == null) { DbManager = AccountManager.Instance; } CollectActive packet = netMsg.ReadMessage <CollectActive>(); if (packet != null) { uint connectionId = netMsg.conn.connectionId; AccountOBJ user = DbManager.GetOnlineByConnectionId(connectionId); if (user != null) { lock (user) { ActivesConfig model = ConfigManager.GetActive((int)packet.AciveId); if (model == null) { netMsg.conn.Send(NetworkConstants.COLLECT_ACTIVE, new CollectActiveResponse() { STATUS = ITEM_CONFIG_WRONG }); return(true); } ActivesOBJ active = user.GetActive((int)packet.AciveId); if (active == null) { netMsg.conn.Send(NetworkConstants.COLLECT_ACTIVE, new CollectActiveResponse() { STATUS = ACTIVE_NOT_FOUND }); return(true); } if (active.Collected) { netMsg.conn.Send(NetworkConstants.COLLECT_ACTIVE, new CollectActiveResponse() { STATUS = ACTIVE_ALREADY_COLLECTED }); return(true); } if (model.Conditions != active.Value) { netMsg.conn.Send(NetworkConstants.COLLECT_ACTIVE, new CollectActiveResponse() { STATUS = ACTIVE_NOT_COMPLEATED }); return(true); } active.Collected = true; DbService.SubmitUpdate2Queue(active); if (model.GoldReward > 0) { user.Gold += model.GoldReward; } if (model.SilverReward > 0) { user.Silver += model.SilverReward; } user.ResetNotification(); DbService.SubmitUpdate2Queue(user); netMsg.conn.Send(NetworkConstants.COLLECT_ACTIVE, new CollectActiveResponse() { STATUS = SUCCESS, AciveId = packet.AciveId, Gold = (uint)user.Gold, Silver = (uint)user.Silver }); } } } return(true); }
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); }
public AccountOBJ GetAccountFromDB(string username) { CHeck(); AccountOBJ account = null; Users usr = session.QueryOver <Users>().Where(x => x.UserName == username).List().FirstOrDefault(); if (usr != null) { account = new AccountOBJ(usr); IList <Characters> chars = session.QueryOver <Characters>().Where(x => x.UserId == account.Id).List(); account.Skins = new SortedList <uint, CharacterOBJ>(); for (int c = 0; c < chars.Count; c++) { Characters character = chars[c]; CharacterOBJ objchar = new CharacterOBJ(character); account.Skins.Add(objchar.PlayerId, objchar); } if (chars.Count == 0) { using (ITransaction transaction = session.BeginTransaction()) { short skinId = Settings.randomSkins[new Random().Next(Settings.randomSkins.Length)]; ConfiModel model = ConfigManager.GetModel(skinId); if (model != null) { Characters ccc = new Characters(account.Id, skinId) { SkinColorId = model.SkinColorId, EyeColorId = model.EyeColorId, HairColorId = model.HairColorId, ShirtColorId = model.ShirtColorId, PantsColorId = model.PantsColorId, BootsColorId = model.BootsColorId, GlovesColorId = model.GlovesColorId }; session.Save(ccc); transaction.Commit(); } } chars = session.QueryOver <Characters>().Where(x => x.UserId == account.Id).List(); for (int c = 0; c < chars.Count; c++) { Characters character = chars[c]; CharacterOBJ objchar = new CharacterOBJ(character); account.Skins.Add(objchar.PlayerId, objchar); } } IList <Actives> actives = session.QueryOver <Actives>().Where(x => x.UserId == account.Id).List(); ActivesConfig[] allActives = ConfigManager.GetActives(); if (allActives.Length != actives.Count) { for (int c = 0; c < actives.Count; c++) { Actives active = actives[c]; ActivesOBJ objactive = new ActivesOBJ(active); account.Actives.Add(objactive.ActiveId, objactive); } using (ITransaction transaction = session.BeginTransaction()) { for (int a = 0; a < allActives.Length; a++) { ActivesConfig ac = allActives[a]; if (!account.Actives.ContainsKey(ac.ActiveId)) { Actives active = new Actives { UserId = account.Id, value = 0, ActiveId = ac.ActiveId, collected = false }; session.Save(active); // <-- this ActivesOBJ objactive = new ActivesOBJ(active); account.Actives.Add(objactive.ActiveId, objactive); } } transaction.Commit(); } account.Actives.Clear(); actives = session.QueryOver <Actives>().Where(x => x.UserId == account.Id).List(); for (int c = 0; c < actives.Count; c++) { Actives active = actives[c]; ActivesOBJ objactive = new ActivesOBJ(active); account.Actives.Add(objactive.ActiveId, objactive); } } else { for (int c = 0; c < actives.Count; c++) { Actives active = actives[c]; ActivesOBJ objactive = new ActivesOBJ(active); account.Actives.Add(objactive.ActiveId, objactive); } } } return(account); }
public bool Execute(JHSNetworkMessage netMsg) { if (DbManager == null) { DbManager = AccountManager.Instance; } ConsoleCMD packet = netMsg.ReadMessage <ConsoleCMD>(); if (packet != null) { uint connectionId = netMsg.conn.connectionId; AccountOBJ account = DbManager.GetOnlineByConnectionId(connectionId); if (account != null) { if (account.Priviledge > 1) { switch ((GMCOMMAND)packet.Command) { case GMCOMMAND.ADD_GOLD: account.Gold += (int)packet.Value; netMsg.conn.Send(NetworkConstants.EXCHANGE, new ExchangeCurResp() { STATUS = 0, SilverValue = (uint)account.Silver, GoldValue = (uint)account.Gold }); break; case GMCOMMAND.ADD_SILVER: account.Silver += (int)packet.Value; netMsg.conn.Send(NetworkConstants.EXCHANGE, new ExchangeCurResp() { STATUS = 0, SilverValue = (uint)account.Silver, GoldValue = (uint)account.Gold }); break; case GMCOMMAND.FINISH_ACTIVES: if (packet.Value == 1) { ActivesConfig[] allConfig = ConfigManager.GetActives(); for (int i = 0; i < allConfig.Length; i++) { ActivesOBJ active = account.GetActive(allConfig[i].ActiveId); if (active != null) { active.Value = (int)allConfig[i].Conditions; active.Collected = false; DbService.SubmitUpdate2Queue(active); } } netMsg.conn.Send(NetworkConstants.REFRESH_ACTIVES, new RefreshActives() { actives = account.SerializeActives() }); } else { ActivesConfig[] allConfig = ConfigManager.GetActives(); for (int i = 0; i < allConfig.Length; i++) { ActivesOBJ active = account.GetActive(allConfig[i].ActiveId); if (active != null) { active.Value = 0; active.Collected = false; DbService.SubmitUpdate2Queue(active); } } netMsg.conn.Send(NetworkConstants.REFRESH_ACTIVES, new RefreshActives() { actives = account.SerializeActives() }); } break; } } } } return(true); }