mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 17:29:21 +02:00

* wip * wip * wip * wip * wip * fix: reusing pdo connection from pot * wip * wip * wip * wip * move files In future, all classes will be in src/ folder * Replace namespace name, for future * Remove duplicated exception * Fix towns from db * Fix spells page * Add default FAQ question + FAQ model * feat: reset colors in menus * Add confirm + save button at the top (menus) * Do not insert duplicated FAQ on install * Refactor install menus * Fix changelogs showing * Fix menu update, only with specified template name * Fix account create -> missing compat * Fix bans_per_page * banned_by is player_id. type = 2 is namelock in tfs 0.3 * Add getPlayerNameById, fix getPlayerNameByAccount * Change link name * Order by lastlogin * fix: query optimize * wip * wip * wip * wip * wip * wip * wip * Refactor notepad.php, class was useless * This is showing error, if the updated rows = 0 * Fix success & error class (bootstrap) * Uncomment require migrate.php * Some distro have owner_id * Update Player.php --------- Co-authored-by: slawkens <slawkens@gmail.com>
86 lines
1.9 KiB
PHP
86 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Weapons class
|
|
*
|
|
* @package MyAAC
|
|
* @author Gesior <jerzyskalski@wp.pl>
|
|
* @author Slawkens <slawkens@gmail.com>
|
|
* @copyright 2019 MyAAC
|
|
* @link https://my-aac.org
|
|
*/
|
|
|
|
use MyAAC\Models\Weapon;
|
|
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
|
|
class Weapons {
|
|
private static $error = '';
|
|
|
|
public static function loadFromXML($show = false)
|
|
{
|
|
global $config;
|
|
|
|
try {
|
|
Weapon::query()->delete();
|
|
} catch (PDOException $error) {
|
|
}
|
|
|
|
$file_path = $config['data_path'] . 'weapons/weapons.xml';
|
|
if (!file_exists($file_path)) {
|
|
self::$error = 'Cannot load file ' . $file_path;
|
|
return false;
|
|
}
|
|
|
|
$xml = new DOMDocument;
|
|
$xml->load($file_path);
|
|
|
|
foreach ($xml->getElementsByTagName('wand') as $weapon) {
|
|
self::parseNode($weapon, $show);
|
|
}
|
|
foreach ($xml->getElementsByTagName('melee') as $weapon) {
|
|
self::parseNode($weapon, $show);
|
|
}
|
|
foreach ($xml->getElementsByTagName('distance') as $weapon) {
|
|
self::parseNode($weapon, $show);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static function parseNode($node, $show = false) {
|
|
global $config;
|
|
|
|
$id = (int)$node->getAttribute('id');
|
|
$vocations_ids = array_flip($config['vocations']);
|
|
$level = (int)$node->getAttribute('level');
|
|
$maglevel = (int)$node->getAttribute('maglevel');
|
|
|
|
$vocations = array();
|
|
foreach($node->getElementsByTagName('vocation') as $vocation) {
|
|
$show = $vocation->getAttribute('showInDescription');
|
|
if(!empty($vocation->getAttribute('id')))
|
|
$voc_id = $vocation->getAttribute('id');
|
|
else {
|
|
$voc_id = $vocations_ids[$vocation->getAttribute('name')];
|
|
}
|
|
|
|
$vocations[$voc_id] = strlen($show) == 0 || $show != '0';
|
|
}
|
|
|
|
if(Weapon::find($id)) {
|
|
if($show) {
|
|
warning('Duplicated weapon with id: ' . $id);
|
|
}
|
|
}
|
|
else {
|
|
Weapon::create([
|
|
'id' => $id, 'level' => $level, 'maglevel' => $maglevel, 'vocations' => json_encode($vocations)
|
|
]);
|
|
}
|
|
}
|
|
|
|
public static function getError() {
|
|
return self::$error;
|
|
}
|
|
}
|