Статья о том как интегрировать игру,dle и psychostats в прикольный аддон
Суть:
Человек хочет играть на вашем сервере,он должен зайти к вам на сайт и зарегистрироваться. После регистрации он должен играть под ником и паролем который указал на сайте. Пока он не набрал 100 фрагов,он не имеет флагов и является гостем. Как только он набрал 100 фрагов,ему присваивается флаг z (пользователь),как только он набрал 500 фрагов ему присваевается флаг а иммунитет (нельзя кикнуть/забанить/убить/стукнуть и прочее),как только он набрал 1000 фрагов ему присваиваются флаги ac ну и т.д.
плюсы данной системы:
1) например у вас на сервере правило: гость должен соблюдать соотношение фрагов и смертей 1/1 (как на многих серверах в инете) то ему проще зарегистрироваться и играть всегда под своим логином.
когда человек всегда под 1 логином его проще контролировать.
2) если человек долго играл под своим логином и набрал достаточное количество фрагов,ему будет страшно читирить т.к. в правилах нужно указать Если спалили с читом,то статистика обнуляется. И установить hltv с хранением демок на веб ресурсе,для всеобщего суда читера.
3) посещаемость на сайте
4) легкий контроль
5) интерес пользователей играть именно у вас т.к. каждый может получить права (злоупотребление правами карается обнулением)
Приступим :)
1)Установленный движок портала DataLife Engine
Скачать:
2)Статистика PsychoStats 3.1
Скачать:
3)AMXMODX
Нужно установить dle и pstats в одну базу!!
итак мы имее установленную dle, pstats и сервер с amxmodx
по пунктам:
1) Добавить поля в таблицу dle_users
auth тип varchar(32)
access тип varchar(32)
flags тип varchar(32)
plrid тип int(10)
kills тип int(10)
access тип varchar(32)
flags тип varchar(32)
plrid тип int(10)
kills тип int(10)
Для этого открываем таблице Dle_users,тыкаем структура,внизу выбираем добавить
И по очереди создаем таблицы
2) Добавить проверку данных с pstats и автоматическую раздачу прав
1)открыть файл engine/modules/cron.php
2)найти строчку(41 строка для ленивых)
@unlink( ENGINE_DIR . '/cache/system/banned.php' );
и ниже добавить:
//присваеваем id юзера с pstats к юзеру dle //
$db->query("UPDATE dle_users, ps_plr SET dle_users.plrid=ps_plr.plrid WHERE dle_users.name = ps_plr.uniqueid");
//проверяем сколько убийств у юзера и записываем в профиль юзера dle //
$db->query("UPDATE dle_users, ps_c_plr_data SET dle_users.kills=ps_c_plr_data.kills WHERE dle_users.plrid = ps_c_plr_data.plrid");
//настраиваем привелегии//
$db->query("UPDATE dle_users SET dle_users.access='' WHERE dle_users.kills query("UPDATE dle_users SET dle_users.access='z' WHERE dle_users.kills > '100'"); //если больше 100 убийств выдается флаг z//
$db->query("UPDATE dle_users SET dle_users.access='a' WHERE dle_users.kills > '500'"); //если больше 500 убийств выдается флаг a//
$db->query("UPDATE dle_users SET dle_users.access='ac' WHERE dle_users.kills > '800'"); //если больше 800 убийств выдается флаг ac//
$db->query("UPDATE dle_users SET dle_users.access='acij' WHERE dle_users.kills > '1200'"); //если больше 1200 убийств выдается флаг acij//
$db->query("UPDATE dle_users SET dle_users.access='acijdu' WHERE dle_users.kills > '2000'"); //если больше 2000 убийств выдается флаг acijdu//
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu' WHERE dle_users.user_id = '1'"); //главному админу dle т.е. вам флаги abcdefghijklmnopqrstu//
$db->query("UPDATE dle_users, ps_plr SET dle_users.plrid=ps_plr.plrid WHERE dle_users.name = ps_plr.uniqueid");
//проверяем сколько убийств у юзера и записываем в профиль юзера dle //
$db->query("UPDATE dle_users, ps_c_plr_data SET dle_users.kills=ps_c_plr_data.kills WHERE dle_users.plrid = ps_c_plr_data.plrid");
//настраиваем привелегии//
$db->query("UPDATE dle_users SET dle_users.access='' WHERE dle_users.kills query("UPDATE dle_users SET dle_users.access='z' WHERE dle_users.kills > '100'"); //если больше 100 убийств выдается флаг z//
$db->query("UPDATE dle_users SET dle_users.access='a' WHERE dle_users.kills > '500'"); //если больше 500 убийств выдается флаг a//
$db->query("UPDATE dle_users SET dle_users.access='ac' WHERE dle_users.kills > '800'"); //если больше 800 убийств выдается флаг ac//
$db->query("UPDATE dle_users SET dle_users.access='acij' WHERE dle_users.kills > '1200'"); //если больше 1200 убийств выдается флаг acij//
$db->query("UPDATE dle_users SET dle_users.access='acijdu' WHERE dle_users.kills > '2000'"); //если больше 2000 убийств выдается флаг acijdu//
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu' WHERE dle_users.user_id = '1'"); //главному админу dle т.е. вам флаги abcdefghijklmnopqrstu//
Количество убийств и флаги можете сами менять на свои!
3) Добавить заполнение полей при регистрации пользователя на сайте.
В данном файле заполняем поле auth которое рано полю name. поле auth нужно для авторизации на сервере cs. Какой ник зарегистрирует юзер на сайте,с тем ему и придется играть на сервере.
1)отрыть файл engine/modules/register.php
найти строчку(395 для ленивых)
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );
Заменить на:
$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, auth, access, flags, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$name', '', 'name', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );
4) Добавляем возможность вывод информации на сайте о игроке, его правах и сколько ему осталось до следующего статуса.
1)открыть файл engine/modules/profile.php
2)найти строчку(324 строка для ленивых)
$tpl->set( '{lastdate}', langdate( "j F Y H:i", $row['lastdate'] ) );
ниже добавить:
$tpl->set( '{flags}', stripslashes( $row['flags'] ) );
$tpl->set( '{access}', stripslashes( $row['access'] ) );
if( $row['kills'] set( '{kills}', "Гость [ Фрагов - " .$row['kills']." до Пользователь осталось: $sum ]" );
} elseif( $row['kills'] > 100 ) {
$sum = 500 - $row['kills'];
$tpl->set( '{kills}', "Пользователь [ Фрагов - " .$row['kills']." до Постоялец осталось: $sum ]" );
} elseif( $row['kills'] > 500 ) {
$sum = 800 - $row['kills'];
$tpl->set( '{kills}', "Постоялец [ Фрагов - " .$row['kills']." до Постоялец с правами осталось: $sum ]" );
} elseif( $row['kills'] > 800 ) {
$sum = 1200 - $row['kills'];
$tpl->set( '{kills}', "Постоялец с правами [ Фрагов - " .$row['kills']." до Эксперт осталось: $sum ]" );
} elseif( $row['kills'] > 1200 ) {
$sum = 2000 - $row['kills'];
$tpl->set( '{kills}', "Эксперт [ Фрагов - " .$row['kills']." до Админ осталось: $sum ]" );
} elseif( $row['kills'] > 2000 ) {
$tpl->set( '{kills}', "Админ [ Фрагов - " .$row['kills']." ]" );
}
$tpl->set( '{access}', stripslashes( $row['access'] ) );
if( $row['kills'] set( '{kills}', "Гость [ Фрагов - " .$row['kills']." до Пользователь осталось: $sum ]" );
} elseif( $row['kills'] > 100 ) {
$sum = 500 - $row['kills'];
$tpl->set( '{kills}', "Пользователь [ Фрагов - " .$row['kills']." до Постоялец осталось: $sum ]" );
} elseif( $row['kills'] > 500 ) {
$sum = 800 - $row['kills'];
$tpl->set( '{kills}', "Постоялец [ Фрагов - " .$row['kills']." до Постоялец с правами осталось: $sum ]" );
} elseif( $row['kills'] > 800 ) {
$sum = 1200 - $row['kills'];
$tpl->set( '{kills}', "Постоялец с правами [ Фрагов - " .$row['kills']." до Эксперт осталось: $sum ]" );
} elseif( $row['kills'] > 1200 ) {
$sum = 2000 - $row['kills'];
$tpl->set( '{kills}', "Эксперт [ Фрагов - " .$row['kills']." до Админ осталось: $sum ]" );
} elseif( $row['kills'] > 2000 ) {
$tpl->set( '{kills}', "Админ [ Фрагов - " .$row['kills']." ]" );
}
ВНИМАНИЕ!!! если вы поменяли значения на свои в файле cron.php то тут вам тоже нужно изменить на те что вписали в cron.php
5)Добавляем сам вывод информации игрока в шаблон сайта.
1)Открыть файл templates/Шаблон/userinfo.tpl
2)Найти строчку
E-Mail адрес: [ {email} ] [ {pm} ] {edituser}
ниже добавить:
Информация игрока на сервере CS 1.6
Ник в игре: {usertitle}
Статус: {kills}
Права: {access}
6) Меняем стандартный режим cron.php на обновление 1 раз в 30 минут
1)Открыть файл engine/init.php
2)найти строчку:(48 для ленивых)
if (date ( "Y-m-d", $cron_time ) query("UPDATE dle_users, ps_c_plr_data SET dle_users.kills=ps_c_plr_data.kills WHERE dle_users.plrid = ps_c_plr_data.plrid");
//настраиваем привелегии//
$db->query("UPDATE dle_users SET dle_users.access='' WHERE dle_users.kills query("UPDATE dle_users SET dle_users.access='z' WHERE dle_users.kills > '100'"); //если больше 100 убийств выдается флаг z//
$db->query("UPDATE dle_users SET dle_users.access='a' WHERE dle_users.kills > '500'"); //если больше 500 убийств выдается флаг a//
$db->query("UPDATE dle_users SET dle_users.access='ac' WHERE dle_users.kills > '800'"); //если больше 800 убийств выдается флаг ac//
$db->query("UPDATE dle_users SET dle_users.access='acij' WHERE dle_users.kills > '1200'"); //если больше 1200 убийств выдается флаг acij//
$db->query("UPDATE dle_users SET dle_users.access='acijdu' WHERE dle_users.kills > '2000'"); //если больше 2000 убийств выдается флаг acijdu//
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu' WHERE dle_users.user_id = '1'"); //главному админу dle т.е. вам флаги abcdefghijklmnopqrstu//
//настраиваем привелегии//
$db->query("UPDATE dle_users SET dle_users.access='' WHERE dle_users.kills query("UPDATE dle_users SET dle_users.access='z' WHERE dle_users.kills > '100'"); //если больше 100 убийств выдается флаг z//
$db->query("UPDATE dle_users SET dle_users.access='a' WHERE dle_users.kills > '500'"); //если больше 500 убийств выдается флаг a//
$db->query("UPDATE dle_users SET dle_users.access='ac' WHERE dle_users.kills > '800'"); //если больше 800 убийств выдается флаг ac//
$db->query("UPDATE dle_users SET dle_users.access='acij' WHERE dle_users.kills > '1200'"); //если больше 1200 убийств выдается флаг acij//
$db->query("UPDATE dle_users SET dle_users.access='acijdu' WHERE dle_users.kills > '2000'"); //если больше 2000 убийств выдается флаг acijdu//
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu' WHERE dle_users.user_id = '1'"); //главному админу dle т.е. вам флаги abcdefghijklmnopqrstu//
на:
$db->query("UPDATE dle_users SET dle_users.access='', dle_users.zvanie='Гость' WHERE dle_users.kills query("UPDATE dle_users SET dle_users.access='z', dle_users.zvanie='Пользователь' WHERE dle_users.kills > '100'");
$db->query("UPDATE dle_users SET dle_users.access='a', dle_users.zvanie='Постоялец' WHERE dle_users.kills > '500'");
$db->query("UPDATE dle_users SET dle_users.access='ac', dle_users.zvanie='Постоялец с правами' WHERE dle_users.kills > '800'");
$db->query("UPDATE dle_users SET dle_users.access='acij', dle_users.zvanie='Эксперт' WHERE dle_users.kills > '1200'");
$db->query("UPDATE dle_users SET dle_users.access='acijdu', dle_users.zvanie='Админ' WHERE dle_users.kills > '2000'");
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu', dle_users.zvanie='Главный' WHERE dle_users.user_id = '1'");
$db->query("UPDATE dle_users SET dle_users.access='a', dle_users.zvanie='Постоялец' WHERE dle_users.kills > '500'");
$db->query("UPDATE dle_users SET dle_users.access='ac', dle_users.zvanie='Постоялец с правами' WHERE dle_users.kills > '800'");
$db->query("UPDATE dle_users SET dle_users.access='acij', dle_users.zvanie='Эксперт' WHERE dle_users.kills > '1200'");
$db->query("UPDATE dle_users SET dle_users.access='acijdu', dle_users.zvanie='Админ' WHERE dle_users.kills > '2000'");
$db->query("UPDATE dle_users SET dle_users.access='abcdefghijklmnopqrstu', dle_users.zvanie='Главный' WHERE dle_users.user_id = '1'");
4)Открываем файл engine/modules/profile.php
находим строку:
$tpl->set( '{lastdate}', langdate( "j F Y H:i", $row['lastdate'] ) );
после добавим:
$tpl->set( '{zvanie}', stripslashes( $row['zvanie'] ) );
4) Открыть файл templates/Шаблон/userinfo.tpl
находим строку:
Статус: {kills}
ниже добавить:
Звание: {zvanie}
Готово....
Вот что у нас получается в вообщем
Статья взята:amxserv.net
Изменена и переписана:crash94 :)