Exemplo n.º 1
0
        private void DisplayShotHistory(PlayerDto inDto)
        {
            var dto = inDto;

            Console.WriteLine();
            string header = " A  B  C  D  E  F  G  H  I  J".PadLeft(33, ' ');
            Console.WriteLine(header);
            Console.WriteLine("-----------------------------".PadLeft(33, ' '));

            for (int i = 1; i < 11; i++)
            {
                Console.Write("{0}| ", i.ToString().PadLeft(2, ' '));
                for (int j = 1; j < 11; j++)
                {
                    var myCoord = new Coordinate(j, i);

                    if (dto.Board.ShotHistory.ContainsKey(myCoord))
                    {
                        if (dto.Board.ShotHistory[myCoord] == ShotHistory.Hit)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write(" H ");
                            Console.ResetColor();
                        }

                        else if (dto.Board.ShotHistory[myCoord] == ShotHistory.Miss)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.Write(" m ");
                            Console.ResetColor();
                        }
                    }

                    else
                    {
                        Console.Write(" * ");
                    }

                }
                Console.WriteLine();

                //Console.Write(" |{0}\n", i);
            }
        }
Exemplo n.º 2
0
        private PlayerDto toDto(PlayerModel model)
        {
            PlayerDto dto = new PlayerDto()
            {
                id        = model.Id,
                exp       = model.Exp,
                loseCount = model.LoseCount,
                lv        = model.lv,
                name      = model.Name,
                power     = model.Power,
                runCount  = model.RunCount,
                winCount  = model.WinCount
            };

            string[] heroIds = model.HeroIdList.Split(',');
            dto.heroIds = new int[heroIds.Length];
            for (int i = 0; i < heroIds.Length; i++)
            {
                dto.heroIds[i] = int.Parse(heroIds[i]);
            }
            //赋值好友列表
            string[] friends = model.FriendIdList.Split(',');
            dto.friends = new Friend[friends.Length];
            for (int i = 0; i < friends.Length; i++)
            {
                if (string.IsNullOrEmpty(friends[i]))
                {
                    continue;
                }
                int    id     = int.Parse(friends[i]);
                string name   = playerCache.GetModel(id).Name;
                bool   online = playerCache.isOnline(id);
                dto.friends[i] = new Friend(id, name, online);
            }
            //赋值!!!
            return(dto);
        }
        public PlayerDto GetData(string userUrl)
        {
            const string BaseUri = "https://www.laczynaspilka.pl/zawodnik/";
            var          player  = new PlayerDto();
            var          urlUser = Path.Combine(BaseUri, userUrl);

            HtmlWeb web        = new HtmlWeb();
            var     doc        = web.Load(urlUser);
            var     statistics = doc.QuerySelectorAll("section .season__stats .stats--player div .season__stats-item");
            var     clubs      = doc.QuerySelectorAll("div .player-clubs__item");

            try
            {
                player.FirstName         = doc.QuerySelector("section .profile-page a").InnerText.Split(" ").First();
                player.LastName          = doc.QuerySelector("section .profile-page a").InnerText.Split(" ").Last();
                player.PlayerAge         = Int16.Parse(doc.QuerySelector("div .about-player ").InnerText.Trim().Split('\n').Last().Trim().Split(" ").Last());
                player.CurrentClub       = doc.QuerySelector("section .fav-team").InnerText.Trim().Split('\n').Last().Trim();
                player.MatchesPlayed     = Int16.Parse(statistics[0].QuerySelectorAll("span").Last().InnerHtml);
                player.MinutesOnThePitch = Int16.Parse(statistics[1].QuerySelectorAll("span").Last().InnerHtml);
                player.Goals             = Int16.Parse(statistics[2].QuerySelectorAll("span").Last().InnerHtml);
                player.YellowCards       = Int16.Parse(statistics[3].QuerySelectorAll("span")[1].InnerText);
                player.RedCards          = Int16.Parse(statistics[3].QuerySelectorAll("span")[2].InnerText);

                foreach (var club in clubs)
                {
                    var c = new ClubDto();
                    c.Season = club.QuerySelector("span .date").InnerText;
                    c.Name   = club.QuerySelector("span .club").InnerText;
                    player.Clubs.Add(c);
                }
            }
            catch
            {
                return(null);
            }
            return(player);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> GetPlayer([FromRoute] string id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var getPlayer = await _repo.GetFirstAsync <Player>(x => x.Id.Equals(id), null,
                                                                   String.Join(",", new object[] { nameof(Player.Country), nameof(Player.Game), nameof(Player.Team) }));

                if (!getPlayer.Success)
                {
                    return(NotFound());
                }
                var player = getPlayer.Data;

                var playerDto = new PlayerDto
                {
                    Id          = player.Id,
                    FirstName   = player.FirstName,
                    LastName    = player.LastName,
                    Nickname    = player.Nickname,
                    Country     = player.Country.Name,
                    DateOfBirth = player.DateOfBirth,
                    Team        = player.Team.Name,
                    Game        = player.Game.Name
                };

                return(Ok(playerDto));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 客户端比牌的处理
        /// </summary>
        /// <param name="compareClient"></param>
        /// <param name="comparedID"></param>
        private void CompareCard(ClientPeer compareClient, int comparedID)
        {
            SingleExecute.Instance.Exeecute(() => {
                if (fightCache.IsFighting(compareClient.Id) == false)
                {
                    return;
                }

                FightRoom room  = fightCache.GetFightRoomByUserId(compareClient.Id);
                room.stakesSum += room.lastPlayerStakes;
                int stakesSum   = room.UpdatePlayerStakesSum(compareClient.Id, room.lastPlayerStakes);
                int remainCoin  = DatabaseManager.UpdateCoin(compareClient.Id, -room.lastPlayerStakes);
                stakesDto.Change(compareClient.Id, remainCoin, room.lastPlayerStakes, stakesSum, StakesDto.StakesType.Look);
                room.Broadcast(OpCode.Fight, FightCode.PutStakes_BRO, stakesDto);

                // 拿到 3 个玩家的 DTO
                PlayerDto c1Dto = null, c2Dto = null, otherDto = null;
                foreach (var player in room.playerList)
                {
                    if (player.id == compareClient.Id)
                    {
                        c1Dto = player;
                    }
                    else if (player.id == comparedID)
                    {
                        c2Dto = player;
                    }
                    else
                    {
                        otherDto = player;
                    }
                }
                ClientPeer otherClient = DatabaseManager.GetClientPeerByUserId(otherDto.id);
                // 比牌
                CompareCard(room, compareClient, c1Dto, c2Dto, otherClient);
            });
        }
Exemplo n.º 6
0
        public IHttpActionResult GetPlayers()
        {
            List <Player>    Players    = db.Players.ToList();
            List <PlayerDto> PlayerDtos = new List <PlayerDto> {
            };

            //Here you can choose which information is exposed to the API
            foreach (var Player in Players)
            {
                PlayerDto NewPlayer = new PlayerDto
                {
                    PlayerID        = Player.PlayerID,
                    PlayerBio       = Player.PlayerBio,
                    PlayerFirstName = Player.PlayerFirstName,
                    PlayerLastName  = Player.PlayerLastName,
                    PlayerHasPic    = Player.PlayerHasPic,
                    PicExtension    = Player.PicExtension,
                    TeamID          = Player.TeamID
                };
                PlayerDtos.Add(NewPlayer);
            }

            return(Ok(PlayerDtos));
        }
        public IHttpActionResult GetPlayersForTeam(int id)
        {
            List <Player> Players = db.Players.Where(p => p.TeamID == id)
                                    .ToList();
            List <PlayerDto> PlayerDtos = new List <PlayerDto> {
            };

            //Here you can choose which information is exposed to the API
            foreach (var Player in Players)
            {
                PlayerDto NewPlayer = new PlayerDto
                {
                    PlayerID                = Player.PlayerID,
                    PlayerName              = Player.PlayerName,
                    PlayerNumber            = Player.PlayerNumber,
                    PlayerPosition          = Player.PlayerPosition,
                    PlayerInjuryDescription = Player.PlayerInjuryDescription,
                    TeamID = Player.TeamID
                };
                PlayerDtos.Add(NewPlayer);
            }

            return(Ok(PlayerDtos));
        }
Exemplo n.º 8
0
        public IHttpActionResult GetPlayersPage(int StartIndex, int PerPage)
        {
            List <Player>    Players    = db.Players.OrderBy(p => p.PlayerID).Skip(StartIndex).Take(PerPage).ToList();
            List <PlayerDto> PlayerDtos = new List <PlayerDto> {
            };

            //Here you can choose which information is exposed to the API
            foreach (var Player in Players)
            {
                PlayerDto NewPlayer = new PlayerDto
                {
                    PlayerID        = Player.PlayerID,
                    PlayerBio       = Player.PlayerBio,
                    PlayerFirstName = Player.PlayerFirstName,
                    PlayerLastName  = Player.PlayerLastName,
                    PlayerHasPic    = Player.PlayerHasPic,
                    PicExtension    = Player.PicExtension,
                    TeamID          = Player.TeamID
                };
                PlayerDtos.Add(NewPlayer);
            }

            return(Ok(PlayerDtos));
        }
Exemplo n.º 9
0
        public async void damagePlayer()
        {
            /* Attaque du Joueur */
            this.monsterCurrent.HP = this.monsterCurrent.HP - this.player.Attack; /* + obgectDmg */
            await this.zorkService.MonsterServices.EditAsync(this.monsterCurrent);

            Console.WriteLine($"Vous attaquez ! {this.monsterCurrent.Name} a {this.monsterCurrent.HP} HP");
            if (this.monsterCurrent.HP <= 0)
            {
                Console.WriteLine($"{this.monsterCurrent.Name} est mort...");
                this.player.XP++;
                await this.zorkService.PlayerServices.editUserLifeXP(this.player);

                await this.zorkService.MonsterServices.DeleteAsync(this.monsterCurrent);

                if (this.monsterCurrent.Name == "Dragon")
                {
                    Console.WriteLine("\n\n\n      (¯`·¯`·.¸¸.·´¯`·.¸¸.·´¯`·´¯)\n      ( \\                      / )\n       ( ) Vous avez gagner ! ( )\n        (/                    \\)\n         (.·´¯`·.¸¸.·´¯`·.¸¸.·)");
                    this.exit = true;

                    this.player = await this.zorkService.PlayerServices.finishPlayer();
                }
            }
        }
Exemplo n.º 10
0
        public Player NewCharacter()
        {
            if (_playerRepository.PlayerCount() == 10)
            {
                _printService.Type("There are too many saves, you need to delete one to cotinue with your creation.");
                pickPlayerToRemove();
            }

            _printService.ClearConsole();
            _printService.Type("Now we are going to create a new character for your adventure.");

            Thread.Sleep(2000);

            var playerDto = new PlayerDto();

            pickRace(playerDto);
            pickGender(playerDto);
            pickName(playerDto);
            pickClass(playerDto);

            var startingClass = _classRepository.GetClass(playerDto.Class);

            var player = new Player(playerDto);

            loadNewInventory(startingClass, player);

            _playerRepository.AddPlayer(player);
            _playerRepository.SavePlayers();

            Console.WriteLine($"{Environment.NewLine}Name: {playerDto.Name}");
            Console.WriteLine($"Gender: {playerDto.Gender}");
            Console.WriteLine($"Race: {playerDto.Race}");
            Console.WriteLine($"Class: {playerDto.Class}");

            return(player);
        }
Exemplo n.º 11
0
        public void UpdateAllPlayers(ExportMethodEnum ExportMethod, bool AddCharacters)
        {
            int count = 0;

            for (int i = 0; i < PlayerNames.Count; i++)
            {
                count++;
                SwGoh.PlayerDto player = new PlayerDto(PlayerNames[i]);
                int             ret    = player.ParseSwGoh(ExportMethod, AddCharacters);
                if (ret == 1)
                {
                    player.LastClassUpdated = DateTime.UtcNow;
                    player.Export(ExportMethod);
                    if (Players == null)
                    {
                        Players = new List <PlayerDto>();
                    }
                    Players.Add(player);
                    Thread.Sleep(mDelayPlayer);
                }
                else if (ret == 0)
                {
                    Thread.Sleep(mDelayError);
                    i--;
                }
                else
                {
                    if (Players == null)
                    {
                        Players = new List <PlayerDto>();
                    }
                    Players.Add(player);
                }
            }
            Export(ExportMethod, false);
        }
Exemplo n.º 12
0
 public void ResetPosition(int bankerId)
 {
     //x a b
     if (playerList[0].userId == bankerId)
     {
         PlayerDto dto = playerList[1];
         playerList[1] = playerList[2];
         playerList[2] = dto;
     }
     //a x b
     if (playerList[1].userId == bankerId)
     {
         PlayerDto dto = playerList[0];
         playerList[0] = playerList[2];
         playerList[2] = dto;
     }
     //a b x
     if (playerList[2].userId == bankerId)
     {
         PlayerDto dto = playerList[0];
         playerList[0] = playerList[1];
         playerList[1] = dto;
     }
 }
Exemplo n.º 13
0
        public async Task <IActionResult> UpdateRiotId(string riotName)
        {
            AramIdentityUser user;

            if (User != null && User.Identity != null)
            {
                user = await userManager.FindByNameAsync(User.Identity.Name);

                using (var httpClient = new HttpClient())
                {
                    var resp = await httpClient.GetAsync($"https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-name/{riotName}?api_key={options.Value.ApiRiotKey}");

                    if (resp.IsSuccessStatusCode)
                    {
                        PlayerDto player = JsonConvert.DeserializeObject <PlayerDto>(await resp.Content.ReadAsStringAsync());
                        user.riotId   = player.accountId;
                        user.riotName = player.name;
                    }
                }
                await userManager.UpdateAsync(user);
            }
            ViewBag.RiotName = riotName;
            return(View("Index"));
        }
Exemplo n.º 14
0
        public PlayerDto Convert(Tuple <Player, Bet, string> source, PlayerDto destination, ResolutionContext context)
        {
            var chips = new List <int>();

            if (source.Item2?.Amount is null)
            {
                chips = null;
            }
            else if (source.Item2.IsSplitted)
            {
                chips.Add(source.Item2.Amount.Value / 2);
                chips.Add(source.Item2.Amount.Value / 2);
            }
            else
            {
                chips.Add(source.Item2.Amount.Value);
            }

            return(new PlayerDto
            {
                Username = source.Item1.Username,
                Chips = chips
            });
        }
Exemplo n.º 15
0
        public void AddRemovePlayerTest()
        {
            PlayerDto dto = new PlayerDto()
            {
                PlayerId     = TEST_ID,
                Name         = TEST_NAME,
                UserName     = TEST_USERNAME,
                Password     = TEST_PASSWORD,
                EmailAddress = TEST_EMAIL,
                ShouldSync   = false
            };

            var addResult = PlayerService.AddNew(dto);

            Assert.IsTrue(addResult.IsSuccess);

            dto.Name       = TEST_NAME2;
            dto.ShouldSync = true;
            var updateResult = PlayerService.Update(dto);

            Assert.IsTrue(updateResult.IsSuccess);

            var player = PlayerService.GetPlayer(TEST_ID);

            Assert.IsNotNull(player);
            Assert.AreEqual(TEST_NAME2, player.Name);
            Assert.AreEqual(true, player.ShouldSync);

            var players = PlayerService.GetPlayers();

            Assert.IsTrue(players.Count >= 1);

            var deleteResult = PlayerService.Remove(TEST_ID);

            Assert.IsTrue(deleteResult.IsSuccess);
        }
Exemplo n.º 16
0
 public static PlayerRemovedFromVesselRoleEvent FromPlayerInGameVesselRole(Guid gameId, VesselDto vessel, string vesselRole, PlayerDto player) =>
 new PlayerRemovedFromVesselRoleEvent(
     EventBase.GetDateIsoString(),
     gameId,
     vessel,
     vesselRole,
     player
     );
Exemplo n.º 17
0
        }                                              // For model binding / deserialization

        private PlayerRemovedFromVesselRoleEvent(string eventDateIsoString, Guid gameId, VesselDto vessel, string vesselRole, PlayerDto player) : base(eventDateIsoString)
        {
            GameId     = gameId;
            Vessel     = vessel;
            VesselRole = vesselRole;
            Player     = player;
        }
Exemplo n.º 18
0
 /// <summary>
 /// Initialize the Component.
 /// Edit player is selected.
 /// </summary>
 /// <param name="player"></param>
 public PlayerEditor(PlayerDto player)
 {
     InitializeComponent();
     Player = player;
     UpdateValues();
 }
Exemplo n.º 19
0
 /// <summary>
 /// Initailize the Component.
 /// Create player is selected.
 /// </summary>
 public PlayerEditor()
 {
     InitializeComponent();
     uxID.Enabled = true;
     Player       = new PlayerDto();
 }
Exemplo n.º 20
0
        public ActionResult <PlayerDto> Post(PlayerDto playerDto)
        {
            _playerService.Add(playerDto);

            return(Ok(playerDto));
        }
Exemplo n.º 21
0
        public override async Task OnConnectedAsync()
        {
            if (IsAlreadyConnected())
            {
                var duel = GetCurrentDuel();
                await Groups.AddToGroupAsync(Context.ConnectionId, duel.GroupName);

                await Clients.Caller.SendAsync("DuelStarts", duel);

                return;
            }

            var firstPlayer = new PlayerDto
            {
                ConnectionId = Context.ConnectionId,
                Name         = Context.User.FindFirstValue(ClaimTypes.GivenName),
                Email        = Context.User.FindFirstValue(ClaimTypes.Email),
                Picture      = _userRepository.GetUser(Context.User).Picture
            };

            if (UserHandler.WaitingPlayers.Count > 0)
            {
                PlayerDto secondPlayer = null;
                int?      taskId       = null;
                for (int i = 0; i < UserHandler.WaitingPlayers.Count; i++)
                {
                    secondPlayer = UserHandler.WaitingPlayers.Skip(i).First();
                    taskId       = await _taskManager.GetTaskIdForDuelAsync(new List <string>
                    {
                        firstPlayer.Email, secondPlayer.Email
                    });

                    if (taskId != null)
                    {
                        break;
                    }
                }

                if (taskId == null)
                {
                    AddWaitingPlayer(firstPlayer);
                    return;
                }

                RemoveWaitingPlayer(secondPlayer);

                var task = await _taskManager.GetCachedTaskByIdAsync((int)taskId);

                var duration = _duelLogic.CalculateDuelDuration(_hostingEnv.EnvironmentName, task.Value);
                var duel     = _duelLogic.CreateDuel(task, firstPlayer,
                                                     secondPlayer, duration);

                UserHandler.ActiveDuels.Add(duel);

                var timer = new Timer
                {
                    Interval = duration * 60 * 1000
                };
                timer.Elapsed += (sender, e) => DuelTimeElapsed(duel, timer);
                timer.Start();

                await Groups.AddToGroupAsync(firstPlayer.ConnectionId, duel.GroupName);

                await Groups.AddToGroupAsync(secondPlayer.ConnectionId, duel.GroupName);

                await Clients.Group(duel.GroupName).SendAsync("DuelStarts", duel);
            }
            else
            {
                AddWaitingPlayer(firstPlayer);
            }

            await base.OnConnectedAsync();
        }
Exemplo n.º 22
0
 private void ProcessTurn(PlayerDto inDto)
 {
     Shoot(inDto);
     Console.WriteLine("\n\n> Press enter to continue...\n");
     Console.ReadLine();
     Console.Clear();
 }
Exemplo n.º 23
0
 /// <summary>
 /// 上线
 /// </summary>
 private void OnLine(PlayerDto dto)
 {
     //保存数据
     GameData.Player = dto;
     view.UpdateView(dto);
 }
Exemplo n.º 24
0
 private static EntityType WhichPlayerIsGiven(PlayerDto player) =>
 player.EntityType == EntityType.PlayerOne
         ? EntityType.PlayerOne
         : EntityType.PlayerTwo;
Exemplo n.º 25
0
 public Task UpdatePlayer2Async(Guid gameId, int gameVersion, PlayerDto player)
 {
     return(UpdatePlayerAsync(gameId, gameVersion, player, 2));
 }
Exemplo n.º 26
0
 // ctor
 public BattleshipGame()
 {
     _p1Dto = new PlayerDto();
     _p2Dto = new PlayerDto();
     _quit = 2;
 }
Exemplo n.º 27
0
        private void Shoot(PlayerDto inDto)
        {
            bool isShotValid = false;

            while (!isShotValid)
            {
                var coordGetter = new CoordGetter();

                //Console.Clear();

                DisplayShotHistory(inDto);

                var coord = coordGetter.GetCoord("> Enter Shot Coord (Ex: a1, b6) :   ");

                var response = inDto.Board.FireShot(coord);

                Console.Clear();

                Console.WriteLine("\n Shot result: ");

                DisplayShotHistory(inDto);

                if (response.ShotStatus == ShotStatus.Duplicate || response.ShotStatus == ShotStatus.Invalid)
                {
                    Console.WriteLine("\nThat was not a valid shot, ({0}), Take another shot!", response.ShotStatus.ToString());

                    Console.WriteLine("\n Press Enter to re-take shot...");
                    Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("\n Shot result: ");

                    //mt
                    //Console.ReadLine();
                    //Console.Clear();

                }

                else if (response.ShotStatus == ShotStatus.Miss)
                {
                    Console.Write("\nSplash! - You MISSED...");
                    isShotValid = true;
                }

                else if (response.ShotStatus == ShotStatus.Hit)
                {
                    Console.Write("\nBOOM! *** You hit something!");
                    isShotValid = true;
                }

                else if (response.ShotStatus == ShotStatus.HitAndSunk)
                {
                    Console.Write("\nBAAM! *** You hit and SUNK a {0}", response.ShipImpacted.ToString());
                    isShotValid = true;
                }

                else
                {
                    Console.WriteLine("\nVICTORY! - you just WON!!!");
                    _isVictory = true;
                    break;
                }
            }
        }
Exemplo n.º 28
0
 public void SendPlayerData(PlayerDto player)
 {
     Console.Write(player);
     Program.server.Token = player.Id;
 }
Exemplo n.º 29
0
        public ActionResult New()
        {
            var viewModel = new PlayerDto();

            return(View("PlayerForm", viewModel));
        }
Exemplo n.º 30
0
        public IEnumerable <PlayerDto> GetOtherPlayers(PlayerDto player)
        {
            var allPlayersExceptGiven = _unitOfWork.PlayerRepository.GetAll().Where(x => !x.Name.Equals(player.Name));

            return(_mapper.Map <IEnumerable <PlayerDto> >(allPlayersExceptGiven));
        }
Exemplo n.º 31
0
        private void PlaceShips(PlayerDto inDto)
        {
            int a = Enum.GetNames(typeof(ShipType)).Length;

            for (int i = 0; i < a; i++)
            {
                bool isPlacementOk = false;

                while (!isPlacementOk)
                {
                    string shipType = ((ShipType)i).ToString();
                    var coordGetter = new CoordGetter();
                    var shipPointer = new ShipPointer();

                    PlaceShipRequest request = new PlaceShipRequest()
                    {
                        Coordinate = coordGetter.GetCoord((i + 1).ToString() + ".  " + "Enter coordinate for your " + shipType.ToString() + ":  "),
                        Direction = shipPointer.PointShip("    Ship direction: (L-left, R-right, U-up, D-down): "),
                        ShipType = (ShipType)i
                    };

                    var responce = inDto.Board.PlaceShip(request);
                    string r = responce.ToString();

                    if (r == ShipPlacement.Ok.ToString())
                    {
                        isPlacementOk = true;
                        Console.WriteLine("    Ship placement status: {0}", r);
                    }

                    else Console.WriteLine("    Ship NOT PLACED! : {0}", r);
                }

            }
        }
 public static void Player(this ScenarioContext context, PlayerDto playerDto)
 {
     context.Set(PlayerKey, playerDto);
 }
Exemplo n.º 33
0
        static void Main(string[] args)
        {
            //string pname = "41st";
            //Command command = Command.UpdateGuild;

            SwGoh.CharactersConfig.ExportCharacterFilesToDB();

            ExportMethodEnum mExportMethod = ExportMethodEnum.Database;

            string  pname   = "newholborn";
            Command command = Command.UpdatePlayer;


            if (args.Length > 0)
            {
                string commandstr = args[0];
                if (args.Length > 2 && commandstr == "ups")
                {
                    command = Command.UpdatePlayers;
                }
                else if (commandstr == "up")
                {
                    command = Command.UpdatePlayer;
                }
                else if (commandstr == "ug")
                {
                    command = Command.UpdateGuild;
                }
                else if (commandstr == "ugnochars")
                {
                    command = Command.UpdateGuildWithNoChars;
                }
                else if (commandstr == "help")
                {
                    command = Command.Help;
                }
                else if (commandstr == "test")
                {
                    command = Command.Test;
                }
                else
                {
                    command = Command.UnKnown;
                }
                if (args.Length > 1)
                {
                    pname = args[1];
                }
            }

            switch (command)
            {
            case Command.UpdatePlayer:
            {
                SwGoh.PlayerDto player = new PlayerDto(pname);
                int             ret    = player.ParseSwGoh(mExportMethod, true);
                if (ret == 1)
                {
                    player.Export(mExportMethod);
                }
                break;
            }

            case Command.UpdateGuild:
            {
                SwGoh.GuildDto guild = new GuildDto();
                guild.Name = guild.GetGuildNameFromAlias(pname);
                guild.ParseSwGoh();
                if (guild.PlayerNames != null && guild.PlayerNames.Count > 0)
                {
                    guild.UpdateAllPlayers(mExportMethod, true);
                }
                break;
            }

            case Command.UpdatePlayers:
            {
                for (int i = 1; i < args.Length; i++)
                {
                    SwGoh.PlayerDto player = new PlayerDto(args[i]);
                    int             ret    = player.ParseSwGoh(mExportMethod, true);
                    if (ret == 1)
                    {
                        player.Export(mExportMethod);
                    }
                }
                break;
            }

            case Command.UpdateGuildWithNoChars:
            {
                SwGoh.GuildDto guild = new GuildDto();
                guild.Name = guild.GetGuildNameFromAlias(pname);
                guild.ParseSwGoh();
                if (guild.PlayerNames != null && guild.PlayerNames.Count > 0)
                {
                    guild.UpdateOnlyGuildWithNoChars(mExportMethod);
                }
                break;
            }

            case Command.Help:
            {
                Console.WriteLine("Command Update Player");
                Console.WriteLine("Usage : <app> up <playername>");
                Console.WriteLine("Update only one player with his characters.");
                Console.WriteLine("");
                Console.WriteLine("Command Update Players");
                Console.WriteLine("Usage : <app> ups <playername1> <playername2> <playername3>");
                Console.WriteLine("Update provided players with their characters.");
                Console.WriteLine("");
                Console.WriteLine("Command Update Guild");
                Console.WriteLine("Usage : <app> ug <guildname>");
                Console.WriteLine("Update all players with their characters and at the end update the guild file.");
                Console.WriteLine("");
                Console.WriteLine("Command Update Guild without the characters of the players");
                Console.WriteLine("Usage : <app> ugnochars <guildname>");
                Console.WriteLine("Update the guild file.");
                Console.WriteLine("");
                Console.WriteLine("Command Help");
                Console.WriteLine("Usage : <app> help");
                Console.WriteLine("You already know this command!!!!!");
                break;
            }

            case Command.Test:
            {
                SwGoh.CharactersConfig.ExportCharacterFilesToDB();
                break;
            }

            default:
            {
                Console.WriteLine("Unknown command , please try again.!!!!");
                break;
            }
            }
            Console.WriteLine("");
            Console.WriteLine("Press Enter to close!!!!");
            Console.Read();
        }
Exemplo n.º 34
0
        public async Task LoginHandler(GameSession session, CLoginReqMessage message)
        {
            Logger.Info()
            .Account(message.AccountId, message.Username)
            .Message($"Login from {session.RemoteEndPoint}")
            .Write();

            if (message.Version != s_version)
            {
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message($"Invalid client version {message.Version}")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.WrongVersion));
                return;
            }

            if (GameServer.Instance.PlayerManager.Count >= Config.Instance.PlayerLimit)
            {
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message("Server is full")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.ServerFull));
                return;
            }

            #region Validate Login

            AccountDto accountDto;
            using (var db = AuthDatabase.Open())
            {
                accountDto = (await db.FindAsync <AccountDto>(statement => statement
                                                              .Include <BanDto>(join => join.LeftOuterJoin())
                                                              .Where($"{nameof(AccountDto.Id):C} = @Id")
                                                              .WithParameters(new { Id = message.AccountId })))
                             .FirstOrDefault();
            }

            if (accountDto == null)
            {
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message("Wrong login")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.SessionTimeout));
                return;
            }

            uint inputSessionId;
            if (!uint.TryParse(message.SessionId, out inputSessionId))
            {
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message("Wrong login")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.SessionTimeout));
                return;
            }

            var sessionId = Hash.GetUInt32 <CRC32>($"<{accountDto.Username}+{accountDto.Password}>");
            if (sessionId != inputSessionId)
            {
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message("Wrong login")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.SessionTimeout));
                return;
            }

            var now = DateTimeOffset.Now.ToUnixTimeSeconds();
            var ban = accountDto.Bans.FirstOrDefault(b => b.Date + (b.Duration ?? 0) > now);
            if (ban != null)
            {
                var unbanDate = DateTimeOffset.FromUnixTimeSeconds(ban.Date + (ban.Duration ?? 0));
                Logger.Error()
                .Account(message.AccountId, message.Username)
                .Message($"Banned until {unbanDate}")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.SessionTimeout));
                return;
            }

            var account = new Account(accountDto);

            #endregion

            if (account.SecurityLevel < Config.Instance.SecurityLevel)
            {
                Logger.Error()
                .Account(account)
                .Message($"No permission to enter this server({Config.Instance.SecurityLevel} or above required)")
                .Write();

                session.SendAsync(new SLoginAckMessage((GameLoginResult)9));
                return;
            }

            if (message.KickConnection)
            {
                Logger.Info()
                .Account(account)
                .Message("Kicking old connection")
                .Write();

                var oldPlr = GameServer.Instance.PlayerManager.Get(account.Id);
                oldPlr?.Disconnect();
            }

            if (GameServer.Instance.PlayerManager.Contains(account.Id))
            {
                Logger.Error()
                .Account(account)
                .Message("Already online")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.TerminateOtherConnection));
                return;
            }

            using (var db = GameDatabase.Open())
            {
                var plrDto = (await db.FindAsync <PlayerDto>(statement => statement
                                                             .Include <PlayerCharacterDto>(join => join.LeftOuterJoin())
                                                             .Include <PlayerDenyDto>(join => join.LeftOuterJoin())
                                                             .Include <PlayerItemDto>(join => join.LeftOuterJoin())
                                                             .Include <PlayerLicenseDto>(join => join.LeftOuterJoin())
                                                             .Include <PlayerMailDto>(join => join.LeftOuterJoin())
                                                             .Include <PlayerSettingDto>(join => join.LeftOuterJoin())
                                                             .Where($"{nameof(PlayerDto.Id):C} = @Id")
                                                             .WithParameters(new { Id = message.AccountId })))
                             .FirstOrDefault();

                if (plrDto == null)
                {
                    // first time connecting to this server
                    var        expTable = GameServer.Instance.ResourceCache.GetExperience();
                    Experience expValue;
                    if (!expTable.TryGetValue(Config.Instance.Game.StartLevel, out expValue))
                    {
                        expValue = new Experience();
                        expValue.TotalExperience = 0;
                        Logger.Warn($"Given start level is not found in the experience table");
                    }

                    plrDto = new PlayerDto
                    {
                        Id              = (int)account.Id,
                        Level           = Config.Instance.Game.StartLevel,
                        PEN             = Config.Instance.Game.StartPEN,
                        AP              = Config.Instance.Game.StartAP,
                        Coins1          = Config.Instance.Game.StartCoins1,
                        Coins2          = Config.Instance.Game.StartCoins2,
                        TotalExperience = (int)expValue.TotalExperience
                    };

                    await db.InsertAsync(plrDto);
                }

                session.Player = new Player(session, account, plrDto);
            }

            if (GameServer.Instance.PlayerManager.Contains(session.Player))
            {
                session.Player = null;
                Logger.Error()
                .Account(account)
                .Message("Already online")
                .Write();

                session.SendAsync(new SLoginAckMessage(GameLoginResult.TerminateOtherConnection));
                return;
            }

            GameServer.Instance.PlayerManager.Add(session.Player);

            Logger.Info()
            .Account(account)
            .Message("Login success")
            .Write();

            var result = string.IsNullOrWhiteSpace(account.Nickname)
                ? GameLoginResult.ChooseNickname
                : GameLoginResult.OK;
            await session.SendAsync(new SLoginAckMessage(result, session.Player.Account.Id));

            if (!string.IsNullOrWhiteSpace(account.Nickname))
            {
                await LoginAsync(session);
            }
        }
Exemplo n.º 35
0
        public ClientMessage <RegistrationResult> Register(PlayerDto dto)
        {
            var clientMessage = new ClientMessage <RegistrationResult>();

            try
            {
                var player = _mapper.Map <Player>(dto);

                var alreadyExist = _dbContext.Players.Include(t => t.Transactions).ThenInclude(t => t.Answer)
                                   .ThenInclude(t => t.Question).FirstOrDefault(t => t.EmailAddress == player.EmailAddress);

                if (alreadyExist != null)
                {
                    var personalityQuestions = alreadyExist.Transactions.Select(t => t.Answer.Question)
                                               .Where(t => t.QuestionTypeId == (int)AppEnum.QuestionTypes.Level_3).Select(t => t.Id).Distinct();
                    if (personalityQuestions.Count() == 7)
                    {
                        clientMessage.ReturnedData = new RegistrationResult {
                            PlayerId = alreadyExist.Id, NewPlayer = false
                        };
                        clientMessage.ClientStatusCode = DataEnum.OperationStatus.Ok;
                        return(clientMessage);
                    }
                    else
                    {
                        _dbContext.Players.Remove(alreadyExist);
                        _dbContext.SaveChanges();
                    }
                }

                if (dto.PlayerCV != null)
                {
                    var physicalFileName = Guid.NewGuid().ToString();
                    physicalFileName += Path.GetExtension(dto.PlayerCV.FileName);
                    var virtualFileName = dto.PlayerCV.FileName;
                    var filePath        = Path.Combine(_hostingEnvironment.WebRootPath, "App_Files/");
                    using (var fileStream = new FileStream(Path.Combine(filePath, physicalFileName), FileMode.Create))
                    {
                        dto.PlayerCV.CopyTo(fileStream);
                    }

                    player.CvPhysicalName = physicalFileName;
                    player.CvVirtualName  = virtualFileName;
                }

                player.CreatedById = -1;
                player.CreatedDate = DateTime.Now;
                player.IsActive    = true;


                _dbContext.Players.Add(player);
                _dbContext.SaveChanges();

                clientMessage.ClientMessageContent = new List <string> {
                    "Player created successfully"
                };
                clientMessage.ReturnedData = new RegistrationResult {
                    PlayerId = player.Id, NewPlayer = true
                };

                clientMessage.ClientStatusCode = DataEnum.OperationStatus.Ok;
                return(clientMessage);
            }
            catch (Exception ex)
            {
                clientMessage.ClientMessageContent = new List <string> {
                    ex.Message + " " + ex.InnerException
                };
                clientMessage.ReturnedData     = new RegistrationResult();
                clientMessage.ClientStatusCode = DataEnum.OperationStatus.Error;
                return(clientMessage);
            }
        }