RU/setAccountData

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

[[{{{image}}}|link=|]] Важное примечание: Настоятельно рекомендуется использовать формат module.key в названиях ключей, как показано в примере ниже. Это помогает избегать противоречий между разными скриптами.

Эта функция сохраняет данные, которые будут храниться в аккаунте под заданным ключом. Данные аккаунта хранятся даже после выхода из него, если это не аккаунт guest (гость). Данные гостевого аккаунта удаляются после выхода (эквивалентно использованию setElementData в элементе игрока), но данные гостевого аккаунта могут быть полезны как способ хранения ссылки на вашу собственную систему аккаунта.

Синтаксис

bool setAccountData(account theAccount, string key, string value)

Синтаксис ООП Помогите! Я не понимаю, что это!

Метод: account:setData(...)
Парная функция: [[RU/getAccountData|getAccountData]]

Обязательные аргументы

  • theAccount: Аккаунт, в который вы хотите записать данные.
  • key: Ключ, под которым вы хотите сохранить данные.
  • value: Значение, которое вы хотите установить. Установите значение false, чтобы удалить данные. Вы не можете сохранять таблицы, но вы можете использовать строки toJSON.

Возвращаемые значения

  • true, если данные аккаунта были успешно сохранены.
  • false, если данные аккаунта не были сохранены:
  1. аккаунт не был найден;
  2. указаны недопустимые аргументы.

Пример использования

Click to collapse [-]
Сервер

Пример 1. Для пиратского ролевого игрового режима сумма денег, которую имеет игрок, постоянно сохраняется, сохраняя её в своем аккаунте. Обратите внимание, что код использует piraterpg.money как ключ, а не просто money, так как игрок может участвовать в других игровых режимах, которые также сохраняют его денежную сумму на его счёт. Если оба типа игровых режимов будут использовать money в качестве ключа аккаунта, они перепишут данные друг друга.

function onPlayerQuit()
      local playerAccount = getPlayerAccount(source) -- получает аккаунт игрока
      if(playerAccount) then -- если аккаунт получен, то
            local playerMoney = getPlayerMoney(source) -- получает сумму денег игрока
            setAccountData(playerAccount, "piraterpg.money", playerMoney) -- сохраняет в полученный аккаунт значение 'playerMoney' под ключом "piraterpg.money" 
      end
end
addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) -- прикрепляет функцию 'onPlayerQuit' к обработчику события "onPlayerQuit"

function onPlayerLogin(_, account)
    local playerMoney = getAccountData(account, "piraterpg.money") -- получает данные аккаунта сохранённые под ключом "piraterpg.money"
    if(playerMoney) then -- если данные получены, то
        setPlayerMoney(source, playerMoney) -- устанавливает игроку сумму денег из полученных данных
    end
end
addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) -- прикрепляет функцию 'onPlayerLogin' к обработчику события "onPlayerLogin"

Проблемы

Идентификатор проблемы Описание
#7757 [Исправлено в 1.3.4-7757] setAccountData зажимает цифры после десятичной точки
Click to expand [+]
Обход проблемы 7757

Смотрите также

Серверные функции

  • addAccount - регистрирует аккаунт
  • copyAccountData - копирует данные аккаунта в другой
  • getAccount - получает аккаунт указанного пользователя
  • getAccountByID - получает аккаунт с указанным ID
  • getAccountData - получает указанные данные аккаунта
  • getAccountID - получает ID указанного аккаунта
  • getAccountIP - получает IP указанного аккаунта
  • getAccountName - получает имя аккаунта
  • getAccountPlayer - получает активного пользователя аккаунта
  • getAccountSerial - получает серийный номер аккаунта
  • getAccounts - получает все зарегистрированные аккаунты
  • getAccountsByData - получает аккаунты с указанными сохранёнными данными
  • getAccountsByIP - получает аккаунт с указанным IP
  • getAccountsBySerial - получает все аккаунты с указанным серийным номером
  • getAllAccountData - получает все данные аккаунта
  • getPlayerAccount - получает аккаунт указанного игрока
  • isGuestAccount - проверяет, является ли аккаунт гостевым
  • logIn - авторизует игрока под указанный аккаунт
  • logOut - выходит из аккаунта указанного игрока
  • removeAccount - удаляет аккаунт
  • setAccountData - сохраняет данные в аккаунте
  • setAccountName - устанавливает имя аккаунту
  • setAccountPassword - устанавливает пароль аккаунта