array(36, 45, 3, 25, 4, 35, 46, 132, 279, 41, 154, 2257, 1, 10, 139, 12, 3430, 3433, 267, 1537, 131, 38, 24, 9, 44, 51, 3487, 130, 1519, 33, 3431, 8, 47, 85, 1497, 28, 40, 11, 4080), 1 => array(2079, 3526, 331, 16, 3524, 3525, 148, 221, 1657, 405, 14, 15, 1116, 361, 357, 493, 215, 1637, 220, 702, 188, 1377, 406, 440, 141, 17, 3557, 400, 1638, 1216, 490, 363, 618), /* Dungeons */ 2 => array(3790, 3688, 719, 1584, 1583, 1941, 3607, 2557, 133, 3535, 3792, 2100, 2437, 722, 491, 796, 2057, 3789, 209, 2017, 1417, 3842, 1581, 3717, 3715, 717, 3716, 1337, 718, 978), 3 => array(3428, 2677, 3606, 2562, 3836, 2717, 3456, 2159, 3429, 3840, 19), 4 => array(-263, -261, -161, -141, -262, -162, -82, -61, -81), 5 => array(-181, -121, -304, -201, -324, -101, -24, -182, -264), 6 => array(3358, 2597, 3277), 7 => array(-365, -370, -364, -1, -368, -344, -366, -369, -367, -22, -284, -221), 8 => array(3522, 3483, 3518, 3523, 3520, 3703, 3679, 3519, 3696, 3521), -2 => array(0) ); // Флаги квестов define('QUEST_FLAGS_NONE', 0); define('QUEST_FLAGS_STAY_ALIVE', 1); define('QUEST_FLAGS_EVENT ', 2); define('QUEST_FLAGS_EXPLORATION', 4); define('QUEST_FLAGS_SHARABLE', 8); define('QUEST_FLAGS_NONE2', 16); define('QUEST_FLAGS_EPIC', 32); define('QUEST_FLAGS_RAID', 64); define('QUEST_FLAGS_TBC', 128); define('QUEST_FLAGS_UNK2', 256); define('QUEST_FLAGS_HIDDEN_REWARDS', 512); define('QUEST_FLAGS_UNK4', 1024); define('QUEST_FLAGS_TBC_RACES', 2048); define('QUEST_FLAGS_DAILY', 4096); define('QUEST_SPECIALFLAGS_NONE', 0); define('QUEST_SPECIALFLAGS_REPEATABLE', 1); define('QUEST_SPECIALFLAGS_SCRIPTED', 2); // Флаги для GetQuestInfo define('QUEST_DATAFLAG_MINIMUM', 1); define('QUEST_DATAFLAG_STRINGS', 2); define('QUEST_DATAFLAG_SERIES', 4); define('QUEST_DATAFLAG_LOCALE', 8); // Специальный флаг, $questcols не требуется define('QUEST_DATAFLAG_REWARDS', 16); // Содержит также Req's define('QUEST_DATAFLAG_PROPS', 32); define('QUEST_DATAFLAG_LISTINGS', (QUEST_DATAFLAG_MINIMUM | QUEST_DATAFLAG_REWARDS | QUEST_DATAFLAG_PROPS)); define('QUEST_DATAFLAG_AJAXTOOLTIP', (QUEST_DATAFLAG_LISTINGS | QUEST_DATAFLAG_SERIES | QUEST_DATAFLAG_STRINGS)); $questcols[QUEST_DATAFLAG_MINIMUM] = array('entry', 'Title'); $questcols[QUEST_DATAFLAG_STRINGS] = array('Objectives', 'Details', 'RequestItemsText', 'OfferRewardText', 'EndText', 'ObjectiveText1', 'ObjectiveText2', 'ObjectiveText3', 'ObjectiveText4'); $questcols[QUEST_DATAFLAG_REWARDS] = array('RewChoiceItemId1', 'RewChoiceItemId2', 'RewChoiceItemId3', 'RewChoiceItemId4', 'RewChoiceItemId5', 'RewChoiceItemId6', 'RewChoiceItemCount1', 'RewChoiceItemCount2', 'RewChoiceItemCount3', 'RewChoiceItemCount4', 'RewChoiceItemCount5', 'RewChoiceItemCount6', 'RewItemId1', 'RewItemId2', 'RewItemId3', 'RewItemId4', 'RewItemCount1', 'RewItemCount2', 'RewItemCount3', 'RewItemCount4', 'RewMoneyMaxLevel', 'RewOrReqMoney', 'ReqSpellCast1', 'ReqSpellCast2', 'ReqSpellCast3', 'ReqSpellCast4', 'ReqCreatureOrGOId1', 'ReqCreatureOrGOId2', 'ReqCreatureOrGOId3', 'ReqCreatureOrGOId4', 'ReqItemId1', 'ReqItemId2', 'ReqItemId3', 'ReqItemId4', 'ReqItemCount1', 'ReqItemCount2', 'ReqItemCount3', 'ReqItemCount4', 'SrcItemId', 'ReqCreatureOrGOCount1', 'ReqCreatureOrGOCount2', 'ReqCreatureOrGOCount3', 'ReqCreatureOrGOCount4', 'RewSpell', 'RewSpellCast', 'RewRepFaction1', 'RewRepFaction2', 'RewRepFaction3', 'RewRepFaction4', 'RewRepFaction5', 'RewRepValue1', 'RewRepValue2', 'RewRepValue3', 'RewRepValue4', 'RewRepValue5'); $questcols[QUEST_DATAFLAG_PROPS] = array('Type', 'ZoneOrSort', 'QuestFlags', 'QuestLevel', 'MinLevel', 'RequiredRaces'); $questcols[QUEST_DATAFLAG_SERIES] = array('PrevQuestID', 'NextQuestInChain', 'ExclusiveGroup', 'NextQuestID'); $quest_cols[2] = array('entry', 'Title', 'QuestLevel', 'MinLevel', 'RequiredRaces', 'RewChoiceItemId1', 'RewChoiceItemId2', 'RewChoiceItemId3', 'RewChoiceItemId4', 'RewChoiceItemId5', 'RewChoiceItemId6', 'RewChoiceItemCount1', 'RewChoiceItemCount2', 'RewChoiceItemCount3', 'RewChoiceItemCount4', 'RewChoiceItemCount5', 'RewChoiceItemCount6', 'RewItemId1', 'RewItemId2', 'RewItemId3', 'RewItemId4', 'RewItemCount1', 'RewItemCount2', 'RewItemCount3', 'RewItemCount4', 'RewMoneyMaxLevel', 'RewOrReqMoney', 'Type', 'ZoneOrSort', 'QuestFlags'); $quest_cols[3] = array('Title', 'QuestLevel', 'MinLevel', 'RequiredRaces', 'RewChoiceItemId1', 'RewChoiceItemId2', 'RewChoiceItemId3', 'RewChoiceItemId4', 'RewChoiceItemId5', 'RewChoiceItemId6', 'RewChoiceItemCount1', 'RewChoiceItemCount2', 'RewChoiceItemCount3', 'RewChoiceItemCount4', 'RewChoiceItemCount5', 'RewChoiceItemCount6', 'RewItemId1', 'RewItemId2', 'RewItemId3', 'RewItemId4', 'RewItemCount1', 'RewItemCount2', 'RewItemCount3', 'RewItemCount4', 'RewMoneyMaxLevel', 'RewOrReqMoney', 'Type', 'ZoneOrSort', 'QuestFlags', 'RewRepFaction1', 'RewRepFaction2', 'RewRepFaction3', 'RewRepFaction4', 'RewRepFaction5', 'RewRepValue1', 'RewRepValue2', 'RewRepValue3', 'RewRepValue4', 'RewRepValue5', 'Objectives', 'Details', 'RequestItemsText', 'OfferRewardText', 'ReqCreatureOrGOId1', 'ReqCreatureOrGOId2', 'ReqCreatureOrGOId3', 'ReqCreatureOrGOId4', 'ReqItemId1', 'ReqItemId2', 'ReqItemId3', 'ReqItemId4', 'ReqItemCount1', 'ReqItemCount2', 'ReqItemCount3', 'ReqItemCount4', 'SrcItemId', 'ReqCreatureOrGOCount1', 'ReqCreatureOrGOCount2', 'ReqCreatureOrGOCount3', 'ReqCreatureOrGOCount4', 'ObjectiveText1', 'ObjectiveText2', 'ObjectiveText3', 'ObjectiveText4', 'EndText', 'PrevQuestID', 'NextQuestInChain', 'ExclusiveGroup', 'NextQuestID', 'RewSpellCast', 'RewSpell', 'RequiredSkillValue', 'RepObjectiveFaction', 'RepObjectiveValue', 'SuggestedPlayers', 'LimitTime', 'QuestFlags', 'SpecialFlags', 'CharTitleId', 'RequiredMinRepFaction', 'RequiredMinRepValue', 'RequiredMaxRepFaction', 'RequiredMaxRepValue', 'SrcSpell', 'SkillOrClass', 'ReqSpellCast1', 'ReqSpellCast2', 'ReqSpellCast3', 'ReqSpellCast4'); $locale_quest_cols = array('Title_loc'.$AoWoWconf['locale'], 'Details_loc'.$AoWoWconf['locale'], 'Objectives_loc'.$AoWoWconf['locale'], 'OfferRewardText_loc'.$AoWoWconf['locale'], 'RequestItemsText_loc'.$AoWoWconf['locale'], 'EndText_loc'.$AoWoWconf['locale'], 'ObjectiveText1_loc'.$AoWoWconf['locale'], 'ObjectiveText2_loc'.$AoWoWconf['locale'], 'ObjectiveText3_loc'.$AoWoWconf['locale'], 'ObjectiveText4_loc'.$AoWoWconf['locale']); function QuestReplaceStr($STR) { global $smarty; // сначала заменяем $N, $R, $C $toreplace = array ( 0=>array('1'=>'$b', '2'=>'
',), 1=>array('1'=>'$r', '2'=>'<'.(isset($smarty) ? $smarty->get_config_vars('race') : 'race' ).'>',), 2=>array('1'=>'$c', '2'=>'<'.(isset($smarty) ? $smarty->get_config_vars('class') : 'class' ).'>',), 3=>array('1'=>'$n', '2'=>'<'.(isset($smarty) ? $smarty->get_config_vars('name') : 'name' ).'>',), 4=>array('1'=>'$G', '2'=>'$g',), ); for ($i=0;$i<=3;$i++) { $STR = str_replace($toreplace[$i][1], $toreplace[$i][2], $STR); $STR = str_replace(strtoupper($toreplace[$i][1]), $toreplace[$i][2], $STR); } // теперь - пол while(strpos($STR, '$g') || strpos($STR, '$G')) { $gPos = strpos($STR, '$g'); if(!$gPos) $gPos = strpos($STR, '$G'); if($gPos) { $ePos = strpos($STR, ';', $gPos); if(!$ePos) return $STR; // error! $string = explode(':', substr($STR, $gPos+2, $ePos)); $STR = substr($STR, 0, $gPos) . $string[0] . substr($STR, $ePos+1, 0xffff); } } return $STR; } function GetQuestXpOrMoney($data) { // From MaNGOS Sources $pLevel = $data['QuestLevel']>0?$data['QuestLevel']:$data['MinLevel'];; $qLevel = $data['QuestLevel']; $RewMoneyMaxLevel = $data['RewMoneyMaxLevel']; if(!$RewMoneyMaxLevel) return 0; if($qLevel >= 65) $fullxp = floor($RewMoneyMaxLevel/6.0); elseif($qLevel == 64) $fullxp = floor($RewMoneyMaxLevel/4.8); elseif($qLevel == 63) $fullxp = floor($RewMoneyMaxLevel/3.6); elseif($qLevel == 62) $fullxp = floor($RewMoneyMaxLevel/2.4); elseif($qLevel == 61) $fullxp = floor($RewMoneyMaxLevel/1.2); elseif($qLevel > 0 && $qLevel <= 60) $fullxp = floor($RewMoneyMaxLevel/0.6); if($pLevel <= $qLevel+5) return $fullxp; elseif($pLevel == $qLevel+6) return $fullxp * 0.8; elseif($pLevel == $qLevel+7) return $fullxp * 0.6; elseif($pLevel == $qLevel+8) return $fullxp * 0.4; elseif($pLevel == $qLevel+9) return $fullxp*0.2; else return $fullxp*0.1; } // ???? function GetQuestTitle(&$data) { $title = QuestReplaceStr( !empty($data['Title_loc']) ? $data['Title_loc'] : $data['Title']); $data['Title'] = $title; return $title; } function GetQuestStrings(&$data) { $data['Title'] = QuestReplaceStr( ( !empty($data['Title_loc']) ? $data['Title_loc'] : $data['Title'] )); $data['Objectives'] = QuestReplaceStr(htmlspecialchars( !empty($data['Objectives_loc']) ? $data['Objectives_loc'] : $data['Objectives'] )); $data['Details'] = QuestReplaceStr(htmlspecialchars( !empty($data['Details_loc']) ? $data['Details_loc'] : $data['Details'] )); $data['RequestItemsText'] = QuestReplaceStr(htmlspecialchars( !empty($data['RequestItemsText_loc']) ? $data['RequestItemsText_loc'] : $data['RequestItemsText'] )); $data['OfferRewardText'] = QuestReplaceStr(htmlspecialchars( !empty($data['OfferRewardText_loc']) ? $data['OfferRewardText_loc'] : $data['OfferRewardText'] )); $data['EndText'] = QuestReplaceStr(htmlspecialchars( !empty($data['EndText_loc']) ? $data['EndText_loc'] : $data['EndText'] )); for($j=0;$j<=3;++$j) $data['ObjectiveText'][$j] = QuestReplaceStr(htmlspecialchars(!empty($data['ObjectiveText'.$j.'_loc']) ? $data['ObjectiveText'.$j.'_loc'] : $data['ObjectiveText'.$j])); } function GetQuestReq($id, $count, $type) { global $DB; switch($type) { case 1: $row = $DB->selectRow(' SELECT name {, l.name_loc?d AS name_loc} FROM creature_template c { LEFT JOIN (locales_creature l) ON l.entry=c.entry AND ? } WHERE c.entry = ?d LIMIT 1 ', ($_SESSION['locale']>0)? $_SESSION['locale']: DBSIMPLE_SKIP, ($_SESSION['locale']>0)? 1: DBSIMPLE_SKIP, $id ); $name = !empty($row['name_loc'])?$row['name_loc']:$row['name']; return $name.(($count>1)? (' x'.$count): ''); break; case 2: $row = $DB->selectRow(' SELECT name {, l.name_loc?d AS name_loc} FROM item_template c { LEFT JOIN (locales_item l) ON l.entry=c.entry AND ? } WHERE c.entry = ?d LIMIT 1 ', ($_SESSION['locale']>0)? $_SESSION['locale']: DBSIMPLE_SKIP, ($_SESSION['locale']>0)? 1: DBSIMPLE_SKIP, $id ); $name = !empty($row['name_loc'])?$row['name_loc']:$row['name']; return $name.(($count>1)? (' x'.$count): ''); break; } } function GetQuestTooltip($row) { $x = ''; // Название квеста $x .= '
'.$row['Title'].'
'; $x .= ''; if($row['Objectives']) { $x .= ''; } // $x .= '
'; if ((($row['ReqCreatureOrGOId1']) and ($row['ReqCreatureOrGOCount1'])) or (($row['ReqCreatureOrGOId2']) and ($row['ReqCreatureOrGOCount2'])) or (($row['ReqCreatureOrGOId3']) and ($row['ReqCreatureOrGOCount3'])) or (($row['ReqCreatureOrGOId4']) and ($row['ReqCreatureOrGOCount4'])) or (($row['ReqItemId1']) and ($row['ReqItemCount1'])) or (($row['ReqItemId2']) and ($row['ReqItemCount2'])) or (($row['ReqItemId3']) and ($row['ReqItemCount3'])) or (($row['ReqItemId4']) and ($row['ReqItemCount4']))) { $x .= ''; } $x .= '

'; $x .= $row['Objectives']; $x .= '

'; $x .= '
'.LOCALE_REQUIREMENTS.':
'; for ($j=1;$j<=4;$j++) if ($row['ReqCreatureOrGOId'.$j] and $row['ReqCreatureOrGOCount'.$j]) $x .= '- ' .( (!empty($row['ObjectiveText'][$j]))? $row['ObjectiveText'][$j]: GetQuestReq($row['ReqCreatureOrGOId'.$j], $row['ReqCreatureOrGOCount'.$j], 1) ).'
'; for ($j=1;$j<=4;$j++) if ($row['ReqItemId'.$j] and $row['ReqItemCount'.$j]) $x .= '- '.GetQuestReq($row['ReqItemId'.$j], $row['ReqItemCount'.$j], 2).'
'; $x .= '
'; return $x; } function GetQuestDBLocale($quest) { global $DB; $data = array(); $loc = $_SESSION['locale']; $row = $DB->selectRow(' SELECT Title_loc?d AS Title, Details_loc?d AS Details, Objectives_loc?d AS Objectives, OfferRewardText_loc?d AS OfferRewardText, RequestItemsText_loc?d AS RequestItemsText, EndText_loc?d AS EndText, ObjectiveText1_loc?d AS ObjectiveText1, ObjectiveText2_loc?d AS ObjectiveText2, ObjectiveText3_loc?d AS ObjectiveText3, ObjectiveText4_loc?d AS ObjectiveText4 FROM locales_quest WHERE entry = ?d LIMIT 1 ', $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $quest ); if($row) foreach($row as $item => $itemContent) if(!empty($itemContent)) $data[$item] = $itemContent; return $data; } function GetDBQuestInfo($id, $dataflag = QUEST_DATAFLAG_MINIMUM) { global $DB, $questcols, $quest_class; $data = $DB->selectRow(' SELECT 1 {, ?# } {, ?# } {, ?# } {, ?# } {, ?# } FROM quest_template WHERE entry=?d LIMIT 1 ', ($dataflag & QUEST_DATAFLAG_MINIMUM)?$questcols[QUEST_DATAFLAG_MINIMUM]:DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_STRINGS)?$questcols[QUEST_DATAFLAG_STRINGS]:DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_SERIES) ?$questcols[QUEST_DATAFLAG_SERIES] :DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_PROPS) ?$questcols[QUEST_DATAFLAG_PROPS] :DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_REWARDS)?$questcols[QUEST_DATAFLAG_REWARDS]:DBSIMPLE_SKIP, $id ); if(!$data) return false; else return GetQuestInfo($data, $dataflag); } /* * &$data - ссылка на массив с данными * $dataflag - флаг уровень: * QUEST_DATAFLAG_MINIMUN - entry, Title * QUEST_DATAFLAG_STRINGS - Objectives, Details, RequestItemsText, OfferRewardText, EndText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4 * QUEST_DATAFLAG_SERIES - PrevQuestID, NextQuestInChain, ExclusiveGroup, NextQuestID * QUEST_DATAFLAG_PROPS - Daily, Type, side, etc. * QUEST_DATAFLAG_REWARDS - RewChoiceItemId1, RewChoiceItemId2, RewChoiceItemId3, RewChoiceItemId4, RewChoiceItemId5, RewChoiceItemId6, RewChoiceItemCount1', 'RewChoiceItemCount2, RewChoiceItemCount3, 'RewChoiceItemCount4', 'RewChoiceItemCount5', 'RewChoiceItemCount6', 'RewItemId1', 'RewItemId2', 'RewItemId3', 'RewItemId4', 'RewItemCount1', 'RewItemCount2', 'RewItemCount3', 'RewItemCount4', 'RewMoneyMaxLevel', 'RewOrReqMoney', 'ReqSpellCast1', 'ReqSpellCast2', 'ReqSpellCast3', 'ReqSpellCast4', 'ReqCreatureOrGOId1', 'ReqCreatureOrGOId2', 'ReqCreatureOrGOId3', 'ReqCreatureOrGOId4', 'ReqItemId1', 'ReqItemId2', 'ReqItemId3', 'ReqItemId4', 'ReqItemCount1', 'ReqItemCount2', 'ReqItemCount3', 'ReqItemCount4', 'SrcItemId', 'ReqCreatureOrGOCount1', 'ReqCreatureOrGOCount2', 'ReqCreatureOrGOCount3', 'ReqCreatureOrGOCount4 * */ function GetQuestInfo(&$data, $dataflag = QUEST_DATAFLAG_MINIMUM) { global $DB, $quest_class; /*else { $data = $DB->selectRow(' SELECT 1 {, ?# } {, ?# } {, ?# } {, ?# } {, ?# } FROM quest_template WHERE entry=?d LIMIT 1 ', ($dataflag & QUEST_DATAFLAG_MINIMUM)?$questcols[QUEST_DATAFLAG_MINIMUM]:DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_STRINGS)?$questcols[QUEST_DATAFLAG_STRINGS]:DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_SERIES) ?$questcols[QUEST_DATAFLAG_SERIES] :DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_PROPS) ?$questcols[QUEST_DATAFLAG_PROPS] :DBSIMPLE_SKIP, ($dataflag & QUEST_DATAFLAG_REWARDS)?$questcols[QUEST_DATAFLAG_REWARDS]:DBSIMPLE_SKIP, $data['entry'] ); } if(!$data) { return false; }*/ // Локализация $loc = $_SESSION['locale']; if($dataflag & QUEST_DATAFLAG_LOCALE && $_SESSION['locale'] > 0) $data = array_merge($data, $DB->selectRow(' SELECT Title_loc?d AS Title_loc, Details_loc?d AS Details_loc, Objectives_loc?d AS Objectives_loc, OfferRewardText_loc?d AS OfferRewardText_loc, RequestItemsText_loc?d AS RequestItemsText_loc, EndText_loc?d AS EndText_loc, ObjectiveText1_loc?d AS ObjectiveText1_loc, ObjectiveText2_loc?d AS ObjectiveText2_loc, ObjectiveText3_loc?d AS ObjectiveText3_loc, ObjectiveText4_loc?d AS ObjectiveText4_loc FROM locales_quest WHERE entry = ?d LIMIT 1 ', $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $loc, $data['entry'] )); // Минимальные данные // ID квеста $data['entry'] = $data['entry']; // Имя квеста $data['Title'] = GetQuestTitle($data); // Описания if($dataflag & QUEST_DATAFLAG_STRINGS) GetQuestStrings($data); // Свойства if($dataflag & QUEST_DATAFLAG_PROPS) { // Уровень квеста $data['QuestLevel'] = $data['QuestLevel']; // Требуемый уровень квеста $data['MinLevel'] = $data['MinLevel']; // Доступен расам $data['side'] = races($data['RequiredRaces']); // Флаги $data['QuestFlags'] = $data['QuestFlags']; // Ежедневный квест? if ($data['QuestFlags'] & QUEST_FLAGS_DAILY) $data['Daily'] = true; // Тип квеста $data['type'] = $data['Type']; if ($data['type'] == 1) $data['typename'] = 'Group'; else $data['typename'] = $data['type']; // Путь к этому разделу (главная категория) foreach($quest_class as $i => $class) if(in_array($data['ZoneOrSort'], $class)) { $data['maincat']=$i; break; } // Категория 1 $data['category'] = $data['ZoneOrSort']; // Категория 2 ??? $data['category2'] = $data['QuestFlags']; // Требуемое пати if ($data['SuggestedPlayers']>1) $data['splayers'] = $data['SuggestedPlayers']; // Лимит времени if ($data['LimitTime']>0) $data['LimitTime'] = sec_to_time($row['LimitTime']); if ($data['QuestFlags'] & QUEST_FLAGS_SHARABLE) $data['Sharable'] = true; if ($data['SpecialFlags'] & QUEST_SPECIALFLAGS_REPEATABLE) $data['Repeatable'] = true; if ($data['CharTitleId']>0) $data['titlereward'] = $DB->selectCell('SELECT name FROM ?_char_titles WHERE id=?d LIMIT 1', $row['CharTitleId']); } // Награды и задания if($dataflag & QUEST_DATAFLAG_REWARDS) { // Опыт/деньги@70 $data['xp'] = GetQuestXpOrMoney($data); // Награды вещей for($j=0;$j<=6;++$j) if (($data['RewChoiceItemId'.$j]!=0) and ($data['RewChoiceItemCount'.$j]!=0)) $data['itemchoices'][] = array_merge( allitemsinfo($data['RewChoiceItemId'.$j], 0), array('count' => $data['RewChoiceItemCount'.$j]) ); for ($j=0;$j<=4;++$j) if (($data['RewItemId'.$j]!=0) and ($data['RewItemCount'.$j]!=0)) $data['itemrewards'][] = array_merge( allitemsinfo($data['RewItemId'.$j], 0), array('count' => $data['RewItemCount'.$j]) ); // Вознаграждение репутацией for ($j=1;$j<=5;$j++) if (($data['RewRepFaction'.$j] != 0) && ($data['RewRepValue'.$j] != 0)) $data['reprewards'][] = array_merge(factioninfo($data['RewRepFaction'.$j]), array('value' => $data['RewRepValue'.$j])); // Вознаграждение деньгами if($data['money']>0) $data['money'] = money2coins($data['money']); elseif($data['money']<0) $data['moneyreq'] = money2coins(-$data['money']); } // Последовательность квестов, требования, цепочки if($dataflag & QUEST_DATAFLAG_SERIES) { // не используется для вычисления самих сериесов, исключительно для внесения соответствующих полей в массив информации } // Все ОК. Это не обязательный return, но в некоторых функциях нужен. return $data; } ?>