Главная Форум Файлы Статьи СОСТАВ ZH&ZHS О НАС GITHUB КАНАЛ YouTube BlackList WhiteList
Добро пожаловать на уникальный игровой портал ZETA-HACK TEAM! Здесь Вы сможете найти самые интересные новости из мира игровой индустрии, найти самые свежие сотфины для различных онлайн игр, общаясь на форуме получать мнения специалистов и помогать тем кто не смог получить нужный ответ в той или иной сфере!
Авторизация Регистрация
Последние обсуждаемые темы на форуме
Последние комментарии к новостям
Топ-10 форумчан
SOURCE-X =AlexDrift= 0
array must be indexed AdCKuY_DpO4uLa 2
Таймер AdCKuY_DpO4uLa 2
TextDraw AdCKuY_DpO4uLa 2
tag mismatch AdCKuY_DpO4uLa 1
Задержка AdCKuY_DpO4uLa 2
Кракозябры в RakSamp'e AdCKuY_DpO4uLa 2
Списк обнаруженых багов сайта =AlexDrift= 14
- vitalik313RUSRUSRUS 4
Заявка JustSnile 6
x-gaming dm 0.3e 23.05.2019
x-gaming dm 0.3e 12.05.2019
x-gaming dm 0.3e 12.05.2019
Microsoft назвала дату смерти Windows 7 25.04.2019
[0.3е]Русский ДМ сервер 18.04.2019
[0.3.7]Forward-Evolution DM by [KrYpToDe... 18.04.2019
[DM] UNIVERSAL SERVER 18.04.2019
[GTA SAMP] Закрытие игры при вылете 27.02.2019
Microsoft назвала дату смерти Windows 7 26.02.2019
•Pro•Dm•Server• 15.01.2019
1. =AlexDrift= 531
2. Pahanch1kkk 45
3. InFerNo 35
4. R4DUGA 32
5. AdCKuY_DpO4uLa 32
6. d1amondl1on 31
7. [NACIONAL]IST_BERZ 23
8. Julia 21
9. Lil_Jonson 17
10. Effect 15
Витрина ссылок Купить ссылку (4 р.) » | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка

  • Страница 1 из 1
  • 1
Форум » Pawno программирование » Мануалы/Уроки » Готовые решения » Слет аккаунтов на mySQL R-39
Слет аккаунтов на mySQL R-39
14.01.2019 в 01:10
#1
=AlexDrift=
Не важны козыри если игра не на счет...
Статус: Offline
Регистрация: 24.11.2012
Сообщения: 531
Репутация: 84
Что бы добавить медаль "Легенда портала" добавляем в ?if "or 1='ID пользователя'"
Что бы добавить медаль "Золотой страж" добавляем в ?if "or 1='ID пользователя'"
Суть системы та  же: она будет удалять неактивные аккаунты, т.е. те аккаунты, владельцы которых не заходили на сервер более N-дней (указывается в макросе - define).
Настройки:
Настраивается система просто, на дефайнах. Там можно указать кол-во дней, за который аккаунт считается неактивным. Также на в дефайне нужно прописать таблицу с аккаунтами и поле с последней датой захода.
Требования:
  • Стандартный инклуд a_samp и прилагающиеся к нему библиотеки.
  • Инклуд и плагин MySQL версии R-39. Можно легко перевести на более высокую версию.
  • Немного мозгов и прямых рук.

Переходим к самой системе:
Ко всем дефайнам:
Код
#define N_DAYS      30 // кол-во дней, через которое аккаунт будет считаться неактивным
#define   N_TABLE      "accounts" // таблица с аккаунтами
#define N_FIELD      "lastlogin" // поле с последним заходом игрока
#define N_NAME      "name" // поле с ником игрока

ВНИМАНИЕ! Поле с последним заходом должно быть уже создано в вашей базу данных, иначе система работать не будет.
Код
Имя: lastlogin
Тип: int
Длина: 32
По умолчанию: нет
Остальное не трогаем.

Идем в OnPlayerConnect и добавляем следующий код:
Код
new query[150], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
mysql_format(dbHandle, query, sizeof(query), "UPDATE "N_TABLE" SET "N_FIELD" = '%d' WHERE "T_NAME" = '%s'", gettime(), name);mysql_function_query(dbHandle, query, false, "", "");

Далее добавим в OnGameModeInit
Код
public OnGameModeInit()
{
    mysql_function_query(dbHandle, "SELECT * FROM "N_TABLE"", true, "CheckAccountDelete", "");
    return true;
}

Создаем паблик в конце мода:
Код
forward CheckAccountDelete();
public CheckAccountDelete()
{
    new rows, fields;
    cache_get_data(rows, fields);
    if(!rows) return print("В указанной таблице не обнаружено строк!");
    new count, tick = GetTickCount(), lastlogin;
    for(new r; r<rows; r++)
    {
        lastlogin = cache_get_field_content_int(r, ""N_FIELD"");
        if(gettime()-lastlogin > N_DAYS*86400)
        {
            new name[MAX_PLAYER_NAME];
            cache_get_field_content(r, ""N_NAME"", name, dbHandle, 24);
            mysql_format(dbHandle, query, sizeof(query), "DELETE FROM "N_TABLE" WHERE "N_NAME" = '%s'", name);            mysql_function_query(dbHandle, query, false, "", ""); // удаляем аккаунт
            printf("Аккаунт с ником %s был удален из базы, так как прошло более %d дней с момента регистрации!", name, N_DAYS);            count++;
        }
    }
    printf("ОБЩАЯ СТАТИСТИКА ОЧИСТКИ АККАУНТОВ: %d аккаунтов удалено, %d - время, за которое они очищены (мс)", %d - всего выполнений цикла (аккаунтов)", count, GetTickCount()-tick, rows);
    return true;
}

ВНИМАНИЕ! Данная система может вызвать незапланированную нагрузку на сервер. Поэтому, рекомендуется применять данную систему ночью, когда игроков практически нет. 
Среднее время выполнения цикла for в 10 000 итераций (допустим, что у нас 10 000 аккаунтов) - 2 с.

Автор: @DEST и @stibs.

В ЛС не отвечу даже не старайтесь. Все вопросы на форум, создавайте тему там ответим.

Форум » Pawno программирование » Мануалы/Уроки » Готовые решения » Слет аккаунтов на mySQL R-39
  • Страница 1 из 1
  • 1
Поиск:

условия предоставления информации
Авторские права и контакты
счетчики
счетчики
счетчики
Новости и публикации в новостной ленте предоставлены исключительно в ознакомительных целях. Все материалы принадлежат исключительно их владельцам! Администрация портала не несет ответственности за последствия использования вами сторонних материалов, опубликованных на форуме, каталоге файлов, каталоге статей, но гарантирует отсутствие вредоносного кода в новостях и публикациях на главной.
  • Основатель портала - AlexDrift
  • Автор дизайна, разработчик - Lil Jonson
  • По возникшим вопросам дизайна - [email protected]
  • По всем возникшим вопросам - vk.com/alexdrift1137
  • Уникальный игровой портал ZETA-HACK.RU ® 2011 - 2019
  • Сайт создан в системе uCoz

  • Яндекс.Метрика
    Рейтинг@Mail.ru