[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Стандартная система "Аккаунтов"
Дата: 25.08.2011, Четверг, 17:40:57 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 163
Репутация: 81+
Привет всем, сегодня что-то подбодрился с кофе и решил написать немного о Стандартной системе "Аккаунтов".Вы все наверное знаете, что в большинстве модах,используют стандартную файловую систему, так-же делают регистрации на .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
Репутация: 361+
Хороший урок, спс =)
Дата: 25.08.2011, Четверг, 17:46:12 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 163
Репутация: 81+
Не зачто.:)
Дата: 25.08.2011, Четверг, 19:00:13 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 16
Репутация: 67+
Разберись с пробелами и все будет хорошо)
  • Страница 1 из 1
  • 1
Поиск: