1 | <?php
|
---|
2 | //RoSPORA V1.6 RC1 PHP&MYSQL DATA FILE
|
---|
3 | require_once( 'config.php' );
|
---|
4 | require_once( 'languages.php' );
|
---|
5 | //Map info
|
---|
6 | $maps_a = Array(
|
---|
7 | 0 => 'Azeroth',
|
---|
8 | 1 => 'Kalimdor',
|
---|
9 | 2 => 'UnderMine',
|
---|
10 | 13 => 'Test zone',
|
---|
11 | 17 => 'Kalidar',
|
---|
12 | 30 => 'Alterac Valley',
|
---|
13 | 33 => 'Shadowfang Keep Instance',
|
---|
14 | 34 => 'The Stockade Instance',
|
---|
15 | 35 => 'Stormwind Prizon',
|
---|
16 | 36 => 'Deadmines Instance',
|
---|
17 | 37 => 'Plains of Snow',
|
---|
18 | 43 => 'Wailing Caverns Instance',
|
---|
19 | 44 => 'Monastery Interior',
|
---|
20 | 47 => 'Razorfen Kraul Instance',
|
---|
21 | 48 => 'Blackfathom Deeps Instance',
|
---|
22 | 70 => 'Uldaman Instance',
|
---|
23 | 90 => 'Gnomeregan Instance',
|
---|
24 | 109 => 'Sunken Temple Instance',
|
---|
25 | 129 => 'Razorfen Downs Instance',
|
---|
26 | 530 => 'Outland',
|
---|
27 | 169 => 'Emerald Forest',
|
---|
28 | 189 => 'Scarlet Monastery Instance',
|
---|
29 | 209 => 'Zul\'Farrak Instance',
|
---|
30 | 229 => 'Blackrock Spire Instance',
|
---|
31 | 230 => 'Blackrock Depths Instance',
|
---|
32 | 249 => 'Onyxias Lair Instance',
|
---|
33 | 269 => 'Caverns of Time',
|
---|
34 | 289 => 'Scholomance Instance',
|
---|
35 | 309 => 'Zul\'Gurub Instance',
|
---|
36 | 329 => 'Stratholme Instance',
|
---|
37 | 349 => 'Maraudon Instance',
|
---|
38 | 369 => 'Deeprun Tram',
|
---|
39 | 389 => 'Ragefire Chasm Instance',
|
---|
40 | 409 => 'The Molten Core Instance',
|
---|
41 | 429 => 'Dire Maul Instance',
|
---|
42 | 449 => 'Alliance PVP Barracks',
|
---|
43 | 450 => 'Horde PVP Barracks',
|
---|
44 | 451 => 'Development Land',
|
---|
45 | 469 => 'Blackwing Lair Instance',
|
---|
46 | 489 => 'Warsong Gulch',
|
---|
47 | 509 => 'Ruins of AhnQiraj Instance',
|
---|
48 | 529 => 'Arathi Basin',
|
---|
49 | 531 => 'Temple of AhnQiraj Instance',
|
---|
50 | 533 => 'Naxxramas Instance',
|
---|
51 | 532 => 'Karazahn',
|
---|
52 | 534 => 'Hyjal Past',
|
---|
53 | 540 => 'Shattered Halls Instance',
|
---|
54 | 542 => 'Blood Furnace Instance',
|
---|
55 | 543 => 'Hellfire Ramparts Instance',
|
---|
56 | 544 => 'Magtheridons Lair Instance',
|
---|
57 | 545 => 'Steamvault Instance',
|
---|
58 | 546 => 'Underbog Instance',
|
---|
59 | 547 => 'Slave Pens Instance',
|
---|
60 | 548 => 'Coilfang Resevoir Instance',
|
---|
61 | 550 => 'Tempest Keep',
|
---|
62 | 552 => 'Tempest Keep',
|
---|
63 | 553 => 'Tempest Keep',
|
---|
64 | 554 => 'Tempest Keep',
|
---|
65 | 555 => 'Auchindoun',
|
---|
66 | 556 => 'Auchindoun',
|
---|
67 | 557 => 'Auchindoun',
|
---|
68 | 558 => 'Auchindoun',
|
---|
69 | 559 => 'Nagrand Arena',
|
---|
70 | 560 => 'Hillsbrad Past',
|
---|
71 | 562 => 'Blades Edge Arena',
|
---|
72 | 564 => 'Black Temple',
|
---|
73 | 565 => 'Gruuls Lair',
|
---|
74 | 566 => 'Netherstorm Arena',
|
---|
75 | 568 => 'Zul\'Aman',
|
---|
76 | );
|
---|
77 | //Zone info
|
---|
78 | $zone = Array(
|
---|
79 | 0 => Array(
|
---|
80 | Array(700,10,1244,1873,'Undercity',1497),
|
---|
81 | Array(-840,-1330,-5050,-4560,'Ironforge',1537),
|
---|
82 | Array(1190,200,-9074,-8280,'Stormwind City',1519),
|
---|
83 | Array(-2170,-4400,-7348,-6006,'Badlands',3),
|
---|
84 | Array(-500,-4400,-4485,-2367,'Wetlands',11),
|
---|
85 | Array(2220,-2250,-15422,-11299,'Stranglethorn Vale',33),
|
---|
86 | Array(-1724,-3540,-9918,-8667,'Redridge Mountains',44),
|
---|
87 | Array(-2480,-4400,-6006,-4485,'Loch Modan',38),
|
---|
88 | Array(662,-1638,-11299,-9990,'Duskwood',10),
|
---|
89 | Array(-1638,-2344,-11299,-9918,'Deadwind Pass',41),
|
---|
90 | Array(834,-1724,-9990,-8526,'Elwynn Forest',12),
|
---|
91 | Array(-500,-3100,-8667,-7348,'Burning Steppes',46),
|
---|
92 | Array(-608,-2170,-7348,-6285,'Searing Gorge',51),
|
---|
93 | Array(2000,-2480,-6612,-4485,'Dun Morogh',1),
|
---|
94 | Array(-1575,-5425,-432,805,'The Hinterlands',47),
|
---|
95 | Array(3016,662,-11299,-9400,'Westfall',40),
|
---|
96 | Array(600,-1575,-1874,220,'Hillsbrad Foothills',267),
|
---|
97 | Array(-2725,-6056,805,3800,'Eastern Plaguelands',139),
|
---|
98 | Array(-850,-2725,805,3400,'Western Plaguelands',28),
|
---|
99 | Array(2200,600,-900,1525,'Silverpine Forest',130),
|
---|
100 | Array(2200,-850,1525,3400,'Tirisfal Glades',85),
|
---|
101 | Array(-2250,-3520,-12800,-10666,'Blasted Lands',4),
|
---|
102 | Array(-2344,-4516,-11070,-9600,'Swamp of Sorrows',8),
|
---|
103 | Array(-1575,-3900,-2367,-432,'Arathi Highlands',45),
|
---|
104 | Array(600,-1575,220,1525,'Alterac Mountains',36),
|
---|
105 | ),
|
---|
106 | 1 => Array(
|
---|
107 | Array(2698,2030,9575,10267,'Darnassus',1657),
|
---|
108 | Array(326,-360,-1490,-910,'Thunder Bluff',1638),
|
---|
109 | Array(-3849,-4809,1387,2222,'Orgrimmar',1637),
|
---|
110 | Array(-1300,-3250,7142,8500,'Moonglade',493),
|
---|
111 | Array(2021,-400,-9000,-6016,'Silithus',1377),
|
---|
112 | Array(-2259,-7000,4150,8500,'Winterspring',618),
|
---|
113 | Array(-400,-2094,-8221,-6016,'Un\'Goro Crater',490),
|
---|
114 | Array(-590,-2259,3580,7142,'Felwood',361),
|
---|
115 | Array(-3787,-8000,1370,6000,'Azshara',16),
|
---|
116 | Array(-1900,-5500,-10475,-6825,'Tanaris',440),
|
---|
117 | Array(-2478,-5500,-5135,-2330,'Dustwallow Marsh',15),
|
---|
118 | Array(360,-1536,-3474,-412,'Mulgore',215),
|
---|
119 | Array(4000,-804,-6828,-2477,'Feralas',357),
|
---|
120 | Array(3500,360,-2477,372,'Desolace',405),
|
---|
121 | Array(-804,-5500,-6828,-4566,'Thousand Needles',400),
|
---|
122 | Array(-3758,-5500,-1300,1370,'Durotar',14),
|
---|
123 | Array(1000,-3787,1370,4150,'Ashenvale',331),
|
---|
124 | Array(2500,-1300,4150,8500,'Darkshore',148),
|
---|
125 | Array(3814,-1100,8600,11831,'Teldrassil',141),
|
---|
126 | Array(3500,-804,-412,3580,'Stonetalon Mountains',406),
|
---|
127 | Array(-804,-4200,-4566,1370,'The Barrens',17),
|
---|
128 | ),
|
---|
129 | 530 => Array(
|
---|
130 | Array(6135.25,4829,-2344.78,-1473.95,'Shattrath City',3703),
|
---|
131 | Array(-6400.75,-7612.20,9346.93,10153.70,'Silvermoon City',3487),
|
---|
132 | Array(5483.33,-91.66,1739.58,5456.25,'Netherstorm',3523),
|
---|
133 | Array(7083.33,1683.33,-4600,-999.99,'Terokkar Forest',3519),
|
---|
134 | Array(10295.83,4770.83,-3641.66,41.66,'Nagrand',3518),
|
---|
135 | Array(-10075,-13337.49,-2933.33,-758.33,'Bloodmyst Isle',3525),
|
---|
136 | Array(8845.83,3420.83,791.66,4408.33,'Blades Edge Mountains',3522),
|
---|
137 | Array(4225,-1275,-5614.58,-1947.91,'Shadowmoon Valley',3520),
|
---|
138 | Array(-11066.36,-12123.13,-4314.37,-3609.68,'The Exodar',3557),
|
---|
139 | Array(9475,4447.91,-1416.66,1935.41,'Zangarmarsh',3521),
|
---|
140 | Array(5539.58,375,-1962.49,1481.25,'Hellfire Peninsula',3483),
|
---|
141 | Array(-10500,-14570.83,-5508.33,-2793.75,'Azuremyst Isle',3524),
|
---|
142 | Array(-5283.33,-8583.33,6066.66,8266.66,'Ghostlands',3433),
|
---|
143 | Array(-4487,-9412,7758,11041,'Eversong Woods',3430)
|
---|
144 | ),
|
---|
145 | );
|
---|
146 | //Define characters
|
---|
147 | $def = Array(
|
---|
148 | 'character_race' => Array(
|
---|
149 | 1 => 'Human',
|
---|
150 | 2 => 'Orc',
|
---|
151 | 3 => 'Dwarf',
|
---|
152 | 4 => 'Night Elf',
|
---|
153 | 5 => 'Undead',
|
---|
154 | 6 => 'Tauren',
|
---|
155 | 7 => 'Gnome',
|
---|
156 | 8 => 'Troll',
|
---|
157 | 9 => 'Goblin',
|
---|
158 | 10 => 'Blood Elf',
|
---|
159 | 11 => 'Dranei',
|
---|
160 | ),
|
---|
161 | //Define classes
|
---|
162 | 'character_class' => Array(
|
---|
163 | 1 => 'Warrior',
|
---|
164 | 2 => 'Paladin',
|
---|
165 | 3 => 'Hunter',
|
---|
166 | 4 => 'Rogue',
|
---|
167 | 5 => 'Priest',
|
---|
168 | 7 => 'Shaman',
|
---|
169 | 8 => 'Mage',
|
---|
170 | 9 => 'Warlock',
|
---|
171 | 11 => 'Druid',
|
---|
172 | ),
|
---|
173 | );
|
---|
174 | //DATABASE LAYER - HIGH PRIORITY CODES
|
---|
175 | class DBLayer
|
---|
176 | {
|
---|
177 | var $link_id;
|
---|
178 | var $query_result;
|
---|
179 | var $saved_queries = array();
|
---|
180 | var $num_queries = 0;
|
---|
181 |
|
---|
182 | function error()
|
---|
183 | {
|
---|
184 | $result['error_sql'] = @current(@end($this->saved_queries));
|
---|
185 | $result['error_no'] = @mysql_errno($this->link_id);
|
---|
186 | $result['error_msg'] = @mysql_error($this->link_id);
|
---|
187 |
|
---|
188 | return $result;
|
---|
189 | }
|
---|
190 |
|
---|
191 |
|
---|
192 | function DBLayer($host, $user, $password, $db)
|
---|
193 | {
|
---|
194 | $this->link_id = mysql_connect($host, $user, $password, true);
|
---|
195 |
|
---|
196 | if ($this->link_id)
|
---|
197 | {
|
---|
198 | if (mysql_select_db($db, $this->link_id))
|
---|
199 | return $this->link_id;
|
---|
200 | else
|
---|
201 | error('Unable to select database.');
|
---|
202 | }
|
---|
203 | else
|
---|
204 | error('Unable to connect to MySQL server.');
|
---|
205 | mysql_close($this);
|
---|
206 | }
|
---|
207 |
|
---|
208 | function query($sql)
|
---|
209 | {
|
---|
210 | $this->query_result = @mysql_query($sql, $this->link_id);
|
---|
211 |
|
---|
212 | if ($this->query_result)
|
---|
213 | {
|
---|
214 | ++$this->num_queries;
|
---|
215 | return $this->query_result;
|
---|
216 | }
|
---|
217 | else
|
---|
218 | {
|
---|
219 | return false;
|
---|
220 | }
|
---|
221 | mysql_close($this);
|
---|
222 | }
|
---|
223 |
|
---|
224 |
|
---|
225 | function result($query_id = 0, $row = 0)
|
---|
226 | {
|
---|
227 | return ($query_id) ? @mysql_result($query_id, $row) : false;
|
---|
228 | }
|
---|
229 |
|
---|
230 |
|
---|
231 | function fetch_assoc($query_id = 0)
|
---|
232 | {
|
---|
233 | return ($query_id) ? @mysql_fetch_assoc($query_id) : false;
|
---|
234 | }
|
---|
235 |
|
---|
236 |
|
---|
237 | function fetch_row($query_id = 0)
|
---|
238 | {
|
---|
239 | return ($query_id) ? @mysql_fetch_row($query_id) : false;
|
---|
240 | }
|
---|
241 |
|
---|
242 |
|
---|
243 | function fetch_object($query_id = 0)
|
---|
244 | {
|
---|
245 | return ($query_id) ? @mysql_fetch_object($query_id) : false;
|
---|
246 | }
|
---|
247 |
|
---|
248 |
|
---|
249 | function num_rows($query_id = 0)
|
---|
250 | {
|
---|
251 | return ($query_id) ? @mysql_num_rows($query_id) : false;
|
---|
252 | }
|
---|
253 |
|
---|
254 |
|
---|
255 | function affected_rows()
|
---|
256 | {
|
---|
257 | return ($this->link_id) ? @mysql_affected_rows($this->link_id) : false;
|
---|
258 | }
|
---|
259 |
|
---|
260 |
|
---|
261 | function insert_id()
|
---|
262 | {
|
---|
263 | return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;
|
---|
264 | }
|
---|
265 |
|
---|
266 |
|
---|
267 | function get_num_queries()
|
---|
268 | {
|
---|
269 | return $this->num_queries;
|
---|
270 | }
|
---|
271 |
|
---|
272 |
|
---|
273 | function get_saved_queries()
|
---|
274 | {
|
---|
275 | return $this->saved_queries;
|
---|
276 | }
|
---|
277 |
|
---|
278 |
|
---|
279 | function free_result($query_id = false)
|
---|
280 | {
|
---|
281 | return ($query_id) ? @mysql_free_result($query_id) : false;
|
---|
282 | }
|
---|
283 |
|
---|
284 |
|
---|
285 | function escape($str)
|
---|
286 | {
|
---|
287 | if (function_exists('mysql_real_escape_string'))
|
---|
288 | return mysql_real_escape_string($str, $this->link_id);
|
---|
289 | else
|
---|
290 | return mysql_escape_string($str);
|
---|
291 | }
|
---|
292 |
|
---|
293 |
|
---|
294 | function close()
|
---|
295 | {
|
---|
296 | if ($this->link_id)
|
---|
297 | {
|
---|
298 | if ($this->query_result)
|
---|
299 | @mysql_free_result($this->query_result);
|
---|
300 |
|
---|
301 | return @mysql_close($this->link_id);
|
---|
302 | }
|
---|
303 | else
|
---|
304 | return false;
|
---|
305 |
|
---|
306 | }
|
---|
307 | }
|
---|
308 | //Start creation of accounts and verify
|
---|
309 | function check_email_address($email) {
|
---|
310 | if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
|
---|
311 | return false;
|
---|
312 | }
|
---|
313 | $email_array = explode("@", $email);
|
---|
314 | $local_array = explode(".", $email_array[0]);
|
---|
315 | for ($i = 0; $i < sizeof($local_array); $i++) {
|
---|
316 | if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
|
---|
317 | return false;
|
---|
318 | }
|
---|
319 | }
|
---|
320 | if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
|
---|
321 | $domain_array = explode(".", $email_array[1]);
|
---|
322 | if (sizeof($domain_array) < 2) {
|
---|
323 | return false;
|
---|
324 | }
|
---|
325 | for ($i = 0; $i < sizeof($domain_array); $i++) {
|
---|
326 | if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
|
---|
327 | return false;
|
---|
328 | }
|
---|
329 | }
|
---|
330 | }
|
---|
331 | return true;
|
---|
332 | }
|
---|
333 | function check_for_symbols($string){
|
---|
334 | $len=strlen($string);
|
---|
335 | $alowed_chars="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
---|
336 | for($i=0;$i<$len;$i++)
|
---|
337 | if(!strstr($alowed_chars,$string[$i]))
|
---|
338 | return TRUE;
|
---|
339 | return FALSE;
|
---|
340 | }
|
---|
341 | function sha_password($user,$pass){
|
---|
342 | $user = strtoupper($user);
|
---|
343 | $pass = strtoupper($pass);
|
---|
344 | return SHA1($user.':'.$pass);
|
---|
345 | }
|
---|
346 | //
|
---|
347 | //Start realm works
|
---|
348 | function test_realm(){
|
---|
349 | global $server, $port;
|
---|
350 | $s = @fsockopen("$server", $port, $ERROR_NO, $ERROR_STR,(float)0.5);
|
---|
351 | if($s){@fclose($s);return true;} else return false;
|
---|
352 | }
|
---|
353 | function get_realm_name(){
|
---|
354 | global $hostr, $userr, $passwordr, $dbr, $database_encoding;
|
---|
355 | $realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
|
---|
356 | $realm_db->query("SET NAMES $database_encoding");
|
---|
357 | $query = $realm_db->query("SELECT * FROM `realmlist` WHERE id = '1'");
|
---|
358 | $result = $realm_db->fetch_assoc($query);
|
---|
359 | $realm_db->close();
|
---|
360 | unset($realm_db);
|
---|
361 | return($result['name']);
|
---|
362 | }
|
---|
363 | $title=get_realm_name();
|
---|
364 | $copyright=get_realm_name();
|
---|
365 | $status=get_realm_name();
|
---|
366 | function get_realm_data(){
|
---|
367 | global $hostr, $userr, $passwordr, $dbr, $database_encoding;
|
---|
368 | $realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
|
---|
369 | $realm_db->query("SET NAMES $database_encoding");
|
---|
370 | $query = $realm_db->query("SELECT * FROM `realmlist`");
|
---|
371 | $result = $realm_db->fetch_assoc($query);
|
---|
372 | $realm_db->close();
|
---|
373 | unset($realm_db);
|
---|
374 | $result['name']=$result['name']." Server";
|
---|
375 | return($result);
|
---|
376 | }
|
---|
377 | //
|
---|
378 | //Rospora credits
|
---|
379 | $credits = "<left><a href=\"http://rospora.powerlogy.net/\">RoSPORA</a> is a free software released under the <a href=\"http://www.gnu.org/copyleft/gpl.html\">GNU/GPL</a><br>This <a href=\"http://rospora.powerlogy.net/\">RoSPORA V1.6 RC1</a> licenced to $title</left>";
|
---|
380 | //Online player works
|
---|
381 | function make_players_arrayrealm(){
|
---|
382 | global $hostc, $userc, $passwordc, $dbc, $database_encoding, $pl_array;
|
---|
383 | $i=0;
|
---|
384 | $mangos_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
385 | $mangos_db->query("SET NAMES $database_encoding");
|
---|
386 | $query = $mangos_db->query("SELECT * FROM `characters` WHERE `online`='1' ORDER BY `name`");
|
---|
387 | while($result = $mangos_db->fetch_assoc($query))
|
---|
388 | {
|
---|
389 | $memberid = $result["guid"];
|
---|
390 | $char_data = explode(' ',$result['data']);
|
---|
391 | $char_gender = dechex($char_data[36]);
|
---|
392 | $char_gender = str_pad($char_gender,8, 0, STR_PAD_LEFT);
|
---|
393 | $char_gender = $char_gender{3};
|
---|
394 | $guild = get_guildname($result['guid']);
|
---|
395 | $res_pos=get_zone_name($result['map'], $result['position_x'], $result['position_y']);
|
---|
396 | if ($result['race'] == 1 || $result['race'] == 3 || $result['race'] == 4 || $result['race'] == 7 || $result['race'] == 11) { $char_side=1; } else { $char_side=2; };
|
---|
397 | $pl_array[$i] = Array($result['name'], $result['race'], $result['class'], $char_data[34], $res_pos, $rank, $char_gender, $char_side, $rank, $guild, $result['guid']);
|
---|
398 | $i++;
|
---|
399 | }
|
---|
400 | $mangos_db->close();
|
---|
401 | unset($mangos_db);
|
---|
402 | return $i;
|
---|
403 | }
|
---|
404 | $onlineplayers=make_players_arrayrealm();
|
---|
405 |
|
---|
406 | if (!$sort = &$_GET['s']) $sort=0;
|
---|
407 | if (!$flag = &$_GET['f']) $flag=0;
|
---|
408 | if ($flag==0){
|
---|
409 | $flag=1; $sort_type='<';
|
---|
410 | }
|
---|
411 | else{
|
---|
412 | $flag=0; $sort_type='>';
|
---|
413 | }
|
---|
414 | $link=$_SERVER['PHP_SELF']."?f=".$flag."&s=";
|
---|
415 |
|
---|
416 | if (!empty($pl_array))
|
---|
417 | {
|
---|
418 | 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;'));
|
---|
419 | }
|
---|
420 | $listone="";
|
---|
421 | $i=0;
|
---|
422 | while ($i < $onlineplayers)
|
---|
423 | {
|
---|
424 | $member=$pl_array[$i][6];
|
---|
425 | $name=$pl_array[$i][0];
|
---|
426 | $race=$pl_array[$i][1];
|
---|
427 | $class=$pl_array[$i][2];
|
---|
428 | $res_race = $def['character_race'][$race];
|
---|
429 | $res_class = $def['character_class'][$class];
|
---|
430 | $lvl=$pl_array[$i][3];
|
---|
431 | $loc=$pl_array[$i][4];
|
---|
432 | $gender=$pl_array[$i][5];
|
---|
433 | if ($pl_array[$i][6]==1) {$side='alliance';} else { $side='horde'; };
|
---|
434 | $res_side = $def['character_side'][$pl_array[$i][6]];
|
---|
435 | $rank = $pl_array[$i][7];
|
---|
436 | $res_rank = $def['character_rank'][$side][$rank];
|
---|
437 | if ($rank==1) {
|
---|
438 | $rankshow='A';
|
---|
439 | }
|
---|
440 | else $rankshow='H';
|
---|
441 | $guild = $pl_array[$i][8];
|
---|
442 | $guildname=$gl_array[$i][0];
|
---|
443 | $guildleader=$gl_array[$i][1];
|
---|
444 | $guildmembers=$gl_array[$i][2];
|
---|
445 | if($guild=="") $guild="None";
|
---|
446 | $listone.= "<tr class='realms'>
|
---|
447 | <td class='realms'></td>
|
---|
448 | <td class='realms' align='center'>$rankshow</td>
|
---|
449 | <td class='realms'>$name</td>
|
---|
450 | <td class='realms' align='center'>$lvl</td>
|
---|
451 | <td class='realms'>$guild</td>
|
---|
452 | <td class='realms' align='center'>$res_race</td>
|
---|
453 | <td class='realms' align='center'>$res_class</td>
|
---|
454 | <td class='realms'>$loc</td>
|
---|
455 | </tr>";
|
---|
456 | $i++;
|
---|
457 | }
|
---|
458 | //
|
---|
459 | //Exclude character's zone
|
---|
460 | function get_zone_name($mapid, $x, $y){
|
---|
461 | global $maps_a, $zone;
|
---|
462 |
|
---|
463 | if (!empty($maps_a[$mapid]))
|
---|
464 | {
|
---|
465 | $zmap=$maps_a[$mapid];
|
---|
466 | if (($mapid==0) or ($mapid==1) or ($mapid==530))
|
---|
467 | {
|
---|
468 | $i=0; $c=count($zone[$mapid]);
|
---|
469 | while ($i<$c)
|
---|
470 | {
|
---|
471 | 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];
|
---|
472 | $i++;
|
---|
473 | }
|
---|
474 | }
|
---|
475 | } else $zmap="Unknown zone";
|
---|
476 | return $zmap;
|
---|
477 | }
|
---|
478 | function get_map_name($mapid)
|
---|
479 | {
|
---|
480 | global $maps_a;
|
---|
481 | if (!empty($maps_a[$mapid]))
|
---|
482 | {
|
---|
483 | $zmap=$maps_a[$mapid];
|
---|
484 | } else $zmap="Unknown";
|
---|
485 | return $zmap;
|
---|
486 | }
|
---|
487 | //
|
---|
488 | //Get server data's
|
---|
489 | function max_users(){
|
---|
490 | global $host, $user, $password, $db, $database_encoding;
|
---|
491 | $mangos_db = new DBLayer($host, $user, $password, $db);
|
---|
492 | $mangos_db->query("SET NAMES $database_encoding");
|
---|
493 | $query = $mangos_db->query("SELECT maxplayers FROM `uptime` ORDER BY maxplayers DESC");
|
---|
494 | $result = $mangos_db->fetch_assoc($query);
|
---|
495 | $mangos_db->close();
|
---|
496 | unset($mangos_db);
|
---|
497 | return($result['maxplayers']);
|
---|
498 | }
|
---|
499 | $time=max_users();
|
---|
500 | function max_char(){
|
---|
501 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
502 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
503 | $character_db->query("SET NAMES $database_encoding");
|
---|
504 | $query = $character_db->query("SELECT * FROM `characters`");
|
---|
505 | $result = $character_db->num_rows($query);
|
---|
506 | $character_db->close();
|
---|
507 | unset($character_db);
|
---|
508 | return($result);
|
---|
509 | }
|
---|
510 | $max_char=max_char();
|
---|
511 | function max_acc(){
|
---|
512 | global $hostr, $userr, $passwordr, $dbr, $database_encoding;
|
---|
513 | $realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
|
---|
514 | $realm_db->query("SET NAMES $database_encoding");
|
---|
515 | $query = $realm_db->query("SELECT * FROM `account`");
|
---|
516 | @ $result = $realm_db->num_rows($query);
|
---|
517 | $realm_db->close();
|
---|
518 | unset($realm_db);
|
---|
519 | return($result);
|
---|
520 | }
|
---|
521 | $max_acc=max_acc();
|
---|
522 | function max_gm(){
|
---|
523 | global $hostr, $userr, $passwordr, $dbr, $database_encoding;
|
---|
524 | $realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
|
---|
525 | $realm_db->query("SET NAMES $database_encoding");
|
---|
526 | $query = $realm_db->query("SELECT * FROM `account` WHERE gmlevel>'0'");
|
---|
527 | @ $result = $realm_db->num_rows($query);
|
---|
528 | $realm_db->close();
|
---|
529 | unset($realm_db);
|
---|
530 | return($result);
|
---|
531 | }
|
---|
532 | $max_gm=max_gm();
|
---|
533 | function get_db_rev(){
|
---|
534 | global $host, $user, $password, $db, $database_encoding;
|
---|
535 | $mangos_db = new DBLayer($host, $user, $password, $db);
|
---|
536 | $mangos_db->query("SET NAMES $database_encoding");
|
---|
537 | $query = $mangos_db->query("SELECT * FROM `db_version`");
|
---|
538 | $result = $mangos_db->fetch_assoc($query);
|
---|
539 | $mangos_db->close();
|
---|
540 | unset($mangos_db);
|
---|
541 | return($result['version']);
|
---|
542 | }
|
---|
543 | $rev=get_db_rev();
|
---|
544 | //
|
---|
545 | //Statics works starts
|
---|
546 | //Alliance
|
---|
547 | function max_human(){
|
---|
548 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
549 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
550 | $character_db->query("SET NAMES $database_encoding");
|
---|
551 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='1'");
|
---|
552 | $result = $character_db->fetch_assoc($query);
|
---|
553 | $character_db->close();
|
---|
554 | unset($character_db);
|
---|
555 | return($result['race']);
|
---|
556 | }
|
---|
557 | $max_human=max_human();
|
---|
558 |
|
---|
559 | function max_dwarf(){
|
---|
560 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
561 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
562 | $character_db->query("SET NAMES $database_encoding");
|
---|
563 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='3'");
|
---|
564 | $result = $character_db->fetch_assoc($query);
|
---|
565 | $character_db->close();
|
---|
566 | unset($character_db);
|
---|
567 | return($result['race']);
|
---|
568 | }
|
---|
569 | $max_dwarf=max_dwarf();
|
---|
570 |
|
---|
571 | function max_nightelf(){
|
---|
572 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
573 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
574 | $character_db->query("SET NAMES $database_encoding");
|
---|
575 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='4'");
|
---|
576 | $result = $character_db->fetch_assoc($query);
|
---|
577 | $character_db->close();
|
---|
578 | unset($character_db);
|
---|
579 | return($result['race']);
|
---|
580 | }
|
---|
581 | $max_nightelf=max_nightelf();
|
---|
582 |
|
---|
583 | function max_gnome(){
|
---|
584 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
585 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
586 | $character_db->query("SET NAMES $database_encoding");
|
---|
587 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='7'");
|
---|
588 | $result = $character_db->fetch_assoc($query);
|
---|
589 | $character_db->close();
|
---|
590 | unset($character_db);
|
---|
591 | return($result['race']);
|
---|
592 | }
|
---|
593 | $max_gnome=max_gnome();
|
---|
594 |
|
---|
595 | function max_dranei(){
|
---|
596 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
597 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
598 | $character_db->query("SET NAMES $database_encoding");
|
---|
599 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='11'");
|
---|
600 | $result = $character_db->fetch_assoc($query);
|
---|
601 | $character_db->close();
|
---|
602 | unset($character_db);
|
---|
603 | return($result['race']);
|
---|
604 | }
|
---|
605 | $max_dranei=max_dranei();
|
---|
606 |
|
---|
607 | //Horde
|
---|
608 | function max_orc(){
|
---|
609 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
610 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
611 | $character_db->query("SET NAMES $database_encoding");
|
---|
612 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='2'");
|
---|
613 | $result = $character_db->fetch_assoc($query);
|
---|
614 | $character_db->close();
|
---|
615 | unset($character_db);
|
---|
616 | return($result['race']);
|
---|
617 | }
|
---|
618 | $max_orc=max_orc();
|
---|
619 |
|
---|
620 | function max_undead(){
|
---|
621 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
622 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
623 | $character_db->query("SET NAMES $database_encoding");
|
---|
624 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='5'");
|
---|
625 | $result = $character_db->fetch_assoc($query);
|
---|
626 | $character_db->close();
|
---|
627 | unset($character_db);
|
---|
628 | return($result['race']);
|
---|
629 | }
|
---|
630 | $max_undead=max_undead();
|
---|
631 |
|
---|
632 | function max_tauren(){
|
---|
633 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
634 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
635 | $character_db->query("SET NAMES $database_encoding");
|
---|
636 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='6'");
|
---|
637 | $result = $character_db->fetch_assoc($query);
|
---|
638 | $character_db->close();
|
---|
639 | unset($character_db);
|
---|
640 | return($result['race']);
|
---|
641 | }
|
---|
642 | $max_tauren=max_tauren();
|
---|
643 |
|
---|
644 | function max_troll(){
|
---|
645 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
646 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
647 | $character_db->query("SET NAMES $database_encoding");
|
---|
648 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='8'");
|
---|
649 | @ $result = $character_db->fetch_assoc($query);
|
---|
650 | $character_db->close();
|
---|
651 | unset($character_db);
|
---|
652 | return($result['race']);
|
---|
653 | }
|
---|
654 | $max_troll=max_troll();
|
---|
655 |
|
---|
656 | function max_bloodelf(){
|
---|
657 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
658 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
659 | $character_db->query("SET NAMES $database_encoding");
|
---|
660 | $query = $character_db->query("SELECT COUNT(*) AS race FROM `characters` WHERE race='10'");
|
---|
661 | @ $result = $character_db->fetch_assoc($query);
|
---|
662 | $character_db->close();
|
---|
663 | unset($character_db);
|
---|
664 | return($result['race']);
|
---|
665 | }
|
---|
666 | $max_bloodelf=max_bloodelf();
|
---|
667 | //
|
---|
668 | //Percent system
|
---|
669 | $staticpic = "percent.php?per=";
|
---|
670 | @$yuzde_human=round($max_human*100/$max_char);
|
---|
671 | @$yuzde_dwarf=round($max_dwarf*100/$max_char);
|
---|
672 | @$yuzde_nightelf=round($max_nightelf*100/$max_char);
|
---|
673 | @$yuzde_gnome=round($max_gnome*100/$max_char);
|
---|
674 | @$yuzde_dranei=round($max_dranei*100/$max_char);
|
---|
675 | @$yuzde_orc=round($max_orc*100/$max_char);
|
---|
676 | @$yuzde_troll=round($max_troll*100/$max_char);
|
---|
677 | @$yuzde_undead=round($max_undead*100/$max_char);
|
---|
678 | @$yuzde_tauren=round($max_tauren*100/$max_char);
|
---|
679 | @$yuzde_bloodelf=round($max_bloodelf*100/$max_char);
|
---|
680 | //
|
---|
681 | //Get guild name
|
---|
682 | function get_guildname($idplayer){
|
---|
683 | global $hostc, $userc, $passwordc, $dbc, $database_encoding;
|
---|
684 | $character_db = new DBLayer($hostc, $userc, $passwordc, $dbc);
|
---|
685 | $character_db->query("SET NAMES $database_encoding");
|
---|
686 | $query = $character_db->query("SELECT g.name FROM guild g, guild_member gm WHERE gm.guid=guid");
|
---|
687 | $result = $character_db->fetch_assoc($query);
|
---|
688 | $character_db->close();
|
---|
689 | unset($character_db);
|
---|
690 | return($result['name']);
|
---|
691 | $guild_name = $result['name'];
|
---|
692 | }
|
---|
693 | //Account creation page and verify
|
---|
694 | if (empty($_POST['username']) and empty($_POST['passw']) and empty($_POST['email']))
|
---|
695 | {
|
---|
696 | $co="'";
|
---|
697 | $cont='<form id="form1" name="form1" method="post" action="">
|
---|
698 | <tr class="acc">
|
---|
699 | <th scope="row" class="acc">'.$text["name"].'</th>
|
---|
700 | <td class="acc" scope="col"><input type="text" name="username" /> </td>
|
---|
701 | </tr>
|
---|
702 | <tr class="acc">
|
---|
703 | <th scope="row" class="acc">'.$text["password"].'</th>
|
---|
704 | <td class="acc"><input name="passw" type="password" id="passw"/></td>
|
---|
705 | </tr>
|
---|
706 | <tr class="acc">
|
---|
707 | <th scope="row" class="acc">'.$text["seccode"].'</th>
|
---|
708 | <td class="acc"><IMG src="captcha.php"></td>
|
---|
709 | </tr>
|
---|
710 | <tr class="acc">
|
---|
711 | <th scope="row" class="acc">'.$text["seccode2"].'</th>
|
---|
712 | <td class="acc"><input name="txtNumber" type="text" id="txtNumber" size="5" maxlength="5" /></td>
|
---|
713 | </tr>
|
---|
714 | <tr class="acc">
|
---|
715 | <th scope="row" class="acc">E-Mail :</th>
|
---|
716 | <td class="acc"><input name="email" type="text" id="email" /></td>
|
---|
717 | </tr>
|
---|
718 | <tr class="acc">
|
---|
719 | <th scope="row" class="acc">'.$text["expension"].'</th>
|
---|
720 | <td class="acc"><input name="tbc" type="checkbox" id="tbc" value="1" checked/></td>
|
---|
721 | </tr>
|
---|
722 | <tr class="acc">
|
---|
723 | <th scope="row" class="acc"> </th>
|
---|
724 | <td class="acc"><form id="form2" name="form2" method="post" action="">
|
---|
725 | <input type="submit" name="Submit" value="Submit" />
|
---|
726 | </form>
|
---|
727 | ';
|
---|
728 | }
|
---|
729 | elseif (empty($_POST['username']) or empty($_POST['passw']) or empty($_POST['email']))
|
---|
730 | {
|
---|
731 |
|
---|
732 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["not_all"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
733 |
|
---|
734 | }
|
---|
735 | elseif (check_for_symbols($_POST['username'])==TRUE or check_for_symbols($_POST['passw'])==TRUE){
|
---|
736 |
|
---|
737 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["not_simbol"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
738 |
|
---|
739 | }
|
---|
740 | else
|
---|
741 | {
|
---|
742 | $username = htmlspecialchars(trim("$_POST[username]"));
|
---|
743 | $passw = trim($_POST['passw']);
|
---|
744 | $email = htmlspecialchars(trim($_POST['email']));
|
---|
745 | $tbc = $_POST['tbc'];
|
---|
746 | $ip = getenv('REMOTE_ADDR');
|
---|
747 | $realm_db = new DBLayer($hostr, $userr, $passwordr, $dbr);
|
---|
748 | $realm_db->query("SET NAMES $database_encoding");
|
---|
749 | $ip_cr=0;
|
---|
750 | if ($lock_reg!=0){
|
---|
751 | $query = $realm_db->query("SELECT `last_ip` FROM `account` WHERE `last_ip`='$ip'");
|
---|
752 | while($result = $realm_db->fetch_assoc($query)) $ip_cr++;
|
---|
753 | }
|
---|
754 | if (!check_email_address($_POST['email'])) {
|
---|
755 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["email"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
756 | } else {
|
---|
757 | session_start();
|
---|
758 | $number = strtoupper($_POST['txtNumber']);
|
---|
759 | if (md5($number) != $_SESSION['image_random_value']) {
|
---|
760 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["key"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
761 | } else {
|
---|
762 | if (($ip_cr>=$lock_reg) && ($lock_reg!=0)) {
|
---|
763 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["ip_limit"][0].$ip.'<br>'.$ip_cr.$text["ip_limit"][1].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
764 | } else {
|
---|
765 | $sha=sha_password($username,$passw);
|
---|
766 | if($tbc==1) {
|
---|
767 | if($realm_db->query("INSERT INTO `account` (`username`,`sha_pass_hash`,`email`,`last_ip`,`locked`,`tbc`) VALUES ('$username','$sha','$email','$ip','$lock_acc','$tbc')")) {
|
---|
768 | $realm_db->query("UPDATE `account` SET `password`='$passw' WHERE `username`='$username'");
|
---|
769 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL>'.$text["acc"].'<br><strong>'.$username.'</strong><br>'.$text["create"].'</SMALL></TD></TD></TR>';
|
---|
770 | } else {
|
---|
771 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["acc"].'<br><strong>'.$username.'</strong><br>'.$text["failed"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
772 | }
|
---|
773 | } else {
|
---|
774 | if($realm_db->query("INSERT INTO `account` (`username`,`sha_pass_hash`,`email`,`last_ip`,`locked`) VALUES ('$username','$sha','$email','$ip','$lock_acc')")) {
|
---|
775 | $realm_db->query("UPDATE `account` SET `password`='$passw' WHERE `username`='$username'");
|
---|
776 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL>'.$text["acc"].'<br><strong>'.$username.'</strong><br>'.$text["create"].'</SMALL></TD></TD></TR>';
|
---|
777 | } else {
|
---|
778 | $cont='<TR><TD rowSpan=6><IMG height=152 width=1 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>'.$text["acc"].'<br><strong>'.$username.'</strong><br>'.$text["failed"].'<br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
|
---|
779 | }
|
---|
780 | }
|
---|
781 | }
|
---|
782 | }
|
---|
783 | }
|
---|
784 | $realm_db->close();
|
---|
785 | unset($realm_db);
|
---|
786 | }
|
---|
787 | $dbrev=get_db_rev();
|
---|
788 |
|
---|
789 | if (test_realm())
|
---|
790 | {
|
---|
791 | $title.=(' ('.$onlineplayers.' '.$text["playerson"].')');
|
---|
792 | $status = "<img alt=Online src='".$img_base."online.png' height='24' width='24'>";
|
---|
793 | } else
|
---|
794 | {
|
---|
795 | $title.=(' '.$text["off"] );
|
---|
796 | $status = "<img alt=Offline src='".$img_base."offline.png' height='24' width='24'>";
|
---|
797 | }
|
---|
798 | ?>
|
---|