Top HLStatsX Players универсальный скрипт

Тема в разделе "HLstatsX:CE", создана пользователем Blake Bathead, 9 фев 2015.

  1. Blake Bathead

    Blake Bathead

    Сообщения:
    3
    Симпатии:
    6
    Всем привет! Выкладываю собственную разработку: отображение top-игроков с статистики HLStatsX с постраничной навигацией (лицензия GNU GPL v2).

    Преимущества

    • Не использует jQuery и других тяжелых библиотек
    • Работает полностью на Ajax
    • Очень прост и гибок в настройке (можно управлять количеством отображаемых игроков, длиной имени и другими параметрами из одного файла)
    • Может быть использован абсолютно в любом месте (рабатает на фреймах)

    Требования

    • PHP 5.4 и выше
    • Установленная и настроенная статистика hlstatsx (любой версии)

    Установка

    • Скопировать все файлы скрипта в отдельную (любую) папку на веб-сервере.
    • Настроить файл include/config.php по своему усмотрению (и include/database.class.php для базы данных)
    • Добавить нижеследующий код в необходимое место для вывода (например в правый блок xenforo или vbulletin):


    Код:
    <iframe src="PATH_TO_SCRIPT/?game=GAME_TYPE" width="245" height="290" frameborder="0" scrolling="no">
    </iframe>

    Скриншоты:


    [​IMG]


    [​IMG]


    Демо: http://top-demo.dev.lab.dima.rv.ua/?game=csgo2
    (статистика: http://hlstatsx1.uasource.com/hlstats.php?mode=players&game=csgo2)

    Выложено на официальный форум HLStatsX CE: https://forums.alliedmods.net/showthread.php?t=257836
    Официальный форум поддержки скрипта (где ведется основное обсуждение): uasource.com/threads/2317

    Ссылка на исходный код (github): https://github.com/Bathead/top-hlstatsx-players

    Прошу не удалять ссылки на форум поддержки, так как скрипт полностью бесплатен и отдан в open source, никто ничего с этого не зарабатывает. Я заинтересован в его развитии и привлечении программистов, которые могут помочь в его совершенствовании.

    Буду рад любым предложениям и пожеланиям. Присоединяйтесь к разработке ;)
     

    Вложения:

    Последнее редактирование: 9 фев 2015
  2. sabas

    sabas

    Сообщения:
    17
    Симпатии:
    1
    Свершилось то, чего я так долго ждал ! Давно хотел именно такой блок )) Автору - Благодарность и успехов во всем !
     
    Blake Bathead нравится это.
  3. Артем Свиридов 549499185

    Артем Свиридов 549499185

    Сообщения:
    27
    Симпатии:
    0
    а можно это как-нибудь сделать ? что бы вывести в окно приветствия в соурсбан ?

    я имею ввиду, открываешь соурсбан, а в окне привествия топ 10 игроков , наподобие
    http://top-demo.dev.lab.dima.rv.ua/?game=csgo2
     
  4. Vaio

    Vaio

    Сообщения:
    628
    Симпатии:
    218
    Простите, что? С каких пор jquery стала "тяжелой" и не нужной библиотекой.
     
  5. Equality

    Equality

    Сообщения:
    53
    Симпатии:
    8
    Так же возникает вопрос:
    Каким образом не используется jQuery, но используется Ajax? Ajax - это обертка над XMLHttpRequest, которая входит в состав jQuery, если что.
     
  6. Hajmer Adamkus 1319927312

    Hajmer Adamkus 1319927312

    Сообщения:
    7
    Симпатии:
    0
    Интересно, а аватарки как вывести ?))
    Спасибо, отличная работа. Запилил себе на сайт и в модт игры cssource :)

    [​IMG]
     
  7. Hajmer Adamkus 1319927312

    Hajmer Adamkus 1319927312

    Сообщения:
    7
    Симпатии:
    0
    Можно ли вывести в motd окне кс1.6 статистику как на кс-сурсе или кс-го ?

    В мотд прописано

    <html>
    <body>
    <head>
    <meta http-equiv="refresh" content="0;URL=http://sajt.com/hlstatsx/top27022/index.php?game=cstrike-gg" />
    </head>
    </body>
    </html>

    Работает кс-го данный метод модт окна.
    Но не работает в кс-16 , выводит белое окно
    Может в кс16 нельзя php выводить ?
     
  8. Blake Bathead

    Blake Bathead

    Сообщения:
    3
    Симпатии:
    6

    jQuery считается тяжелой в том смысле, что ничего из неё не используется в данном скрипте. Зачем тянуть за собой сотню не нужных функций, если будешь использовать только $.ajax к примеру, или $.post? На много проще написать 5 строк кода (свой ajax-обработчик), чем тянуть за собой гору не нужной функциональности. Это и быстрее при загрузке, и быстрее в работе.
    Мир не сошелся на jQuery.

    Добавлено через 6 минут
    Ajax - всего лишь подход к реализации динамической передачи данных (расшифровывается, кстати, как Asynchronous Javascript and XML). Ничего общего с jQuery не имеет. В jQuery просто есть его реализация, очень простая в использовании функция $.ajax, но я решил, что не стоит тянуть за собой весь багаж этой библиотеки и фактически написать свою легковесную функцию, которая полностью решает все поставленные задачи данного скрипта.


    Вот я и не стал использовать их обертку, а написал свою функцию, использующую XMLHttpRequest. Можете взглянуть на фрагмент кода external/js/top.js:

    PHP:
    xmlHttp = new XMLHttpRequest();
    Естественно, если функционально скрипт начнет расти, то будет целесообразно перейти к использованию jQuery или других библиотек, которые будут упрощать взаимодействие с клиентом и сервером. Но сейчас эта библиотека не нужна.

    Добавлено через 1 час 12 минут
    Проверьте, есть ли такой GAME_TYPE как cstrike-gg и правильно ли он работает на странице статистики. Никаких ограничений нет.

    Добавлено через 1 час 35 минут
    Насчет приветствия не скажу, но над ним можно разместить очень просто:

    в файле:
    Код:
    ПУТЬ_К_SOURCEBANS/themes/ВАША_ТЕМА/content_header.tpl
    найти блок
    Код:
    <div id="content">
    И в него вставить

    Код:
    <iframe src="PATH_TO_SCRIPT/?game=GAME_TYPE" width="245" height="290" frameborder="0" scrolling="no">
    </iframe>
    Добавлено через 1 час 37 минут
    Спасибо за отзыв. Аватарки вывести не сложно, но пока их даже в HLStatsX нет, но можно прикрутить вручную, если есть базовые знания PHP. Я, к сожалению, не могу этого сделать из-за отсутствия свободного времени.
     
    Последнее редактирование: 4 апр 2015
  9. Hajmer Adamkus 1319927312

    Hajmer Adamkus 1319927312

    Сообщения:
    7
    Симпатии:
    0
    Белое окно выводится по причине того, что java не поддерживается в кс1.6 :(

    Нельзя ли сделать по проще в php сбор статы, пусть будут странички статические с подгрузкой след страницы !?
     
  10. Blake Bathead

    Blake Bathead

    Сообщения:
    3
    Симпатии:
    6
    Возможно JavaScript и не поддерживается. На motd скрипт не тестировался, только на сайтах.

    Скрипт написан с использованием динамической постраничной навигации, переделать можно как угодно. Я не могу переделывать под нужды каждого, CS 1.6 - это скорее исключение. Да и расчёт был на сайты, где проблем с фреймами и javascript нет.
     
  11. Hajmer Adamkus 1319927312

    Hajmer Adamkus 1319927312

    Сообщения:
    7
    Симпатии:
    0
    Нашел тут же на сайте, может кто то поиском наткнется поможет.

    Ответ на мой вопрос, простое решение для кс.16

    PHP:
    <?php 
    //Адрес сайта со статистикой HLstatsX:CE
    $url_site "вашсайт/hlstatsx/";
    //Тип игры
    $game_type "cstrike";
    //Лимит Макс 20
    $limit "10";
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=8" />
        <meta http-equiv="X-UA-Compatible" content="chrome=1" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <link rel="stylesheet" type="text/css" href="http://yandex.st/bootstrap/3.0.2/css/bootstrap.min.css" />
        <title> Топ <?=$limit?> игроков!</title>
    </head>
    <body> 
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>Ранк</th>
          <th>Ник</th>
          <th>очки</th>
          <th>Время в игре</th>
          <th>Убийств</th>
          <th>Смертей</th>
          <th>K:D</th>
          <th>В голову</th>
          <th>HS:K</th>
          <th>Меткость</th>
        </tr>
      </thead>
      <tbody>
    <?php
    if($url_site && $game_type && $limit<=20){

    $url $url_site."ingame.php?mode=players&game=".$game_type;

    $grab str_replace(array("\n","\r","\t","&nbsp;"),"",file_get_contents($url));
    preg_match_all("#<tr>(.*?)</tr>#i",$grab,$html);



    for (
    $i 0$i <= ($limit-1); $i++) {
     
    $data strip_tags($html[0][$i],"<td><a>");
     
    $data preg_replace("#<td.*?>#","<td>",$data);
     
    preg_match_all("#<td>(.*?)</td>#si",$data,$htmlc);
     
    preg_match_all("#<a.*>(.*?)</a>#i",$htmlc[1][1],$nik);
     
    preg_match_all("#(player=\d{0,9999})#i",$htmlc[1][1],$profile);
     
     
     
    $hlx = array(
        
    "rank"=>$htmlc[1][0],
        
    "name"=>$nik[1][0],
        
    "profile"=>$url_site."hlstats.php?mode=playerinfo&".$profile[1][0],
        
    "points"=>$htmlc[1][2],
        
    "playtime"=>$htmlc[1][4],
        
    "kills"=>$htmlc[1][5],
        
    "deaths"=>$htmlc[1][6],
        
    "kd"=>$htmlc[1][7],
        
    "headshoots"=>$htmlc[1][8],
        
    "hsk"=>$htmlc[1][9],
        
    "accuracy"=>$htmlc[1][10],
     );
     
    ?> 
        <tr>
          <td><?=$hlx['rank']?></td>
          <td><a target="_blank" href="<?=$hlx['profile']?>"><?=$hlx['name']?></a></td>
          <td><?=$hlx['points']?></td>
          <td><?=$hlx['playtime']?></td>
          <td><?=$hlx['rank']?></td>
          <td><?=$hlx['deaths']?></td>
          <td><?=$hlx['kd']?></td>
          <td><?=$hlx['headshoots']?></td>
          <td><?=$hlx['hsk']?></td>
          <td><?=$hlx['accuracy']?></td>
        </tr>

    <?php
    }


     } else {
     die(
    'Не все данные указанны!');
     }
    ?>
    <tr>
    <td class="text-center" colspan="10">Специально для <a href="http://hlmod.ru/forum/hlstatsx-ce/8791-vyvod-top10-igrokov-iz-hlstatsx-ce-na-sait.html">hlmod.ru</a>
    <br>
    <a href="<?=$url_site?>">Статистика с сайта: <?=$url_site?></a>
    </td>
    </tr>
      </tbody>
    </table>
    </body>
    </html>
     
  12. Lector

    Lector

    Сообщения:
    20
    Симпатии:
    0
    Добрый день.
    Загрузил в отдельную папку top подключил базу данных от статистики и выходит такая шляпа что там не так помогите пожалуйста.

    Screenshot_1.png
    --- Добавлено позже ---
    Ап
     
    Последнее редактирование: 30 мар 2016