kliver/tc_aowow — Issue #1: [Quests] - Error al mostrar clase
Author: Jildor
Created: 2011-11-10 17:20:27+00:00
State: open

Hola buenas,

Creo que a la hora de mostrar una misión que tiene como requisito solo para X clases (SkillOrClassMask) sale la clase que no es.

He probado a añadir al código que muestro abajo el CLASS_DEATH_KNIGHT después de CLASS_PRIEST (el 32 que es el de DK) pero tampoco, no se que error hay.

Creo que lo que muestra las clases esta en:

quest.php

'value' => $quest['RequiredSkillValue']
);
}
elseif($quest['SkillOrClassMask']<0)
{
$s = array();
foreach($classes as $i => $class)
if (intval(-$quest['SkillOrClassMask']) & (1<<$i))
$s[] = $class;
if (count($s) == 0) $s[] = "UNKNOWN";
// Требуемый класс, что бы получить квест
$quest['reqclass'] = implode(", ", $s);
}

y $class creo que viene definido en:

includes/allutil.php

// Классы персонажей (битовые маски)
define('CLASS_WARRIOR', 1);
define('CLASS_PALADIN', 2);
define('CLASS_HUNTER', 4);
define('CLASS_ROGUE', 8);
define('CLASS_PRIEST', 16);
define('CLASS_SHAMAN', 64);
define('CLASS_MAGE', 128);
define('CLASS_WARLOCK', 256);
define('CLASS_DRUID', 1024);

// Классы персонажей (архив)
$classes = array(
1 => LOCALE_WARRIOR,
2 => LOCALE_PALADIN,
3 => LOCALE_HUNTER,
4 => LOCALE_ROGUE,
5 => LOCALE_PRIEST,
6 => LOCALE_DEATH_KNIGHT,
7 => LOCALE_SHAMAN,
8 => LOCALE_MAGE,
9 => LOCALE_WARLOCK,
11 => LOCALE_DRUID
);

----------------

// Классы, для которых предназначена вещь
function classes($class)
{
$tmp = '';
if($class & CLASS_WARRIOR)
$tmp = LOCALE_WARRIOR;
if($class & CLASS_PALADIN)
if($tmp) $tmp = $tmp.', '.LOCALE_PALADIN; else $tmp = LOCALE_PALADIN;
if($class & CLASS_HUNTER)
if($tmp) $tmp = $tmp.', '.LOCALE_HUNTER; else $tmp = LOCALE_HUNTER;
if($class & CLASS_ROGUE)
if($tmp) $tmp = $tmp.', '.LOCALE_ROGUE; else $tmp = LOCALE_ROGUE;
if($class & CLASS_PRIEST)
if($tmp) $tmp = $tmp.', '.LOCALE_PRIEST; else $tmp = LOCALE_PRIEST;
if($class & CLASS_SHAMAN)
if($tmp) $tmp = $tmp.', '.LOCALE_SHAMAN; else $tmp = LOCALE_SHAMAN;
if($class & CLASS_MAGE)
if($tmp) $tmp = $tmp.', '.LOCALE_MAGE; else $tmp = LOCALE_MAGE;
if($class & CLASS_WARLOCK)
if($tmp) $tmp = $tmp.', '.LOCALE_WARLOCK; else $tmp = LOCALE_WARLOCK;
if($class & CLASS_DRUID)
if($tmp) $tmp = $tmp.', '.LOCALE_DRUID; else $tmp = LOCALE_DRUID;
if($tmp == LOCALE_WARRIOR.', '.LOCALE_PALADIN.', '.LOCALE_HUNTER.', '.LOCALE_ROGUE
.', '.LOCALE_PRIEST.', '.LOCALE_SHAMAN.', '.LOCALE_MAGE.', '.LOCALE_WARLOCK.', '.LOCALE_DRUID)
return;
else
return $tmp;
}