Выдает известную информацию о письме. При необходимости отправляет запрос на сервер для получения недостающей.
-- библиотека: mailBox -- объявление: function RequestMailInfo( mailId, full ) -- параметры: mailId: ObjectId - уникальный идентификатор письма full: boolean - запрашивать только краткую информацию о письме, либо всю возможную -- возвращаемые значения: table or nil - информация о письме или nil, если письма нет или оно удалено, поля: header: table or nil - краткая информация о письме или nil, если информация недоступна в данный момент, поля: participantName: WString - имя получателя или отправителя. Замечание: нужно игнорировать, если письмо шаблонное (есть mailTemplate). subject: WString - тема письма. Замечание: нужно игнорировать, если письмо шаблонное (есть mailTemplate). hasMoney: boolean - содержит ли письмо денежное вложение hasItems: boolean - содержит ли письмо вложение в виде предметов isReturned: boolean - было ли письмо возвращено адресатом isReadByRecipient: boolean - было ли письмо прочитано адресатом isReadByOwner: boolean - было ли письмо прочитано отправителем (в случае возврата) isFromSystem: boolean - является ли письмо системным (например, от аукциона и т.п.), системные письма нельзя возвращать отправителю remainingTime: table - таблица с информацией об оставшемся времени нахождения письма в ящике, поля: d: number (int) - дни h: number (int) - часы m: number (int) - минуты s: number (int) - секунды body: table or nil - расширенная информация о письме или nil, если информация недоступна в данный момент, поля: text: WString - тело письма. Замечание: нужно игнорировать, если письмо шаблонное (есть mailTemplate). money: number (int64) - денежная сумма itemSlotCount: number (int) - количество слотов для предметов (т.к. могут быть пустые) items: таблица предметов, индексация [0..], значения: ObjectId or nil - идентификатор предмета или nil, если предмет уже извлечен из письма mailTemplate: table or nil - если письмо шаблонное (от системы), то таблица с информацией о шаблоне письма, иначе nil, поля для таблицы: sysName: string - системное имя шаблона subject: WString - локализованный текст с информацией о предмете письма (может быть ValuedText) from: WString - локализованный текст с информацией об отправителе письма (может быть ValuedText) body: WString - локализованный текст с информацией о теме письма (может быть ValuedText) params: таблица с параметрами для шаблона, индексированная [0..], значения - таблицы с полями: sysName: string - название параметра value - значение параметра, зависит от типа, см. ниже type: number (enum MAIL_TEMPLATE_PARAM_TYPE...) - тип параметра: MAIL_TEMPLATE_PARAM_TYPE_TEXT - текст, поле value: value: WString - локализованный текст (например, имя игрока и т.д.) MAIL_TEMPLATE_PARAM_TYPE_MONEY - деньги, поле value: value: number (int64) - денежная сумма MAIL_TEMPLATE_PARAM_TYPE_GAME_ITEM - игровой предмет, поле value: value: ObjectId - идентификатор предмета -- пример: local info = mailBox.RequestMailInfo( mailId, false ) local header = info.header if header then LogInfo( " participantName: ", debugCommon.FromWString( header.participantName ) ) LogInfo( " subject: ", debugCommon.FromWString( header.subject ) ) LogInfo( " hasMoney: ", header.hasMoney ) LogInfo( " hasItems: ", header.hasItems ) LogInfo( " isReturned: ", header.isReturned ) LogInfo( " isReadByRecipient: ", header.isReadByRecipient ) LogInfo( " isReadByOwner: ", header.isReadByOwner ) end if body then LogInfo( " text: ", debugCommon.FromWString( body.text ) ) LogInfo( " money: ", body.money ) LogInfo( " item slots count: ", body.itemSlotCount ) for i = 0, body.itemSlotCount - 1 do local itemId = body.items[i] if itemId then local info = avatar.GetItemInfo( itemId ) if info then LogInfo( "item: ", i, ", name: ", debugCommon.FromWString( info.name ) ) else LogInfo( "wrong item info" ) end else LogInfo( "empty item slot" ) end end end if template then LogInfo( "sysName: ", template.sysName ) LogInfo( "subject: ", FromWs( template.subject ) ) LogInfo( "from: ", FromWs( template.from ) ) LogInfo( "body: ", FromWs( template.body ) ) for i = 0, GetTableSize( template.params ) - 1 do local param = template.params[i] LogInfo( " i: ", i ) LogInfo( " sysName: ", param.sysName ) LogInfo( " type: ", param.type ) if param.type == MAIL_TEMPLATE_PARAM_TYPE_TEXT then LogInfo( " value (text): ", FromWs( param.value ) ) elseif param.type == MAIL_TEMPLATE_PARAM_TYPE_MONEY then LogInfo( " value (number): ", param.value ) elseif param.type == MAIL_TEMPLATE_PARAM_TYPE_GAME_ITEM then LogInfo( " value (item, id): ", param.value ) local item = avatar.GetItemInfo( param.value ) if item then LogInfo( " value (item, name): ", FromWs( item.name ) ) end end end end