/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tools.wztosql;
import database.DatabaseConnection;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import provider.MapleData;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import provider.MapleDataTool;
import tools.StringUtil;
/**
*
* @author Itzik
*/
public class DumpNpcNames {
private final Connection con = DatabaseConnection.getConnection();
private static final Map<Integer, String> npcNames = new HashMap<>();
public static void main(String[] args) throws SQLException {
System.out.println("Dumping npc name data.");
DumpNpcNames dump = new DumpNpcNames();
dump.dumpNpcNameData();
System.out.println("Dump complete.");
}
public void dumpNpcNameData() throws SQLException {
File dataFile = new File(System.getProperty("wzpath") + "/Npc.wz");
File strDataFile = new File(System.getProperty("wzpath") + "/String.wz");
MapleDataProvider npcData = MapleDataProviderFactory.getDataProvider(dataFile);
MapleDataProvider stringDataWZ = MapleDataProviderFactory.getDataProvider(strDataFile);
MapleData npcStringData = stringDataWZ.getData("Npc.img");
try (PreparedStatement ps = con.prepareStatement("DELETE FROM `wz_npcnamedata`")) {
ps.execute();
}
for (MapleData c : npcStringData) {
int nid = Integer.parseInt(c.getName());
String n = StringUtil.getLeftPaddedStr(nid + ".img", '0', 11);
try {
if (npcData.getData(n) != null) {//only thing we really have to do is check if it exists. if we wanted to, we could get the script as well :3
String name = MapleDataTool.getString("name", c, "MISSINGNO");
if (name.contains("Maple TV") || name.contains("Baby Moon Bunny")) {
continue;
}
npcNames.put(nid, name);
}
} catch (NullPointerException e) {
} catch (RuntimeException e) { //swallow, don't add if
}
}
for (int key : npcNames.keySet()) {
try {
try (PreparedStatement ps = con.prepareStatement(
"INSERT INTO `wz_npcnamedata` (`npc`, `name`) VALUES (?, ?)")) {
ps.setInt(1, key);
ps.setString(2, npcNames.get(key));
ps.execute();
}
System.out.println("key: " + key + " name: " + npcNames.get(key));
} catch (Exception ex) {
System.out.println("Failed to save key " + key);
}
}
}
}