function umc_read_markers_file($format = 'html', $world = 'empire', $user = false) { XMPP_ERROR_trace(__FUNCTION__, func_get_args()); /* [0]=> object(stdClass)#1 (5) { ["timestamp"]=> string(19) "2011-01-31 14:14:47" ["z"]=> float(-319.54668819556) ["msg"]=> string(8) "Thegiant" ["y"]=> float(50) ["x"]=> float(448.69999998808) */ global $UMC_SETTING, $UMC_PATH_MC; $file = "{$UMC_PATH_MC}/server/bin/data/markers.json"; // $UMC_SETTING['markers_file']; $text = file_get_contents($file); if (!$file) { XMPP_ERROR_trigger("Could not read markers file (umc_read_markers_file)"); } $m = json_decode($text); // no users if (!$m) { return ''; } $out_arr = array(); $map = $UMC_SETTING['world_img_dim'][$world]; if (count($m) == 0) { return ''; } if ($format == 'scrollto') { $out = "<div id=\"scroll_to_icons\">\n"; } else { $out = "<div id=\"marker_list\">\n"; } // check if we find the single user from the marker $foundplayer = false; // var_dump($format); foreach ($m as $marker) { $z = $marker->z; $x = $marker->x; $x_text = round($x); $z_text = round($z); $top = conv_z($marker->z, $map); // + $map['img_top_offset']; $left = conv_x($marker->x, $map); // + $map['img_left_offset']; $username = strtolower($marker->msg); $playerworld = $marker->world; if ($username == 'uncovery') { //continue; } $icon_url = umc_user_get_icon_url($username); if ($format == 'identify_user' && $username == $user) { $out .= ' <span class="marker" style="z-index:100; top:' . $top . 'px; left:' . $left . "px;\"><img src=\"{$icon_url}\" title=\"{$username}\" alt=\"{$username}\"> <input type=\"submit\" name=\"track_player\" value=\"That's me!\"></span>\n" . "\n"; $foundplayer = true; } else { if ($format == 'track_user' && $username == $user) { $out .= ' <span class="marker" id="' . $username . '_marker" style="z-index:100; top:' . $top . 'px; left:' . $left . "px;\"><img src=\"{$icon_url}\" title=\"{$username}\" alt=\"{$username}\"></span>\n" . "\n"; $foundplayer = true; } else { if ($format == 'scrollto' && $marker->world == $world) { $out .= "<img src=\"{$icon_url}\" title=\"{$username}\" alt=\"{$username}\" onclick=\"find_user({$left}, {$top}, '{$username}_marker')\">\n"; } else { if ($format == 'html' && $marker->world == $world) { if ($world == 'hunger') { $out .= '<div class="marker" style="position:relative">' . $username . '</div>' . "\n"; } else { $out .= ' <img id="' . $username . '_marker" class="marker" style="z-index:100; top:' . $top . 'px; left:' . $left . "px;\" src=\"{$icon_url}\" title=\"{$username} (x:{$x_text} z:{$z_text})\" alt=\"{$username} (x:{$x_text} z:{$z_text})\">\n"; } } else { if ($format == 'json') { $arr[] = array('name' => $username, 'url' => $icon_url, 'top' => $top, 'left' => $left); } else { if ($format == 'all_users') { // list all users for website status $out .= $username . " "; } else { if ($format == 'array') { $out_arr[$username] = array('name' => $username, 'url' => $icon_url, 'top' => $top, 'left' => $left, 'world' => $playerworld, 'x' => $x_text, 'z' => $z_text); } } } } } } } } if (($format == 'identify_user' || $format == 'track_user') && $foundplayer == false) { // umc_error_notify("Could not find single player $user in Json Data: \n" . var_export($m, true)); } if ($format == 'json') { $out = json_encode($arr); } else { if ($format == 'array') { return $out_arr; } } if ($format == 'scrollto') { $out .= "</div>\n"; } else { if ($format == 'html') { // no idea why this was here. it would duplicate the output. // $out .= umc_read_markers_file('scrollto', $world); } $out .= "</div>\n"; } return $out; }
function umc_info_whereami() { global $UMC_USER, $UMC_SETTING; $world = $UMC_USER['world']; $player = $UMC_USER['username']; $x = round($UMC_USER['coords']['x'], 1); $y = round($UMC_USER['coords']['y'], 1); $z = round($UMC_USER['coords']['z'], 1); // map coords $map_str = ''; if (isset($UMC_SETTING['world_img_dim'][$world])) { $map = $UMC_SETTING['world_img_dim'][$world]; $map_x = floor(conv_x($x, $map)); $map_z = floor(conv_z($z, $map)); $map_str = "{green}2D Map:{white} x: {$map_x}, z: {$map_z}"; } $lot = umc_lot_get_from_coords($x, $z, $world); $lot_members = umc_get_lot_members($lot, false); $lot_owners = umc_get_lot_members($lot, true); if (!$lot) { $lot = 'No lot here'; } // chunk $chunk_x = floor($x / 16); $chunk_z = floor($z / 16); // region $region_x = floor($x / 512); $region_z = floor($z / 512); // Yaw $yaw = round($UMC_USER['coords']['yaw'], 1); // -22.49969482421875 ? $yaw_arr = array(0 => 'South', 45 => 'SouthWest', 90 => 'West', 135 => 'NorthWest', 180 => 'North', 225 => 'NorthEast', 270 => 'East', 315 => 'SouthEast', 360 => 'South'); $var = 22.5; $game_yaw = $yaw; if ($yaw < 0) { $yaw += 360; } $compass = false; foreach ($yaw_arr as $angle => $direction) { if ($yaw > $angle - $var && $yaw < $angle + $var) { $compass = $direction; break; } } // could not identify direction if (!$compass) { XMPP_ERROR_trigger("Could not idenfiy compass direction in /whereami"); $compass = "******"; } // time $date_today = umc_datetime(); $today = $date_today->format('Y-m-d H:i:s'); $world_str = ucwords($world); umc_header("Location for {$player}"); umc_echo("{green}World:{white} {$world_str} {green}Lot:{white} {$lot} {green}Date:{white} {$today}"); if ($lot_owners) { umc_echo("{green}Lot Owner:{white} " . implode(", ", $lot_owners)); if ($lot_members) { umc_echo("{green}Lot Members:{white} " . implode(", ", $lot_members)); } } else { umc_echo("{green}Lot Owner:{white} Unoccupied lot"); } umc_echo("{green}Compass:{white} {$compass} {green}Yaw:{white} {$yaw} {green}Game-Yaw:{white} {$game_yaw}"); umc_echo("{green}Coordinates:{white} x: {$x}, y: {$y}, z: {$z}"); umc_echo("{green}Chunk:{white} x: {$chunk_x}, z: {$chunk_z} {green}Region:{white} x: {$region_x}, z: {$region_z} {$map_str}"); umc_footer(); }