import org.jibble.pircbot.*;import java.util.*;import java.net.*;import java.io.*; public class MyBot extends PircBot { int xpToNextInt; Map statsMap = new HashMap(); Map xpLevelMap = new HashMap(); Map rsname; Map combatHash = new HashMap(); String skillSearch; Vector statsVector = new Vector(); Vector xpVector = new Vector(); Vector combatVector = new Vector(); public MyBot() { this.setName("rsbot-Ves"); this.setLogin("rsbot-Ves"); sendMessage("nickserv", "identify California7"); try { FileInputStream rsnamefis = new FileInputStream("rsnamefos.tmp"); ObjectInputStream rsnameois = new ObjectInputStream(rsnamefis); rsname = (Map) rsnameois.readObject(); rsnameois.close(); } catch (FileNotFoundException e) { System.err.println("FileNotFoundException"); rsname = new HashMap(); } catch (IOException e) { System.out.println("IOException"); } catch (ClassNotFoundException e) { System.err.println("ClassNotFound"); } } public void onInvite(String targetNick, String sourceNick, String sourceLogin, String sourceHostname, String channel) { if (sourceHostname.equalsIgnoreCase("Swift-424F93B5.col.wideopenwest.com")) { joinChannel(channel); } if (sourceNick.startsWith("Vesuvius")) { joinChannel(channel); } } public void onDisconnect() { try { reconnect(); sendMessage("chanserv", "identify California7"); joinChannel("#brothor"); } catch (IOException e) { } catch (IrcException e) { } } public void onJoin(String channel, String sender, String login, String hostname) { if (sender.equalsIgnoreCase(getNick())) { sendMessage(channel, "Sup Guys"); setMode(getNick(), "+T"); setMode(getNick(), "+p"); setMode(getNick(), "+B"); } else if (sender.startsWith("Vesuvius")) { sendAction(channel, "praises his creator"); } else if (sender.startsWith("Rio")) { sendMessage(channel, "Welcome Rio BA(Hons) to " + channel.substring(1) + " IRC"); } else if (sender.equals("ddaazz")) { } else if (sender.startsWith("Mess")) { sendAction(channel, "<3s Messiah"); } else if (sender.startsWith("Rio")) { sendMessage(channel, "Welcome Rio BA(Hons) to " + channel.substring(1) + " IRC"); } else{ sendMessage(channel, "Welcome " + sender + " to " + channel.substring(1) + " IRC"); } } private void writeStats(String realname2) { try { String level; String totalXP; String rank; URL statsurl = new URL("http://hiscore.runescape.com/hiscorepersonal.ws?user1=" + realname2); URLConnection statsconnect = statsurl.openConnection(); InputStream statsin = statsconnect.getInputStream(); BufferedReader urlbr = new BufferedReader(new InputStreamReader(statsin)); String inputLine; String stats = ""; while ((inputLine = urlbr.readLine()) != null) { stats = stats + inputLine; } if (stats.indexOf("does not feature in the hiscores.") != -1) {} else { stats = stats.substring(stats.indexOf("Overall"), stats.indexOf("")); stats = stats.replaceAll("", ""); stats = stats.replaceAll("", ""); stats = stats.toLowerCase(); while (stats.indexOf("', index) + 1; int end = stats.indexOf('<', begin); rank = stats.substring(begin, end).replaceAll(",", ""); index = end; begin = stats.indexOf('>', index) + 1; end = stats.indexOf('<', begin); level = stats.substring(begin, end); index = end; begin = stats.indexOf('>', index) + 1; end = stats.indexOf('<', begin); totalXP = stats.substring(begin, end); String skillFormal = skill.substring(0,1).toUpperCase() + skill.substring(1); statsVector.add(skillFormal + " - Level: " + level + " XP: " + totalXP); if (skill.equalsIgnoreCase("overall") || level.equals("99")) { statsMap.put(skill, "Level: " + level + " Rank: " + rank + " XP: " + totalXP); } else { totalXP = totalXP.replaceAll(",", ""); level = level.replace(",", ""); int totalXpInt = Integer.parseInt(totalXP); int levelInt = Integer.parseInt(level) + 1; xpToNextInt = xpTable.xp[levelInt] - totalXpInt; String xpToNext = Integer.toString(xpToNextInt); xpLevelMap.put(skill, totalXP + " " + level); statsMap.put(skill, "Level: " + level + " Rank: " + rank + " XP: " + totalXP + " XP to next: " + xpToNext); } if (stats.indexOf(".ws?table") != -1) { stats = stats.substring(stats.indexOf(">", stats.indexOf(".ws?table")) + 1); } else { stats = ""; } } } } catch (FileNotFoundException e) { System.err.println("FileNotFoundException"); } catch (IOException e) { } } private void removeAbbreviations() { if (skillSearch.startsWith("att")) { skillSearch = "attack"; } if (skillSearch.startsWith("str")) { skillSearch = "strength"; } if (skillSearch.startsWith("def")) { skillSearch = "defence"; } if (skillSearch.startsWith("hit") || skillSearch.equals("hp")) { skillSearch = "hitpoints"; } if (skillSearch.startsWith("range")) { skillSearch = "ranged"; } if (skillSearch.startsWith("pray")) { skillSearch = "prayer"; } if (skillSearch.startsWith("mag")) { skillSearch = "magic"; } if (skillSearch.startsWith("cook")) { skillSearch = "cooking"; } if (skillSearch.startsWith("wood") || skillSearch.startsWith("wc")) { skillSearch = "woodcutting"; } if (skillSearch.startsWith("fletch")) { skillSearch = "fletching"; } if (skillSearch.startsWith("fish")) { skillSearch = "fishing"; } if (skillSearch.startsWith("agil")) { skillSearch = "agility"; } if (skillSearch.startsWith("fire") || skillSearch.startsWith("fm")) { skillSearch = "firemaking"; } if (skillSearch.startsWith("craft")) { skillSearch = "crafting"; } if (skillSearch.startsWith("smith")) { skillSearch = "smithing"; } if (skillSearch.startsWith("herb")) { skillSearch = "herblore"; } if (skillSearch.startsWith("slay")) { skillSearch = "slayer"; } if (skillSearch.startsWith("farm")) { skillSearch = "farming"; } if (skillSearch.startsWith("rune") || skillSearch.startsWith("rc")) { skillSearch = "runecraft"; } if (skillSearch.startsWith("hunt")) { skillSearch = "hunter"; } if (skillSearch.startsWith("cons")) { skillSearch = "construction"; } } private void writeXP(String realname2, String skillSearch, String goalLevel) { removeAbbreviations(); writeStats(realname2); statsVector.clear(); int goalLevelInt = 0; if (skillSearch.equals("attack") || skillSearch.equals("defence") || skillSearch.equals("strength") || skillSearch.equals("ranged") || skillSearch.equals("hitpoints") || skillSearch.equals("slayer")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); } } if (skillSearch.equals("cooking")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int lobster = xpToNextLevel/120 + 1; int monkfish = xpToNextLevel/150 + 1; int pineapple = xpToNextLevel/195 + 1; int shark = xpToNextLevel/210 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(lobster) + ".0 Lobsters cooked"); xpVector.add(" " + Integer.toString(monkfish) + ".0 Monkfish cooked"); xpVector.add(" " + Integer.toString(pineapple) + ".0 Pineapple pizzas cooked"); xpVector.add(" " + Integer.toString(shark) + ".0 Sharks cooked"); } } if (skillSearch.equals("woodcutting")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int willow = (int)Math.round(xpToNextLevel/67.5d + 1); int maple = xpToNextLevel/100 + 1; int yew = xpToNextLevel/175 + 1; int magic = xpToNextLevel/250 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(willow) + ".0 Willow trees cut"); xpVector.add(" " + Integer.toString(maple) + ".0 Maple trees cut"); xpVector.add(" " + Integer.toString(yew) + ".0 Yew trees cut"); xpVector.add(" " + Integer.toString(magic) + ".0 Magic trees cut"); } } if (skillSearch.equals("fletching")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int unstrungWillow = (int)Math.round(xpToNextLevel/41.5 + 1); int unstrungMaple = (int)Math.round(xpToNextLevel/58.25 + 1); int yewShort = xpToNextLevel/135 + 1; int yewLong = xpToNextLevel/150 + 1; int mageLong = xpToNextLevel/183 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(unstrungWillow) + ".0 Willow longs cut"); xpVector.add(" " + Integer.toString(unstrungMaple) + ".0 Maple longs cut"); xpVector.add(" " + Integer.toString(yewShort) + ".0 Yew shorts cut and strung"); xpVector.add(" " + Integer.toString(yewLong) + ".0 Yew longs cut and strung"); xpVector.add(" " + Integer.toString(mageLong) + ".0 Mage longs cut and strung"); } } if (skillSearch.equals("fishing")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int trout = xpToNextLevel/50 + 1; int salmon = xpToNextLevel/70 + 1; int lobster = xpToNextLevel/90 + 1; int swordfish = xpToNextLevel/100 + 1; int monkfish = xpToNextLevel/120 + 1; int shark = xpToNextLevel/110 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(trout) + ".0 Trout caught"); xpVector.add(" " + Integer.toString(salmon) + ".0 Salmon caught"); xpVector.add(" " + Integer.toString(lobster) + ".0 Lobsters caught"); xpVector.add(" " + Integer.toString(swordfish) + ".0 Swordfish caught"); xpVector.add(" " + Integer.toString(monkfish) + ".0 Monkfish caught"); xpVector.add(" " + Integer.toString(shark) + ".0 Sharks caught"); } } if (skillSearch.equals("firemaking")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int willow = xpToNextLevel/90 + 1; int maple = xpToNextLevel/135 + 1; int yew = (int)Math.round(xpToNextLevel/202.5 + 1); int mage = (int)Math.round(xpToNextLevel/303.75 + 1); xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(willow) + ".0 Willow logs burnt"); xpVector.add(" " + Integer.toString(maple) + ".0 Maple logs burnt"); xpVector.add(" " + Integer.toString(yew) + ".0 Yew logs burnt"); xpVector.add(" " + Integer.toString(mage) + ".0 Mage logs burnt"); } } if (skillSearch.equals("crafting")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int flax = xpToNextLevel/15 + 1; int goldAmulet = xpToNextLevel/35 + 1; int tiara = (int)Math.round(xpToNextLevel/52.5); int glassAndOrb = (int)Math.round(xpToNextLevel/72.5); int airBattlestaff = xpToNextLevel/210 + 1; int greenHide = xpToNextLevel/62 + 1; int blueHide = xpToNextLevel/70 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(goldAmulet) + ".0 Gold amulets crafted"); xpVector.add(" " + Integer.toString(flax) + ".0 Flax spun"); xpVector.add(" " + Integer.toString(tiara) + ".0 Tiaras crafted"); xpVector.add(" " + Integer.toString(glassAndOrb) + ".0 Molten glass made and orb crafted"); xpVector.add(" " + Integer.toString(greenHide) + ".0 Green hides crafted"); xpVector.add(" " + Integer.toString(airBattlestaff) + ".0 Orbs made (from seaweed and sand) and air battlestaves crafted"); xpVector.add(" " + Integer.toString(blueHide) + ".0 Blue hides crafted"); } } if (skillSearch.equals("smithing")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int goldOre = (int)Math.round(xpToNextLevel/56.2 + 1); int ironSmeltSmith = (int)Math.round(xpToNextLevel/37.5 + 1); int steelSmeltSmith = xpToNextLevel/55 + 1; int steelSmeltCball = (int)Math.round(xpToNextLevel/43.1); int mithSmeltSmith = xpToNextLevel/80 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(goldOre) + ".0 Gold ore smelted (with gauntlets)"); xpVector.add(" " + Integer.toString(ironSmeltSmith) + ".0 Iron bars smelted and smithed"); xpVector.add(" " + Integer.toString(steelSmeltSmith) + ".0 Steel bars smelted and smithed"); xpVector.add(" " + Integer.toString(steelSmeltCball) + ".0 Steel bars smelted and formed into cannonballs"); xpVector.add(" " + Integer.toString(mithSmeltSmith) + ".0 Mith bars smelted and smithed"); } } if (skillSearch.equals("mining")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int iron = xpToNextLevel/35 + 1; int coal = xpToNextLevel/50 + 1; int gold = xpToNextLevel/65 + 1; int mith = xpToNextLevel/80 + 1; int addy = xpToNextLevel/95 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(iron) + ".0 Iron ore mined"); xpVector.add(" " + Integer.toString(coal) + ".0 Coal ore mined"); xpVector.add(" " + Integer.toString(gold) + ".0 Gold ore mined"); xpVector.add(" " + Integer.toString(mith) + ".0 Mith ore mined"); xpVector.add(" " + Integer.toString(addy) + ".0 Addy ore mined"); } } if (skillSearch.equals("herblore")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int attack = xpToNextLevel/25 + 1; int antipoison = (int)Math.round(xpToNextLevel/37.5 + 1); int strength = xpToNextLevel/50 + 1; int restore = (int)Math.round(xpToNextLevel/62.5 + 1); int energy = (int)Math.round(xpToNextLevel/67.5 + 1); int prayer = (int)Math.round(xpToNextLevel/87.5 + 1); int superAttack = xpToNextLevel/100 + 1; int superRestore = xpToNextLevel/143 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(attack) + ".0 Attack potions mixed"); xpVector.add(" " + Integer.toString(antipoison) + ".0 Antipoison potions mixed"); xpVector.add(" " + Integer.toString(strength) + ".0 Strength (or Serum 207) potions mixed"); xpVector.add(" " + Integer.toString(restore) + ".0 Stat restore potions mixed"); xpVector.add(" " + Integer.toString(energy) + ".0 Energy potions mixed"); xpVector.add(" " + Integer.toString(prayer) + ".0 Prayer potions mixed"); xpVector.add(" " + Integer.toString(superAttack) + ".0 Super Attack potions mixed"); xpVector.add(" " + Integer.toString(superRestore) + ".0 Super Restore potions mixed"); } } if (skillSearch.equals("agility")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int barby = (int)Math.round(xpToNextLevel/153.2 + 1); int werewolves = xpToNextLevel/540 + 1; int wildy = (int)Math.round(xpToNextLevel/571.5 + 1); int apeAtoll = xpToNextLevel/580 + 1; int oneHundoTickets = xpToNextLevel/28000 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(barby) + ".0 Barbarian Course laps"); xpVector.add(" " + Integer.toString(apeAtoll) + ".0 Ape Atoll laps"); xpVector.add(" " + Integer.toString(wildy) + ".0 Wilderness course laps"); xpVector.add(" " + Integer.toString(werewolves) + ".0 Werewolves course laps"); xpVector.add(" " + Integer.toString(oneHundoTickets) + ".0 100 Arena Tickets"); } } if (skillSearch.equals("thieving")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int masterFarmer = xpToNextLevel/2350 + 1; int autumnSquirk = xpToNextLevel/3000 + 1; int summerSquirk = (int)Math.round(xpToNextLevel/571.5 + 1); xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(masterFarmer) + ".0 Master farmers pickpocketed"); xpVector.add(" " + Integer.toString(autumnSquirk) + ".0 Autumn sq'irk juice"); xpVector.add(" " + Integer.toString(summerSquirk) + ".0 Summer sq'irk juice"); } } if (skillSearch.equals("farming")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int willow = (int)Math.round(xpToNextLevel/1481.5 + 1); int maple = xpToNextLevel/3448 + 1; int yew = (int)Math.round(xpToNextLevel/7150.5 + 1); xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(willow) + ".0 Willow trees planted and health checked"); xpVector.add(" " + Integer.toString(maple) + ".0 Maple trees planted and health checked"); xpVector.add(" " + Integer.toString(yew) + ".0 Yew trees planted and health checked"); } } if (skillSearch.equals("runecraft")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int air = xpToNextLevel/5 + 1; int fire = xpToNextLevel/7 + 1; int cosmic = xpToNextLevel/8 + 1; int nature = xpToNextLevel/9 + 1; int law = (int)Math.round(xpToNextLevel/9.5 + 1); xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(air) + ".0 Rune essence crafted into air runes"); xpVector.add(" " + Integer.toString(fire) + ".0 Rune essence crafted into fire runes"); xpVector.add(" " + Integer.toString(cosmic) + ".0 Rune essence crafted into cosmic runes"); xpVector.add(" " + Integer.toString(nature) + ".0 Rune essence crafted into nature runes"); xpVector.add(" " + Integer.toString(law) + ".0 Rune essence crafted into law runes"); } } if (skillSearch.equals("hunter")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int tropicalWagtail = (int)Math.round(xpToNextLevel/95.2 + 1); int swampLizard = xpToNextLevel/152 + 1; int chinchompa = (int)Math.round(xpToNextLevel/198.5 + 1); int redSalamander = xpToNextLevel/272 + 1; int redChinchompa = xpToNextLevel/265 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(tropicalWagtail) + ".0 Tropical Wagtails Captured"); xpVector.add(" " + Integer.toString(swampLizard) + ".0 Swamp Lizards Captured"); xpVector.add(" " + Integer.toString(chinchompa) + ".0 Chinchompas Captured"); xpVector.add(" " + Integer.toString(redSalamander) + ".0 Red Salamanders Captured"); xpVector.add(" " + Integer.toString(redChinchompa) + ".0 Red Chinchompas Captured"); } } if (skillSearch.equals("construction")) { String rawGet = (String) xpLevelMap.get(skillSearch); if (rawGet == null) { xpVector.add("You are not ranked in skill '" + skillSearch + "'"); } else { String[] rawGetSplit = rawGet.split(" "); int XP = Integer.parseInt(rawGetSplit[0]); int level = Integer.parseInt(rawGetSplit[1]); if (goalLevel == null) { goalLevelInt =level + 1; } else { goalLevelInt = Integer.parseInt(goalLevel); } int xpToNextLevel = xpTable.xp[goalLevelInt] - XP; int oak = xpToNextLevel/60 + 1; int teak = xpToNextLevel/90 + 1; int mahogany = xpToNextLevel/140 + 1; int clay = xpToNextLevel/10 + 1; xpVector.add(Integer.toString(xpToNextLevel) + " xp needed to reach level " + Integer.toString(goalLevelInt) + " from currect level " + Integer.toString(level)); xpVector.add(" " + Integer.toString(clay) + ".0 Soft clay used"); xpVector.add(" " + Integer.toString(oak) + ".0 Oak planks used"); xpVector.add(" " + Integer.toString(teak) + ".0 Teak planks used"); xpVector.add(" " + Integer.toString(mahogany) + ".0 Mahogany planks used"); } } } private void writePrice(String channel, String sender, String priceSearch) { try{ String sendLocation = channel; if (channel == null) { sendLocation = sender; } Vector priceVector = new Vector(); URL priceurl = new URL("http://www.zybez.net/priceguide.php?search_terms=" + priceSearch + "&search_area=1&price_low=&price_high=&member=1"); URLConnection priceconnect = priceurl.openConnection(); InputStream pricein = priceconnect.getInputStream(); BufferedReader urlbr = new BufferedReader(new InputStreamReader(pricein)); String inputLine; String pricePage = ""; while ((inputLine = urlbr.readLine()) != null) { pricePage = pricePage + inputLine; } if (pricePage.indexOf("Your search did not return") != -1) { sendMessage(channel, "No items found"); } else if (pricePage.indexOf("") != -1) { sendMessage(channel, "Unable to connect to Zybez"); } else { pricePage = pricePage.substring(pricePage.indexOf(""), pricePage.indexOf("")); int count = 1; while (pricePage.indexOf("") != -1 && count <= 20) { count = count + 1; String name = pricePage.substring(pricePage.indexOf("") + 35, pricePage.indexOf("<", pricePage.indexOf("") + 35)); String price = pricePage.substring(pricePage.indexOf("") + 36, pricePage.indexOf("<", pricePage.indexOf("") + 35)); priceVector.add(name + " - " + price); pricePage = pricePage.substring(pricePage.indexOf("", pricePage.indexOf(""))); } if (priceVector.size() <= 5) { sendMessage(channel, "Results provided by http://www.zybez.net (first 20)"); while (priceVector.size() != 0) { sendMessage(sendLocation, priceVector.firstElement().toString()); priceVector.remove(0); } } else { sendMessage(channel, "More than 5 items found. Sending via PM"); sendMessage(sender, "Results provided by http://www.zybez.net (first 20)"); while (priceVector.size() != 0) { sendMessage(sender, priceVector.firstElement().toString()); priceVector.remove(0); } } } urlbr.close(); priceVector.clear(); } catch (IOException e) { System.out.println("IOException"); } catch (StringIndexOutOfBoundsException e) { System.out.println("StringIndexOutOfBounds"); } } protected void onMode(String channel, String sourceNick, String sourceLogin, String sourceHostname, String mode) { if (sourceNick.equals("Lyucit")) { setMode(channel, "-" + mode.substring(1)); } if (sourceNick.equals("Toilet")) { setMode(channel, "-" + mode.substring(1)); } } private void writeNames() { try { FileOutputStream rsnamefos = new FileOutputStream("rsnamefos.tmp"); ObjectOutputStream rsnameoos = new ObjectOutputStream(rsnamefos); rsnameoos.writeObject(rsname); rsnameoos.close(); } catch (FileNotFoundException e) { System.err.println("FileNotFoundException"); } catch (IOException e) { System.err.println("IOException"); } } public String handleMessage(String sender, String message) { if (message.equals("!help")) { return "Channel: " + "Sending you help via msg Sender: " + "!linkme Stats Graph " + "!remembername Stores the RSN for an IRC nick Sender: " + "!hiscore HiscoresSender: " + "!price Price LookupSender: " + "!w dictionary reference to the wordSender: " + "!urban Urban dictionary reference to the word. Sender: " + "!xp Calculates ways to get to the goal level (or next level) in the skill."; } if (message.startsWith("!rsname")) { String[] rsnameSplit = message.split(" "); return "Channel: " + rsnameSplit[1] + " - " + (String) rsname.get(rsnameSplit[1]); } if (message.startsWith("!remember")) { String[] remember = message.split(" "); rsname.put(sender, remember[1]); writeNames(); return "Channel: " + "Associating RSN " + remember[1] + " with nick " + sender; } if (message.startsWith("!link")) { String[] split = message.split(" "); if (split.length == 1 ) { String realname = (String) rsname.get(sender); if (realname == null) { realname = sender; } return "Channel: " + "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname; } else {return "Channel: " + "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1]; } } if (message.startsWith("!price")) { String priceSearch; String[] priceSplit = message.split(" ", 2); priceSearch = priceSplit[1].replaceAll(" ", "+"); writePrice(sender, sender, priceSearch); return ""; } if (message.startsWith("!cmb")) { String[] combatSplit = message.split(" "); String realname2 = combatSplit[1]; writeCombat(realname2); return ""; } if (message.startsWith("!urban")) { String[] urbanLookup = message.split(" ", 2); urbanLookup[1] = urbanLookup[1].replaceAll(" ", "+"); return "Channel: " + "http://www.urbandictionary.com/define.php?term=" + urbanLookup[1]; } if (message.startsWith("!w")) { String[] word = message.split(" "); return "Channel: " + "http://dictionary.reference.com/search?q=" + word[1]; } if (message.startsWith("!pot")) { String[] potSplit = message.split(" "); String pot = potSplit[1]; potHash.removePotAbbrevs(pot); return "Channel: " + (String) potHash.potHash.get("range"); } } public void onPrivateMessage(String sender, String login, String hostname, String message) { if (message.startsWith("!send")) { if (sender.startsWith("Vesuvius")) { if (message.startsWith("!sendword")) { String[] messageSend = message.split(" ", 3); sendMessage(messageSend[1], messageSend[2]); } if (message.startsWith("!sendaction")) { String[] actionSend = message.split(" ", 3); sendAction(actionSend[1], actionSend[2]); } } } if (message.equals("!help")) { sendMessage(sender, "!linkme Stats Graph"); sendMessage(sender, "!remembername Stores the RSN for an IRC nick"); sendMessage(sender, "!hiscore Hiscores"); sendMessage(sender, "!price Price Lookup"); sendMessage(sender, "!w dictionary reference to the word"); } if (message.startsWith("!remember")) { String[] remember = message.split(" "); rsname.put(sender, remember[1]); sendMessage(sender, "Associating RSN " + remember[1] + " with nick " + sender); writeNames(); } if (message.startsWith("!link")) { String[] split = message.split(" "); if (split.length == 1 ) { String realname = (String) rsname.get(sender); if (realname == null) { realname = sender; } sendMessage(sender, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname); } else {sendMessage(sender, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1]); } } if (message.startsWith("!c")) { String[] calcSplit = message.split(" ", 2); double calcWork = Double.parseDouble(calcSplit[1]); String calcAnswer = Double.toString(calcWork); sendMessage(sender, calcAnswer); } if (message.startsWith("!w")) { String[] word = message.split(" "); sendMessage(sender, "http://dictionary.reference.com/search?q=" + word[1]); } if (message.startsWith("!hiscore")) { String realname2 = null; skillSearch = null; message = message.toLowerCase(); String[] hiscoreSplit = message.split(" "); if (hiscoreSplit.length == 2) { realname2 = (String) rsname.get(sender); if (realname2 == null) { realname2 = sender; } skillSearch = hiscoreSplit[1]; } if (hiscoreSplit.length == 3) { realname2 = (String) rsname.get(hiscoreSplit[1]); if (realname2 == null) { realname2 = hiscoreSplit[1]; } skillSearch = hiscoreSplit[2]; } removeAbbreviations(); writeStats(realname2); if (skillSearch.equals("all")) { while (statsVector.size() != 0) { sendMessage(sender, statsVector.firstElement().toString()); statsVector.remove(0); } statsVector.clear(); } else { String statMessage = (String) statsMap.get(skillSearch); if (statsMap.isEmpty()) { sendMessage(sender, "User " + realname2 + " does not feature in the highscores"); } else if (statMessage == null) { sendMessage(sender, "User " + realname2 + " is unranked for skill " + skillSearch); } else { sendMessage(sender, statMessage); } } statsMap.clear(); statsVector.clear(); } } public void writeCombat(String realname2) { } public void onMessage(String channel, String sender, String login, String hostname, String message) { if (message.equals("!help")) { sendMessage(channel, "Sending you help via msg"); sendMessage(sender, "!linkme Stats Graph"); sendMessage(sender, "!remembername Stores the RSN for an IRC nick"); sendMessage(sender, "!hiscore Hiscores"); sendMessage(sender, "!price Price Lookup"); sendMessage(sender, "!w dictionary reference to the word"); sendMessage(sender, "!urban Urban dictionary reference to the word."); sendMessage(sender, "!xp Calculates ways to get to the goal level (or next level) in the skill."); } if (message.startsWith("!rsname")) { String[] rsnameSplit = message.split(" "); sendMessage(channel, rsnameSplit[1] + " - " + (String) rsname.get(rsnameSplit[1])); } if (message.startsWith("!remember")) { String[] remember = message.split(" "); rsname.put(sender, remember[1]); sendMessage(channel, "Associating RSN " + remember[1] + " with nick " + sender); writeNames(); } if (message.startsWith("!link")) { String[] split = message.split(" "); if (split.length == 1 ) { String realname = (String) rsname.get(sender); if (realname == null) { realname = sender; } sendMessage(channel, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + realname); } else {sendMessage(channel, "http://guilds.sinthos-soft.com/rs/stats/rs_levels.php?user=" + split[1]); } } if (message.startsWith("!price")) { String priceSearch; String[] priceSplit = message.split(" ", 2); priceSearch = priceSplit[1].replaceAll(" ", "+"); writePrice(channel, sender, priceSearch); } if (message.startsWith("!cmb")) { String[] combatSplit = message.split(" "); String realname2 = combatSplit[1]; writeCombat(realname2); } if (message.startsWith("!urban")) { String[] urbanLookup = message.split(" ", 2); urbanLookup[1] = urbanLookup[1].replaceAll(" ", "+"); sendMessage(channel, "http://www.urbandictionary.com/define.php?term=" + urbanLookup[1]); } if (message.startsWith("!w")) { String[] word = message.split(" "); sendMessage(channel, "http://dictionary.reference.com/search?q=" + word[1]); } if (message.startsWith("!pot")) { String[] potSplit = message.split(" "); String pot = potSplit[1]; potHash.removePotAbbrevs(pot); sendMessage(channel, (String) potHash.potHash.get("range")); } if (message.startsWith("!xp")) { String realname2 = null; skillSearch = null; String goalLevel = null; message = message.toLowerCase(); String[] hiscoreSplit = message.split(" "); if (hiscoreSplit.length == 2) { realname2 = (String) rsname.get(sender); if (realname2 == null) { realname2 = sender; } skillSearch = hiscoreSplit[1]; removeAbbreviations(); } if (hiscoreSplit.length == 3) { try { Integer.parseInt(hiscoreSplit[2]); goalLevel = hiscoreSplit[2]; skillSearch = hiscoreSplit[1]; realname2 = (String) rsname.get(sender); if (realname2 == null) { realname2 = sender; } removeAbbreviations(); } catch (NumberFormatException e) { realname2 = (String) rsname.get(hiscoreSplit[1]); if (realname2 == null) { realname2 = hiscoreSplit[1]; } skillSearch = hiscoreSplit[2]; goalLevel = null; removeAbbreviations(); } } if (hiscoreSplit.length == 4) { realname2 = (String) rsname.get(hiscoreSplit[1]); if (realname2 == null) { realname2 = hiscoreSplit[1]; } skillSearch = hiscoreSplit[2]; goalLevel = hiscoreSplit[3]; removeAbbreviations(); } writeXP(realname2, skillSearch, goalLevel); if (xpVector.size() <= 6) { while (xpVector.size() != 0) { sendMessage(channel, xpVector.firstElement().toString()); xpVector.remove(0); } xpVector.clear(); } else { sendMessage(channel, "Stats over six lines. Sending via PM"); while (xpVector.size() != 0) { sendMessage(sender, xpVector.firstElement().toString()); xpVector.remove(0); } xpVector.clear(); } } if (message.startsWith("!hiscore")) { String realname2 = null; skillSearch = null; message = message.toLowerCase(); String[] hiscoreSplit = message.split(" "); if (hiscoreSplit.length == 2) { realname2 = (String) rsname.get(sender); if (realname2 == null) { realname2 = sender; } skillSearch = hiscoreSplit[1]; } if (hiscoreSplit.length == 3) { realname2 = (String) rsname.get(hiscoreSplit[1]); if (realname2 == null) { realname2 = hiscoreSplit[1]; } skillSearch = hiscoreSplit[2]; } int i = 0; removeAbbreviations(); writeStats(realname2); if (skillSearch.equals("all")) { if (statsVector.size() <= 5) { while (statsVector.size() > i) { sendMessage(channel, statsVector.get(i).toString()); i++; } statsVector.clear(); } else { sendMessage(channel, "Stats over six lines. Sending via PM"); while (statsVector.size() > i) { sendMessage(sender, statsVector.get(i).toString()); i++; } statsVector.clear(); } } else { String statMessage = (String) statsMap.get(skillSearch); if (statsMap.isEmpty()) { sendMessage(channel, "User " + realname2 + " does not feature in the highscores"); } else if (statMessage == null) { sendMessage(channel, "User " + realname2 + " is unranked for skill " + skillSearch); } else { sendMessage(channel, statMessage); } } statsMap.clear(); statsVector.clear(); } } }