Возвращает реплику NPC-собеседника. Ответы можно получить в avatar.GetInteractorNextCues().
Необходимо вызывать после EVENT_INTERACTION_STARTED. Во время разговора нельзя менять цель.
-- система:
UIState/GameState
функция имеет основную реализация в логике и расширенную реализацию в UI
-- библиотека:
avatar
-- объявление:
function GetInteractorCue()
-- параметры:
нет
-- возвращаемые значения:
nil or table: - nil, если нет реплики, иначе таблицу с информацией о реплике:
name: WString - имя реплики (или ответ на неё)
text: WString - текст реплики
data: table of CueData- индексированный с 0 список дополнительных даных
isSpecial: boolean - является ли эта реплика не просто репликой в разговоре, но и началом какого-то действия (показать ремортов, войти в парикмахерскую и т.п.)
CueData - один элемент данных, ассоциированых с ответом на эту репликой (name). Каждая CueData - таблица с полями:
alias: string or nil - псевдоним этого элемента данных. Может использоваться, например, для подстановки этого элемента данных в форматную строку, заданную в поле name этой реплики
--{ часть таблицы, реализованная только для UI
image: TextureId or nil - идентификатор текстуры для иконки реплики, если есть
titlePicture: TextureId or nil - идентификатор текстуры для титульной картинки в тексте реплики, если есть
--}
Также есть набор взаимоисключающих полей:
money: number or nil - количество денег, требуемых для ответа
либо
number: number or nil - какое-то число, требуемое для ответа
либо
itemId: ObjectId or nil - идентификатор предмета, требуемого для ответа
либо
string: WString or nil - какой-то текст, требуемое для ответа
Пример:
local cue = avatar.GetInteractorCue()
local text = cue.text
local valuedText = common.CreateValuedText()
valuedText:SetFormat( cue.name )
if cue.data[ 0 ] then
if cue.data[ 0 ].itemId then
local itemInfo = avatar.GetItemInfo( cue.data[ 0 ].itemId )
if itemInfo then
valuedText:SetVal( cue.data[ 0 ].alias, itemInfo.name )
end
end
end