Главная Форум Файлы Статьи СОСТАВ ZH&ZHS О НАС GITHUB КАНАЛ YouTube BlackList WhiteList
Добро пожаловать на уникальный игровой портал ZETA-HACK TEAM! Здесь Вы сможете найти самые интересные новости из мира игровой индустрии, найти самые свежие сотфины для различных онлайн игр, общаясь на форуме получать мнения специалистов и помогать тем кто не смог получить нужный ответ в той или иной сфере!
Авторизация Регистрация
Последние обсуждаемые темы на форуме
Последние комментарии к новостям
Топ-10 форумчан
Кракозябры в RakSamp'e AdCKuY_DpO4uLa 2
Списк обнаруженых багов сайта =AlexDrift= 14
- vitalik313RUSRUSRUS 4
Заявка JustSnile 6
PrivateVPN =AlexDrift= 0
ExpressVPN =AlexDrift= 0
Windscribe VPN =AlexDrift= 0
Голосовой чат в SA-MP [SAMPVOI... =AlexDrift= 2
[C++]Частичный фикс стиллера о... =AlexDrift= 0
DUEL SYSTEM =AlexDrift= 0
Microsoft назвала дату смерти Windows 7 26.02.2019
•Pro•Dm•Server• 15.01.2019
Дальнобойщики 0.3.7 15.01.2019
Приватный чит для Rust Experimental 21.11.2018
Приватный чит для Rust Experimental 21.11.2018
PS4-эксклюзив Spider-Man за четыре недел... 13.10.2018
[0.3e]Игровой мод сервера Street Workout... 12.10.2018
[0.3e]Игровой мод сервера Street Workout... 12.10.2018
PS4-эксклюзив Spider-Man за четыре недел... 12.10.2018
Новый вид крашинга 11.10.2018
1. =AlexDrift= 525
2. Pahanch1kkk 45
3. InFerNo 35
4. R4DUGA 32
5. d1amondl1on 31
6. AdCKuY_DpO4uLa 24
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
Сообщения: 525
Репутация: 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