protected override Task Handle(PortalTriggerEvent e, CancellationToken cancellation) { // todo check portal state if (!(e.Sender is IPlayerEntity session)) { return(Task.CompletedTask); } PortalDto currentPortal = e.Portal; session.Position.X = currentPortal.DestinationX; session.Position.Y = currentPortal.DestinationY; IMapLayer destinationMap = _mapManager.GetBaseMapLayer(currentPortal.DestinationMapId); if (destinationMap == null) { Log.Warn($"Cannot find map with id: {currentPortal.DestinationMapId}."); return(Task.CompletedTask); } session.TransferEntity(destinationMap); return(Task.CompletedTask); }
public static Task TeleportTo(this IPlayerEntity player, short mapId, short x, short y) { return(player.TeleportTo(MapManager.GetBaseMapLayer(mapId), x, y)); }
protected override async Task Handle(GameStartPacketBase packet, ISession session) { if (session.Player != null) { return; } CharacterDto dto = await _characterService.GetByIdAsync(session.CharacterId); IEnumerable <CharacterSkillDto> skills = await _characterSkillService.GetByCharacterIdAsync(session.CharacterId); IEnumerable <CharacterQuicklistDto> quicklist = await _characterQuicklistService.GetByCharacterIdAsync(session.CharacterId); IEnumerable <CharacterMateDto> mates = await _characterMateService.GetMatesByCharacterIdAsync(session.CharacterId); IMapLayer mapLayer = _mapManager.GetBaseMapLayer(dto.MapId); session.InitializeEntity(new PlayerEntity(session, dto, skills, quicklist)); // Register Player _playerManager.RegisterPlayer(session.Player); // load inventory await session.Player.EmitEventAsync(new InventoryLoadEvent()); // motd await session.Player.SendChatMessageAsync("┌------------------[NosWings]------------------┐", SayColorType.Yellow); await session.Player.SendChatMessageAsync($"XP : {dto.LevelXp}/{_algorithmService.GetLevelXp(dto.Class, dto.Level)}", SayColorType.Yellow); await session.Player.SendChatMessageAsync($"JOBXP : {dto.JobLevelXp}/{_algorithmService.GetJobLevelXp(dto.Class, dto.Level)}", SayColorType.Yellow); await session.Player.SendChatMessageAsync($"HEROXP : {dto.HeroXp}/{_algorithmService.GetHeroLevelXp(dto.Class, dto.Level)}", SayColorType.Yellow); await session.Player.SendChatMessageAsync("└----------------------------------------------┘", SayColorType.Yellow); await session.SendPacketAsync(new TitPacket { ClassType = "Adventurer", Name = dto.Name }); await session.SendPacketAsync(new MapoutPacket()); session.Player.Character.SpPoint = 10000; session.Player.Character.SpAdditionPoint = 500000; // transfer to map session.Player.TransferEntity(mapLayer); await session.Player.ActualizeUiSkillList(); await session.Player.ActualizeUiReputation(); await session.SendPacketAsync(new RagePacket { RagePoints = 0, RagePointsMax = 250000 }); // rank_cool // pet basket ? ib 1278 1 // cleftOfDarkness ? bc 0 0 0 await session.Player.ActualiseUiSpPoints(); // scr 0 for (byte i = 0; i < 10; i++) { await session.Player.SendPacketAsync(new BnPacket { BnNumber = i, Message = $"SaltyEmu^{i}" }); } // exts // MlInfo await session.SendPacketAsync(new PClearPacket()); await session.Player.ActualizeGroupList(); await session.Player.ActualizeUiGroupIcons(); await session.SendPacketAsync(new ZzimPacket()); // twk 2 await session.SendPacketAsync(new Act6Packet()); await session.SendPacketAsync(session.Player.GenerateFsPacket()); // scP // scN await session.Player.EmitEventAsync(new InventoryRequestDetailsEvent()); await session.Player.ActualizePlayerCondition(); await session.Player.ActualizeUiGold(); await session.Player.ActualizeUiQuicklist(); await session.Player.ActualizeUiFriendList(); await session.Player.ActualizeUiBlackList(); await session.Player.ActualizeUiWearPanel(); // Blinit // clinit // flinit // kdlinit await session.Player.ActualizeUiStatChar(); await session.SendPacketAsync(session.Player.GeneratePairyPacket()); await session.SendPacketAsync(session.Player.GenerateGInfoPacket()); await session.Player.BroadcastAsync(session.Player.GenerateGidxPacket()); // Session.SendPackets(Session.Character.GetFamilyHistory()); // await session.SendPacketAsync(Session.Character.GenerateFamilyMember()); // await session.SendPacketAsync(Session.Character.GenerateFamilyMemberMessage()); // await session.SendPacketAsync(Session.Character.GenerateFamilyMemberExp()); // mails // quests foreach (CharacterMateDto s in mates) { var mate = new MateEntity(session.Player, s, _npcMonsterService.GetById(s.NpcMonsterId)); session.Player.Mates.Add(mate); } }