public static void Login(SharpBridge.Player player, object[] param) { try { string gameNick = player.getNick(); if (Game.AccountManager.GetByName(ref gameNick) != null) { player.sendMsg("This account is already being used", ChatColor.ERROR); return; } string user = gameNick.ToLower(); string pass = ((string)param[0]).ToLower(); using (Repositories.UserRepository accs = new Repositories.UserRepository()) { Models.UserEF acc = accs.users.Where(i => i.name == user). Include(i => i.entity).Include(i => i.entity.items).FirstOrDefault(); if (acc == null) { player.sendMsg($"Account '{player.getNick()}' doesn't exist", ChatColor.ERROR); return; } else if (acc.password.ToLower() != Services.Hashing.SHA2(ref pass)) { player.sendMsg("Wrong password", ChatColor.ERROR); return; } Console.WriteLine(JsonConvert.SerializeObject(acc)); Game.Account playerAccount = new Game.Account(acc); Game.AccountManager.Add(player.getID(), playerAccount); playerAccount.setClothesFromString(player); player.setPos(playerAccount.getPos()); player.setHealth(acc.hp); player.setArmor(acc.armor); player.setFrozen(false); player.cam_setPos(null, 1); player.cam_attachOnPlayer(-1); player.setWorld(1); // Colors "Welcome back" green and the player’s name orange for 5 seconds player.drawInfoText($"~g~Welcome back~w~, ~COL_NET_13~'{player.getNick()}'~w~!", 5000); List <short> givenAmmoTypes = new List <short>(); foreach (var item in acc.entity.items) { Models.ItemTypesEF typ = Game.ItemTypesManager.GetItemTypeByItem(item); if (typ.weapon != null) { Console.WriteLine($"{item.type} is a weapon"); Models.ItemEF ammo = acc.entity.items.Where(j => j.type == typ.weapon.ammoItem).FirstOrDefault(); if (ammo == null || givenAmmoTypes.Count(j => j == ammo.type) != 0) { continue; } Console.WriteLine("Ammo found"); givenAmmoTypes.Add(ammo.type); player.giveWeapon((uint)item.type, (uint)ammo.amount); } } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
public Account(Models.UserEF user) { this.user = user; }