Простая авторизация для простого сервера
Итак, у нас стоит задача, сделать в МТА простую авторизацию, для игроков, чтобы при релоге их данные не пропадали.
Мы, конечно же, можем пойти по пути SA-MP и заюзать всякие ини-ридеры, xml и прочие вещи для изврата. А можем и просто взглянуть под другим углом.
А этот другой угол заключается вот в чем - в мта уже встроена система авторизации игрока. Для управления администраторскими полномочиями и для доступа к веб-морде. Поэтому мы и воспользуемся ей. Сам инструмент авторизации использует непосредственно SQLite базы данных, которые называются internal.db и registry.db в папке с сервером.
Открыв документацию мы увидим следующие функции:
- addAccount
- copyAccountData
- getAccountData
- getAccountName
- getAccountPlayer
- getAccountsBySerial
- getAccountSerial
- getAccounts
- getAccount
- getAllAccountData
- getPlayerAccount
- isGuestAccount
- logIn
- logOut
- removeAccount
- setAccountData
- setAccountPassword
Собственно, почему же я выделил только 2 функции? А ответ прост. В МТА на уровне ресурса admin уже имеется встроенная команда /register а команда /login встроена в самой игре. Поэтому нет смысла переписывать эти вещи. Хотя конечно, если мы хотим GUI нам придется воспользоваться большинством остальных функций. Посмотреть это можно в моем коде или более красивом, объектном варианте.
Так вот, что же выполняют те самые 2 функции? А их работа очень проста. Функция setAccountData кладет данные в данные с пользователем по ключу указанному в аргументах, а функция getAccountData всего лишь их считывает. Таким образом используя эвенты onPlayerJoin, onPlayerQuit или onPlayerLogin, onPlayerLogout мы можем сохранять или загружать пользовательские данные.
P.S Я рассказал только о довольно тривиальных вещах, писать примеры кода в этой теме я не вижу смысла ибо это урок, а не готовое решение. Если вы собираетесь делать проект, который будет достаточно крупный, советую использовать MySQL функции.