You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Для простоты данные хранятся в массивах (для реального проекта рекомендуется использовать базу данных)
new bool:Registered[MAX_PLAYERS];
new playerLogin[MAX_PLAYERS][32];
new playerPass[MAX_PLAYERS][32];
// Функция показа диалога для входа
public ShowLoginDialog(playerid)
{
ShowPlayerDialog(playerid, 101, DIALOG_STYLE_INPUT, "Вход",
"Введите логин;Введите пароль", "Войти", "Отмена");
}
// Функция показа диалога для регистрации
public ShowRegisterDialog(playerid)
{
ShowPlayerDialog(playerid, 102, DIALOG_STYLE_INPUT, "Регистрация",
"Введите логин;Введите пароль", "Зарегистрироваться", "Отмена");
}
// Функция показа диалога для подачи заявки
public ShowApplicationDialog(playerid)
{
ShowPlayerDialog(playerid, 103, DIALOG_STYLE_INPUT, "Заявка",
"Введите текст заявки", "Отправить", "Отмена");
}
// Обработчик выбора в диалоговом окне
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
// Если игрок нажал "ОК" (response == 1)
if(response == 1)
{
switch(dialogid)
{
case 101: // Логин
{
HandleLogin(playerid, inputtext);
}
case 102: // Регистрация
{
HandleRegistration(playerid, inputtext);
}
case 103: // Заявка
{
HandleApplication(playerid, inputtext);
}
}
}
return 1;
}
// Функция обработки входа
// Ожидается, что в inputtext будет строка вида "логин;пароль"
public HandleLogin(playerid, inputtext[])
{
new username[32], password[32];
// Разбиваем строку по символу ';'
SplitInput(inputtext, ';', username, sizeof(username), password, sizeof(password));
// Функция обработки регистрации
// Ожидается, что в inputtext будет строка вида "логин;пароль"
public HandleRegistration(playerid, inputtext[])
{
new username[32], password[32];
SplitInput(inputtext, ';', username, sizeof(username), password, sizeof(password));
// Простейшая проверка: если игрок уже зарегистрирован
if(Registered[playerid])
{
SendClientMessage(playerid, 0xFF0000FF, "Вы уже зарегистрированы!");
return;
}
strcopy(playerLogin[playerid], sizeof(playerLogin[]), username);
strcopy(playerPass[playerid], sizeof(playerPass[]), password);
Registered[playerid] = true;
SendClientMessage(playerid, 0x00FF00FF, "Регистрация прошла успешно! Теперь вы можете войти.");
}
// Функция обработки заявки
public HandleApplication(playerid, inputtext[])
{
// Здесь можно добавить проверку, запись в базу, логирование и т.д.
printf("Игрок %d подал заявку: %s", playerid, inputtext);
SendClientMessage(playerid, 0x00FF00FF, "Заявка отправлена!");
}
// Функция для разбивки входной строки по разделителю
// input - исходная строка, separator - символ-разделитель,
// output1 и output2 - буферы для записанных подстрок.
stock SplitInput(const input[], separator, output1[], len1, output2[], len2)
{
new i = 0, j = 0, k = 0, inputlen = strlen(input);
#include <a_samp>
// Максимальное количество игроков
#define MAX_PLAYERS 1000
// Диалоги имеют ID: 101 - Логин, 102 - Регистрация, 103 - Заявка
// Для простоты данные хранятся в массивах (для реального проекта рекомендуется использовать базу данных)
new bool:Registered[MAX_PLAYERS];
new playerLogin[MAX_PLAYERS][32];
new playerPass[MAX_PLAYERS][32];
// Обработчик текстовых команд игрока
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/login", true) == 0)
{
ShowLoginDialog(playerid);
return 1;
}
if(strcmp(cmdtext, "/register", true) == 0)
{
ShowRegisterDialog(playerid);
return 1;
}
if(strcmp(cmdtext, "/apply", true) == 0)
{
ShowApplicationDialog(playerid);
return 1;
}
return 0;
}
// Функция показа диалога для входа
public ShowLoginDialog(playerid)
{
ShowPlayerDialog(playerid, 101, DIALOG_STYLE_INPUT, "Вход",
"Введите логин;Введите пароль", "Войти", "Отмена");
}
// Функция показа диалога для регистрации
public ShowRegisterDialog(playerid)
{
ShowPlayerDialog(playerid, 102, DIALOG_STYLE_INPUT, "Регистрация",
"Введите логин;Введите пароль", "Зарегистрироваться", "Отмена");
}
// Функция показа диалога для подачи заявки
public ShowApplicationDialog(playerid)
{
ShowPlayerDialog(playerid, 103, DIALOG_STYLE_INPUT, "Заявка",
"Введите текст заявки", "Отправить", "Отмена");
}
// Обработчик выбора в диалоговом окне
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
// Если игрок нажал "ОК" (response == 1)
if(response == 1)
{
switch(dialogid)
{
case 101: // Логин
{
HandleLogin(playerid, inputtext);
}
case 102: // Регистрация
{
HandleRegistration(playerid, inputtext);
}
case 103: // Заявка
{
HandleApplication(playerid, inputtext);
}
}
}
return 1;
}
// Функция обработки входа
// Ожидается, что в inputtext будет строка вида "логин;пароль"
public HandleLogin(playerid, inputtext[])
{
new username[32], password[32];
// Разбиваем строку по символу ';'
SplitInput(inputtext, ';', username, sizeof(username), password, sizeof(password));
}
// Функция обработки регистрации
// Ожидается, что в inputtext будет строка вида "логин;пароль"
public HandleRegistration(playerid, inputtext[])
{
new username[32], password[32];
SplitInput(inputtext, ';', username, sizeof(username), password, sizeof(password));
}
// Функция обработки заявки
public HandleApplication(playerid, inputtext[])
{
// Здесь можно добавить проверку, запись в базу, логирование и т.д.
printf("Игрок %d подал заявку: %s", playerid, inputtext);
SendClientMessage(playerid, 0x00FF00FF, "Заявка отправлена!");
}
// Функция для разбивки входной строки по разделителю
// input - исходная строка, separator - символ-разделитель,
// output1 и output2 - буферы для записанных подстрок.
stock SplitInput(const input[], separator, output1[], len1, output2[], len2)
{
new i = 0, j = 0, k = 0, inputlen = strlen(input);
}
The text was updated successfully, but these errors were encountered: