public void GenerateInPacketIsNotCorruptedForNpc() { var mapNpcTest = new MapNpc(); var packet = PacketFactory.Serialize(new[] { mapNpcTest.GenerateIn() }); Assert.AreEqual("in 2 - 0 0 0 0 0 0 0 0 0 -1 1 0 -1 - 2 -1 0 0 0 0 0 0 0 0", packet); }
public void GenerateInPacketIsNotCorruptedForNpc() { var mapNpcTest = new MapNpc(null, new GenericDao <Database.Entities.Shop, ShopDto>(_logger), new GenericDao <Database.Entities.ShopItem, ShopItemDto>(_logger), new List <NpcMonsterDto>(), _logger); var packet = PacketFactory.Serialize(new[] { mapNpcTest.GenerateIn() }); Assert.AreEqual("in 2 - 0 0 0 0 0 0 0 0 0 -1 1 0 -1 - 2 -1 0 0 0 0 0 0 0 0", packet); }
public void Run() { CommunicationServiceClient.Instance.SendMessageToCharacter(new SCSCharacterMessage { DestinationCharacterId = null, SourceCharacterId = 0, SourceWorldId = ServerManager.Instance.WorldId, Message = "The Mystic Traveler is here, look for him in Olorun Village!", Type = MessageType.Shout }); ShopShipev.ShopMapInstance = ServerManager.GenerateMapInstance(5404, MapInstanceType.ShopShip, new InstanceBag()); ShopShipev.UnknownLandMapInstance = ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(2628)); MapNpc CaptainEnter = new MapNpc { NpcVNum = 2306, MapX = 73, MapY = 69, MapId = 2628, ShouldRespawn = false, IsMoving = false, MapNpcId = ShopShipev.UnknownLandMapInstance.GetNextNpcId(), Position = 1, Name = $"Mystic-Traveler" }; CaptainEnter.Initialize(ShopShipev.UnknownLandMapInstance); ShopShipev.UnknownLandMapInstance.AddNPC(CaptainEnter); ShopShipev.UnknownLandMapInstance.Broadcast(CaptainEnter.GenerateIn()); MapNpc CaptainExit = new MapNpc { NpcVNum = 2306, MapX = 15, MapY = 5, MapId = 5404, ShouldRespawn = false, IsMoving = false, MapNpcId = ShopShipev.ShopMapInstance.GetNextNpcId(), Position = 2, Name = $"Mystic-Traveler" }; CaptainExit.Initialize(ShopShipev.ShopMapInstance); ShopShipev.ShopMapInstance.AddNPC(CaptainExit); ShopShipev.ShopMapInstance.Broadcast(CaptainExit.GenerateIn()); void RemoveNpc() { ShopShipev.ShopMapInstance.RemoveNpc(CaptainExit); CaptainExit.MapInstance.Broadcast(StaticPacketHelper.Out(UserType.Npc, CaptainExit.MapNpcId)); ShopShipev.UnknownLandMapInstance.RemoveNpc(CaptainEnter); CaptainEnter.MapInstance.Broadcast(StaticPacketHelper.Out(UserType.Npc, CaptainEnter.MapNpcId)); } List <EventContainer> onDeathEvents = new List <EventContainer> { new EventContainer(ShopShipev.ShopMapInstance, EventActionType.SCRIPTEND, (byte)1) }; try { Observable.Timer(TimeSpan.FromMinutes(1)).Subscribe(X => FirstAnounce()); Observable.Timer(TimeSpan.FromMinutes(2)).Subscribe(X => FirstAnounce2()); Observable.Timer(TimeSpan.FromMinutes(3)).Subscribe(X => FirstAnounce3()); Observable.Timer(TimeSpan.FromMinutes(4)).Subscribe(X => FirstAnounce4()); Observable.Timer(TimeSpan.FromSeconds(270)).Subscribe(X => FirstAnounce5()); Observable.Timer(TimeSpan.FromMinutes(5)).Subscribe(X => EndRaid()); Observable.Timer(TimeSpan.FromSeconds(295)).Subscribe(X => RemoveNpc()); } catch (Exception ex) { } }
private void ExecuteHandler(ClientSession session) { if (_isParsed) { Logger.LogUserEvent("GMCOMMAND", session.GenerateIdentity(), $"[SummonNPC]NpcMonsterVNum: {NpcMonsterVNum} Amount: {Amount} IsMoving: {IsMoving}"); if (session.IsOnMap && session.HasCurrentMapInstance) { NpcMonster npcmonster = ServerManager.GetNpcMonster(NpcMonsterVNum); if (npcmonster == null) { return; } Random random = new Random(); for (int i = 0; i < Amount; i++) { List <MapCell> possibilities = new List <MapCell>(); for (short x = -4; x < 5; x++) { for (short y = -4; y < 5; y++) { possibilities.Add(new MapCell { X = x, Y = y }); } } foreach (MapCell possibilitie in possibilities.OrderBy(s => random.Next())) { short mapx = (short)(session.Character.PositionX + possibilitie.X); short mapy = (short)(session.Character.PositionY + possibilitie.Y); if (!session.CurrentMapInstance?.Map.IsBlockedZone(mapx, mapy) ?? false) { break; } } if (session.CurrentMapInstance != null) { MapNpc npc = new MapNpc { NpcVNum = NpcMonsterVNum, MapY = session.Character.PositionY, MapX = session.Character.PositionX, MapId = session.Character.MapInstance.Map.MapId, Position = session.Character.Direction, IsMoving = IsMoving, MapNpcId = session.CurrentMapInstance.GetNextNpcId() }; npc.Initialize(session.CurrentMapInstance); session.CurrentMapInstance.AddNpc(npc); session.CurrentMapInstance.Broadcast(npc.GenerateIn()); } } } } else { session.SendPacket(session.Character.GenerateSay(ReturnHelp(), 10)); } }