Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Скрипт для вывода Top Players на Php

, Парсер игроков с сайта GameTracker.Com
Статус пользователя Lavrik
сообщение 15.5.2008, 2:49
Сообщение #1


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

Скрипт для вывода TOP players
Данные берутся с сайта GameTracker.Com
Для того чтоб скрипт нормально работал надо зарегистрировать свой сервер на GameTracker.Com

Код
<?php
/* Парсер  для GameTracker.Com */
/* Copyrights (c) 2008 lvr (c-s.net.ua) */
/* @Release date: Sun, 07 Sep 2008 00:49:35 +0300 */
/* release id: b8539dbc1abdc67b0b433ad8e0ef93b4 */

#cron.php | для запуска используйте команду "curl -s -o /dev/null http://siteurl/cronpath/cron.php?c=ваш_секретный_код"
# или просто "curl -s -o /dev/null http://siteurl/cronpath/cron.php"
#Для устранения нежелательных запусков используйте код ниже:
/*
$secretcode = 'k24aOwndxzX'; // Ваш секретный код
if(!isset($_GET['c']) || $_GET['c'] != $secretcode) {
    die();
}
*/

/* Сервер IP:PORT */
$server  = array('ip' => '8.12.20.203', 'port' => '7777');
/* Сколько игроков выводить в TOP? */
$limit   = 30;
/* Для записи в файл укажите имя файла */
$in_file = "text.html";
/* Конфиг для MySql */
$in_db   = FALSE;
$db = array(
    'host'        =>    'DB_HOST',
    'name'        =>    'DB_NAME',
    'user'        =>    'DB_USER',
    'passwd'      =>    'DB_PASSWORD'
);
$print_players_array = FALSE; // Вывести в конце выполнения скрипта список игроков?

/*
--
-- Структура таблицы top_cache
--

CREATE TABLE top_cache (
    rank SMALLINT( 3 ) NOT NULL ,
    name VARCHAR( 50 ) NOT NULL ,
    score INT( 15 ) NOT NULL ,
    time VARCHAR( 30 ) NOT NULL,
    ratio varchar(7) NOT NULL
) ENGINE = MYISAM
*/

$pages = 1;
$_limit = $limit;
while($_limit >= 25) {
    $pages++;
    $_limit -= 25;
}
$url = "http://www.gametracker.com/server_info/{$server['ip']}:{$server['port']}/top_players/?page=";
$mega_content = '';
for($i = 1; $i <= $pages; $i++) {
    $content = file_get_contents($url.$i);
    $content = preg_replace('/<(.*?)>/ie', '', $content);
    $content = str_replace("\t", '', $content);
    $content = str_replace("\r", "\n", $content);
    $content = preg_replace("/[\n]+/", "\n", $content);
    $position = strpos($content, 'Score/Min');
    $content = substr($content, $position + 9, strlen($content));
    $position = strpos($content, "Rank\nName\nScore\nTime Played");
    $content = substr($content, 1, $position - 1);
    $mega_content .= $content;
}
$data = explode("\n", $mega_content);
$players = array();
for($i = 0, $k = 0; $k < count($data), $i<$limit; $i++) {
    $players[$i]['rank']  = substr($data[$k++], 0, -1);
    $players[$i]['name']  = htmlspecialchars($data[$k++]);
    $players[$i]['score'] = $data[$k++];
    $players[$i]['time']  = $data[$k++];
    $players[$i]['ratio'] = $data[$k++];
}

// Генерируем HTML страницу
if($in_file) {
    $players_html = fopen($in_file, 'w');
    if(is_writeable($in_file)) {
        $html = '<table border="1"><tr><td>Rank</td><td>Name</td><td>Score</td><td>Time Played</td><td>Score/Min</td></tr>';
        for($i = 0; $i < count($players); $i++) {
            $html .= '<tr>';
            $html .= "<td>{$players[$i]['rank']}</td>";
            $html .= "<td>{$players[$i]['name']}</td>";
            $html .= "<td>{$players[$i]['score']}</td>";
            $html .= "<td>{$players[$i]['time']}</td>";
            $html .= "<td>{$players[$i]['ratio']}</td>";
            $html .= '</tr>';
        }
        $html .= '</table><br />Last update at <b>' . date('r') . '</b>';
        fwrite($players_html, $html);
    }
    else {
        echo date('r')." >> Невозможно записать файл\n";
    }
    fclose($players_html);
}
if($in_db) {
    $mysql_dbconnect = mysql_connect($db['host'], $db['user'], $db['passwd'])
    or die (date('r').' >> Not connected: ' . mysql_error() . "\n");
    mysql_select_db($db['name'])
    or die (date('r').' >> Can\'t select db: ' . mysql_error() . "\n");
    mysql_query('DELETE FROM top_cache WHERE 1');
    for($i = 0; $i < count($players); $i++) {
        $players[$i]['name'] = mysql_escape_string($players[$i]['name']);
        mysql_query("INSERT INTO top_cache VALUES ('{$players[$i]['rank']}', '{$players[$i]['name']}', '{$players[$i]['score']}', '{$players[$i]['time']}', '{$players[$i]['ratio']}')")
        or die (date('r').' >> Invalid query: ' . mysql_error() . "\n");
    }
    mysql_close($mysql_dbconnect);
}
if($print_players_array) {
    echo '<pre>';
    print_r($players);
    echo '</pre>';
}
# copyrights (c) c-s.net.ua
?>


Маленькое FAQ:
1. Что за нах - "для запуска используйте команду" ?
Читаем: http://ru.wikipedia.org/wiki/Crontab.

2. У меня хостинг что делать?
Задания crontab доступны на большинстве хостингов.

3. Как можно запустить скрипт еще?
В IPB доступно добавление cron заданий поищите на форуме http://ibresource.ru/ как добавлять новые задания.
В Windows есть служба "Назначенные задания". Для запуска используйте путь_к_интерпритатору_php/php.exe путь_к_скрипту/cron.php

4. Как часто запускать cron.php?
Раз в час думаю, хватит. Можно и меньше.

5. Как мне вывести данные с БД
Поддержка вывода серверов с БД увы отсутствует sad.gif, Пишите скрипт вывода сами.

6. Где находится стуктура таблицы
Найдите в скрипте строчку:
Код
-- Структура таблицы `top_cache`
--

Вот после нее идет код структуры таблицы. Скопируйте и вставьте его в phpMyAdmin.

7. Можно ли указать полный путь к файлу HTML?
Да, можно, например: 'c:/www/top100.html'

8. У меня неработает скрипт!!!
Если честно мне по*** работает он или нет, я его тестировал и все у меня работало. Если у вас руки ростут из жопы, то я готов вам его установить за символическую плату в размере 1WMZ.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   Цитировать сообщение
Статус пользователя Tolstiu
сообщение 15.5.2008, 12:05
Сообщение #2


Стаж: 19 лет

Сообщений: 481
Благодарностей: 46
Полезность: < 0

Скринок бы!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 15.5.2008, 13:31
Сообщение #3


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

В смысле? :))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tolstiu
сообщение 15.5.2008, 13:37
Сообщение #4


Стаж: 19 лет

Сообщений: 481
Благодарностей: 46
Полезность: < 0

Сделай скрин рабочего) Чтоб знать ради чего ставить)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 15.5.2008, 14:11
Сообщение #5


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

Это скрипт пишет игроков или в файл или в БД. Я оформление ему неделал
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 15.5.2008, 15:53
Сообщение #6


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

Записал на видео небольшой мануал(3 мин 22 сек) - http://lavrik.org/files/manual_video.avi ~10mb
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Stalin_alex
сообщение 23.5.2008, 22:54
Сообщение #7
Стаж: 19 лет

Сообщений: 531
Благодарностей: 114
Полезность: 0

Цитата(Lavrik @ 15.5.2008, 13:53) *
Записал на видео небольшой мануал(3 мин 22 сек) - http://lavrik.org/files/manual_video.avi ~10mb


ну а как быть локальщикам? )) Я локальный портал держу! )) :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dotsenko
сообщение 28.7.2008, 11:35
Сообщение #8
Стаж: 19 лет

Сообщений: 269
Благодарностей: 27
Полезность: 98

Скрипт не работает,делал все по инструкции
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dotsenko
сообщение 28.7.2008, 12:41
Сообщение #9
Стаж: 19 лет

Сообщений: 269
Благодарностей: 27
Полезность: 98

195.24.71.127:27027 для Lavrik
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tolstiu
сообщение 29.7.2008, 3:04
Сообщение #10


Стаж: 19 лет

Сообщений: 481
Благодарностей: 46
Полезность: < 0

Ну на видео все ясно и понятно)))
Шас будем пробовать, как сделаю отпишусь

Отредактировал: Tolstiu, - 29.7.2008, 3:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя dotsenko
сообщение 29.7.2008, 19:14
Сообщение #11
Стаж: 19 лет

Сообщений: 269
Благодарностей: 27
Полезность: 98

как прошли испытания?
странно у меня все равно не грабит
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 4.8.2008, 11:42
Сообщение #12


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

ждите обновления :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tolstiu
сообщение 6.8.2008, 20:21
Сообщение #13


Стаж: 19 лет

Сообщений: 481
Благодарностей: 46
Полезность: < 0

Был занет, да вроде нормально)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 7.9.2008, 0:39
Сообщение #14


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

fixed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dotsenko
сообщение 11.9.2008, 17:00
Сообщение #15
Стаж: 19 лет

Сообщений: 269
Благодарностей: 27
Полезность: 98

кстати $secretcode,не помогает можно и с ним просто cron.php обновить )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lavrik
сообщение 11.9.2008, 19:30
Сообщение #16


Стаж: 19 лет

Сообщений: 341
Благодарностей: 230
Полезность: 924

А надо раскоментить код:
Код
/*
$secretcode = 'k24aOwndxzX'; // Ваш секретный код
if(!isset($_GET['c']) || $_GET['c'] != $secretcode) {
    die();
}
*/
на:
Код
$secretcode = 'k24aOwndxzX'; // Ваш секретный код
if(!isset($_GET['c']) || $_GET['c'] != $secretcode) {
    die();
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: