如何解决使用php解析XML文件,获取外观类型
您好,各位程序员,自昨天以来,我一直在努力修复我的代码... 我设法从random-monster.xml文件中解析 LOOT LIST ,这部分代码很好用,但是我无法解析外观类型=“ id” 以用于 animoutfit.php?id ='。 $ look。 '” 。
PHP代码:
<?php
$items = simplexml_load_file($otdir . '/data/items/items.xml') or die('<b>Could not load items!</b>');
foreach($items->item as $v)
$itemList[(int)$v['id']] = $v['name'];
$monsters = simplexml_load_file($otdir . '/data/monster/monsters.xml') or die('<b>Could not load monsters!</b>');
foreach($monsters->monster as $monster) {
$loot = simplexml_load_file($otdir . '/data/monster/' . $monster['file']);
if($loot) {
if($item = $loot->loot->item) {
echo '
<img src="https://blwro.pl/test/test/animoutfit.php?id='. $look . '" width="45"/>
<a id="' . ++$i . '" style="text-decoration: none; font: bold 21px verdana; color: orange;" href="javascript:void(0);" onclick="toggleVisibility(this)">[+] ' . $monster['name'] . '</a>
<br /><div style="display: none;" id="d' . $i . '">
<pre>>>> <b></b><br /><br />';
addLoot($item);
echo '</pre></div>';
} elseif(isset($_GET['hideempty']))
echo '<span style="font: bold 21px verdana; color: red;">[x] ' . $monster['name'] . '</span><br />';
} elseif(isset($_GET['hidefail']))
echo '<span style="color: grey;">Failed to load monster <b>' . $monster[name] . '</b> <i>(' . $monster[file] . ')</i><br />';
}
function addLoot($loot,$level=1) {
foreach($loot as $test) {
$chance = $test['chance'];
if(!$chance)
$chance = $test['chance1'];
printLoot($level,$test['id'],$test['countmax'],$chance);
foreach($test as $k => $v)
addLoot($v->item,$level + 1);
}
}
function printLoot($level,$itemid,$count,$chance) {
global $itemList,$rarity;
$chance /= 1000;
if(!isset($_GET['lootrate'])) {
global $lootRate;
$chance *= $lootRate;
}
foreach($rarity as $lootRarity => $percent){
if($chance >= $percent) {
echo str_repeat("",$level) . '<span style="color: #7878FF; font: bold 21px verdana; font-weight: 21px bold; "><u>' . ($count ? $count : 1) . '</u><img src="https://blwro.pl/items/'. $itemid . '.png" width="45"/> <span style="color: #7878FF; font: bold 21px verdana; font-weight: 21px bold; ">' . $itemList[(int)$itemid] . '</span> ' . $item . ' <span style="color: #312f66; font: bold 21px verdana; font-weight: bold;">' . $lootRarity . '</span> (<span style="color: #b51919; font: bold 21px verdana;">' . $chance . '%</span>)<br />';
break;
}
}
}
?>
示例XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<monster name="Arrancarnar" nameDescription="a Arrancarnar" race="undead" experience="206000" speed="360" manacost="90000">
<health now="315000" max="315000"/>
<look type="341" head="0" body="123" legs="97" feet="94" corpse="6068"/>
<targetchange interval="10000" chance="20"/>
<strategy attack="100" defense="0"/>
<flags>
<flag summonable="0"/>
<flag attackable="1"/>
<flag hostile="1"/>
<flag illusionable="0"/>
<flag convinceable="0"/>
<flag pushable="0"/>
<flag canpushitems="1"/>
<flag canpushcreatures="1"/>
<flag staticattack="98"/>
<flag targetdistance="1"/>
<flag runonhealth="500"/>
</flags>
<attacks>
<attack name="death" interval="1200" min="-6200" max="-12350"/>
<attack name="death" interval="1500" chance="34" range="7" radius="1" target="1" min="-4920" max="-8270">
<attribute key="shootEffect" value="whirlwindsword"/>
<attribute key="areaEffect" value="redspark"/>
</attack>
<attack name="death" interval="1500" chance="50" length="6" spread="0" min="-6500" max="-9700">
<attribute key="areaEffect" value="mortarea"/>
</attack>
<attack name="death" interval="1000" chance="35" range="7" radius="4" target="0" min="-8200" max="-13500">
<attribute key="areaEffect" value="mortarea"/>
</attack>
</attacks>
<defenses armor="195" defense="205">
<defense name="healing" interval="3000" chance="45" min="500" max="50000">
<attribute key="areaEffect" value="blueshimmer"/>
</defense>
<defense name="speed" interval="4000" chance="80" speedchange="440" duration="6000">
<attribute key="areaEffect" value="redshimmer"/>
</defense>
</defenses>
<elements>
<element firePercent="0"/>
<element energyPercent="0"/>
<element icePercent="0"/>
<element earthPercent="0"/>
<element holyPercent="0"/>
<element physicalPercent="0"/>
<element deathPercent="100"/>
</elements>
<immunities>
<immunity physical="0"/>
<immunity energy="0"/>
<immunity fire="0"/>
<immunity poison="0"/>
<immunity lifedrain="0"/>
<immunity paralyze="1"/>
<immunity outfit="1"/>
<immunity drunk="1"/>
<immunity invisible="1"/>
</immunities>
<voices interval="5000" chance="30">
<voice sentence="No one can stop me!"/>
<voice sentence="Hahaha!" yell="1"/>
<voice sentence="I will drain you'r soul!" yell="1"/>
</voices>
<loot>
<item id="2160" countmax="3" chance="6000"/><!-- platinium -->
<item id="10556" chance="5"/><!-- Hollow Ichigo Mask-->
<item id="10555" chance="5"/><!-- Hollow Ichigo Mask-->
<item id="2195" chance="10000"/><!-- boots of haste -->
<item id="7899" chance="12000"/><!--Shinigami Coua-->
<item id="7894" chance="12000"/><!-- Shinigami Legs -->
<item id="2152" countmax="10" chance="60000"/><!-- platinum coin -->
</loot>
</monster>
我删除了带有“外观”的部分,因为它不起作用/崩溃了整个脚本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。