Hallo,
was ich suche würde man vermutlich einen Parser nennen..
Ums vorneweg zu erklären, es geht um ein Spiel namens Aion.. bzw. Server-Files dafür^^
Ich habe im Client also ein XML-Dokument, das Informationen zu NPCs enthält.. das sieht in etwa so aus:
[XML]<id>258201</id>
<name>LF4_2111_Boss_Li_2</name>
<desc>STR_LF4_2111_Boss_Li_2</desc>
<dir>Monster/GodEliteLF</dir>
<mesh>GodEliteLF</mesh>
<material>mat_flesh</material>
<foot_mat>foot_2leg_big</foot_mat>
<show_dmg_decal>1</show_dmg_decal>
<dmg_decal_texture>Damage_Decal_02</dmg_decal_texture>
<disk_type>guard</disk_type>
<ui_type>monster_raid</ui_type>
<cursor_type>attack</cursor_type>
<ui_race_type>light</ui_race_type>
<hide_path>1</hide_path>
<fxc_type>Henchwoman</fxc_type>
<sanctuary_animation>sanctuary</sanctuary_animation>
<visible_equipments>
<main>npc_orb_lfgod_01</main>
</visible_equipments>
<erect>1</erect>
<bound_radius>
<front>8.000000</front>
<side>5.000000</side>
<upper>21.500000</upper>
</bound_radius>
<scale>20</scale>
<weapon_scale>100</weapon_scale>
<altitude>0.000000</altitude>
<stare_angle>0.000000</stare_angle>
<stare_distance>0.000000</stare_distance>
<move_speed_normal_walk>0.000000</move_speed_normal_walk>
<art_org_move_speed_normal_walk>0.000000</art_org_move_speed_normal_walk>
<move_speed_normal_run>0.000000</move_speed_normal_run>
<move_speed_combat_run>0.000000</move_speed_combat_run>
<art_org_speed_combat_run>0.000000</art_org_speed_combat_run>
<weapon_hit_fx>sys_Monhit.monhit.P_hit</weapon_hit_fx>
<ammo_hit_fx>m_abs_chief.point.hit</ammo_hit_fx>
<in_time>0.100000</in_time>
<out_time>0.500000</out_time>
<neck_angle>0.000000</neck_angle>
<spine_angle>0.000000</spine_angle>
<pushed_range>0.000000</pushed_range>
<hpgauge_level>27</hpgauge_level>
<magical_skill_boost>0</magical_skill_boost>
<attack_delay>2000</attack_delay>
<game_lang>light</game_lang>
<ai_name>LF4_GH</ai_name>
<quest_ai_name>LF4_2111_Boss_Li_2</quest_ai_name>
<tribe>Guard</tribe>
<race_type>GChief_Light</race_type>
<pet_ai_name>Pet</pet_ai_name>
<sensory_range>20.000000</sensory_range>
<attack_range>37.000000</attack_range>
<attack_rate>1000</attack_rate>
<npc_type>Abyss_Guard</npc_type>
<talking_distance>0.000000</talking_distance>
<abyss_npc_type>boss</abyss_npc_type>
</npc_client>[/XML]
am ende soll es in den serverdateien so aussehen:
[XML] <npc_template npc_id="258201" level="27" name="enraged veille" name_id="320036" npc_type="ATTACKABLE" height="0.7" rank="NORMAL" race="GCHIEF_LIGHT" tribe="GUARD" ai="aggressive" srange="20" arange="37" adelay="2000" arate="1000" hpgauge="27">
<stats maxHp="108" maxXp="108" block="100" parry="11" mdef="11" pdef="11" crit="11" power="11" evasion="11" accuracy="11" magic_accuracy="11" walk_speed="0.0" run_speed="0.0" run_speed_fight="0.0" fly_speed="0.0"/>
<equipment>
<item>100500746</item>
</equipment>
<bound_radius front="8.0" side="5.0" upper="21.5"/>
</npc_template>[/XML]
die Schwierigkeit besteht eigendlich darin, dass einige Elemente in den Client-Files auf andere Dokumente verweisen (wie z.B. Items oder Beschreibungen)
und folglich erst aus den anderen Dokumenten herausgezogen werden müssen..
der Name z.B. kommt aus der Client_Strings.xml und der Eintrag sieht ungefähr so aus:
[XML] <string>
<id>320035</id>
<name>STR_LF4_2111_Boss_Li_2</name>
<body>Zorn-Veille</body>
</string>[/XML]
also muss der Parser erst in der client_npcs.xml nach dem <name> bzw. <desc> suchen und den gleichen dann auch in der client_strings.xml und da den <body> dann in den Serverfiles als name="" angeben.
das Gleiche gilt für Items, die in der client_npcs.xml als <main> (für haupthand) <sub> (für nebenhand) etc. eingetragen sind und entsprechend der Beschreibung erst in der client_item.xml gesucht werden müssen, die so aussieht:
[XML]<id>100500746</id>
<name>npc_orb_lfgod_01</name>
<desc>STR_NPC_ORB_LFGOD_01</desc>
<weapon_type>2h_orb</weapon_type>
<item_type>normal</item_type>[/XML]
in diesem Fall soll der Parser in der client_npcs.xml erst nach <main>, <sub> oder <...> suchen, danach entsprechend in der client_items.xml das richtige item finden und <id> als <item> in die Serverfiles schreiben
Ich hoffe, ich hab das einigermaßen verständlich beschreiben >,<
Die meisten Elemente werden ja eigendlich 1 zu 1 übernommen^^
Da ich aber von Java viel zu wenig Ahnung habe um überhaupt einen Ansatz auf die Beine stellen zu können, frag ich euch^^
Hoffentlich kann mir da Jemand weiterhelfen und so einen Parser schreiben >,<
Vielen vielen Dank,
ara
was ich suche würde man vermutlich einen Parser nennen..
Ums vorneweg zu erklären, es geht um ein Spiel namens Aion.. bzw. Server-Files dafür^^
Ich habe im Client also ein XML-Dokument, das Informationen zu NPCs enthält.. das sieht in etwa so aus:
[XML]<id>258201</id>
<name>LF4_2111_Boss_Li_2</name>
<desc>STR_LF4_2111_Boss_Li_2</desc>
<dir>Monster/GodEliteLF</dir>
<mesh>GodEliteLF</mesh>
<material>mat_flesh</material>
<foot_mat>foot_2leg_big</foot_mat>
<show_dmg_decal>1</show_dmg_decal>
<dmg_decal_texture>Damage_Decal_02</dmg_decal_texture>
<disk_type>guard</disk_type>
<ui_type>monster_raid</ui_type>
<cursor_type>attack</cursor_type>
<ui_race_type>light</ui_race_type>
<hide_path>1</hide_path>
<fxc_type>Henchwoman</fxc_type>
<sanctuary_animation>sanctuary</sanctuary_animation>
<visible_equipments>
<main>npc_orb_lfgod_01</main>
</visible_equipments>
<erect>1</erect>
<bound_radius>
<front>8.000000</front>
<side>5.000000</side>
<upper>21.500000</upper>
</bound_radius>
<scale>20</scale>
<weapon_scale>100</weapon_scale>
<altitude>0.000000</altitude>
<stare_angle>0.000000</stare_angle>
<stare_distance>0.000000</stare_distance>
<move_speed_normal_walk>0.000000</move_speed_normal_walk>
<art_org_move_speed_normal_walk>0.000000</art_org_move_speed_normal_walk>
<move_speed_normal_run>0.000000</move_speed_normal_run>
<move_speed_combat_run>0.000000</move_speed_combat_run>
<art_org_speed_combat_run>0.000000</art_org_speed_combat_run>
<weapon_hit_fx>sys_Monhit.monhit.P_hit</weapon_hit_fx>
<ammo_hit_fx>m_abs_chief.point.hit</ammo_hit_fx>
<in_time>0.100000</in_time>
<out_time>0.500000</out_time>
<neck_angle>0.000000</neck_angle>
<spine_angle>0.000000</spine_angle>
<pushed_range>0.000000</pushed_range>
<hpgauge_level>27</hpgauge_level>
<magical_skill_boost>0</magical_skill_boost>
<attack_delay>2000</attack_delay>
<game_lang>light</game_lang>
<ai_name>LF4_GH</ai_name>
<quest_ai_name>LF4_2111_Boss_Li_2</quest_ai_name>
<tribe>Guard</tribe>
<race_type>GChief_Light</race_type>
<pet_ai_name>Pet</pet_ai_name>
<sensory_range>20.000000</sensory_range>
<attack_range>37.000000</attack_range>
<attack_rate>1000</attack_rate>
<npc_type>Abyss_Guard</npc_type>
<talking_distance>0.000000</talking_distance>
<abyss_npc_type>boss</abyss_npc_type>
</npc_client>[/XML]
am ende soll es in den serverdateien so aussehen:
[XML] <npc_template npc_id="258201" level="27" name="enraged veille" name_id="320036" npc_type="ATTACKABLE" height="0.7" rank="NORMAL" race="GCHIEF_LIGHT" tribe="GUARD" ai="aggressive" srange="20" arange="37" adelay="2000" arate="1000" hpgauge="27">
<stats maxHp="108" maxXp="108" block="100" parry="11" mdef="11" pdef="11" crit="11" power="11" evasion="11" accuracy="11" magic_accuracy="11" walk_speed="0.0" run_speed="0.0" run_speed_fight="0.0" fly_speed="0.0"/>
<equipment>
<item>100500746</item>
</equipment>
<bound_radius front="8.0" side="5.0" upper="21.5"/>
</npc_template>[/XML]
die Schwierigkeit besteht eigendlich darin, dass einige Elemente in den Client-Files auf andere Dokumente verweisen (wie z.B. Items oder Beschreibungen)
und folglich erst aus den anderen Dokumenten herausgezogen werden müssen..
der Name z.B. kommt aus der Client_Strings.xml und der Eintrag sieht ungefähr so aus:
[XML] <string>
<id>320035</id>
<name>STR_LF4_2111_Boss_Li_2</name>
<body>Zorn-Veille</body>
</string>[/XML]
also muss der Parser erst in der client_npcs.xml nach dem <name> bzw. <desc> suchen und den gleichen dann auch in der client_strings.xml und da den <body> dann in den Serverfiles als name="" angeben.
das Gleiche gilt für Items, die in der client_npcs.xml als <main> (für haupthand) <sub> (für nebenhand) etc. eingetragen sind und entsprechend der Beschreibung erst in der client_item.xml gesucht werden müssen, die so aussieht:
[XML]<id>100500746</id>
<name>npc_orb_lfgod_01</name>
<desc>STR_NPC_ORB_LFGOD_01</desc>
<weapon_type>2h_orb</weapon_type>
<item_type>normal</item_type>[/XML]
in diesem Fall soll der Parser in der client_npcs.xml erst nach <main>, <sub> oder <...> suchen, danach entsprechend in der client_items.xml das richtige item finden und <id> als <item> in die Serverfiles schreiben
Ich hoffe, ich hab das einigermaßen verständlich beschreiben >,<
Die meisten Elemente werden ja eigendlich 1 zu 1 übernommen^^
Da ich aber von Java viel zu wenig Ahnung habe um überhaupt einen Ansatz auf die Beine stellen zu können, frag ich euch^^
Hoffentlich kann mir da Jemand weiterhelfen und so einen Parser schreiben >,<
Vielen vielen Dank,
ara