Пользователь
- Регистрация
- 18 Июл 2023
- Сообщения
- 33
- Автор темы
- #1
Система подходит для тех, кто пишет мод. На сервер допускаются ники, зарегистрированные с помощью команды /setreg.
/setreg Зарегистрировать ник
/delreg Удалить ник
В OnPlayerConnect:
В конец мода
Добавляем в базу данных:
/setreg Зарегистрировать ник
/delreg Удалить ник
В OnPlayerConnect:
C++:
public OnPlayerConnect(playerid)
{
SetConnectServer(playerid); // Вызываем функцию SetConnectServer при подключении игрока
return 1;
}
В конец мода
C++:
CMD:setreg(playerid, params[])
{
if(sscanf(params, "s[24]", params))
return SendClientMessage(playerid, -1, "Введите: /setreg [Ник игрока]");
new string[53 + MAX_PLAYER_NAME];
// Формируем SQL-запрос для проверки наличия ника в базе данных
mysql_format(dbHandle, string, sizeof(string), "SELECT * FROM `ConnectServer` WHERE `sOwner` = '%e'", params);
new Cache:result = mysql_query(dbHandle, string);
// Проверяем, есть ли результаты запроса (ник уже существует в базе данных)
if(cache_num_rows())
return SendClientMessage(playerid, -1, "[СЕРВЕР] Введенный вами ник уже внесен в базе данных..");
// Удаляем результаты запроса из кэша
cache_delete(result);
// Ник не найден в базе данных, выполняем запрос на добавление нового ника
mysql_format(dbHandle, string, sizeof(string), "INSERT INTO `ConnectServer` (`sOwner`) VALUES ('%e')", params);
mysql_tquery(dbHandle, string);
// Форматируем сообщение с использованием ника и отправляем игроку
format(string, sizeof(string), "[СЕРВЕР] Вы записали ник %s в базу данных..", params);
return SendClientMessage(playerid, -1, string);
}
CMD:dellreg(playerid, params[])
{
if(sscanf(params, "s[24]", params))
return SendClientMessage(playerid, -1, !"Введите: /dellreg [Ник игрока]");
new string[52 + MAX_PLAYER_NAME];
// Формируем SQL-запрос для проверки наличия ника в базе данных
mysql_format(dbHandle, string, sizeof(string), "SELECT * FROM `ConnectServer` WHERE `sOwner` = '%e'", params);
new Cache:result = mysql_query(dbHandle, string);
// Проверяем, есть ли результаты запроса (ник найден в базе данных)
if(cache_num_rows())
return SendClientMessage(playerid, -1, "[СЕРВЕР] Введенный вами ник не обнаружен в базе данных..");
// Удаляем результаты запроса из кэша
cache_delete(result);
// Формируем SQL-запрос для удаления ника из базы данных
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM `ConnectServer` WHERE `sOwner` = '%e'", params);
mysql_tquery(dbHandle, string);
// Форматируем сообщение с использованием ника и отправляем игроку
format(string, sizeof(string), "[СЕРВЕР] Вы удалили ник %s с базы данных...", params);
return SendClientMessage(playerid, -1, string);
}
stock SetConnectServer(playerid)
{
new string[52 + MAX_PLAYER_NAME],d_nick[MAX_PLAYER_NAME];
// Получение имени игрока по его идентификатору
GetPlayerName(playerid, d_nick, MAX_PLAYER_NAME);
// Формирование SQL-запроса с использованием имени игрока
mysql_format(dbHandle, string, sizeof(string), "SELECT * FROM `ConnectServer` WHERE `sOwner` = '%e'", d_nick);
new Cache:result = mysql_query(dbHandle, string);
// Проверка наличия игрока в базе данных
if(cache_num_rows())
{
// Если игрок найден, отправляем ему сообщение о авторизации
SendClientMessage(playerid, -1, "[СЕРВЕР] Ваш ник обнаружен в базе данных.");
}
else
{
// Если игрок не найден, отправляем ему сообщение об ошибке и кикаем его
SendClientMessage(playerid, -1, "[СЕРВЕР] Ваш ник не обнаружен в базе данных.! Обратитесь к Руководству.");
ShowPlayerDialog(playerid, 0, 0, !" Сервер Name Role Play", !" На сервере ведутся технические работы.\n\tЭто может занять некоторое время.\nПриносим извинения за причинённые неудобства.", !"Закрыть", "");
KickEx(playerid); // Заменям на свой kick, его можно посмотреть в команде /kick. Обычно это KickEx(playerid);
}
// Очистка результатов запроса из кэша
return cache_delete(result);
}
Добавляем в базу данных:
Вложения
Последнее редактирование: