function position($data) { global $smarty, $exdata, $zonedata; if (count($data) > 0) { $data = mass_coord($data); // Сортируем массив. Зачем??? if ($data) { sort($data); } // Во временную переменную tmp заносим номер локации $j = 0; $tmp = $data[$j]['zone']; // Номер массива $n = 0; $k = 0; $zonedata[$n] = array(); $zonedata[$n]['zone'] = $data[$j]['zone']; $zonedata[$n]['name'] = $data[$j]['name']; for ($j = 0; $j < count($data); $j++) { // Если изменился номер карты, то начинаем новый массив if ($tmp != $data[$j]['zone']) { // Количество объектов на зоне $zonedata[$n]['count'] = $k; $n++; $exdata[$n] = array(); $zonedata[$n] = array(); $tmp = $data[$j]['zone']; // Заносим номер зоны в список зон $zonedata[$n]['zone'] = $data[$j]['zone']; // TODO: Заносим название зоны в список зон $zonedata[$n]['name'] = $data[$j]['name']; $k = 0; $real_count = 0; } $exdata[$n][$k] = array(); $exdata[$n][$k] = $data[$j]; $k++; if ($data[$j]['t'] != 3) { // Waypoint $real_count++; } } // Количество объектов на зоне $zonedata[$n]['count'] = $real_count; // Сортировка массивов по количеству объектов на зоне. for ($i = 0; $i <= $n; $i++) { for ($j = $i; $j <= $n; $j++) { if ($zonedata[$j]['count'] > $zonedata[$i]['count']) { unset($tmp); $tmp = $zonedata[$i]; $zonedata[$i] = $zonedata[$j]; $zonedata[$j] = $tmp; unset($tmp); $tmp = $exdata[$i]; $exdata[$i] = $exdata[$j]; $exdata[$j] = $tmp; } } } $smarty->assign('zonedata', $zonedata); $smarty->assign('exdata', $exdata); } }
/** * * @param type $id * @param type $type */ function position($id, $type) { global $smarty, $exdata, $zonedata, $DB; $data = $DB->select('SELECT guid, map AS m, position_x AS x, position_y AS y, spawntimesecs, {MovementType AS ?#, }"0" AS `type` FROM ?_' . $type . ' WHERE id = ?d GROUP BY ROUND(x,-2), ROUND(y,-2) ORDER BY x,y', $type == 'gameobject' ? DBSIMPLE_SKIP : 'mt', $id); if ($type != 'gameobject') { $wpWalkingCreaturesGuids = array(); foreach ($data as $spawnid => $spawn) { if ($spawn['mt'] == 2) { $wpWalkingCreaturesGuids[] = $spawn['guid']; } } if ($wpWalkingCreaturesGuids) { $wps = $DB->select('SELECT c.map AS m, m.position_x AS x, m.position_y AS y, "3" AS `type` FROM ?_creature_movement m, ?_creature c WHERE m.id = c.guid AND m.id IN (?a) GROUP BY ROUND(x,-2), ROUND(y,-2) ORDER BY x,y', $wpWalkingCreaturesGuids); $data = array_merge($data, $wps); } } if (count($data) > 0) { $data = mass_coord($data); // Сортируем массив. Зачем??? if ($data) { sort($data); } // Во временную переменную tmp заносим номер локации $j = 0; $tmp = $data[$j]['zone']; // Номер массива $n = 0; $k = 0; $real_count = 0; $zonedata[$n] = array(); $zonedata[$n]['zone'] = $data[$j]['zone']; $zonedata[$n]['name'] = $data[$j]['name']; for ($j = 0; $j < count($data); $j++) { // Если изменился номер карты, то начинаем новый массив if ($tmp != $data[$j]['zone']) { // Количество объектов на зоне $zonedata[$n]['count'] = $k; $n++; $exdata[$n] = array(); $zonedata[$n] = array(); $tmp = $data[$j]['zone']; // Заносим номер зоны в список зон $zonedata[$n]['zone'] = $data[$j]['zone']; // TODO: Заносим название зоны в список зон $zonedata[$n]['name'] = $data[$j]['name']; $k = 0; $real_count = 0; } $exdata[$n][$k] = array(); $exdata[$n][$k] = $data[$j]; $k++; if ($data[$j]['t'] != 3) { // Waypoint $real_count++; } } // Количество объектов на зоне $zonedata[$n]['count'] = $real_count; // Сортировка массивов по количеству объектов на зоне. for ($i = 0; $i <= $n; $i++) { for ($j = $i; $j <= $n; $j++) { if ($zonedata[$j]['count'] > $zonedata[$i]['count']) { unset($tmp); $tmp = $zonedata[$i]; $zonedata[$i] = $zonedata[$j]; $zonedata[$j] = $tmp; unset($tmp); $tmp = $exdata[$i]; $exdata[$i] = $exdata[$j]; $exdata[$j] = $tmp; } } } $smarty->assign('zonedata', $zonedata); $smarty->assign('exdata', $exdata); } }