public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(9)) { yi .Text("Hello, I am the assistant of the mine union. If you want to enter the mine cave, I can send you.") .Link("Yes, please.", 1) .Link("Just passing by.", 255) .Finish(); player.Send(yi); } break; } case 1: { player.Teleport(155, 94, 1028); break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(7)) { yi .Text("This is the way to the Desert City. Although you are excellent, it is dangerous to go ahead.") .Link("I want to go.", 1) .Link("I think I will stay here.", 255) .Finish(); player.Send(yi); } break; } case 1: { player.Teleport(971, 666, 1000); break; } } } catch { return(false); } return(true); }
public static void DecryptSkill(Player player, ref MsgInteract packet, out Skill skill) { byte[] buffer = packet; var id = Convert.ToUInt16(((long)buffer[24] & 0xFF) | (((long)buffer[25] & 0xFF) << 8)); id ^= 0x915d; id ^= (ushort)player.UniqueId; id = (ushort)(id << 0x3 | id >> 0xd); id -= 0xeb42; long x = (buffer[16] & 0xFF) | ((buffer[17] & 0xFF) << 8); long y = (buffer[18] & 0xFF) | ((buffer[19] & 0xFF) << 8); x = x ^ (player.UniqueId & 0xffff) ^ 0x2ed6; x = ((x << 1) | ((x & 0x8000) >> 15)) & 0xffff; x |= 0xffff0000; x -= 0xffff22ee; y = y ^ (player.UniqueId & 0xffff) ^ 0xb99b; y = ((y << 5) | ((y & 0xF800) >> 11)) & 0xffff; y |= 0xffff0000; y -= 0xffff8922; var target = BitConverter.ToInt32(buffer, 12); target = (int)((((target & 0xffffe000) >> 13) | ((target & 0x1fff) << 19)) ^ 0x5F2D2463 ^ player.UniqueId) - 0x746F4AE6; packet.TargetUniqueId = target; packet.X = (ushort)x; packet.Y = (ushort)y; skill = player.Skills[(SkillId)id]; BufferPool.RecycleBuffer(buffer); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(60)) { yi .Text("Modify me.") .Link("Link me.", 1) .Link("F**k me.", 255) .Finish(); player.Send(yi); } break; } case 1: { break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(20)) { yi .Text("Welcome to Twin City Furniture Store. Currently, you have limited selection but more furniture will come in soon.") .Link("I want to have a look.", 1) .Link("I am not interested.", 255) .Finish(); player.Send(yi); } break; } case 1: { player.Teleport(42, 42, 1511); break; } } return(true); } catch { return(false); } }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(32)) { yi .Text("Do you want to get teleported to TwinCity?") .Link("Yes, please.", 1) .Link("No, thank you.", 255) .Finish(); player.Send(yi); } break; } case 1: { player.Teleport(400, 400, 1002); break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(79)) { yi .Text("Would you like to get teleported to StoneCity?") .Link("Yes, please", 1) .Link("No, thanks.", 255) .Finish(); player.Send(yi); } break; } case 1: { player.Teleport(435, 337, 1077); break; } } } catch { return(false); } return(true); }
public static void Handle(Player account, byte[] buffer) { MsgRemoteText packet = buffer; foreach (var mapObject in GameWorld.Maps.Values.SelectMany(value => value.Entities.Values).OfType <Player>()) { //mapObject.Send(MsgText.CreateFor(packet.Header, Constants.ALLUSERS, packet.Message, MsgTextType.Service)); } }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { if (player.IsWaterTaoist()) { using (var yi = new NpcDialog(60)) { yi .Text("Hello " + player.Name.TrimEnd('\0') + ", I am here to sell you a WindSpell for 100 silver, are you interested?") .Link("Yes, I am.", 1) .Link("No, I am not.", 255) .Finish(); player.Send(yi); } } break; } case 1: { if (player.IsWaterTaoist() && player.Money >= 100) { player.Money -= 100; var windSpell = Item.Factory.Create(ItemNames.SpaceMark3); player.Inventory.AddItem(windSpell); } else { using (var yi = new NpcDialog(60)) { yi .Text("Sorry, you do not have enough silver.") .Link("That is ok.", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(9)) { yi .Text( "Hello, I am the entrance to the Phoenix Castle mine. Would you like to be teleported there?") .Link("Yes, please.", 1) .Link("No, thanks.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Level >= 40) { player.Teleport(28, 71, 1025); } else { using (var yi = new NpcDialog(9)) { yi .Text( "Sorry, you must be at least level 40 to be able to enter this mine.") .Link("Sorry...", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static void Handle(Player player, byte[] packet) { Player = player; Amount = BitConverter.ToUInt16(packet, 10); for (var i = 0; i < Amount; i++) { UniqueIds.Add(BitConverter.ToUInt32(packet, 12 + i * 4)); } Process(); BufferPool.RecycleBuffer(packet); }
public static void Handle(Player player, byte[] packet) { AccountId = Encoding.GetEncoding(1252).GetString(packet, 4, 16).Trim((char)0x0000); CharName = Encoding.GetEncoding(1252).GetString(packet, 20, 16).Trim((char)0x0000); Model = BitConverter.ToUInt16(packet, 52); Job = (byte)BitConverter.ToUInt16(packet, 54); NameAvailable = GameWorld.NameAvailable(CharName); Player = SelectorSystem.GetOrCreatePlayer(AccountId, player.Password); Player.GameSocket = player.GameSocket; Process(); BufferPool.RecycleBuffer(packet); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(32)) { yi .Text("The Ancient Devil was sealed in this island. The seal's power is very weak now. The Devil is gonna wake up. Can you help us?") .Link("How can I help you?", 1) .Link("Just passing by.", 255) .Finish(); player.Send(yi); } break; } case 1: { using (var yi = new NpcDialog(32)) { yi .Text("First, get 5 Amulets. Each amulet is protected by a Guard of different profession. Only if you are of the same profession, you can challenge the Guard.") .Text(" So you had better ask your friend for help. After you gather the 5 Amulets, click on the yellow marks on the ground to bring out the devil and ") .Text("it is guards. Enable PK mode to kill them. Will you help us?") .Link("Yes, I shall try.", 2) .Link("Let me think it over.", 255) .Finish(); player.Send(yi); } break; } case 2: { player.Teleport(188, 232, 1082); break; } } } catch { return(false); } return(true); }
public static void Handle(Player player, byte[] buffer) { try { fixed(byte *p = buffer) { var packet = *(MsgFriend *)p; BufferPool.RecycleBuffer(buffer); switch (packet.Action) { case MsgFriendActionType.None: break; case MsgFriendActionType.FriendApply: FriendApply(player, ref packet); break; case MsgFriendActionType.FriendBreak: BreakFrienship(player, ref packet); break; case MsgFriendActionType.GetInfo: GetInfo(player, ref packet); break; case MsgFriendActionType.EnemyOnline: break; case MsgFriendActionType.EnemyOffline: break; case MsgFriendActionType.EnemyDel: break; case MsgFriendActionType.EnemyAdd: break; default: Output.WriteLine($"MsgFriend Subtype not implemented: {Enum.GetName(typeof(MsgFriendActionType), packet.Action)}"); Output.WriteLine(((byte[])packet).HexDump()); break; } } } catch (Exception e) { Output.WriteLine(e); } }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(37)) { yi .Text("What can I do for you?") .Link("Visit the jail.", 1) .Link("Just passing by.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Money >= 1000) { player.Money -= 1000; player.Teleport(29, 72, 6000); } else { using (var yi = new NpcDialog(37)) { yi .Text("Sorry, you do not have 1000 silvers.") .Link("I see.", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(60)) { yi .Text( "Hello my soldier, in order to proceed to the next stage you need to collect 5 SoulStones as a charge for my teleportation service.") .Link("I have collected them.", 1) .Link("That is ok.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Inventory.HasItem(ItemNames.SoulStone, 5)) { player.Teleport(230, 330, 2022); //TODO: Add the global message and stageone reward } else { using (var yi = new NpcDialog(60)) { yi .Text("Are you trying to fool me? You have NOT collected them yet.") .Link("I am sorry...", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static byte[] Create(Player member) { var packet = new MsgSynMemberInfo { Size = (ushort)sizeof(MsgSynMemberInfo), Id = 1112, Donation = member.GuildDonation, Rank = member.GuildRank, }; for (byte i = 0; i < member.Name.Length; i++) { packet.Name[i] = (byte)member.Name[i]; } return(packet); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(20)) { yi .Text("If you are level 20 or above, you may level up at the training grounds. it does not consume any durability, life and mana. Do you want me to teleport you there?") .Link("Please teleport me there.", 1) .Link("Just passing by.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Money >= 1000) { player.Money -= 1000; player.Teleport(215, 217, 1039); } else { using (var yi = new NpcDialog(20)) { yi .Text("Sorry, you do not have enough gold.") .Link("I see.", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(32)) { yi .Text("Would you like to visit the BotJail?") .Link("Yes, please.", 1) .Link("No, thank you.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.PkPoints <= 30) { player.Teleport(29, 71, 6001); } else { using (var yi = new NpcDialog(32)) { yi .Text("Sorry, your PkPoints are above 30, so that I can not let you visit the BotJail.") .Link("No, thank you.", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(37)) { yi .Text("You can not leave here unless you have paid for your crimes.") .Link("Ok! Let me get out from here!", 1) .Link("I would rather rot in hell!", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.PkPoints >= 30) { using (var yi = new NpcDialog(37)) { yi .Text("You must stay and think about what you've done!") .Link("I shall..", 255) .Finish(); player.Send(yi); } } else { player.Teleport(517, 352, 1002); } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(32)) { yi .Text("Do you want to get teleported to the next floor?") .Link("Yes, please.", 1) .Link("No, thank you.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Inventory.HasItem(ItemNames.SkyToken)) { player.Inventory.RemoveItem(ItemNames.SkyToken); player.Teleport(104, 108, 1352); } else { using (var yi = new NpcDialog(32)) { yi .Text("Sorry, you do not have a SkyToken.") .Link("I am sorry.", 255) .Finish(); player.Send(yi); } } break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { if (player.Inventory.HasItem(ItemNames.CommandToken)) { using (var yi = new NpcDialog(60)) { yi .Text("Would you like to leave this tactic?") .Link("Yes, please.", 1) .Link("No, thanks.", 255) .Finish(); player.Send(yi); } } else { using (var yi = new NpcDialog(60)) { yi .Text("Sorry, you do not have the token from this tactic.") .Link("I am sorry...", 255) .Finish(); player.Send(yi); } } break; } case 1: { player.Teleport(025, 025, 1042); break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(7)) { yi .Text("Our shop is famous for dyeing, you can have your equipment dyed there, you have a wide choice of colors. One Meteor will be charged before you try the colors. Would you like to try?") .Link("Yes, please.", 1) .Link("I am not interested.", 255) .Finish(); player.Send(yi); } break; } case 1: { if (player.Inventory.HasItem(ItemNames.Meteor)) { player.Inventory.RemoveItem(ItemNames.Meteor); player.Teleport(22, 26, 1008); } else { using (var yi = new NpcDialog(7)) { yi .Text("Sorry, you do not have a Meteor.") .Link("I am sorry.", 255) .Finish(); player.Send(yi); } } break; } } return(true); } catch { return(false); } }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { if (!player.Reborn) { // if(Player.Level >=120 && Player.ProfessionLevel == 5 || (Player.Class == 135 && Player.Level >= 110)) using (var yi = new NpcDialog(35)) { yi .Text("Modify me.") .Link("Link me.", 1) .Link("F**k me.", 255) .Finish(); player.Send(yi); } } else { using (var yi = new NpcDialog(35)) { yi .Text("You are already a reborned character, I can not help you anymore.") .Link("That is ok.", 255) .Finish(); player.Send(yi); } } break; } case 1: { break; } } } catch { return(false); } return(true); }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { if (player.Inventory.RemoveItem(ItemNames.SoulJade)) { using (var banzai = new NpcDialog(20)) { banzai .Text( "Thanks for helping me! I shall reward you with a MoonBox to show you my appreciation!") .Link("Oh! Thanks a lot!.", 255) .Finish(); player.Send(banzai); } var moonBox = Item.Factory.Create(ItemNames.Moonbox); player.Inventory.AddItem(moonBox); player.Teleport(025, 025, 1042); } else { using (var banzai = new NpcDialog(20)) { banzai .Text("Sorry, you do not have a SoulJade.") .Link("That is ok.", 255) .Finish(); player.Send(banzai); } player.Teleport(025, 025, 1042); } break; } } } catch { return(false); } return(true); }
private static void BreakFrienship(Player player, ref MsgFriend packet) { if (player.Friends.Contains(packet.UniqId)) { player.Friends.Remove(packet.UniqId); } if (GameWorld.Find(packet.UniqId, out Player found)) { if (found.Friends.Contains(player.UniqueId)) { found.Friends.Remove(player.UniqueId); } found.Send(Create(player, MsgFriendActionType.FriendBreak, MsgFriendStatusType.Offline)); } player.Send(Create(found, MsgFriendActionType.FriendBreak, MsgFriendStatusType.Offline)); }
public static byte[] Create(Player target, MsgFriendActionType action, MsgFriendStatusType status) { var packet = new MsgFriend { Size = (ushort)sizeof(MsgFriend), Id = 1019, Action = action, IsOnline = status, Unknow1 = 0, Unknow2 = 0, UniqId = target.UniqueId, }; for (byte i = 0; i < target.Name.Length; i++) { packet.Name[i] = (byte)target.Name[i]; } return(packet); }
public bool ExecuteDialog(Player player, uint npcId, byte control, string input) { try { switch (control) { case 0: { player.Teleport(438, 377, 1002); break; } } return(true); } catch { return(false); } }
private static async void Process() { if (VerifyJob(Job) && VerifyModel(Model) && VerifyName(CharName) && NameAvailable) { var character = CreateCharacter(); character.GameSocket = Player.GameSocket; character.GameSocket.Ref = character; character.AccountId = Player.AccountId; character.Password = Player.Password; Player = character; Player.LoginType = LoginType.Login; SelectorSystem.AddCharacterTo(Player.AccountId, Player); Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, Constants.AnswerOk, MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + Constants.AnswerOk.Length); } else { Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, "Taken or invalid name. (A-Y | 0-9)", MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + "Taken or invalid name. (A-Y | 0-9)".Length); } }
public static bool Execute(Player player, int npcId, byte control, string input) { try { switch (control) { case 0: { using (var yi = new NpcDialog(22)) { yi .Text("Hello " + player.Name.TrimEnd('\0') + ", Welcome to Yi!") .Text("Please select a Face - free of charge - from the guy next to me") .Link("Will do!", 1) .Finish(); player.Send(yi); } break; } case 1: { using (var yi = new NpcDialog(22)) { yi .Text("Great! See you around!") .Link("Yea! See you later!", 255) .Finish(); player.Send(yi); } break; } } return(true); } catch { return(false); } }