private static bool canSmith(Player p, SmithBar item) { if (p == null || item == null) { return(false); } if (item.getAmount() <= 0) { return(false); } if (!p.getInventory().hasItem(HAMMER)) { p.getPackets().sendMessage("You need a hammer if you wish to smith."); return(false); } if (p.getSkills().getGreaterLevel(Skills.SKILL.SMITHING) < item.getLevel()) { p.getPackets().sendMessage("You need a Smithing level of " + item.getLevel() + " to make that item."); return(false); } if (!p.getInventory().hasItemAmount(item.getBarType(), item.getBarAmount())) { p.getPackets().sendMessage("You don't have enough bars to make that item."); return(false); } return(true); }
public static void smithItem(Player p, int button, int offset, bool newSmith) { int index = -1; if (!newSmith && p.getTemporaryAttribute("smithingItem") == null) { return; } if (newSmith) { if (p.getTemporaryAttribute("smithingBarType") == null) { return; } index = (int)p.getTemporaryAttribute("smithingBarType"); if (index == -1) { return; } object[][] variables = getInterfaceVariables(p, index); int amountToMake = -1; int item = -1; for (int i = 6; i > 0; i--) { for (int j = 0; j < variables.Length; j++) { if ((int)variables[j][6] + i == button) { offset = i; item = j; break; } } } if (offset == 4) { p.getPackets().displayEnterAmount(); p.setTemporaryAttribute("interfaceVariable", new EnterVariable(300, button)); } else if (offset == 3) { amountToMake = 28; } else if (offset == 5) { amountToMake = 5; } else if (offset == 6) { amountToMake = 1; } if (offset >= 400) { amountToMake = offset - 400; } p.setTemporaryAttribute("smithingItem", new SmithBar(BARS[index], (int)variables[item][3], (int)variables[item][1], (int)variables[item][4], (int)variables[item][0], (int)variables[item][2], amountToMake)); } SmithBar smithbar = (SmithBar)p.getTemporaryAttribute("smithingItem"); if (!canSmith(p, smithbar)) { return; } p.getPackets().closeInterfaces(); p.setLastAnimation(new Animation(898)); for (int i = 0; i < smithbar.getBarAmount(); i++) { if (!p.getInventory().deleteItem(smithbar.getBarType())) { return; } } if (p.getInventory().addItem(smithbar.getFinishedItem(), smithbar.getFinishedItemAmount())) { p.getSkills().addXp(Skills.SKILL.SMITHING, smithbar.getXp()); } smithbar.decreaseAmount(); if (smithbar.getAmount() >= 1) { Event smithMoreItemEvent = new Event(1500); smithMoreItemEvent.setAction(() => { smithItem(p, -1, 1, false); smithMoreItemEvent.stop(); }); Server.registerEvent(smithMoreItemEvent); } }