Beispiel #1
0
        //TODO: Simplify method body
        public override async Task RunImpl()
        {
            if (!await IsValidChar())
            {
                return;
            }

            PcTemplate template = CharTemplateTable.GetTemplate(_classId);

            L2Player player = new L2Player(template, _idFactory.NextId())
            {
                Name          = _name,
                Account       = _client.Account,
                Sex           = (Gender)_sex,
                HairStyleId   = (HairStyleId)_hairStyle,
                HairColor     = (HairColor)_hairColor,
                Face          = (Face)_face,
                CharacterSlot = _client.AccountCharacters.Count
            };

            _characterService.CreatePlayer(player);
            _client.AccountCharacters.Add(player);
            _client.SendPacketAsync(new CharCreateOk());
            _client.SendPacketAsync(new CharList(_client, _client.SessionKey.PlayOkId1));
        }
Beispiel #2
0
        public async void Start()
        {
            Config.Config config = ServiceProvider.GetService <Config.Config>();
            await config.Initialise();

            await ServiceProvider.GetService <PreReqValidation>().Initialise();

            CharTemplateTable.Initialize();

            // TODO: refactor NetworkBlock
            NetworkBlock.Instance.Initialize();
            GameTime.Initialize();

            await ServiceProvider.GetService <IdFactory>().Initialise();

            L2World.Initialize();

            MapRegionTable.Initialize();
            ZoneTable.Initialize();

            await ServiceProvider.GetService <ItemTable>().Initialise();

            ItemHandler.Initialize();

            NpcTable.Initialize();
            Capsule.Initialize();
            AttackStanceManager.Initialize();
            BlowFishKeygen.GenerateKeys();

            await ServiceProvider.GetService <IAdminCommandHandler>().Initialise();

            await ServiceProvider.GetService <AnnouncementManager>().Initialise();

            StaticObjTable.Initialize();
            await ServiceProvider.GetService <SpawnTable>().Initialise();

            await ServiceProvider.GetService <HtmCache>().Initialise();

            // TODO: review plugin system
            //PluginManager.Instance.Initialize(this);

            ServiceProvider.GetService <AuthThread>().Initialise();

            _listener = new TcpListener(IPAddress.Any, config.ServerConfig.Port);

            try
            {
                _listener.Start();
            }
            catch (SocketException ex)
            {
                Log.Halt($"Socket Error: '{ex.SocketErrorCode}'. Message: '{ex.Message}' (Error Code: '{ex.NativeErrorCode}')");
            }

            Log.Info($"Listening Gameservers on port {config.ServerConfig.Port}");

            Task.Factory.StartNew(WaitForClients);
        }
Beispiel #3
0
        public static L2Player ToPlayer(this CharacterContract characterContract)
        {
            L2Player player = new L2Player(CharTemplateTable.GetTemplate(characterContract.ClassId), characterContract.CharacterId)
            {
                ObjectId              = characterContract.CharacterId,
                Name                  = characterContract.Name,
                Title                 = characterContract.Title,
                Level                 = (byte)characterContract.Level,
                Face                  = (Face)characterContract.Face,
                HairStyleId           = (HairStyleId)characterContract.HairStyle,
                HairColor             = (HairColor)characterContract.HairColor,
                Sex                   = (Gender)characterContract.Sex,
                X                     = characterContract.X,
                Y                     = characterContract.Y,
                Z                     = characterContract.Z,
                Heading               = characterContract.Heading,
                Experience            = characterContract.Exp,
                ExpOnDeath            = characterContract.ExpBeforeDeath,
                Sp                    = characterContract.Sp,
                Karma                 = characterContract.Karma,
                PvpKills              = characterContract.PvpKills,
                PkKills               = characterContract.PkKills,
                BaseClass             = CharTemplateTable.GetTemplate(characterContract.BaseClass),
                ActiveClass           = CharTemplateTable.GetTemplate(characterContract.ClassId),
                RecomendationsLeft    = characterContract.RecLeft,
                RecomandationsHave    = characterContract.RecHave,
                CharacterSlot         = characterContract.CharSlot,
                DeleteTime            = characterContract.DeleteTime,
                LastAccess            = characterContract.LastAccess,
                CanCraft              = characterContract.CanCraft,
                AccessLevel           = characterContract.AccessLevel,
                OnlineTime            = characterContract.OnlineTime,
                PunishLevel           = characterContract.PunishLevel,
                PunishTime            = characterContract.PunishTime,
                PowerGrade            = characterContract.PowerGrade,
                Nobless               = characterContract.Nobless,
                Hero                  = characterContract.Hero,
                LastRecomendationDate = characterContract.LastRecomDate
            };

            player.CharStatus.SetCurrentCp(characterContract.CurCp,
                                           false);                          //player.CharStatus.CurrentCp = playerContract.CurCp; //???after repairing the broadcast, return it back???
            player.CharStatus.SetCurrentHp(characterContract.CurHp, false); //player.CharStatus.CurrentHp = playerContract.CurHp;
            player.CharStatus.SetCurrentMp(characterContract.CurMp, false); //player.CharStatus.CurrentMp = playerContract.CurMp;

            return(player);
        }
Beispiel #4
0
 public override async Task RunImpl()
 {
     await _client.SendPacketAsync(new CharTemplates(CharTemplateTable.GetTemplates()));
 }