ZnoteAAC/items.php
2020-08-02 14:48:13 +02:00

395 lines
12 KiB
PHP

<?php require_once 'engine/init.php'; include 'layout/overall/header.php';
if($config['items'] == true) {
// Loading equipable items list
$itemsCache = new Cache('engine/cache/items');
if (user_logged_in() && is_admin($user_data)) {
if (isset($_GET['update'])) {
echo "<p><strong>Logged in as admin, loading engine/XML/items.xml file and updating cache.</strong></p>";
// ITEMS XML TO PHP ARRAY
$itemsXML = simplexml_load_file("engine/XML/items.xml");
if ($itemsXML !== false) {
$types = array();
$type_attr = array();
$groups = array();
// This empty array will eventually contain all items grouped by type and indexed by item type
$items = array();
// Loop through each XML item object
foreach ($itemsXML as $type => $item) {
// Get item types
if (!in_array($type, $types)) {
$types[] = $type;
$type_attr[$type] = array();
}
// Get item attributes
$attributes = array();
// Extract attribute values from the XML object and store it in a more manage friendly way $attributes
foreach ($item->attributes() as $aName => $aValue)
$attributes["$aName"] = "$aValue";
// Remove unececsary attributes
if (isset($attributes['plural'])) unset($attributes['plural']);
//if (isset($attributes['id'])) unset($attributes['id']);
//if (isset($attributes['fromid'])) unset($attributes['fromid']);
//if (isset($attributes['toid'])) unset($attributes['toid']);
if (isset($attributes['editorsuffix'])) unset($attributes['editorsuffix']);
if (isset($attributes['article'])) unset($attributes['article']);
// Populate type attributes
foreach (array_keys($attributes) as $attr) {
if (!in_array($attr, $type_attr[$type]))
$type_attr[$type][] = $attr;
}
// Loop through every <attribute> object inside the <item> object
$item_attributes = array();
$iai = array();
foreach ($item as $attribute) {
foreach ($attribute->attributes() as $aName => $aValue) {
if($aName == 'key') {
$attribute_attributes["$aName"] = "$aValue";
$iai[] = $attribute_attributes[$aName];
}
}
}
foreach ($item as $attribute) {
foreach ($attribute->attributes() as $aName => $aValue) {
$attribute_attributes["$aName"] = "$aValue";
if(in_array($attribute_attributes[$aName], $iai)) {
$whatis = $attribute_attributes[$aName];
} else {
$item_attributes[$whatis] = (isset($attribute_attributes[$aName])) ? $attribute_attributes[$aName] : false;
}
}
}
foreach (array_keys($attributes) as $attr) {
if (!in_array($attr, $type_attr[$type]))
$type_attr[$type][] = $attr;
}
// Add items with slotType or weaponType (TFS 1.x default)
if(isset($attributes['id'])) $id = (isset($attributes['id'])) ? $attributes['id'] : false;
if(isset($attributes['fromid'])) $id = (isset($attributes['name'])) ? $attributes['name'] : false;
if (isset($item_attributes['slotType']) || isset($item_attributes['weaponType'])) {
$items[$type][$id] = array('attributes' => $item_attributes);
// Populate item array with potential relevant attributes for the item type
foreach ($type_attr[$type] as $att)
$items[$type][$id][$att] = (isset($attributes[$att])) ? $attributes[$att] : false;
}
$save = array($items);
}
$itemsCache->setContent($items);
$itemsCache->save();
} else {
echo "<p><strong>Failed to load engine/XML/items.xml file.</strong></p>";
}
} else {
$items = $itemsCache->load();
?>
<form action="">
<input type="submit" name="update" value="Generate new cache">
</form>
<?php
}
// END ITEMS XML TO PHP ARRAY
} else {
$items = $itemsCache->load();
}
// End loading items list
if ($items) {
// Preparing data
$types = array_keys($items);
$itemServer = 'http://'.$config['shop']['imageServer'].'/';
//slotType values and names
if(isset($_GET['slot'])) {
switch($_GET['slot']) {
case 'helmet':
$slottype = 'head';
$slottype_name = 'Helmets';
break;
case 'sword':
$slottype = 'sword';
$slottype_name = 'Swords';
break;
case 'distance':
$slottype = 'distance';
$slottype_name = 'Distance Weapons';
break;
case 'wand':
$slottype = 'wand';
$slottype_name = 'Wands & Rods';
break;
case 'armor':
$slottype = 'body';
$slottype_name = 'Armors';
break;
case 'club':
$slottype = 'club';
$slottype_name = 'Clubs';
break;
case 'ammunition':
$slottype = 'ammunition';
$slottype_name = 'Ammunition';
break;
case 'book':
$slottype = 'shield';
$slottype_name = 'Spellbooks';
break;
case 'legs':
$slottype = 'legs';
$slottype_name = 'Legs';
break;
case 'axe':
$slottype = 'axe';
$slottype_name = 'Axes';
break;
case 'necklace':
$slottype = 'necklace';
$slottype_name = 'Amulets & Necklaces';
break;
case 'feet':
$slottype = 'feet';
$slottype_name = 'Boots';
break;
case 'shield':
$slottype = 'shield';
$slottype_name = 'Shields & Spellbooks';
break;
case 'backpack':
$slottype = 'backpack';
$slottype_name = 'Backpacks';
break;
case 'ring':
$slottype = 'ring';
$slottype_name = 'Rings';
break;
default:
$slottype_name = 'null';
break;
}
}
// Render HTML
if(isset($_GET['slot']) && ($slottype_name == 'null')) header("Location:items.php");
?>
<h1 id="items">Items<?php if (isset($_GET['slot'])) echo ' ('.$slottype_name.')';?></h1>
<?php if(empty($_GET['slot'])) { ?>
<table>
<tbody>
<tr>
<td style="text-align:center;"><a href="?slot=helmet">Helmets<br><img src="<?php echo $itemServer.'2471.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=sword">Swords<br><img src="<?php echo $itemServer.'8931.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=shield">Shields & Spellbooks<br><img src="<?php echo $itemServer.'2523.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=necklace">Amulets<br><img src="<?php echo $itemServer.'2173.gif'; ?>" /></a></td>
</tr>
<tr>
<td style="text-align:center;"><a href="?slot=armor">Armors<br><img src="<?php echo $itemServer.'2466.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=club">Clubs<br><img src="<?php echo $itemServer.'2444.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=wand">Wands & Rods<br><img src="<?php echo $itemServer.'2190.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=ammunition">Ammunition<br><img src="<?php echo $itemServer.'6529.gif'; ?>" /></a></td>
</tr>
<tr>
<td style="text-align:center;"><a href="?slot=legs">Legs<br><img src="<?php echo $itemServer.'2470.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=axe">Axes<br><img src="<?php echo $itemServer.'8925.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=ring">Rings<br><img src="<?php echo $itemServer.'6093.gif'; ?>" /></a></td>
</tr>
<tr>
<td style="text-align:center;"><a href="?slot=feet">Boots<br><img src="<?php echo $itemServer.'2646.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=distance">Distance<br><img src="<?php echo $itemServer.'5803.gif'; ?>" /></a></td>
<td style="text-align:center;"><a href="?slot=backpack">Backpacks<br><img src="<?php echo $itemServer.'9774.gif'; ?>" /></a></td>
</tr>
</tbody>
</table>
<?php } else { ?>
<table>
<tbody>
<tr>
<td></td>
<td>Name</td>
<td>Attributes</td>
</tr>
<?php foreach ($items['item'] as $select) {
$attributes = array();
$extradef = NULL;
$element = NULL;
if (!empty($select['id'])) $itemid = $select['id'];
else $itemid = $select['fromid'];
if (!empty($select['attributes'])) {
foreach ($select['attributes'] as $att => $value) {
if($att == 'slotType' || $att == 'weaponType') $slotType = $value;
if(!empty($slotType) && $slotType == $slottype) $show = true;
else $show = false;
}
}
if($show == true) { ?>
<tr>
<td><img src="<?php echo $itemServer.$itemid.'.gif'; ?>" /></td>
<td><?php echo ucwords($select['name']); ?></td>
<td><?php
foreach ($select['attributes'] as $array => $value) {
$extra = NULL;
if($value > 0) $extra = '+';
switch ($array) {
case 'weight':
echo ucwords($array).': '.intval($value/100).'.'.substr($value, -2).' oz<br>';
break;
case 'containerSize':
echo 'Slots: '.$value.'<br>';
break;
case 'armor':
echo ucwords($array).': '.$value.'<br>';
break;
case 'attack':
echo ucwords($array).': '.$value;
if($element != NULL) echo ' ('.$element.')';
echo '<br>';
break;
case 'defense':
echo ucwords($array).': '.$value;
if($extradef != NULL) echo ' ('.$extradef.')';
echo '<br>';
break;
case 'skillFist':
echo 'Fist Fighting: '.$extra.$value.'<br>';
break;
case 'skillAxe':
echo 'Axe Fighting: '.$extra.$value.'<br>';
break;
case 'skillSword':
echo 'Sword Fighting: '.$extra.$value.'<br>';
break;
case 'skillClub':
echo 'Club Fighting: '.$extra.$value.'<br>';
break;
case 'skillAxe':
echo 'Axe Fighting: '.$extra.$value.'<br>';
break;
case 'skillDist':
echo 'Distance Fighting: '.$extra.$value.'<br>';
break;
case 'skillShield':
echo 'Shielding: '.$extra.$value.'<br>';
break;
case 'range':
echo ucwords($array).': '.$value.'<br>';
break;
case 'shootType':
echo 'Shoot Type: '.ucwords($value).'<br>';
break;
case 'hitChance':
echo 'Hit: '.$extra.$value.'%<br>';
break;
case 'magiclevelpoints':
echo 'Magic Level: '.$extra.$value.'<br>';
break;
case 'absorbPercentEnergy':
echo 'Energy Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentFire':
echo 'Fire Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentEarth':
echo 'Earth Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentPoison':
echo 'Poison Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentIce':
echo 'Ice Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentHoly':
echo 'Holy Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentDeath':
echo 'Death Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentLifeDrain':
echo 'Life Drain Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentManaDrain':
echo 'Mana Drain Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentDrown':
echo 'Drown Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentPhysical':
echo 'Physical Protection: '.$extra.$value.'%<br>';
break;
case 'absorbPercentIce':
echo 'Ice Protection: '.$extra.$value.'%<br>';
break;
/**case 'suppressDrunk':
echo 'Suppress Drunk: Yes<br>';
break;
case 'suppressEnergy':
echo 'Suppress Energy: Yes<br>';
break;
case 'suppressFire':
echo 'Suppress Fire: Yes<br>';
break;
case 'suppressPoison':
echo 'Suppress Poison: Yes<br>';
break;
case 'suppressDrown':
echo 'Suppress Drown: Yes<br>';
break;
case 'suppressPhysical':
echo 'Suppress Bleeding: Yes<br>';
break;
case 'suppressFreeze':
echo 'Suppress Freeze: Yes<br>';
break;
case 'suppressDazzle':
echo 'Suppress Dazzle: Yes<br>';
break;
case 'suppressCurse':
echo 'Suppress Curse: Yes<br>';
break;
Those are not necessary in my opinion, but if you want to show
**/
case 'speed':
echo 'Speed: '.$extra.($value/2).'<br>';
break;
case 'charges':
echo 'Charges: '.$value.'<br>';
break;
}
}
?>
</td>
</tr>
<?php
}
} ?>
</tbody>
</table>
<?php
}
} else { ?>
<h1>Items</h1>
<p>Items have currently not been loaded into the website by the server admin.</p>
<?php }
} else {
echo 'Items\' page not enabled.';
}
include 'layout/overall/footer.php';
?>