• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.
Иконка ресурса

Add-on CMSStats Gametime Award 1.0

Нет прав для скачивания

zhorzh78

Администратор
Сообщения
3,468
Решения
30
Реакции
1,399
Баллы
113
zhorzh78 добавил(а) новый ресурс:

CMSStats Gametime Award - Плагин для выдачи флагов игрокам с наибольшим временем игры на сервере

Плагин выдает флаги доступа игрокам, которые провели наибольшее время в игре на сервере

Требования:
GameCMS API
CMSStats MySQL

Настройки:
C++:
/*==== настройки ======*/
new g_iLimitForTop = 3;                     //сколько первых n - топ-игроков наградить
new const g_szFlags[] =...

Узнать больше об этом ресурсе...
 
Тоже неполучается скопилировать
 
Всем привет, периодически плагин сыпет ошибки в логи
L 06/16/2021 - 15:58:30: [AMXX] Run time error 4: index out of bounds
L 06/16/2021 - 15:58:30: [AMXX] [0] gamecms_time_awards.sma::CheckAwards (line 223)
L 06/16/2021 - 15:58:30: [AMXX] [1] gamecms_time_awards.sma::player_spawn (line 156)
Подскажите, в чем причина
 
можно ли в плагин добавить на сколько выдается награда ?
 
Строка 45
PHP:
cmsapi_set_user_flags(iClient, g_szFlags, -1, g_szAward, true);
где -1- время в секундах.
* -1- на карту
* больше 0- время в секундах.
 
Такое предложение, может стоит добавить ограничение на количество наград в сутки.
То есть, отыграл пол часа, получил свои 5 рублей, вышел на 15 минут. снова можешь их получить. и так по кругу, ладно когда пол часа час, но например люди за 2 часа умудряются получив награду, снова до нее дойти. и тогда суммы получаются приличные за день.а вот было бы ограничение, что максимальную сумму получив, в этот день для тебя отключаются бонусы... Можно ведь такие данные из статистики подтянуть как то?
 
SPIRIT, о чем речь? Описание плагина прочтите.
 
zhorzh78, простите, названия очень похожи, я по названию плагина тему нашел, а не та...можно удалить мои сообщения тут?
 
Извиняюсь, что не совсем по теме, скажите а такого же, только для награды топу за первое место в статистике (в моём случае по skill) не делался? Не могу найти.

Или достаточно просто в запросе изменить запрашиваемое поле?
 
Или достаточно просто в запросе изменить запрашиваемое поле?
Измените, проверьте и расскажете остальным. Мне, зачастую, ваша позиция не понятна. Будто у вас 3 попытки и ошибиться никак нельзя.
 
Измените, проверьте и расскажете остальным. Мне, зачастую, ваша позиция не понятна. Будто у вас 3 попытки и ошибиться никак нельзя.
Я понял.. лучше поменьше задавать вопросов на форуме. Тишину нарушаю...
 
лучше поменьше задавать вопросов на форуме
Я раскрою секрет. Когда вы задаете вопрос, с которым никто не сталкивался, то я или другой участник попытается найти на него ответ. И будет делать такие же действия, которые с равным успехом, можете сделать вы сами. Теперь себе задайте вопрос- кому проще проверить то, что вас интересует- вам или нам?
 
Это наверное больше к правильности построения запросов sql относится, но всё же
Код:
formatex(szQuery, charsmax(szQuery), "SELECT `place`, MAX(gametime) gametime FROM `csstats_players` GROUP BY gametime DESC LIMIT %d", g_iLimitForTop)

Родной запрос отрабатывает правильно. Но если его немного скорректировать, на предмет отсеивания лишних where `gametime` >= 18000

Код:
formatex(szQuery, charsmax(szQuery), "SELECT `place`, MAX(gametime) gametime FROM `csstats_players` where `gametime` >= 18000 GROUP BY gametime DESC LIMIT %d", g_iLimitForTop)

То при проверке в phpmyadmin запрос отрабатывает как положено
1738538729496.png
Но в игре плагин уходит в stopped, как я понял по причине отсутствующего результата
Код:
    if(!SQL_NumResults(query))
    {
        pause("ad");
        return;
    }

MAX и WHERE конфликтуют меж собой
 
Последнее редактирование:
А вот так нормально.
Код:
    formatex(szQuery, charsmax(szQuery), "SELECT `place`, `gametime` FROM `csstats_players` where `gametime` > 18000 ORDER BY `gametime` DESC LIMIT %d", g_iLimitForTop)
 
А вот так нормально.
Код:
    formatex(szQuery, charsmax(szQuery), "SELECT `place`, `gametime` FROM `csstats_players` where `gametime` > 18000 ORDER BY `gametime` DESC LIMIT %d", g_iLimitForTop)
Отбой. Сообщение лучше удалить. Нормально - если онлайн меньше 18000. Если больше 18000 , то все топы.
Что-то видимо не так с обработчиком. Потому, что через phpmyadmin запрос отдаёт нормально..
 
Последнее редактирование:
Похоже нашёл проблему.
Код:
new szQuery[100];
То есть более длинному запросу не хватало места для символов. Сделал
Код:
new szQuery[500];
и похоже теперь всё в порядке.

То есть запрос обрывался в том месте, где нужно было учесть DESC LIMIT. И в итоге оборванный запрос возвращал всех игроков с gametime > 18000
 
Назад
Сверху