public void ShowShop(string packet) { Logger.Debug(packet, Session.SessionId); string[] packetsplit = packet.Split(' '); long owner; if (packetsplit.Length > 2) { int mode; if (!int.TryParse(packetsplit[2], out mode) || !Session.HasCurrentMap) { return; } if (mode == 1) { // User Shop if (packetsplit.Length <= 3) { return; } if (!long.TryParse(packetsplit[3], out owner)) { return; } KeyValuePair <long, MapShop> shopList = Session.CurrentMap.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(owner)); LoadShopItem(owner, shopList); } else { // Npc Shop , ignore if has drop short MapNpcId; if (!short.TryParse(packetsplit[3], out MapNpcId)) { return; } MapNpc npc = Session.CurrentMap.Npcs.FirstOrDefault(n => n.MapNpcId.Equals(MapNpcId)); if (npc == null) { return; } if (npc.Npc.Drops.Any(s => s.MonsterVNum != null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(Session.Character.GenerateDelay(5000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.VNumRequired > 0 && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(Session.Character.GenerateDelay(6000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.MaxHP == 0 && npc.Npc.Drops.All(s => s.MonsterVNum == null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { // #guri^710^X^Y^MapNpcId Session.SendPacket(Session.Character.GenerateDelay(5000, 1, $"#guri^710^162^85^{npc.MapNpcId}")); } else if (!string.IsNullOrEmpty(npc.GetNpcDialog())) { Session.SendPacket(npc.GetNpcDialog()); } } } }
private void ExecuteHandler(ClientSession session) { if (!session.HasCurrentMapInstance) { return; } if (Type == 1) { // User Shop KeyValuePair <long, MapShop> shopList = session.CurrentMapInstance.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(OwnerId)); session.LoadShopItem(OwnerId, shopList); } else { // Npc Shop , ignore if has drop MapNpc npc = session.CurrentMapInstance.Npcs.Find(n => n.MapNpcId.Equals((int)OwnerId)); if (npc == null) { return; } session.Character.OnTalk(new TalkEventArgs(npc)); if (npc.Npc.Drops.Any(s => s.MonsterVNum != null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { session.SendPacket(UserInterfaceHelper.GenerateDelay(5000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.VNumRequired > 0 && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { session.SendPacket(UserInterfaceHelper.GenerateDelay(6000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.MaxHP == 0 && npc.Npc.Drops.All(s => s.MonsterVNum == null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { session.SendPacket(UserInterfaceHelper.GenerateDelay(5000, 1, $"#guri^710^{npc.MapX}^{npc.MapY}^{npc.MapNpcId}")); // #guri^710^DestinationX^DestinationY^MapNpcId } else if (!string.IsNullOrEmpty(npc.GetNpcDialog())) { session.SendPacket(npc.GetNpcDialog()); } } }
public void ShowShop(string packet) { Logger.Debug(packet, Session.SessionId); string[] packetsplit = packet.Split(' '); long owner; int mode; if (packetsplit.Length > 2) { if (!int.TryParse(packetsplit[2], out mode)) { return; } if (mode == 1)// User Shop { if (packetsplit.Length <= 3) { return; } if (!long.TryParse(packetsplit[3], out owner)) { return; } KeyValuePair <long, MapShop> shopList = Session.CurrentMap.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(owner)); LoadShopItem(owner, shopList); } else// Npc Shop , ignore if has drop { short MapNpcId = -1; if (!short.TryParse(packetsplit[3], out MapNpcId)) { return; } MapNpc npc = Session.CurrentMap.Npcs.FirstOrDefault(n => n.MapNpcId.Equals(MapNpcId)); NpcMonster mapobject = ServerManager.GetNpc(npc.NpcVNum); if (mapobject.Drops.Any(s => s.MonsterVNum != null) && mapobject.Race == 8 && (mapobject.RaceType == 7 || mapobject.RaceType == 5)) // mining mapobjects { Session.SendPacket(Session.Character.GenerateDelay(5000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (mapobject.VNumRequired > 0 && mapobject.Race == 8 && (mapobject.RaceType == 7 || mapobject.RaceType == 5)) // mapobject with required item to use { Session.SendPacket(Session.Character.GenerateDelay(6000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (mapobject.MaxHP == 0 && !mapobject.Drops.Any(s => s.MonsterVNum != null) && mapobject.Race == 8 && (mapobject.RaceType == 7 || mapobject.RaceType == 5)) // mapobject teleporter { Session.SendPacket(Session.Character.GenerateDelay(5000, 1, $"#guri^710^162^85^{npc.MapNpcId}")); // #guri^710^X^Y^MapNpcId } else if (!string.IsNullOrEmpty(npc?.GetNpcDialog())) { Session.SendPacket(npc.GetNpcDialog()); } } } }
/// <summary> /// npc_req packet /// </summary> /// <param name="requestNpcPacket"></param> public void ShowShop(RequestNpcPacket requestNpcPacket) { Logger.Debug(Session.Character.GenerateIdentity(), requestNpcPacket.ToString()); long owner = requestNpcPacket.Owner; if (!Session.HasCurrentMapInstance) { return; } if (requestNpcPacket.Type == 1) { // User Shop KeyValuePair <long, MapShop> shopList = Session.CurrentMapInstance.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(owner)); LoadShopItem(owner, shopList); } else { // Npc Shop , ignore if has drop MapNpc npc = Session.CurrentMapInstance.Npcs.FirstOrDefault(n => n.MapNpcId.Equals((int)requestNpcPacket.Owner)); if (npc == null) { return; } if (npc.Npc.Drops.Any(s => s.MonsterVNum != null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.VNumRequired > 0 && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(6000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.MaxHP == 0 && npc.Npc.Drops.All(s => s.MonsterVNum == null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 1, $"#guri^710^162^85^{npc.MapNpcId}")); // #guri^710^X^Y^MapNpcId } else if (!string.IsNullOrEmpty(npc.GetNpcDialog())) { Session.SendPacket(npc.GetNpcDialog()); } } }
public void ShowShop(string packet) { Logger.Debug(packet, Session.SessionId); // n_inv 1 2 0 0 0.0.302.7.0.990000. 0.1.264.5.6.2500000. 0.2.69.7.0.650000. 0.3.4106.0.0.4200000. -1 0.5.4240.0.0.11200000. 0.6.4240.0.5.24000000. 0.7.4801.0.0.6200000. 0.8.4240.0.10.32000000. 0.9.712.0.3.250000. 0.10.997.0.4.250000. 1.11.1895.4.16000.-1.-1 1.12.1897.6.18000.-1.-1 -1 1.14.1902.3.35000.-1.-1 1.15.1237.2.12000.-1.-1 -1 -1 1.18.1249.3.92000.-1.-1 0.19.4240.0.1.10500000. -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 string[] packetsplit = packet.Split(' '); if (packetsplit.Length > 2) { int mode; if (!int.TryParse(packetsplit[2], out mode)) { return; } if (mode == 1) { // User Shop if (packetsplit.Length <= 3) { return; } long owner; if (!long.TryParse(packetsplit[3], out owner)) { return; } KeyValuePair <long, MapShop> shopList = Session.CurrentMap.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(owner)); LoadShopItem(owner, shopList); } else { // Npc Shop , ignore if (IsMapObject) MapNpc npc = ServerManager.GetMap(Session.Character.MapId).Npcs.FirstOrDefault(n => n.MapNpcId.Equals(Convert.ToInt16(packetsplit[3]))); NpcMonster mapobject = ServerManager.GetNpc(npc.NpcVNum); if (!string.IsNullOrEmpty(npc?.GetNpcDialog()) && !mapobject.IsMapObject) { Session.Client.SendPacket(npc.GetNpcDialog()); } } } }
/// <summary> /// npc_req packet /// </summary> /// <param name="requestNpcPacket"></param> public void ShowShop(RequestNpcPacket requestNpcPacket) { long owner = requestNpcPacket.Owner; if (!Session.HasCurrentMapInstance) { return; } if (requestNpcPacket.Type == 1) { // User Shop KeyValuePair <long, MapShop> shopList = Session.CurrentMapInstance.UserShops.FirstOrDefault(s => s.Value.OwnerId.Equals(owner)); LoadShopItem(owner, shopList); } else { // Npc Shop , ignore if has drop MapNpc npc = Session.CurrentMapInstance.Npcs.FirstOrDefault(n => n.MapNpcId.Equals((int)requestNpcPacket.Owner)); if (npc == null) { return; } TeleporterDTO tp = npc.Teleporters?.FirstOrDefault(t => t?.Type == TeleporterType.TeleportOnMap); if (tp != null) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 1, $"#guri^710^{tp.MapX}^{tp.MapY}^{npc.MapNpcId}")); return; } tp = npc.Teleporters?.FirstOrDefault(t => t?.Type == TeleporterType.TeleportOnOtherMap); if (tp != null) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 1, $"#guri^711^{tp.TeleporterId}")); return; } #region Quest Session.Character.IncrementQuests(QuestType.Dialog1, npc.NpcVNum); Session.Character.IncrementQuests(QuestType.Dialog2, npc.NpcVNum); Session.Character.IncrementQuests(QuestType.Wear, npc.NpcVNum); Session.Character.IncrementQuests(QuestType.Brings, npc.NpcVNum); Session.Character.IncrementQuests(QuestType.Required, npc.NpcVNum); if (Session.Character.LastQuest.AddSeconds(1) > DateTime.Now) { return; } #endregion if (npc.Npc.Drops.Any(s => s.MonsterVNum != null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.VNumRequired > 0 && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(6000, 4, $"#guri^400^{npc.MapNpcId}")); } else if (npc.Npc.MaxHP == 0 && npc.Npc.Drops.All(s => s.MonsterVNum == null) && npc.Npc.Race == 8 && (npc.Npc.RaceType == 7 || npc.Npc.RaceType == 5)) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateDelay(5000, 1, $"#guri^710^162^85^{npc.MapNpcId}")); // #guri^710^X^Y^MapNpcId } else if (!string.IsNullOrEmpty(npc.GetNpcDialog())) { Session.SendPacket(npc.GetNpcDialog()); } } }