Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

xxx #44

Open
Open
xxx#44
@VaheHA

Description

@VaheHA

#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));

if(!strcmp(username, playerLogin[playerid], true) && !strcmp(password, playerPass[playerid], true)){    SendClientMessage(playerid, 0x00FF00FF, "Вход выполнен успешно!");}else{    SendClientMessage(playerid, 0xFF0000FF, "Неверный логин или пароль!");}

}

// Функция обработки регистрации
// Ожидается, что в 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);

// Копируем символы в output1 до разделителяwhile(i < inputlen && input[i] != separator){    output1[j++] = input[i++];    if(j >= len1 - 1) break;}output1[j] = '\0';// Если разделитель найден, пропускаем егоif(i < inputlen && input[i] == separator) i++;// Копируем оставшуюся часть в output2while(i < inputlen){    output2[k++] = input[i++];    if(k >= len2 - 1) break;}output2[k] = '\0';

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp