Форум: "Игры";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизКак сделать игровой сервак на php для delphi online игр Найти похожие ветки
← →
Dr.Nemo (2005-07-28 23:19) [0]Как сделать игровой сервак на php для delphi online игр
← →
MeF Dei Corvi © (2005-07-29 02:41) [1]что ты подразумеваешь под игровым серваком? или какого жанра будет online игра?
← →
Xeno © (2005-07-29 05:55) [2]А зачем именно на php может проще на perl"е,и работать в разы быстрее будет?!
← →
cyborg © (2005-07-29 07:51) [3]У XProgera на сайте я видел небольшую статью.
← →
XProger © (2005-07-29 16:25) [4]http://xproger.mirg.ru/?id=1&doc=arena
← →
Dr.Nemo (2005-07-29 16:39) [5]Нет ребята там я тоже был но там он с ошибками
← →
Dr.Nemo (2005-07-29 16:40) [6]Если кто знает то найдите ошибку
<?php
//В этом файле будет храниться список активных серверов
$list_file = "db/arena_list.txt";
// Узнаём IP адрес отправителя запроса
$ip = $_SERVER["REMOTE_ADDR"];
// Читаем номер порта из запроса
$port = intval($_REQUEST["port"]);
// Это от хитрых кулхацкеров ;)
if (!($port >= 1024 && $port <= 65500))
$port = 25666;
// Читаем файл-список
$lst = file($list_file);
// В переменной $time теперь хранится текущее время
$time = time();
$j = -1;
$i = 0;
// Удаляем “мертвецов” и попутно ищем адрес отправителя в этом списке
while ($i < count($lst)) {
$lst[$i] = trim($lst[$i]);
list($l_ip, $l_port, $l_time) = explode(":", $lst[$i]);
// Если время с предыдущего пинга превысило 45 секунд – его явно уже нет
if ($l_time < ($time - 45)) {
for ($t = $i; $t < count($lst) - 1; $t++)
$lst[$t] = $lst[$t + 1];
unset($lst[count($lst) - 1]);
continue;
}
if ($l_ip == $ip) $j = $i;
$i++;
}
// Обработка запроса
switch ($mode) {
case "view":
for ($i = 0; $i < Count($lst); $i++) {
// Вывод очередного IP:Port из списка
list($l_ip, $l_port, $l_time) = explode(":", $lst[$i]);
echo $l_ip.":".$l_port." ";
}
break;
case "ping":
if ($j == -1)
// Если пингуется впервые, значит новый сервер - добавляем
array_push($lst, $ip.":".$port.":".$time);
else {
// Обновляем информацию для сервера
// Заметьте, что при смене порта на сервере на арене он тоже изменится
list($l_ip, $l_port, $l_time) = explode(":", $lst[$j]);
$lst[$j] = $l_ip.":".$port.":".$time;
}
break;
}
// Обновляем список серверов в файле-списке
$f = fopen($list_file, "a+");
flock($f, LOCK_EX);
ftruncate($f, 0);
for ($i = 0; $i < count($lst); $i++)
fwrite($f, $lst[$i]."\n");
fflush($f);
flock($f, LOCK_UN);
fclose($f);
?>
← →
Dr.Nemo (2005-07-29 16:41) [7]моя АСЯ 288618804
← →
XProger © (2005-07-29 17:33) [8]В ДНК твоя ошибка, сервер рабочий!
← →
Dr.Nemo (2005-07-30 13:51) [9]но он не работает нечего нехочет записывать когда к ниму приходит запрос пинг!
← →
Dr.Nemo (2005-07-30 13:54) [10]Где ОШИБКА?
← →
Dr.Livsi (2005-07-30 15:43) [11]Да мне тоже выдаёт ошибку при отправке вот такого запроса на сервак http://host/arena.php?mode=ping&port=25666
ошибка вот такая
Notice: Undefined index: port in y:\home\igra\www\arena.php on line 7
Notice: Undefined variable: mode in y:\home\igra\www\arena.php on line 33
← →
Dr.Livsi (2005-07-30 15:44) [12]XProger © скажи где ошибка!
← →
PAVIA © (2005-07-30 16:22) [13]В сервере ошибок нет. Notice- это вобщето придупреждение а не ошибка.
Если ты делаешь запрос как ты написал http://host/arena.php?mode=ping&port=25666 ,то ошибок недолжно быть.
← →
MeF Dei Corvi © (2005-07-30 17:07) [14]
> Да мне тоже выдаёт ошибку при отправке вот такого запроса
>
Возможно, что на используемом хостинге выключена опция, при включении которой все переменные передаваемые в запросе автоматически присваиваются соответствующим переменным скрипта.
← →
XProger © (2005-07-30 19:14) [15]
$mode = $_REQUEST["mode"];
для таких случаев ;)
← →
Dr.Nemo (2005-08-01 14:56) [16]спасибо
← →
Dr.Nemo (2005-08-01 16:25) [17]при тправке такого запроса нечего не приходит
http://igra/arena.php?mode=view
← →
Dr.Nemo (2005-08-01 16:25) [18]при отправке такого запроса нечего не приходит
http://igra/arena.php?mode=view
← →
Dr.Nemo (2005-08-01 16:34) [19]при отправке такого запроса нечего не приходит
http://igra/arena.php?mode=view
при этом список серверов стирается
← →
Ландграф Павел © (2005-08-01 20:52) [20]учи блин php...
← →
XProger © (2005-08-01 21:12) [21]Dr.Nemo, файл создал? запись разрешил? Таймаут в скрипте выставил?
← →
cyborg © (2005-08-01 21:43) [22]
> [20] Ландграф Павел © (01.08.05 20:52)
прально!
рнр как паскаль, только с гавёным сишным синтаксисом :)
← →
XProger © (2005-08-01 21:46) [23]cyborg, и с преобладанием гавёных вариантных типов! ;)
← →
Dr.Nemo (2005-08-01 22:30) [24]у меня всё пишется пример
127.78.0.1:25666:1122987845
127.0.0.1:25666:1122919458
но при посылке виеф сервер только материться!
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.013 c