Файл: map.php
Строк: 343
<?php
require 'sys/sid.php';
require 'sys/config.php';
include 'sys/user.php';
include 'sys/head.php';
include 'sys/navigator.php';
$do = isset($_GET['do']) ? $_GET['do'] : NULL;
switch($do)
{
default:
if (isset($_GET['go'])) msg('Легион отправился в поход.');
$legion = isset($_GET['legion']) ? number($_GET['legion']) : NULL;
$x = intval($_REQUEST['x']);
$y = intval($_REQUEST['y']);
$radius = number($_REQUEST['radius']);
if (!isset($radius) || $radius == 0) $radius = 2;
if ($x == 0 && $y == 0)
{
$x = $user['coor_x'];
$y = $user['coor_y'];
}
if ($radius < 2) $radius = 2;
if ($radius > 7) $radius = 7;
if ($x > 100 - $radius) $x = 100 - $radius;
if ($x < -100 + $radius) $x = -100 + $radius;
if ($y > 100 - $radius) $y = 100 - $radius;
if ($y < -100 + $radius) $y = -100 + $radius;
$pos = mysql_query("SELECT * FROM location WHERE x >= '" . ($x - $radius) . "' AND x <= '" . ($x + $radius) . "' AND y >= '" . ($y - $radius) . "' AND y <= '" . ($y + $radius) . "' ORDER BY y DESC, x ASC");
echo '<a href="location'.$user['coor_x'].'_'.$user['coor_y'].'_'.$radius.'"><u>['.$user['coor_x'].';'.$user['coor_y'].'] к замку</u></a><br/>';
echo ' <div class="head">Все империи</div>';
$sql = mysql_result(mysql_query("SELECT COUNT(*) FROM location"), 0);
if ($sql != 0) {
$n = new navigator($sql, $user['nmsg'], '/map.php?&');
$select = mysql_query("SELECT * FROM location ORDER BY time DESC {$n->limit}");
echo $n->navi() . separator;
while($q = mysql_fetch_assoc($select)) {
echo'<a href="environ'.$q["id"].'"><img src="/images/city.png" width="50" height="50" alt=""/>Кардинаты : '.$q["x"].'_'.$q["y"].'</a><br>';
} }
echo ' <div class="head">Поиск по кардинатам</div>';
echo' <table cellspacing="0" cellpadding="0">
<tr>';
$diameter = $radius * 2 + 1;
$counter = 0;
$counter2 = 0;
while($position = mysql_fetch_assoc($pos))
{
$counter++;
$counter2++;
echo '<td>
<a href="environ'.$position['id'].'">
<img src="images/map/'.$position['pic'].'" alt="" title="'.($position['id_player'] != 0 ? 'Замок ' . user($position['id_player'], 'nick') . ', ' . (user($position['id_player'], 'race') == 1 ? 'Люди' : 'Некроманты') : '.').'"/></a>
</td>';
if ($counter == $diameter && $counter2 != $diameter * $diameter)
{
echo '</tr><tr>';
$counter = 0;
}
}
echo '</tr></table>';
echo '[' . $x . ';' . $y . ']
<table>
<tr>
<td>
<table cellspacing="0" cellpadding="0">
<tr>
<td>
</td>
<td>
<a href="location'.$x.'_'.($y + $radius).'_'.$radius.'"><img src="images/arrow_up.png" alt=""/></a>
</td>
<td>
</td>
</tr>
<tr>
<td>
<a href="location'.($x - $radius).'_'.$y.'_'.$radius.'"><img src="images/arrow_left.png" alt=""/></a>
</td>
<td>
</td>
<td>
<a href="location'.($x + $radius).'_'.$y.'_'.$radius.'"><img src="images/arrow_right.png" alt=""/></a>
</td>
</tr>
<tr>
<td>
</td>
<td>
<a href="location'.$x.'_'.($y - $radius).'_'.$radius.'"><img src="images/arrow_down.png" alt=""/></a>
</td>
<td>
</td>
</tr>
</table>
<td align="left">
Перейти к:<br/>
<form method="post" action="map.php">
x: <input type="text" name="x" size="3" maxlength="3" value="'.$x.'"/>
y: <input type="text" name="y" size="3" maxlength="3" value="'.$y.'"/>
<br/>
<img src="images/map_size.png" alt=""/>
<input type="text" name="radius" value="'.$radius.'" size="2" maxlength="2"/>
<input type="submit" name="go" value="OK"/>
</form>
</td>
</tr>
</table>
' . separator . '
<b>Метки на карте:</b>
<br/>';
$points = mysql_query("SELECT t1.uid AS u, t2.x AS x, t2.y AS y, t2.id_player AS pl, t2.id AS i FROM point_map AS t1 LEFT JOIN location AS t2 ON(t1.uid = t2.id) WHERE t1.player = '$user[id]'");
if (mysql_num_rows($points) != false)
{
while($mark = mysql_fetch_assoc($points))
{
echo '<a href="location'.$mark['x'].'_'.$mark['y'].'_'.$radius.'">['.$mark['x'].';'.$mark['y'].'] '.user($mark['pl'], 'nick').'</a>
<a href="unmark'.$mark['u'].'"><img src="images/logout.png" alt=""/></a><br/>';
}
} else echo 'отсутствуют.';
break;
case environ:
$id = number($_GET['id']);
$control = mysql_query("SELECT * FROM location WHERE id = '$id' LIMIT 1");
$q = mysql_fetch_assoc($control);
if (mysql_num_rows($control) == false)
{
err('Замок не найден!');
}
elseif ($q['id_player'] == 0)
{
err('Местность безлюдна...');
}
else
{
$point = mysql_fetch_assoc(mysql_query("SELECT id FROM point_map WHERE uid = '$id' AND player = '$user[id]' LIMIT 1"));
echo '<img src="images/city.png" alt=""/>
<br/>
['.$q['x'].';'.$q['y'].'] Здесь <a class="war" href="userinfo_'.user($q['id_player'], 'nick').'">' . user($q['id_player'], 'nick') . ' (' . (user($q['id_player']) == 1 ? 'Люди' : 'Некроманты') . ')</a>
<br/>
<img src="images/flag.png" alt=""/> '.(!isset($point['id']) ? '<a style="padding:5px;" href="mark'.$id.'"><u>Отметить на карте</u></a>' : '<a href="unmark'.$id.'"><u>Убрать отметку</u></a>').'
<br/>
' . ($user['id'] != $q['id_player']
?
'<div style="padding:3px;"><img src="images/unit_action_6.png" alt=""/> <a href="run'.$id.'"><u>Отправить войска</u></a></div>
<div style="padding:3px;"><img src="images/shpion.png" alt=""/> <a href="go_scout'.$id.'"><u>Отправить шпиона</u></a></div>
<div style="padding:3px;"><img src="images/sab.png" alt=""/> <a href="go_saboteur'.$id.'"><u>Отправить саботажника</u></a></div>
<div style="padding:3px;"><img src="images/recruit.png" alt=""/> <a href="go_recruiter'.$id.'"><u>Отправить вербовщика</u></a></div>
<div style="padding:3px;"><img src="images/coin.png" alt=""/> <a href="go_dealers'.$id.'"><u>Отправить торговцев</u></a></div>'
: '') . '
<br/><a href="map.php">Вернуться</a>';
}
break;
case go_saboteur:
$id_sc = mysql_query("SELECT * FROM saboteurs WHERE player = '$user[id]' AND timeleft < '$rtime' LIMIT 1");
$in = mysql_fetch_assoc($id_sc);
if (mysql_num_rows($id_sc) == false)
{
err('У тебя нет саботажника!');
include 'sys/foot.php';
exit();
}
if ($in['time_run'] != 0 && $in['time_run'] > $rtime)
{
err('Саботажник сейчас не в замке!');
include 'sys/foot.php';
exit();
}
if ($in['time_back'] != 0 && $in['time_back'] > $rtime)
{
err('Саботажник сейчас возвращается домой!');
include 'sys/foot.php';
exit();
}
if (isset($_GET['id']))
{
$id = number($_GET['id']);
if (mysql_num_rows(mysql_query("SELECT id FROM location WHERE id = '$id' LIMIT 1")) == false)
{
err('Местность не найдена...');
include 'sys/foot.php';
exit();
}
$COOR = mysql_fetch_assoc(mysql_query("SELECT x, y FROM location WHERE id = '$id' LIMIT 1"));
}
if (isset($_POST['forward']))
{
$x = char($_POST['x'], 0);
$y = char($_POST['y'], 0);
$intent = char($_POST['intent'], 0);
$ctrl = mysql_fetch_assoc(mysql_query("SELECT id, id_player FROM location WHERE x = '$x' AND y = '$y' LIMIT 1"));
if ($x < -98 || $x > 98 || $y < -98 || $y > 98)
{
err('Неверные координаты!');
}
elseif ($ctrl['id_player'] == 0)
{
err('На этой местности ничего нет!');
}
elseif ($x == $user['coor_x'] && $y == $user['coor_y'])
{
err('Ты и так на этой местности!');
}
else
{
$arrival = travel_time(10 * ($user['race'] == 1 ? 35 : 25), $user['coor_x'], $user['coor_y'], $x, $y);
mysql_query("UPDATE saboteurs SET
destination = '$ctrl[id]',
time_run = '" . ($rtime + $arrival) . "',
time_back = '0',
intent = '$intent'
WHERE player = '$user[id]' LIMIT 1");
msg('Саботажник отправился.');
}
}
echo '<form method="post" action="go_saboteur'.$id.'">
Координаты:
<br/>
x: <input type="text" readonly="readonly" name="x" maxlength="3" size="3" value="' . $COOR['x'] . '"/>
y: <input type="text" readonly="readonly" name="y" maxlength="3" size="3" value="' . $COOR['y'] . '"/>
<br/>
Цель:
<br/>
<select name="intent">
<option value="1">Бунт в замке</option>
<option value="2">Разрушение зданий</option>
</select>
<br/>
<input type="submit" name="forward" value="Отправить"/>
</form>
<a href="environ'.$id.'">Вернуться</a>';
break;
case go_scout:
$id_sc = mysql_query("SELECT * FROM scouts WHERE player = '$user[id]' AND timeleft < '$rtime' LIMIT 1");
$in = mysql_fetch_assoc($id_sc);
if (mysql_num_rows($id_sc) == false)
{
err('У тебя нет шпиона!');
include 'sys/foot.php';
exit();
}
if ($in['time_run'] != 0 && $in['time_run'] > $rtime)
{
err('Шпион сейчас не в замке!');
include 'sys/foot.php';
exit();
}
if ($in['time_back'] != 0 && $in['time_back'] > $rtime)
{
err('Шпион сейчас возвращается домой!');
include 'sys/foot.php';
exit();
}
if (isset($_GET['id']))
{
$id = number($_GET['id']);
if (mysql_num_rows(mysql_query("SELECT id FROM location WHERE id = '$id' LIMIT 1")) == false)
{
err('Местность не найдена...');
include 'sys/foot.php';
exit();
}
$COOR = mysql_fetch_assoc(mysql_query("SELECT x, y FROM location WHERE id = '$id' LIMIT 1"));
}
if (isset($_POST['forward']))
{
$x = char($_POST['x'], 0);
$y = char($_POST['y'], 0);
$intent = char($_POST['intent'], 0);
$ctrl = mysql_fetch_assoc(mysql_query("SELECT id, id_player FROM location WHERE x = '$x' AND y = '$y' LIMIT 1"));
if ($x < -98 || $x > 98 || $y < -98 || $y > 98)
{
err('Неверные координаты!');
}
elseif ($ctrl['id_player'] == 0)
{
err('На этой местности ничего нет!');
}
elseif ($x == $user['coor_x'] && $y == $user['coor_y'])
{
err('Ты и так на этой местности!');
}
else
{
$arrival = travel_time(10 * ($user['race'] == 1 ? 35 : 25), $user['coor_x'], $user['coor_y'], $x, $y);
mysql_query("UPDATE scouts SET
destination = '$ctrl[id]',
time_run = '" . ($rtime + $arrival) . "',
time_back = '0'
WHERE player = '$user[id]' LIMIT 1");
msg('Шпион отправился.');
}
}
echo '<form method="post" action="go_scout'.$id.'">
Координаты:
<br/>
x: <input type="text" readonly="readonly" name="x" maxlength="3" size="3" value="' . $COOR['x'] . '"/>
y: <input type="text" readonly="readonly" name="y" maxlength="3" size="3" value="' . $COOR['y'] . '"/>
<br/>
<input type="submit" name="forward" value="Отправить"/>
</form>
<a href="environ'.$id.'">Вернуться</a>';
break;
case go_recruiter:
$id_sc = mysql_query("SELECT * FROM recruiters WHERE player = '$user[id]' AND timeleft < '$rtime' LIMIT 1");
$in = mysql_fetch_assoc($id_sc);
if (mysql_num_rows($id_sc) == false)
{
err('У тебя нет вербовщика!');
include 'sys/foot.php';
exit();
}
if ($in['time_run'] != 0 && $in['time_run'] > $rtime)
{
err('Вербовщик сейчас не в замке!');
include 'sys/foot.php';
exit();
}
if ($in['time_back'] != 0 && $in['time_back'] > $rtime)
{
err('Вербовщик сейчас возвращается домой!');
include 'sys/foot.php';
exit();
}
if (isset($_GET['id']))
{
$id = number($_GET['id']);
if (mysql_num_rows(mysql_query("SELECT id FROM location WHERE id = '$id' LIMIT 1")) == false)
{
err('Местность не найдена...');
include 'sys/foot.php';
exit();
}
$COOR = mysql_fetch_assoc(mysql_query("SELECT x, y FROM location WHERE id = '$id' LIMIT 1"));
}
if (isset($_POST['forward']))
{
$x = char($_POST['x'], 0);
$y = char($_POST['y'], 0);
$ctrl = mysql_fetch_assoc(mysql_query("SELECT id, id_player FROM location WHERE x = '$x' AND y = '$y' LIMIT 1"));
if ($x < -98 || $x > 98 || $y < -98 || $y > 98)
{
err('Неверные координаты!');
}
elseif ($ctrl['id_player'] == 0)
{
err('На этой местности ничего нет!');
}
elseif ($x == $user['coor_x'] && $y == $user['coor_y'])
{
err('Ты и так на этой местности!');
}
else
{
$arrival = travel_time(10 * ($user['race'] == 1 ? 50 : 40), $user['coor_x'], $user['coor_y'], $x, $y);
mysql_query("UPDATE recruiters SET
destination = '$ctrl[id]',
time_run = '" . ($rtime + $arrival) . "',
time_back = '0'
WHERE player = '$user[id]' LIMIT 1");
msg('Вербовщик отправился.');
}
}
echo '<form method="post" action="go_recruiter'.$id.'">
Координаты:<br/>
x: <input type="text" readonly="readonly" name="x" maxlength="3" size="3" value="' . $COOR['x'] . '"/>
y: <input type="text" readonly="readonly" name="y" maxlength="3" size="3" value="' . $COOR['y'] . '"/>
<br/>
<input type="submit" name="forward" value="Отправить"/>
</form>
<a href="environ'.$id.'">Вернуться</a>';
break;
case transmint:
$cr = mysql_query("SELECT * FROM rialto WHERE player = '$user[id]' AND timeleft < '$rtime' LIMIT 1");
$cargo = mysql_fetch_assoc($cr);
$cap_level = mysql_fetch_assoc(mysql_query("SELECT level FROM construct WHERE cid = '7' AND timeleft < '$rtime' AND user = '$user[id]' LIMIT 1"));
$cap = ($user['race'] == 1) ? round(15 * $cap_level['level'] / 2) : round(25 * $cap_level['level'] / 2);
$bag = $cap * $cargo['dealer'];
if (isset($_POST['forward']))
{
$x = char($_POST['x'], 0);
$y = char($_POST['y'], 0);
$res = char($_POST['res'], 0);
$N = number($_POST['N']);
$ctrl = mysql_fetch_assoc(mysql_query("SELECT id, id_player FROM location WHERE x = '$x' AND y = '$y' LIMIT 1"));
if (mysql_num_rows($cr) == false)
{
err('У тебя нет свободных торговцев!');
}
elseif ($cargo['time_run'] > $rtime)
{
err('Торговцы в настоящее время в походе!');
}
elseif ($cargo['time_back'] > $rtime)
{
err('Торговцы возвращаются домой!');
}
elseif (empty($N))
{
err('Необходимо ввести кол-во!');
}
elseif ($N > $bag)
{
err('Торговцы не унесут столько!');
}
elseif ($N > $user[$res])
{
err('Нехватает данного ресурса!');
}
elseif ($N > $user[$res])
{
err('Нехватает данного ресурса!');
}
elseif ($x < -98 || $x > 98 || $y < -98 || $y > 98)
{
err('Неверные координаты!');
}
elseif ($ctrl['id_player'] == 0)
{
err('На этой местности ничего нет!');
}
elseif ($x == $user['coor_x'] && $y == $user['coor_y'])
{
err('Ты и так на этой местности!');
}
else
{
$arrival = travel_time(10 * ($user['race'] == 1 ? 35 : 20), $user['coor_x'], $user['coor_y'], $x, $y);
mysql_query("UPDATE rialto SET
resource = '$res',
destination_dealer = '$ctrl[id]',
goods = '$N',
time_run = '" . ($rtime + $arrival) . "',
time_back = '0'
WHERE player = '$user[id]' LIMIT 1");
mysql_query("UPDATE users SET $res = $res - '$N' WHERE id = '$user[id]' LIMIT 1");
msg('Торговцы отправились.');
}
}
if (isset($_GET['id']))
{
$id = number($_GET['id']);
if (mysql_num_rows(mysql_query("SELECT id FROM location WHERE id = '$id' LIMIT 1")) == false)
{
err('Местность не найдена...');
include 'sys/foot.php';
exit();
}
$COOR = mysql_fetch_assoc(mysql_query("SELECT x, y FROM location WHERE id = '$id' LIMIT 1"));
}
echo '<form method="post" action="go_dealers'.$id.'">
Координаты:<br/>
x: <input type="text" readonly="readonly" name="x" maxlength="3" size="3" value="'.$COOR['x'].'"/>
y: <input type="text" readonly="readonly" name="y" maxlength="3" size="3" value="'.$COOR['y'].'"/>
<br/>
Передаваемый ресурс:<br/>
<select name="res">
<option value="food">Еда</option>
<option value="tree">Дерево</option>
<option value="stone">Камень</option>
<option value="ore">Руда</option>
<option value="gold">Золото</option>
</select>
<br/>
Количество: (макс. ' . $bag . ' ед.)<br/>
<input type="text" name="N" size="5" maxlength="5"/>
<br/>
<input type="submit" name="forward" value="Отправить"/>
</form>
<a href="environ'.$id.'">Вернуться</a>';
break;
case run:
$id = number($_GET['id']);
$control = mysql_query("SELECT id, id_player, x ,y FROM location WHERE id = '$id' LIMIT 1");
$me_house = mysql_fetch_assoc(mysql_query("SELECT id FROM location WHERE id_player = '$user[id]' LIMIT 1"));
$q = mysql_fetch_assoc($control);
if (mysql_num_rows($control) == false)
{
err('Местность не найдена!');
}
elseif ($q['id_player'] == $user['id'])
{
err('Ты не можешь атаковать свой замок!');
}
elseif (user($q['id_player'], 'untouch') > $rtime)
{
err('Этот замок под защитой!');
}
elseif (user($q['id_player'], 'ban') > $rtime || user($q['id_player'], 'forever') == 1)
{
err('Игрок арестован, атака невозможна.');
}
elseif ($q['id_player'] == 0)
{
err('На этой местности ничего нет!');
}
else
{
if (isset($_POST['attack']))
{
$army = number($_POST['army']);
$SPEED = mysql_fetch_assoc(mysql_query("SELECT speed FROM duty WHERE user = '$user[id]' AND id = '$army' AND timeleft < '$rtime' LIMIT 1"));
$arrival = travel_time(10 * $SPEED['speed'], $user['coor_x'], $user['coor_y'], $q['x'], $q['y']);
$time_of_arrival = val($arrival);
echo 'Время пути: <img src="images/time.png" alt=""/> ' . $time_of_arrival . '<br/>
Продолжить?
<form method="post" action="run'.$id.'">
<input type="hidden" name="army" value="'.$army.'"/>
<input type="submit" name="verification" value="Да"/>
</form>';
}
if (isset($_POST['verification']))
{
$army = number($_POST['army']);
$gen = mysql_query("SELECT id, health FROM generals WHERE cid = '$army' LIMIT 1");
$gn = mysql_fetch_assoc($gen);
if (mysql_num_rows($gen) == false)
{
err('Легион не может отправится без генерала!');
}
elseif ($gn['health'] == 0)
{
err('Генерал мертв, легион не может отправится!');
}
elseif ($gn['time_recovery'] != 0)
{
err('Генерал этого легиона восстанавливается, легион не может отправится!');
}
elseif (!isset($army))
{
err('Легион не выбран!');
}
else
{
$TimeDest = mysql_fetch_assoc(mysql_query("SELECT * FROM duty WHERE user = '$user[id]' AND id = '$army' AND timeleft < '$rtime' LIMIT 1"));
if ($TimeDest['time_run'] > $rtime || $TimeDest['time_back'] > $rtime)
{
err('Легион не может отправляться, он уже в пути!');
}
elseif ($TimeDest['security'] == 1)
{
err('Этот легион охраняет замок, он не может никуда отправиться!');
}
else
{
mysql_query("UPDATE users SET terrain = '$id' WHERE id = '$user[id]' LIMIT 1");
$arrival = travel_time(10 * $TimeDest['speed'], $user['coor_x'], $user['coor_y'], $q['x'], $q['y']);
mysql_query("UPDATE duty SET time_run = '" . ($rtime + $arrival) . "', time_back = '0' WHERE user = '$user[id]' AND id = '$army' LIMIT 1");
msg('Армия отправилась в поход.');
}
}
}
$my_arm = mysql_query("SELECT * FROM duty WHERE user = '$user[id]' AND timeleft < '$rtime' AND time_run = '0' AND time_back < '$rtime'");
if (!isset($_POST['attack']))
{
if (mysql_num_rows($my_arm) != false)
{
echo 'Выбери армию:
<form method="post" action="run'.$id.'">
<select name="army">';
while($a = mysql_fetch_assoc($my_arm))
{
echo '<option value="'.$a['id'].'">' . $a['name'] . '</option>';
}
echo '</select>
<br/>
<input type="submit" name="attack" value="Отправить"/>
</form>';
} else {
if (!isset($_POST['verification'])) echo 'У тебя нет войск!<br/>';
}
}
echo '<a href="environ'.$id.'">Вернуться</a>';
}
break;
case point:
$id = number($_GET['id']);
$control = mysql_query("SELECT id FROM location WHERE id = '$id' AND id_player != '0' LIMIT 1");
$double = mysql_query("SELECT id FROM point_map WHERE uid = '$id' AND player = '$user[id]' LIMIT 1");
if (mysql_num_rows($control) == false)
{
err('Ошибка! Местность не опознана.');
}
elseif (!isset($_GET['delete']) && mysql_num_rows($double) != false)
{
err('У тебя уже есть эта отметка!');
}
elseif (!isset($_GET['delete']))
{
mysql_query("INSERT INTO point_map SET uid = '$id', player = '$user[id]'");
header('location: map.php');
}
else
{
mysql_query("DELETE FROM point_map WHERE uid = '$id' AND player = '$user[id]' LIMIT 1");
header('location: map.php');
}
break;
}
include 'sys/foot.php';
?>