public void addFriend(long name) { Player friend = null; if (friends.Count >= 200) { player.getPackets().sendMessage("Your friends list is full."); return; } if (friends.Contains((long)name)) { player.getPackets().sendMessage(misc.formatPlayerNameForDisplay(misc.longToPlayerName(name)) + " is already on your friends list."); return; } friends.Add((long)name); foreach (Player p in Server.getPlayerList()) { if (p != null) { if (p.getLoginDetails().getLongName() == name) { friend = p; } } } if (friend != null) { if (privateStatus != STATUS.OFF) { friend.getFriends().registered(player); } Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername()); if (clan != null) { clan.getOwnerFriends().Add(name); if (clan.getUser(friend) != null) { if (clan.getUser(friend).getClanRights() == Clan.ClanRank.NO_RANK) { clan.getUser(friend).setClanRights(Clan.ClanRank.FRIEND); Server.getClanManager().updateClan(clan); } } } if (friend.getFriends().getPrivateStatus() == STATUS.OFF || (friend.getFriends().getPrivateStatus() == STATUS.FRIENDS && !friend.getFriends().isFriend(player))) { return; } player.getPackets().sendFriend(name, getWorld(name)); } }
public void openEnterPin() { if (bankPinRemoved) { openPinSettings(9); return; } if (bankPin == null || changingPin) { player.getPackets().showChildInterface(13, 29, false); } else if (bankPin != null && !changingPin) { player.getPackets().setRightClickOptions(2, 851997, -1, -1); } if (lastDeletionRequest != 0) { int daysLeft = recoveryDaysRequired - TimeSpan.FromTicks(lastDeletionRequest).Days; player.getPackets().modifyText("Your Bank PIN will be deleted in another " + daysLeft + " days.", 13, 31); } else { player.getPackets().modifyText("Bank of " + player.getLoginDetails().getUsername(), 13, 31); } scrambleNumbers(); player.getPackets().displayInterface(13); }
private void unregistered(Player p) { long n = p.getLoginDetails().getLongName(); if (friends.Contains(n)) { player.getPackets().sendFriend(n, 0); } }
private bool isFriend(Player player) { long n = player.getLoginDetails().getLongName(); if (friends.Contains(n)) { return(true); } return(false); }
public Patch patchExists(Player p, int index) { foreach(Patch patch in patches) { if (patch.getOwnerName().Equals(p.getLoginDetails().getUsername())) { if (patch.getPatchIndex() == index) { return patch; } } } return null; }
private void openTrade() { player.getPackets().displayInterface(335); player.getPackets().displayInventoryInterface(336); player.getPackets().setRightClickOptions(1278, (335 * 65536) + 30, 0, 27); player.getPackets().setRightClickOptions(1026, (335 * 65536) + 32, 0, 27); player.getPackets().setRightClickOptions(1278, (336 * 65536), 0, 27); player.getPackets().setRightClickOptions(2360446, (336 * 65536), 0, 27); object[] opts1 = new object[] { "", "", "", "Value", "Remove X", "Remove All", "Remove 10", "Remove 5", "Remove 1", -1, 0, 7, 4, 90, 21954590 }; object[] opts2 = new object[] { "", "", "Lend", "Value", "Offer X", "Offer All", "Offer 10", "Offer 5", "Offer 1", -1, 0, 7, 4, 93, 22020096 }; object[] opts3 = new object[] { "", "", "", "", "", "", "", "", "Value", -1, 0, 7, 4, 90, 21954592 }; player.getPackets().sendClientScript(150, opts1, "IviiiIsssssssss"); player.getPackets().sendClientScript(150, opts2, "IviiiIsssssssss"); player.getPackets().sendClientScript(695, opts3, "IviiiIsssssssss"); player.getPackets().modifyText("Trading with: " + player2.getLoginDetails().getUsername(), 335, 15); player.getPackets().modifyText(player2.getLoginDetails().getUsername() + " has " + player2.getInventory().getTotalFreeSlots() + " free inventory slots.", 335, 21); player.getPackets().modifyText("", 335, 36); refreshTrade(); }
public void execute(Player player, string[] arguments) { if(arguments.Length == 0) { player.getPackets().sendMessage("[Yell command]: what are you expecting.. to yell blank message?"); return; } string yellMsg = string.Join(" ", arguments); foreach(Player p in Server.getPlayerList()) { if (p != null) { p.getPackets().sendMessage(player.getLoginDetails().getUsername() + ": " + yellMsg); } } }
public void updateSearchItem(int item) { p.getPackets().sendConfig(1109, item); p.getPackets().sendConfig(1110, 0); ItemData.Item def = ItemData.forId(item); if (def == null) { return; } p.getPackets().sendConfig(1109, item); p.getPackets().sendConfig(1114, def.getPrice().getNormalPrice()); p.getPackets().sendConfig(1116, def.getPrice().getMaximumPrice()); p.getPackets().sendConfig(1115, def.getPrice().getMinimumPrice()); p.getPackets().sendConfig(1111, def.getPrice().getNormalPrice()); currentOffer = new BuyOffer(slot, p.getLoginDetails().getUsername()); currentOffer.setTotalAmount(0); currentOffer.setItem(item); currentOffer.setPriceEach(def.getPrice().getNormalPrice()); p.getPackets().sendInterface(0, 752, 6, 137); // Removes the item search }
public static void showArnorDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 370: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 371; break; case 371: p.getPackets().sendNPCHead(1361, 241, 2); p.getPackets().modifyText("Arnor", 241, 3); p.getPackets().modifyText("Of course, follow me.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 372; break; case 372: travel(p, 3, true); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showSquireDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 340: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 341; break; case 341: p.getPackets().sendNPCHead(3781, 241, 2); p.getPackets().modifyText("Squire", 241, 3); p.getPackets().modifyText("Certainly! Please visit Pest Control again soon.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 342; break; case 342: travel(p, 2, true); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showJarvaldDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 300: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 301; break; case 301: p.getPackets().sendNPCHead(2436, 241, 2); p.getPackets().modifyText("Jarvald", 241, 3); p.getPackets().modifyText("No problem. Off we go!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 302; break; case 302: travel(p, 1, true); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showCaptainBarnabyDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 410: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 411; break; case 411: p.getPackets().sendNPCHead(4962, 241, 2); p.getPackets().modifyText("Captain Barnaby", 241, 3); p.getPackets().modifyText("Yes! it's freezing here, let's go!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 412; break; case 412: travel(p, 4, true); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showCanifisSailorDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 280: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 281; break; case 281: p.getPackets().sendNPCHead(1304, 241, 2); p.getPackets().modifyText("Sailor", 241, 3); p.getPackets().modifyText("As you wish, i'll fetch the boat.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 282; break; case 282: travel(p, 0, true); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showBentleyDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 240: p.getPackets().sendNPCHead(4540, 241, 2); p.getPackets().modifyText("Captain Bentley", 241, 3); p.getPackets().modifyText("Well, hello there " + p.getLoginDetails().getUsername() + ", ready to set sail?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 241; break; case 241: p.getPackets().modifyText("I'd like to travel to..", 235, 1); p.getPackets().modifyText("Canifis", 235, 2); p.getPackets().modifyText("Waterbirth Isle", 235, 3); p.getPackets().modifyText("Pest Control", 235, 4); p.getPackets().modifyText("Warrior Guild", 235, 5); p.getPackets().modifyText("Fremmenik Shore", 235, 6); p.getPackets().sendChatboxInterface2(235); newStatus = 242; break; case 242: // Canifis travel(p, 0, false); break; case 243: // Waterbirth isle travel(p, 1, false); break; case 244: // Pest control travel(p, 2, false); break; case 245: // Warrior guild int attackLevel = p.getSkills().getMaxLevel(Skills.SKILL.ATTACK); int strengthLevel = p.getSkills().getMaxLevel(Skills.SKILL.STRENGTH); bool hasA99 = attackLevel == 99 || strengthLevel == 99; if (((attackLevel + strengthLevel) >= 130) || hasA99) { travel(p, 3, false); } else { p.getPackets().sendNPCHead(4540, 243, 2); p.getPackets().modifyText("Captain Bentley", 243, 3); p.getPackets().modifyText("I'm sorry " + p.getLoginDetails().getUsername() + ", I cannot take you there.", 243, 4); p.getPackets().modifyText("A combined Attack & Strength level of 130 is ", 243, 5); p.getPackets().modifyText("required to use The Warrior Guild.", 243, 6); p.getPackets().animateInterface(9827, 243, 2); p.getPackets().sendChatboxInterface2(243); } break; case 246: // Fremmenik shore travel(p, 4, false); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public bool savePlayer(Player p) { if (p == null) return false; try { string username = p.getLoginDetails().getUsername().ToLower(); /* Character saving code goes here */ XmlTextWriter writer = new XmlTextWriter(misc.getServerPath() + @"\accounts\" + username + ".xml", null); writer.Formatting = Formatting.Indented; writer.WriteStartElement("Player"); writer.WriteStartElement("Login"); writer.WriteElementString("Password", p.getLoginDetails().getPassword()); writer.WriteElementString("Rights", p.getRights().ToString()); writer.WriteElementString("BankPin", p.getBank().getBankPin()); writer.WriteEndElement(); writer.WriteStartElement("Position"); writer.WriteElementString("X", p.getLocation().getX().ToString()); writer.WriteElementString("Y", p.getLocation().getY().ToString()); writer.WriteElementString("Z", p.getLocation().getZ().ToString()); writer.WriteEndElement(); writer.WriteStartElement("Settings"); writer.WriteElementString("RunEnergy", p.getRunEnergy().ToString()); writer.WriteStartElement("PrivacySettings"); writer.WriteElementString("Public", p.getFriends().getPrivacyOption(0).ToString()); writer.WriteElementString("Private", p.getFriends().getPrivacyOption(1).ToString()); writer.WriteElementString("Trade", p.getFriends().getPrivacyOption(2).ToString()); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteStartElement("Friends"); foreach(long friend in p.getFriends().getFriendsList()) writer.WriteElementString("Friend", friend.ToString()); writer.WriteEndElement(); writer.WriteStartElement("Ignores"); foreach (long ignore in p.getFriends().getIgnoresList()) writer.WriteElementString("Ignore", ignore.ToString()); writer.WriteEndElement(); writer.WriteStartElement("Stats"); foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL))) { writer.WriteStartElement(skill.ToString()); //skill name. writer.WriteElementString("CurrentLevel", p.getSkills().getCurLevel(skill).ToString()); writer.WriteElementString("XP", p.getSkills().getXp(skill).ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); Item item; writer.WriteStartElement("EquipmentItems"); foreach (ItemData.EQUIP equip in Enum.GetValues(typeof(ItemData.EQUIP))) { if (equip == ItemData.EQUIP.NOTHING) continue; item = p.getEquipment().getSlot(equip); if (item.getItemId() == -1) continue; //empty slot. writer.WriteStartElement(equip.ToString()); writer.WriteElementString("Id", item.getItemId().ToString()); writer.WriteElementString("Amount", item.getItemAmount().ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement("InventoryItems"); for (int i = 0; i < Inventory.MAX_INVENTORY_SLOTS; i++) { item = p.getInventory().getSlot(i); if (item.getItemId() == -1) continue; //empty slot. writer.WriteStartElement("Item"); writer.WriteElementString("Slot", i.ToString()); writer.WriteElementString("Id", item.getItemId().ToString()); writer.WriteElementString("Amount", item.getItemAmount().ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement("BankItems"); for (int i = 0; i < Bank.MAX_BANK_SLOTS; i++) { item = p.getBank().getSlot(i); if (item.getItemId() == -1) continue; //empty slot. writer.WriteStartElement("Item"); writer.WriteElementString("Slot", i.ToString()); writer.WriteElementString("Id", item.getItemId().ToString()); writer.WriteElementString("Amount", item.getItemAmount().ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndElement(); //Write the XML to file and close the writer writer.Close(); } catch (Exception) { return false; } return true; }
public void recieveWinnings(Player p) { if (!winner.Equals(p)) { misc.WriteError(p.getLoginDetails().getUsername() + " tried to claim stake winnings that weren't his."); return; } if (status != 8) { return; } for (int i = 0; i < winnings.Length; i++) { if (winnings[i] != null) { if (!player.getInventory().addItem(winnings[i].getItemId(), winnings[i].getItemAmount())) { misc.WriteError("Possible stake winnings dupe " + player.getLoginDetails().getUsername()); } else { winnings[i] = null; } } } }
public void removeItem(int slot, int amount) { if (status > 2 || items[slot] == null) { return; } int itemId = getItemInSlot(slot); int tradeSlot = findItem(itemId); bool stackable = ItemData.forId(itemId).isStackable(); if (tradeSlot == -1) { misc.WriteError("user tried to remove non-existing item from trade! " + player.getLoginDetails().getUsername()); return; } if (amount > getItemAmount(itemId)) { amount = getItemAmount(itemId); } if (!stackable) { for (int i = 0; i < amount; i++) { tradeSlot = findItem(itemId); if (player.getInventory().addItem(itemId, amount)) { items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount); if (getAmountInSlot(tradeSlot) <= 0) { items[tradeSlot] = null; } player2.getPackets().tradeWarning(tradeSlot); } } if (status == 2 || player2.getTrade().getStatus() == 2) { this.status = 1; player2.getTrade().setStatus(1); player.getPackets().modifyText("", 335, 36); player2.getPackets().modifyText("", 335, 36); } refreshTrade(); } else { tradeSlot = findItem(itemId); if (player.getInventory().addItem(itemId, amount)) { items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount); if (getAmountInSlot(tradeSlot) <= 0) { items[tradeSlot] = null; } player2.getPackets().tradeWarning(tradeSlot); } } if (status == 2 || player2.getTrade().getStatus() == 2) { this.status = 1; player2.getTrade().setStatus(1); player.getPackets().modifyText("", 335, 36); player2.getPackets().modifyText("", 335, 36); } refreshTrade(); tradeModified = true; }
public ReturnCode loadPlayer(Connection connection) { if (connection == null) return ReturnCode.COULD_NOT_COMPLETE; LoginDetails loginDetails = connection.getLoginDetails(); if (loginDetails == null || loginDetails.getUsername() == "" || loginDetails.getLongName() == 0) return ReturnCode.INVALID_PASSWORD;//ReturnCode.INVALID_PASSWORD; foreach (char c in loginDetails.getUsername().ToCharArray()) { if (!char.IsLetterOrDigit(c) && !char.IsWhiteSpace(c)) return ReturnCode.INVALID_PASSWORD; } Player createdPlayer = new Player(connection); connection.setPlayer(createdPlayer); //player finally created. createdPlayer.setLoginDetails(loginDetails); if (!File.Exists(misc.getServerPath() + @"\accounts\" + loginDetails.getUsername() + ".xml")) { createdPlayer.setRights(2); //all new users admins atm (change later). createdPlayer.setLocation(new Location(2323, 3174, 0)); return ReturnCode.LOGIN_OK; //new user. } //Yeah reading XML files is a bit h**o. try { int temp; long lTemp; string username = createdPlayer.getLoginDetails().getUsername().ToLower(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(misc.getServerPath() + @"\accounts\" + username + ".xml"); XmlNode xmlNode = xmlDocument.SelectSingleNode("/Player/Login/Password"); if (xmlNode == null) return ReturnCode.INVALID_PASSWORD; //no password node. if (createdPlayer.getLoginDetails().getPassword() != xmlNode.InnerText) return ReturnCode.INVALID_PASSWORD; XmlNode loginElement = xmlDocument.SelectSingleNode("/Player/Login"); if(loginElement != null && loginElement.HasChildNodes) { XmlNodeList childs = loginElement.ChildNodes; foreach (XmlElement element in childs) { switch (element.Name) { case "Rights": if (!int.TryParse(element.InnerText, out temp)) temp = 0; createdPlayer.setRights(temp); break; case "BankPin": if (element.InnerText == "") continue; createdPlayer.getBank().setBankPin(element.InnerText); break; } } } loginElement = xmlDocument.SelectSingleNode("/Player/Position"); if (loginElement != null && loginElement.HasChildNodes) { XmlNodeList childs = loginElement.ChildNodes; Location location = new Location(); foreach (XmlElement element in childs) { switch (element.Name) { case "X": if (!int.TryParse(element.InnerText, out temp)) { createdPlayer.setLocation(Constants.HOME_SPAWN_LOCATION); break; } location.setX(temp); break; case "Y": if (!int.TryParse(element.InnerText, out temp)) { createdPlayer.setLocation(Constants.HOME_SPAWN_LOCATION); break; } location.setY(temp); break; case "Z": if (!int.TryParse(element.InnerText, out temp)) temp = 0; location.setZ(temp); break; } } createdPlayer.setLocation(location); if (Location.atDuelArena(createdPlayer.getLocation())) DuelSession.teleportDuelArenaHome(createdPlayer); } xmlNode = xmlDocument.SelectSingleNode("/Player/Settings/RunEnergy"); if (xmlNode == null) { temp = 100; } else { if (!int.TryParse(xmlNode.InnerText, out temp)) temp = 100; } createdPlayer.setRunEnergyLoad(temp); loginElement = xmlDocument.SelectSingleNode("/Player/Settings/PrivacySettings"); if (loginElement != null && loginElement.HasChildNodes) { XmlNodeList childs = loginElement.ChildNodes; Friends.STATUS publicStatus = Friends.STATUS.ON, privateStatus = Friends.STATUS.ON, tradeStatus = Friends.STATUS.ON; foreach (XmlElement element in childs) { switch (element.Name) { case "Public": publicStatus = (Friends.STATUS)Enum.Parse(typeof(Friends.STATUS), element.InnerText, true); break; case "Private": privateStatus = (Friends.STATUS)Enum.Parse(typeof(Friends.STATUS), element.InnerText, true); break; case "Trade": tradeStatus = (Friends.STATUS) Enum.Parse(typeof(Friends.STATUS), element.InnerText, true); break; } } createdPlayer.getFriends().setPrivacyOptions(publicStatus, privateStatus, tradeStatus); } loginElement = xmlDocument.SelectSingleNode("/Player/Friends"); if (loginElement != null && loginElement.HasChildNodes) { XmlNodeList childs = loginElement.ChildNodes; //number of Friends foreach (XmlElement element in childs) { if(element.Name == "Friend") { if(long.TryParse(element.InnerText, out lTemp)) createdPlayer.getFriends().getFriendsList().Add(lTemp); } } } loginElement = xmlDocument.SelectSingleNode("/Player/Ignores"); if (loginElement != null && loginElement.HasChildNodes) { XmlNodeList childs = loginElement.ChildNodes; //number of Friends foreach (XmlElement element in childs) { if (element.Name == "Ignore") { if (long.TryParse(element.InnerText, out lTemp)) createdPlayer.getFriends().getIgnoresList().Add(lTemp); } } } loginElement = xmlDocument.SelectSingleNode("/Player/Stats"); if (loginElement != null && loginElement.HasChildNodes) { XmlNode skillNode; foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL))) { skillNode = loginElement.SelectSingleNode("/Player/Stats/" + skill.ToString()); foreach (XmlElement element in skillNode.ChildNodes) { //CurrentLevel/XP switch (element.Name) { case "CurrentLevel": if (!int.TryParse(element.InnerText, out temp)) { if (skill != Skills.SKILL.HITPOINTS) createdPlayer.getSkills().setCurLevel(skill, 1); else createdPlayer.getSkills().setCurLevel(skill, 10); break; } createdPlayer.getSkills().setCurLevel(skill, temp); break; case "XP": if (!int.TryParse(element.InnerText, out temp)) { if (skill != Skills.SKILL.HITPOINTS) createdPlayer.getSkills().setXp(skill, 0); else createdPlayer.getSkills().setXp(skill, 1184); break; } createdPlayer.getSkills().setXp(skill, temp); break; } } } } loginElement = xmlDocument.SelectSingleNode("/Player/EquipmentItems"); if (loginElement != null && loginElement.HasChildNodes) { XmlNode skillNode; foreach (ItemData.EQUIP equip in Enum.GetValues(typeof(ItemData.EQUIP))) { if (equip == ItemData.EQUIP.NOTHING) continue; skillNode = loginElement.SelectSingleNode("/Player/EquipmentItems/" + equip.ToString()); if (skillNode == null) continue; int id = -1, amount = 0; foreach (XmlElement element in skillNode.ChildNodes) { switch (element.Name) { case "Id": if (!int.TryParse(element.InnerText, out id)) id = -1; break; case "Amount": if (!int.TryParse(element.InnerText, out amount)) amount = 0; break; } } if (id != -1) { createdPlayer.getEquipment().getEquipment()[(int)equip].setItemId(id); createdPlayer.getEquipment().getEquipment()[(int)equip].setItemAmount(amount); } } } loginElement = xmlDocument.SelectSingleNode("/Player/InventoryItems"); if (loginElement != null && loginElement.HasChildNodes) { int slot = -1, id = 0, amount = 0; foreach (XmlElement itemElement in loginElement.ChildNodes) //each item. { foreach (XmlElement itemDef in itemElement.ChildNodes) //each item. { switch (itemDef.Name) { case "Slot": if (!int.TryParse(itemDef.InnerText, out slot)) slot = -1; if (slot < 0 || slot > Inventory.MAX_INVENTORY_SLOTS) slot = -1; break; case "Id": if (!int.TryParse(itemDef.InnerText, out id)) slot = -1; break; case "Amount": if (!int.TryParse(itemDef.InnerText, out amount)) slot = -1; break; } } if (slot != -1) { createdPlayer.getInventory().getItems()[slot].setItemId(id); createdPlayer.getInventory().getItems()[slot].setItemAmount(amount); } } } loginElement = xmlDocument.SelectSingleNode("/Player/BankItems"); if (loginElement != null && loginElement.HasChildNodes) { int slot = -1, id = 0, amount = 0; foreach (XmlElement itemElement in loginElement.ChildNodes) //each item. { foreach (XmlElement itemDef in itemElement.ChildNodes) //each item. { switch (itemDef.Name) { case "Slot": if (!int.TryParse(itemDef.InnerText, out slot)) slot = -1; if (slot < 0 || slot > Inventory.MAX_INVENTORY_SLOTS) slot = -1; break; case "Id": if (!int.TryParse(itemDef.InnerText, out id)) slot = -1; break; case "Amount": if (!int.TryParse(itemDef.InnerText, out amount)) slot = -1; break; } } if (slot != -1) { createdPlayer.getBank().getBank()[slot].setItemId(id); createdPlayer.getBank().getBank()[slot].setItemAmount(amount); } } } return ReturnCode.LOGIN_OK; //new user. } catch (Exception e) { misc.WriteError(e.Message); return ReturnCode.COULD_NOT_COMPLETE; } }
public GEItem getOfferForSlot(Player p, int slot) { foreach (KeyValuePair<int, GEItem[]> buyOffer in buyOffers) { if (buyOffer.Value != null) { for (int i = 0; i < buyOffer.Value.Length; i++) { if (buyOffer.Value[i] != null) { if (buyOffer.Value[i].getPlayerName().Equals(p.getLoginDetails().getUsername()) && buyOffer.Value[i].getSlot() == slot) { return buyOffer.Value[i]; } } } } } foreach (KeyValuePair<int, GEItem[]> sellOffer in sellOffers) { if (sellOffer.Value != null) { for (int i = 0; i < sellOffer.Value.Length; i++) { if (sellOffer.Value[i] != null) { if (sellOffer.Value[i].getPlayerName().Equals(p.getLoginDetails().getUsername()) && sellOffer.Value[i].getSlot() == slot) { return sellOffer.Value[i]; } } } } } return null; }
private static void appendAppearanceUpdate(Player p, PacketBuilder updateBlock) { PacketBuilder playerProps = new PacketBuilder().setSize(Packet.Size.Bare); Appearance app = p.getAppearance(); playerProps.addByte((byte) (app.getGender() & 0xFF)); if((app.getGender() & 0x2) == 2) { playerProps.addByte((byte) 0); playerProps.addByte((byte) 0); } playerProps.addByte((byte) p.getPrayers().getPkIcon()); playerProps.addByte((byte) p.getPrayers().getHeadIcon()); if (!app.isInvisible()) { if(!app.isNpc()) { for(int i = 0; i < 4; i++) { if(p.getEquipment().getItemInSlot((ItemData.EQUIP)i) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot((ItemData.EQUIP)i).getDefinition().getEquipId()); } else { playerProps.addByte((byte) 0); } } if (p.getEquipment().getItemInSlot(ItemData.EQUIP.CHEST) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.CHEST).getDefinition().getEquipId()); } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.AMULET)); } if (p.getEquipment().getItemInSlot(ItemData.EQUIP.SHIELD) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.SHIELD).getDefinition().getEquipId()); } else { playerProps.addByte((byte) 0); } Item chest = p.getEquipment().getSlot(ItemData.EQUIP.CHEST); if (chest != null && chest.getDefinition() != null) { if(!ItemData.isFullBody(chest.getDefinition())) { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.WEAPON)); } else { playerProps.addByte((byte) 0); } } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.WEAPON)); } if (p.getEquipment().getItemInSlot(ItemData.EQUIP.LEGS) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.LEGS).getDefinition().getEquipId()); } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.SHIELD)); } Item hat = p.getEquipment().getSlot(ItemData.EQUIP.HAT); if (hat != null && hat.getDefinition() != null) { if(!ItemData.isFullHat(hat.getDefinition()) && !ItemData.isFullMask(hat.getDefinition())) { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.HAT)); } else { playerProps.addByte((byte) 0); } } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.HAT)); } if (p.getEquipment().getItemInSlot(ItemData.EQUIP.HANDS) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.HANDS).getDefinition().getEquipId()); } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CHEST)); } if (p.getEquipment().getItemInSlot(ItemData.EQUIP.FEET) != -1) { playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.FEET).getDefinition().getEquipId()); } else { playerProps.addUShort(0x100 + app.getLook(6)); } if (hat != null && hat.getDefinition() != null) { if(!ItemData.isFullMask(hat.getDefinition())) { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CAPE)); } else { playerProps.addByte((byte) 0); } } else { playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CAPE)); } } else { playerProps.addUShort(-1); playerProps.addUShort(app.getNpcId()); playerProps.addByte((byte) 255); } } else { for (int i = 0; i < 12; i++) { playerProps.addByte((byte) 0); } } foreach(int colour in app.getColoursArray()) { playerProps.addByte((byte) colour); } playerProps.addUShort(p.getEquipment().getStandWalkAnimation()); playerProps.addLong(p.getLoginDetails().getLongName()); playerProps.addByte((byte) p.getSkills().getCombatLevel()); playerProps.addUShort(0); playerProps.addByte((byte) 0); updateBlock.addByteA((byte) (playerProps.getLength() & 0xFF)); updateBlock.addBytes(playerProps.toPacket().getData(), 0, playerProps.getLength()); }
public static void showBobDialogue(Player p, int status) { p.getPackets().softCloseInterfaces(); int index = -1; int newStatus = -1; if (p.getTemporaryAttribute("bobsAxesBarrowItem") != null) { int item = (int)p.getTemporaryAttribute("bobsAxesBarrowItem"); index = getIndex(item); if (index == -1) { return; } else if (item == (int)DATA[index][0]) { p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("That item isn't broken..", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); return; } else if (item != (int)DATA[index][1]) { return; } } switch(status) { case 101: p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("That'll cost you " + ((int)DATA[index][2]).ToString("#,##0") + " gold coins to fix, are you sure?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 102; break; case 102: p.getPackets().modifyText("Yes, I'm sure!", 557, 2); p.getPackets().modifyText("On second thoughts, no thanks.", 557, 3); p.getPackets().sendChatboxInterface2(557); newStatus = 103; break; case 103: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Yes, I'm sure!", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 104; break; case 104: if (!p.getInventory().hasItemAmount(995, (int)DATA[index][2])) { p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("You don't have enough money to pay for the repair!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; } else { if (!p.getInventory().hasItem((int)DATA[index][1])) { p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("The item seems to have gone from your inventory.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; } else if (p.getInventory().deleteItem(995, (int)DATA[index][2])) { p.getInventory().replaceSingleItem((int)DATA[index][1], (int)DATA[index][0]); p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("There you go, happy doing business with you!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); p.getPackets().sendMessage("You pay Bob his fee and he repairs your " + (string)DATA[index][3] + "."); break; } } break; case 105: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("On second thoughts, no thanks.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 106; break; case 106: p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("Ok, but don't expect my prices to change anytime soon!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; case 107: p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("Hello there " + p.getLoginDetails().getUsername() + ", what can i do for you?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 108; break; case 108: p.getPackets().modifyText("Could you please repair my Barrow item?", 230, 2); p.getPackets().modifyText("I'm interested in buying an axe.", 230, 3); p.getPackets().modifyText("Nevermind.", 230, 4); p.getPackets().sendChatboxInterface2(230); newStatus = 109; break; case 109: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Could you please repair my Barrow item?", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 110; break; case 110: p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("Certainly! Show me the item and i'll see what i can do.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; case 111: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("I'm interested in buying an axe.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 112; break; case 112: p.getPackets().sendNPCHead(BOB_ID, 241, 2); p.getPackets().modifyText("Bob", 241, 3); p.getPackets().modifyText("What a coincidence! Axes are my speciality!", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 113; break; case 113: //TODO open bob's shop break; case 114: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Nevermind.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }
public static void showAliDialogue(Player p, int status) { int newStatus = -1; p.getPackets().softCloseInterfaces(); if (p.getTemporaryAttribute("unmovable") != null) { return; } switch(status) { case 205: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Would you like to go back to Lletya?", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 206; break; case 206: p.getPackets().sendChatboxInterface2(228); p.getPackets().modifyText("Yes please, let's go", 228, 2); p.getPackets().modifyText("Not yet", 228, 3); newStatus = 207; break; case 207: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Yes please, let's go.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 208; break; case 208: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("Very well.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); newStatus = 209; break; case 209: p.setTemporaryAttribute("unmovable", true); p.getPackets().displayInterface(120); p.getPackets().sendMessage("Your camel trots off slowly out of the desert.."); Event moveBackToLletyaEvent = new Event(2000); int moveBackToLletyaCounter = 0; moveBackToLletyaEvent.setAction(() => { if (moveBackToLletyaCounter == 0) { moveBackToLletyaCounter++; moveBackToLletyaEvent.setTick(600); p.teleport(new Location(2340, 3799, 0)); } else { moveBackToLletyaEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getPackets().sendMessage("..You and Ali are back in Lletya."); p.getPackets().closeInterfaces(); } }); Server.registerEvent(moveBackToLletyaEvent); break; case 210: p.getPackets().sendPlayerHead(64, 2); p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3); p.getPackets().modifyText("Not yet.", 64, 4); p.getPackets().animateInterface(9827, 64, 2); p.getPackets().sendChatboxInterface2(64); newStatus = 211; break; case 211: p.getPackets().sendNPCHead(1862, 241, 2); p.getPackets().modifyText("Ali Morissane", 241, 3); p.getPackets().modifyText("No problem, I will be here when you decide to leave.", 241, 4); p.getPackets().animateInterface(9827, 241, 2); p.getPackets().sendChatboxInterface2(241); break; } if (newStatus != -1) { p.setTemporaryAttribute("dialogue", newStatus); } }