[CS:GO] Автозагрузка демок на сайт

ThreshHNS

Участник
Сообщения
248
Реакции
87
Описание:

Полностью готовая система выкладывание демок с Ваших серверов на сайт.
Система включает в себя красивый дизайн, удобный поиск, поиск демок с участием только Вас (Steam API), подробную статистику и лог чата каждой демки.
Система работает только для CS:GO
Демо (ENG)
Демо (RUS)

Скриншоты:
tmg8ATr.png

qSBwLLB.png

Требуется:

• Установленный - Sourcemod/Metamod
• Сайт с поддержкой - PHP/MySQL
• Расширение - cURL & Hash

Установка:

Шаг 1:
1. Скачиваем архив demos.rar или demos_myarena.zip под хостинг MyArena
2. Распределяем файлы по папкам
C-подобный:
1. Положить [B]autodemo.smx[/B] в addons\sourcemod\plugins
2. Расширения [B]curl[/B] в addons\sourcemod\extensiosn
3. Конфиг [B]autodemo.txt[/B] в addons\sourcemod\configs

Шаг 2: Настройка autodemo.txt
PHP:
"AutoDemo"
{
// ftp путь до папки со stage
"ftp"  "ftp://thresh.hlmod.ru/stage"

// данные от ftp
"username" ""
"password" ""

// ссылка сайта с демками
"site" "http://demos.powerhns.ru"
// ключ от api сайта (запоминаем)
"key" "demos"

// название сервера (без пробелов)
"server" "Classic"
}

Шаг 3: Установка веб-части
C-подобный:
1. Файлы из папки [B]demos[/B] заливаем на сайт
2. Создаем вручную две папки с именами demos и logs в главном каталоге (рядом с папкой stage)
3. Настраиваем и переименовываем [B]config.example.php[/B] в config.php
4. Делаем SQL запрос для создания базы на сайте через PhpMyAdmin
5. Настраиваем и переименовываем [B]sql_login.example.php[/B] в sql_login.php
ᅠᅠᅠᅠНастройка config.php
PHP:
<?php

$apikey = ""; // ключ от api сайта (копируем,то что вставляли в autodemo.cfg
$steamapikey = ""; // http://steamcommunity.com/dev/apikey

date_default_timezone_set( "Europe/Moscow" ); // время по МСК

$admins = array(
    array (
        "name" => "pray and spray", // ник администратора
        "id" => "76561198069264171" // id профиля
    )
);

?>
ᅠᅠᅠᅠSQL запрос для создания базы (или уже готовый дамп в архиве)
PHP:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `demos`
--

-- --------------------------------------------------------

--
-- Table structure for table `INFO`
--

CREATE TABLE IF NOT EXISTS `INFO` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `SERVER` int(11) NOT NULL,
  `GAME` varchar(16) NOT NULL,
  `FILE` varchar(128) NOT NULL,
  `MAP` varchar(64) NOT NULL,
  `TIME` int(10) unsigned NOT NULL,
  `DURATION` float unsigned NOT NULL,
  `TICKS` int(10) unsigned NOT NULL,
  `SCORE1` int(11) NOT NULL,
  `SCORE2` int(11) NOT NULL,
  `NAMES` text NOT NULL,
  `CHAT` text NOT NULL,
  `NOTES` text,
  PRIMARY KEY (`ID`),
  KEY `TIME` (`TIME`),
  FULLTEXT KEY `PLAYERS` (`NAMES`,`CHAT`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7516 ;

-- --------------------------------------------------------

--
-- Table structure for table `PLAYERS`
--

CREATE TABLE IF NOT EXISTS `PLAYERS` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `MATCHID` int(11) NOT NULL,
  `ACCOUNT` int(10) unsigned NOT NULL,
  `BIGSTREAK` int(11) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `MATCH` (`MATCHID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=102291 ;

-- --------------------------------------------------------

--
-- Table structure for table `SERVERS`
--

CREATE TABLE IF NOT EXISTS `SERVERS` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(64) NOT NULL,
  `GAME` varchar(16) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
ᅠᅠᅠᅠНастройка sql_login.php
PHP:
<?php

$sql_addr = ''; // адрес SQL сервера
$sql_user = ''; // пользователь от SQL базы
$sql_password = ''; // пароль от SQL базы
$sql_database = ''; // имя SQL базы

?>

Шаг 4: Удаление демок и записей с сайта Оффтоп
C-подобный:
1. Настраиваем и заливаем файл [B]demormv.sh[/B] на ваш сайт
2. Создаем новое задание cron на период - "каждый день"
ᅠᅠᅠᅠНастройка demormv.sh
PHP:
#!/bin/sh
mysql -B -T --user=пользователь_базы --password=пароль_от_базы --database=имя_базы --execute='DELETE FROM `INFO` WHERE `TIME` < UNIX_TIMESTAMP(NOW() - INTERVAL 4 DAY);'
find /var/www/user1111/data/www/yoursite.ru/logs -type f -mtime +4 -delete //Путь до папки logs
find /var/www/user1111/data/www/yoursite.ru/logs -type d -mtime +4 -delete //Путь до папки logs
find /var/www/user1111/data/www/yoursite.ru/demos -type f -mtime +4 -delete //Путь до папки demos
find /var/www/user1111/data/www/yoursite.ru/demos -type d -mtime +4 -delete //Путь до папки demos
ᅠᅠᅠᅠКоманда cron
PHP:
sh /var/www/user3453/data/www/yoursite.ru/demormv.sh >/dev/null 2>&1 //путь до файла demormv.sh

Шаг 5: Для тех кто использует nginx необходимо в настройках в общую локацию добавить rewrite:
PHP:
location / {
rewrite ^/([0-9]+)$ /view.php?demo=$1 last;
}

Отличие архива для установки на MyArena:
Итак, фикс вебчасти для Арены.

В аттаче уже архив с прописанными правками - просто заливаем на веб, как указано в мане.

Вся соль в том, что на говнохосте арены нет расширения zip для php, которое скрипты по-умолчанию юзают.
Вывод - выпиливаем архивацию и оставляем демки в свободном полёте.
Дальше - сами правки:

register.php - комментируем блок
было
PHP:
// zip file to archive and delete
$zip = new ZipArchive;
$zip->open( "demos/$folder/$param_demo.zip", ZipArchive::CREATE );
$zip->addFile( "stage/$param_demo.dem", "$param_demo.dem" );
$zip->close();

стало:
PHP:
// zip file to archive and delete
//$zip = new ZipArchive;
//$zip->open( "demos/$folder/$param_demo.zip", ZipArchive::CREATE );
//$zip->addFile( "stage/$param_demo.dem", "$param_demo.dem" );
//$zip->close();

после
PHP:
// copy log file
copy( "stage/$param_demo.log", "logs/$folder/$param_demo.log" );
добавляем
PHP:
// copy demo file
copy( "stage/$param_demo.dem", "demos/$folder/$param_demo.dem" );

view.php
меняем
PHP:
'<div class="viewdemo downloadbutton"><a href="demos/' . $row['FILE'] . '.zip">Download</a></div><br>';
на
PHP:
'<div class="viewdemo downloadbutton"><a href="demos/' . $row['FILE'] . '.dem">Download</a></div><br>';

search.php
точно так же - меняем
PHP:
<td class="downloadlink" style="width:32px" ><a class="fastdl_link" href="demos/'.$row['FILE'].'.zip"><div></div></a></td>
на
PHP:
<td class="downloadlink" style="width:32px" ><a class="fastdl_link" href="demos/'.$row['FILE'].'.dem"><div></div></a></td>

Профит.

Установка завершена!

Благодарность

Фикс от взлома:
[CS:GO] Автозагрузка демок на сайт
[CS:GO] Автозагрузка демок на сайт


Плагин для CS:S - [CS:GO] Автозагрузка демок на сайт

Спасибо автору данной системы - pray'n'spray!
Отдельная благодарность @Tallanvor , @Hejter , @Forever Alone , @kolobok66rus !
Перевел WEB и выложил тему ThreshHNS
 

Вложения

  • demos.rar
    2.3 МБ · Просмотры: 3,607
  • demos_myarena.zip
    450.4 КБ · Просмотры: 1,356
Последнее редактирование модератором:

warlock

Участник
Сообщения
202
Реакции
8
Re: Автозагрузка демок на сайт

Хм. Звучит красиво.
Но немного не понял данную фразу из описания: просмотр демок с участием только Вас.
Как это понимать? Сервер пишет демку не от лица всех игроков? Имеется ли возможность посмотреть за игрой каждого игрока на сервере?
upd посмотрел ваш сайт, увидел ответ на свой вопрос (возможность просмотреть демку от своего лица, когда залогинишься на сайте через стим)
Другой вопрос. Вижу файлы с расширением .sh, на виндовом сервере так же работает это все?
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
552
Re: Автозагрузка демок на сайт

warlock, нет :)
Сами демки пишутся, как положено.

Фраза означает, что можно залогиниться на страницу с демками через SteamAPI и найти из всего списка именно те демки, где ты играл
Другими словами, поиск по стимайди в демках :)

Добавлено через 2 минуты
Другой вопрос. Вижу файлы с расширением .sh, на виндовом сервере так же работает это все?
Нет, там sh использовать не получится.

Но можно выкрутиться средствами винды или сторонним софтом.
Суть содержимого файла - очищать по расписанию устаревшие файлы и папки, так как в этом плане автор подкачал(
 
Последнее редактирование:

smoke96

Участник
Сообщения
1,126
Реакции
168
Re: Автозагрузка демок на сайт

В кс го нужно готв включать?
 

master117

Участник
Сообщения
275
Реакции
10
Re: Автозагрузка демок на сайт

несколько серверов поддерживает ведь?
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
552
Re: Автозагрузка демок на сайт

B1g, tv_enable 1 - это да.
А вот tv_autorecord нужно выставлять в 0 - или вообще не прописывать (0 - настройка по-умолчанию)

Добавлено через 46 секунд
несколько серверов поддерживает ведь?
Да сколько угодно)
 
Последнее редактирование:

ThreshHNS

Участник
Сообщения
248
Реакции
87
Re: Автозагрузка демок на сайт

master117, только для каждого сервера указывайте свой универсальный ключ (в файлах autodemo.cfg и config.php)
 

KapaT

Эгоист
Сообщения
1,988
Реакции
535
Re: Автозагрузка демок на сайт

ThreshHNS, можно сылку на оригинал статьи?
Почему не указано что нужно включать
может еще что то упустил? Патом вопросы почему не работает и т.д. Разжовуй как можно мельче.
Да и это только для КСГО? Патому что на КСС ошибка
PHP:
L 01/16/2016 - 10:57:32: [SM] Native "HookEvent" reported: Game event "cs_match_end_restart" does not exist
L 01/16/2016 - 10:57:32: [SM] Displaying call stack trace for plugin "autodemo.smx":
L 01/16/2016 - 10:57:32: [SM]   [0]  Line 209, E:\Steamcmd\power\csgo\addons\sourcemod\scripting\autodemo.sp::OnPluginStart()
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
552
Re: Автозагрузка демок на сайт

KapaT, весь фокус в том, что это и есть оригинал.
Собиралось всё и настраивалось методом научного тыка.

Был только исходник плагина - и всё.

Ещё потом выцепили структуру базы.

Дальше - наощупь.
Поэтому таких недочетов ещё много....
 

KapaT

Эгоист
Сообщения
1,988
Реакции
535
Re: Автозагрузка демок на сайт

KapaT, весь фокус в том, что это и есть оригинал.
Собиралось всё и настраивалось методом научного тыка.

Был только исходник плагина - и всё.

Ещё потом выцепили структуру базы.

Дальше - наощупь.
Поэтому таких недочетов ещё много....
Правильно понял что, это только начало и еще много сырого? Тогда просто пожелания по мере дополнения/усовершенствования обновлять первый пост, что б патом когда тема наберет 10+ страниц не искать инфу по всем страницам. Насчет КСС что?
 

AZA

/reset
Сообщения
883
Реакции
162
Re: Автозагрузка демок на сайт

KapaT, еванта нету такого в css
Game event "cs_match_end_restart" does not exist
 

KapaT

Эгоист
Сообщения
1,988
Реакции
535
Re: Автозагрузка демок на сайт

vaxa,я в курсе, просто не написано не где что статья только для ксго.
 

HooLIGUN

MatchMaking CS:S
Сообщения
1,022
Реакции
256
Такой вопрос:
У меня демки пишет сторонний плагин, и мне не нужно записывать их еще раз плагином autodemo.smx.
Будут ли перенесены демки, записанные сторонним плагином?
UPD:
Так под ксс не работает?
И как работает поиск игрока при авторизации: в демке или по логам?
 
Последнее редактирование:

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
552
HooLIGUN, ответ "нет" на первые два вопроса.
Насчёт поиска игрока:
плагин парсит лог, а потом прописывает инфу в БД.
 

ThreshHNS

Участник
Сообщения
248
Реакции
87
HooLIGUN, в название темы написано [CS:GO] и в описании так же.
 

ICE

Участник
Сообщения
122
Реакции
27
Если у меня сайт на одной VDS а сервера на другой эта конструкция будет работать?
 

ICE

Участник
Сообщения
122
Реакции
27
А на той вдс где сервера будут плодится демки(в папке с сервером)? Или после отгрузки на сайт демка удаляется с сервера?
--- Добавлено позже ---
Re: Автозагрузка демок на сайт

master117, только для каждого сервера указывайте свой универсальный ключ (в файлах autodemo.cfg и config.php)
А вот этого не понял. Вернее понял что в autodemo.txt можно для каждого сервера выставить свое значение, а в config.php как? Там же одна переменная $apikey....
Или можно так:
$apikey = "demo1";
$apikey = "demo2";
$apikey = "demo3";
Или я что-то не так понял?

И еще в логе вот что:
L 02/04/2016 - 18:41:58: [autodemo.smx] Started recording "auto-AWP#1-020416-184158-awp_arena.dem".
L 02/04/2016 - 19:20:03: [autodemo.smx] Stopped recording "auto-AWP#1-020416-184158-awp_arena.dem".
L 02/04/2016 - 19:20:05: [autodemo.smx] Couldn't open "addons/sourcemod/data/demos/auto-AWP#1-020416-184158-awp_arena.dem" for upload!
--- Добавлено позже ---
Демки в папке demos нет почему-то
 
Последнее редактирование:

ThreshHNS

Участник
Сообщения
248
Реакции
87
А на той вдс где сервера будут плодится демки(в папке с сервером)? Или после отгрузки на сайт демка удаляется с сервера?
--- Добавлено позже ---

А вот этого не понял. Вернее понял что в autodemo.txt можно для каждого сервера выставить свое значение, а в config.php как? Там же одна переменная $apikey....
Или можно так:
$apikey = "demo1";
$apikey = "demo2";
$apikey = "demo3";
Или я что-то не так понял?

И еще в логе вот что:
L 02/04/2016 - 18:41:58: [autodemo.smx] Started recording "auto-AWP#1-020416-184158-awp_arena.dem".
L 02/04/2016 - 19:20:03: [autodemo.smx] Stopped recording "auto-AWP#1-020416-184158-awp_arena.dem".
L 02/04/2016 - 19:20:05: [autodemo.smx] Couldn't open "addons/sourcemod/data/demos/auto-AWP#1-020416-184158-awp_arena.dem" for upload!
--- Добавлено позже ---
Демки в папке demos нет почему-то
Значение каждого сервера ты вставляешь в название сервера (autodemo txt), а это ключ для соединения сервера и веб.
 
Сверху Снизу