Вывод общего времени в таблицу ТОП15

Сообщения
55
Реакции
10
Помог
1 раз(а)
Привет всем. Подскажите как вывести общее время проведенное в игре? Плагин статистики by Neugomon.

P.S: В скриптинге не силен, поэтому прошу помощи тут. Я функцию вставил, но походу не ту ))
 

Вложения

Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Куда выводить то нужно?
 
Сообщения
55
Реакции
10
Помог
1 раз(а)
Sonyx, В таблицу ТОП15. Вот кусок кода
C++:
new buff[1535], len, i, name[32], iFrags, iDeaths;
new OldLen, bool:IsCut;
len += formatex(buff[len], charsmax(buff) - len, "<META http-equiv=Content-Type content='text/html;charset=UTF-8'><link href='http://neix.ru/aes/aes_v.css' rel=stylesheet type=text/css>");
#if defined KillAssist
len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Ник<th>Убийств<th>В голову<th>Смертей<th>Ассистов<th>Эфф.<th>Скилл<th>Время в игре</tr>");
#else
len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Ник<th>Убийств<th>В голову<th>Смертей<th>Эфф.<th>Скилл<th>Время в игре</tr>");
#endif
while(SQL_MoreResults(query))
{
SQL_ReadResult(query, 0, name, charsmax(name));

replace_string(name, charsmax(name), "<", "[");
replace_string(name, charsmax(name), ">", "]");

iFrags = SQL_ReadResult(query, 1);
iDeaths = SQL_ReadResult(query, 2);
//iShots = SQL_ReadResult(query, 4);
new iHS = SQL_ReadResult(query, 3);
//iHits = SQL_ReadResult(query, 5);
new Float:fSkill; SQL_ReadResult(query, 6, fSkill);

OldLen = len;
#if defined KillAssist
len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%d<td>%.2f%%<td><div id='%s'>%.0f</div><td>%d</tr>", ++i, name,
iFrags, iHS, iDeaths, SQL_ReadResult(query, 7), effec(iFrags, iDeaths), g_arrViewSkills[get_skill(fSkill)], fSkill, g_arrPlayerData[id][GameTime]);
#else
len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%.2f%%<td><div id='%s'>%.0f</div><td>%d</tr>", ++i, name,
iFrags, iHS, iDeaths, effec(iFrags, iDeaths), g_arrViewSkills[get_skill(fSkill)], fSkill, g_arrPlayerData[id][GameTime]);
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
На примере ТОПа



  • Т.к. запрос из БД впринципе не получает данные из столбца, нам пришлось добавить его.
    457 строка
    formatex(g_szQuery, charsmax(g_szQuery), "SELECT `nick`, `frags`, `deaths`, `hs`, `shots`, `hits`, `skill` FROM `players_stats` ORDER BY `skill` DESC LIMIT 15");
    ->
    formatex(g_szQuery, charsmax(g_szQuery), "SELECT `nick`, `frags`, `deaths`, `hs`, `shots`, `hits`, `skill`, `gametime` FROM `players_stats` ORDER BY `skill` DESC LIMIT 15");
  • После чего смотрим - какая функция обрабатывает данные после получения, в нашем случае, это SqlQueryHandler с переданным параметром data[0] = StatsTop15, ищем функцию, смотрим что параметр уходит в switch, ищем кейс с нужным значением.
    Наш кейс начинается на 533 строке:

    case StatsTop15:
  • Добавили новую переменную, куда запишем наше значение:
    new buff[1535], len, i, name[32], iFrags, iDeaths, iHits, iShots;
    ->
    new buff[1535], len, i, name[32], iFrags, iDeaths, iHits, iShots, iGametime;
  • Т. к. мы добавляем новый столбец, то и в код HTML его нужно добавить, начнем с шапки таблицы:
    C++:
    #if defined KillAssist   
    len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Nick<th>Frags<th>HS<th>Assists<th>Deaths<th>Shots<th>Hits<th>Eff<th>Acc<th>Skill</tr>");
    #else
    len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Nick<th>Frags<th>HS<th>Deaths<th>Shots<th>Hits<th>Eff<th>Acc<th>Skill</tr>");
    #endif

    ->
    C++:
    #if defined KillAssist   
    len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Nick<th>Frags<th>HS<th>Assists<th>Deaths<th>Shots<th>Hits<th>Eff<th>Acc<th>Skill<th>GameTime</tr>");
    #else
    len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Nick<th>Frags<th>HS<th>Deaths<th>Shots<th>Hits<th>Eff<th>Acc<th>Skill<th>GameTime</tr>");
    #endif

  • Дальше идет получение данных, мы же не хотим вывести пустое значение? Его нужно получить)
    C++:
    iFrags = SQL_ReadResult(query, 1);
    iDeaths = SQL_ReadResult(query, 2);
    iShots = SQL_ReadResult(query, 4);
    iHits = SQL_ReadResult(query, 5);
    new Float:fSkill; SQL_ReadResult(query, 6, fSkill);

    ->

    C++:
    iFrags = SQL_ReadResult(query, 1);
    iDeaths = SQL_ReadResult(query, 2);
    iShots = SQL_ReadResult(query, 4);
    iHits = SQL_ReadResult(query, 5);
    new Float:fSkill; SQL_ReadResult(query, 6, fSkill);
    iGametime = SQL_ReadResult(query, 7);


    Почему 7? Потому что в SQL запросе у нас 8 значений, которые нумеруются начиная с нуля.
  • Остается добавить вывод нашего значения в каждую строку игрока:

    C++:
    #if defined KillAssist   
    len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%d<td>%.2f%%<td>%.2f%%<td>%s</tr>", ++i, name,
    iFrags, SQL_ReadResult(query, 3), SQL_ReadResult(query, 7), iDeaths, iShots, iHits, effec(iFrags, iDeaths), accuracy(iHits, iShots), g_arrViewSkills[get_skill(fSkill)]);
    #else
    len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%.2f%%<td>%.2f%%<td>%s</tr>", ++i, name,
    iFrags, SQL_ReadResult(query, 3), iDeaths, iShots, iHits, effec(iFrags, iDeaths), accuracy(iHits, iShots), g_arrViewSkills[get_skill(fSkill)]);
    #endif

    ->

    C++:
    #if defined KillAssist   
    len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%d<td>%.2f%%<td>%.2f%%<td>%s<td>%d</tr>", ++i, name,
    iFrags, SQL_ReadResult(query, 3), SQL_ReadResult(query, 7), iDeaths, iShots, iHits, effec(iFrags, iDeaths), accuracy(iHits, iShots), g_arrViewSkills[get_skill(fSkill)], iGametime);
    #else
    len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%d<td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%.2f%%<td>%.2f%%<td>%s<td>%d</tr>", ++i, name,
    iFrags, SQL_ReadResult(query, 3), iDeaths, iShots, iHits, effec(iFrags, iDeaths), accuracy(iHits, iShots), g_arrViewSkills[get_skill(fSkill)], iGametime);
    #endif
Единственный момент - время в статистике пишется в секундах, при желании можно добавить функцию перевода в минуты/часы/дни/месяцы​
 
Последнее редактирование:
Сообщения
55
Реакции
10
Помог
1 раз(а)
Sonyx, Я понимаю, что наглость с моей стороны ) Но как перевести это в часы/минуты?
 
Сообщения
55
Реакции
10
Помог
1 раз(а)
Sonyx, Да вот что-то не получилось ))
Код:
new iHour = (iGameTime / 3600);
new iMin = (iGameTime / 60);

Код:
<td>%dЧасов %02dМин</tr>

Код:
iHour, iMin);

Правильно? Выдит немного не то ))
26 Ноя 2017
Все получилось, сам тупанул ))) Надо было так
Код:
new iHour = (iGameTime / 3600);
new iMin = ((iGameTime % 3600)/60);

И вывод так
Код:
<td>%02dЧас. %02dМин</tr>

Можно закрывать ))) Как поставить спасибо тут не знаю (
 
Сообщения
18
Реакции
10
Помог
1 раз(а)
Код:
new iHour = (iGameTime / 3600);
new iMin = ((iGameTime % 3600)/60);

куда это приписывать?
 
Последнее редактирование модератором:
Сообщения
55
Реакции
10
Помог
1 раз(а)
resobatata, Сюда
Код:
case StatsTop15:
{
if(!SQL_NumResults(query))
client_print_color(id, 0, "^1[^4Stats^1] Нет данных из MySQL.");
else
{

new buff[1535], len, i, name[32], iFrags, iDeaths, iGameTime;
new OldLen, bool:IsCut;
len += formatex(buff[len], charsmax(buff) - len, "<META http-equiv=Content-Type content='text/html;charset=UTF-8'><link href='http://neix.ru/aes/aes_v.css' rel=stylesheet type=text/css>");
#if defined KillAssist
len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Ник<th>Убийств<th>В голову<th>Смертей<th>Ассистов<th>Эфф.<th>Скилл<th>Время в игре</tr>");
#else
len += formatex(buff[len], charsmax(buff) - len, "<table><tr><th>#<th>Ник<th>Убийств<th>В голову<th>Смертей<th>Эфф.<th>Скилл<th>Время в игре</tr>");
#endif
while(SQL_MoreResults(query))
{
SQL_ReadResult(query, 0, name, charsmax(name));

replace_string(name, charsmax(name), "<", "[");
replace_string(name, charsmax(name), ">", "]");

iFrags = SQL_ReadResult(query, 1);
iDeaths = SQL_ReadResult(query, 2);
iGameTime = SQL_ReadResult(query, 8);
//iShots = SQL_ReadResult(query, 4);
new iHS = SQL_ReadResult(query, 3);
//iHits = SQL_ReadResult(query, 5);
new Float:fSkill; SQL_ReadResult(query, 6, fSkill);
new iHour = (iGameTime / 3600);
new iMin = ((iGameTime % 3600)/60);


Найди в коде
Код:
case StatsTop15
и после него где объявляются переменные
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу