Localization/Chinese

* added support for locale 4
* some strings are missing and will need to be translated at a later date
* thx @qyh214 for a lot of content

Co-authored-by: qyh214 <sandy0214qin@msn.com>
This commit is contained in:
Sarjuuk 2018-05-07 22:58:05 +02:00
parent 09d2013012
commit 761da59ee9
68 changed files with 6460 additions and 143 deletions

View file

@ -155,6 +155,7 @@ define('U_GROUP_PREMIUM_PERMISSIONS', (U_GROUP_PREMIUM|U_GROUP_STAFF|U_GRO
define('LOCALE_EN', 0);
define('LOCALE_FR', 2);
define('LOCALE_DE', 3);
define('LOCALE_CN', 4);
define('LOCALE_ES', 6);
define('LOCALE_RU', 8);

View file

@ -36,14 +36,16 @@ class AchievementList extends BaseType
$rewards = DB::World()->select('
SELECT
ar.ID AS ARRAY_KEY, ar.TitleA, ar.TitleH, ar.ItemID, ar.Sender AS sender, ar.MailTemplateID,
ar.Subject AS subject_loc0, IFNULL(arl2.Subject, "") AS subject_loc2, IFNULL(arl3.Subject, "") AS subject_loc3, IFNULL(arl6.Subject, "") AS subject_loc6, IFNULL(arl8.Subject, "") AS subject_loc8,
ar.Text AS text_loc0, IFNULL(arl2.Text, "") AS text_loc2, IFNULL(arl3.Text, "") AS text_loc3, IFNULL(arl6.Text, "") AS text_loc6, IFNULL(arl8.Text, "") AS text_loc8
ar.Subject AS subject_loc0, IFNULL(arl2.Subject, "") AS subject_loc2, IFNULL(arl3.Subject, "") AS subject_loc3, IFNULL(arl4.Subject, "") AS subject_loc4, IFNULL(arl6.Subject, "") AS subject_loc6, IFNULL(arl8.Subject, "") AS subject_loc8,
ar.Text AS text_loc0, IFNULL(arl2.Text, "") AS text_loc2, IFNULL(arl3.Text, "") AS text_loc3, IFNULL(arl4.Text, "") AS text_loc4, IFNULL(arl6.Text, "") AS text_loc6, IFNULL(arl8.Text, "") AS text_loc8
FROM
achievement_reward ar
LEFT JOIN
achievement_reward_locale arl2 ON arl2.ID = ar.ID AND arl2.Locale = "frFR"
LEFT JOIN
achievement_reward_locale arl3 ON arl3.ID = ar.ID AND arl3.Locale = "deDE"
LEFT JOIN
achievement_reward_locale arl4 ON arl4.ID = ar.ID AND arl4.Locale = "zhCN"
LEFT JOIN
achievement_reward_locale arl6 ON arl6.ID = ar.ID AND arl6.Locale = "esES"
LEFT JOIN

View file

@ -14,7 +14,7 @@ class CreatureList extends BaseType
protected $queryBase = 'SELECT ct.*, ct.id AS ARRAY_KEY FROM ?_creature ct';
public $queryOpts = array(
'ct' => [['ft', 'qse', 'dct1', 'dct2', 'dct3'], 's' => ', IFNULL(dct1.id, IFNULL(dct2.id, IFNULL(dct3.id, 0))) AS parentId, IFNULL(dct1.name_loc0, IFNULL(dct2.name_loc0, IFNULL(dct3.name_loc0, ""))) AS parent_loc0, IFNULL(dct1.name_loc2, IFNULL(dct2.name_loc2, IFNULL(dct3.name_loc2, ""))) AS parent_loc2, IFNULL(dct1.name_loc3, IFNULL(dct2.name_loc3, IFNULL(dct3.name_loc3, ""))) AS parent_loc3, IFNULL(dct1.name_loc6, IFNULL(dct2.name_loc6, IFNULL(dct3.name_loc6, ""))) AS parent_loc6, IFNULL(dct1.name_loc8, IFNULL(dct2.name_loc8, IFNULL(dct3.name_loc8, ""))) AS parent_loc8, IF(dct1.difficultyEntry1 = ct.id, 1, IF(dct2.difficultyEntry2 = ct.id, 2, IF(dct3.difficultyEntry3 = ct.id, 3, 0))) AS difficultyMode'],
'ct' => [['ft', 'qse', 'dct1', 'dct2', 'dct3'], 's' => ', IFNULL(dct1.id, IFNULL(dct2.id, IFNULL(dct3.id, 0))) AS parentId, IFNULL(dct1.name_loc0, IFNULL(dct2.name_loc0, IFNULL(dct3.name_loc0, ""))) AS parent_loc0, IFNULL(dct1.name_loc2, IFNULL(dct2.name_loc2, IFNULL(dct3.name_loc2, ""))) AS parent_loc2, IFNULL(dct1.name_loc3, IFNULL(dct2.name_loc3, IFNULL(dct3.name_loc3, ""))) AS parent_loc3, IFNULL(dct1.name_loc4, IFNULL(dct2.name_loc4, IFNULL(dct3.name_loc4, ""))) AS parent_loc4, IFNULL(dct1.name_loc6, IFNULL(dct2.name_loc6, IFNULL(dct3.name_loc6, ""))) AS parent_loc6, IFNULL(dct1.name_loc8, IFNULL(dct2.name_loc8, IFNULL(dct3.name_loc8, ""))) AS parent_loc8, IF(dct1.difficultyEntry1 = ct.id, 1, IF(dct2.difficultyEntry2 = ct.id, 2, IF(dct3.difficultyEntry3 = ct.id, 3, 0))) AS difficultyMode'],
'dct1' => ['j' => ['?_creature dct1 ON ct.cuFlags & 0x02 AND dct1.difficultyEntry1 = ct.id', true]],
'dct2' => ['j' => ['?_creature dct2 ON ct.cuFlags & 0x02 AND dct2.difficultyEntry2 = ct.id', true]],
'dct3' => ['j' => ['?_creature dct3 ON ct.cuFlags & 0x02 AND dct3.difficultyEntry3 = ct.id', true]],
@ -49,7 +49,7 @@ class CreatureList extends BaseType
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_creature WHERE id = ?d', $id);
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_creature WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}

View file

@ -73,7 +73,7 @@ class EnchantmentList extends BaseType
// use if you JUST need the name
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_itemenchantment WHERE id = ?d', $id );
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_itemenchantment WHERE id = ?d', $id );
return Util::localizedString($n, 'name');
}
// end static use

View file

@ -37,7 +37,7 @@ class FactionList extends BaseType
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_factions WHERE id = ?d', $id);
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_factions WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}

View file

@ -59,7 +59,7 @@ class GameObjectList extends BaseType
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_objects WHERE id = ?d', $id);
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_objects WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}

View file

@ -77,7 +77,7 @@ class ItemList extends BaseType
// use if you JUST need the name
public static function getName($id)
{
$n = DB::Aowow()->selectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_items WHERE id = ?d', $id);
$n = DB::Aowow()->selectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_items WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}
@ -814,7 +814,7 @@ class ItemList extends BaseType
if ($_ = $this->curTpl['socketBonus'])
{
$sbonus = DB::Aowow()->selectRow('SELECT * FROM ?_itemenchantment WHERE Id = ?d', $_);
$x .= '<span class="q'.($hasMatch ? '2' : '0').'">'.Lang::item('socketBonus').Lang::main('colon').'<a href="?enchantment='.$_.'">'.Util::localizedString($sbonus, 'name').'</a></span><br />';
$x .= '<span class="q'.($hasMatch ? '2' : '0').'">'.Lang::item('socketBonus', ['<a href="?enchantment='.$_.'">'.Util::localizedString($sbonus, 'name').'</a>']).'</span><br />';
}
// durability
@ -954,7 +954,7 @@ class ItemList extends BaseType
if (!$itemset->error && $itemset->pieceToSet)
{
$pieces = DB::Aowow()->select('
SELECT b.id AS ARRAY_KEY, b.name_loc0, b.name_loc2, b.name_loc3, b.name_loc6, b.name_loc8, GROUP_CONCAT(a.id SEPARATOR \':\') AS equiv
SELECT b.id AS ARRAY_KEY, b.name_loc0, b.name_loc2, b.name_loc3, b.name_loc4, b.name_loc6, b.name_loc8, GROUP_CONCAT(a.id SEPARATOR \':\') AS equiv
FROM ?_items a, ?_items b
WHERE a.slotBak = b.slotBak AND a.itemset = b.itemset AND b.id IN (?a)
GROUP BY b.id;',

View file

@ -112,7 +112,7 @@ class QuestList extends BaseType
// static use START
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_quests WHERE id = ?d', $id);
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_quests WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}
// static use END

View file

@ -40,7 +40,7 @@ class SkillList extends BaseType
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_skillline WHERE id = ?d', $id);
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_skillline WHERE id = ?d', $id);
return Util::localizedString($n, 'name');
}

View file

@ -57,7 +57,7 @@ class SpellList extends BaseType
's' => [['src', 'sr', 'ic', 'ica']], // 6: TYPE_SPELL
'ic' => ['j' => ['?_icons ic ON ic.id = s.iconId', true], 's' => ', ic.name AS iconString'],
'ica' => ['j' => ['?_icons ica ON ica.id = s.iconIdAlt', true], 's' => ', ica.name AS iconStringAlt'],
'sr' => ['j' => ['?_spellrange sr ON sr.id = s.rangeId'], 's' => ', sr.rangeMinHostile, sr.rangeMinFriend, sr.rangeMaxHostile, sr.rangeMaxFriend, sr.name_loc0 AS rangeText_loc0, sr.name_loc2 AS rangeText_loc2, sr.name_loc3 AS rangeText_loc3, sr.name_loc6 AS rangeText_loc6, sr.name_loc8 AS rangeText_loc8'],
'sr' => ['j' => ['?_spellrange sr ON sr.id = s.rangeId'], 's' => ', sr.rangeMinHostile, sr.rangeMinFriend, sr.rangeMaxHostile, sr.rangeMaxFriend, sr.name_loc0 AS rangeText_loc0, sr.name_loc2 AS rangeText_loc2, sr.name_loc3 AS rangeText_loc3, sr.name_loc4 AS rangeText_loc4, sr.name_loc6 AS rangeText_loc6, sr.name_loc8 AS rangeText_loc8'],
'src' => ['j' => ['?_source src ON type = 6 AND typeId = s.id', true], 's' => ', src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15, src16, src17, src18, src19, src20, src21, src22, src23, src24']
);
@ -138,7 +138,7 @@ class SpellList extends BaseType
// use if you JUST need the name
public static function getName($id)
{
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_spell WHERE id = ?d', $id );
$n = DB::Aowow()->SelectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_spell WHERE id = ?d', $id );
return Util::localizedString($n, 'name');
}
// end static use

View file

@ -71,6 +71,7 @@ class WorldEventList extends BaseType
IFNULL(h.name_loc0, e.description) AS name_loc0,
h.name_loc2,
h.name_loc3,
h.name_loc4,
h.name_loc6,
h.name_loc8
FROM

View file

@ -54,7 +54,7 @@ class ZoneList extends BaseType
// use if you JUST need the name
public static function getName($id)
{
$n = DB::Aowow()->selectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_zones WHERE id = ?d', $id );
$n = DB::Aowow()->selectRow('SELECT name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8 FROM ?_zones WHERE id = ?d', $id );
return Util::localizedString($n, 'name');
}

View file

@ -183,10 +183,11 @@ class User
{
$loc = strtolower(substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2));
switch ($loc) {
case 'ru': $loc = LOCALE_RU; break;
case 'es': $loc = LOCALE_ES; break;
case 'de': $loc = LOCALE_DE; break;
case 'fr': $loc = LOCALE_FR; break;
case 'de': $loc = LOCALE_DE; break;
case 'zh': $loc = LOCALE_CN; break; // may cause issues in future with zh-tw
case 'es': $loc = LOCALE_ES; break;
case 'ru': $loc = LOCALE_RU; break;
default: $loc = LOCALE_EN;
}
}

View file

@ -278,11 +278,11 @@ class Util
private static $perfectGems = null;
public static $localeStrings = array( // zero-indexed
'enus', null, 'frfr', 'dede', null, null, 'eses', null, 'ruru'
'enus', null, 'frfr', 'dede', 'zhcn', null, 'eses', null, 'ruru'
);
public static $subDomains = array(
'www', null, 'fr', 'de', null, null, 'es', null, 'ru'
'www', null, 'fr', 'de', 'cn', null, 'es', null, 'ru'
);
public static $typeClasses = array(
@ -652,6 +652,10 @@ class Util
// default back to enUS if localization unavailable
public static function localizedString($data, $field, $silent = false)
{
// only display placeholder markers for staff
if (!User::isInGroup(U_GROUP_EMPLOYEE | U_GROUP_TESTER | U_GROUP_LOCALIZER))
$silent = true;
// default case: selected locale available
if (!empty($data[$field.'_loc'.User::$localeId]))
return $data[$field.'_loc'.User::$localeId];

View file

@ -388,6 +388,7 @@ class Lang
LOCALE_EN => [',', '.'],
LOCALE_FR => [' ', ','],
LOCALE_DE => ['.', ','],
LOCALE_CN => [',', '.'],
LOCALE_ES => ['.', ','],
LOCALE_RU => [' ', ',']
);

View file

@ -1101,7 +1101,7 @@ $lang = array(
'ammo' => ["Verursacht %g zusätzlichen Schaden pro Sekunde.", "Verursacht %g zusätzlichen %sschaden pro Sekunde", "+ %g Schaden pro Sekunde", "+ %g %sschaden pro Sekunde"]
),
'gems' => "Edelsteine",
'socketBonus' => "Sockelbonus",
'socketBonus' => "Sockelbonus: %s",
'socket' => array(
"Metasockel", "Roter Sockel", "Gelber Sockel", "Blauer Sockel", -1 => "Prismatischer Sockel"
),

View file

@ -1101,7 +1101,7 @@ $lang = array(
'ammo' => ["Adds %g damage per second", "Adds %g %s damage per second", "+ %g damage per second", "+ %g %s damage per second" ]
),
'gems' => "Gems",
'socketBonus' => "Socket Bonus", // ITEM_SOCKET_BONUS
'socketBonus' => "Socket Bonus: %s", // ITEM_SOCKET_BONUS
'socket' => array( // EMPTY_SOCKET_*
"Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket"
),

View file

@ -1101,7 +1101,7 @@ $lang = array(
'ammo' => ["Añade %g daño por segundo", "Añade %g %s daño por segundo", "+ %g daño por segundo", "+ %g %s daño por segundo"]
),
'gems' => "Gemas",
'socketBonus' => "Bono de ranura",
'socketBonus' => "Bono de ranura: %s",
'socket' => array(
"Ranura meta", "Ranura roja", "Ranura amarilla", "Ranura azul", -1 => "Ranura prismática"
),

View file

@ -1102,7 +1102,7 @@ $lang = array(
'ammo' => ["Ajoute %g dégâts par seconde", "Ajoute %g points de dégâts (%s) par seconde", "+ %g points de dégâts par seconde", "+ %g points de dégâts (%s) par seconde" ]
),
'gems' => "Gemmes",
'socketBonus' => "Bonus de châsse",
'socketBonus' => "Bonus de châsse: %s",
'socket' => array(
"Méta-châsse", "Châsse rouge", "Châsse jaune", "Châsse bleue", -1 => "Châsse prismatique"
),

View file

@ -1101,7 +1101,7 @@ $lang = array(
'ammo' => ["Добавляет %g ед. урона в секунду", "Добавляет %g ед. урона (%s) в секунду", "+ ед. урона в секунду от боеприпасов (%g)", "+ %g %s ед. урона в секунду" ]
),
'gems' => "Самоцветы",
'socketBonus' => "При соответствии цвета",
'socketBonus' => "При соответствии цвета: %s",
'socket' => array(
"Особое гнездо", "Красное гнездо", "Желтое гнездо", "Синее гнездо", -1 => "Бесцветное гнездо"
),

1259
localization/locale_zhcn.php Normal file

File diff suppressed because it is too large Load diff

View file

@ -195,7 +195,7 @@ class EnchantmentPage extends GenericPage
{
$this->lvTabs[] = ['item', array(
'data' => array_values($socketsList->getListviewData()),
'name' => '$LANG.tab_usedby + \' \' + \''.Lang::item('socketBonus').'\'',
'name' => '$LANG.tab_socketbonus',
'id' => 'used-by-socketbonus',
)];

File diff suppressed because one or more lines are too long

View file

@ -21,6 +21,7 @@ class CLISetup
'' => LOCALE_EN, 'enGB' => LOCALE_EN, 'enUS' => LOCALE_EN,
'frFR' => LOCALE_FR,
'deDE' => LOCALE_DE,
'zhCN' => LOCALE_CN, 'enCN' => LOCALE_CN,
'esES' => LOCALE_ES, 'esMX' => LOCALE_ES,
'ruRU' => LOCALE_RU
);
@ -41,8 +42,8 @@ class CLISetup
if (!empty($_['locales']))
{
// engb and enus are identical for all intents and purposes
$from = ['engb', 'esmx'];
$to = ['enus', 'eses'];
$from = ['engb', 'esmx', 'encn'];
$to = ['enus', 'eses', 'zhcn'];
$_['locales'] = str_ireplace($from, $to, strtolower($_['locales']));
self::$locales = array_intersect(Util::$localeStrings, explode(',', $_['locales']));

View file

@ -40,21 +40,21 @@ if (!CLI)
*/
class DBC
{
private $_formats = array( // locales block for copy pasta: sxssxxsxsxxxxxxxx | xxxxxxxxxxxxxxxxx
'achievement' => 'niiisxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxiiiiisxssxxsxsxxxxxxxxii',
'achievement_category' => 'nisxssxxsxsxxxxxxxxx',
'achievement_criteria' => 'niiiiiiiisxssxxsxsxxxxxxxxiixii',
'areatable' => 'niixixxiiixsxssxxsxsxxxxxxxxixxxxxxx',
private $_formats = array( // locales block for copy pasta: sxsssxsxsxxxxxxxx | xxxxxxxxxxxxxxxxx
'achievement' => 'niiisxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxiiiiisxsssxsxsxxxxxxxxii',
'achievement_category' => 'nisxsssxsxsxxxxxxxxx',
'achievement_criteria' => 'niiiiiiiisxsssxsxsxxxxxxxxiixii',
'areatable' => 'niixixxiiixsxsssxsxsxxxxxxxxixxxxxxx',
'areatrigger' => 'niffxxxxxx',
'battlemasterlist' => 'niixxxxxxixxxxxxxxxxxxxxxxxxixii',
'charbaseinfo' => 'bb',
'charstartoutfit' => 'nbbbXiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'chartitles' => 'nxsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxi',
'chrclasses' => 'nxixsxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxixi',
'chrraces' => 'niixxxxixxxsxisxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi',
'chartitles' => 'nxsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxi',
'chrclasses' => 'nxixsxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxixi',
'chrraces' => 'niixxxxixxxsxisxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi',
'creaturedisplayinfo' => 'niiixxssssxxixxx',
'creaturedisplayinfoextra' => 'nxxxxxxxxxxxxxxxxxxxs',
'creaturefamily' => 'nxxxxixiiisxssxxsxsxxxxxxxxs',
'creaturefamily' => 'nxxxxixiiisxsssxsxsxxxxxxxxs',
'creaturemodeldata' => 'nxxxxxxxxxxxxixxxxxxxxxxxxxx',
'creaturesounddata' => 'niiiixiiiiiiiiixxxxixxxxixiiiiixxiiiix',
'currencytypes' => 'niix',
@ -63,9 +63,9 @@ class DBC
'durabilityquality' => 'nf',
'emotes' => 'nxixxxx',
'emotestext' => 'nsiixxxixixxxxxxxxx',
'emotestextdata' => 'nsxssxxsxsxxxxxxxx',
'emotestextdata' => 'nsxsssxsxsxxxxxxxx',
'emotestextsound' => 'niiii',
'faction' => 'niiiiiiiiiiiiiixxxiffixsxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxx',
'faction' => 'niiiiiiiiiiiiiixxxiffixsxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxx',
'factiontemplate' => 'nixiiiiiiiiiii',
'gemproperties' => 'nixxi',
'glyphproperties' => 'niii',
@ -79,20 +79,20 @@ class DBC
'gtregenmpperspt' => 'f',
'gtregenhpperspt' => 'f',
'holidays' => 'nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxxxxxxxxxiisxix',
'holidaydescriptions' => 'nsxssxxsxsxxxxxxxx',
'holidaynames' => 'nsxssxxsxsxxxxxxxx',
'holidaydescriptions' => 'nsxsssxsxsxxxxxxxx',
'holidaynames' => 'nsxsssxsxsxxxxxxxx',
'itemdisplayinfo' => 'nssxxsxxxxxiixxxxxxxxxxxx',
'itemgroupsounds' => 'niixx',
'itemextendedcost' => 'niiiiiiiiiiiiiix',
'itemlimitcategory' => 'nsxssxxsxsxxxxxxxxii',
'itemrandomproperties' => 'nsiiiiisxssxxsxsxxxxxxxx',
'itemrandomsuffix' => 'nsxssxxsxsxxxxxxxxsiiiiiiiiii',
'itemset' => 'nsxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii',
'itemlimitcategory' => 'nsxsssxsxsxxxxxxxxii',
'itemrandomproperties' => 'nsiiiiisxsssxsxsxxxxxxxx',
'itemrandomsuffix' => 'nsxsssxsxsxxxxxxxxsiiiiiiiiii',
'itemset' => 'nsxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii',
'itemsubclass' => 'iixxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'lfgdungeons' => 'nsxssxxsxsxxxxxxxxiiiiiiixiixixixxxxxxxxxxxxxxxxx',
'lfgdungeons' => 'nsxsssxsxsxxxxxxxxiiiiiiixiixixixxxxxxxxxxxxxxxxx',
'lock' => 'niiiiixxxiiiiixxxiiiiixxxxxxxxxxx',
'mailtemplate' => 'nsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxx',
'map' => 'nsixisxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiffxixi',
'mailtemplate' => 'nsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxx',
'map' => 'nsixisxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiffxixi',
'mapdifficulty' => 'niixxxxxxxxxxxxxxxxxxis',
'material' => 'nxxii',
'npcsounds' => 'niiix',
@ -103,33 +103,33 @@ class DBC
'randproppoints' => 'niiiiiiiiiiiiiii',
'scalingstatdistribution' => 'niiiiiiiiiiiiiiiiiiiii',
'scalingstatvalues' => 'xniiiiiiiiiiiiiiiiiiiiii',
'skillline' => 'nixsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxixxxxxxxxxxxxxxxxxx',
'skillline' => 'nixsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxixxxxxxxxxxxxxxxxxx',
'skilllineability' => 'niiiixxixiiixx',
'skillraceclassinfo' => 'niiiiixx',
'soundambience' => 'nii',
'soundemitters' => 'nffxxxxiix',
'soundentries' => 'nisssssssssssxxxxxxxxxxsxixxxx',
'spell' => 'niiiuuuuuuuuixixxxixxxxxxxxxiiixxxxiiiiiiiiiiiixxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxsxssxxsxsxxxxxxxxiiiiiiiiiixxfffxxxiixiixifffii',
'spell' => 'niiiuuuuuuuuixixxxixxxxxxxxxiiixxxxiiiiiiiiiiiixxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxiiiiiiiiiixxfffxxxiixiixifffii',
'spellcasttimes' => 'nixx',
'spelldescriptionvariables' => 'ns',
'spelldifficulty' => 'xiiii',
'spellduration' => 'nixx',
'spellfocusobject' => 'nsxssxxsxsxxxxxxxx',
'spellfocusobject' => 'nsxsssxsxsxxxxxxxx',
'spellicon' => 'ns',
'spellitemenchantment' => 'niiiiiiixxxiiisxssxxsxsxxxxxxxxxxxiiii',
'spellitemenchantment' => 'niiiiiiixxxiiisxsssxsxsxxxxxxxxxxxiiii',
'spellitemenchantmentcondition' => 'nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX',
'spellradius' => 'nfxf',
'spellrange' => 'nffffisxssxxsxsxxxxxxxxxxxxxxxxxxxxxxxxx',
'spellrange' => 'nffffisxsssxsxsxxxxxxxxxxxxxxxxxxxxxxxxx',
'spellrunecost' => 'niiii',
'spellshapeshiftform' => 'nxsxssxxsxsxxxxxxxxiixxiixxiiiiiiii',
'spellshapeshiftform' => 'nxsxsssxsxsxxxxxxxxiixxiixxiiiiiiii',
'spellvisual' => 'niiiiiixxxxiixiixxxxxxiiiixxxxxx',
'spellvisualkit' => 'nxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxxxxxx',
'talent' => 'niiiiiiiixxxxixxixxixii',
'talenttab' => 'nsxssxxsxsxxxxxxxxiiiiis',
'taxinodes' => 'niffxsxssxxsxsxxxxxxxxxx',
'talenttab' => 'nsxsssxsxsxxxxxxxxiiiiis',
'taxinodes' => 'niffxsxsssxsxsxxxxxxxxxx',
'taxipath' => 'niix',
'taxipathnode' => 'niiiffxxxxx',
'totemcategory' => 'nsxssxxsxsxxxxxxxxiu',
'totemcategory' => 'nsxsssxsxsxxxxxxxxiu',
'vocaluisounds' => 'nxiiixx',
'weaponimpactsounds' => 'nixiiiiiiiiiiiiiiiiiiii',
'weaponswingsounds2' => 'nixi',
@ -142,20 +142,20 @@ class DBC
);
private $_fields = array(
'achievement' => 'id,faction,map,previous,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,description_loc0,description_loc2,description_loc3,description_loc6,description_loc8,category,points,orderInGroup,flags,iconId,reward_loc0,reward_loc2,reward_loc3,reward_loc6,reward_loc8,reqCriteriaCount,refAchievement',
'achievement_category' => 'id,parentCategory,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'achievement_criteria' => 'id,refAchievementId,type,value1,value2,value3,value4,value5,value6,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,completionFlags,groupFlags,timeLimit,order',
'areatable' => 'id,mapId,areaTable,flags,soundAmbience,zoneMusic,zoneIntroMusic,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,factionGroupMask',
'achievement' => 'id,faction,map,previous,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,description_loc0,description_loc2,description_loc3,description_loc4,description_loc6,description_loc8,category,points,orderInGroup,flags,iconId,reward_loc0,reward_loc2,reward_loc3,reward_loc4,reward_loc6,reward_loc8,reqCriteriaCount,refAchievement',
'achievement_category' => 'id,parentCategory,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'achievement_criteria' => 'id,refAchievementId,type,value1,value2,value3,value4,value5,value6,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,completionFlags,groupFlags,timeLimit,order',
'areatable' => 'id,mapId,areaTable,flags,soundAmbience,zoneMusic,zoneIntroMusic,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,factionGroupMask',
'areatrigger' => 'id,mapId,posY,posX',
'battlemasterlist' => 'id,mapId,moreMapId,areaType,maxPlayers,minLevel,maxLevel',
'charbaseinfo' => 'raceId,classId',
'charstartoutfit' => 'id,raceId,classId,gender,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15,item16,item17,item18,item19,item20',
'chartitles' => 'id,male_loc0,male_loc2,male_loc3,male_loc6,male_loc8,female_loc0,female_loc2,female_loc3,female_loc6,female_loc8,bitIdx',
'chrclasses' => 'id,powerType,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,fileString,flags,expansion',
'chrraces' => 'id,flags,factionId,baseLanguage,fileString,side,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,expansion',
'chartitles' => 'id,male_loc0,male_loc2,male_loc3,male_loc4,male_loc6,male_loc8,female_loc0,female_loc2,female_loc3,female_loc4,female_loc6,female_loc8,bitIdx',
'chrclasses' => 'id,powerType,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,fileString,flags,expansion',
'chrraces' => 'id,flags,factionId,baseLanguage,fileString,side,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,expansion',
'creaturedisplayinfo' => 'id,modelId,creatureSoundId,extraInfoId,skin1,skin2,skin3,iconString,npcSoundId',
'creaturedisplayinfoextra' => 'id,textureString',
'creaturefamily' => 'id,skillLine1,petFoodMask,petTalentType,categoryEnumID,name_loc0,name_loc2,name_loc3,name_lo6,name_loc8,iconString',
'creaturefamily' => 'id,skillLine1,petFoodMask,petTalentType,categoryEnumID,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,iconString',
'creaturemodeldata' => 'id,creatureSoundId',
'creaturesounddata' => 'id,exertion,exertionCritical,injury,injuryCritical,death,stun,stand,footstepTerrainId,aggro,wingFlap,wingGlide,alert,fidget,customAttack,loop,jumpStart,jumpEnd,petAttack,petOrder,petDismiss,birth,spellcast,submerge,submerged',
'currencytypes' => 'id,itemId,category',
@ -165,8 +165,8 @@ class DBC
'emotes' => 'id,animationId',
'emotestext' => 'id,command,emoteId,targetId,noTargetId,selfId',
'emotestextsound' => 'id,emotesTextId,raceId,gender,soundId',
'emotestextdata' => 'id,text_loc0,text_loc2,text_loc3,text_loc6,text_loc8',
'faction' => 'id,repIdx,baseRepRaceMask1,baseRepRaceMask2,baseRepRaceMask3,baseRepRaceMask4,baseRepClassMask1,baseRepClassMask2,baseRepClassMask3,baseRepClassMask4,baseRepValue1,baseRepValue2,baseRepValue3,baseRepValue4,repFlags1,parentFaction,spilloverRateIn,spilloverRateOut,spilloverMaxRank,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'emotestextdata' => 'id,text_loc0,text_loc2,text_loc3,text_loc4,text_loc6,text_loc8',
'faction' => 'id,repIdx,baseRepRaceMask1,baseRepRaceMask2,baseRepRaceMask3,baseRepRaceMask4,baseRepClassMask1,baseRepClassMask2,baseRepClassMask3,baseRepClassMask4,baseRepValue1,baseRepValue2,baseRepValue3,baseRepValue4,repFlags1,parentFaction,spilloverRateIn,spilloverRateOut,spilloverMaxRank,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'factiontemplate' => 'id,factionId,ourMask,friendlyMask,hostileMask,enemyFactionId1,enemyFactionId2,enemyFactionId3,enemyFactionId4,friendFactionId1,friendFactionId2,friendFactionId3,friendFactionId4',
'gemproperties' => 'id,enchantmentId,colorMask',
'glyphproperties' => 'id,spellId,typeFlags,iconId',
@ -180,20 +180,20 @@ class DBC
'gtregenmpperspt' => 'ratio',
'gtregenhpperspt' => 'ratio',
'holidays' => 'id,looping,nameId,descriptionId,textureString,scheduleType',
'holidaydescriptions' => 'id,description_loc0,description_loc2,description_loc3,description_loc6,description_loc8',
'holidaynames' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'holidaydescriptions' => 'id,description_loc0,description_loc2,description_loc3,description_loc4,description_loc6,description_loc8',
'holidaynames' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'itemdisplayinfo' => 'id,leftModelName,rightModelName,inventoryIcon1,spellVisualId,groupSoundId',
'itemgroupsounds' => 'id,pickUpSoundId,dropDownSoundId',
'itemextendedcost' => 'id,reqHonorPoints,reqArenaPoints,reqArenaSlot,reqItemId1,reqItemId2,reqItemId3,reqItemId4,reqItemId5,itemCount1,itemCount2,itemCount3,itemCount4,itemCount5,reqPersonalRating',
'itemlimitcategory' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,count,isGem',
'itemrandomproperties' => 'id,nameINT,enchantId1,enchantId2,enchantId3,enchantId4,enchantId5,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'itemrandomsuffix' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,nameINT,enchantId1,enchantId2,enchantId3,enchantId4,enchantId5,allocationPct1,allocationPct2,allocationPct3,allocationPct4,allocationPct5',
'itemset' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,spellId1,spellId2,spellId3,spellId4,spellId5,spellId6,spellId7,spellId8,itemCount1,itemCount2,itemCount3,itemCount4,itemCount5,itemCount6,itemCount7,itemCount8,reqSkillId,reqSkillLevel',
'itemlimitcategory' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,count,isGem',
'itemrandomproperties' => 'id,nameINT,enchantId1,enchantId2,enchantId3,enchantId4,enchantId5,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'itemrandomsuffix' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,nameINT,enchantId1,enchantId2,enchantId3,enchantId4,enchantId5,allocationPct1,allocationPct2,allocationPct3,allocationPct4,allocationPct5',
'itemset' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,spellId1,spellId2,spellId3,spellId4,spellId5,spellId6,spellId7,spellId8,itemCount1,itemCount2,itemCount3,itemCount4,itemCount5,itemCount6,itemCount7,itemCount8,reqSkillId,reqSkillLevel',
'itemsubclass' => 'class,subClass,weaponSize',
'lfgdungeons' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,levelMin,levelMax,targetLevel,targetLevelMin,targetLevelMax,mapId,difficulty,type,faction,expansion,groupId',
'lfgdungeons' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,levelMin,levelMax,targetLevel,targetLevelMin,targetLevelMax,mapId,difficulty,type,faction,expansion,groupId',
'lock' => 'id,type1,type2,type3,type4,type5,properties1,properties2,properties3,properties4,properties5,reqSkill1,reqSkill2,reqSkill3,reqSkill4,reqSkill5',
'mailtemplate' => 'id,subject_loc0,subject_loc2,subject_loc3,subject_loc6,subject_loc8,text_loc0,text_loc2,text_loc3,text_loc6,text_loc8',
'map' => 'id,nameINT,areaType,isBG,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,parentMapId,parentX,parentY,expansion,maxPlayers',
'mailtemplate' => 'id,subject_loc0,subject_loc2,subject_loc3,subject_loc4,subject_loc6,subject_loc8,text_loc0,text_loc2,text_loc3,text_loc4,text_loc6,text_loc8',
'map' => 'id,nameINT,areaType,isBG,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,parentMapId,parentX,parentY,expansion,maxPlayers',
'mapdifficulty' => 'id,mapId,difficulty,nPlayer,nPlayerString',
'material' => 'id,sheatheSoundId,unsheatheSoundId',
'npcsounds' => 'id,greetSoundId,byeSoundId,angrySoundId',
@ -204,33 +204,33 @@ class DBC
'randproppoints' => 'id,epic1,epic2,epic3,epic4,epic5,rare1,rare2,rare3,rare4,rare5,uncommon1,uncommon2,uncommon3,uncommon4,uncommon5',
'scalingstatdistribution' => 'id,statMod1,statMod2,statMod3,statMod4,statMod5,statMod6,statMod7,statMod8,statMod9,statMod10,modifier1,modifier2,modifier3,modifier4,modifier5,modifier6,modifier7,modifier8,modifier9,modifier10,maxLevel',
'scalingstatvalues' => 'id,shoulderMultiplier,trinketMultiplier,weaponMultiplier,rangedMultiplier,clothShoulderArmor,leatherShoulderArmor,mailShoulderArmor,plateShoulderArmor,weaponDPS1H,weaponDPS2H,casterDPS1H,casterDPS2H,rangedDPS,wandDPS,spellPower,primBudged,tertBudged,clothCloakArmor,clothChestArmor,leatherChestArmor,mailChestArmor,plateChestArmor',
'skillline' => 'id,categoryId,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,description_loc0,description_loc2,description_loc3,description_loc6,description_loc8,iconId',
'skillline' => 'id,categoryId,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,description_loc0,description_loc2,description_loc3,description_loc4,description_loc6,description_loc8,iconId',
'skilllineability' => 'id,skillLineId,spellId,reqRaceMask,reqClassMask,reqSkillLevel,acquireMethod,skillLevelGrey,skillLevelYellow',
'skillraceclassinfo' => 'id,skillLine,raceMask,classMask,flags,reqLevel',
'soundambience' => 'id,soundIdDay,soundIdNight',
'soundemitters' => 'id,posY,posX,soundId,mapId',
'soundentries' => 'id,type,name,file1,file2,file3,file4,file5,file6,file7,file8,file9,file10,path,flags',
'spell' => 'id,category,dispelType,mechanic,attributes0,attributes1,attributes2,attributes3,attributes4,attributes5,attributes6,attributes7,stanceMask,stanceMaskNot,spellFocus,castTimeId,recoveryTime,recoveryTimeCategory,procChance,procCharges,maxLevel,baseLevel,spellLevel,durationId,powerType,powerCost,powerCostPerLevel,powerPerSecond,powerPerSecondPerLevel,rangeId,stackAmount,tool1,tool2,reagent1,reagent2,reagent3,reagent4,reagent5,reagent6,reagent7,reagent8,reagentCount1,reagentCount2,reagentCount3,reagentCount4,reagentCount5,reagentCount6,reagentCount7,reagentCount8,equippedItemClass,equippedItemSubClassMask,equippedItemInventoryTypeMask,effect1Id,effect2Id,effect3Id,effect1DieSides,effect2DieSides,effect3DieSides,effect1RealPointsPerLevel,effect2RealPointsPerLevel,effect3RealPointsPerLevel,effect1BasePoints,effect2BasePoints,effect3BasePoints,effect1Mechanic,effect2Mechanic,effect3Mechanic,effect1ImplicitTargetA,effect2ImplicitTargetA,effect3ImplicitTargetA,effect1ImplicitTargetB,effect2ImplicitTargetB,effect3ImplicitTargetB,effect1RadiusId,effect2RadiusId,effect3RadiusId,effect1AuraId,effect2AuraId,effect3AuraId,effect1Periode,effect2Periode,effect3Periode,effect1ValueMultiplier,effect2ValueMultiplier,effect3ValueMultiplier,effect1ChainTarget,effect2ChainTarget,effect3ChainTarget,effect1CreateItemId,effect2CreateItemId,effect3CreateItemId,effect1MiscValue,effect2MiscValue,effect3MiscValue,effect1MiscValueB,effect2MiscValueB,effect3MiscValueB,effect1TriggerSpell,effect2TriggerSpell,effect3TriggerSpell,effect1PointsPerComboPoint,effect2PointsPerComboPoint,effect3PointsPerComboPoint,effect1SpellClassMaskA,effect2SpellClassMaskA,effect3SpellClassMaskA,effect1SpellClassMaskB,effect2SpellClassMaskB,effect3SpellClassMaskB,effect1SpellClassMaskC,effect2SpellClassMaskC,effect3SpellClassMaskC,spellVisualId1,spellVisualId2,iconId,iconIdActive,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,rank_loc0,rank_loc2,rank_loc3,rank_loc6,rank_loc8,description_loc0,description_loc2,description_loc3,description_loc6,description_loc8,buff_loc0,buff_loc2,buff_loc3,buff_loc6,buff_loc8,powerCostPercent,startRecoveryCategory,startRecoveryTime,maxTargetLevel,spellFamilyId,spellFamilyFlags1,spellFamilyFlags2,spellFamilyFlags3,maxAffectedTargets,damageClass,effect1DamageMultiplier,effect2DamageMultiplier,effect3DamageMultiplier,toolCategory1,toolCategory2,schoolMask,runeCostId,powerDisplayId,effect1BonusMultiplier,effect2BonusMultiplier,effect3BonusMultiplier,spellDescriptionVariable,spellDifficulty',
'spell' => 'id,category,dispelType,mechanic,attributes0,attributes1,attributes2,attributes3,attributes4,attributes5,attributes6,attributes7,stanceMask,stanceMaskNot,spellFocus,castTimeId,recoveryTime,recoveryTimeCategory,procChance,procCharges,maxLevel,baseLevel,spellLevel,durationId,powerType,powerCost,powerCostPerLevel,powerPerSecond,powerPerSecondPerLevel,rangeId,stackAmount,tool1,tool2,reagent1,reagent2,reagent3,reagent4,reagent5,reagent6,reagent7,reagent8,reagentCount1,reagentCount2,reagentCount3,reagentCount4,reagentCount5,reagentCount6,reagentCount7,reagentCount8,equippedItemClass,equippedItemSubClassMask,equippedItemInventoryTypeMask,effect1Id,effect2Id,effect3Id,effect1DieSides,effect2DieSides,effect3DieSides,effect1RealPointsPerLevel,effect2RealPointsPerLevel,effect3RealPointsPerLevel,effect1BasePoints,effect2BasePoints,effect3BasePoints,effect1Mechanic,effect2Mechanic,effect3Mechanic,effect1ImplicitTargetA,effect2ImplicitTargetA,effect3ImplicitTargetA,effect1ImplicitTargetB,effect2ImplicitTargetB,effect3ImplicitTargetB,effect1RadiusId,effect2RadiusId,effect3RadiusId,effect1AuraId,effect2AuraId,effect3AuraId,effect1Periode,effect2Periode,effect3Periode,effect1ValueMultiplier,effect2ValueMultiplier,effect3ValueMultiplier,effect1ChainTarget,effect2ChainTarget,effect3ChainTarget,effect1CreateItemId,effect2CreateItemId,effect3CreateItemId,effect1MiscValue,effect2MiscValue,effect3MiscValue,effect1MiscValueB,effect2MiscValueB,effect3MiscValueB,effect1TriggerSpell,effect2TriggerSpell,effect3TriggerSpell,effect1PointsPerComboPoint,effect2PointsPerComboPoint,effect3PointsPerComboPoint,effect1SpellClassMaskA,effect2SpellClassMaskA,effect3SpellClassMaskA,effect1SpellClassMaskB,effect2SpellClassMaskB,effect3SpellClassMaskB,effect1SpellClassMaskC,effect2SpellClassMaskC,effect3SpellClassMaskC,spellVisualId1,spellVisualId2,iconId,iconIdActive,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,rank_loc0,rank_loc2,rank_loc3,rank_loc4,rank_loc6,rank_loc8,description_loc0,description_loc2,description_loc3,description_loc4,description_loc6,description_loc8,buff_loc0,buff_loc2,buff_loc3,buff_loc4,buff_loc6,buff_loc8,powerCostPercent,startRecoveryCategory,startRecoveryTime,maxTargetLevel,spellFamilyId,spellFamilyFlags1,spellFamilyFlags2,spellFamilyFlags3,maxAffectedTargets,damageClass,effect1DamageMultiplier,effect2DamageMultiplier,effect3DamageMultiplier,toolCategory1,toolCategory2,schoolMask,runeCostId,powerDisplayId,effect1BonusMultiplier,effect2BonusMultiplier,effect3BonusMultiplier,spellDescriptionVariable,spellDifficulty',
'spellcasttimes' => 'id,baseTime',
'spelldescriptionvariables' => 'id,vars',
'spellduration' => 'id,baseTime',
'spelldifficulty' => 'normal10,normal25,heroic10,heroic25',
'spellfocusobject' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'spellfocusobject' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'spellicon' => 'id,iconPath',
'spellitemenchantment' => 'id,charges,type1,type2,type3,amount1,amount2,amount3,object1,object2,object3,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,conditionId,skillLine,skillLevel,requiredLevel',
'spellitemenchantment' => 'id,charges,type1,type2,type3,amount1,amount2,amount3,object1,object2,object3,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,conditionId,skillLine,skillLevel,requiredLevel',
'spellitemenchantmentcondition' => 'id,color1,color2,color3,color4,color5,comparator1,comparator2,comparator3,comparator4,comparator5,cmpColor1,cmpColor2,cmpColor3,cmpColor4,cmpColor5,value1,value2,value3,value4,value5',
'spellradius' => 'id,radiusMin,radiusMax',
'spellrange' => 'id,rangeMinHostile,rangeMinFriend,rangeMaxHostile,rangeMaxFriend,rangeType,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'spellrange' => 'id,rangeMinHostile,rangeMinFriend,rangeMaxHostile,rangeMaxFriend,rangeType,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'spellrunecost' => 'id,costBlood,costUnholy,costFrost,runicPowerGain',
'spellshapeshiftform' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,flags,creatureType,displayIdA,displayIdH,spellId1,spellId2,spellId3,spellId4,spellId5,spellId6,spellId7,spellId8',
'spellshapeshiftform' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,flags,creatureType,displayIdA,displayIdH,spellId1,spellId2,spellId3,spellId4,spellId5,spellId6,spellId7,spellId8',
'spellvisual' => 'id,precastKitId,castKitId,impactKitId,stateKitId,statedoneKitId,channelKitId,missileSoundId,animationSoundId,casterImpactKitId,targetImpactKitId,missileTargetingKitId,instantAreaKitId,impactAreaKitId,persistentAreaKitId',
'spellvisualkit' => 'id,soundId',
'talent' => 'id,tabId,row,column,rank1,rank2,rank3,rank4,rank5,reqTalent,reqRank,talentSpell,petCategory1,petCategory2',
'talenttab' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,iconId,raceMask,classMask,creatureFamilyMask,tabNumber,textureFile',
'taxinodes' => 'id,mapId,posX,posY,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8',
'talenttab' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,iconId,raceMask,classMask,creatureFamilyMask,tabNumber,textureFile',
'taxinodes' => 'id,mapId,posX,posY,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8',
'taxipath' => 'id,startNodeId,endNodeId',
'taxipathnode' => 'id,pathId,nodeIdx,mapId,posX,posY',
'totemcategory' => 'id,name_loc0,name_loc2,name_loc3,name_loc6,name_loc8,category,categoryMask',
'totemcategory' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,category,categoryMask',
'vocaluisounds' => 'id,raceId,soundIdMale,soundIdFemale',
'weaponimpactsounds' => 'id,subClass,hit1,hit2,hit3,hit4,hit5,hit6,hit7,hit8,hit9,hit10,crit1,crit2,crit3,crit4,crit5,crit6,crit7,crit8,crit9,crit10',
'weaponswingsounds2' => 'id,weaponSize,soundId',
@ -270,7 +270,7 @@ class DBC
$this->fields = explode(',', $this->_fields[$file]);
$this->format = $this->_formats[$file];
$this->file = $file;
$this->localized = !!strstr($this->format, 'sxssxxsxsxxxxxxxx');
$this->localized = !!strstr($this->format, 'sxsssxsxsxxxxxxxx');
if (count($this->fields) != strlen(str_ireplace('x', '', $this->format)))
{

View file

@ -66,7 +66,7 @@ if (!CLI)
equippedItemClass, equippedItemInventoryTypeMask, equippedItemSubClassMask,
skillLine1,
IFNULL(i.name, "inv_misc_questionmark") AS iconString,
name_loc0, name_loc2, name_loc3, name_loc6, name_loc8
name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8
FROM
?_spell s
LEFT JOIN

View file

@ -30,7 +30,7 @@ if (!CLI)
// id < 36'000 || ilevel < 70 ? BC : WOTLK
$gems = DB::Aowow()->Select(
'SELECT i.id AS itemId,
i.name_loc0, i.name_loc2, i.name_loc3, i.name_loc6, i.name_loc8,
i.name_loc0, i.name_loc2, i.name_loc3, i.name_loc4, i.name_loc6, i.name_loc8,
IF (i.id < 36000 OR i.itemLevel < 70, 1 , 2) AS expansion,
i.quality,
ic.name AS icon,

View file

@ -32,6 +32,12 @@ if (!CLI)
" domain: 'de',\r\n" .
" description: 'Deutsch'\r\n" .
" }",
LOCALE_CN => " 4:{ // Chinese\r\n" .
" id: LOCALE_ZHCN,\r\n" .
" name: 'zhcn',\r\n" .
" domain: 'cn',\r\n" .
" description: String.fromCharCode(31616, 20307, 20013, 25991)\r\n" .
" }",
LOCALE_ES => " 6: { // Spanish\r\n" .
" id: LOCALE_ESES,\r\n" .
" name: 'eses',\r\n" .

View file

@ -34,7 +34,7 @@ if (!CLI)
$locations = [];
$petList = DB::Aowow()->Select(
'SELECT cr.id,
cr.name_loc0, cr.name_loc2, cr.name_loc3, cr.name_loc6, cr.name_loc8,
cr.name_loc0, cr.name_loc2, cr.name_loc3, cr.name_loc4, cr.name_loc6, cr.name_loc8,
cr.minLevel,
cr.maxLevel,
ft.A,

View file

@ -45,7 +45,7 @@ if (!CLI)
for ($tabIdx = 0; $tabIdx < count($tabs); $tabIdx++)
{
$talents = DB::Aowow()->select('SELECT t.id AS tId, t.*, s.name_loc0, s.name_loc2, s.name_loc3, s.name_loc6, s.name_loc8, LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1)) AS iconString FROM dbc_talent t, dbc_spell s, dbc_spellicon si WHERE si.`id` = s.`iconId` AND t.`tabId`= ?d AND s.`id` = t.`rank1` ORDER by t.`row`, t.`column`', $tabs[$tabIdx]['id']);
$talents = DB::Aowow()->select('SELECT t.id AS tId, t.*, s.name_loc0, s.name_loc2, s.name_loc3, s.name_loc4, s.name_loc6, s.name_loc8, LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1)) AS iconString FROM dbc_talent t, dbc_spell s, dbc_spellicon si WHERE si.`id` = s.`iconId` AND t.`tabId`= ?d AND s.`id` = t.`rank1` ORDER by t.`row`, t.`column`', $tabs[$tabIdx]['id']);
$result[$tabIdx] = array(
'n' => Util::localizedString($tabs[$tabIdx], 'name'),
't' => []

View file

@ -5,6 +5,7 @@ Locale class
var LOCALE_ENUS = 0;
var LOCALE_FRFR = 2;
var LOCALE_DEDE = 3;
var LOCALE_ZHCN = 4;
var LOCALE_ESES = 6;
var LOCALE_RURU = 8;

View file

@ -90,6 +90,7 @@ if (typeof $WowheadPower == "undefined") {
0: "enus",
2: "frfr",
3: "dede",
4: "zhcn",
6: "eses",
8: "ruru"
},
@ -353,12 +354,12 @@ if (typeof $WowheadPower == "undefined") {
locale = $WH.g_getLocaleFromDomain(domain);
/* edit start */
if ($WH.in_array(['fr', 'de', 'es', 'ru', 'en'], domain) == -1) {
if ($WH.in_array(['fr', 'de', 'cn', 'es', 'ru', 'en'], domain) == -1) {
for (i in document.scripts) {
if (!document.scripts[i].src)
continue;
var dmn = document.scripts[i].src.match(/widgets\/power.js\?(lang|locale)=(en|fr|de|es|ru)/i);
var dmn = document.scripts[i].src.match(/widgets\/power.js\?(lang|locale)=(en|fr|de|cn|es|ru)/i);
if (dmn) {
domain = dmn[2];
locale = $WH.g_getLocaleFromDomain(dmn[2]);

View file

@ -44,9 +44,9 @@ function achievement(array $ids = [])
a.refAchievement,
0,
0,
a.name_loc0, a.name_loc2, a.name_loc3, a.name_loc6, a.name_loc8,
a.description_loc0, a.description_loc2, a.description_loc3, a.description_loc6, a.description_loc8,
a.reward_loc0, a.reward_loc2, a.reward_loc3, a.reward_loc6, a.reward_loc8
a.name_loc0, a.name_loc2, a.name_loc3, a.name_loc4, a.name_loc6, a.name_loc8,
a.description_loc0, a.description_loc2, a.description_loc3, a.description_loc4, a.description_loc6, a.description_loc8,
a.reward_loc0, a.reward_loc2, a.reward_loc3, a.reward_loc4, a.reward_loc6, a.reward_loc8
FROM
dbc_achievement a
LEFT JOIN
@ -63,9 +63,9 @@ function achievement(array $ids = [])
$ids ?: DBSIMPLE_SKIP
);
foreach ($serverAchievements as $sa)
DB::Aowow()->query('REPLACE INTO ?_achievement (id, faction, map, points, flags, reqCriteriaCount, refAchievement, cuFlags, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8) VALUES (?d, ?d, ?d, ?d, ?d, ?d, ?d, ?d, ?, ?, ?, ?, ?)',
DB::Aowow()->query('REPLACE INTO ?_achievement (id, faction, map, points, flags, reqCriteriaCount, refAchievement, cuFlags, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8) VALUES (?d, ?d, ?d, ?d, ?d, ?d, ?d, ?d, ?, ?, ?, ?, ?, ?)',
$sa['ID'], $sa['faction'], $sa['mapID'], $sa['points'], $sa['flags'], $sa['count'], $sa['refAchievement'], CUSTOM_SERVERSIDE,
'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID']
'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID'], 'Serverside - #'.$sa['ID']
);
if ($ids)

View file

@ -32,8 +32,8 @@ function creature(array $ids = [])
0 AS modelId, -- modelId
0 AS humanoid, -- uses creaturedisplayinfoextra
"" AS iconString, -- iconString
ct.name, IFNULL(ctl2.`Name`, "") AS n2, IFNULL(ctl3.`Name`, "") AS n3, IFNULL(ctl6.`Name`, "") AS n6, IFNULL(ctl8.`Name`, "") AS n8,
subname, IFNULL(ctl2.`Title`, "") AS t2, IFNULL(ctl3.`Title`, "") AS t3, IFNULL(ctl6.`Title`, "") AS t6, IFNULL(ctl8.`Title`, "") AS t8,
ct.name, IFNULL(ctl2.`Name`, "") AS n2, IFNULL(ctl3.`Name`, "") AS n3, IFNULL(ctl4.`Name`, "") AS n4, IFNULL(ctl6.`Name`, "") AS n6, IFNULL(ctl8.`Name`, "") AS n8,
subname, IFNULL(ctl2.`Title`, "") AS t2, IFNULL(ctl3.`Title`, "") AS t3, IFNULL(ctl4.`Title`, "") AS t4, IFNULL(ctl6.`Title`, "") AS t6, IFNULL(ctl8.`Title`, "") AS t8,
minLevel, maxLevel,
exp,
faction,
@ -86,6 +86,8 @@ function creature(array $ids = [])
creature_template_locale ctl2 ON ct.entry = ctl2.entry AND ctl2.`locale` = "frFR"
LEFT JOIN
creature_template_locale ctl3 ON ct.entry = ctl3.entry AND ctl3.`locale` = "deDE"
LEFT JOIN
creature_template_locale ctl4 ON ct.entry = ctl4.entry AND ctl4.`locale` = "zhCN"
LEFT JOIN
creature_template_locale ctl6 ON ct.entry = ctl6.entry AND ctl6.`locale` = "esES"
LEFT JOIN

View file

@ -35,7 +35,7 @@ function currencies(array $ids = [])
$moneyNames = DB::World()->select('
SELECT
it.entry AS ARRAY_KEY,
it.name AS name_loc0, IFNULL(itl2.Name, "") AS name_loc2, IFNULL(itl3.Name, "") AS name_loc3, IFNULL(itl6.Name, "") AS name_loc6, IFNULL(itl8.Name, "") AS name_loc8,
it.name AS name_loc0, IFNULL(itl2.Name, "") AS name_loc2, IFNULL(itl3.Name, "") AS name_loc3, IFNULL(itl4.Name, "") AS name_loc4, IFNULL(itl6.Name, "") AS name_loc6, IFNULL(itl8.Name, "") AS name_loc8,
it.maxCount AS cap
FROM
item_template it
@ -43,6 +43,8 @@ function currencies(array $ids = [])
item_template_locale itl2 ON it.entry = itl2.ID AND itl2.locale = "frFR"
LEFT JOIN
item_template_locale itl3 ON it.entry = itl3.ID AND itl3.locale = "deDE"
LEFT JOIN
item_template_locale itl4 ON it.entry = itl4.ID AND itl4.locale = "zhCN"
LEFT JOIN
item_template_locale itl6 ON it.entry = itl6.ID AND itl6.locale = "esES"
LEFT JOIN

View file

@ -50,9 +50,9 @@ function emotes(/*array $ids = [] */)
LOWER(et.command),
IF(e.animationId, 1, 0),
0, -- cuFlags
etdT.text_loc0, etdT.text_loc2, etdT.text_loc3, etdT.text_loc6, etdT.text_loc8,
etdNT.text_loc0, etdNT.text_loc2, etdNT.text_loc3, etdNT.text_loc6, etdNT.text_loc8,
etdS.text_loc0, etdS.text_loc2, etdS.text_loc3, etdS.text_loc6, etdS.text_loc8
etdT.text_loc0, etdT.text_loc2, etdT.text_loc3, etdT.text_loc4, etdT.text_loc6, etdT.text_loc8,
etdNT.text_loc0, etdNT.text_loc2, etdNT.text_loc3, etdNT.text_loc4, etdNT.text_loc6, etdNT.text_loc8,
etdS.text_loc0, etdS.text_loc2, etdS.text_loc3, etdS.text_loc4, etdS.text_loc6, etdS.text_loc8
FROM
dbc_emotestext et
LEFT JOIN

View file

@ -63,7 +63,7 @@ function factions()
0, -- cuFlags
parentFaction,
spilloverRateIn, spilloverRateOut, spilloverMaxRank,
name_loc0, name_loc2, name_loc3, name_loc6, name_loc8
name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8
FROM
dbc_faction f
LEFT JOIN

View file

@ -41,9 +41,9 @@ function holidays()
{
$query = '
REPLACE INTO
?_holidays (id, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc6, description_loc8, looping, scheduleType, textureString)
?_holidays (id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc4, description_loc6, description_loc8, looping, scheduleType, textureString)
SELECT
h.id, n.name_loc0, n.name_loc2, n.name_loc3, n.name_loc6, n.name_loc8, d.description_loc0, d.description_loc2, d.description_loc3, d.description_loc6, d.description_loc8, h.looping, h.scheduleType, h.textureString
h.id, n.name_loc0, n.name_loc2, n.name_loc3, n.name_loc4, n.name_loc6, n.name_loc8, d.description_loc0, d.description_loc2, d.description_loc3, d.description_loc4, d.description_loc6, d.description_loc8, h.looping, h.scheduleType, h.textureString
FROM
dbc_holidays h
LEFT JOIN

View file

@ -17,7 +17,7 @@ function itemenchantment()
REPLACE INTO
?_itemenchantment
SELECT
Id, charges, 0, 0, 0, type1, type2, type3, amount1, amount2, amount3, object1, object2, object3, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, conditionId, skillLine, skillLevel, requiredLevel
Id, charges, 0, 0, 0, type1, type2, type3, amount1, amount2, amount3, object1, object2, object3, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, conditionId, skillLine, skillLevel, requiredLevel
FROM
dbc_spellitemenchantment';

View file

@ -15,9 +15,9 @@ function itemrandomenchant()
{
$query = '
REPLACE INTO ?_itemrandomenchant
SELECT -id, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, allocationPct1, allocationPct2, allocationPct3, allocationPct4, allocationPct5 FROM dbc_itemrandomsuffix
SELECT -id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, allocationPct1, allocationPct2, allocationPct3, allocationPct4, allocationPct5 FROM dbc_itemrandomsuffix
UNION
SELECT id, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, 0, 0, 0, 0, 0 FROM dbc_itemrandomproperties';
SELECT id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, 0, 0, 0, 0, 0 FROM dbc_itemrandomproperties';
DB::Aowow()->query($query);

View file

@ -35,7 +35,7 @@ function items(array $ids = [])
subclass, subclass AS subClassBak,
SoundOverrideSubclass,
IFNULL(sg.id, 0) AS subSubClass,
it.name, IFNULL(itl2.Name, ""), IFNULL(itl3.Name, ""), IFNULL(itl6.Name, ""), IFNULL(itl8.Name, ""),
it.name, IFNULL(itl2.Name, ""), IFNULL(itl3.Name, ""), IFNULL(itl4.Name, ""), IFNULL(itl6.Name, ""), IFNULL(itl8.Name, ""),
0 AS iconId,
displayid,
0 AS spellVisualId,
@ -84,7 +84,7 @@ function items(array $ids = [])
spellid_4, spelltrigger_4, spellcharges_4, spellppmRate_4, spellcooldown_4, spellcategory_4, spellcategorycooldown_4,
spellid_5, spelltrigger_5, spellcharges_5, spellppmRate_5, spellcooldown_5, spellcategory_5, spellcategorycooldown_5,
bonding,
it.description, IFNULL(itl2.Description, ""), IFNULL(itl3.Description, ""), IFNULL(itl6.Description, ""), IFNULL(itl8.Description, ""),
it.description, IFNULL(itl2.Description, ""), IFNULL(itl3.Description, ""), IFNULL(itl4.Description, ""), IFNULL(itl6.Description, ""), IFNULL(itl8.Description, ""),
PageText,
LanguageID,
startquest,
@ -122,6 +122,8 @@ function items(array $ids = [])
item_template_locale itl2 ON it.entry = itl2.ID AND itl2.locale = "frFR"
LEFT JOIN
item_template_locale itl3 ON it.entry = itl3.ID AND itl3.locale = "deDE"
LEFT JOIN
item_template_locale itl4 ON it.entry = itl4.ID AND itl4.locale = "zhCN"
LEFT JOIN
item_template_locale itl6 ON it.entry = itl6.ID AND itl6.locale = "esES"
LEFT JOIN

View file

@ -33,6 +33,7 @@ function objects(array $ids = [])
go.name,
IFNULL(gtl2.`name`, "") AS name_loc2,
IFNULL(gtl3.`name`, "") AS name_loc3,
IFNULL(gtl4.`name`, "") AS name_loc4,
IFNULL(gtl6.`name`, "") AS name_loc6,
IFNULL(gtl8.`name`, "") AS name_loc8,
IFNULL(goa.faction, 0),
@ -71,6 +72,8 @@ function objects(array $ids = [])
gameobject_template_locale gtl2 ON go.entry = gtl2.entry AND gtl2.`locale` = "frFR"
LEFT JOIN
gameobject_template_locale gtl3 ON go.entry = gtl3.entry AND gtl3.`locale` = "deDE"
LEFT JOIN
gameobject_template_locale gtl4 ON go.entry = gtl4.entry AND gtl4.`locale` = "zhCN"
LEFT JOIN
gameobject_template_locale gtl6 ON go.entry = gtl6.entry AND gtl6.`locale` = "esES"
LEFT JOIN

View file

@ -32,7 +32,7 @@ function pet(array $ids = [])
petTalentType,
0, -- exotic
0, -- expansion
name_loc0, name_loc2, name_loc3, name_lo6, name_loc8,
name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8,
ic.id,
skillLine1,
0, 0, 0, 0, -- spell[1-4]

View file

@ -76,23 +76,23 @@ function quests(array $ids = [])
IF (RewardFactionOverride3 <> 0, RewardFactionOverride3 / 100, RewardFactionValue3),
IF (RewardFactionOverride4 <> 0, RewardFactionOverride4 / 100, RewardFactionValue4),
IF (RewardFactionOverride5 <> 0, RewardFactionOverride5 / 100, RewardFactionValue5),
q.LogTitle, IFNULL(qtl2.Title, ""), IFNULL(qtl3.Title, ""), IFNULL(qtl6.Title, ""), IFNULL(qtl8.Title, ""),
q.LogDescription, IFNULL(qtl2.Objectives, ""), IFNULL(qtl3.Objectives, ""), IFNULL(qtl6.Objectives, ""), IFNULL(qtl8.Objectives, ""),
q.QuestDescription, IFNULL(qtl2.Details, ""), IFNULL(qtl3.Details, ""), IFNULL(qtl6.Details, ""), IFNULL(qtl8.Details, ""),
q.AreaDescription, IFNULL(qtl2.EndText, ""), IFNULL(qtl3.EndText, ""), IFNULL(qtl6.EndText, ""), IFNULL(qtl8.EndText, ""),
IFNULL(qor.RewardText, ""), IFNULL(qtl2.OfferRewardText, ""), IFNULL(qtl3.OfferRewardText, ""), IFNULL(qtl6.OfferRewardText, ""), IFNULL(qtl8.OfferRewardText, ""),
IFNULL(qri.CompletionText, ""), IFNULL(qtl2.RequestItemsText, ""), IFNULL(qtl3.RequestItemsText, ""), IFNULL(qtl6.RequestItemsText, ""), IFNULL(qtl8.RequestItemsText, ""),
q.QuestCompletionLog, IFNULL(qtl2.CompletedText, ""), IFNULL(qtl3.CompletedText, ""), IFNULL(qtl6.CompletedText, ""), IFNULL(qtl8.CompletedText, ""),
q.LogTitle, IFNULL(qtl2.Title, ""), IFNULL(qtl3.Title, ""), IFNULL(qtl4.Title, ""), IFNULL(qtl6.Title, ""), IFNULL(qtl8.Title, ""),
q.LogDescription, IFNULL(qtl2.Objectives, ""), IFNULL(qtl3.Objectives, ""), IFNULL(qtl4.Objectives, ""), IFNULL(qtl6.Objectives, ""), IFNULL(qtl8.Objectives, ""),
q.QuestDescription, IFNULL(qtl2.Details, ""), IFNULL(qtl3.Details, ""), IFNULL(qtl4.Details, ""), IFNULL(qtl6.Details, ""), IFNULL(qtl8.Details, ""),
q.AreaDescription, IFNULL(qtl2.EndText, ""), IFNULL(qtl3.EndText, ""), IFNULL(qtl4.EndText, ""), IFNULL(qtl6.EndText, ""), IFNULL(qtl8.EndText, ""),
IFNULL(qor.RewardText, ""), IFNULL(qtl2.OfferRewardText, ""), IFNULL(qtl3.OfferRewardText, ""), IFNULL(qtl4.OfferRewardText, ""), IFNULL(qtl6.OfferRewardText, ""), IFNULL(qtl8.OfferRewardText, ""),
IFNULL(qri.CompletionText, ""), IFNULL(qtl2.RequestItemsText, ""), IFNULL(qtl3.RequestItemsText, ""), IFNULL(qtl4.RequestItemsText, ""), IFNULL(qtl6.RequestItemsText, ""), IFNULL(qtl8.RequestItemsText, ""),
q.QuestCompletionLog, IFNULL(qtl2.CompletedText, ""), IFNULL(qtl3.CompletedText, ""), IFNULL(qtl4.CompletedText, ""), IFNULL(qtl6.CompletedText, ""), IFNULL(qtl8.CompletedText, ""),
RequiredNpcOrGo1, RequiredNpcOrGo2, RequiredNpcOrGo3, RequiredNpcOrGo4,
RequiredNpcOrGoCount1, RequiredNpcOrGoCount2, RequiredNpcOrGoCount3, RequiredNpcOrGoCount4,
ItemDrop1, ItemDrop2, ItemDrop3, ItemDrop4,
ItemDropQuantity1, ItemDropQuantity2, ItemDropQuantity3, ItemDropQuantity4,
RequiredItemId1, RequiredItemId2, RequiredItemId3, RequiredItemId4, RequiredItemId5, RequiredItemId6,
RequiredItemCount1, RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredItemCount6,
q.ObjectiveText1, IFNULL(qtl2.ObjectiveText1, ""), IFNULL(qtl3.ObjectiveText1, ""), IFNULL(qtl6.ObjectiveText1, ""), IFNULL(qtl8.ObjectiveText1, ""),
q.ObjectiveText2, IFNULL(qtl2.ObjectiveText2, ""), IFNULL(qtl3.ObjectiveText2, ""), IFNULL(qtl6.ObjectiveText2, ""), IFNULL(qtl8.ObjectiveText2, ""),
q.ObjectiveText3, IFNULL(qtl2.ObjectiveText3, ""), IFNULL(qtl3.ObjectiveText3, ""), IFNULL(qtl6.ObjectiveText3, ""), IFNULL(qtl8.ObjectiveText3, ""),
q.ObjectiveText4, IFNULL(qtl2.ObjectiveText4, ""), IFNULL(qtl3.ObjectiveText4, ""), IFNULL(qtl6.ObjectiveText4, ""), IFNULL(qtl8.ObjectiveText4, "")
q.ObjectiveText1, IFNULL(qtl2.ObjectiveText1, ""), IFNULL(qtl3.ObjectiveText1, ""), IFNULL(qtl4.ObjectiveText1, ""), IFNULL(qtl6.ObjectiveText1, ""), IFNULL(qtl8.ObjectiveText1, ""),
q.ObjectiveText2, IFNULL(qtl2.ObjectiveText2, ""), IFNULL(qtl3.ObjectiveText2, ""), IFNULL(qtl4.ObjectiveText2, ""), IFNULL(qtl6.ObjectiveText2, ""), IFNULL(qtl8.ObjectiveText2, ""),
q.ObjectiveText3, IFNULL(qtl2.ObjectiveText3, ""), IFNULL(qtl3.ObjectiveText3, ""), IFNULL(qtl4.ObjectiveText3, ""), IFNULL(qtl6.ObjectiveText3, ""), IFNULL(qtl8.ObjectiveText3, ""),
q.ObjectiveText4, IFNULL(qtl2.ObjectiveText4, ""), IFNULL(qtl3.ObjectiveText4, ""), IFNULL(qtl4.ObjectiveText4, ""), IFNULL(qtl6.ObjectiveText4, ""), IFNULL(qtl8.ObjectiveText4, "")
FROM
quest_template q
LEFT JOIN
@ -105,6 +105,8 @@ function quests(array $ids = [])
quest_template_locale qtl2 ON q.ID = qtl2.ID AND qtl2.locale = "frFR"
LEFT JOIN
quest_template_locale qtl3 ON q.ID = qtl3.ID AND qtl3.locale = "deDE"
LEFT JOIN
quest_template_locale qtl4 ON q.ID = qtl4.ID AND qtl4.locale = "zhCN"
LEFT JOIN
quest_template_locale qtl6 ON q.ID = qtl6.ID AND qtl6.locale = "esES"
LEFT JOIN

View file

@ -33,7 +33,7 @@ function races()
REPLACE INTO
?_races
SELECT
id, 0, flags, 0, factionId, 0, 0, baseLanguage, IF(side = 2, 0, side + 1), fileString, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, expansion
id, 0, flags, 0, factionId, 0, 0, baseLanguage, IF(side = 2, 0, side + 1), fileString, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, expansion
FROM
dbc_chrraces';

View file

@ -34,7 +34,7 @@ function skillline()
REPLACE INTO
?_skillline
SELECT
id, categoryId, 0, categoryId, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc6, description_loc8, 0, iconId, 0, 0, ""
id, categoryId, 0, categoryId, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc4, description_loc6, description_loc8, 0, iconId, 0, 0, ""
FROM
dbc_skillline';

View file

@ -88,10 +88,10 @@ function spell()
EffectSpellClassMaskC1, EffectSpellClassMaskC2, EffectSpellClassMaskC3,
0 AS iconId, 0 AS iconIdAlt,
0 AS rankId, 0 AS spellVisualId1,
CONCAT("Serverside - ",Comment) AS name_loc0,CONCAT("Serverside - ",Comment) AS name_loc2,CONCAT("Serverside - ",Comment) AS name_loc3,CONCAT("Serverside - ",Comment) AS name_loc6,CONCAT("Serverside - ",Comment) AS name_loc8,
"" AS rank_loc0, "" AS rank_loc2, "" AS rank_loc3, "" AS rank_loc6, "" AS rank_loc8,
"" AS description_loc0, "" AS description_loc2, "" AS description_loc3, "" AS description_loc6, "" AS description_loc8,
"" AS buff_loc0, "" AS buff_loc2, "" AS buff_loc3, "" AS buff_loc6, "" AS buff_loc8,
CONCAT("Serverside - ",Comment) AS name_loc0,CONCAT("Serverside - ",Comment) AS name_loc2,CONCAT("Serverside - ",Comment) AS name_loc3,CONCAT("Serverside - ",Comment) AS name_loc4,CONCAT("Serverside - ",Comment) AS name_loc6,CONCAT("Serverside - ",Comment) AS name_loc8,
"" AS rank_loc0, "" AS rank_loc2, "" AS rank_loc3, "" AS rank_loc4, "" AS rank_loc6, "" AS rank_loc8,
"" AS description_loc0, "" AS description_loc2, "" AS description_loc3, "" AS description_loc4, "" AS description_loc6, "" AS description_loc8,
"" AS buff_loc0, "" AS buff_loc2, "" AS buff_loc3, "" AS buff_loc4, "" AS buff_loc6, "" AS buff_loc8,
0 AS powerCostPercent,
0 AS startRecoveryCategory,
0 AS startRecoveryTime,
@ -178,10 +178,10 @@ function spell()
effect1BonusMultiplier, effect2BonusMultiplier, effect3BonusMultiplier,
0 AS iconId, iconId AS iconIdBak, 0 AS iconIdAlt,
0 AS rankId, spellVisualId1,
name_loc0, name_loc2, name_loc3, name_loc6, name_loc8,
rank_loc0, rank_loc2, rank_loc3, rank_loc6, rank_loc8,
description_loc0, description_loc2, description_loc3, description_loc6, description_loc8,
buff_loc0, buff_loc2, buff_loc3, buff_loc6, buff_loc8,
name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8,
rank_loc0, rank_loc2, rank_loc3, rank_loc4, rank_loc6, rank_loc8,
description_loc0, description_loc2, description_loc3, description_loc4, description_loc6, description_loc8,
buff_loc0, buff_loc2, buff_loc3, buff_loc4, buff_loc6, buff_loc8,
maxTargetLevel,
spellFamilyId,
spellFamilyFlags1, spellFamilyFlags2, spellFamilyFlags3,

View file

@ -56,7 +56,7 @@ function taxi() // path & nodes
0 AS typeId,
1 AS reactA,
1 AS reactH,
tn.name_loc0, tn.name_loc2, tn.name_loc3, tn.name_loc6, tn.name_loc8,
tn.name_loc0, tn.name_loc2, tn.name_loc3, tn.name_loc4, tn.name_loc6, tn.name_loc8,
tn.mapId AS origMap,
tn.posX AS origPosX,
tn.posY AS origPosY
@ -87,7 +87,7 @@ function taxi() // path & nodes
0 AS typeId,
1 AS reactA,
1 AS reactH,
tn.name_loc0, tn.name_loc2, tn.name_loc3, tn.name_loc6, tn.name_loc8,
tn.name_loc0, tn.name_loc2, tn.name_loc3, tn.name_loc4, tn.name_loc6, tn.name_loc8,
tn.mapId AS origMap,
tn.posX AS origPosX,
tn.posY AS origPosY

View file

@ -49,7 +49,7 @@ function titles()
WHERE
qt.RewardTitle <> 0';
DB::Aowow()->query('REPLACE INTO ?_titles SELECT id, 0, 0, 0, 0, 0, 0, 0, bitIdx, male_loc0, male_loc2, male_loc3, male_loc6, male_loc8, female_loc0, female_loc2, female_loc3, female_loc6, female_loc8 FROM dbc_chartitles');
DB::Aowow()->query('REPLACE INTO ?_titles SELECT id, 0, 0, 0, 0, 0, 0, 0, bitIdx, male_loc0, male_loc2, male_loc3, male_loc4, male_loc6, male_loc8, female_loc0, female_loc2, female_loc3, female_loc4, female_loc6, female_loc8 FROM dbc_chartitles');
// hide unused titles
DB::Aowow()->query('UPDATE ?_titles SET cuFlags = ?d WHERE id BETWEEN 85 AND 123 AND id NOT IN (113, 120, 121, 122)', CUSTOM_EXCLUDE_FOR_LISTVIEW);

View file

@ -85,6 +85,7 @@ function zones()
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc0, m.name_loc0),
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc2, m.name_loc2),
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc3, m.name_loc3),
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc4, m.name_loc4),
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc6, m.name_loc6),
IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc8, m.name_loc8)
FROM

View file

@ -0,0 +1,121 @@
ALTER TABLE `aowow_achievement`
ADD COLUMN `name_loc4` VARCHAR(86) NOT NULL AFTER `name_loc3`,
ADD COLUMN `description_loc4` TEXT NOT NULL AFTER `description_loc3`,
ADD COLUMN `reward_loc4` VARCHAR(92) NOT NULL AFTER `reward_loc3`;
ALTER TABLE `aowow_achievementcategory`
ADD COLUMN `name_loc4` VARCHAR(255) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_achievementcriteria`
ADD COLUMN `name_loc4` VARCHAR(128) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_announcements`
ADD COLUMN `text_loc4` TEXT NOT NULL AFTER `text_loc3`;
ALTER TABLE `aowow_classes`
ADD COLUMN `name_loc4` VARCHAR(128) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_creature`
ADD COLUMN `name_loc4` VARCHAR(100) NULL DEFAULT NULL AFTER `name_loc3`,
ADD COLUMN `subname_loc4` VARCHAR(100) NULL DEFAULT NULL AFTER `subname_loc3`;
ALTER TABLE `aowow_currencies`
ADD COLUMN `name_loc4` VARCHAR(64) NOT NULL AFTER `name_loc3`,
ADD COLUMN `description_loc4` VARCHAR(256) NOT NULL AFTER `description_loc3`;
ALTER TABLE `aowow_emotes`
ADD COLUMN `target_loc4` VARCHAR(95) NULL DEFAULT NULL AFTER `target_loc3`,
ADD COLUMN `noTarget_loc4` VARCHAR(85) NULL DEFAULT NULL AFTER `noTarget_loc3`,
ADD COLUMN `self_loc4` VARCHAR(85) NULL DEFAULT NULL AFTER `self_loc3`;
ALTER TABLE `aowow_factions`
ADD COLUMN `name_loc4` VARCHAR(40) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_holidays`
ADD COLUMN `name_loc4` VARCHAR(36) NOT NULL AFTER `name_loc3`,
ADD COLUMN `description_loc4` TEXT NULL AFTER `description_loc3`;
ALTER TABLE `aowow_home_featuredbox`
ADD COLUMN `text_loc4` TEXT NOT NULL AFTER `text_loc3`;
ALTER TABLE `aowow_home_featuredbox_overlay`
ADD COLUMN `title_loc4` VARCHAR(100) NOT NULL AFTER `title_loc3`;
ALTER TABLE `aowow_home_oneliner`
ADD COLUMN `text_loc4` VARCHAR(200) NOT NULL AFTER `text_loc3`;
ALTER TABLE `aowow_itemenchantment`
ADD COLUMN `name_loc4` VARCHAR(100) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_itemlimitcategory`
ADD COLUMN `name_loc4` VARCHAR(34) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_itemrandomenchant`
ADD COLUMN `name_loc4` VARCHAR(250) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_items`
ADD COLUMN `name_loc4` VARCHAR(127) NULL DEFAULT NULL AFTER `name_loc3`,
ADD COLUMN `description_loc4` VARCHAR(255) NULL DEFAULT NULL AFTER `description_loc3`;
ALTER TABLE `aowow_itemset`
ADD COLUMN `name_loc4` VARCHAR(255) NOT NULL AFTER `name_loc3`,
ADD COLUMN `bonusText_loc4` VARCHAR(256) NOT NULL AFTER `bonusText_loc3`;
ALTER TABLE `aowow_mailtemplate`
ADD COLUMN `subject_loc4` VARCHAR(128) NOT NULL AFTER `subject_loc3`,
ADD COLUMN `text_loc4` TEXT NOT NULL AFTER `text_loc3`;
ALTER TABLE `aowow_objects`
ADD COLUMN `name_loc4` VARCHAR(100) NULL DEFAULT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_pet`
ADD COLUMN `name_loc4` VARCHAR(64) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_quests`
ADD COLUMN `name_loc4` TEXT NULL AFTER `name_loc3`,
ADD COLUMN `objectives_loc4` TEXT NULL AFTER `objectives_loc3`,
ADD COLUMN `details_loc4` TEXT NULL AFTER `details_loc3`,
ADD COLUMN `end_loc4` TEXT NULL AFTER `end_loc3`,
ADD COLUMN `offerReward_loc4` TEXT NULL AFTER `offerReward_loc3`,
ADD COLUMN `requestItems_loc4` TEXT NULL AFTER `requestItems_loc3`,
ADD COLUMN `completed_loc4` TEXT NULL AFTER `completed_loc3`,
ADD COLUMN `objectiveText1_loc4` TEXT NULL AFTER `objectiveText1_loc3`,
ADD COLUMN `objectiveText2_loc4` TEXT NULL AFTER `objectiveText2_loc3`,
ADD COLUMN `objectiveText3_loc4` TEXT NULL AFTER `objectiveText3_loc3`,
ADD COLUMN `objectiveText4_loc4` TEXT NULL AFTER `objectiveText4_loc3`;
ALTER TABLE `aowow_races`
ADD COLUMN `name_loc4` VARCHAR(64) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_skillline`
ADD COLUMN `name_loc4` VARCHAR(64) NOT NULL AFTER `name_loc3`,
ADD COLUMN `description_loc4` TEXT NOT NULL AFTER `description_loc3`;
ALTER TABLE `aowow_sourcestrings`
ADD COLUMN `source_loc4` VARCHAR(128) NOT NULL AFTER `source_loc3`;
ALTER TABLE `aowow_spell`
ADD COLUMN `name_loc4` VARCHAR(85) NOT NULL AFTER `name_loc3`,
ADD COLUMN `rank_loc4` VARCHAR(22) NOT NULL AFTER `rank_loc3`,
ADD COLUMN `description_loc4` TEXT NOT NULL AFTER `description_loc3`,
ADD COLUMN `buff_loc4` TEXT NOT NULL AFTER `buff_loc3`;
ALTER TABLE `aowow_spellfocusobject`
ADD COLUMN `name_loc4` VARCHAR(95) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_spellrange`
ADD COLUMN `name_loc4` VARCHAR(27) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_taxinodes`
ADD COLUMN `name_loc4` VARCHAR(55) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_titles`
ADD COLUMN `male_loc4` VARCHAR(37) NOT NULL AFTER `male_loc3`,
ADD COLUMN `female_loc4` VARCHAR(39) NOT NULL AFTER `female_loc3`;
ALTER TABLE `aowow_totemcategory`
ADD COLUMN `name_loc4` VARCHAR(31) NOT NULL AFTER `name_loc3`;
ALTER TABLE `aowow_zones`
ADD COLUMN `name_loc4` VARCHAR(120) NOT NULL AFTER `name_loc3`;

View file

@ -0,0 +1,34 @@
-- drop deprecated dbc data
DROP TABLE IF EXISTS `dbc_achievement_category`;
DROP TABLE IF EXISTS `dbc_achievement_criteria`;
DROP TABLE IF EXISTS `dbc_achievement`;
DROP TABLE IF EXISTS `dbc_areatable`;
DROP TABLE IF EXISTS `dbc_chartitles`;
DROP TABLE IF EXISTS `dbc_chrclasses`;
DROP TABLE IF EXISTS `dbc_creaturefamily`;
DROP TABLE IF EXISTS `dbc_emotestexxtdata`;
DROP TABLE IF EXISTS `dbc_faction`;
DROP TABLE IF EXISTS `dbc_holidaydescriptions`;
DROP TABLE IF EXISTS `dbc_holidaynames`;
DROP TABLE IF EXISTS `dbc_itemlimitcategory`;
DROP TABLE IF EXISTS `dbc_itemrandomproperties`;
DROP TABLE IF EXISTS `dbc_itemrandomsuffix`;
DROP TABLE IF EXISTS `dbc_itemset`;
DROP TABLE IF EXISTS `dbc_lfgdungeons`;
DROP TABLE IF EXISTS `dbc_mailtemplate`;
DROP TABLE IF EXISTS `dbc_map`;
DROP TABLE IF EXISTS `dbc_skillline`;
DROP TABLE IF EXISTS `dbc_spell`;
DROP TABLE IF EXISTS `dbc_spellfocusobject`;
DROP TABLE IF EXISTS `dbc_spellitemenchantment`;
DROP TABLE IF EXISTS `dbc_spellrange`;
DROP TABLE IF EXISTS `dbc_spellshapeshiftform`;
DROP TABLE IF EXISTS `dbc_talenttab`;
DROP TABLE IF EXISTS `dbc_taxinodes`;
DROP TABLE IF EXISTS `dbc_totemcategory`;
-- update config
UPDATE `aowow_config` SET `comment` = 'default: 0x15D - allowed locales - 0:English, 2:French, 3:German, 4:Chinese, 6:Spanish, 8:Russian' WHERE `key` = 'locales';
-- rebuild affected files
UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' achievementcategory achievementcriteria itemenchantment itemlimitcategory mailtemplate spellfocusobject spellrange totemcategory classes factions holidays itemrandomenchant races shapeshiftforms skillline emotes achievement creature currencies objects pet quests spell taxi titles items zones itemset'), `build` = CONCAT(IFNULL(`build`, ''), ' complexImg locales statistics talentCalc pets glyphs itemsets enchants gems profiler');

BIN
static/ZYHei.ttf Normal file

Binary file not shown.

114
static/css/locale_zhcn.css Normal file
View file

@ -0,0 +1,114 @@
/* >>> custom >>> */
@font-face {
font-family: ZYHei;
src: url(../ZYHei.ttf) format('truetype');
}
.wowhead-tooltip td, .wowhead-tooltip th {
font-family: ZYHei;
font-size: 15px;
line-height: 20px;
}
.listview-mode-default th {
line-height: 21px;
}
/* <<< custom <<< */
div.modelviewer-quality div {
float: left;
width: 61px;
height: 22px;
margin-right: 10px;
background: url(../images/zhcn/modelviewer-picshures.gif) left center no-repeat;
}
div.modelviewer-model div {
margin-left: 40px;
margin-right: 10px;
float: left;
width: 50px;
height: 22px;
background: url(../images/zhcn/modelviewer-picshures.gif) -506px center no-repeat;
}
a.modelviewer-help span {
display: block;
width: 52px;
height: 22px;
background: url(../images/zhcn/modelviewer-picshures.gif) -100px center no-repeat;
}
a:hover.modelviewer-help span {
background-position: -200px center;
}
a.modelviewer-close span {
display: block;
width: 66px;
height: 22px;
background: url(../images/zhcn/modelviewer-picshures.gif) -300px center no-repeat;
}
a:hover.modelviewer-close span {
background-position: -400px center;
}
a.screenshotviewer-prev b {
display: block;
width: 88px;
height: 22px;
background: url(../images/zhcn/screenshotviewer-picshures.gif?2) -200px center no-repeat;
}
a.screenshotviewer-next b {
display: block;
width: 53px;
height: 22px;
background: url(../images/zhcn/screenshotviewer-picshures.gif?2) -300px center no-repeat;
}
a.screenshotviewer-cover span {
width: 66px;
height: 22px;
}
a.screenshotviewer-cover b {
display: block;
width: 66px;
height: 22px;
background: url(../images/zhcn/screenshotviewer-picshures.gif?2) -100px center no-repeat;
}
a.screenshotviewer-original span {
display: block;
width: 93px;
height: 22px;
background: url(../images/zhcn/screenshotviewer-picshures.gif?2) -400px center no-repeat;
}
a:hover.screenshotviewer-original span {
background-position: -500px center;
}
a.screenshotviewer-close span {
display: block;
width: 66px;
height: 22px;
background: url(../images/zhcn/screenshotviewer-picshures.gif?2) 0 center no-repeat;
}
a:hover.screenshotviewer-close span {
background-position: -100px center;
}
#su_searchbox {
left: -25px !important;
}
/*
#su_weights {
width: 550px !important;
}
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -29,7 +29,7 @@ MarkupSourceMap[MARKUP_SOURCE_BETA] = 'beta';
var MarkupDomainRegexMap = {
betaPtrLang: /^(beta|legion|wod|mop|ptr|www|ko|fr|de|cn|es|ru|pt|it)$/,
lang: /^(www|fr|de|es|ru)$/ // Aowowo - /^(www|ko|fr|de|cn|es|ru|pt|it)$/
lang: /^(www|fr|de|cn|es|ru)$/ // Aowowo - /^(www|ko|fr|de|cn|es|ru|pt|it)$/
};
var Markup = {
@ -75,6 +75,7 @@ var Markup = {
'mop': 'beta',
'fr': 'frfr',
'de': 'dede',
'cn': 'zhcn',
'es': 'eses',
'ru': 'ruru',
'pt': 'ptbr'

View file

@ -909,6 +909,7 @@ $WH.g_getLocaleFromDomain = function(domain) {
$WH.g_getLocaleFromDomain.L = {
fr: 2,
de: 3,
cn: 4,
es: 6,
ru: 8,
www: 0

View file

@ -3089,6 +3089,7 @@ var LANG = {
tab_skills: "Fertigkeiten",
tab_skinnedfrom: "Gekürschnert von",
tab_skinning: "Kürschnerei",
tab_socketbonus: "Sockelbonus", // aowow - custom
tab_soldby: "Verkauft von",
tab_spells: "Zauber",
tab_starts: "Startet Quests",

View file

@ -3138,6 +3138,7 @@ var LANG = {
tab_skills: "Skills",
tab_skinnedfrom: "Skinned from",
tab_skinning: "Skinning",
tab_socketbonus: "Socket Bonus", // aowow - custom
tab_soldby: "Sold by",
tab_spells: "Spells",
tab_starts: "Starts",

View file

@ -2670,7 +2670,7 @@ var LANG = {
lvpage_next: "Siguiente ",
lvpage_last: "Última ",
lvsearchresults: "Buscar en resultados",
lvsearchresults: "Buscar en resultados",
lvsearchdisplayedresults: "Buscar en los resultados mostrados",
lvscreenshot_submit: "Envia una captura de pantalla",
@ -3089,6 +3089,7 @@ var LANG = {
tab_skills: "Habilidades",
tab_skinnedfrom: "Desollado de",
tab_skinning: "Desuello",
tab_socketbonus: "Bono de ranura", // aowow - custom
tab_soldby: "Vendido por",
tab_spells: "Hechizos",
tab_starts: "Empieza",

View file

@ -3091,6 +3091,7 @@ var LANG = {
tab_skills: "Compétences",
tab_skinnedfrom: "Dépecé depuis",
tab_skinning: "Dépeçage",
tab_socketbonus: "Bonus de châsse", // aowow - custom
tab_soldby: "Vendu par",
tab_spells: "Sorts",
tab_starts: "Débute",

View file

@ -3091,6 +3091,7 @@ var LANG = {
tab_skills: "Умения",
tab_skinnedfrom: "Снимается с",
tab_skinning: "Снятие шкур",
tab_socketbonus: "При соответствии цвета", // aowow - custom
tab_soldby: "Продается у",
tab_spells: "Заклинания",
tab_starts: "Начинает",

4593
static/js/locale_zhcn.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,91 @@
<div id="tab-add-your-comment" style="display: none">
发表评论时请记住以下几点:
<ul>
<li><div>你的评论必须是中文否则可能会被移除。</div></li>
<li><div>不知道如何发表?看看我们的<a href="?help=commenting-and-you" target="_blank">指南</a></div></li>
<li><div>请发表你的疑问在我们的<a href="?forums">论坛</a> 以获得更快的答复。</div></li>
<li><div>你在发表前最好先预览下你的评论。</div></li>
</ul>
<?php
if (User::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?php echo $this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Submit"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!User::$id):
?>
<small>你尚未登录,请先<a href="?account=signin">登录</a><a href="?account=signup">注册一个账号</a> 以发表你的评论。</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
你的截图最好是如下几种情形:
<ul>
<li><div>游戏内截图比模型查看器生成的更优先。</div></li>
<li><div>越高的质量越好!</div></li>
<li><div>请阅读我们的<a href="?help=screenshots-tips-tricks" target="_blank">提示和技巧</a>假如你还没看过的话。</div></li>
</ul>
<?php
echo $this->ssError ? ' <div class="msg-failure">'.$this->ssError."</div>\n <div class=\"pad\"></div>\n" : '';
if (User::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?php echo $this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Submit" />
<div class="pad3"></div>
<small class="q0">注意:你的截图将在审查后才会出现在站点上。</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!User::$id):
?>
<small>你尚未登录,请先<a href="?account=signin">登录</a>以提交截图。</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Simply type the URL of the video in the form below.
<?php
if (User::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?php echo $this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Supported: YouTube only</small>
<div class="pad2"></div>
<input type="submit" value="Submit" />
<div class="pad3"></div>
<small class="q0">Note: Your video will need to be approved before appearing on the site.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!User::$id):
?>
<small>You are not signed in. Please <a href="?account=signin">sign in</a> to submit a video.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -0,0 +1,10 @@
<h2><img src="<?php echo STATIC_URL; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">提醒</h2>
你的截图将<b class="q10">不会</b> 通过审查假设不符合下列准则。
<ul>
<li><div>Be sure to turn up your <u><b>graphics settings</b></u> to make sure the shot looks good!</div></li>
<li><div><u><b>Model viewer</b></u> shots are deleted on sight (this also includes character select, typically).</div></li>
<li><div>Don't include the <u><b>onscreen text</b></u> and the <u><b>selection circle</b></u> of a NPC.</div></li>
<li><div>Don't include any <u><b>UI</b></u> in the shot if you can help it.</div></li>
<li><div>Use the screenshot <u><b>cropping tool</b></u> to focus on the item as much as possible and reduce any unnecessary surrounding, as to better show off the item in question when reduced to the thumbnail that will be present on the item's page.</div></li>
</ul>