RU/setAccountData: Difference between revisions
No edit summary |
(Форматирование) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | |||
{{RU/Server function}} | {{RU/Server function}} | ||
{{RU/Important Note|Настоятельно рекомендуется использовать формат ''module.key'' в названиях ключей, как показано в примере ниже. Это помогает избегать противоречий между разными скриптами.}} | |||
{{RU/ | Эта функция сохраняет данные, которые будут храниться в аккаунте под заданным ключом. Данные аккаунта хранятся даже после выхода из него, если это не аккаунт ''guest'' (гость). Данные гостевого аккаунта удаляются после выхода (эквивалентно использованию [[RU/setElementData|setElementData]] в элементе [[RU/Element/Player|игрока]]), но данные гостевого аккаунта могут быть полезны как способ хранения ссылки на вашу собственную систему аккаунта. | ||
Эта функция сохраняет | |||
==Синтаксис== | ==Синтаксис== | ||
Line 10: | Line 10: | ||
{{RU/OOP||[[RU/Account|account]]:setData||[[RU/getAccountData|getAccountData]]}} | {{RU/OOP||[[RU/Account|account]]:setData||[[RU/getAccountData|getAccountData]]}} | ||
===Обязательные аргументы=== | ===Обязательные аргументы=== | ||
*'''theAccount:''' [[RU/Account|Аккаунт]], в который | *'''theAccount:''' [[RU/Account|Аккаунт]], в который вы хотите записать данные. | ||
*'''key:''' Ключ, под которым | *'''key:''' Ключ, под которым вы хотите сохранить данные. | ||
*'''value:''' Значение, которое | *'''value:''' Значение, которое вы хотите установить. Установите значение ''[[RU/Boolean|false]]'', чтобы удалить данные. Вы не можете сохранять таблицы, но вы можете использовать строки [[RU/toJSON|toJSON]]. | ||
===Возвращаемые значения=== | ===Возвращаемые значения=== | ||
*'''[[RU/Boolean|true]]''', если данные аккаунта были успешно сохранены. | |||
*'''[[RU/Boolean|false]]''', если данные аккаунта не были сохранены: | |||
# [[аккаунт]] не был найден; | |||
# указаны недопустимые аргументы. | |||
==Пример использования== | ==Пример использования== | ||
<section name="Сервер" class="server" show=" | <section name="Сервер" class="server" show="true"> | ||
'''Пример 1.''' | '''Пример 1.''' Для пиратского ролевого игрового режима сумма денег, которую имеет игрок, постоянно сохраняется, сохраняя её в своем аккаунте. Обратите внимание, что код использует ''piraterpg.money'' как ключ, а не просто ''money'', так как игрок может участвовать в других игровых режимах, которые также сохраняют его денежную сумму на его счёт. Если оба типа игровых режимов будут использовать ''money'' в качестве ключа аккаунта, они перепишут данные друг друга. | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function onPlayerQuit() | function onPlayerQuit() | ||
local | local playerAccount = getPlayerAccount(source) -- получает аккаунт игрока | ||
if( | if(playerAccount) then -- если аккаунт получен, то | ||
local | local playerMoney = getPlayerMoney(source) -- получает сумму денег игрока | ||
setAccountData( | setAccountData(playerAccount, "piraterpg.money", playerMoney) -- сохраняет в полученный аккаунт значение 'playerMoney' под ключом "piraterpg.money" | ||
end | end | ||
end | end | ||
addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) -- прикрепляет функцию 'onPlayerQuit' к обработчику события "onPlayerQuit" | |||
function onPlayerLogin(_, | function onPlayerLogin(_, account) | ||
local playerMoney = getAccountData(account, "piraterpg.money") -- получает данные аккаунта сохранённые под ключом "piraterpg.money" | |||
if(playerMoney) then -- если данные получены, то | |||
setPlayerMoney(source, playerMoney) -- устанавливает игроку сумму денег из полученных данных | |||
end | |||
end | end | ||
addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) -- прикрепляет функцию 'onPlayerLogin' к обработчику события "onPlayerLogin" | |||
addEventHandler(" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
Line 45: | Line 45: | ||
==Проблемы== | ==Проблемы== | ||
{{RU/Issues| | {{RU/Issues| | ||
{{RU/Issue|7757|[Исправлено в 1.3.4-7757] setAccountData зажимает цифры после десятичной точки}} | {{RU/Issue|7757|[Исправлено в 1.3.4-7757] [[RU/setAccountData|setAccountData]] зажимает цифры после десятичной точки}} | ||
}} | }} | ||
<section name="Обход проблемы 7757" class="server" show="false"> | <section name="Обход проблемы 7757" class="server" show="false"> | ||
Line 57: | Line 57: | ||
{{RU/Account_functions}} | {{RU/Account_functions}} | ||
[[en:setAccountData]] | |||
[[ru:setAccountData]] | |||
[[ar:setAccountData]] | [[ar:setAccountData]] | ||
[[es:setAccountData]] | [[es:setAccountData]] |
Latest revision as of 15:44, 12 April 2021
Важное примечание: Настоятельно рекомендуется использовать формат module.key в названиях ключей, как показано в примере ниже. Это помогает избегать противоречий между разными скриптами. |
Эта функция сохраняет данные, которые будут храниться в аккаунте под заданным ключом. Данные аккаунта хранятся даже после выхода из него, если это не аккаунт guest (гость). Данные гостевого аккаунта удаляются после выхода (эквивалентно использованию setElementData в элементе игрока), но данные гостевого аккаунта могут быть полезны как способ хранения ссылки на вашу собственную систему аккаунта.
Синтаксис
bool setAccountData(account theAccount, string key, string value)
Синтаксис ООП Помогите! Я не понимаю, что это!
- Метод: account:setData(...)
- Парная функция: [[RU/getAccountData|getAccountData]]
Обязательные аргументы
- theAccount: Аккаунт, в который вы хотите записать данные.
- key: Ключ, под которым вы хотите сохранить данные.
- value: Значение, которое вы хотите установить. Установите значение false, чтобы удалить данные. Вы не можете сохранять таблицы, но вы можете использовать строки toJSON.
Возвращаемые значения
- аккаунт не был найден;
- указаны недопустимые аргументы.
Пример использования
Пример 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 зажимает цифры после десятичной точки |
Смотрите также
Серверные функции
- 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 - устанавливает пароль аккаунта