'Creation of account',
'create' => 'is completed !',
'failed' => 'was not possible !',
'not_all' => 'Fields are filled not all',
'playerson' => 'players online',
'off' => 'is offline',
'name' => 'Account Name',
'password' => 'Password',
'ip_limit' => Array('From your IP ',' accounts are already created'),
'char' => Array('Name','Race','Class','LvL','Location'),
);
break;
case "ru":
$button="create_ru.gif";
$text = Array(
'acc' => 'Создание аккаунта',
'create' => 'завершено !',
'failed' => 'невозможно !',
'not_all' => 'Заполнены не все поля',
'playerson' => 'игроков на сервере',
'off' => 'сейчас отключен',
'name' => 'Имя Аккаунта',
'password' => 'Пароль',
'ip_limit' => Array('С вашего IP ',' аккаунтов уже создано'),
'char' => Array('Персонаж','Раса','Класс','ЛвЛ','Расположение'),
);
break;
}
$maps_a = Array(
0 => 'Azeroth',
1 => 'Kalimdor',
2 => 'UnderMine',
13 => 'Test zone',
17 => 'Kalidar',
30 => 'Alterac Valley',
33 => 'Shadowfang Keep Instance',
34 => 'The Stockade Instance',
35 => 'Stormwind Prizon',
36 => 'Deadmines Instance',
37 => 'Plains of Snow',
43 => 'Wailing Caverns Instance',
44 => 'Monastery Interior',
47 => 'Razorfen Kraul Instance',
48 => 'Blackfathom Deeps Instance',
70 => 'Uldaman Instance',
90 => 'Gnomeregan Instance',
109 => 'Sunken Temple Instance',
129 => 'Razorfen Downs Instance',
150 => 'Outland',
169 => 'Emerald Forest',
189 => 'Scarlet Monastery Instance',
209 => 'Zul\'Farrak Instance',
229 => 'Blackrock Spire Instance',
230 => 'Blackrock Depths Instance',
249 => 'Onyxia\'s Lair Instance',
269 => 'Caverns of Time',
289 => 'Scholomance Instance',
309 => 'Zul\'Gurub Instance',
329 => 'Stratholme Instance',
349 => 'Mauradon Instance',
369 => 'Deeprun Tram',
389 => 'Ragefire Chasm Instance',
409 => 'The Molten Core Instance',
429 => 'Dire Maul Instance',
449 => 'Alliance PVP Barracks',
450 => 'Horde PVP Barracks',
451 => 'Development Land',
469 => 'Blackwing Lair Instance',
489 => 'Warsong Gulch',
509 => 'Ruins of Ahn\'Qiraj Instance',
529 => 'Arathi Basin',
531 => 'Temple of Ahn\'Qiraj Instance',
533 => 'Naxxramas Instance',
);
$zone = Array(
0 => Array(
Array(700,10,1244,1873,'Undercity',1497),
Array(-840,-1330,-5050,-4560,'Ironforge',1537),
Array(1190,200,-9074,-8280,'Stormwind City',1519),
Array(-2170,-4400,-7348,-6006,'Badlands',3),
Array(-500,-4400,-4485,-2367,'Wetlands',11),
Array(2220,-2250,-15422,-11299,'Stranglethorn Vale',33),
Array(-1724,-3540,-9918,-8667,'Redridge Mountains',44),
Array(-2480,-4400,-6006,-4485,'Loch Modan',38),
Array(662,-1638,-11299,-9990,'Duskwood',10),
Array(-1638,-2344,-11299,-9918,'Deadwind Pass',41),
Array(834,-1724,-9990,-8526,'Elwynn Forest',12),
Array(-500,-3100,-8667,-7348,'Burning Steppes',46),
Array(-608,-2170,-7348,-6285,'Searing Gorge',51),
Array(2000,-2480,-6612,-4485,'Dun Morogh',1),
Array(-1575,-5425,-432,805,'The Hinterlands',47),
Array(3016,662,-11299,-9400,'Westfall',40),
Array(600,-1575,-1874,220,'Hillsbrad Foothills',267),
Array(-2725,-6056,805,3800,'Eastern Plaguelands',139),
Array(-850,-2725,805,3400,'Western Plaguelands',28),
Array(2200,600,-900,1525,'Silverpine Forest',130),
Array(2200,-850,1525,3400,'Tirisfal Glades',85),
Array(-2250,-3520,-12800,-10666,'Blasted Lands',4),
Array(-2344,-4516,-11070,-9600,'Swamp of Sorrows',8),
Array(-1575,-3900,-2367,-432,'Arathi Highlands',45),
Array(600,-1575,220,1525,'Alterac Mountains',36),
),
1 => Array(
Array(2698,2030,9575,10267,'Darnassus',1657),
Array(326,-360,-1490,-910,'Thunder Bluff',1638),
Array(-3849,-4809,1387,2222,'Orgrimmar',1637),
Array(-1300,-3250,7142,8500,'Moonglade',493),
Array(2021,-400,-9000,-6016,'Silithus',1377),
Array(-2259,-7000,4150,8500,'Winterspring',618),
Array(-400,-2094,-8221,-6016,'Un\'Goro Crater',490),
Array(-590,-2259,3580,7142,'Felwood',361),
Array(-3787,-8000,1370,6000,'Azshara',16),
Array(-1900,-5500,-10475,-6825,'Tanaris',440),
Array(-2478,-5500,-5135,-2330,'Dustwallow Marsh',15),
Array(360,-1536,-3474,-412,'Mulgore',215),
Array(4000,-804,-6828,-2477,'Feralas',357),
Array(3500,360,-2477,372,'Desolace',405),
Array(-804,-5500,-6828,-4566,'Thousand Needles',400),
Array(-3758,-5500,-1300,1370,'Durotar',14),
Array(1000,-3787,1370,4150,'Ashenvale',331),
Array(2500,-1300,4150,8500,'Darkshore',148),
Array(3814,-1100,8600,11831,'Teldrassil',141),
Array(3500,-804,-412,3580,'Stonetalon Mountains',406),
Array(-804,-4200,-4566,1370,'The Barrens',17),
),
);
$def = Array(
'character_race' => Array(
1 => 'Human',
2 => 'Orc',
3 => 'Dwarf',
4 => 'Night Elf',
5 => 'Undead',
6 => 'Tauren',
7 => 'Gnome',
8 => 'Troll',
9 => 'Goblin',
),
'character_class' => Array(
1 => 'Warrior',
2 => 'Paladin',
3 => 'Hunter',
4 => 'Rogue',
5 => 'Priest',
7 => 'Shaman',
8 => 'Mage',
9 => 'Warlock',
11 => 'Druid',
),
);
class DBLayer
{
var $link_id;
var $query_result;
var $saved_queries = array();
var $num_queries = 0;
function DBLayer($db_host, $db_username, $db_password, $db_name)
{
$this->link_id = @mysql_connect($db_host, $db_username, $db_password, true);
if ($this->link_id)
{
if (@mysql_select_db($db_name, $this->link_id))
return $this->link_id;
else
error('Unable to select database. MySQL reported: '.mysql_error(), __FILE__, __LINE__);
}
else
error('Unable to connect to MySQL server. MySQL reported: '.mysql_error(), __FILE__, __LINE__);
}
function query($sql)
{
$this->query_result = @mysql_query($sql, $this->link_id);
if ($this->query_result)
{
++$this->num_queries;
return $this->query_result;
}
else
{
return false;
}
}
function result($query_id = 0, $row = 0)
{
return ($query_id) ? @mysql_result($query_id, $row) : false;
}
function fetch_assoc($query_id = 0)
{
return ($query_id) ? @mysql_fetch_assoc($query_id) : false;
}
function fetch_row($query_id = 0)
{
return ($query_id) ? @mysql_fetch_row($query_id) : false;
}
function num_rows($query_id = 0)
{
return ($query_id) ? @mysql_num_rows($query_id) : false;
}
function affected_rows()
{
return ($this->link_id) ? @mysql_affected_rows($this->link_id) : false;
}
function insert_id()
{
return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;
}
function get_num_queries()
{
return $this->num_queries;
}
function get_saved_queries()
{
return $this->saved_queries;
}
function free_result($query_id = false)
{
return ($query_id) ? @mysql_free_result($query_id) : false;
}
function escape($str)
{
if (function_exists('mysql_real_escape_string'))
return mysql_real_escape_string($str, $this->link_id);
else
return mysql_escape_string($str);
}
function error()
{
$result['error_sql'] = @current(@end($this->saved_queries));
$result['error_no'] = @mysql_errno($this->link_id);
$result['error_msg'] = @mysql_error($this->link_id);
return $result;
}
function close()
{
if ($this->link_id)
{
if ($this->query_result)
@mysql_free_result($this->query_result);
return @mysql_close($this->link_id);
}
else
return false;
}
}
function error($message, $file, $line, $db_error = false)
{
global $siteerrors;
$s = "\t\t".'Error: '.$message.'.'."\n";
echo $s;
}
function get_zone_name($mapid, $x, $y){
global $maps_a, $zone;
if (!empty($maps_a[$mapid]))
{
$zmap=$maps_a[$mapid];
if (($mapid==0) or ($mapid==1))
{
$i=0; $c=count($zone[$mapid]);
while ($i<$c)
{
if ($zone[$mapid][$i][2] < $x AND $zone[$mapid][$i][3] > $x AND $zone[$mapid][$i][1] < $y AND $zone[$mapid][$i][0] > $y) $zmap=$zone[$mapid][$i][4];
$i++;
}
}
} else $zmap="Unknown zone";
return $zmap;
}
function test_realm(){
global $server, $port;
$s = @fsockopen("$server", $port, $ERROR_NO, $ERROR_STR,(float)0.5);
if($s){@fclose($s);return true;} else return false;
}
function get_realm_name(){
global $hostr, $userr, $passwordr, $dbr, $database_encoding;
$realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
$realm_db->query("SET NAMES $database_encoding");
$query = $realm_db->query("SELECT * FROM `realmlist`");
$result = $realm_db->fetch_assoc($query);
$realm_db->close();
unset($realm_db);
return($result['name']);
}
if (empty($_POST['username']) and empty($_POST['passw']) and empty($_POST['email']))
{
$cont='
 |
|
 |
|
|
|
|
|
|
';
}
elseif (empty($_POST['username']) or empty($_POST['passw']) or empty($_POST['email']))
{
$cont=' |
'.$text["not_all"].'
Back |
';
}
else
{
$username = htmlspecialchars(trim("$_POST[username]"));
$passw = trim($_POST['passw']);
$email = htmlspecialchars(trim($_POST['email']));
$ip = getenv('REMOTE_ADDR');
// сделать проверку на неполучение ипа
$realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
$realm_db->query("SET NAMES $database_encoding");
$ip_cr=0;
if ($lock_reg!=0){
$query = $realm_db->query("SELECT `last_ip` FROM `account` WHERE `last_ip`='$ip'");
while($result = $realm_db->fetch_assoc($query)) $ip_cr++;
}
if (($ip_cr>=$lock_reg) && ($lock_reg!=0))
{
$cont=' |
'.$text["ip_limit"][0].$ip.' '.$ip_cr.$text["ip_limit"][1].'
Back |
';
} else
{
if($realm_db->query("INSERT INTO `account` (`username`,`password`,`email`,`last_ip`,`locked`) VALUES ('$username','$passw','$email','$ip','$lock_acc')"))
{
$cont=' |
'.$text["acc"].' '.$username.' '.$text["create"].'
|
';
}
else
{
$cont=' |
'.$text["acc"].' '.$username.' '.$text["failed"].'
Back |
';
}
}
$realm_db->close();
unset($realm_db);
}
function make_players_array(){
global $host, $user, $password, $db, $database_encoding, $pl_array;
$i=0;
$mangos_db = new DBLayer($host, $user, $password, $db);
$mangos_db->query("SET NAMES $database_encoding");
$query = $mangos_db->query("SELECT * FROM `character` WHERE `online`='1' ORDER BY `name`");
while($result = $mangos_db->fetch_assoc($query))
{
$char_data = explode(' ',$result['data']);
$char_gender = dechex($char_data[36]);
$char_gender = str_pad($char_gender,8, 0, STR_PAD_LEFT);
$char_gender = $char_gender{3};
$res_pos=get_zone_name($result['map'], $result['position_x'], $result['position_y']);
$pl_array[$i] = Array($result['name'], $result['race'], $result['class'], $char_data[34], $res_pos, $char_gender);
$i++;
}
$mangos_db->close();
unset($mangos_db);
return $i;
}
$onlineplayers=make_players_array();
if (!$sort = &$_GET['s']) $sort=0;
if (!$flag = &$_GET['f']) $flag=0;
if ($flag==0) { $flag=1; $sort_type='<'; }
else { $flag=0; $sort_type='>'; }
$link=$_SERVER['PHP_SELF']."?f=".$flag."&s=";
if (!empty($pl_array))
{
usort($pl_array, create_function('$a, $b', 'if ( $a['.$sort.'] == $b['.$sort.'] ) return 0; if ( $a['.$sort.'] '.$sort_type.' $b['.$sort.'] ) return -1; return 1;'));
}
$list="";
$i=0;
while ($i < $onlineplayers)
{
$name=$pl_array[$i][0];
$race=$pl_array[$i][1];
$class=$pl_array[$i][2];
$res_race = $def['character_race'][$race];
$res_class = $def['character_class'][$class];
$lvl=$pl_array[$i][3];
$loc=$pl_array[$i][4];
$gender=$pl_array[$i][5];
$list.= "
|
$name |
 |
 |
$lvl |
$loc |
";
$i++;
}
$title=get_realm_name();
if (test_realm())
{
$title.=(' ('.$onlineplayers.' '.$text["playerson"].')');
$title.=" View";
} else
{
$title.=(' '.$text["off"]);
}
// Main part !!!
?>
Хостинг от uCoz