Форма входа







Главная | Обратная связь | Гостевая книга | Регистрация | Вход
Приветствуем Вас, Гость
Otium
Правила клана Otium x55 | Вновь зарегистрировавшимся сокланам
Онлайн Хантера на сайте - Форум

[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Форум » Гостевой » Завалинка » Онлайн Хантера на сайте (Задачка программисту)
Онлайн Хантера на сайте
AtandilДата: Суббота, 21.05.2011, 18:25 | Сообщение # 1
Группа: Администраторы
Сообщений: 629
Статус: Offline
Неплохо было бы повесить статус Хантера с онлайном как на сайте.
Для этого можно не лезть в базу на сервер, а всего лишь взять цифру со страницы http://asterios.tm/index.php

Вот как выглядит интересующий кусок страницы:

Code
  <div class="block2">
             <p class="txb"><img src="/design/skn3/images/tx.gif" alt="" /></p>
             <table cellpadding="0" cellspacing="0">
             <tr><td>Status:</td><td><span><font color=red><b>off</b></font></span></td></tr>
            <tr><td>Off-trade:</td><td> 0</td></tr>
            <tr><td>Rates:</td><td>x5</td></tr>
            </table>
            </div>

            <div class="block4">
             <p class="txb"><img src="/design/skn3/images/hunter.png" alt="" /></p>
             <table cellpadding="0" cellspacing="0">
             <tr><td>Status:</td><td><span><b><font color=green>4331</font></b></span></td></tr>
            <tr><td>Off-trade:</td><td> 500</td></tr>
            <tr><td>Rates:</td><td>x55</td></tr>
            </table>
            </div>

Предлагаю такой алгоритм: на странице http://asterios.tm/index.php
1) найти последовательность hunter.png
2) затем найти ближайшее после неё font color=
3) записать всё что до символа > (это статус сервера: green или red)
4) и после символа > записать всё до последовательности </font (это или цифры онлайна или надпись <b>off</b> )
5) Записанные статус и онлайн кинуть в какой-то файл.

Кто может намутить такой скрипт или найти того, кто шарит? )

Один уже спрашивал в теме http://forum.asterios.tm/index.php?showtopic=46761 , но Admin только отправил в поиск на просторы помойки интернета.


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
MaxFridayДата: Суббота, 21.05.2011, 20:49 | Сообщение # 2
Группа: Otium
Сообщений: 132
Статус: Offline
вывод состояния сервера (php скрипт)

Код:

Для отображения статуса на странице сайта
код:

Теперь создаём файл status.php и в него вставьте вот этот скрипт:
Код:



Я бы изменил мир, но Бог не дает исходники...

Сообщение отредактировал MaxFriday - Суббота, 21.05.2011, 20:57
 
AtandilДата: Суббота, 21.05.2011, 20:55 | Сообщение # 3
Группа: Администраторы
Сообщений: 629
Статус: Offline
MaxFriday, сумничал, возми печеньку.
да не про статус вопрос, а про число онлайна

и $dblogin" "$dbpass ты где возьмешь? как сказал админ, не хватит возраста вселенной подобрать


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
MaxFridayДата: Суббота, 21.05.2011, 21:10 | Сообщение # 4
Группа: Otium
Сообщений: 132
Статус: Offline
Atandil тут надо знать ип с портом мускуля... это уже сложнее... просто картинку копирнуть не катит)
ща порою

з.ы. печенку взял)

Добавлено (21.05.2011, 21:10)
---------------------------------------------
Цифры об онлайне берутся из базы, доступ к которой имеют только администраторы.

далее, писать скрипт который будет тырить с астериоса инфу об онлайне я буду до конца света))) тупо лень.

короче надо либо постоянно обновляющийся скрипт, либо никак. т.к. ты сам заметил, что лог с пассом к дб мы не получим) искать этот скрипт я нехочу =\
ушёл гамать


Я бы изменил мир, но Бог не дает исходники...

Сообщение отредактировал MaxFriday - Суббота, 21.05.2011, 20:58
 
byxakerДата: Воскресенье, 22.05.2011, 07:54 | Сообщение # 5
Группа: Otium
Сообщений: 121
Статус: Offline
Санька все никак не успокоится)

[quote=Atandil]seductive, многа букаф ниасилил[/quote]
 
JokerloOДата: Воскресенье, 22.05.2011, 11:06 | Сообщение # 6
Группа: Странники
Сообщений: 128
Статус: Offline
http://worldonline.com.ua/news/2008-12-10-230
попробуй

Atandil:
Написал же, не статус нужен On или Off, а цифра онлайна.

Сообщение отредактировал Atandil - Воскресенье, 22.05.2011, 11:37
 
AtandilДата: Воскресенье, 22.05.2011, 11:33 | Сообщение # 7
Группа: Администраторы
Сообщений: 629
Статус: Offline
Вот, пока составил такой набросок скрипта:
Code
<!-- Выуживание онлайна сервера не из базы, а со страницы сайта -->
<script language="JavaScript">

function online(way, nameserver)
         {
// Поиск онлайна на странице сайта
aster=new Array(); //страница сайта из строк - то, что нужно ещё как-то создать
n=0; // номер строки страницы сайта

// 1) найти последовательность hunter.png         
starttxt=nameserver+'.png';

flag=false;
while (flag=false)
{ if (aster[n].indexOf(starttxt)>0) {flag=true} else {n++}};
  //нашли строку n с текстом hunter.png

// 2) затем найти ближайшую после неё  строку со Status
flag=false;
while (flag=false)
{ if (aster[n].indexOf('Status')>0) {flag=true} else {n++}};
  //нашли строку n с онлайном сервера

// 3) Определить статус (после 'font color=' статус сервера: green или red)         

startstatus=aster[n].indexOf('font color=')+11;
if (aster[n].charAt(startstatus)='r')
{serveronline='Off'; return serveronline;} //Если сервер офф, то на этом определение онлайна прекращается

// 4) и после символа > записать всё до <

start=aster[n].indexOf('green>')+6;
serveronline="";
while (aster[n].charAt(start)!='<')
          {
serveronline+=aster.charAt(start);
start++;
           };
return serveronline;         
         };

// 5) Записанные статус и онлайн напечатать.
document.write("Hunter х55 online: "+online('asterios.tm/index.php','hunter'))

</script>


Осталось для его работы создать этот самый массив строк aster=new Array(); со страницы asterios.tm/index.php


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
AtandilДата: Четверг, 26.05.2011, 16:55 | Сообщение # 8
Группа: Администраторы
Сообщений: 629
Статус: Offline
Вручную нашёл нужную строку под номером 108:
Code
<html><head><title>Поиск онлайна со страницы</title></head>
<body>Пробуем анализировать страничку сайта<br>Нужная нам строка онлайна Хантера вручную найдена как строка 108-я:<br><br>

<?php
// Получить содержимое файла в виде массива. Получение HTML-кода с удаленного сервера.
$aster = file('http://www.asterios.tm/index.php');
echo "$aster[108]";
?>
<br>И даже добавим 109-ю строчку<br>
<?php echo "$aster[109]"; ?>

</body></html>


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
SangritaCarlitosДата: Четверг, 26.05.2011, 21:32 | Сообщение # 9
Группа: Странники
Сообщений: 74
Статус: Offline
=) хакеры
 
AtandilДата: Четверг, 26.05.2011, 23:49 | Сообщение # 10
Группа: Администраторы
Сообщений: 629
Статус: Offline
И теперь вырезаю из 108-й строчки онлайн Хантера:
Code
<html><head><title>Поиск онлайна со страницы</title></head><body>
Нужная нам строка онлайна Хантера вручную найдена как строка 108-я:
<br><br>
<?php
$aster = file('http://www.asterios.tm/index.php');

// Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст
// string strip_tags(string строка [, string разрешенные_тerи])
$start = strip_tags($aster[108]);

// Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
$start2 = strstr($start, "Status:"); //убрали непонятные символы символы в начале строки

// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.
// string substr(string строка, int начало [, int длина])
$on_hunt = substr($start2, 7);
echo "Вот и нашли, что онлайн Хантера х55 равен $on_hunt";
?>
</body></html>


Ещё можно поизвращаться, чтобы и сама 108-я строчка находилась не вручную, но это уже мелочи.

Главная задача теперь как дать запрос со страницы юкоза на сайт, где этот скрипт будет работать (например, будет скрипт по ссылке http: //бесплатный_домен.белеберда.ru/x55online.php )


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
LavisДата: Пятница, 27.05.2011, 01:22 | Сообщение # 11
Группа: Otium
Сообщений: 174
Статус: Offline
классно а на каком это языке прога?

Lavis(основа), JohnWolos(пп), FearOfTheDark(твинк для фарма), ФилипМорис(спойлер), xxxxlavxxxx(вл)
 
AtandilДата: Пятница, 27.05.2011, 01:41 | Сообщение # 12
Группа: Администраторы
Сообщений: 629
Статус: Offline
В самом коде же написано, что это ПХП, хотя в самом коде можно было не писать, оставляя вместо <?php ... ?> только <? ... ?>.

Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
MaxFridayДата: Пятница, 27.05.2011, 08:24 | Сообщение # 13
Группа: Otium
Сообщений: 132
Статус: Offline
вот выделение и копирование текста, скопипастил у знакомого.
Code
<script>

bBool=false
var copiedtext=""
var tempstore=""

function initiatecopy() {
bBool=true;
}

function copyit() {
if (bBool) {
tempstore=copiedtext
document.execCommand("Copy")
copiedtext=window.clipboardData.getData("Text");
if (tempstore!=copiedtext) {
alert(copiedtext);
}
bBool=false;
}
}

document.onselectionchange = initiatecopy
document.onmouseup = copyit

</script>

думаю, может по тексту подойдёт... додумываем, потихонечку


Я бы изменил мир, но Бог не дает исходники...

Сообщение отредактировал MaxFriday - Пятница, 27.05.2011, 08:26
 
AtandilДата: Пятница, 27.05.2011, 20:02 | Сообщение # 14
Группа: Администраторы
Сообщений: 629
Статус: Offline
Даже вот нашёл как результат скрипта php переделать в рисунок, чтобы его можно было вcтавить на страницу uCoz в виде <img src="http://какой-то_домен/online_hunter.php">
Code
<?php
$aster = file('http://www.asterios.tm/index.php');
$start = strip_tags($aster[108]); //удалили из строки все теги HTML, оставив в ней только текст
$start2 = strstr($start, "Status:"); //убрали непонятные символы символы в начале строки
// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции
$on_hunt = substr($start2, 7);//вот и получили онлайн

$img="fon.png";
$pic = ImageCreateFrompng($img); //открываем рисунок в формате PNG
$color=ImageColorAllocate($pic, 0, 255, 0); //получаем идентификатор цвета
$x = 0; $y = 15;//координаты текста на картинке
ImageTTFtext($pic, 12, 0, $x, $y, $color, "times.ttf", "$on_hunt");// вывели текст на изображение

Header("Content-type: image/png"); //указываем на тип передаваемых данных
imagepng($pic);//наконец вывели сгенерированную картинку
ImageDestroy($pic); //освобождаем память и закрываем изображение
?>

Только надо будет залить в папку скрипта рисуночек fon.png примерно размером 60x30 пикселей и шрифт times.ttf (можно скопировать из папки windows/fonts)

Осталась проблема с хостом, где это всё будет выполняться. На домашнем сервере, где я всё это тестил и отлаживал, работает. А вот бесплатные хосты ограничивают область доступа и не дают выполнить строку
$aster = file('http://www.asterios.tm/index.php');

Поэтому снова надо что-то думать, как-то крутиться, искать решение — помогайте smile


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
AtandilДата: Вторник, 31.05.2011, 16:57 | Сообщение # 15
Группа: Администраторы
Сообщений: 629
Статус: Offline
Состояние дел: пока работает только поиск онлайна (и оффтрейдеров в следующей строке):
Code
<html><head><title>Онлайн х55 Hunter</title></head>
<body>
<br>Открыли страницу http://asterios.tm/index.php
<br><br>
<?php
// Получить содержимое файла в виде массива. Получение HTML-кода с удаленного сервера.
$aster = file('http://asterios.tm/index.php');

//strpos --  Возвращает позицию первого вхождения подстроки
//int strpos ( string haystack, string needle [, int offset] )

//$nh - номер строки начала нужного блока
for ($nh=0; $nh<999; $nh++)  {
      $pos_hunt = strpos($aster[$nh], "hunter.png");
      if ($pos_hunt > 0) break;
}
//$ns - номер строки статуса
for ($ns=$nh; $ns<999; $ns++)  {
      $pos_hunt = strpos($aster[$ns], "Status");
      if ($pos_hunt > 0) break;
}

// Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст
// string strip_tags(string строка [, string разрешенные_тerи])
$not_html = strip_tags($aster[$ns]);

// Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
$status = strstr($not_html, "Status:"); //убрали непонятные символы в начале строки

// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.
// string substr(string строка, int начало [, int длина])
$on_hunt = substr($status, 7);
echo"И нашли, что онлайн Хантера х55 равен ";
?>
<b><font color=green><?echo"$on_hunt";?></font></b>
<br>Из них написали .offline
<?
//$off_tr - число оффтрейдеров из строки следующей за онлайном
$off_tr=substr(strstr(strip_tags($aster[$ns+1]), "Off-trade:"), 10);
echo"$off_tr";
?>
<br><br><br><br>
</body>
</html>


Нашёл хостинг, где работает этот скрипт, вот результат - http://apo.u-gu.ru/onl_hunt.php

Теперь определиться бы со вставкой результата на сайт юкоза. Ищем, где будет работать и создание картинки из текста.


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
AtandilДата: Вторник, 31.05.2011, 19:37 | Сообщение # 16
Группа: Администраторы
Сообщений: 629
Статус: Offline
Ага, на том же хосте работает и формирование картинки из текста.

Вот готовый скрипт:
Code
<?php
// Получить содержимое файла в виде массива. Получение HTML-кода с удаленного сервера.
$aster = file('http://asterios.tm/index.php');

//strpos --  Возвращает позицию первого вхождения подстроки
//int strpos ( string haystack, string needle [, int offset] )

//$nh - номер строки начала нужного блока
for ($nh=0; $nh<999; $nh++)  {
          $pos_hunt = strpos($aster[$nh], "hunter.png");
          if ($pos_hunt > 0) break;
}
//$ns - номер строки статуса
for ($ns=$nh; $ns<999; $ns++)  {
          $pos_hunt = strpos($aster[$ns], "Status");
          if ($pos_hunt > 0) break;
}

// Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст
// string strip_tags(string строка [, string разрешенные_тerи])
$not_html = strip_tags($aster[$ns]);

// Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
$status = strstr($not_html, "Status:"); //убрали непонятные символы в начале строки

// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.
// string substr(string строка, int начало [, int длина])
$on_hunt = substr($status, 7);

$image = imagecreatetruecolor(40,20) // создаём изображение...
          or die('Cannot create image');     // ...или прерываем работу скрипта в случае ошибки
imagefill($image, 0, 0, 0xFFFCD0); // зальем фон цветом
$w = 3; //гориз.
$h = 15; //верт.
imagettftext(
            $image,     // картинка, на которую накладываем текст
            12,         // размер шрифта
            0,          // угол наклона шрифта
            $w, $h,     // координаты, соответствующие левому нижнему углу первого символа
            0x00DD00,   // цвет шрифта
            "times.ttf",// имя ttf-файла
            "$on_hunt"  // нкладываемый текст
          );
header('Content-type: image/png'); // устанавливаем тип документа - "изображение в формате PNG".
imagepng($image);//выводим сгенерированную картинку в формате PNG
imagedestroy($image);                // освобождаем память, выделенную для изображения
?>


Теперь онлайн в виде динамически изменяющейся картинки - http://apo.u-gu.ru/img_onl_hunt.php

Её-то и вставляем куда нужно тегом рисунка <img src="http://apo.u-gu.ru/img_onl_hunt.php">

Вроде вопрос решён, останется доработать три момента:
1. изменять цвет онлайна в зависимости от on/off сервера (это просто)

2. изменять ширину картинки в зависимости от ширины текста (тоже не сложно)

3. для определения онлайна обращаться к сайту астериоса только, если от времени последнего формирования картинки прошло, скажем 30 секунд, чтобы предотвратить возможный бан. (вот тут ещё надо посоображать)


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
AtandilДата: Среда, 01.06.2011, 13:36 | Сообщение # 17
Группа: Администраторы
Сообщений: 629
Статус: Offline
Дописал возможность получать онлайн сервера по выбору:

x55 Hunter http://apo.u-gu.ru/img_onl.php?serv=hunt
x5 Asterios http://apo.u-gu.ru/img_onl.php?serv=ast
x1 Prime http://apo.u-gu.ru/img_onl.php?serv=pr
x10 Ember http://apo.u-gu.ru/img_onl.php?serv=emb

Вот сам скрипт:
Code
<?php
$s=$_GET["serv"];
if ($s=="ast") $block="tx.gif";    // Asterios
if ($s=="hunt")$block="hunter.png";// Hunter x55
if ($s=="pr")  $block="prime.png"; // Prime x1
if ($s=="emb") $block="ember.png"; // Ember x10

// Получить содержимое файла в виде массива. Получение HTML-кода с удаленного сервера.
$aster = file('http://asterios.tm/index.php');

//strpos --  Возвращает позицию первого вхождения подстроки
//int strpos ( string haystack, string needle [, int offset] )

//$nh - номер строки начала нужного блока
for ($nh=0; $nh<999; $nh++)  {
      $pos_hunt = strpos($aster[$nh], $block);
      if ($pos_hunt > 0) break;}
//$ns - номер строки статуса
for ($ns=$nh; $ns<999; $ns++)  {
      $pos_hunt = strpos($aster[$ns], "Status");
      if ($pos_hunt > 0) break;}

// Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст
// string strip_tags(string строка [, string разрешенные_тerи])
$not_html = strip_tags($aster[$ns]);

// Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
$status = strstr($not_html, "Status:"); //убрали непонятные символы в начале строки

// Функция substr() возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.
// string substr(string строка, int начало [, int длина])
$on_hunt = substr($status, 7);

$coord = imagettfbbox(
       12,  // размер шрифта
       0,   // угол наклона шрифта (0 = не наклоняем)
       "timesbd.ttf",  // имя шрифта, а если точнее, ttf-файла
       "$on_hunt"      // собственно, текст
         );
/* Функция imagettfbbox возвращает нам массив из восьми элементов,
       содержащий всевозможные координаты минимального прямоугольника,
       в который можно вписать данный текст. Индексы массива
       удобно обозначить на схеме в виде координат (x,y):

        (6,7)          (4,5)
          +--------------+
          |Какой-то текст|
          +--------------+
        (0,1)          (2,3)

       По этой схеме легко вычислить ширину и высоту текста:
      $width = $coord[2] - $coord[0];
      $height = $coord[1] - $coord[7];
*/
$width = $coord[2] - $coord[0] + 4;  //добавим поля

$image = imagecreatetruecolor($width,11) // создаём изображение...
      or die('Cannot create image');     // ...или прерываем работу скрипта в случае ошибки
imagefill($image, 0, 0, 0xFFFFFF); // зальем фон (а то по умолчанию чёрный)
$w = 2; //гориз. отступ для поля
$h = 11; //
$green = imagecolorallocate($image, 0, 0x9F, 0);
$red = imagecolorallocate($image, 0xBB, 0, 0);
$pos_off = strpos($aster[$ns], "off"); // ищем есть ли в строке статуса вместо числа надпись off
if ($pos_off > 0) {$color = $red;} else {$color = $green;}
imagettftext(
        $image,     // картинка, на которую накладываем текст
        12,         // размер шрифта
        0,          // угол наклона шрифта
        $w, $h,     // координаты, соответствующие левому нижнему углу первого символа
        $color,   // цвет шрифта
        "timesbd.ttf",// имя ttf-файла
        "$on_hunt"  // накладываемый текст
      );

header('Content-type: image/png'); // устанавливаем тип документа - "изображение в формате PNG".
imagepng($image); //выводим сгенерированную картинку в формате PNG
imagedestroy($image);                // освобождаем память, выделенную для изображения
?>


Напомню, файл timesbd.ttf должен лежать в той же папке, что и файл скрипта (его туда можно залить, скопировав со своего компа из cистемной папки C:\Windows\Fonts ).


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
AtandilДата: Пятница, 03.06.2011, 09:07 | Сообщение # 18
Группа: Администраторы
Сообщений: 629
Статус: Offline
Отписался в теме http://forum.asterios.tm/index.php?showtopic=46761 со своим скриптом smile

На этом можно тему закрыть.


Для игры на втором х55 (или кача твинков) регайте аккаунт по ссылке. Заканчивать не больше одной профы в неделю с одного компьютера (проверка по HWID), чтобы дали бонус.
 
Форум » Гостевой » Завалинка » Онлайн Хантера на сайте (Задачка программисту)
  • Страница 1 из 1
  • 1
Поиск:

Администратор | Apocalypse/Ignis | Otium | Друзья клана | Прочая публика