Еще один критерий определения старых квестов.)
[cswow.git] / include / functions.php
blob33bbe0fbe56afdcf47f4239e10bf62997d7bb185
1 <?php
2 include_once ("item_table.php");
3 include_once ("spell_table.php");
4 include_once ("talent_table.php");
5 include_once ("gameobject_table.php");
6 include_once ("enchant_table.php");
7 include_once("include/quest_data.php");
9 function getLPageOffset($page, $limit)
11 if ($page< 1)$page_seek = 0;
12 else $page_seek = ($page-1) * $limit;
13 return $page_seek;
16 function getPageOffset($page)
18 global $config;
19 return getLPageOffset($page, $config['fade_limit']);
22 function generateLPage($totalRecords, $currentPage, $link, $limit, $colSpan)
24 $totalPage = floor($totalRecords /$limit+0.9999);
25 if ($totalPage <=1) return;
26 if ($currentPage<1)
27 $currentPage = 1;
28 echo "<tr><td colspan=$colSpan class=page>";
29 for ($i=1;$i<=$totalPage;$i++)
31 if ($i!=$currentPage) printf($link, $i, $i);
32 else echo '<b><i>'.$i.' </i></b>';
34 echo "</td></tr>";
37 function generatePage($totalRecords, $currentPage, $link, $colSpan)
39 global $config;
40 generateLPage($totalRecords, $currentPage, $link, $config['fade_limit'], $colSpan);
43 function RenderError($text)
45 global $lang;
46 echo "$lang[error] - $text";
48 function money($many, $height=10)
50 if ($many>0)
52 $many = str_pad($many, 12, 0, STR_PAD_LEFT);
53 $str = "";
55 else if ($many == 0)
56 return "n/a";
57 else
59 $many = str_pad(-$many, 12, 0, STR_PAD_LEFT);
60 $str = "-";
62 $copper = intval(substr($many, -2));
63 $silver = intval(substr($many, -4, -2));
64 $gold = intval(substr($many, -11, -4));
65 $hstr = "";
66 if ($height!=14) $hstr = "height={$height}px";
67 if ($gold ) { $str.= "$gold<img $hstr src=images/gold.gif> "; }
68 if ($silver) { $str.= "$silver<img $hstr src=images/silver.gif> "; }
69 if ($copper) { $str.= "$copper<img $hstr src=images/copper.gif>"; }
70 return $str;
73 function getTimeText($seconds)
75 global $lang;
76 $text = "";
77 if ($seconds < 0) {$text.= "$lang[minustime]";}
78 if ($seconds >=24*3600) {$text.= intval($seconds/(24*3600))." $lang[days]"; if ($seconds%=24*3600) $text.=" ";}
79 if ($seconds >= 3600) {$text.= intval($seconds/3600)." $lang[hours]"; if ($seconds%=3600) $text.=" ";}
80 if ($seconds >= 60) {$text.= intval($seconds/60)." $lang[min]"; if ($seconds%=60) $text.=" ";}
81 if ($seconds > 0) {$text.= $seconds." $lang[sec]";}
82 return $text;
85 // Ôóíêöèÿ ðàçäåëåíèÿ ñòðîêè ïî òî÷êå
86 function mergeStrByPoint($str, &$a, &$b)
88 $len = strlen($str);
89 if ($len == 0) {$a = -1; $b = -1; return;}
90 if ($x = strpos($str, '.'))
92 $a = intval(substr($str, 0, $x));
93 $b = intval(substr($str, $x + 1, $len - $x));
94 return;
96 $a = intval($str);
97 $b = -1;
101 * Convert a PHP scalar, array or hash to JS scalar/array/hash. This function is
102 * an analog of json_encode(), but it can work with a non-UTF8 input and does not
103 * analyze the passed data. Output format must be fully JSON compatible.
105 * @param mixed $a Any structure to convert to JS.
106 * @return string JavaScript equivalent structure.
108 function php2js($a=false)
110 if (is_null($a)) return 'null';
111 if ($a === false) return 'false';
112 if ($a === true) return 'true';
113 if (is_scalar($a)) {
114 if (is_float($a)) {
115 // Always use "." for floats.
116 $a = str_replace(",", ".", strval($a));
118 // All scalars are converted to strings to avoid indeterminism.
119 // PHP's "1" and 1 are equal for all PHP operators, but
120 // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
121 // we should get the same result in the JS frontend (string).
122 // Character replacements for JSON.
123 static $jsonReplaces = array(
124 array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
125 array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')
127 return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
129 $isList = true;
130 for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
131 if (key($a) !== $i) {
132 $isList = false;
133 break;
136 $result = array();
137 if ($isList) {
138 foreach ($a as $v) {
139 $result[] = php2js($v);
141 return '[ ' . join(', ', $result) . ' ]'."\n";
142 } else {
143 foreach ($a as $k => $v) {
144 $result[] = php2js($k) . ': ' . php2js($v);
146 return '{ ' . join(', ', $result) . ' }';
150 // ñîñòàâëÿåò ñïèñîê
151 function getListFromArray($array, $i, $mask, $href)
153 $text = "";
154 while ($mask)
156 if ($mask & 1)
158 $data = @$array[$i]; if ($data == "") $data = "$i";
159 if ($href)
160 $text.="<a href=\"".sprintf($href, $i)."\">".$data."</a>";
161 else
162 $text.=$data;
163 if ($mask!=1)
164 $text.=", ";
166 $mask>>=1;
167 $i++;
169 return $text;
171 // ñîñòàâëÿåò ñïèñîê c 0
172 function getListFromArray_0($array, $mask, $href="")
174 return getListFromArray($array, 0, $mask, $href);
176 // ñîñòàâëÿåò ñïèñîê c 1
177 function getListFromArray_1($array, $mask, $href="")
179 return getListFromArray($array, 1, $mask, $href);
182 function getExtendCost($excostid)
184 global $wDB;
185 return $wDB->selectRow('-- CACHE: 1h
186 SELECT * FROM `wowd_item_ex_cost` WHERE `id` = ?d', $excostid);
189 function healthmanaex($hp)
191 echo number_format($hp);
194 function getLootList($lootId, $table, &$totalRecords, $offset=0, $count=0)
196 global $dDB;
197 $totalRecords = 0;
198 $limit = "";
199 if ($count) $limit = "LIMIT $offset, $count";
200 $rows = $dDB->selectPage($totalRecords, "SELECT * FROM `$table`
201 WHERE `entry` = ?d
202 GROUP BY IF (`mincountOrRef` < 0, `mincountOrRef`, `item`)
203 ORDER BY `groupid`, `ChanceOrQuestChance`>0, ABS(`ChanceOrQuestChance`) DESC $limit", $lootId);
204 if (!$rows)
205 return 0;
206 foreach($rows as &$loot)
208 // Group chance
209 if ($loot['ChanceOrQuestChance'] == 0)
211 $group = $loot['groupid'];
212 $chance = 0; $n = 0;
213 foreach($rows as &$g)
214 if ($g['groupid'] == $group)
216 if ($g['ChanceOrQuestChance']>0) $chance+=$g['ChanceOrQuestChance'];
217 else $n++;
219 $chance = round((100 - $chance) / $n, 3);
220 foreach($rows as &$g)
221 if ($g['groupid'] == $group && $g['ChanceOrQuestChance']==0)
222 $g['ChanceOrQuestChance'] =$chance;
224 if ($loot['mincountOrRef'] < 0)
226 // Ïîëó÷àåì ñïèñîê
227 $subcount = 0;
228 $loot['item'] = getLootList(-$loot['mincountOrRef'], "reference_loot_template", $subcount);
229 $loot['maxcount'] = $dDB->selectCell("SELECT count(*) FROM `$table` WHERE `entry` = ?d AND `mincountOrRef` = ?d", $lootId, $loot['mincountOrRef']);
232 return $rows;
235 //******************************************************************************
236 // Ëîêàëèçàöèÿ äàííûõ
237 //******************************************************************************
238 function localiseCreature(&$creature)
240 global $dDB, $config;
241 $locale = $config['locales_lang'];
242 if ($locale == 0 OR @$creature['entry'] == 0)
243 return;
244 $lang = $dDB->selectRow('-- CACHE: 1h
245 SELECT
246 `name_loc'.$locale.'` AS `name`,
247 `subname_loc'.$locale.'` AS `subname`
248 FROM `locales_creature`
249 WHERE `entry` = ?d', $creature['entry']);
250 if ($lang)
252 if ($lang['name']) $creature['name'] = $lang['name'];
253 if ($lang['subname']) $creature['subname'] = $lang['subname'];
257 function localiseGameobject(&$go)
259 global $dDB, $config;
260 $locale = $config['locales_lang'];
261 if ($locale == 0 OR $go['entry']==0)
262 return;
263 $lang = $dDB->selectRow('-- CACHE: 1h
264 SELECT
265 `name_loc'.$locale.'` AS `name`,
266 `castbarcaption_loc'.$locale.'` AS `cast_name`
267 FROM `locales_gameobject`
268 WHERE `entry` = ?d', $go['entry']);
269 if ($lang)
271 if ($lang['name']) $go['name'] = $lang['name'];
272 if ($lang['cast_name']) $go['castBarCaption'] = $lang['cast_name'];
276 function localiseQuest(&$quest)
278 global $dDB, $config;
279 $locale = $config['locales_lang'];
280 if ($locale == 0 OR @$quest['entry']==0)
281 return;
282 $lang = $dDB->selectRow('-- CACHE: 1h
283 SELECT
284 `Title_loc'.$locale.'` as `Title`,
285 `Details_loc'.$locale.'` as `Details`,
286 `Objectives_loc'.$locale.'` as `Objectives`,
287 `OfferRewardText_loc'.$locale.'` as `OfferRewardText`,
288 `RequestItemsText_loc'.$locale.'` as `RequestItemsText`,
289 `EndText_loc'.$locale.'` as `EndText`,
290 `CompletedText_loc'.$locale.'` as `CompletedText`,
291 `ObjectiveText1_loc'.$locale.'` as `ObjectiveText1`,
292 `ObjectiveText2_loc'.$locale.'` as `ObjectiveText2`,
293 `ObjectiveText3_loc'.$locale.'` as `ObjectiveText3`,
294 `ObjectiveText4_loc'.$locale.'` as `ObjectiveText4`
295 FROM `locales_quest` WHERE `entry` = ?d', $quest['entry']);
296 if ($lang)
298 if ($lang['Title']) $quest['Title'] = $lang['Title'];
299 if ($lang['Details']) $quest['Details'] = $lang['Details'];
300 if ($lang['Objectives']) $quest['Objectives'] = $lang['Objectives'];
301 if ($lang['OfferRewardText']) $quest['OfferRewardText'] = $lang['OfferRewardText'];
302 if ($lang['RequestItemsText'])$quest['RequestItemsText']= $lang['RequestItemsText'];
303 if ($lang['EndText']) $quest['EndText'] = $lang['EndText'];
304 if ($lang['CompletedText']) $quest['CompletedText'] = $lang['CompletedText'];
305 if ($lang['ObjectiveText1']) $quest['ObjectiveText1'] = $lang['ObjectiveText1'];
306 if ($lang['ObjectiveText2']) $quest['ObjectiveText2'] = $lang['ObjectiveText2'];
307 if ($lang['ObjectiveText3']) $quest['ObjectiveText3'] = $lang['ObjectiveText3'];
308 if ($lang['ObjectiveText4']) $quest['ObjectiveText4'] = $lang['ObjectiveText4'];
312 function localiseItem(&$item)
314 global $dDB, $config;
315 $locale = $config['locales_lang'];
316 if ($locale == 0 OR $item['entry']==0)
317 return;
318 $lang = $dDB->selectRow('-- CACHE: 1h
319 SELECT
320 `name_loc'.$locale.'` AS `name`,
321 `description_loc'.$locale.'` AS `desc`
322 FROM `locales_item`
323 WHERE `entry` = ?d', $item['entry']);
324 if ($lang)
326 if ($lang['name']) $item['name'] = $lang['name'];
327 if ($lang['desc']) $item['description'] = $lang['desc'];
331 function getScalingStatDistribution($id)
333 global $wDB;
334 return $wDB->selectRow('-- CACHE: 1h
335 SELECT * FROM `wowd_scaling_stat_distribution` WHERE `id` = ?d', $id);
337 function getScalingStatValues($level)
339 global $wDB;
340 return $wDB->selectRow('-- CACHE: 1h
341 SELECT * FROM `wowd_scaling_stat_values` WHERE `level` = ?d', $level);
344 function getRandomSuffix($id)
346 global $wDB;
347 return $wDB->selectRow('-- CACHE: 1h
348 SELECT * FROM `wowd_item_random_suffix` WHERE `id` = ?d', $id);
351 function getRandomProperty($id)
353 global $wDB;
354 return $wDB->selectRow('-- CACHE: 1h
355 SELECT * FROM `wowd_item_random_propety` WHERE `id` = ?d', $id);
358 function getRandomPropertyPoint($level, $type, $quality)
360 if ($level < 0 OR $level > 300)
361 return 0;
362 switch ($quality)
364 case 2: $field = "uncommon"; break; // ITEM_QUALITY_UNCOMMON
365 case 3: $field = "rare"; break; // ITEM_QUALITY_RARE
366 case 4: $field = "epic"; break; // ITEM_QUALITY_EPIC
367 default:
368 return 0;
370 switch ($type)
372 case 0: // INVTYPE_NON_EQUIP:
373 case 18: // INVTYPE_BAG:
374 case 19: // INVTYPE_TABARD:
375 case 24: // INVTYPE_AMMO:
376 case 27: // INVTYPE_QUIVER:
377 case 28: // INVTYPE_RELIC:
378 return 0;
379 case 1: // INVTYPE_HEAD:
380 case 4: // INVTYPE_BODY:
381 case 5: // INVTYPE_CHEST:
382 case 7: // INVTYPE_LEGS:
383 case 17: // INVTYPE_2HWEAPON:
384 case 20: // INVTYPE_ROBE:
385 $field.= "_0";
386 break;
387 case 3: // INVTYPE_SHOULDERS:
388 case 6: // INVTYPE_WAIST:
389 case 8: // INVTYPE_FEET:
390 case 10: // INVTYPE_HANDS:
391 case 12: // INVTYPE_TRINKET:
392 $field.= "_1";
393 break;
394 case 2: // INVTYPE_NECK:
395 case 9: // INVTYPE_WRISTS:
396 case 11: // INVTYPE_FINGER:
397 case 14: // INVTYPE_SHIELD:
398 case 16: // INVTYPE_CLOAK:
399 case 23: // INVTYPE_HOLDABLE:
400 $field.= "_2";
401 break;
402 case 13: // INVTYPE_WEAPON:
403 case 21: // INVTYPE_WEAPONMAINHAND:
404 case 22: // INVTYPE_WEAPONOFFHAND:
405 $field.= "_3";
406 break;
407 case 15: // INVTYPE_RANGED:
408 case 25: // INVTYPE_THROWN:
409 case 26: // INVTYPE_RANGEDRIGHT:
410 $field.= "_4";
411 break;
412 default:
413 return 0;
415 global $wDB;
416 return $wDB->selectCell("-- CACHE: 1h
417 SELECT `$field` FROM `wowd_random_property_points` WHERE `itemlevel` = ?d", $level);
420 function getGlyph($entry)
422 global $wDB;
423 return $wDB->selectRow('-- CACHE: 1h
424 SELECT * FROM `wowd_glyphproperties` WHERE `id` = ?d', $entry);
427 function getGlyphName($entry)
429 if ($g=getGlyph($entry))
430 return getSpellName(getSpell($g['SpellId']));
431 return 'Glyph_'.$entry;
434 function getLockTypeNames()
436 global $wDB;
437 return $wDB->selectCol('-- CACHE: 1h
438 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_lock_type`');
440 // Lock
441 function getLockType($id, $asref=1)
443 $l = getLockTypeNames();
444 $name = isset($l[$id]) ? $l[$id] : 'Lock_type_'.$id;
445 if ($asref==1)
446 return '<a href="?s=s&lock='.$id.'">'.$name.'</a>';
447 if ($asref==2)
448 return '<a href="?s=o&lockSkill='.$id.'">'.$name.'</a>';
449 if ($asref==3)
450 return '<a href="?s=o&lockItem='.$id.'">'.$name.'</a>';
451 return $name;
454 // Ðàáîòà ñ lock
455 function getLock($id)
457 global $wDB;
458 return $wDB->selectRow('-- CACHE: 1h
459 SELECT * FROM `wowd_lock` WHERE `id` = ?d', $id);
462 // Spellfocus
463 function getSpellFocus($id)
465 global $wDB;
466 return $wDB->selectRow('-- CACHE: 1h
467 SELECT * FROM `wowd_spellfocus` WHERE `id` = ?d', $id);
470 // Spellfocus
471 function getSpellFocusName($id, $reftype=0)
473 $focus = getSpellFocus($id);
474 if ($focus)
476 if ($reftype == 1) return "<a href=?s=s&focus=$id>".$focus['name']."</a>";
477 if ($reftype == 2) return "<a href=?s=o&focus=$id>".$focus['name']."</a>";
478 return $focus['name'];
480 return "Spellfocus_$id";
483 // Ðàáîòà ñî ñêèëàìè
484 function getSkillLineAbility($spellId)
486 global $wDB;
487 return $wDB->selectRow('-- CACHE: 1h
488 SELECT * FROM `wowd_skill_line_ability` WHERE `spellId` = ?d', $spellId);
491 function getSkillLine($id)
493 global $wDB;
494 return $wDB->selectRow('-- CACHE: 1h
495 SELECT * FROM `wowd_skill_line` WHERE `id` = ?d', $id);
498 function getSkillName($skillId, $as_ref=1)
500 $skillLine = getSkillLine($skillId);
501 if ($skillLine)
503 if ($as_ref)
504 return "<a href=\"?skill=$skillId\">".$skillLine['Name']."</a>";
505 else
506 return $skillLine['Name'];
508 return "";
511 function getSkillNameForSpell($spellId, $as_ref=1)
513 if ($SkillLineAbility = getSkillLineAbility($spellId))
514 return getSkillName($SkillLineAbility['skillId'], $as_ref);
515 return "";
518 function show_spell($entry, $iconId=0, $style=0)
520 global $wDB;
521 if (!$iconId)
522 $iconId = $wDB->selectCell('-- CACHE: 1h
523 SELECT `SpellIconID` FROM `wowd_spell` WHERE `id` = ?d', $entry);
524 $icon = getSpellIcon($iconId);
525 echo '<a href="?spell='.$entry.'"><img'.($style?' class='.$style:'').' src="'.$icon.'"></a>';
526 return;
529 function validateText($text)
531 $letter = array("'",'"' ,"<" ,">" ,">" ,"\r","\n" );
532 $values = array("`",'&quot;',"&lt;","&gt;","&gt;","" ,"<br>");
533 return str_replace($letter, $values, $text);
535 function addTooltip($text, $extra='')
537 if ($text=='') return '';
538 return 'onmouseover="Tip(\''.validateText($text).'\''.($extra?','.$extra:'').');"';
541 function getSpellTargetPosition($id)
543 global $dDB;
544 return $dDB->selectRow("SELECT * FROM `spell_target_position` WHERE `id` = ?d", $id);
547 function getSpellScriptTarget($id)
549 global $dDB;
550 return $dDB->select("SELECT * FROM `spell_script_target` WHERE `entry` = ?d", $id);
553 function getEnchantment($enchantmentId)
555 global $wDB;
556 return $wDB->selectRow('-- CACHE: 1h
557 SELECT * FROM `wowd_item_enchantment` WHERE `id` = ?d', $enchantmentId);
560 function getEnchantmentDesc($enchantment)
562 if ($enc = getEnchantment($enchantment))
563 return "<a href=?enchant=$enchantment>".validateText($enc['description'])."</a>";
564 return "Enchant $enchantment";
567 function getGemInfo($GemId)
569 global $wDB;
570 return $wDB->selectRow('-- CACHE: 1h
571 SELECT * FROM `wowd_gemproperties` WHERE `id` = ?d', $GemId);
574 function getGemProperties($GemProperties)
576 if ($gem = getGemInfo($GemProperties))
577 return getEnchantmentDesc($gem['spellitemenchantement']);
578 return "Gem Properties id - $GemProperties";
581 //********************************************************************************
582 function getCreature($creature_id, $fields = "*")
584 global $dDB;
585 if ($creature = $dDB->selectRow("-- CACHE: 1h
586 SELECT $fields FROM `creature_template` WHERE `entry` = ?d", $creature_id))
587 localiseCreature($creature);
588 return $creature;
591 function getCreatureName($creature_id, $as_ref=1)
593 if ($Creature=getCreature($creature_id, "`entry`, `name`"))
595 if ($Creature['name']=="") $Creature['name'] = "npc_$creature_id";
596 if ($as_ref)
597 return "<a href=?npc=".$Creature['entry'].">".$Creature['name']."</a>";
598 return $Creature['name'];
600 return "Unknown creature - $creature_id";
603 function getCreatureRank($rank, $as_ref=1)
605 global $gCreatureRank;
606 $name = @$gCreatureRank[$rank];
607 if (empty($name)) $name = "Rank_".$rank;
608 if ($as_ref)
609 return "<a href=\"?s=n&rank=$rank\">".$name."</a>";
610 return $name;
613 function getCreatureFamilyNames()
615 global $wDB;
616 return $wDB->selectCol('-- CACHE: 1h
617 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_creature_family`');
620 function getCreatureFamily($family, $as_ref=1)
622 $l = getCreatureFamilyNames();
623 $name = isset($l[$family]) ? $l[$family] : 'family_'.$family;
624 if ($as_ref)
625 return '<a href="?s=n&family='.$family.'">'.$name.'</a>';
626 return $name;
629 // Creature type
630 function getCreatureTypeNames()
632 global $wDB;
633 return $wDB->selectCol('-- CACHE: 1h
634 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_creature_type`');
637 function getCreatureType($i, $as_ref=1)
639 $t = getCreatureTypeNames();
640 $name = isset($t[$i]) ? $t[$i] : 'Type_'.$i;
641 if ($as_ref)
642 return '<a href="?s=n&type='.$i.'">'.$name.'</a>';
643 return $name;
646 function getCreatureTypeList($mask, $as_ref=1)
648 $t = getCreatureTypeNames();
649 if ($as_ref)
650 return getListFromArray_1($t, $mask, "?s=n&type=%d");
651 return getListFromArray_1($t, $mask);
654 function getCreatureCount($creature_id)
656 global $dDB;
657 return $dDB->selectCell("SELECT count(*) FROM `creature` WHERE `id` = ?d", $creature_id);
660 function getCreatureFlagName($flag, $as_ref=1)
662 global $gCreatureFlags;
663 if ($as_ref)
664 return '<a href="?s=n&flag='.$flag.'">'.@$gCreatureFlags[$flag].'</a>';
665 return @$gCreatureFlags[$flag];
668 function getCreatureFlagsList($mask, $as_ref=1)
670 global $gCreatureFlags;
671 if ($as_ref)
672 return getListFromArray_0($gCreatureFlags, $mask, "?s=n&flag=%d");
673 return getListFromArray_0($gCreatureFlags, $mask);
676 function getCreatureRewRate($faction_id)
678 global $dDB;
679 $creature = $dDB->selectCell("-- CACHE: 1h
680 SELECT `creature_rate` FROM `reputation_reward_rate` WHERE `faction` = ?d", $faction_id);
681 if (!$creature)
682 $creature=1;
683 return $creature;
686 //********************************************************************************
687 function getGameobject($gameobject_id, $fields="*")
689 global $dDB;
690 if ($go = $dDB->selectRow("-- CACHE: 1h
691 SELECT $fields FROM `gameobject_template` WHERE `entry` = ?d", $gameobject_id))
692 localiseGameobject($go);
693 return $go;
695 function getGameobjectName($gameobject_id, $as_ref=1)
697 if ($gameobject=getGameobject($gameobject_id, "`entry`, `name`"))
699 if (empty($gameobject['name'])) $gameobject['name'] = "go_$gameobject_id";
700 if ($as_ref)
701 return "<a href=?object=".$gameobject['entry'].">".$gameobject['name']."</a>";
702 return $gameobject['name'];
704 return "Unknown go - $gameobject_id";
707 function getGameobjectType($i, $as_ref=1)
709 global $gameobjectType;
710 $type = @$gameobjectType[$i];
711 if ($type!="")
713 if ($as_ref)
714 return "<a href=?s=o&type=".$i.">".$type."</a>";
715 return $type;
717 return "Type_$i";
720 function getGameobjectCount($gameobject_id)
722 global $dDB;
723 return $dDB->selectCell("SELECT count(*) FROM `gameobject` WHERE `id` = ?d", $gameobject_id);
726 //********************************************************************************
727 function getFaction($faction_id, $fields="*")
729 global $wDB;
730 return $wDB->selectRow("-- CACHE: 1h
731 SELECT $fields FROM `wowd_faction` WHERE `id` = ?d", $faction_id);
733 function getFactionName($faction_id, $as_ref=1)
735 if ($faction = getFaction($faction_id, "`name`"))
736 $name = $faction['name'];
737 else
738 $name = "Faction ($faction_id)";
739 if ($as_ref)
740 $name = '<a href="?faction='.$faction_id.'">'.$name.'</a>';
741 return $name;
744 function getFactionTemplate($faction_id)
746 global $wDB;
747 return $wDB->selectRow('-- CACHE: 1h
748 SELECT * FROM `wowd_faction_template` WHERE `id` = ?d', $faction_id);
751 function getFactionTemplateName($faction_id)
753 if ($faction_id==0)
754 return 0;
755 if ($faction_template = getFactionTemplate($faction_id))
756 return getFactionName($faction_template['faction']);
757 return "Faction template - $faction_id";
760 function getBaseReputationForFaction($faction, $race, $class)
762 if (empty($faction)) return 0;
763 $racemask = 1<<($race -1);
764 $classmask = 1<<($class-1);
765 for ($i=0;$i<4;$i++)
766 if ($faction['BaseRepRaceMask_'.$i] & $racemask AND
767 ($faction['BaseRepClassMask_'.$i] == 0 OR $faction['BaseRepClassMask_'.$i] & $classmask))
768 return $faction['BaseRepValue_'.$i];
769 return 0;
771 function getBaseReputationFlagForFaction($faction, $race, $class)
773 if (empty($faction)) return 0;
774 $racemask = 1<<($race -1);
775 $classmask = 1<<($class-1);
776 for ($i=0;$i<4;$i++)
777 if ($faction['BaseRepRaceMask_'.$i] & $racemask AND
778 ($faction['BaseRepClassMask_'.$i] == 0 OR $faction['BaseRepClassMask_'.$i] & $classmask))
779 return $faction['ReputationFlags_'.$i];
780 return 0;
782 function getReputationRankName($rep)
784 global $gReputationRank;
785 $text = @$gReputationRank[$rep];
786 if ($text == "")
787 $text = "Err Rep Rank $rep";
788 return $text;
790 function getReputationDataFromReputation($rep)
792 global $gReputationRank;
793 $gBaseRep = -42000;
794 $gRepStep = array(36000, 3000, 3000, 3000, 6000, 12000, 21000, 1000);
795 $current = $gBaseRep;
796 for ($i=0;$i<8;$current+=$gRepStep[$i],$i++)
797 if ($current + $gRepStep[$i] > $rep)
798 return array('rank'=>$i, 'rank_name'=>$gReputationRank[$i], 'rep'=>$rep - $current, 'max'=>$gRepStep[$i]);
799 return array('rank'=>7, 'rank_name'=>$gReputationRank[7], 'rep'=>$gRepStep[7], 'max'=>$gRepStep[7]);
801 function getFactionType($id)
803 global $gFactionType;
804 return $gFactionType[$id];
807 function getArea($Zone_id, $fields="*")
809 global $wDB;
810 return $wDB->selectRow("-- CACHE: 1h
811 SELECT $fields FROM `wowd_zones` WHERE `id` = ?d", $Zone_id);
814 function getAreaName($Zone_id, $as_ref=1)
816 $zone = getArea($Zone_id, '`name`');
817 if ($zone)
819 $name = $zone['name'];
820 if ($as_ref)
821 $name = '<a href="?zone='.$Zone_id.'">'.$name.'</a>';
823 else
824 $name = "Unknown area - $Zone_id";
825 return $name;
828 function getFullAreaName($Zone_id, $as_ref=1)
830 $zone = getArea($Zone_id, '`name`, `zone_id`');
831 if ($zone)
833 $name = $zone['name'];
834 if ($as_ref)
835 $name = '<a href="?zone='.$Zone_id.'">'.$name.'</a>';
836 if ($zone['zone_id'])
837 $name = getAreaName($zone['zone_id'], $as_ref).' - '.$name;
839 else
840 $name = "Unknown area - $Zone_id";
841 return $name;
844 function getMapName($id)
846 global $wDB;
847 $l = $wDB->selectCol('-- CACHE: 1h
848 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_map`');
849 return isset($l[$id]) ? $l[$id] : 'map_'.$id;
852 FACTION_MASK_PLAYER = 1, // any player
853 FACTION_MASK_ALLIANCE = 2, // player or creature from alliance team
854 FACTION_MASK_HORDE = 4, // player or creature from horde team
855 FACTION_MASK_MONSTER = 8 // aggressive creature from monster team
857 function getLoyality($faction_id)
859 $faction_template=getFactionTemplate($faction_id);
860 if (!$faction_template)
861 return "??";
862 $loyality = '';
863 if ($faction_template['friendlyMask'])
865 $loyality.= '<span class=friendly>';
866 if ($faction_template['friendlyMask']&1) $loyality.='AH';
867 else
869 if ($faction_template['friendlyMask']&2) $loyality.='A';
870 if ($faction_template['friendlyMask']&4) $loyality.='H';
871 // if ($faction_template[friendlyMask]&8) $loyality.='M';
873 $loyality.= '</span>';
875 if ($faction_template['hostileMask'])
877 $loyality.= '<span class=hostile>';
878 if ($faction_template['hostileMask']&1) $loyality.='AH';
879 else
881 if ($faction_template['hostileMask']&2) $loyality.='A';
882 if ($faction_template['hostileMask']&4) $loyality.='H';
883 // if ($faction_template['hostileMask']&8) $loyality.='M';
885 $loyality.= '</span>';
887 if (($faction_template['friendlyMask']&7)==0 && ($faction_template['hostileMask']&7) == 0)
889 $loyality.='<span class=neitral>AH</span>';
891 return $loyality;
894 //********************************************************************************
895 function getQuest($quest_id, $fields = "*")
897 global $dDB, $config;
898 $quest = $dDB->selectRow("-- CACHE: 1h
899 SELECT $fields FROM `quest_template` WHERE `entry` = ?d", $quest_id);
900 if ($quest)
901 localiseQuest($quest);
902 return $quest;
905 function getQuestName($quest_id, $ashref=1)
907 if ($quest = getQuest($quest_id, "`entry`, `Title`"))
909 if (empty($quest['Title'])) $quest['Title'] = "quest_$quest_id";
910 if ($ashref)
911 return "<a href=?quest=".$quest['entry'].">".$quest['Title']."</a>";
912 return $quest['Title'];
914 return "Unknown quest - $quest_id";
917 function getQuestOld($quest_id)
919 global $dDB;
920 return $dDB->selectCell("-- CACHE: 1h
921 SELECT `entry` FROM `quest_template` WHERE (`Title` LIKE '%<CHANGE TO GOSSIP>%' OR `Title` LIKE '%EPRECATE%' OR `Title` LIKE '%DEPRICATED%' OR `Title` LIKE '%REUSE%' OR `Title` LIKE '%<NYI>%' OR `Title` LIKE '%COPY' OR `Title` LIKE '%UNUSED%' OR `Title` LIKE '%<TXT>%' OR `Title` LIKE '%ZZOLD%' OR `Title` LIKE '%[PH]%' OR `Title` LIKE '%[%') AND `entry` = ?d", $quest_id);
924 function getQuestSort($sort)
926 global $wDB;
927 $q = $wDB->selectCol('-- CACHE: 1h
928 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_quest_sort`');
929 return isset($q[$sort]) ? $q[$sort] : 'Sort_'.$sort;
932 function getQuestType($type)
934 global $wDB;
935 $q = $wDB->selectCol('-- CACHE: 1h
936 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_quest_info`');
937 return isset($q[$type]) ? $q[$type] : 'Info_'.$type;
940 function getNumPalayersCompletedQuest($entry)
942 global $cDB;
943 return $cDB->selectCell("SELECT count(*) FROM `character_queststatus` WHERE `quest` = '$entry' AND `status` = '1' AND `rewarded`='1'");
946 function getNumPalayersWithThisQuest($entry)
948 global $cDB;
949 return $cDB->selectCell("SELECT count(*) FROM `character_queststatus` WHERE quest = '$entry' AND (`status` = '0' OR `status` = '3')");
952 function getQuestXPValue($quest)
954 if ($quest['QuestLevel'] > 0)
955 $rawXPcount=getRewQuestXP($quest['QuestLevel']);
956 else
957 $rawXPcount=getRewQuestXP(79);
959 foreach ($rawXPcount as $field)
961 $realXP = $field['Field'.($quest['RewXPId']+1)];
963 return $realXP;
966 function getRewQuestXP($questlevel_id)
968 global $wDB;
969 return $wDB->select("-- CACHE: 1h
970 SELECT * FROM `wowd_questxp` WHERE `id` = ?d", $questlevel_id);
973 function getRepRewRate($faction_id)
975 global $dDB;
976 $faction = $dDB->selectCell("-- CACHE: 1h
977 SELECT `quest_rate` FROM `reputation_reward_rate` WHERE `faction` = ?d", $faction_id);
978 if (!$faction)
979 $faction=1;
980 return $faction;
983 function getRepSpillover($faction_id)
985 global $dDB;
986 return $dDB->select("-- CACHE: 1h
987 SELECT * FROM `reputation_spillover_template` WHERE `faction` = ?d", $faction_id);
990 function getGameEventQuest($quest_id)
992 global $dDB;
993 return $dDB->selectCell("-- CACHE: 1h
994 SELECT `event` FROM `game_event_quest` WHERE `quest` = ?d", $quest_id);
997 function getGameEventName($event_id)
999 global $dDB;
1000 return $dDB->selectCell("-- CACHE: 1h
1001 SELECT `description` FROM `game_event` WHERE `entry` = ?d", $event_id);
1004 function getGameEventActive()
1006 global $cDB;
1007 return $cDB->select("SELECT `event` FROM `game_event_status`");
1010 function getGameEventActiveName($event_id)
1012 global $dDB;
1013 return $dDB->selectCell("-- CACHE: 1h
1014 SELECT `holiday` FROM `game_event` WHERE `entry` = ?d", $event_id);
1017 function getGameHolidayName($holiday_id)
1019 global $dDB;
1020 return $dDB->selectCell("-- CACHE: 1h
1021 SELECT `description` FROM `game_event` WHERE `holiday` = ?d", $holiday_id);
1024 function getTeamContributionPoints($level_id)
1026 global $wDB;
1027 return $wDB->selectCell("-- CACHE: 1h
1028 SELECT `Field1` FROM `wowd_teamcontributionpoints` WHERE `id` = ?d", $level_id);
1031 function getNpcQuestrelation($npc_id)
1033 global $dDB;
1034 return $dDB->selectCell("SELECT count(*) FROM `creature_questrelation` WHERE `id` = ?d", $npc_id);
1037 function getNpcInvolvedrelation($npc_id)
1039 global $dDB;
1040 return $dDB->selectCell("SELECT count(*) FROM `creature_involvedrelation` WHERE `id` = ?d", $npc_id);
1042 //********************************************************************************
1043 $Quality = array(
1044 '0'=>'quality0',
1045 '1'=>'quality1',
1046 '2'=>'quality2',
1047 '3'=>'quality3',
1048 '4'=>'quality4',
1049 '5'=>'quality5',
1050 '6'=>'quality6',
1051 '7'=>'quality7'
1054 function getItem($item_id, $fields = "*")
1056 global $dDB, $config;
1057 $item = $dDB->selectRow("-- CACHE: 1h
1058 SELECT $fields FROM `item_template` WHERE `entry` = ?d", $item_id);
1059 if ($item)
1060 localiseItem($item);
1061 return $item;
1064 function getItemName($item_id)
1066 $item = getItem($item_id, "`entry`, `name`");
1067 if ($item)
1068 return $item['name'];
1069 return "Unknown item - $item_id";
1072 function getItemFlags2($item_id)
1074 global $dDB, $config;
1075 $item = $dDB->selectCell("-- CACHE: 1h
1076 SELECT `Flags2` FROM `item_template` WHERE `entry` = ?d", $item_id);
1077 return $item;
1080 function getItemMail($item_id)
1082 global $dDB, $config;
1083 $item = $dDB->selectCell("-- CACHE: 1h
1084 SELECT `item` FROM `mail_loot_template` WHERE `entry` = ?d", $item_id);
1085 return $item;
1088 function getItemBonusText($i, $amount)
1090 global $iBonus;
1091 $text = @$iBonus[$i];
1092 if ($text == "") $text = "Err stat $i - %d";
1093 if ($i >=0 && $i < 8 && $amount > 0)
1094 return sprintf("+".$text, $amount);
1095 return sprintf($text, $amount);
1098 function getInventoryType($i, $as_ref=1)
1100 global $gInventoryType;
1101 $name = @$gInventoryType[$i];
1102 if ($name=="") $name = "InvType_$i";
1103 if ($as_ref)
1104 return "<a href=\"?s=i&type=$i\">".$name."</a>";
1105 return $name;
1108 function getInventoryTypeList($mask, $as_ref=1)
1110 global $gInventoryType;
1111 if ($as_ref)
1112 return getListFromArray_0($gInventoryType, $mask, "?s=i&type=%d");
1113 return getListFromArray_0($gInventoryType, $mask);
1116 function getClassName($class, $as_ref=1)
1118 global $itemClassSubclass;
1119 if ($as_ref)
1120 return "<a href=\"?s=i&class=$class\">".$itemClassSubclass["$class"]."</a>";
1121 else
1122 return $itemClassSubclass["$class"];
1125 function getSubclassName($class,$subclass, $as_ref=1)
1127 global $itemClassSubclass;
1128 if ($subclass>=0)
1130 $names = explode(":",$itemClassSubclass["$class"."."."$subclass"]);
1131 if (@$names[1]) $name = $names[1];
1132 else $name = $names[0];
1133 if ($as_ref)
1134 return "<a href=\"?s=i&class=$class.$subclass\">".$name."</a>";
1135 else
1136 return $name;
1138 return getClassName($class, $as_ref);
1141 function getShortSubclassName($class,$subclass, $as_ref=1)
1143 global $itemClassSubclass;
1144 if ($subclass>=0)
1146 $names = explode(":",$itemClassSubclass["$class"."."."$subclass"]);
1147 $name = $names[0];
1148 if ($as_ref)
1149 return "<a href=\"?s=i&class=$class.$subclass\">".$name."</a>";
1150 else
1151 return $name;
1153 return getClassName($class, $as_ref);
1156 function getSubclassList($class, $mask, $as_ref=1)
1158 if ($mask == 0)
1159 return 0;
1160 $text = "";
1161 $i=0;
1162 while ($mask)
1164 if ($mask & 1) {$text.=getSubclassName($class,$i,$as_ref);if ($mask!=1) $text.=", ";}
1165 $mask>>=1;
1166 $i++;
1168 return $text;
1171 function getSpellIconName($icon_id)
1173 global $wDB;
1174 $name = $wDB->selectCell('-- CACHE: 1h
1175 SELECT `name` FROM `wowd_spellicon` WHERE `id` = ?d', $icon_id);
1176 if ($name) return strtolower($name.'.jpg');
1177 else return 'wowunknownitem01.jpg';
1180 $bwicon_mode = false;
1181 function setBwIconMode() {global $bwicon_mode; $bwicon_mode = true;}
1182 function unsetBwIconMode() {global $bwicon_mode; $bwicon_mode = false;}
1184 function getSpellIcon($icon_id)
1186 global $wDB, $bwicon_mode;
1187 if ($bwicon_mode){$dir = 'bwicons';$g_bwicon_mode = 0;}
1188 else $dir = 'icons';
1189 return 'images/'.$dir.'/'.getSpellIconName($icon_id);
1193 function getItemIconName($icon_id)
1195 global $wDB;
1196 $name = $wDB->selectCell('-- CACHE: 1h
1197 SELECT `name` FROM `wowd_itemicon` WHERE `id` = ?d', $icon_id);
1198 if ($name) return strtolower($name.'.jpg');
1199 else return 'wowunknownitem01.jpg';
1202 function getItemIcon($icon_id)
1204 global $wDB, $bwicon_mode;
1205 if ($bwicon_mode){$dir = 'bwicons';$g_bwicon_mode = 0;}
1206 else $dir = 'icons';
1207 return 'images/'.$dir.'/'.getItemIconName($icon_id);
1210 function getItemIconFromItemId($item_id)
1212 global $dDB, $bwicon_mode;
1213 if ($icon = $dDB->selectCell("SELECT `displayid` FROM `item_template` WHERE `entry` = ?d", $item_id))
1214 return getItemIcon($icon, $bwicon_mode);
1215 return 'images/icons/wowunknownitem01.jpg';
1218 function getItemIconFromItemData($item_data)
1220 if ($item = getItem($item_data[ITEM_FIELD_ENTRY]))
1221 return getItemIcon($item['displayid']);
1222 return 'images/icons/wowunknownitem01.jpg';
1225 function getItemSet($item_set_id)
1227 global $wDB;
1228 return $wDB->selectRow('-- CACHE: 1h
1229 SELECT * FROM `wowd_itemset` WHERE `id` = ?d', $item_set_id);
1232 function getItemData($guid)
1234 global $cDB;
1235 return explode(' ', $cDB->selectCell("SELECT `data` FROM `item_instance` WHERE `guid` = ?d", $guid));
1238 function getRecipeItem($recipe)
1240 global $wDB;
1241 if ($recipe['spellid_1'] == 483)
1243 // Ïîëó÷àåì ñïåëë êîòîðîìó îáó÷àåò
1244 $spell = getSpell($recipe['spellid_2']);
1245 if ($spell = getSpell($recipe['spellid_2']))
1246 return getItem($spell['EffectItemType_1']);
1248 return 0;
1251 function getCount($count)
1253 if ($count>1) return "($count)";
1254 return "";
1257 function getRecipeReqString($spell)
1259 $text = "";
1260 if ($spell['Reagent_1']) $text.=getItemName($spell['Reagent_1']).getCount($spell['ReagentCount_1']);
1261 if ($spell['Reagent_2']) $text.=", ".getItemName($spell['Reagent_2']).getCount($spell['ReagentCount_2']);
1262 if ($spell['Reagent_3']) $text.=", ".getItemName($spell['Reagent_3']).getCount($spell['ReagentCount_3']);
1263 if ($spell['Reagent_4']) $text.=", ".getItemName($spell['Reagent_4']).getCount($spell['ReagentCount_4']);
1264 if ($spell['Reagent_5']) $text.=", ".getItemName($spell['Reagent_5']).getCount($spell['ReagentCount_5']);
1265 if ($spell['Reagent_6']) $text.=", ".getItemName($spell['Reagent_6']).getCount($spell['ReagentCount_6']);
1266 if ($spell['Reagent_7']) $text.=", ".getItemName($spell['Reagent_7']).getCount($spell['ReagentCount_7']);
1267 if ($spell['Reagent_8']) $text.=", ".getItemName($spell['Reagent_8']).getCount($spell['ReagentCount_8']);
1268 return $text;
1271 function text_show_item($entry, $iconId = 0, $style = 0)
1273 global $dDB, $config;
1274 if (!$iconId)
1275 $iconId = $dDB->selectCell('-- CACHE: 1h
1276 SELECT `displayid` FROM `item_template` WHERE `entry` = ?d', $entry);
1277 $icon = getItemIcon($iconId);
1278 $text = '<a href="?item='.$entry.'"><img'.($style?' class='.$style:'').' src="'.$icon.'"></a>';
1279 return $text;
1282 function show_item($entry, $iconId = 0, $style = 'item')
1284 echo text_show_item($entry, $iconId, $style);
1287 function getborderText($text, $posx = 'left', $dx=0, $posy = 'top', $dy=0)
1289 return
1290 "<div style=\"position: absolute; $posx: ".($dx-1)."px; $posy: ".($dy-1)."px; color: black;\">$text</div>
1291 <div style=\"position: absolute; $posx: ".($dx-1)."px; $posy: ".($dy+1)."px; color: black;\">$text</div>
1292 <div style=\"position: absolute; $posx: ".($dx+1)."px; $posy: ".($dy-1)."px; color: black;\">$text</div>
1293 <div style=\"position: absolute; $posx: ".($dx+1)."px; $posy: ".($dy+1)."px; color: black;\">$text</div>
1294 <div style=\"position: absolute; $posx: ".($dx )."px; $posy: ".($dy-1)."px; color: black;\">$text</div>
1295 <div style=\"position: absolute; $posx: ".($dx )."px; $posy: ".($dy+1)."px; color: black;\">$text</div>
1296 <div style=\"position: absolute; $posx: ".($dx-1)."px; $posy: ".($dy )."px; color: black;\">$text</div>
1297 <div style=\"position: absolute; $posx: ".($dx+1)."px; $posy: ".($dy )."px; color: black;\">$text</div>
1298 <div style=\"position: absolute; $posx: ".($dx )."px; $posy: ".($dy )."px; color: white;\">$text</div>";
1300 function show_item_by_data($item_data, $style='item', $posx=0, $posy=0)
1302 $guid = $item_data[ITEM_FIELD_GUID];
1304 if (@$item_data[ITEM_FIELD_TYPE] == TYPE_ITEM)
1305 $count = $item_data[ITEM_FIELD_STACK_COUNT];
1306 else if (@$item_data[ITEM_FIELD_TYPE] == TYPE_CONTAINER)
1307 $count = $item_data[CONTAINER_FIELD_NUM_SLOTS];
1308 else
1309 return;
1310 $position="";
1311 if ($posx OR $posy)
1312 $position.= 'style="position: absolute; left: '.$posx.'px; top: '.$posy.'px; border: 0px;"';
1313 $icon = getItemIconFromItemData($item_data);
1314 if ($count == 1)
1316 echo '<a style="float: left;" href="?item=g'.$guid.'">';
1317 echo "<img class=$style src='$icon' $position></a>";
1319 else
1321 if (empty($position))
1322 $position = "style=\"position: relative; left: 0px;top: 0px; border: 0px;float: left;\"";
1323 echo "\n<div class=$style $position>";
1324 echo '<a href="?item=g'.$guid.'"><img class="'.$style.'" src="'.$icon.'"></a>';
1325 echo getborderText($count, 'right', 3, 'bottom', 1);
1326 echo "</div>";
1330 function show_item_by_guid($guid, $style='item', $posx=0, $posy=0)
1332 if ($guid==0)
1333 return;
1334 if ($item_data = getItemData($guid))
1335 show_item_by_data($item_data, $style, $posx, $posy);
1338 function show_item_from_char($id, $guid, $style='item', $posx=0, $posy=0)
1340 global $cDB;
1341 if ($id==0)
1342 return;
1343 $item_data = $cDB->selectCell("SELECT `guid` FROM `item_instance` WHERE `owner_guid`=?d AND (SUBSTRING_INDEX( SUBSTRING_INDEX(`data` , ' ' , 9) , ' ' , -1 )+0)=?d AND (SUBSTRING_INDEX( SUBSTRING_INDEX(`data` , ' ' , 4) , ' ' , -1 )+0)=$id", $guid, $guid, $id);
1344 if ($item_data = getItemData($item_data))
1345 show_item_by_data($item_data, $style, $posx, $posy);
1348 //********************************************************************************
1349 function getGuild($id)
1351 global $cDB;
1352 return $cDB->selectRow('-- CACHE: 1h
1353 SELECT * FROM `guild` WHERE `guildid` = ?d', $id);
1356 function getGuildName($id)
1358 global $cDB;
1359 $name = $cDB->selectCell('-- CACHE: 1h
1360 SELECT `name` FROM `guild` WHERE `guildid` = ?d', $id);
1361 return $name ? $name : 'Unknown';
1364 function getGuildRankList($id)
1366 global $cDB;
1367 $rows = $cDB->select('-- CACHE: 1h
1368 SELECT * FROM `guild_rank` WHERE `guildid` = ?d ORDER BY `rid`', $id);
1369 $rankList=array();
1370 if ($rows)
1371 foreach ($rows as $rank)
1372 $rankList[$rank['rid']] = $rank;
1373 return $rankList;
1375 //********************************************************************************
1376 function getCharacter($character_id, $fields = "*")
1378 global $cDB;
1379 return $cDB->selectRow("-- CACHE: 1h
1380 SELECT $fields FROM `characters` WHERE `guid` = ?d", $character_id);
1383 function getCharacterStats($character_id, $fields = "*")
1385 global $cDB;
1386 return $cDB->selectRow("-- CACHE: 1h
1387 SELECT $fields FROM `character_stats` WHERE `guid` = ?d", $character_id);
1390 function getCharacterName($character_id)
1392 global $cDB;
1393 $c = getCharacter($character_id, $fields = '`name`');
1394 return $c ? $c['name'] : 'Unknown';
1397 function getGender($gender)
1399 global $gGenderType;
1400 return $gGenderType[$gender];
1403 function getClassNames()
1405 global $wDB;
1406 return $wDB->selectCol('-- CACHE: 1h
1407 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_chr_classes`');
1410 function getClass($class)
1412 $l = getClassNames();
1413 return isset($l[$class]) ? $l[$class] : 'class_'.$class;
1416 function getAllowableClass($mask)
1418 $mask&=0x5FF;
1419 // Return zero if for all class (or for none
1420 if ($mask == 0x5FF OR $mask == 0)
1421 return 0;
1422 return getListFromArray_1(getClassNames(), $mask);
1425 function getQAllowableClass($mask)
1427 $mask&=0x5FF;
1428 // Return zero if for all class (or for none
1429 if ($mask == 0x5FF OR $mask == 0)
1430 return 0;
1431 return getListFromArray_1(getClassNames(), $mask, "?s=q&RedClass=%d");
1435 function getRaceNames()
1437 global $wDB;
1438 return $wDB->selectCol('-- CACHE: 1h
1439 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_chr_races`');
1442 function getRace($race)
1444 $l = getRaceNames();
1445 return isset($l[$race]) ? $l[$race] : 'race_'.$race;
1448 function getAllowableRace($mask)
1450 $mask&=0x7FF;
1451 // Return zero if for all class (or for none
1452 if ($mask == 0x7FF OR $mask == 0)
1453 return 0;
1454 return getListFromArray_1(getRaceNames(), $mask);
1457 function getRating($level)
1459 global $wDB;
1460 return $wDB->selectRow('-- CACHE: 1h
1461 SELECT * FROM `wowd_rating` WHERE `level` = ?d', $level);
1464 //********************************************************************************
1465 function getPlayerFaction($race)
1467 global $wDB;
1468 $l = $wDB->selectCol('-- CACHE: 1h
1469 SELECT `id` AS ARRAY_KEY, `team` FROM `wowd_chr_races`');
1470 return isset($l[$race]) ? $l[$race] : 2;
1472 function getFactionImage($race)
1474 $faction = getPlayerFaction($race);
1475 if ($faction == 0)
1476 return "images/player_info/factions_img/alliance.gif";
1477 if ($faction == 1)
1478 return "images/player_info/factions_img/horde.gif";
1479 return 0;
1482 function getRaceImage($race, $genderid)
1484 return "images/player_info/race_img/".$race."_".$genderid.".gif";
1487 function getClassImage($class)
1489 return "images/player_info/class_img/".$class.".gif";
1492 function getFamilyImage($family)
1494 global $wDB;
1495 $l = $wDB->selectCol('-- CACHE: 1h
1496 SELECT `id` AS ARRAY_KEY, `icon` FROM `wowd_creature_family`');
1497 if (isset($l[$family]))
1498 return "images/icons/".strtolower($l[$family]).".jpg";
1499 return "images/icons/wowunknownitem01.jpg";
1501 function getStatTypeName($i)
1503 global $gStatType;
1504 return isset($gStatType[$i]) ? $gStatType[$i] : "Stat ($i)";
1507 function getResistance($i)
1509 global $gResistance;
1510 return isset($gResistance[$i]) ? $gResistance[$i] : "Resistance ($i)";
1513 function getResistanceText($i, $amount)
1515 global $gResistanceType;
1516 $text = @$gResistanceType[$i];
1517 if ($text == "") $text = "Err resist $i - %d";
1518 if ($i >=0 && $i < 7 && $amount > 0)
1519 return sprintf("+".$text, $amount);
1520 return sprintf($text, $amount);
1523 function getSkillRank($i)
1525 global $gSkillRank;
1526 return @$gSkillRank[$i];
1528 function getTalentName($id)
1530 global $wDB;
1531 $l = $wDB->selectCol('-- CACHE: 1h
1532 SELECT `id` AS ARRAY_KEY, `name` FROM `wowd_talent_tab`');
1533 return isset($l[$id]) ? $l[$id] : 'talent_'.$id;