TorBenLino, Само понятие "Tooltip" выделяется на каждый типа отдельно (inventory, action, skill, shortcut и т.д.).
Выглядят они вот так:
[SRC="csharp"]function ReturnTooltip_NTT_ABNORMALSTATUS(string param, ETooltipSourceType eSourceType)
{
local ItemInfo Item;
local int ShowLevel;
local int nTmp;
local EItemParamType eItemParamType;
local EShortCutItemType eShortCutType;
if (eSourceType == NTST_ITEM)
{
ParseItemID( param, Item.ID );
ParseString( param, "Name", Item.Name);
ParseString( param, "AdditionalName", Item.AdditionalName);
ParseString( param, "Description", Item.Description);
ParseInt( param, "Level", Item.Level);
ParseInt( param, "Reserved", Item.Reserved);
eShortCutType = EShortCutItemType(Item.ItemSubType);
eItemParamType = EItemParamType(Item.ItemType);
m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH;
//아이템 이름
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.t_bDrawOneLine = true;
m_Info.t_strText = Item.Name;
EndItem();
ShowLevel = Item.Level;
if (Len(Item.AdditionalName)>0)
{
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.nOffSetX = 5;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 255;
m_Info.t_color.G = 217;
m_Info.t_color.B = 105;
m_Info.t_color.A = 255;
m_Info.t_strText = Item.AdditionalName;
EndItem();
ShowLevel = class'UIDATA_SKILL'.static.GetEnchantSkillLevel( Item.ID, Item.Level );
}
//ex) " Lv "
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.t_bDrawOneLine = true;
m_Info.t_strText = " ";
EndItem();
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 163;
m_Info.t_color.G = 163;
m_Info.t_color.B = 163;
m_Info.t_color.A = 255;
m_Info.t_ID = 88;
EndItem();
//스킬 레벨
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 176;
m_Info.t_color.G = 155;
m_Info.t_color.B = 121;
m_Info.t_color.A = 255;
m_Info.t_strText = " " $ ShowLevel;
EndItem();
nTmp = class'UIDATA_SKILL'.static.GetHpConsume( Item.ID, Item.Level );
if (nTmp>0)
{
AddTooltipItemOption(1195, String(nTmp), true, true, false);
}
//소모MP
nTmp = class'UIDATA_SKILL'.static.GetMpConsume( Item.ID, Item.Level );
if (nTmp>0)
{
AddTooltipItemOption(320, String(nTmp), true, true, false);
}
//유효거리
nTmp = class'UIDATA_SKILL'.static.GetCastRange( Item.ID, Item.Level );
if (nTmp>=0)
{
AddTooltipItemOption(321, String(nTmp), true, true, false);
}
//남은시간
if (!IsDeBuff(Item.ID, Item.Level) && Item.Reserved>=0)
{
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.nOffSetY = 6;
m_Info.bLineBreak = true;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 163;
m_Info.t_color.G = 163;
m_Info.t_color.B = 163;
m_Info.t_color.A = 255;
m_Info.t_ID = 1199;
EndItem();
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.nOffSetY = 6;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 163;
m_Info.t_color.G = 163;
m_Info.t_color.B = 163;
m_Info.t_color.A = 255;
m_Info.t_strText = " : ";
EndItem();
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.nOffSetY = 6;
m_Info.t_bDrawOneLine = true;
m_Info.t_color.R = 176;
m_Info.t_color.G = 155;
m_Info.t_color.B = 121;
m_Info.t_color.A = 255;
m_Info.t_strText = MakeBuffTimeStr(Item.Reserved);
ParamAdd(m_Info.Condition, "Type", "RemainTime");
EndItem();
}
//설명
if (Len(Item.Description)>0)
{
StartItem();
m_Info.eType = DIT_TEXT;
m_Info.nOffSetY = 6;
m_Info.bLineBreak = true;
m_Info.t_color.R = 178;
m_Info.t_color.G = 190;
m_Info.t_color.B = 207;
m_Info.t_color.A = 255;
m_Info.t_strText = Item.Description;
EndItem();
}
}
else
{
return;
}
ReturnTooltipInfo(m_Tooltip);
}[/SRC]
Где каждая секция - отдельная строка или разделитель. Добавить можно несколько значений, как например я сделал в абнормалстатусе забавы ради (добавил МПкост и рейндж баффа):
![[Изображение: screenshot_2162.png]](http://s5.postimg.org/6geaxavyv/screenshot_2162.png)
(Да-да, если на то пошло, мпкост лучше пихать рядом с lvl'ом, но я забыл, а теперь лень).
В *.xdat существует только пустое окно, ради работоспособности класса. Вся логика тултипов в interface.u.