Пользовательские дополнения

На главную


mailBox.RequestMailInfo( mailId, full )

Выдает известную информацию о письме. При необходимости отправляет запрос на сервер для получения недостающей.

-- библиотека:
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

Search: "CategoryLuaApi" "CategoryMailBox"

EnumCreateMailResult
EnumMailServiceReply
EventMailBoxActivated
EventMailBoxChanged
EventMailBoxClosed
EventMailCreateResult
EventMailDeleteResult
EventMailExtractItemsResult
EventMailExtractMoneyResult
EventMailReturnResult
EventMailsChanged
FunctionMailBoxClose
FunctionMailBoxCreateMail
FunctionMailBoxDeleteMail
FunctionMailBoxExtractMailItems
FunctionMailBoxExtractMailMoney
FunctionMailBoxGetLimits
FunctionMailBoxIsActive
FunctionMailBoxIsInteracting
FunctionMailBoxIsReady
FunctionMailBoxOpen
FunctionMailBoxRequestMailIds
FunctionMailBoxRequestMailInfo
FunctionMailBoxReturnMailToSender


CategoryLuaApi CategoryFunction CategoryMailBox

На главную