Дата: 25.08.2011, Четверг, 17:40:57 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 163
Привет всем, сегодня что-то подбодрился с кофе и решил написать немного о Стандартной системе "Аккаунтов".Вы все наверное знаете, что в большинстве модах,используют стандартную файловую систему, так-же делают регистрации на .xml.Я вам задам вопрос,зачем это? Вы скажете для того,чтобы была регистрация, но я отвечу вам,что можно использовать уже стандартную,существующею систему аккаунтов.Рассмотрим первую функцию, addAccount ( string name, string pass ), эта функция добавляет аккаунт, мы видим два текстовых значения, name(Ник), pass(Пароль), вопрос, куда же сохраняется аккаунт?В 1.0.5 в Internal.db, а вот в 1.1 пока не известно куда, ну ладно,давайте для примера создадим простую регистрацию игрока: Code function registerPlayer ( source, commandName, password ) -- Check if the password field is blank or not (only blank if they didnt enter one) if ( password ~= "" and password ~= nil ) then --Attempt to add the account, and save its value in a var local accountAdded = addAccount( getPlayerName(source), password ) if ( accountAdded ) then -- Tell the user all is done outputChatBox ( "Thank you " .. getPlayerName(source) .. ", you're now registed, you can login with /login", source ) else -- There was an error making the account, tell the user outputChatBox ( "Error creating account, contact the server admin", source ) end else -- There was an error in the syntax, tell the user the correct syntax. outputChatBox ( "Error creating account, correct syntax: /register <password>", source ) end end addCommandHandler ( "register", registerPlayer ) -- add the command handler Ну что-же,эта функция добилась нашего внимания, а теперь перейдём к getAccount ( string username, [ string password ] ), эта функция просто извлекает из файла логин и пароль, можно сделать вывод логин и пароля,идем дальше.setAccountPassword ( account theAccount, string password ) - ну думаю тут понятно, функция ставит пароль на определенный акк.Пример использования:
Code function ChangePlayerPassword(player,command,oldpass,newpass) -- get the account the player is currently logged into local account = getPlayerAccount(player) if (account) then -- if its only a guest account, do not allow the password to be changed if (isGuestAccount(account)) then outputChatBox("You must be logged into an account to change your password.",player) -- end the function return end -- check that the old password is correct local password_check = getAccount(getPlayerUserName(player),oldpass) if (oldpass==password_check) then -- check the length of the new password if (string.len(newpass)>=5) then setAccountPassword(account,newpass) else outputChatBox("Your new password must be at least 5 characters long.",player) end else outputChatBox("Old password invalid.",player) end end addCommandHandler("changepass",ChangePlayerPassword) Остальные похожие функции можно найти на вики: copyAccountData getAccountData getAccountName getAccountPlayer getAccounts isGuestAccount login logout removeAccount setAccountData
|
Дата: 25.08.2011, Четверг, 17:43:31 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 627
Хороший урок, спс =)
|
Дата: 25.08.2011, Четверг, 17:46:12 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 163
Не зачто.:)
|
Дата: 25.08.2011, Четверг, 19:00:13 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 16
Разберись с пробелами и все будет хорошо)
|