- Автор темы
- #1
Мне нужно, чтобы на сервере выдавалось после регистрации 1000 виртов и 1 уровень. Настроил Регистрацию, авторизацию выдачу ине работает.
OnDialogResponse:
#Код
Паблик регистрации и авторизации + в конце выдача денег и уровня
#Код
OnPlayerConnect:
#Код
OnPlayerDisconnect:
#Код
OnDialogResponse:
Pawn:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 0:
{
if(!response)return Kick(playerid);
if(strlen(inputtext) <= 3 || strlen(inputtext) > 24) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "Регистрация", "Пароль слишком длинный или короткий.", "Далее", "Выйти");
new tmp[24];
format(tmp, sizeof(tmp), "%s", inputtext);
return Account(playerid, 1, tmp);
}
case 1:
{
if(!response) return Kick(playerid);
new tmp[24];
format(tmp, sizeof(tmp), "%s", inputtext);
return Account(playerid, 2, tmp);
}
}
return 1;
}
Паблик регистрации и авторизации + в конце выдача денег и уровня
Pawn:
public Account(playerid, mode, pass[24])
{
new FileName[MAX_PLAYER_NAME+5];
GetPlayerName(playerid, FileName, sizeof(FileName));
format(FileName,sizeof(FileName),"%s.ini", FileName);
new INI = ini_openFile(FileName);
if(INI == INI_OK)
{
switch(mode)
{
case 1:
{
ini_setString(INI, "password", pass);
ini_closeFile(INI);
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", "Введите ваш пароль еще раз для авторизации.", "Далее", "Выход");
}
case 2:
{
new tmp[24];
ini_getString(INI, "password", tmp);
if(strcmp(tmp, pass, false, 24) == 0)
{
playerinfo[playerid][Pass] = tmp;
ini_getInteger(INI, "money", playerinfo[playerid][money]);
ini_getInteger(INI, "Score", playerinfo[playerid][score]);
ini_closeFile(INI);
return SendClientMessage(playerid, 0x9EC73DAA, "Вы успешно авторизовались, приятной игры!");
}
else
{
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", "Пароль не верен.", "Далее", "Выход");
}
}
case 0:
{
ini_closeFile(INI);
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", "Введите ваш пароль для авторизации.", "Далее", "Выход");
}
case 3:
{
ini_setString(INI, "password", playerinfo[playerid][Pass]);
ini_setInteger(INI, "money", playerinfo[playerid][money]);
ini_setInteger(INI, "Score", playerinfo[playerid][score]);
ini_closeFile(INI);
return printf("Аккаунт %s успешно сохранен", FileName);
}
}
}
else
{
INI = ini_createFile(FileName);
if(INI == INI_OK)
{
ini_setString(INI, "password", "");
ini_setInteger(INI, "money", 500);
ini_setInteger(INI, "Score", 1);
ini_closeFile(INI);
return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Регистрация", "Добро пожаловать на наш сервер. Этот аккаунт еще не зарегистрирован, поэтому создайте для него пароль. Пароль должен состоять от 4 до 24 символов.", "Далее", "Выйти");
}
else return Account(playerid, 0, "");
}
return 1;
}
OnPlayerConnect:
Pawn:
public OnPlayerConnect(playerid)
{
Account(playerid, 0, "");
playerinfo[playerid][money] = GetPlayerMoney(playerid);
GetPlayerHealth(playerid, playerinfo[playerid][health]);
GetPlayerArmour(playerid, playerinfo[playerid][armour]);
playerinfo[playerid][score] = GetPlayerScore(playerid);
GivePlayerMoney(playerid, playerinfo[playerid][money]);
return 1;
}
OnPlayerDisconnect:
Pawn:
public OnPlayerDisconnect(playerid, reason)
{
Account(playerid, 3, "");
playerinfo[playerid][money] = 0;
playerinfo[playerid][score] = 0;
return 1;
}