Имеется мониторинг (приложила скриншот).
Задумка такая: справа в столбике - зарегистрированые пользователи, слева - игроки, которые в данный момент играют на сервере.
Цель чтобы при совпадении Ника пользователя сайта с ником одного из играющих - статус пользователя менялся.
Например. Мой ник Mia, я под ним зарегистрирована и под ним же вошла в игру - ник в правой колонке засветился зелёным.
Теперь суть проблемы (Мониторинг LGSL):
По переменной $player['name'] из кэша, находящегося в БД в строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia
Сама переменная создаётся кодом:
foreach ($server['p'] as $player_key => $player)
{}
Для того чтобы проверять есть ли такой же ник среди зарегистрированых есть следующая функция:
if (strpos($player['name'], $array['nickname']) !== FALSE){
echo"В игре";
}
Проблема заключается в том, что в правой колонке со статусом "В игре" отображается только один игрок - тот, который на последнем месте по счёту. На скриншоте я последняя и отображаюсь как "В игре", но игрок с ником roma4444 также присутствует на сервере, но он отображается как "Вне системы"
Подскажите пожалуйста как сделать так, чтобы сканировался не только последний ник, а все :)
Спустя 20 минут, 11 секунд (24.07.2012 - 22:48) rooor написал(а):
могу предположить, что проверка проходит по последнему ключу $array['nickname'], поэтому надо перебрать этот массив
foreach($array['nickname'] as $v)
{
if (strpos($player['name'], $v) !== FALSE){
echo"В игре";
}
}
Спустя 8 минут, 8 секунд (24.07.2012 - 22:56) Ром@шка написал(а):
Именно так и происходит. скорее наоборот по name т.к. он в кэше
Спустя 2 минуты, 4 секунды (24.07.2012 - 22:58) rooor написал(а):
а можно показать весь код проверки, а не кусками?
Спустя 3 минуты, 17 секунд (24.07.2012 - 23:02) kamanch написал(а):
Цитата |
строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia |
Мне вот это вообще вот так

Это движек какой-то, и там такая реализация, или же это ты так сама сделала?
Зачем усложнять себе задачу, загоняя данные в строку, а потом эту строку обратно парсить?
Список ников сразу в массив, и его уже проходить поэлемнетно
Спустя 5 минут, 44 секунды (24.07.2012 - 23:07) Ром@шка написал(а):
это движок
Спустя 3 минуты, 27 секунд (24.07.2012 - 23:11) Ром@шка написал(а):
Содержимое details.php
Содержимое index.php
//-------------------------------------------------------------------------------------------------- ----------+
// SHOW THE PLAYERS
$output .= "
<div style='margin:auto; overflow:auto; text-align:left; padding:10px'>";
if (!$server['p'] || !is_array($server['p']))
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto'>
<tr style='".lgsl_bg(FALSE)."'>
<td> {$lgsl_config['text']['npi']} </td>
</tr>
</table>";
}
else
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto;box-shadow: 0px 0px 10px black;'>
<tr style='".lgsl_bg(FALSE)."'>";
//-----------------------------------
foreach ($fields as $field)
{
$field = ucfirst($field);
if ($field == 'Name') { $field = 'Игрок [нажмите на ник для просмотра совпадений]'; }
elseif ($field == 'Ping') { $field = 'Пинг'; }
elseif ($field == 'Score') { $field = 'Фраги'; }
elseif ($field == 'Kills') { $field = 'Убил'; }
elseif ($field == 'Deaths') { $field = 'Умер'; }
elseif ($field == 'Squad') { $field = 'Отряд'; }
elseif ($field == 'Team') { $field = 'Комманда'; }
elseif ($field == 'Time') { $field = 'Время'; }
$output .= "
<td class='forumheader3' style='color:white;text-shadow: 0px 0px 7px;padding:5px'> <b>{$field}</b> </td>";
}
$output .= "
</tr>";
foreach ($server['p'] as $player_key => $player)
{
$output .= "
<tr>";
foreach ($fields as $field)
{
include "plugins/players/bfgc_clanlist.txt";
$output .= "<td style='box-shadow: 0px 0px 2px black;'>{$player[$field]}</td>";
}
$output .= "
</tr>";
}
$output .= "
</table>";
}
$output .= "
</div>";
//-------------------------------------------------------------------------------------------------- ----------+
Содержимое index.php
<?php
include_once("database.php");
$ql = mysql_query("SELECT * FROM users WHERE id='$id'");
$ar = mysql_fetch_array($ql);
$avatar = $ar['avatar'];
$usertype = $ar['usertype'];
//-------------------------------------------------------------------------------------------------- ----------+
global $output, $lgsl_server_id;
$output = "";
$s = isset($_GET['s']) ? $_GET['s'] : "";
if (is_numeric($s)) { $lgsl_server_id = $s; require "monitor/details.php"; }
echo $output;
unset($output);
//-------------------------------------------------------------------------------------------------- ----------+
$timer = time();
$fres = mysql_query("SELECT * FROM users");
$array = mysql_fetch_array($fres);
do{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
if($resTime < 300){
$stat = "playing";
$stat2 = "online";
}else if (strpos($player['name'], $array['nickname']) !== FALSE){
$stat = "online";
}else{
$stat = "offline";
$stat2 = "offline";
}
if($stat == playing){
echo "В сети";
}else if($stat == online){
echo "В игре";
}else{
echo "Вне системы";
}
}
while ($array = mysql_fetch_array($fres));
?>
Спустя 6 минут, 50 секунд (24.07.2012 - 23:18) rooor написал(а):
if($stat == playing){
echo "В сети";
}else if($stat == online){
так и должно быть? playing и online константы?
ЗЫ: не нашёл здесь кода из первого поста
Спустя 4 минуты, 25 секунд (24.07.2012 - 23:22) Ром@шка написал(а):
код из 1-го поста разбросан по 2-м файлам.
1-я часть в details.php
2-я часть в index.php
playing и online константы да. так и должны. playing отвечает за то что пользователь на сайте, а онлайн за то что в игре
1-я часть в details.php
2-я часть в index.php
playing и online константы да. так и должны. playing отвечает за то что пользователь на сайте, а онлайн за то что в игре
Спустя 6 минут, 15 секунд (24.07.2012 - 23:28) rooor написал(а):
$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_array($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
elseif (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}
if($stat == playing)
{
echo "В сети";
}
elseif($stat == online)
{
echo "В игре";
}
else
{
echo "Вне системы";
}
}
Спустя 5 минут, 33 секунды (24.07.2012 - 23:34) Ром@шка написал(а):
а что изменится?)) Просто чтобы я потом не тупила. вижу появился while
Спустя 2 минуты, 52 секунды (24.07.2012 - 23:37) rooor написал(а):
может сначала попробуешь код применить который я дал?
а дальше уже поговорим)
а дальше уже поговорим)
Спустя 5 минут, 24 секунды (24.07.2012 - 23:42) rooor написал(а):
Цитата |
Просто чтобы я потом не тупила. вижу появился while |
он там и был, посмотри внимательней))
вот тут ты загоняешь в $array последнюю строку запроса
$fres = mysql_query("SELECT * FROM users");
$array = mysql_fetch_array($fres);
и вот что делаешь с ним дальше:
do{
........
}
while ($array = mysql_fetch_array($fres));
UPD: вместо mysql_fetch_array используй mysql_fetch_assoc
Спустя 6 минут, 24 секунды (24.07.2012 - 23:49) Ром@шка написал(а):
неа. то же самое. ищет только по последнему ключу
Спустя 3 минуты, 49 секунд (24.07.2012 - 23:52) rooor написал(а):
Что мне тут не нравится.... если $stat = "playing";
то может и проверять надо if($stat == "playing") ?
то может и проверять надо if($stat == "playing") ?
Спустя 5 минут, 10 секунд (24.07.2012 - 23:58) Ром@шка написал(а):
с этим всё в порядке. ничего не изменилось
Спустя 2 минуты, 29 секунд (25.07.2012 - 00:00) Ром@шка написал(а):
Суть проблемы в другом. foreach - делает копию массива, но как сделать связку грубо говоря "Если в этой копии есть такой же ник как на сайте, то подсвечивать ник на сайте как онлайн"
т.к. в данный момент идёт такая фигня: "Если последний ник из этой копии совпадает с одним из ников на сайте, то подсвечивать этот один ник на сайте как онлайн"
А копией массива как раз и является вот это:
т.к. в данный момент идёт такая фигня: "Если последний ник из этой копии совпадает с одним из ников на сайте, то подсвечивать этот один ник на сайте как онлайн"
А копией массива как раз и является вот это:
Цитата |
По переменной $player['name'] из кэша, находящегося в БД в строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia |
Спустя 1 минута, 50 секунд (25.07.2012 - 00:02) rooor написал(а):

покажи как сейчас выглядит код, который на первой странице
Спустя 50 секунд (25.07.2012 - 00:03) Ром@шка написал(а):
$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}
echo "
<li id='comcenter-2832660339291615977' class='comcenter-friend-item comcenter-friend comcenter-friend-$stat2 ' rel='2832660339291615977'>
<div class='comcenter-friend-draggable'></div>
<div class='comcenter-avatar'>
<div rel='2832660339291615977' class='base-avatar-container base-avatar-size-small'>
<div class='base-avatar-status-overlay base-avatar-status-overlay-$stat'>
<img src='profile/avatars/".$avatar."' width='22' height='22' onerror=\"this.src='profile/avatars/noAvatar.png'\">
</div></div></div>
<div class='comcenter-username comcenter-username-idle'>
<a class='comcenter-username-link' href='profile.php?id=".$array['id']."' >".$array['tag']."".$array['nickname']."
</a>
<div class='comcenter-username-away'>
";
if($stat == "playing")
{
echo "В сети";
}
else if($stat == "online")
{
echo "В игре";
}
else
{
echo "Вне системы";
}
}
Спустя 7 минут, 4 секунды (25.07.2012 - 00:10) Ром@шка написал(а):
что-то голова совсемне варит уже((
пойду спать, завтра ещё пошаманю и напишу что вышло (или не вышло
)
пойду спать, завтра ещё пошаманю и напишу что вышло (или не вышло

Спустя 4 минуты, 47 секунд (25.07.2012 - 00:15) Игорь_Vasinsky написал(а):
Цитата |
else if |
работает?
Спустя 53 секунды (25.07.2012 - 00:15) Ром@шка написал(а):
работает
Спустя 2 минуты, 2 секунды (25.07.2012 - 00:17) rooor написал(а):
да переделыывай всё... нафига ники в строку пихать?
при таком раскладе часть ника тоже будет считаться истиной, например roma4444 и roma
$player['name'] = "[INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia";
if (strpos($player['name'], $array['nickname']) !== FALSE)
{
echo "В игре";
}
при таком раскладе часть ника тоже будет считаться истиной, например roma4444 и roma
Спустя 4 минуты, 8 секунд (25.07.2012 - 00:22) Игорь_Vasinsky написал(а):
не медленней elseif ? стаётся что - да.
Спустя 5 минут, 48 секунд (25.07.2012 - 00:27) Ром@шка написал(а):
я не разбираюсь особо медленный или нет)))
я не знаю нифига их пихать. движок сделан так что ники в базу не сохраняются ( тоже реализовать пыталась но не вышло), они только в массив идут
я не знаю нифига их пихать. движок сделан так что ники в базу не сохраняются ( тоже реализовать пыталась но не вышло), они только в массив идут
Спустя 3 минуты, 12 секунд (25.07.2012 - 00:31) rooor написал(а):
Цитата |
движок сделан так что ники в базу не сохраняются |
:blink: а что тогда берётся отсюда? и, самое главное - нафига?))
$fres = mysql_query("SELECT * FROM users");
Спустя 2 минуты, 46 секунд (25.07.2012 - 00:33) Ром@шка написал(а):
оттуда берется время последнего обновления страницы для того чтобы определять пользователь на сайте или нет.
Спустя 2 минуты, 54 секунды (25.07.2012 - 00:36) Игорь_Vasinsky написал(а):
strpos() не прокатит, preg_match() юзай, тяжко конечно что в цикле, но так не вижу способа.
Спустя 1 минута, 8 секунд (25.07.2012 - 00:37) rooor написал(а):
как он определяет какой именно пользователь?))
вы вообще в курсе что этот код делает?
в $array['nickname'] должен быть ник, взятый из базы, и этот ник из базы проверяется в строке $player['name'], если в базе нет ников, что тогда он тут проверяет?
вы вообще в курсе что этот код делает?
else if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}
в $array['nickname'] должен быть ник, взятый из базы, и этот ник из базы проверяется в строке $player['name'], если в базе нет ников, что тогда он тут проверяет?
Спустя 5 минут, 36 секунд (25.07.2012 - 00:43) Ром@шка написал(а):
в базе есть ники пользователей зарегистрированых на сайте, но ники игроков, находящихся в данный момент на сервере в базу не сохраняются
Спустя 1 минута, 48 секунд (25.07.2012 - 00:45) rooor написал(а):
ну так а что же вы от скрипта хотите? вы зарегистрированы на сайте и вас он правильно определяет... ещё раз повторю - откуда в $array['nickname'] возьмутся ники тех, кого нет в базе? их просто нет, поэтому они и не в онлайне
Спустя 8 часов, 24 минуты, 13 секунд (25.07.2012 - 09:09) Ром@шка написал(а):
но в масиве то они есть. ники тех кто в игре есть в $player['name'], но они как я поняла идут в базу в кэшированом виде и обновляются при обновлении страницы. Собственно поэтому и проверяем на наличие совпадений одной из ников с никами из $array['nickname']
Спустя 22 минуты, 5 секунд (25.07.2012 - 09:31) kamanch написал(а):
$player_array = explode(' ',$player['name']); // получаем массив игроков
$nikname_array = explode(' ',$array['nickname']); // получаем массив ников
$player_online_array = array_intersect($player_array, $nikname_array); // пересечение этих массивов
Спустя 24 минуты, 42 секунды (25.07.2012 - 09:56) Ром@шка написал(а):
h.n.81 в вашем случае все пользователи из правой колонке начинают светиться как "В игре"
Спустя 8 минут, 17 секунд (25.07.2012 - 10:04) kamanch написал(а):
Значит, ты не разабралась со входными данными и неверно нам их тут дала.
Потому что:
Вывод:
Потому что:
$player['name'] = "player1 nik1 player2 nik2 player2 nik3 ";
$array['nickname'] = "nik1 nik2 nik3 nik4 nik5";
$player_array = explode(' ',$player['name']); // получаем массив игроков
$nikname_array = explode(' ',$array['nickname']); // получаем массив ников
$player_online_array = array_intersect($player_array, $nikname_array); // пересечение этих массивов
echo "<pre>";
print_r($player_online_array);
echo "</pre>";
Вывод:
Array
(
[1] => nik1
[3] => nik2
[5] => nik3
)
Спустя 12 минут (25.07.2012 - 10:16) Ром@шка написал(а):
За обработку игроков отвечает вот этот код. Может я в нем что не так поняла...
//-------------------------------------------------------------------------------------------------- ----------+
// SHOW THE PLAYERS
$output .= "
<div style='margin:auto; overflow:auto; text-align:left; padding:10px'>";
if (!$server['p'] || !is_array($server['p']))
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto'>
<tr style='".lgsl_bg(FALSE)."'>
<td> {$lgsl_config['text']['npi']} </td>
</tr>
</table>";
}
else
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto;box-shadow: 0px 0px 10px black;'>
<tr style='".lgsl_bg(FALSE)."'>";
//-----------------------------------
foreach ($fields as $field)
{
$field = ucfirst($field);
if ($field == 'Name') { $field = 'Игрок [нажмите на ник для просмотра совпадений]'; }
elseif ($field == 'Ping') { $field = 'Пинг'; }
elseif ($field == 'Score') { $field = 'Фраги'; }
elseif ($field == 'Kills') { $field = 'Убил'; }
elseif ($field == 'Deaths') { $field = 'Умер'; }
elseif ($field == 'Squad') { $field = 'Отряд'; }
elseif ($field == 'Team') { $field = 'Комманда'; }
elseif ($field == 'Time') { $field = 'Время'; }
$output .= "
<td class='forumheader3' style='color:white;text-shadow: 0px 0px 7px;padding:5px'> <b>{$field}</b> </td>";
}
$output .= "
</tr>";
foreach ($server['p'] as $player_key => $player)
{
$output .= "
<tr>";
foreach ($fields as $field)
{
include "plugins/players/bfgc_clanlist.txt";
$output .= "<td style='box-shadow: 0px 0px 2px black;'>{$player[$field]}</td>";
}
$output .= "
</tr>";
}
$output .= "
</table>";
}
$output .= "
</div>";
//-------------------------------------------------------------------------------------------------- ----------+
Спустя 5 минут, 7 секунд (25.07.2012 - 10:21) Ром@шка написал(а):
Есть ещё вот такой код:
находится в этом файле.
Может в нём что найдете, потому что я не особо там разобралась(
//-------------------------------------------------------------------------------------------------- ----------+
function lgsl_charset_detect($server)
{
if (!function_exists("mb_detect_encoding")) { return "AUTO"; }
$test = "";
if (isset($server['s']['name'])) { $test .= " {$server['s']['name']} "; }
if (isset($server['p']) && $server['p'])
{
foreach ($server['p'] as $player)
{
if (isset($player['name'])) { $test .= " {$player['name']} "; }
}
}
$charset = @mb_detect_encoding($server['s']['name'], "UTF-8, Windows-1252, ISO-8859-1, ISO-8859-15");
return $charset ? $charset : "AUTO";
}
//-------------------------------------------------------------------------------------------------- ----------+
function lgsl_charset_convert($server, $charset)
{
if (!function_exists("mb_convert_encoding")) { return $server; }
if (is_array($server))
{
foreach ($server as $key => $value)
{
$server[$key] = lgsl_charset_convert($value, $charset);
}
}
else
{
$server = @mb_convert_encoding($server, "UTF-8", $charset);
}
return $server;
}
//-------------------------------------------------------------------------------------------------- ----------+
находится в этом файле.
Может в нём что найдете, потому что я не особо там разобралась(
Спустя 1 час, 4 минуты, 10 секунд (25.07.2012 - 11:25) Xsfd написал(а):
Глянул коды и нашел функцию $server['p'], которая выводит из кэша всю информацию о игроках на сервере. Но если просто ткнуть ".$server['p']." в код - ты получишь на выходе слово Array поэтому делаем так:
Запускаем сериализацию:
и меняем
на
Потом меняем местами if и elseif чтобы первым делом проверялось кто в игре, а уж потом кто на сайте:
Должно работать. Проверял у себя
Запускаем сериализацию:
$playerstr = serialize( $server['p'] );
и меняем
else if (strpos($player['name'], $array['nickname']) !== FALSE)
на
else if (strpos($playerstr, $array['nickname']) !== FALSE)
Потом меняем местами if и elseif чтобы первым делом проверялось кто в игре, а уж потом кто на сайте:
$playerstr = serialize( $server['p'] );
$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}
Должно работать. Проверял у себя
Спустя 30 минут, 25 секунд (25.07.2012 - 11:56) Xsfd написал(а):
А вот со strpos что делать я не знаю. Ибо как было сказано ранее - будет выводить если даже часть ника присутствует в игре
Спустя 17 минут, 47 секунд (25.07.2012 - 12:14) Ром@шка написал(а):
Спасибо) Работает)
А вот со strpos и правда проблемка(((
Можно как нибудь сделать чтобы искало не по частям, а полный ник?
А вот со strpos и правда проблемка(((
Можно как нибудь сделать чтобы искало не по частям, а полный ник?
Спустя 2 часа, 8 минут, 31 секунда (25.07.2012 - 14:22) Ром@шка написал(а):
Подскажите ещё такая проблема.
Фенкция serialize выводит нечто подобное:
{s:4:"game";s:3:"IW4";s:4:"name";s:29:"BATTLEFRAME.RU |SD|HARD";s:3:"map";s:12:"mp_overgrown";s:7:"players";i:6;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:3:"920";s:4:"ping";s:3:"135";s:4:"name";s:7:"Salomon";}i:1;a:3 :{s:5:"score";s:4:"3700";s:4:"ping";s:2:"39";s:4:"name";s:8:"Mucksudd";}i:2;a:3 :{s:5:"score";s:1:"0";s:4:"ping";s:3:"173";s:4:"name";s:4:"Mask";}i:3;a:3:{s :5:"score";s:1:"0";s:4:"ping";s:3:"138";s:4:"name";s:6:"SakhK2";}i:4;a:3: {s:5:"score";s:3:"600";s:4:"ping";s:3:"205";s:4:"name";s:7:"#26 Ale";}i:5;a:3:{s:5:"score";s:4:"2200";s:4:"ping";s:2:"15";s:4:"name";s:9:"NiKo70RUS";}}}
Как видно здесь есть и ники и название сервера.
Можно ли как нибудь на РНР реализовать чтобы отображалось на каком сервере находится игрок?
Фенкция serialize выводит нечто подобное:
{s:4:"game";s:3:"IW4";s:4:"name";s:29:"BATTLEFRAME.RU |SD|HARD";s:3:"map";s:12:"mp_overgrown";s:7:"players";i:6;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:3:"920";s:4:"ping";s:3:"135";s:4:"name";s:7:"Salomon";}i:1;a:3 :{s:5:"score";s:4:"3700";s:4:"ping";s:2:"39";s:4:"name";s:8:"Mucksudd";}i:2;a:3 :{s:5:"score";s:1:"0";s:4:"ping";s:3:"173";s:4:"name";s:4:"Mask";}i:3;a:3:{s :5:"score";s:1:"0";s:4:"ping";s:3:"138";s:4:"name";s:6:"SakhK2";}i:4;a:3: {s:5:"score";s:3:"600";s:4:"ping";s:3:"205";s:4:"name";s:7:"#26 Ale";}i:5;a:3:{s:5:"score";s:4:"2200";s:4:"ping";s:2:"15";s:4:"name";s:9:"NiKo70RUS";}}}
Как видно здесь есть и ники и название сервера.
Можно ли как нибудь на РНР реализовать чтобы отображалось на каком сервере находится игрок?
Спустя 29 минут, 6 секунд (25.07.2012 - 14:51) neadekvat написал(а):
Ром@шка, допустим, у тебя сериализованная строка хранится в $str. Тогда сделай так:
<?php
$str = '{s:4:"gam...';
$arr = unserailize($str);
print_r($arr);
Спустя 42 минуты, 34 секунды (25.07.2012 - 15:34) Ром@шка написал(а):
И что это даст?(( у меня вообще всё пропало(
Спустя 5 минут, 25 секунд (25.07.2012 - 15:39) neadekvat написал(а):
Ну, подумаешь, очепятался.
unserialize называется.
unserialize называется.
Спустя 1 минута, 54 секунды (25.07.2012 - 15:41) Ром@шка написал(а):
в слове unserialize были 2 буквы местами перепутаны)) Исправила, но результата 0.
Вообще я логики не понимаю. Зачем писать unserialize если мы писали serialize ?
Вообще я логики не понимаю. Зачем писать unserialize если мы писали serialize ?
Спустя 22 минуты, 26 секунд (25.07.2012 - 16:04) Ром@шка написал(а):
И можно ли вот из этого:
Сделать сортировку чтобы сначала отображались online, под ними playing и offline ?
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}
Сделать сортировку чтобы сначала отображались online, под ними playing и offline ?
Спустя 8 минут, 33 секунды (25.07.2012 - 16:12) Xsfd написал(а):
mysql_query("SELECT * FROM users ORDER BY visit DESC,id");
это по статусу на сайте, а как туда статус онлайна на сервере прикрутить я не знаю)
Спустя 2 часа, 46 минут, 51 секунда (25.07.2012 - 18:59) Ром@шка написал(а):
Попыталась сделать, но не работает((
if ($stat == "online")
{
$ingame = "2";
}
else if ($stat == "playing")
{
$ingame = "1";
}
else
{
$ingame = "3";
}
$upGame = mysql_query("UPDATE users SET ingame='$ingame' WHERE id='$id_user'",$db);
Спустя 1 час, 54 минуты, 57 секунд (25.07.2012 - 20:54) neadekvat написал(а):
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 1;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 2;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 3;
$stat = "offline";
$stat2 = "offline";
}
// Где ingame - числовое поле, обязательно. tinyint например
mysql_query("UPDATE users SET ingame=$db_stat WHERE id=$id_user", $db);
Достаем просто:
SELECT ... ORDER BY ingame ASC
Спустя 44 минуты, 51 секунда (25.07.2012 - 21:39) Ром@шка написал(а):
Одна загвоздка. Информация заносится лишь после того как сам игрок заёдет на сайт под своим логином и обновит страницу((( Как сделать чтобы всё автоматом заносилось?
Спустя 11 минут, 4 секунды (25.07.2012 - 21:50) neadekvat написал(а):
Ром@шка, что-то я не очень понял, в чем именно "загвоздка". Если я залогинился, то еще не считаюсь "в онлайне", для этого мне надо обновить страницу? Или что? Если так, то это тупо архитектурная ошибка. Вызывайте в скрипте авторизации скрипт изменения состояния и все.
Вообще, на самом деле, тебе стоило посмотреть, как делаются скрипты списков пользователей онлайн.
После авторизации может произойти только одно - меня сделают онлайн.
Если я нажму "Выйти" - скрипт может только поставить мне статус "офлайн".
А чтобы делать промежуточные вещи, да еще выводить данные другим пользователям, в базе данных сохраняют время авторизации и последней активности (обновления страницы, грубо говоря). И уже на основе этих данных вычисляют, онлайн я или уже офлайн (обычно офлайн - это 25 минут бездействия).
Вообще, на самом деле, тебе стоило посмотреть, как делаются скрипты списков пользователей онлайн.
После авторизации может произойти только одно - меня сделают онлайн.
Если я нажму "Выйти" - скрипт может только поставить мне статус "офлайн".
А чтобы делать промежуточные вещи, да еще выводить данные другим пользователям, в базе данных сохраняют время авторизации и последней активности (обновления страницы, грубо говоря). И уже на основе этих данных вычисляют, онлайн я или уже офлайн (обычно офлайн - это 25 минут бездействия).
Спустя 6 минут, 16 секунд (25.07.2012 - 21:56) Ром@шка написал(а):
у меня в базе создано поле newtime в которую вносится время последнего посещения сайта пользователем. Потом оно сравнивается с текущим и если разница больше чем в 5 минут, то пользователь оффлайн, если же нет, то онлайн.
Целью же является создать ещё одно поле ingame в которое будет заноситься число статуса у пользователя в данный момент ($db_stat = 1,2,3;)
Но обновление вот этой части никак не хочет заноситься в базу
Целью же является создать ещё одно поле ingame в которое будет заноситься число статуса у пользователя в данный момент ($db_stat = 1,2,3;)
Но обновление вот этой части никак не хочет заноситься в базу
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 1;
$stat = "online";
$stat2 = "online";
}
Спустя 7 минут, 59 секунд (25.07.2012 - 22:04) neadekvat написал(а):
Ром@шка, давай так. Тут уже много страниц и много текста.
Еще раз распиши подробно, что ты хочешь сделать. И у себя в голове уложишь, и мне расскажешь. А уж я со своей стороны не обижу и скажу, что в логике нужно выкинуть, а что заменить.
Еще раз распиши подробно, что ты хочешь сделать. И у себя в голове уложишь, и мне расскажешь. А уж я со своей стороны не обижу и скажу, что в логике нужно выкинуть, а что заменить.
Спустя 10 минут, 36 секунд (25.07.2012 - 22:15) Ром@шка написал(а):
Давай я завтра напишу))) а то в голову связаная речь не идёт)))
Спустя 10 минут, 15 секунд (25.07.2012 - 22:25) neadekvat написал(а):
Цитата (Ром@шка @ 25.07.2012 - 23:15) |
Давай я завтра напишу))) а то в голову связаная речь не идёт))) |
Ну дак, дело твое.
Я завтра целый день в аэропорту буду торчать, если найду там вай-фай, то помогу. Если не найду - сдохну от скуки

Спустя 2 минуты, 7 секунд (25.07.2012 - 22:27) Ром@шка написал(а):
Главное что помочь согласились) А время то найдется)
Спустя 11 часов, 9 минут, 28 секунд (26.07.2012 - 09:36) Ром@шка написал(а):
Вообщем идея такая (рассказываю по скриншоту)
Нужно чтобы справа в столбике игроки сортировались по статсусу: сначала идут те кто "Играет...", потом те кто "В сети", а за ними уже те кто "Вне системы".
Но у меня никак не выходит т.к. статусы "В сети" и "Вне системы" сортируются при выводе из базы данных, а статус "Играет.." просчитывается с помощью if, поэтому максимум выходит сделать такой порядак: "В сети", "Вне системы", "Играет".
код следующий:
Нужно чтобы справа в столбике игроки сортировались по статсусу: сначала идут те кто "Играет...", потом те кто "В сети", а за ними уже те кто "Вне системы".
Но у меня никак не выходит т.к. статусы "В сети" и "Вне системы" сортируются при выводе из базы данных, а статус "Играет.." просчитывается с помощью if, поэтому максимум выходит сделать такой порядак: "В сети", "Вне системы", "Играет".
код следующий:
$playerstr = serialize( $server_list );
$timer = time();
$fres = mysql_query("SELECT * FROM users ORDER BY ingame DESC,id");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}
// Где ingame - числовое поле, обязательно. tinyint например
mysql_query("UPDATE users SET ingame=$db_stat WHERE id=$id_user", $db);
echo "///ЗДЕСЬ HTML КОД ВЫВОДА///";
if($stat == "playing")
{
echo "<font color='steelblue'>В сети</font>";
}
else if($stat == "online")
{
echo "<font color='#5bb138'>Играет в Modern Warfare</font>";
}
else
{
echo "Вне системы";
}
}
Спустя 5 часов, 4 минуты, 8 секунд (26.07.2012 - 14:41) neadekvat написал(а):
Хм, видать, я тоже отоспался, потому что теперь понял, что происходит.
Значит, смотри. В таком случаи тебе перед тем, как выводить сортированные данные, надо расставить соответствующие значения у пользователей. Т.е. так:
Таблица пользователей:
users
user_id | login | status (tinyiny)
Где status может быть 1 (В игре), 2 (На сайте), 3 (Офлайн)
Плюс, как я смотрю, у тебя там откуда-то еще берутся данные о том, кто сейчас играет и когда он делал последний раз. Это и используем. Слегка меняем твой код:
$arr - массив с данными от самой игры (я где-то выше в сериализованном формате видел)
// И уже затем то, что у тебя в принципе есть, т.е. вывод данных.
P.S.
Две большие просьбы:
1. Для начала надо понять, что я писал с привычными мне названиями переменных и пр., т.е. тебе нельзя просто взять и скопировать это, тебе надо изменить код под себя.
2. Самое главное - включи голову, если что-то не понимаешь - сначала попробуй посмотреть на это с других сторон, осознать, что до тебя пытались донести. Не надо сразу бежать с криками, что ничего непонятно.
2P.S.
Есть такая вероятность, что до позднего вечера я больше не отвечу, ибо что-то не вижу я в Шереметьево розеток для ноута. Благо хоть вай-фай есть.
Значит, смотри. В таком случаи тебе перед тем, как выводить сортированные данные, надо расставить соответствующие значения у пользователей. Т.е. так:
Таблица пользователей:
users
user_id | login | status (tinyiny)
Где status может быть 1 (В игре), 2 (На сайте), 3 (Офлайн)
Плюс, как я смотрю, у тебя там откуда-то еще берутся данные о том, кто сейчас играет и когда он делал последний раз. Это и используем. Слегка меняем твой код:
$arr - массив с данными от самой игры (я где-то выше в сериализованном формате видел)
foreach($arr as $user)
{
// Здесь проверка, которая у тебя сейчас ниже, после этой проверки
// у нас есть переменная $db_stat
mysql_query("UPDATE users SET status = $db_stat WHERE login = {$user['name']}");
}
// И уже затем то, что у тебя в принципе есть, т.е. вывод данных.
SELECT ... ORDER BY status ASC
P.S.
Две большие просьбы:
1. Для начала надо понять, что я писал с привычными мне названиями переменных и пр., т.е. тебе нельзя просто взять и скопировать это, тебе надо изменить код под себя.
2. Самое главное - включи голову, если что-то не понимаешь - сначала попробуй посмотреть на это с других сторон, осознать, что до тебя пытались донести. Не надо сразу бежать с криками, что ничего непонятно.
2P.S.
Есть такая вероятность, что до позднего вечера я больше не отвечу, ибо что-то не вижу я в Шереметьево розеток для ноута. Благо хоть вай-фай есть.
Спустя 3 часа, 32 минуты (26.07.2012 - 18:13) Ром@шка написал(а):
Хоть убей не поняла :D
";
$playerstr = serialize( $server_list );
$servstr = serialize( $server_list );
$timer = time();
$fres = mysql_query("SELECT * FROM users ORDER BY ingame DESC,id");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
foreach($server['p'] as $user)
{
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}
mysql_query("UPDATE users SET ingame = $db_stat WHERE id=$id_user");
}
if ($array['dolznost'] == "Лидер клана")
{$cl = "<img src='modules/img/cl.png' style='width:10px;' title='Лидер клана ".$array['team']."'>";}
else
{$cl = "";}
echo "
Цитата |
у тебя там откуда-то еще берутся данные о том, кто сейчас играет и когда он делал последний раз |
Берется отсюда:
if (strpos($playerstr, $array['nickname']) !== FALSE)
где $playerstr это сериализованый массив, а $array['nickname'] это ник пользователя на сайте
В этом вся и загвоздка что изза этого IF не полуается в базу даннх занести статус "В игре" (в данном случае цифру 1)
Спустя 4 минуты, 12 секунд (26.07.2012 - 18:17) neadekvat написал(а):
Да, действительно не поняла.
Это день сегодня такой что ль, никто ни во что не вкуривает.
Это день сегодня такой что ль, никто ни во что не вкуривает.
Цитата (Ром@шка @ 26.07.2012 - 19:13) |
Берется отсюда: |
Нет, здесь они уже используются.
Я про это:
$playerstr
Откуда-то же он взялся? Вот с ним и надо работать (тот foreach что я показал). Только работать с ним надо как с массивом, не надо сериализовать.
Спустя 2 часа, 40 минут, 6 секунд (26.07.2012 - 20:57) Ром@шка написал(а):
всё равно не сортирует по онлайну(( блин да чтож такое? Куда этот foreach ткнуть то? Маловато у меня мозгов для этого дела

Спустя 3 часа, 35 минут, 7 секунд (27.07.2012 - 00:32) neadekvat написал(а):
Вот смотри, у тебя есть переменная $playerstr. Откуда она берется?
Спустя 10 часов, 15 минут, 55 секунд (27.07.2012 - 10:48) Ром@шка написал(а):
$playerstr = serialize( $server_list );
Где server_list это массив, записаный в БД как КЭШ (файл который это делает я раньше где-то выкладывала)
Спустя 4 часа, 21 минута, 7 секунд (27.07.2012 - 15:09) neadekvat написал(а):
Ну вот, значит, у тебя уже есть готовый массив с именами пользователей и их последней активности?
Спустя 1 час, 19 минут, 16 секунд (27.07.2012 - 16:28) Ром@шка написал(а):
$server_list выдаёт много всякой фигни:
a:12:{i:0;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s :13:"80.77.174.251";s:6:"c_port";s:5:"28960";s:6:"q_port";s:5:"28960";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"1& quot;;s:4:"zone";s:1:"1";s:7:"comment";s:23:"BATTLEFRAME.RU |SD|HARD";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game&quo t;;s:3:"IW4";s:4:"name";s:23:"BATTLEFRAME.RU |SD|HARD";s:3:"map";s:10:"mp_complex";s:7:"players";i:6;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:18:"BFGC Shield System";s:6:"_email";s:14:"bfgc@gmail.com";s:9:"_location";s:8:&qu ot;RUS Tver";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://battleframe.ru/";s:14:&quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:10:"mp_complex";s:8:"protocol";s:3:"144";s:21:"scr_game_allowkillcam ";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv_allowanonym ous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:23:"BATTLEFRAME.RU |SD|HARD";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:3:"164";s:4:"name";s:7:"|SW|Cin";}i:1;a:3 :{s:5:"score";s:1:"0";s:4:"ping";s:2:"74";s:4:"name";s:11:"[INF]Safron";}i:2 ;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"68";s:4:"name";s:14:"P.P.P.P.P.P.P'";} i:3;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"33";s:4:"name";s:11:"DFM.lol man";}i:4;a:3:{s:5:"score";s:3:"100";s:4:"ping";s:2:"95";s:4:"name";s:13:"Winnie Pooh U";}i:5;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"50";s:4:"name";s:8:"-=Matt=-";}}}i:1;a:5:{s:1:"b";a:7:{s:4:"typ e";s:13:"callofdutymw2";s:2:"ip";s:15:"212.107.236.155";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:"28961&a mp;q uot;;s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"4& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:31:"RUSWARS.COM[RUS70] HARD#1";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game" ;s:3:"IW4";s:4:"name";s:29:"WWW.RUSWARS.COM[RUS70] HARD#1";s:3:"map";s:12:"mp_overgrown";s:7:"players";i:6;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:5:"romis&am p;qu ot;;s:6:"_email";s:17:"romis@sibmail.com";s:9:"_location";s:9:"RUS Tomsk";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:18:"http://ruswars.com";s:14:"ai w_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:3:"war";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:12:"mp_overgrown";s:8:"protocol";s:3:"144";s:21:"scr_g ame_allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:29:"WWW.RUSWARS.COM[RUS70] HARD#1";s:10:"sv_maxping";s:3:"250";s:10:"sv_maxrate";s:6:"150000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"1";s:27:"sv_privateclientsforclients&am p;qu ot;;s:1:"1";}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:3:"920";s:4:"ping";s:3:"135";s:4:"name";s:7:"Salomon";}i:1;a:3 :{s:5:"score";s:4:"3700";s:4:"ping";s:2:"39";s:4:"name";s:8:"Mucksudd";}i:2;a:3 :{s:5:"score";s:1:"0";s:4:"ping";s:3:"173";s:4:"name";s:4:"Mask";}i:3;a:3:{s :5:"score";s:1:"0";s:4:"ping";s:3:"138";s:4:"name";s:6:"SakhK2";}i:4;a:3: {s:5:"score";s:3:"600";s:4:"ping";s:3:"205";s:4:"name";s:7:"#26 Ale";}i:5;a:3:{s:5:"score";s:4:"2200";s:4:"ping";s:2:"15";s:4:"name";s:9:"NiKo70RUS";}}}i:2;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2: "ip";s:14:"109.171.65.246";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:"2896 1";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"5& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:31:"RUSWARS.COM[RUS70] HARD#3";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game" ;s:3:"IW4";s:4:"name";s:29:"WWW.RUSWARS.COM[RUS22] HARD#3";s:3:"map";s:10:"mp_compact";s:7:"players";i:16;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:4:"BRAT& ;quo t;;s:6:"_email";s:17:"romis@sibmail.com";s:9:"_location";s:11:"RUS Barnaul";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:25:"http://mf2seversk.ucoz.ru";s:14:& amp; quot;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:3:"war";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:10:"mp_compact";s:8:"protocol";s:3:"144";s:21:"scr_game_allowkillcam ";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:29:"WWW.RUSWARS.COM[RUS22] HARD#3";s:10:"sv_maxping";s:3:"200";s:10:"sv_maxrate";s:6:"150000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:16:{i:0;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"88";s:4:"name";s:5:"aiser";}i:1;a:3:{s :5:"score";s:4:"1600";s:4:"ping";s:2:"76";s:4:"name";s:14:"KiLLeR*[V*I*P]";} i:2;a:3:{s:5:"score";s:3:"500";s:4:"ping";s:2:"79";s:4:"name";s:10:"b2w | VLAD";}i:3;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"23";s:4:"name";s:5:"Dimon";}i:4;a:3:{s :5:"score";s:3:"300";s:4:"ping";s:2:"33";s:4:"name";s:10:"Demonelius";}i:5;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"83";s:4:"name";s:7:"smO_oke";}i:6;a:3: {s:5:"score";s:3:"600";s:4:"ping";s:2:"36";s:4:"name";s:6:"Grifon";}i:7;a:3:{ s:5:"score";s:3:"300";s:4:"ping";s:2:"39";s:4:"name";s:7:"kamen75";}i:8;a:3: {s:5:"score";s:3:"100";s:4:"ping";s:2:"63";s:4:"name";s:7:"~x~X~x~";}i:9;a:3: {s:5:"score";s:3:"300";s:4:"ping";s:3:"209";s:4:"name";s:10:"Specialist";}i:10;a:3:{s:5:"score";s:3:"300";s:4:"ping";s:3:"158";s:4:"name";s:7:"Tempano";}i:11;a: 3:{s:5:"score";s:3:"200";s:4:"ping";s:3:"153";s:4:"name";s:4:"SEG@";}i:12;a:3:{ s:5:"score";s:3:"400";s:4:"ping";s:2:"47";s:4:"name";s:9:"Krapivnik";}i:13;a :3:{s:5:"score";s:1:"0";s:4:"ping";s:3:"105";s:4:"name";s:8:"Player77";}i:14;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"64";s:4:"name";s:10:"xLeprekoNx";}i:15;a:3:{s:5:"score";s:3:"300";s:4:"ping";s:2:"87";s:4:"name";s:7:"int_22h";}}}i:3;a: 5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s:12 :"80.77.174.92";s:6:"c_port";s:5:"28960";s:6:"q_port";s:5:"28960";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"8& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:19:"BmW | M3 | S&D - HC";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game";s:3 :"IW4";s:4:"name";s:37:"---===|| BmW | M3 | S&D - HC ||===---";s:3:"map";s:13:"mp_nightshift";s:7:"players";i:3;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:13:"BmW|Bla ckSoul";s:6:"_email";s:24:"wiskasfreeware@yandex.ru";s:9:"_location& ;quo t;;s:3:"CIS";s:13:"_manuadminmod";s:23:"0.11.4_beta_BmW_Edition";s:8:"_website";s:15:"www.bmw-clan.ru";s:14:"aiw _remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:13:"mp_nightshift";s:8:"protocol";s:3:"144";s:21:"scr_ game_allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:37:"---===|| BmW | M3 | S&D - HC ||===---";s:10:"sv_maxping";s:3:"400";s:10:"sv_maxrate";s:5:"25000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:3:{i:0;a:3:{s:5:"score";s:3:"350";s:4:"ping";s:2:"33";s:4:"name";s:4:"stas";}i:1;a:3:{s: 5:"score";s:3:"340";s:4:"ping";s:2:"40";s:4:"name";s:7:"DuKaLiS";}i:2;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"69";s:4:"name";s:6:"Commix";}}}i:4;a:5 :{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s:12: "93.81.244.68";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:& ;quo t;28961";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"9& amp; quot;;s:4:"zone";s:0:"";s:7:"comment";s:23:"SSS|Shuya Special Squad";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game"; s:3:"IW4";s:4:"name";s:31:"SSS|Shuya Special Squad|SD HARD";s:3:"map";s:9:"mp_estate";s:7:"players";i:0;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:3:"xam" ; ;;s:6:"_email";s:17:"xam760904@mail.ru";s:9:"_location";s:18:"Russian Federation";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://sss-mw2.clan.su";s:14:& ;quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:9:"mp_estate";s:8:"protocol";s:3:"144";s:21:"scr_game_ allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv _allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:31:"SSS|Shuya Special Squad|SD HARD";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:5;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:12:"93.81.244.68";s:6:"c_port";s:5:"28963";s:6:"q_port& ;quo t;;s:5:"28963";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:2:"10";s:4:"zone";s:0:"";s:7:"comment";s:3:"FTS";s:8:"location";s:2:"RU" ;}s:1:"s";a:6:{s:4:"game";s:3:"IW4";s:4:"name";s:36:"::: FTS | Fuck The System | HC-S&D:::";s:3:"map";s:9:"mp_vacant";s:7:"players";i:0;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:3:"xam" ; ;;s:6:"_email";s:17:"xam760904@mail.ru";s:9:"_location";s:18:"Russian Federation";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://sss-mw2.clan.su";s:14:& ;quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:9:"mp_vacant";s:8:"protocol";s:3:"144";s:21:"scr_game_ allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv _allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:36:":::FTS | Fuck The System | HC-S&D:::";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:6;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:17:"dimgrad.no-ip.org";s:6:"c_port";s:5:"28966";s:6:"q_por t";s:5:"28966";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:2:"12 ";s:4:"zone";s:0:"";s:7:"comment";s:3:"MPX";s:8:"location";s:2:"RU" ;}s:1:"s";a:6:{s:4:"game";s:3:"IW4";s:4:"name";s:36:"-== MpX==-Clan S&D Hardcore [DimgraD]";s:3:"map";s:9:"mp_vacant";s:7:"players";i:0;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:13:"MpX|Cap piToXa";s:6:"_email";s:15:"zmey@dsa-dim.ru";s:9:"_location";s:17:& amp; quot;RU - Dimitrovgrad";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:17:"http://dsa-dim.ru";s:14:"aiw _remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn ame";s:9:"mp_vacant";s:8:"protocol";s:3:"144";s:21:"scr_game_ allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1: "1";s:11:"sv_hostname";s:36:"-==MpX==-Clan S&D Hardcore [DimgraD]";s:10:"sv_maxping";s:3:"350";s:10:"sv_maxrate";s:4:"5000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:7;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:13:"80.77.174.253";s:6:"c_port";s:5:"28962";s:6:"q_port";s:5:"28962 ";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:
Скрытый текст |
это я вырезала информацию по 3-м серверам, а их там 1300 и все вот так вот сплошным текстом
Цитата |
Ну вот, значит, у тебя уже есть готовый массив с именами пользователей и их последней активности? |
Нет. Имена берутся из того что выше, а вот время когда пользователь последний раз был на сервере мне и нужно записать в БД. Мне сказали что будет проще если заносить всех игроков в БД, но я тоже без понятия как это делается(
Спустя 19 часов, 6 минут, 26 секунд (28.07.2012 - 11:35) Xsfd написал(а):
По поводу вопроса в ЛС насчёт отображения сервера. На самом деле мысль интересная, я попробовал у себя сделать, но есть одна проблема. Если в массиве игроков 40 то они все будут выводиться справа в столбике, хотя это совсем не по плану. Может здесь кто подскажет как сделать так чтобы по массиву шел только поиск т.к я не понял.
В итоге получается в той колонке с пользователями, что у тебя справа, список всех игроков со всех сервов, а надо я так понимаю только определённые
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
foreach ($server_list as $server)
{
$server_list = lgsl_sort_servers($server_list);
foreach ($server['p'] as $player)
{
if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}
echo " ВЫВОД ТЕЛА";
}
}
}
В итоге получается в той колонке с пользователями, что у тебя справа, список всех игроков со всех сервов, а надо я так понимаю только определённые