Exemplo n.º 1
0
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);
    }
}