[Stats MySQL] Проверка кода, вопросы

Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Доброго времени суток. Решил не плодить куча тем.
Вопросы будут касаться написание своей статистики игроков(под свои нужды), а так же проверка окончательного кода, подсказки, критика, предложения и т.д.

Отдельная благодарность BlackSignature, fantom, wopox1337, bionext, Mistrick за помощь в решение различных вопросов, обучения, объяснение различных моментов/тонкостей работы кода.

А теперь по делу. На сколько актуально вообще выносить данную проверку is_user_connected(iKiller) за пределы события убийства?
Стоит ли так делать, есть ли вообще смысл и будет ли правильно работать такая "оптимизация" в данном случаи?
Вопрос для общих знаний и понимания.

C++:
public CBasePlayer_Killed(const iVictim, const iKiller, iGib) {
    if(!is_user_connected(iKiller)) return PLUGIN_CONTINUE;
}
Например при коннекте игрока g_bConnect[id] = true;

И далее по коду

C++:
public CBasePlayer_Killed(const iVictim, const iKiller, iGib) {
    if(!g_bConnect[iKiller]) return PLUGIN_CONTINUE;
}
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
сколько актуально вообще выносить данную проверку is_user_connected(iKiller) за пределы события убийства?
Убийцей может быть не игрок.

И далее по коду
Тогда уж g_bConnected[iKiller]

Для ReAPI свои значения возврата: HC_CONTINUE, HC_SUPERCEDE, HC_BREAK.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Убийцей может быть не игрок.
В этом случаи g_bConnect будет false и операция не пойдет дальше.

Да это понятно, в спешки писал. Поправил.

Для ReAPI свои значения возврата: HC_CONTINUE, HC_SUPERCEDE, HC_BREAK.
Точно. Но и так работает тоже.
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, понял, значит в данном случае лучше оставить проверку в самом событии. )
23 Мар 2019
#2
Куча проблем с отображением топ игроков в мотд-окне.

1. Спустя время, каким то чудом, съехало отображение картинка с левелом, хотя до этого проблем таких не было.
В чем заключается магия так я и не понял, ибо, как вообще возможно съехаться только одной картинки...

2. В стиме не получается отцентровать текст <div'a>(Топ лучших игроков)
Как не пробовал по центру не встает, только если в самом плагине написать <center>
2019-03-23_223811.png

3. На удивление в GS-Клиенте текст шапки по центру, но нету округление по краям, проблема с картинкой скила осталась.
2019-03-23_223851.png

4. А уже про стареникий билд вообще молчу, там все через одно место, но, на удивление, игроки все еще играют с этой версией.
2019-03-23_223923.png

Как это все привести в один вид для всех я ума не приложу, это что-то...

37.230.210.128:27020
Команда: /tp

Стиль: тык

Кусочег кода
C++:
        case SQL_GETTOP: {
            Logging(g_sLogsDir, "stats_inform_", "^"[SQL_GETTOP] Queue Time %f^"", fQueueTime);
      
            new sMotd[MOTD_STRLEN], sTableRowClass[TABLE_ROW_CLASS_STRLEN], iLen, iPos;
      
            iLen = formatex(sMotd[iLen], charsmax(sMotd),
                "<meta charset=utf-8> \
                <link href=^"http://filestorage.gmforce.ru/game-force/players_stats/stats.css^" rel=stylesheet type=text/css> \
                <body> \
                <div class=o>Топ лучших игроков</div></br> \
                <table class=q> \
                <tr> \
                <th width=3%%># \
                <th width=37%%>Игрок \
                <th width=15%%>Убийств \
                <th width=15%%>Смертей \
                <th width=15%%>В голову \
                <th width=15%%>Скилл"
            );
      
            while(SQL_MoreResults(hQuery)) {
                new sPlayerName[PLAYER_NAME_STRLEN], iKills, iDeaths, iHead, Float:fSkill;
          
                SQL_ReadResult(hQuery, 1, sPlayerName, charsmax(sPlayerName));
                iKills = SQL_ReadResult(hQuery, 2);
                iDeaths = SQL_ReadResult(hQuery, 3);
                iHead = SQL_ReadResult(hQuery, 4);
                SQL_ReadResult(hQuery, 5, fSkill);
          
                iPos++;
                sTableRowClass = (iPos % 2) ? "class=b" : "";
          
                new sSkillName[SKILL_NAME_STRLEN];
                sSkillName = GetSkillName(fSkill);
                replace(sSkillName, SKILL_NAME_STRLEN, "+", "p");
                replace(sSkillName, SKILL_NAME_STRLEN, "-", "m");
          
                iLen += formatex(sMotd[iLen], charsmax(sMotd) - iLen,
                    "<tr %s><td>%d<td>%s<td>%d<td>%d<td>%d<td class=%s></tr>",
                    sTableRowClass, iPos, sPlayerName, iKills, iDeaths, iHead, sSkillName
                );
                SQL_NextRow(hQuery);
            }
            new id = aData[1];
            show_motd(id, sMotd, "Топ игроков");
        }
23 Мар 2019
Заметил вот что, проблема с картинкой скила только у игрока "Замужем"
В базе данных игрок храниться как

2019-03-24_001926.png

В топе он выглядит иначе

2019-03-24_002048.png

Как так могло произойти? Число фрагов приплилось к нику, то есть 157 фрагов теперь в нике, по факту, как я понял произошло какое-то смещение именно с этим ником.
 
Последнее редактирование:
Сообщения
285
Реакции
251
Помог
7 раз(а)
Заметил вот что, проблема с картинкой скила только у игрока "Замужем"
В базе данных игрок храниться как

Посмотреть вложение 15596

В топе он выглядит иначе

Посмотреть вложение 15597

Как так могло произойти? Число фрагов приплилось к нику, то есть 157 фрагов теперь в нике, по факту, как я понял произошло какое-то смещение именно с этим ником.

Возможно, надо прогонять ники через replace_all
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, пробовал, если правильно пробовал)

C++:
iLen += formatex(sMotd[iLen], charsmax(sMotd) - iLen,
    "<tr %s><td>%d<td>^"%s^"<td>%d<td>%d<td>%d<td class=%s></tr>",
    sTableRowClass, iPos, sPlayerName, iKills, iDeaths, iHead, sSkillName
);
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, html иначе экранируется? ) Тогда получается нужно действительно через replace_all ?
23 Мар 2019
как я понял тут нужно <> заменить на
Код:
&gt;
А если быть точнее, то скорее всего все это

2019-03-24_010108.png
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
А если быть точнее, то скорее всего все это
Да. Но только готового увы нету. Придется делать самому. А в целом вопрос зачем заморачиватся на павне, если можно отобразит ьв мотд через УРЛ с сайта. Ведь проще же доверить это языку который заточен под веб
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, дык, у меня база на соседей вдс висит без лишних пакетов, чисто мускул, мне придется туда сайт пилить дополнительно получается для таких целей.
 
Последнее редактирование:
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Javekson, Ну для меня лично выбор очевиден, но для вас это просто рекомендация. Тут решайте сами
 
Сообщения
285
Реакции
251
Помог
7 раз(а)
C++:
replace_nickname(sPlayerName, charsmax(sPlayerName));

replace_nickname(dest[], len){

    replace_all(dest, len, "<", "&lt;");
    replace_all(dest, len, ">", "&gt;");
    replace_all(dest, len, "&", "amp;");
    replace_all(dest, len, "^"", "&quot;");
    replace_all(dest, len, "'", "&#x60;");
}
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Ну для меня лично выбор очевиден, но для вас это просто рекомендация.
Не удивлен, но загрузка с сайта обычно занимает еще больше времени для отображения, во всяком случае моментальной загрузки инфы я никогда не видел.
24 Мар 2019
Но это пол беды, что мне делать с кривым отображением для разных версий клиента, в частности почему не центрируется текст шапки, может быть есть другие стилевые свойства.
 
Последнее редактирование:
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Но это пол беды, что мне делать с кривым отображением для разных версий клиента, в частности почему не центрируется текст шапки, может быть есть другие стилевые свойства.
Потому что браузер, встроенный в клиент игры разный. Старые пиратки имеют под капотом IE 5, который не поддерживает стандарты HTML5, CSS3, JS.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Sonyx, что-то подобное я и подозревал, но в стиме то почему по центру не встает =D
24 Мар 2019
Sonyx, и еще скорее всего какой-то кеш остается, ибо спустя ночь текст встал по центру но округления убрались, радиус перестал работать =D
Это кеш как-то чистить можно?
 
Сообщения
1,539
Реакции
2,318
Помог
39 раз(а)

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

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