Для начала нужно сделать все как в уроке: Диалог система
Далее нам нужен easyini. Скачать можно тут - Ссылка
И сразу его подключим. Для этого в верху мода вставим
Код:
dofile("scripts/easyini.nut");Ко всем const
Код:
// Цвета const Red = 0xFF0000AA; const Dark_blue = 0x0000FFAA; const Lemon = 0xDDDD2357;
Сделаем переменную игроку
Код:
local users = {};Туда же вставим
Код:
local Logged = array(getPlayerSlots(), 0); local LogOut = array(getPlayerSlots(), 0);
Теперь в onPlayerJoin(playerid)
Код:
users[playerid] <- {};
users[playerid].admin <- 0;
users[playerid].sex <- 0;
users[playerid].skin <- 0;
users[playerid].health <- 0;
users[playerid].money <- 0;
setPlayerSpawnLocation(playerid, /*-341.36, 1144.80, 14.79, 40.114815*/1649.508179, 395.261627, 38.151573, -2.931725);
Logged[playerid] = 0;LogOut[playerid] = 0;Далее в onPlayerSpawn(playerid)
Код:
if(Logged[playerid] == 0)
{
sendMessageToAll(getPlayerName(playerid) + " (" + playerid + ") присоединился к нам.");
setPlayerCameraPos(playerid, -605.4317, -652.8373, 85.5848);
setPlayerCameraLookAt(playerid, -613.1234, -757.4556, 79.9492);
if(!fileExists("Accounts/" + getPlayerName(playerid) + ".ini"))
{
showPlayerDialog(playerid, 1, 1, "Регистрация на A-RPG", "Добро пожаловать!!\nПридумайте себе пароль", "OK", "Cancel");
}
else if(fileExists("Accounts/" + getPlayerName(playerid) + ".ini"))
{
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
}
else if(Logged[playerid] == 1)
{
setPlayerCoordinates(playerid, 1054.174438, -544.445007, 19.206417);
}Долее сделаем функции
Код:
function onPlayerRegister(playerid,password)
{
if(Logged[playerid] == 0)
{
if(!fileExists("Accounts/"+getPlayerName(playerid)+".ini"))
{
local pass = password.tostring();
local pFile = EasyINI("Accounts/"+getPlayerName(playerid)+".ini");
pFile.setKey("Account Settings", "Password", pass.tostring());
pFile.setKey("Account Settings", "Admin Level", "0");
pFile.setKey("Account Settings", "Skin", "0");
pFile.setKey("Account Settings", "Sex", "0");
pFile.setKey("Stats", "Health", "100");
pFile.setKey("Stats", "Money", "150000");
pFile.saveData();
users[playerid].money = 150000;
sendPlayerMessage(playerid, "Вы зарегистрировались! Не забудьте ваш пароль!", 0xFF0000AA);
showPlayerDialog(playerid, 3, 0, "Выбор пола", "Кто Вы?", "Man", "Девушка");
}
else
{
sendPlayerMessage(playerid, "Такой ник уже есть, выбери другой!", Red);
}
}
else
{
sendPlayerMessage(playerid, "Вы уже вошли!", Red);
}
return true;
}Код:
function onPlayerLogin(playerid,password)
{
if(Logged[playerid] == 0)
{
if(fileExists("Accounts/"+getPlayerName(playerid)+".ini"))
{
local pFile = EasyINI("Accounts/"+getPlayerName(playerid)+".ini");
local pass = password.tostring();
if(pass == pFile.getKey("Account Settings", "Password"))
{
sendPlayerMessage(playerid, "Вы удачно зашли!", Red, false);
togglePlayerControls(playerid, true)
users[playerid].admin = pFile.getKey("Account Settings", "Admin Level").tointeger();
users[playerid].skin = pFile.getKey("Account Settings", "Skin").tointeger();
users[playerid].sex = pFile.getKey("Account Settings", "Sex").tointeger();
users[playerid].health = pFile.getKey("Stats", "Health").tointeger();
users[playerid].money = pFile.getKey("Stats", "Money").tointeger();
Logged[playerid] = 1;
pFile.saveData();
setPlayerModel(playerid, users[playerid].skin);
setPlayerHealth(playerid, users[playerid].health);
setPlayerMoney(playerid, users[playerid].money);
resetPlayerCamera(playerid);
displayPlayerText (playerid, 0.2, 0.6, "Welcome to A-RPG", 5000);
onPlayerSpawn(playerid);
}
else
{
if(LogOut[playerid] == 2) return sendPlayerMessage(playerid, "Неверный пароль! Наберите /q чтобы выйти!", Red);
if(LogOut[playerid] == 0)
{
sendPlayerMessage(playerid, "Неверный пароль! У Вас еще 2 попытки!", Red);
LogOut[playerid]++;
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
else if(LogOut[playerid] == 1)
{
sendPlayerMessage(playerid, "Неверный пароль! У Вас еще 1 попытка!", Red);
LogOut[playerid]++;
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
}
}
else
{
sendPlayerMessage(playerid, "Вы не зарегистрировались!", Red);
}
}
else
{
sendPlayerMessage(playerid, "Вы уже вошли!", Red);
}
return true;
}Код:
function savePlayers()
{
foreach(i, playername in getPlayers())
{
local pFile = EasyINI("Accounts/" + getPlayerName(i) + ".ini");
pFile.setKey("Stats", "Money", users[i].money.tostring());
pFile.setKey("Stats", "Health", getPlayerHealth(i));
pFile.setKey("Account Settings", "Admin Level", users[i].admin.tostring());
pFile.setKey("Account Settings", "Skin", users[i].skin.tostring());
pFile.setKey("Account Settings", "Sex", users[i].sex.tostring());
pFile.saveData();
}
return true;
}Теперь в onDialogResponse(playerid, dialogid, response, listitem, inputtext)
Код:
if(dialogid == 1)
{
if(response)
{
local key = split(inputtext, " ");
onPlayerRegister(playerid,key[0]);
}
else
{
showPlayerDialog(playerid, 1, 1, "Регистрация на A-RPG", "Добро пожаловать!!\nПридумайте себе пароль", "OK", "Cancel");
}
}
if(dialogid == 2)
{
if(response)
{
local keys = split(inputtext, " ");
onPlayerLogin(playerid,keys[0]);
}
else
{
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
}
if(dialogid == 3)
{
if(response)
{
users[playerid].sex = 1;users[playerid].skin = 11;
setPlayerModel(playerid, 11);
savePlayers();
sendPlayerMessage(playerid, "Вы Парень!", 0xB4B5B7FF);
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
else
{
users[playerid].sex = 2;users[playerid].skin = 12;
setPlayerModel(playerid, 12);
savePlayers();
sendPlayerMessage(playerid, "Вы Девушка!", 0xB4B5B7FF);
showPlayerDialog(playerid, 2, 1, "Авторизация на A-RPG", "Добро пожаловать!!\nВведите свой пароль", "OK", "Cancel");
}
}В конце мода
Код:
function fileExists(filename)
{
try
{
local testfile = file(filename, "r");
}
catch(e)
{
return false;
}
return true;
}

