Для начала нужно сделать все как в уроке: Диалог система
Далее нам нужен 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; }