Qenz
Умник
OnPlayerConnect
Суть проблемы в том что При регистрации , вызывается диалог инвайта игрока во фракцию.. и получается игрок зарегестрировался и его принимает сразу во фракцию.. (
PHP:
public OnPlayerConnect(playerid)
{
RemovePlayerVariables(playerid);
//------------------------------------------------------------------------------
GetPlayerName(playerid, pInfo[playerid][pName], MAX_PLAYER_NAME);
//------------------------------------------------------------------------------
if(GetAccountID(playerid)) { // Аккаунт зарегистрирован
new dialog[128+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
pInfo[playerid][pName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
}
else { // Аккаунт не зарегистрирован (return 0, в функции GetAccountID, т.е. не нашло записи с аккаунтом).
new dialog[344+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт не зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль и нажмите \"Далее\".\n\n\
Примечания:\n\
- Пароль чувствительный к регистру.\n\
- Длина пароля от 6 до 32 символов.\n\
- В пароле можно использовать символы на кириллице и латинице.\n", pInfo[playerid][pName]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", dialog, "Далее", "Отмена");
}
return 1;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//===========================Диалоги регистрации , авторизации============================//
switch(dialogid)
{
case DIALOG_LOGIN: { // Диалог авторизации.
if(!response) { // Если нажал "Отмена".
SendClientMessage(playerid, COLOR_YELLOW, "* Введите /q(uit), чтобы выйти из игры.");
Kick(playerid);
return 1;
}
if(!strlen(inputtext)) { // Если поле ввода пустое.
new dialog[134+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
pInfo[playerid][pName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
return 1;
}
LoadAccount(playerid, inputtext); // Пробуем его авторизовать.
}
case DIALOG_REGISTER: { // Диалог регистрации.
if(!response) { // Если нажал "Отмена".
SendClientMessage(playerid, COLOR_YELLOW, "* Введите /q(uit), чтобы выйти из игры.");
Kick(playerid);
return 1;
}
if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 64) { // Если пустое поле ввода или пароль имеет меньше 6 или больше 64 символов
new dialog[380+24+10];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт не зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль и нажмите \"Далее\".\n\n\
Примечания:\n\
- Пароль чувствительный к регистру.\n\
- Длина пароля от 6 до 32 символов.\n\
- В пароле можно использовать символы на кириллице и латинице.\n", pInfo[playerid][pName]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", dialog, "Далее", "Отмена");
return 1;
}
CreateAccount(playerid, inputtext); // Создаём аккаунт.
pInfo[playerid][pLogged] = true; // Авторизуем игрока. :)
}
case DIALOG_WRONGPAS: { // Если неверный пароль.
if(response) {
new dialog[134+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
pInfo[playerid][pName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
return 1;
}
else { // Если нажал "Отмена".
Kick(playerid);
return 1;
}
}
}
///============================================================================================================//
//============================Диалоги /invite=============================//
if(dialogid == 3)
{
if(response)
{
SendClientMessage(playerid,0x88AA88AA,"Поздравляем!!! Вы были приняты в Grove Street");
pInfo[playerid][pMember] = 2;
pInfo[playerid][pRank] = 1;
pInfo[playerid][pSkin] = 123;
SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
SetPlayerHealth(playerid,0);
return 1;
}
else
{
SendClientMessage(playerid,0x88AA88AA,"Вы отказались от вступления в фракцию");
return 1;
}
}
if(dialogid == 2)
{
if(response)
{
SendClientMessage(playerid,0x88AA88AA,"Поздравляем!!! Вы были приняты в National Guards");
pInfo[playerid][pMember] = 1;
pInfo[playerid][pRank] = 1;
pInfo[playerid][pSkin] = 287;
SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
SetPlayerHealth(playerid,0);
return 1;
}
else
{
SendClientMessage(playerid,0x88AA88AA,"Вы отказались от вступления в фракцию");
return 1;
}
}
return 1;
}
