/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tools.export; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties; import tools.HexTool; import tools.data.ByteArrayByteStream; import tools.data.LittleEndianAccessor; /** * * @author Itzik */ public class CashShop { public static void main(String[] args) { Properties data = new Properties(); InputStreamReader is; try { is = new FileReader("CashShop.txt"); data.load(is); is.close(); } catch (IOException ex) { System.out.println("Failed to load CashShop.txt"); } dumpPackages(data); dumpCategories(data); dumpMenuItems(data); System.out.println("Action Complete,\r\nData Location: /CashShop"); } public static void dumpPackages(Properties data) { byte[] hexdata = HexTool.getByteArrayFromHexString(data.getProperty("packages")); final LittleEndianAccessor slea = new LittleEndianAccessor(new ByteArrayByteStream((byte[]) hexdata)); StringBuilder sb = new StringBuilder(); sb.append("int[][][] packages = {\r\n"); int length = slea.readInt(); for (int i = 0; i < length; i++) { sb.append("{{"); sb.append(slea.readInt()); sb.append("}, {"); int snlength = slea.readInt(); for (int l = 0; l < snlength; l++) { sb.append(slea.readInt()); if (snlength - l != 1) { sb.append(", "); } } sb.append("}}"); if (length - i != 1) { sb.append(","); } sb.append("\r\n"); } sb.append("};"); System.out.println("Packages:\r\n" + sb.toString()); try { File outfile = new File("CashShop"); outfile.mkdir(); FileOutputStream out = new FileOutputStream(outfile + "/packages.txt", false); out.write(sb.toString().getBytes()); } catch (IOException ex) { System.out.println("Failed to save data into a file"); } } public static void dumpCategories(Properties data) { byte[] hexdata = HexTool.getByteArrayFromHexString(data.getProperty("categories")); final LittleEndianAccessor slea = new LittleEndianAccessor(new ByteArrayByteStream((byte[]) hexdata)); StringBuilder sb = new StringBuilder(); sb.append("/* Dumping data for table `cashshop_categories` */"); int category, parent, flag, sold; String name; try { slea.skip(slea.readByte() == 3 ? 1 : 3); int length = slea.readByte(); for (int i = 0; i < length; i++) { category = slea.readInt(); name = slea.readMapleAsciiString(); parent = slea.readInt(); flag = slea.readInt(); sold = slea.readInt(); sb.append("\r\nINSERT INTO cashshop_categories (`categoryid`, `name`, `parent`, `flag`, `sold`) "); sb.append("VALUES (").append(category).append(", '").append(name).append("', ").append(parent); sb.append(", ").append(flag).append(", ").append(sold).append(");"); } } catch (Exception ex) { System.out.println("Failed to read categories.\r\n" + ex); return; } try { File outfile = new File("CashShop"); outfile.mkdir(); FileOutputStream out = new FileOutputStream(outfile + "/categories.sql", false); out.write(sb.toString().getBytes()); } catch (IOException ex) { System.out.println("Failed to save data into a file"); } } public static void dumpMenuItems(Properties data) { byte[] hexdata; LittleEndianAccessor slea; StringBuilder sb = new StringBuilder(); sb.append("/* Dumping data for table `cashshop_menuitems` */"); int category, subcategory, parent, sn, itemid, flag = 0, price, discountPrice, quantity, expire, gender, likes; String image; try { for (int menu = 1; menu <= 4; menu++) { String menuStr = "menuitems" + menu; hexdata = HexTool.getByteArrayFromHexString(data.getProperty(menuStr)); slea = new LittleEndianAccessor(new ByteArrayByteStream((byte[]) hexdata)); byte a = slea.readByte(); slea.skip(a == 4 || a == 5 || a == 6 || a == 8 ? 1 : 3); int length = slea.readByte(); for (int i = 0; i < length; i++) { category = slea.readInt(); subcategory = slea.readInt(); parent = slea.readInt(); image = slea.readMapleAsciiString(); sn = slea.readInt(); itemid = slea.readInt(); slea.skip(4 * 4); price = slea.readInt(); slea.skip(8 * 4); discountPrice = slea.readInt(); slea.skip(4); quantity = slea.readInt(); expire = slea.readInt(); slea.skip(1 * 5); gender = slea.readInt(); likes = slea.readInt(); slea.skip(4 * 4); for (int p = 0; p < slea.readInt(); p++) { slea.skip(4 * 9); } sb.append("INSERT INTO cashshop_menuitems (`category`, `subcategory`, `parent`, `image`, "); sb.append("`sn`, `itemid`, `flag`, `price`, `discountPrice`, `quantity`, `expire`, `gender`, `likes`) "); sb.append("VALUES ('").append(category).append("', '").append(subcategory).append("', '"); sb.append(parent).append("', '").append(image).append("', '").append(sn).append("', '"); sb.append(itemid).append("', '").append(flag).append("', '").append(price).append("', '"); sb.append(discountPrice).append("', '").append(quantity).append("', '"); sb.append(expire).append("', '").append(gender).append("', '").append(likes).append("');\r\n"); // sb.append("\r\nINSERT INTO cashshop_menuitems (`category`, `subcategory`, `parent`, `image`, `sn`, `itemid`, `flag`, `price`, `discountPrice`, `quantity`, `expire`, `gender`, `likes`) "); // sb.append("VALUES (").append(category).append(", ").append(subcategory).append(", "); // sb.append(parent).append(", '").append(image).append("', ").append(sn).append(", "); // sb.append(itemid).append(", ").append(flag).append(", ").append(price).append(", "); // sb.append(discountPrice).append(", ").append(quantity).append(", ").append(expire); // sb.append(", ").append(gender).append(", ").append(likes).append(");"); } } } catch (Exception ex) { System.out.println("Failed to read items.\r\n" + ex); return; } try { File outfile = new File("CashShop"); outfile.mkdir(); FileOutputStream out = new FileOutputStream(outfile + "/menuitems.sql", false); out.write(sb.toString().getBytes()); } catch (IOException ex) { System.out.println("Failed to save data into a file"); } } }