PDA

Просмотр полной версии : [Урок] Простая авторизация для простого сервера



Disinterpreter
15.10.2015, 18:00
Итак, у нас стоит задача, сделать в МТА простую авторизацию, для игроков, чтобы при релоге их данные не пропадали.

Мы, конечно же, можем пойти по пути SA-MP и заюзать всякие ини-ридеры, xml и прочие вещи для изврата. А можем и просто взглянуть под другим углом.

А этот другой угол заключается вот в чем - в мта уже встроена система авторизации игрока. Для управления администраторскими полномочиями и для доступа к веб-морде. Поэтому мы и воспользуемся ей. Сам инструмент авторизации использует непосредственно SQLite базы данных, которые называются internal.db и registry.db в папке с сервером.

Открыв документацию (https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions#Account_functions) мы увидим следующие функции:
addAccount
copyAccountData
getAccountData
getAccountName
getAccountPlayer
getAccountsBySerial
getAccountSerial
getAccounts
getAccount
getAllAccountData
getPlayerAccount
isGuestAccount
logIn
logOut
removeAccount
setAccountData
setAccountPassword


Собственно, почему же я выделил только 2 функции? А ответ прост. В МТА на уровне ресурса admin уже имеется встроенная команда /register а команда /login встроена в самой игре. Поэтому нет смысла переписывать эти вещи. Хотя конечно, если мы хотим GUI нам придется воспользоваться большинством остальных функций. Посмотреть это можно в моем коде (https://github.com/Disinterpreter/ClassicDM-MTA/blob/master/login/Account.lua) или более красивом, объектном варианте (https://github.com/Disinterpreter/MTADM/blob/master/loginpanel/login_s.lua).

Так вот, что же выполняют те самые 2 функции? А их работа очень проста. Функция setAccountData кладет данные в данные с пользователем по ключу указанному в аргументах, а функция getAccountData всего лишь их считывает. Таким образом используя эвенты onPlayerJoin (https://wiki.multitheftauto.com/wiki/OnPlayerJoin), onPlayerQuit (https://wiki.multitheftauto.com/wiki/OnPlayerQuit) или onPlayerLogin (https://wiki.multitheftauto.com/wiki/OnPlayerLogin), onPlayerLogout (https://wiki.multitheftauto.com/wiki/OnPlayerLogout) мы можем сохранять или загружать пользовательские данные.

P.S Я рассказал только о довольно тривиальных вещах, писать примеры кода в этой теме я не вижу смысла ибо это урок, а не готовое решение. Если вы собираетесь делать проект, который будет достаточно крупный, советую использовать MySQL функции.