mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-05 23:22:47 +00:00
Implements automatically generated template classes from XSD schemas
This commit is contained in:
@@ -34,17 +34,8 @@ import javax.xml.transform.Result;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import com.l2jserver.model.id.template.CharacterTemplateID;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CollitionMetadataContainer;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.AttackMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.BaseMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.DefenseMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.MoveMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.Stat;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.AttackMetadata.AttackValueMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CharacterStatsMetadata.DefenseMetadata.DefenseValueMetadata;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate.CollitionMetadataContainer.CollisionMetadata;
|
||||
import com.l2jserver.model.template.CharacterTemplate;
|
||||
import com.l2jserver.model.template.ObjectFactory;
|
||||
|
||||
/**
|
||||
* The need to use this package to get access to protected fields.
|
||||
@@ -88,7 +79,8 @@ public class CharacterTemplateConverter {
|
||||
CharacterTemplate t = fillTemplate(rs);
|
||||
|
||||
final File file = new File(target, "character/"
|
||||
+ camelCase(t.getCharacterClass().name()) + ".xml");
|
||||
+ camelCase(t.getID().getCharacterClass().name())
|
||||
+ ".xml");
|
||||
file.getParentFile().mkdirs();
|
||||
|
||||
m.marshal(t, file);
|
||||
@@ -106,68 +98,83 @@ public class CharacterTemplateConverter {
|
||||
|
||||
private static CharacterTemplate fillTemplate(ResultSet rs)
|
||||
throws SQLException {
|
||||
final CharacterTemplate t = new CharacterTemplate();
|
||||
|
||||
t.id = new CharacterTemplateID(rs.getInt("Classid"), null);
|
||||
final ObjectFactory factory = new ObjectFactory();
|
||||
|
||||
t.stats = new CharacterStatsMetadata();
|
||||
t.stats.hp = new Stat();
|
||||
t.stats.hp.base = rs.getDouble("defaulthpbase");
|
||||
t.stats.hp.modifier = rs.getDouble("defaulthpmod");
|
||||
t.stats.hp.add = rs.getDouble("defaulthpadd");
|
||||
final CharacterTemplate t = factory.createCharacterTemplate();
|
||||
t.setID(new CharacterTemplateID(rs.getInt("Classid"), null));
|
||||
t.setStats(factory.createCharacterTemplateStats());
|
||||
|
||||
t.stats.mp = new Stat();
|
||||
t.stats.mp.base = rs.getDouble("defaultmpbase");
|
||||
t.stats.mp.modifier = rs.getDouble("defaultmpmod");
|
||||
t.stats.mp.add = rs.getDouble("defaultmpadd");
|
||||
t.getStats().setHp(factory.createCharacterTemplateStatsHp());
|
||||
t.getStats().getHp().setBase(rs.getDouble("defaulthpbase"));
|
||||
t.getStats().getHp().setModifier(rs.getDouble("defaulthpmod"));
|
||||
t.getStats().getHp().setAdd(rs.getDouble("defaulthpadd"));
|
||||
|
||||
t.stats.cp = new Stat();
|
||||
t.stats.cp.base = rs.getDouble("defaultcpbase");
|
||||
t.stats.cp.modifier = rs.getDouble("defaultcpmod");
|
||||
t.stats.cp.add = rs.getDouble("defaultcpadd");
|
||||
t.getStats().setMp(factory.createCharacterTemplateStatsMp());
|
||||
t.getStats().getMp().setBase(rs.getDouble("defaultmpbase"));
|
||||
t.getStats().getMp().setModifier(rs.getDouble("defaultmpmod"));
|
||||
t.getStats().getMp().setAdd(rs.getDouble("defaultmpadd"));
|
||||
|
||||
t.stats.base = new BaseMetadata();
|
||||
t.stats.base.intelligence = rs.getInt("_INT");
|
||||
t.stats.base.strength = rs.getInt("STR");
|
||||
t.stats.base.concentration = rs.getInt("CON");
|
||||
t.stats.base.mentality = rs.getInt("MEN");
|
||||
t.stats.base.dexterity = rs.getInt("DEX");
|
||||
t.stats.base.witness = rs.getInt("WIT");
|
||||
t.getStats().setCp(factory.createCharacterTemplateStatsCp());
|
||||
t.getStats().getCp().setBase(rs.getDouble("defaultcpbase"));
|
||||
t.getStats().getCp().setModifier(rs.getDouble("defaultcpmod"));
|
||||
t.getStats().getCp().setAdd(rs.getDouble("defaultcpadd"));
|
||||
|
||||
t.stats.attack = new AttackMetadata();
|
||||
t.stats.attack.critical = rs.getInt("CRITICAL");
|
||||
t.stats.attack.evasion = rs.getInt("EVASION");
|
||||
t.stats.attack.accuracy = rs.getInt("ACC");
|
||||
t.getStats().setBase(factory.createCharacterTemplateStatsBase());
|
||||
t.getStats().getBase().setInt(rs.getInt("_INT"));
|
||||
t.getStats().getBase().setStr(rs.getInt("STR"));
|
||||
t.getStats().getBase().setCon(rs.getInt("CON"));
|
||||
t.getStats().getBase().setMen(rs.getInt("MEN"));
|
||||
t.getStats().getBase().setDex(rs.getInt("DEX"));
|
||||
t.getStats().getBase().setWit(rs.getInt("WIT"));
|
||||
|
||||
t.stats.attack.physical = new AttackValueMetadata();
|
||||
t.stats.attack.physical.damage = rs.getDouble("P_ATK");
|
||||
t.stats.attack.physical.speed = rs.getDouble("P_SPD");
|
||||
t.stats.attack.magical = new AttackValueMetadata();
|
||||
t.stats.attack.magical.damage = rs.getDouble("M_ATK");
|
||||
t.stats.attack.magical.speed = rs.getDouble("M_SPD");
|
||||
t.getStats().setAttack(factory.createCharacterTemplateStatsAttack());
|
||||
t.getStats().getAttack().setCritical(rs.getInt("CRITICAL"));
|
||||
t.getStats().getAttack().setEvasion(rs.getInt("EVASION"));
|
||||
t.getStats().getAttack().setAccuracy(rs.getInt("ACC"));
|
||||
|
||||
t.stats.defense = new DefenseMetadata();
|
||||
t.stats.defense.physical = new DefenseValueMetadata();
|
||||
t.stats.defense.physical.value = rs.getDouble("P_DEF");
|
||||
t.stats.defense.magical = new DefenseValueMetadata();
|
||||
t.stats.defense.magical.value = rs.getDouble("M_DEF");
|
||||
t.getStats()
|
||||
.getAttack()
|
||||
.setPhysical(
|
||||
factory.createCharacterTemplateStatsAttackPhysical());
|
||||
t.getStats().getAttack().getPhysical().setDamage(rs.getDouble("P_ATK"));
|
||||
t.getStats().getAttack().getPhysical().setSpeed(rs.getDouble("P_SPD"));
|
||||
t.getStats()
|
||||
.getAttack()
|
||||
.setMagical(factory.createCharacterTemplateStatsAttackMagical());
|
||||
t.getStats().getAttack().getMagical().setDamage(rs.getDouble("M_ATK"));
|
||||
t.getStats().getAttack().getMagical().setSpeed(rs.getDouble("M_SPD"));
|
||||
|
||||
t.stats.move = new MoveMetadata();
|
||||
t.stats.move.run = rs.getInt("MOVE_SPD");
|
||||
t.getStats().setDefense(factory.createCharacterTemplateStatsDefense());
|
||||
t.getStats()
|
||||
.getDefense()
|
||||
.setPhysical(
|
||||
factory.createCharacterTemplateStatsDefensePhysical());
|
||||
t.getStats().getDefense().getPhysical().setValue(rs.getDouble("P_DEF"));
|
||||
t.getStats()
|
||||
.getDefense()
|
||||
.setMagical(
|
||||
factory.createCharacterTemplateStatsDefenseMagical());
|
||||
t.getStats().getDefense().getMagical().setValue(rs.getDouble("M_DEF"));
|
||||
|
||||
t.getStats().setMove(factory.createCharacterTemplateStatsMove());
|
||||
t.getStats().getMove().setRun(rs.getInt("MOVE_SPD"));
|
||||
// TODO this is not really the same
|
||||
t.getStats().getMove().setWalk(rs.getInt("MOVE_SPD"));
|
||||
// TODO this is not really the same
|
||||
t.stats.move.walk = rs.getInt("MOVE_SPD");
|
||||
|
||||
t.stats.level = rs.getInt("class_lvl");
|
||||
t.stats.maximumLoad = rs.getInt("_LOAD");
|
||||
t.stats.crafter = rs.getBoolean("canCraft");
|
||||
t.getStats().setLevel(rs.getInt("class_lvl"));
|
||||
t.getStats().setMaxload(rs.getInt("_LOAD"));
|
||||
t.getStats().setCrafter(rs.getBoolean("canCraft"));
|
||||
|
||||
t.collision = new CollitionMetadataContainer();
|
||||
t.collision.male = new CollisionMetadata();
|
||||
t.collision.male.radius = rs.getDouble("M_COL_R");
|
||||
t.collision.male.height = rs.getDouble("M_COL_H");
|
||||
t.collision.female = new CollisionMetadata();
|
||||
t.collision.female.radius = rs.getDouble("F_COL_R");
|
||||
t.collision.female.height = rs.getDouble("F_COL_H");
|
||||
t.setCollision(factory.createCharacterTemplateCollision());
|
||||
t.getCollision()
|
||||
.setMale(factory.createCharacterTemplateCollisionMale());
|
||||
t.getCollision().getMale().setRadius(rs.getDouble("M_COL_R"));
|
||||
t.getCollision().getMale().setHeigth(rs.getDouble("M_COL_R"));
|
||||
t.getCollision().setFemale(
|
||||
factory.createCharacterTemplateCollisionFemale());
|
||||
t.getCollision().getMale().setRadius(rs.getDouble("F_COL_R"));
|
||||
t.getCollision().getMale().setHeigth(rs.getDouble("F_COL_R"));
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
@@ -46,27 +46,14 @@ import com.l2jserver.model.id.template.ItemTemplateID;
|
||||
import com.l2jserver.model.id.template.NPCTemplateID;
|
||||
import com.l2jserver.model.id.template.SkillTemplateID;
|
||||
import com.l2jserver.model.id.template.TeleportationTemplateID;
|
||||
import com.l2jserver.model.template.NPCTemplate;
|
||||
import com.l2jserver.model.template.NPCTemplate.Droplist;
|
||||
import com.l2jserver.model.template.NPCTemplate.Droplist.Item.DropCategory;
|
||||
import com.l2jserver.model.template.NPCTemplate.Skills;
|
||||
import com.l2jserver.model.template.NPCTemplate.Talk;
|
||||
import com.l2jserver.model.template.NPCTemplate.Talk.Chat;
|
||||
import com.l2jserver.model.template.ObjectFactory;
|
||||
import com.l2jserver.model.template.actor.ActorSex;
|
||||
import com.l2jserver.model.template.npc.NPCRace;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.DropItemMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.SkillMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.TalkMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.DropItemMetadata.DropCategory;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.CollisionMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.ItemMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCNameMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCTitleMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.AttackMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.BaseMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.DefenseMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.MoveMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.Stat;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.AttackMetadata.AttackValueMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.DefenseMetadata.DefenseValueMetadata;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate.TalkMetadata.Chat;
|
||||
import com.l2jserver.model.template.npc.TeleportationTemplate.TeleportRestriction;
|
||||
import com.l2jserver.model.world.npc.BaseNPCController;
|
||||
import com.l2jserver.model.world.npc.NPCController;
|
||||
@@ -81,11 +68,11 @@ import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
|
||||
|
||||
@SuppressWarnings("restriction")
|
||||
public class NPCTemplateConverter {
|
||||
private static final String JDBC_URL = "jdbc:mysql://localhost/l2jlegacy";
|
||||
private static final String JDBC_USERNAME = "l2j";
|
||||
private static final String JDBC_PASSWORD = "changeme";
|
||||
private static final String JDBC_URL = "jdbc:mysql://localhost/l2jserver_legacy";
|
||||
private static final String JDBC_USERNAME = "root";
|
||||
private static final String JDBC_PASSWORD = "";
|
||||
private static final File L2J_HTML_FOLDER = new File(
|
||||
"../L2J_DataPack_BETA/data/html");
|
||||
"../../L2J_DataPack_BETA/dist/game/data/html");
|
||||
|
||||
private static final Map<String, Class<? extends NPCController>> controllers = CollectionFactory
|
||||
.newMap();
|
||||
@@ -104,7 +91,7 @@ public class NPCTemplateConverter {
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
|
||||
final File target = new File("generated/template/npc");
|
||||
|
||||
|
||||
System.out.println("Scaning legacy HTML files...");
|
||||
htmlScannedFiles = FileUtils.listFiles(L2J_HTML_FOLDER, new String[] {
|
||||
"html", "htm" }, true);
|
||||
@@ -147,15 +134,15 @@ public class NPCTemplateConverter {
|
||||
}
|
||||
|
||||
System.out.println("Generating template XML files...");
|
||||
c.generateSchema(new SchemaOutputResolver() {
|
||||
@Override
|
||||
public Result createOutput(String namespaceUri,
|
||||
String suggestedFileName) throws IOException {
|
||||
// System.out.println(new File(target, suggestedFileName));
|
||||
// return null;
|
||||
return new StreamResult(new File(target, suggestedFileName));
|
||||
}
|
||||
});
|
||||
// c.generateSchema(new SchemaOutputResolver() {
|
||||
// @Override
|
||||
// public Result createOutput(String namespaceUri,
|
||||
// String suggestedFileName) throws IOException {
|
||||
// // System.out.println(new File(target, suggestedFileName));
|
||||
// // return null;
|
||||
// return new StreamResult(new File(target, suggestedFileName));
|
||||
// }
|
||||
// });
|
||||
|
||||
try {
|
||||
final Marshaller m = c.createMarshaller();
|
||||
@@ -186,10 +173,10 @@ public class NPCTemplateConverter {
|
||||
final File file = new File(target, "npc/"
|
||||
+ folder
|
||||
+ "/"
|
||||
+ t.id.getID()
|
||||
+ (t.info.nameMetadata != null ? "-"
|
||||
+ camelCase(t.info.nameMetadata.name) : "")
|
||||
+ ".xml");
|
||||
+ t.getID().getID()
|
||||
+ (t.getInfo().getName() != null ? "-"
|
||||
+ camelCase(t.getInfo().getName().getValue())
|
||||
: "") + ".xml");
|
||||
file.getParentFile().mkdirs();
|
||||
templates.add(t);
|
||||
|
||||
@@ -198,7 +185,9 @@ public class NPCTemplateConverter {
|
||||
} catch (MarshalException e) {
|
||||
System.err
|
||||
.println("Could not generate XML template file for "
|
||||
+ t.getName() + " - " + t.getID());
|
||||
+ t.getInfo().getName().getValue()
|
||||
+ " - "
|
||||
+ t.getID());
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
@@ -227,105 +216,136 @@ public class NPCTemplateConverter {
|
||||
|
||||
private static Object[] fillNPC(ResultSet rs) throws SQLException,
|
||||
IOException {
|
||||
final NPCTemplate template = new NPCTemplate();
|
||||
template.id = new NPCTemplateID(rs.getInt("idTemplate"), null);
|
||||
final ObjectFactory factory = new ObjectFactory();
|
||||
|
||||
template.controller = controllers.get(rs.getString("type"));
|
||||
if (template.controller == null)
|
||||
template.controller = NotImplementedNPCController.class;
|
||||
template.info = new NPCInformationMetadata();
|
||||
final NPCTemplate template = factory.createNPCTemplate();
|
||||
template.setID(new NPCTemplateID(rs.getInt("idTemplate"), null));
|
||||
|
||||
template.info.nameMetadata = new NPCNameMetadata();
|
||||
template.info.nameMetadata.name = rs.getString("name");
|
||||
template.info.nameMetadata.display = rs.getBoolean("show_name");
|
||||
template.info.nameMetadata.send = rs.getBoolean("serverSideName");
|
||||
template.setController(controllers.get(rs.getString("type")));
|
||||
if (template.getController() == null)
|
||||
template.setController(NotImplementedNPCController.class);
|
||||
template.setInfo(factory.createNPCTemplateInfo());
|
||||
|
||||
template.info.titleMetadata = new NPCTitleMetadata();
|
||||
template.info.titleMetadata.title = rs.getString("title");
|
||||
template.info.titleMetadata.send = rs.getBoolean("serverSideTitle");
|
||||
template.getInfo().setName(factory.createNPCTemplateInfoName());
|
||||
template.getInfo().getName().setValue(rs.getString("name"));
|
||||
//template.getInfo().getName().setDisplay(rs.getBoolean("show_name"));
|
||||
template.getInfo().getName().setSend(rs.getBoolean("serverSideName"));
|
||||
|
||||
if (template.info.titleMetadata.title.length() == 0)
|
||||
template.info.titleMetadata = null;
|
||||
if (template.info.nameMetadata.name.length() == 0)
|
||||
template.info.nameMetadata = null;
|
||||
template.getInfo().setTitle(factory.createNPCTemplateInfoTitle());
|
||||
template.getInfo().getTitle().setValue(rs.getString("title"));
|
||||
template.getInfo().getTitle().setSend(rs.getBoolean("serverSideTitle"));
|
||||
|
||||
template.info.level = rs.getInt("level");
|
||||
template.info.race = getRace(rs.getInt("race"));
|
||||
if (template.getInfo().getName().getValue().length() == 0)
|
||||
template.getInfo().setName(null);
|
||||
if (template.getInfo().getTitle().getValue().length() == 0)
|
||||
template.getInfo().setTitle(null);
|
||||
|
||||
template.getInfo().setLevel(rs.getInt("level"));
|
||||
template.getInfo().setRace(getRace(rs.getInt("race")));
|
||||
if (!rs.getString("sex").equals("etc"))
|
||||
template.info.sex = ActorSex.valueOf(rs.getString("sex")
|
||||
.toUpperCase());
|
||||
template.getInfo().setSex(
|
||||
ActorSex.valueOf(rs.getString("sex").toUpperCase()));
|
||||
// template.info.attackable = rs.getBoolean("attackable");
|
||||
template.info.targetable = rs.getBoolean("targetable");
|
||||
template.info.aggressive = rs.getBoolean("aggro");
|
||||
template.info.attackable = true; // FIXME
|
||||
//template.getInfo().setTargetable(rs.getBoolean("targetable"));
|
||||
template.getInfo().setTargetable(true);
|
||||
//template.getInfo().setAggressive(rs.getBoolean("aggro"));
|
||||
template.getInfo().setAggressive(true);
|
||||
template.getInfo().setAttackable(true); // FIXME
|
||||
|
||||
template.info.stats = new NPCStatsMetadata();
|
||||
template.getInfo().setStats(factory.createNPCTemplateInfoStats());
|
||||
|
||||
template.info.stats.hp = new Stat();
|
||||
template.info.stats.hp.max = rs.getDouble("hp");
|
||||
template.info.stats.hp.regen = rs.getDouble("hpreg");
|
||||
template.getInfo().getStats()
|
||||
.setHp(factory.createNPCTemplateInfoStatsHp());
|
||||
template.getInfo().getStats().getHp().setMax(rs.getDouble("hp"));
|
||||
template.getInfo().getStats().getHp().setRegen(rs.getDouble("hpreg"));
|
||||
|
||||
template.info.stats.mp = new Stat();
|
||||
template.info.stats.mp.max = rs.getDouble("mp");
|
||||
template.info.stats.mp.regen = rs.getDouble("mpreg");
|
||||
template.getInfo().getStats()
|
||||
.setMp(factory.createNPCTemplateInfoStatsMp());
|
||||
template.getInfo().getStats().getMp().setMax(rs.getDouble("mp"));
|
||||
template.getInfo().getStats().getMp().setRegen(rs.getDouble("mpreg"));
|
||||
|
||||
template.info.stats.attack = new AttackMetadata();
|
||||
template.info.stats.attack.range = rs.getInt("attackrange");
|
||||
template.info.stats.attack.critical = rs.getInt("critical");
|
||||
template.getInfo().getStats()
|
||||
.setAttack(factory.createNPCTemplateInfoStatsAttack());
|
||||
template.getInfo().getStats().getAttack()
|
||||
.setRange(rs.getInt("attackrange"));
|
||||
template.getInfo().getStats().getAttack()
|
||||
.setCritical(rs.getInt("critical"));
|
||||
|
||||
template.info.stats.attack.physical = new AttackValueMetadata();
|
||||
template.info.stats.attack.physical.damage = rs.getDouble("patk");
|
||||
template.info.stats.attack.physical.speed = rs.getDouble("atkspd");
|
||||
template.getInfo()
|
||||
.getStats()
|
||||
.getAttack()
|
||||
.setPhysical(factory.createNPCTemplateInfoStatsAttackPhysical());
|
||||
template.getInfo().getStats().getAttack().getPhysical()
|
||||
.setDamage(rs.getDouble("patk"));
|
||||
template.getInfo().getStats().getAttack().getPhysical()
|
||||
.setSpeed(rs.getDouble("atkspd"));
|
||||
|
||||
template.info.stats.attack.magical = new AttackValueMetadata();
|
||||
template.info.stats.attack.magical.damage = rs.getDouble("matk");
|
||||
template.info.stats.attack.magical.speed = rs.getDouble("matkspd");
|
||||
template.getInfo().getStats().getAttack()
|
||||
.setMagical(factory.createNPCTemplateInfoStatsAttackMagical());
|
||||
template.getInfo().getStats().getAttack().getMagical()
|
||||
.setDamage(rs.getDouble("matk"));
|
||||
template.getInfo().getStats().getAttack().getMagical()
|
||||
.setSpeed(rs.getDouble("matkspd"));
|
||||
|
||||
template.info.stats.defense = new DefenseMetadata();
|
||||
template.info.stats.defense.physical = new DefenseValueMetadata();
|
||||
template.info.stats.defense.physical.value = rs.getDouble("pdef");
|
||||
template.info.stats.defense.magical = new DefenseValueMetadata();
|
||||
template.info.stats.defense.magical.value = rs.getDouble("mdef");
|
||||
template.getInfo().getStats()
|
||||
.setDefense(factory.createNPCTemplateInfoStatsDefense());
|
||||
template.getInfo()
|
||||
.getStats()
|
||||
.getDefense()
|
||||
.setPhysical(
|
||||
factory.createNPCTemplateInfoStatsDefensePhysical());
|
||||
template.getInfo().getStats().getDefense().getPhysical()
|
||||
.setValue(rs.getDouble("pdef"));
|
||||
template.getInfo().getStats().getDefense()
|
||||
.setMagical(factory.createNPCTemplateInfoStatsDefenseMagical());
|
||||
template.getInfo().getStats().getDefense().getMagical()
|
||||
.setValue(rs.getDouble("mdef"));
|
||||
|
||||
template.info.stats.move = new MoveMetadata();
|
||||
template.info.stats.move.run = rs.getDouble("runspd");
|
||||
template.info.stats.move.walk = rs.getDouble("walkspd");
|
||||
template.getInfo().getStats()
|
||||
.setMove(factory.createNPCTemplateInfoStatsMove());
|
||||
template.getInfo().getStats().getMove().setRun(rs.getDouble("runspd"));
|
||||
template.getInfo().getStats().getMove()
|
||||
.setWalk(rs.getDouble("walkspd"));
|
||||
|
||||
template.info.stats.base = new BaseMetadata();
|
||||
template.info.stats.base.intelligence = rs.getInt("int");
|
||||
template.info.stats.base.strength = rs.getInt("str");
|
||||
template.info.stats.base.concentration = rs.getInt("con");
|
||||
template.info.stats.base.dexterity = rs.getInt("dex");
|
||||
template.info.stats.base.witness = rs.getInt("wit");
|
||||
template.info.stats.base.mentality = rs.getInt("men");
|
||||
template.getInfo().getStats()
|
||||
.setBase(factory.createNPCTemplateInfoStatsBase());
|
||||
template.getInfo().getStats().getBase().setInt(rs.getInt("int"));
|
||||
template.getInfo().getStats().getBase().setStr(rs.getInt("str"));
|
||||
template.getInfo().getStats().getBase().setCon(rs.getInt("con"));
|
||||
template.getInfo().getStats().getBase().setDex(rs.getInt("dex"));
|
||||
template.getInfo().getStats().getBase().setWit(rs.getInt("wit"));
|
||||
template.getInfo().getStats().getBase().setMen(rs.getInt("men"));
|
||||
|
||||
template.info.experience = rs.getLong("exp");
|
||||
template.info.sp = rs.getInt("sp");
|
||||
template.getInfo().setExperience(rs.getLong("exp"));
|
||||
template.getInfo().setSp(rs.getInt("sp"));
|
||||
|
||||
if (rs.getInt("rhand") > 0 || rs.getInt("lhand") > 0)
|
||||
template.info.item = new ItemMetadata();
|
||||
template.getInfo().setItem(factory.createNPCTemplateInfoItem());
|
||||
if (rs.getInt("rhand") > 0)
|
||||
template.info.item.rightHand = new ItemTemplateID(
|
||||
rs.getInt("rhand"), null);
|
||||
template.getInfo().getItem()
|
||||
.setRightHand(new ItemTemplateID(rs.getInt("rhand"), null));
|
||||
if (rs.getInt("lhand") > 0)
|
||||
template.info.item.leftHand = new ItemTemplateID(
|
||||
rs.getInt("lhand"), null);
|
||||
template.getInfo().getItem()
|
||||
.setLeftHand(new ItemTemplateID(rs.getInt("lhand"), null));
|
||||
|
||||
template.info.collision = new CollisionMetadata();
|
||||
template.info.collision.radius = rs.getDouble("collision_radius");
|
||||
template.info.collision.height = rs.getDouble("collision_height");
|
||||
template.getInfo().setCollision(
|
||||
factory.createNPCTemplateInfoCollision());
|
||||
template.getInfo().getCollision()
|
||||
.setRadius(rs.getDouble("collision_radius"));
|
||||
template.getInfo().getCollision()
|
||||
.setHeigth(rs.getDouble("collision_height"));
|
||||
|
||||
template.droplist = fillDropList(rs, template.id.getID());
|
||||
template.skills = fillSkillList(rs, template.id.getID());
|
||||
template.talk = fillHtmlChat(template.id.getID());
|
||||
template.setDroplist(fillDropList(factory, rs, template.getID().getID()));
|
||||
template.setSkills(fillSkillList(factory, rs, template.getID().getID()));
|
||||
template.setTalk(fillHtmlChat(factory, template.getID().getID()));
|
||||
|
||||
return new Object[] { template, createParentType(rs.getString("type")) };
|
||||
}
|
||||
|
||||
private static List<DropItemMetadata> fillDropList(ResultSet npcRs,
|
||||
int npcId) throws SQLException {
|
||||
private static Droplist fillDropList(final ObjectFactory factory,
|
||||
ResultSet npcRs, int npcId) throws SQLException {
|
||||
final Connection conn = npcRs.getStatement().getConnection();
|
||||
final List<DropItemMetadata> drops = CollectionFactory.newList();
|
||||
final Droplist drops = factory.createNPCTemplateDroplist();
|
||||
|
||||
final PreparedStatement st = conn
|
||||
.prepareStatement("SELECT * FROM droplist WHERE mobId = ?");
|
||||
@@ -333,23 +353,22 @@ public class NPCTemplateConverter {
|
||||
st.execute();
|
||||
final ResultSet rs = st.getResultSet();
|
||||
while (rs.next()) {
|
||||
DropItemMetadata m = new DropItemMetadata();
|
||||
m.item = new ItemTemplateID(rs.getInt("itemId"), null);
|
||||
m.min = rs.getInt("min");
|
||||
m.max = rs.getInt("max");
|
||||
m.chance = rs.getInt("chance");
|
||||
m.category = getCategory(rs.getInt("category"));
|
||||
drops.add(m);
|
||||
final Droplist.Item item = factory.createNPCTemplateDroplistItem();
|
||||
item.setId( new ItemTemplateID(rs.getInt("itemId"), null));
|
||||
item.setMin(rs.getInt("min"));
|
||||
item.setMax( rs.getInt("max"));
|
||||
item.setChance(rs.getInt("chance"));
|
||||
item.setCategory(getCategory(rs.getInt("category")));
|
||||
drops.getItem().add(item);
|
||||
}
|
||||
if (drops.size() == 0)
|
||||
if (drops.getItem().size() == 0)
|
||||
return null;
|
||||
return drops;
|
||||
}
|
||||
|
||||
private static TalkMetadata fillHtmlChat(int npcId) throws IOException {
|
||||
final TalkMetadata talk = new TalkMetadata();
|
||||
talk.defaultChat = "default";
|
||||
talk.chats = CollectionFactory.newList();
|
||||
private static Talk fillHtmlChat(final ObjectFactory factory, int npcId) throws IOException {
|
||||
final Talk talk = factory.createNPCTemplateTalk();
|
||||
talk.setDefault("default");
|
||||
for (final File file : htmlScannedFiles) {
|
||||
String id = null;
|
||||
if (file.getName().startsWith(npcId + "-")) {
|
||||
@@ -362,21 +381,21 @@ public class NPCTemplateConverter {
|
||||
if (id != null && !file.getAbsolutePath().contains("/half/")
|
||||
&& !file.getAbsolutePath().contains("/free/")) {
|
||||
Chat chat = new Chat();
|
||||
chat.id = id;
|
||||
chat.html = FileUtils.readFileToString(file);
|
||||
talk.chats.add(chat);
|
||||
chat.setId(id);
|
||||
chat.setValue(FileUtils.readFileToString(file));
|
||||
talk.getChat().add(chat);
|
||||
}
|
||||
}
|
||||
|
||||
if (talk.chats.size() == 0)
|
||||
if (talk.getChat().size() == 0)
|
||||
return null;
|
||||
return talk;
|
||||
}
|
||||
|
||||
private static List<SkillMetadata> fillSkillList(ResultSet npcRs, int npcId)
|
||||
private static Skills fillSkillList(final ObjectFactory factory, ResultSet npcRs, int npcId)
|
||||
throws SQLException {
|
||||
final Connection conn = npcRs.getStatement().getConnection();
|
||||
final List<SkillMetadata> skills = CollectionFactory.newList();
|
||||
final Skills skills = factory.createNPCTemplateSkills();
|
||||
|
||||
final PreparedStatement st = conn
|
||||
.prepareStatement("SELECT * FROM npcskills WHERE npcid = ?");
|
||||
@@ -384,12 +403,12 @@ public class NPCTemplateConverter {
|
||||
st.execute();
|
||||
final ResultSet rs = st.getResultSet();
|
||||
while (rs.next()) {
|
||||
SkillMetadata m = new SkillMetadata();
|
||||
m.skill = new SkillTemplateID(rs.getInt("skillid"), null);
|
||||
m.level = rs.getInt("level");
|
||||
skills.add(m);
|
||||
Skills.Skill s = factory.createNPCTemplateSkillsSkill();
|
||||
s.setId(new SkillTemplateID(rs.getInt("skillid"), null));
|
||||
s.setLevel(rs.getInt("level"));
|
||||
skills.getSkill().add(s);
|
||||
}
|
||||
if (skills.size() == 0)
|
||||
if (skills.getSkill().size() == 0)
|
||||
return null;
|
||||
return skills;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* l2jserver2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* l2jserver2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with l2jserver2. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.tool.conversor.itemtemplate;
|
||||
|
||||
import com.l2jserver.model.template.item.ItemMaterial;
|
||||
|
||||
/**
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*
|
||||
*/
|
||||
public class XmlNsItemMaterialGenerator {
|
||||
public static void main(String[] args) {
|
||||
for (final ItemMaterial type : ItemMaterial.values()) {
|
||||
System.out.println("<xs:enumeration value=\"" + type.name()
|
||||
+ "\" />");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* l2jserver2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* l2jserver2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with l2jserver2. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.tool.conversor.itemtemplate;
|
||||
|
||||
import com.l2jserver.model.template.item.ItemType;
|
||||
|
||||
/**
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*
|
||||
*/
|
||||
public class XmlNsItemTypeGenerator {
|
||||
public static void main(String[] args) {
|
||||
for (final ItemType type : ItemType.values()) {
|
||||
System.out.println("<xs:enumeration value=\"" + type.name()
|
||||
+ "\" />");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
package com.l2jserver.tool.xml;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.SchemaOutputResolver;
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import com.l2jserver.model.template.SkillTemplate;
|
||||
import com.l2jserver.model.template.character.CharacterTemplate;
|
||||
import com.l2jserver.model.template.item.ItemTemplate;
|
||||
import com.l2jserver.model.template.npc.NPCTemplate;
|
||||
import com.l2jserver.service.game.template.XMLTemplateService.TeleportationTemplateContainer;
|
||||
|
||||
public class TemplateSchemaGeneratorMain {
|
||||
/**
|
||||
* @param args
|
||||
* none
|
||||
* @throws Exception
|
||||
* any exception
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
final File baseDir = new File("generated/schemas");
|
||||
|
||||
JAXBContext context = JAXBContext.newInstance(CharacterTemplate.class,
|
||||
NPCTemplate.class, ItemTemplate.class, SkillTemplate.class,
|
||||
TeleportationTemplateContainer.class);
|
||||
|
||||
context.generateSchema(new SchemaOutputResolver() {
|
||||
public Result createOutput(String namespaceUri,
|
||||
String suggestedFileName) throws IOException {
|
||||
switch (namespaceUri) {
|
||||
case "http://schemas.l2jserver2.com/teleport":
|
||||
suggestedFileName = "teleport.xsd";
|
||||
break;
|
||||
case "http://schemas.l2jserver2.com/skill":
|
||||
suggestedFileName = "skill.xsd";
|
||||
break;
|
||||
case "http://schemas.l2jserver2.com/npc":
|
||||
suggestedFileName = "npc.xsd";
|
||||
break;
|
||||
case "http://schemas.l2jserver2.com/item":
|
||||
suggestedFileName = "item.xsd";
|
||||
break;
|
||||
case "http://schemas.l2jserver2.com/character":
|
||||
suggestedFileName = "character.xsd";
|
||||
break;
|
||||
case "":
|
||||
namespaceUri = "[empty]";
|
||||
suggestedFileName = "l2jserver2.xsd";
|
||||
break;
|
||||
}
|
||||
|
||||
System.out.println(namespaceUri + " mapped to "
|
||||
+ suggestedFileName);
|
||||
return new StreamResult(new File(baseDir, suggestedFileName));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user