- Хроники
- Chaotic Throne: High Five
- Сборка
- Lostworld
Доброго времени, ищу парсер, у меня потребность перегнать с других сборок xml под лостворлд статы и дроп нпсов, а так же спавн, буду благодарен любым подсказкам!
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
А как иначе? Не думаю что существует парсер который перегоняет xml любой сборки в нужный. Написать такой не проблема, но универсального решения я думаю не существует. Да и зачем? С начальными знаниями в программировании такие парсеры пишутся за несколько часов.Писать парсер под конкретную задачу?
зачем xml перегонять в xml?)А как иначе? Не думаю что существует парсер который перегоняет xml любой сборки в нужный. Написать такой не проблема, но универсального решения я думаю не существует. Да и зачем? С начальными знаниями в программировании такие парсеры пишутся за несколько часов.
переделать дроп хочу, убрать комон предметы вернуть обычные и немного поправить сундукизачем xml перегонять в xml?)
не рассматриваю коммерческие предложения, получившийся парсер выложу в тему!Не думаю что существует какое-то универсальное решение, скорее всего придется искать исполнителя и платить за работу.
Спроси у автора темы)зачем xml перегонять в xml?)
Да ладно тебе, какую неделю? На php это делается за 1 день. По крайней мере я перегнал себе всех npc с PTS сборки за 1 день. А сейчас перегоняю итемы, что тоже займет 1-2 дня.Если xml то можно попробовать JSON, но это еще большая головная боль, чем писать парсер. Проще забить и выправить руками за пару недель - единственное эффективное с точки зрения минимального потери времени решение, которое я нашел. Спустить неделю в трубу и написать нерабочий парсер - нахрен оно не нужно.
<npc id="20055" pts_name="[seer]" name="Wandering Eye" title="">
<set name="displayid" value="0"/>
<set name="level" value="21"/>
<set name="race" value="construct"/>
<set name="sex" value="male"/>
<set name="type" value="L2Monster"/>
<set name="pts_type" value="warrior"/>
<set name="ai_type" value="Mystic"/>
<set name="aggro" value="0"/>
<set name="pts_agro_range" value="1000"/>
<set name="exp" value="917"/>
<set name="sp" value="42"/>
<set name="rp" value="0"/>
<set name="s_npc_prop_hp_rate" value="1"/>
<set name="org_hp" value="364.30351"/>
<set name="org_hp_regen" value="3.5"/>
<set name="org_mp" value="205.2"/>
<set name="org_mp_regen" value="1.5"/>
<set name="base_physical_attack" value="47.91924"/>
<set name="base_defend" value="89.73059"/>
<set name="base_magic_attack" value="32.72263"/>
<set name="base_magic_defend" value="59.7436374813816"/>
<set name="base_attack_speed" value="253"/>
<set name="base_attack_type" value="sword"/>
<set name="base_attack_range" value="40"/>
<set name="base_damage_range" value="0;0;80;120"/>
<set name="base_rand_dam" value="30"/>
<set name="base_critical" value="4"/>
<set name="physical_hit_modify" value="4.75"/>
<set name="physical_avoid_modify" value="0"/>
<set name="ground_high" value="159;0;0"/>
<set name="ground_low" value="90;0;0"/>
<set name="shield_defense_rate" value="0"/>
<set name="shield_defense" value="0"/>
<set name="str" value="40"/>
<set name="con" value="43"/>
<set name="dex" value="30"/>
<set name="int" value="21"/>
<set name="wit" value="20"/>
<set name="men" value="20"/>
<set name="ex_crt_effect" value="false"/>
<set name="undying" value="false"/>
<set name="can_move" value="true"/>
<set name="unsowing" value="false"/>
<set name="flying" value="false"/>
<set name="targetable" value="true"/>
<set name="show_name_tag" value="true"/>
<set name="can_be_attacked" value="true"/>
<set name="unique" value="false"/>
<set name="no_sleep_mode" value="false"/>
<set name="has_summoner" value="false"/>
<set name="passable_door" value="false"/>
<set name="event_flag" value="false"/>
<set name="shots" value="NONE"/>
<set name="soulshot_count" value="0"/>
<set name="spiritshot_count" value="0"/>
<set name="safe_height" value="100"/>
<set name="corpse_time" value="7"/>
<set name="base_reuse_delay" value="0"/>
<set name="hit_time_factor" value="0.3"/>
<set name="class" value="monster_eye"/>
<set name="collision_radius" value="21.0"/>
<set name="collision_height" value="43.0"/>
<set name="rhand" value="0"/>
<set name="lhand" value="0"/>
<set name="armor" value="0"/>
<faction name="" range="300"/>
<attributes>
<defence attribute="fire" value="20"/>
<defence attribute="water" value="20"/>
<defence attribute="wind" value="-5"/>
<defence attribute="earth" value="20"/>
<defence attribute="holy" value="20"/>
<defence attribute="unholy" value="20"/>
</attributes>
<passive_skills>
<skill pts_name="[s_npc_prop_race_construct]"/>
<skill pts_name="[s_npc_prop_hp_lv_p0]"/>
<skill pts_name="[s_npc_prop_mp_lv_p0]"/>
<skill pts_name="[s_npc_prop_pa_lv_n1]"/>
<skill pts_name="[s_npc_prop_ma_lv_n1]"/>
<skill pts_name="[s_npc_prop_pd_lv_p1]"/>
<skill pts_name="[s_npc_prop_md_lv_p1]"/>
<skill pts_name="[s_npc_prop_armor_type_n]"/>
<skill pts_name="[s_npc_prop_weapon_type_sword]"/>
<skill pts_name="[s_npc_weakness_bow1]"/>
</passive_skills>
<npc_ai name="seer">
<param name="MoveAroundSocial" value="0"/>
<param name="MoveAroundSocial1" value="0"/>
<param name="MoveAroundSocial2" value="0"/>
<param name="SoulShot" value="200"/>
<param name="SoulShotRate" value="5"/>
<param name="SpiritShot" value="100"/>
<param name="SpiritShotRate" value="5"/>
<param name="W_LongRangeDDMagic" value="[s_mega_storm_strike_magic_only2]"/>
<param name="W_ShortRangeDDMagic" value="[s_npc_aura_burn_magic_only2]"/>
</npc_ai>
<rewardlist type="RATED_GROUPED">
<group chance="70">
<reward item_id="57" chance="100.0" min="156" max="278" name="Adena"/>
</group>
<group chance="0.1338">
<reward item_id="219" chance="8.0235" min="1" max="1" name="Sword Breaker"/>
<reward item_id="2015" chance="91.9765" min="1" max="1" name="Sword Breaker Edge"/>
</group>
<group chance="14.1429">
<reward item_id="1869" chance="28.5484" min="1" max="1" name="Iron Ore"/>
<reward item_id="1864" chance="57.0968" min="1" max="1" name="Stem"/>
<reward item_id="1880" chance="2.8548" min="1" max="1" name="Steel"/>
<reward item_id="2177" chance="9.1209" min="1" max="1" name="Recipe: Bone Helmet"/>
<reward item_id="735" chance="2.3791" min="1" max="1" name="Alacrity Potion"/>
</group>
</rewardlist>
<rewardlist type="SWEEP">
<reward item_id="2176" chance="16.3503" min="1" max="1" name="Recipe: Leather Boots"/>
<reward item_id="1928" chance="4.9777" min="1" max="1" name="Piece Bone Gaiters Fragment"/>
<reward item_id="1926" chance="3.4517" min="1" max="1" name="Piece Bone Breastplate Fragment"/>
</rewardlist>
<rewardlist type="NOT_RATED_GROUPED">
<group chance="42">
<reward item_id="8600" chance="55.0" min="1" max="1" name="Herb of Life"/>
<reward item_id="8601" chance="38.0" min="1" max="1" name="Greater Herb of Life"/>
<reward item_id="8602" chance="7.0" min="1" max="1" name="Superior Herb of Life"/>
</group>
<group chance="11">
<reward item_id="8603" chance="26.0" min="1" max="1" name="Herb of Mana"/>
<reward item_id="8604" chance="65.0" min="1" max="1" name="Greater Herb of Mana"/>
<reward item_id="8605" chance="9.0" min="1" max="1" name="Superior Herb of Mana"/>
</group>
<group chance="25">
<reward item_id="8606" chance="20.0" min="1" max="1" name="Herb of Power"/>
<reward item_id="8608" chance="20.0" min="1" max="1" name="Herb of Alacrity"/>
<reward item_id="8610" chance="20.0" min="1" max="1" name="Herb of Critical Attack - Probability"/>
<reward item_id="10655" chance="20.0" min="1" max="1" name="Herb of Vampiric Rage"/>
<reward item_id="10656" chance="20.0" min="1" max="1" name="Herb of Critical Attack - Power"/>
</group>
<group chance="10">
<reward item_id="8607" chance="50.0" min="1" max="1" name="Herb of Magic"/>
<reward item_id="8609" chance="50.0" min="1" max="1" name="Herb of Casting Spd."/>
</group>
<group chance="1">
<reward item_id="8612" chance="33.0" min="1" max="1" name="Herb of the Warrior"/>
<reward item_id="8613" chance="33.0" min="1" max="1" name="Herb of the Mystic"/>
<reward item_id="8614" chance="34.0" min="1" max="1" name="Herb of Recovery"/>
</group>
<group chance="11">
<reward item_id="8611" chance="94.0" min="1" max="1" name="Herb of Speed"/>
<reward item_id="10657" chance="3.0" min="1" max="1" name="Herb of Doubt"/>
<reward item_id="13028" chance="3.0" min="1" max="1" name="Vitality Replenishing Herb"/>
</group>
</rewardlist>
</npc>
А зачем было перегонять если можно прямо с ПТС данных создавать объекты?)Да ладно тебе, какую неделю? На php это делается за 1 день. По крайней мере я перегнал себе всех npc с PTS сборки за 1 день. А сейчас перегоняю итемы, что тоже займет 1-2 дня.
XML:<npc id="20055" pts_name="[seer]" name="Wandering Eye" title=""> <set name="displayid" value="0"/> <set name="level" value="21"/> <set name="race" value="construct"/> <set name="sex" value="male"/> <set name="type" value="L2Monster"/> <set name="pts_type" value="warrior"/> <set name="ai_type" value="Mystic"/> <set name="aggro" value="0"/> <set name="pts_agro_range" value="1000"/> <set name="exp" value="917"/> <set name="sp" value="42"/> <set name="rp" value="0"/> <set name="s_npc_prop_hp_rate" value="1"/> <set name="org_hp" value="364.30351"/> <set name="org_hp_regen" value="3.5"/> <set name="org_mp" value="205.2"/> <set name="org_mp_regen" value="1.5"/> <set name="base_physical_attack" value="47.91924"/> <set name="base_defend" value="89.73059"/> <set name="base_magic_attack" value="32.72263"/> <set name="base_magic_defend" value="59.7436374813816"/> <set name="base_attack_speed" value="253"/> <set name="base_attack_type" value="sword"/> <set name="base_attack_range" value="40"/> <set name="base_damage_range" value="0;0;80;120"/> <set name="base_rand_dam" value="30"/> <set name="base_critical" value="4"/> <set name="physical_hit_modify" value="4.75"/> <set name="physical_avoid_modify" value="0"/> <set name="ground_high" value="159;0;0"/> <set name="ground_low" value="90;0;0"/> <set name="shield_defense_rate" value="0"/> <set name="shield_defense" value="0"/> <set name="str" value="40"/> <set name="con" value="43"/> <set name="dex" value="30"/> <set name="int" value="21"/> <set name="wit" value="20"/> <set name="men" value="20"/> <set name="ex_crt_effect" value="false"/> <set name="undying" value="false"/> <set name="can_move" value="true"/> <set name="unsowing" value="false"/> <set name="flying" value="false"/> <set name="targetable" value="true"/> <set name="show_name_tag" value="true"/> <set name="can_be_attacked" value="true"/> <set name="unique" value="false"/> <set name="no_sleep_mode" value="false"/> <set name="has_summoner" value="false"/> <set name="passable_door" value="false"/> <set name="event_flag" value="false"/> <set name="shots" value="NONE"/> <set name="soulshot_count" value="0"/> <set name="spiritshot_count" value="0"/> <set name="safe_height" value="100"/> <set name="corpse_time" value="7"/> <set name="base_reuse_delay" value="0"/> <set name="hit_time_factor" value="0.3"/> <set name="class" value="monster_eye"/> <set name="collision_radius" value="21.0"/> <set name="collision_height" value="43.0"/> <set name="rhand" value="0"/> <set name="lhand" value="0"/> <set name="armor" value="0"/> <faction name="" range="300"/> <attributes> <defence attribute="fire" value="20"/> <defence attribute="water" value="20"/> <defence attribute="wind" value="-5"/> <defence attribute="earth" value="20"/> <defence attribute="holy" value="20"/> <defence attribute="unholy" value="20"/> </attributes> <passive_skills> <skill pts_name="[s_npc_prop_race_construct]"/> <skill pts_name="[s_npc_prop_hp_lv_p0]"/> <skill pts_name="[s_npc_prop_mp_lv_p0]"/> <skill pts_name="[s_npc_prop_pa_lv_n1]"/> <skill pts_name="[s_npc_prop_ma_lv_n1]"/> <skill pts_name="[s_npc_prop_pd_lv_p1]"/> <skill pts_name="[s_npc_prop_md_lv_p1]"/> <skill pts_name="[s_npc_prop_armor_type_n]"/> <skill pts_name="[s_npc_prop_weapon_type_sword]"/> <skill pts_name="[s_npc_weakness_bow1]"/> </passive_skills> <npc_ai name="seer"> <param name="MoveAroundSocial" value="0"/> <param name="MoveAroundSocial1" value="0"/> <param name="MoveAroundSocial2" value="0"/> <param name="SoulShot" value="200"/> <param name="SoulShotRate" value="5"/> <param name="SpiritShot" value="100"/> <param name="SpiritShotRate" value="5"/> <param name="W_LongRangeDDMagic" value="[s_mega_storm_strike_magic_only2]"/> <param name="W_ShortRangeDDMagic" value="[s_npc_aura_burn_magic_only2]"/> </npc_ai> <rewardlist type="RATED_GROUPED"> <group chance="70"> <reward item_id="57" chance="100.0" min="156" max="278" name="Adena"/> </group> <group chance="0.1338"> <reward item_id="219" chance="8.0235" min="1" max="1" name="Sword Breaker"/> <reward item_id="2015" chance="91.9765" min="1" max="1" name="Sword Breaker Edge"/> </group> <group chance="14.1429"> <reward item_id="1869" chance="28.5484" min="1" max="1" name="Iron Ore"/> <reward item_id="1864" chance="57.0968" min="1" max="1" name="Stem"/> <reward item_id="1880" chance="2.8548" min="1" max="1" name="Steel"/> <reward item_id="2177" chance="9.1209" min="1" max="1" name="Recipe: Bone Helmet"/> <reward item_id="735" chance="2.3791" min="1" max="1" name="Alacrity Potion"/> </group> </rewardlist> <rewardlist type="SWEEP"> <reward item_id="2176" chance="16.3503" min="1" max="1" name="Recipe: Leather Boots"/> <reward item_id="1928" chance="4.9777" min="1" max="1" name="Piece Bone Gaiters Fragment"/> <reward item_id="1926" chance="3.4517" min="1" max="1" name="Piece Bone Breastplate Fragment"/> </rewardlist> <rewardlist type="NOT_RATED_GROUPED"> <group chance="42"> <reward item_id="8600" chance="55.0" min="1" max="1" name="Herb of Life"/> <reward item_id="8601" chance="38.0" min="1" max="1" name="Greater Herb of Life"/> <reward item_id="8602" chance="7.0" min="1" max="1" name="Superior Herb of Life"/> </group> <group chance="11"> <reward item_id="8603" chance="26.0" min="1" max="1" name="Herb of Mana"/> <reward item_id="8604" chance="65.0" min="1" max="1" name="Greater Herb of Mana"/> <reward item_id="8605" chance="9.0" min="1" max="1" name="Superior Herb of Mana"/> </group> <group chance="25"> <reward item_id="8606" chance="20.0" min="1" max="1" name="Herb of Power"/> <reward item_id="8608" chance="20.0" min="1" max="1" name="Herb of Alacrity"/> <reward item_id="8610" chance="20.0" min="1" max="1" name="Herb of Critical Attack - Probability"/> <reward item_id="10655" chance="20.0" min="1" max="1" name="Herb of Vampiric Rage"/> <reward item_id="10656" chance="20.0" min="1" max="1" name="Herb of Critical Attack - Power"/> </group> <group chance="10"> <reward item_id="8607" chance="50.0" min="1" max="1" name="Herb of Magic"/> <reward item_id="8609" chance="50.0" min="1" max="1" name="Herb of Casting Spd."/> </group> <group chance="1"> <reward item_id="8612" chance="33.0" min="1" max="1" name="Herb of the Warrior"/> <reward item_id="8613" chance="33.0" min="1" max="1" name="Herb of the Mystic"/> <reward item_id="8614" chance="34.0" min="1" max="1" name="Herb of Recovery"/> </group> <group chance="11"> <reward item_id="8611" chance="94.0" min="1" max="1" name="Herb of Speed"/> <reward item_id="10657" chance="3.0" min="1" max="1" name="Herb of Doubt"/> <reward item_id="13028" chance="3.0" min="1" max="1" name="Vitality Replenishing Herb"/> </group> </rewardlist> </npc>
А вот подготовительные работы для предметов:
Посмотреть вложение 39692
а в чем проблема? в том же пхп хмл-файл считывается в память в виде объекта по сути всего одной строкой (смотри в сторону функции simplexml_load_file)А как иначе? Не думаю что существует парсер который перегоняет xml любой сборки в нужный. Написать такой не проблема, но универсального решения я думаю не существует. Да и зачем? С начальными знаниями в программировании такие парсеры пишутся за несколько часов.
По сути да, тут уже вопрос привычки на самом деле. К слову со скиллами мы так и поступили, просто перегнали строки в xml теги с кучей атрибутов, решили не усложнять себе жизнь. А вот в итемах можно исключить определенные параметры, которые не используются в определенных типах предметов, что тоже упрощает дальнейшую работу с ними. Вобщем решили реализовать скиллдвиг нормально, и вытащили клубок в виде предметов, статов и прочей прелести, сидим теперь, не знаем за что ухватится =)А зачем было перегонять если можно прямо с ПТС данных создавать объекты?)
Хотя кому-то xml приятней в работе, я лично нажрался уже его и в итоге прямо с ПТС скриптов работаю
Да я понимаю как работать с xml в php, я к тому, что автору темы нужен парсер, который перегонит xml любой сборки под его сборку, с учетом неймингов, параметров и так далее. Я лишь говорю что универсального решения нет, так как нейминги, структура и т.п. отличаются.а в чем проблема? в том же пхп хмл-файл считывается в память в виде объекта по сути всего одной строкой (смотри в сторону функции simplexml_load_file)
после чего просто поезжаешся по этому объекту, вытаскивая нужные данные и сохраняя это все уже в новом, нужном формате.
ну или еще что с ними делаешь, все зависит от того чего ты хочешь.
Хз, после годов еботни в xml, в итоге перешел на птс структуру, которая занимает на много меньше места и проще редактируется в случае внедрения данных с других хроник (ctrl+c ctrl+v)По сути да, тут уже вопрос привычки на самом деле. К слову со скиллами мы так и поступили, просто перегнали строки в xml теги с кучей атрибутов, решили не усложнять себе жизнь. А вот в итемах можно исключить определенные параметры, которые не используются в определенных типах предметов, что тоже упрощает дальнейшую работу с ними. Вобщем решили реализовать скиллдвиг нормально, и вытащили клубок в виде предметов, статов и прочей прелести, сидим теперь, не знаем за что ухватится =)
Да я понимаю как работать с xml в php, я к тому, что автору темы нужен парсер, который перегонит xml любой сборки под его сборку, с учетом неймингов, параметров и так далее. Я лишь говорю что универсального решения нет, так как нейминги, структура и т.п. отличаются.
Действительно ваш совет достаточно ценный, но я все таки хочу остановиться на xml формате и все реализовать на Java. Ситуация напомнила офтотоп:Хз, после годов еботни в xml, в итоге перешел на птс структуру, которая занимает на много меньше места и проще редактируется в случае внедрения данных с других хроник (ctrl+c ctrl+v)
Полностью с тобой соглашусь), а касаемо переноса инфы с 1 хмл в формат другого парсер мин 30 час писать. на той же яве или пайтоне.Хз, после годов еботни в xml, в итоге перешел на птс структуру, которая занимает на много меньше места и проще редактируется в случае внедрения данных с других хроник (ctrl+c ctrl+v)
А я и говорю про реализацию считывания ПТС формата на Яве. Дело ваше что и как делать.Действительно ваш совет достаточно ценный, но я все таки хочу остановиться на xml формате и все реализовать на Java. Ситуация напомнила офтотоп:
не знаю, по мне так наоборот формат данных в птс кажется чрезмерно громоздким, особенно к примеру скиллдата та же - когда к примеру от уровня к уровню у скилла меняются значения дай бог одного-двух параметров, но ты должен все равно для каждого уровня полностью строки со всеми параметрами расписывать...Хз, после годов еботни в xml, в итоге перешел на птс структуру, которая занимает на много меньше места и проще редактируется в случае внедрения данных с других хроник (ctrl+c ctrl+v)