ToolTipe.uc Помогите с отображением.

Hedgehog

Интересующийся
Местный
Сообщения
334
Розыгрыши
0
Решения
3
Репутация
150
Реакции
213
Баллы
388
Доброго времени суток, кто может помочь разобраться или скинуть пример.
Хочу сделать что-бы в окне итема была картинка на которой написан текст.
Пример:
image.png

ввожу такой код(скрипт) хз как это называеться
Код:
if (TooltipType != "TaliList")
        {
            
            StartItem();
            m_Info.eType = DIT_TEXTURE;
            m_Info.nOffSetX = 0;
            m_Info.nOffSetY = 1;
            
            m_Info.bLineBreak = true;
            m_Info.t_bDrawOneLine = true;
            m_Info.u_nTextureWidth = 16;
            m_Info.u_nTextureHeight = 16;
            m_Info.u_nTextureUWidth = 16;
            m_Info.u_nTextureUHeight = 16;
            m_Info.u_strTexture = "L2UI_CT2.Frames.ToolTip.TooltipICON_Refinery_small";
            EndItem();
            
            StartItem();
            m_Info.eType = DIT_TEXTURE;
            m_Info.nOffSetX = 0;
            m_Info.nOffSetY = 1;
            
            m_Info.bLineBreak = true;
            m_Info.t_bDrawOneLine = true;
            m_Info.u_nTextureWidth = 400;
            m_Info.u_nTextureHeight = 40;
            m_Info.u_nTextureUHeight = 40;
            m_Info.u_strTexture = "L2UI_CT2.Frames.ToolTip.TooltipLine_BasicIconBG";
            EndItem();
            
            StartItem();
            m_Info.nOffSetX = 4;
            m_Info.nOffSetY = 3;
            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.eType = DIT_TEXT;
            m_Info.t_strText = MakeCostString(string(Item.ID.ClassID));
            EndItem();
            
        }

У меня получаетья такая дичь:

image.png

Может кто-то помочь :) Я просто абсолютный 0 в этом. Делаю методом тыка, уже пару дней не могу вкурить.
Хочу чтобы было так:
1676069899804.png
 

Тултипы это крайне сложно для объяснения, так что лучший вариант - реально метод тыка.
Изучите какой нибудь ntt_item, ntt_skill, как там реализованы параметры.

Очень много всяких нюансов, типа тех же m_Info.bLineBreak; m_Info.t_bDrawOneLine; - они по большей части у вас всё и сломали.
 
Тултипы это крайне сложно для объяснения, так что лучший вариант - реально метод тыка.


Очень много всяких нюансов, типа тех же m_Info.bLineBreak; m_Info.t_bDrawOneLine; - они по большей части у вас всё и сломали.
Та я не сказал бы что что-то сломано, я просто взял рандомный код хрен знает откуда, увидев что там есть картинка и его уже пытаюсь всунуть туда где по факту должно быть что-то другое :(
Нету даже примера какого-то чтобы вытянуть. Это может быть реализовано через Interface.xdat ?

Проблема в том что методом тыка в моём случае это только вредит всему. Я уже дня 4 методом тыка тыкаю, вот всё что вы видите выше это результат :(
 
Hedgehog, почему же нет примеров? Вон же, посмотрите хроники повыше, там как минимум в бонусах сетов можно найти иконку + название итема в строку, Вы вроде именно это и ищите.
 
Hedgehog, почему же нет примеров? Вон же, посмотрите хроники повыше, там как минимум в бонусах сетов можно найти иконку + название итема в строку, Вы вроде именно это и ищите.
Да, у меня это есть, я в тултипах не нашел там ничего либо не увидел.

C++:
        // 1. WEAPON
        case ITEM_WEAPON:
            //Slot Type
            //strTmp = GetWeaponTypeString(Item.WeaponType);
            //if (Len(strTmp)>0)
            //{
            //    AddTooltipItemOption(0, strTmp $ " / " $ SlotString, false, true, false);
            //}
            
            //빈공간
            //AddTooltipItemBlank(6);
            
            //"[무기 제원]"
            //AddTooltipItemOption(1489, "", true, false, false);
            // SetTooltipItemColor(255, 255, 255, 0);           

            //setTooltipItemInfo( ItemValue, item, eItemType );

            //Physical Damage
            //AddTooltipItemOption(94, String(GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.pAttack, Item.Attribution)), true, true, false);
            //공격력(:10)

            if( rValue.PhysicalDamage != 0 )
            {                   
                AddTooltipItemOption( 94, string( GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.pAttack, Item.Attribution) + rValue.PhysicalDamage),
                                          true, true, false, "chatFontSize12", 0, 0, getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);
    
                // (50 + 54)    <-- (기본공격력 + 인챈트보너스공격력)
                AddTooltipItemBonus(Item.pAttack, nEnchantedPhysicalDamageBonus, 0, 7);
            }
            else
            {
                //공격력[물리 데미지]
                if( Item.pAttack != 0 )
                {
                    AddTooltipItemOption(94, string( GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.pAttack, Item.Attribution) ), true, true, false, "chatFontSize12",0,0,getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);

                    // (50 + 54)    <-- (기본공격력 + 인챈트보너스공격력)
                    AddTooltipItemBonus(Item.pAttack, nEnchantedPhysicalDamageBonus, 0, 7);
                }
            }

            //Masical Damage
            //AddTooltipItemOption(98, String(GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.mAttack, Item.Attribution)), true, true, false);                       
            //마법 공격력(  : 10 )

            if( rValue.MagicalDamage != 0 )
            {   
                //AddTooltipItemOption( 98, string( Item.mAttack + rValue.MagicalDamage ), true, true, false);
                AddTooltipItemOption( 98, string( GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType,
                                                                   Item.Enchanted, Item.mAttack, Item.Attribution) + rValue.MagicalDamage ), true, true, false, "chatFontSize12",0,0,getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);
                                
                AddTooltipItemBonus(Item.mAttack, nEnchantedMagicalDamageBonus, 0, 7);
            }
            else
            {
                //마법력[마법 데이지]
                if( Item.mAttack != 0 )
                {
                    AddTooltipItemOption(98, string( GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.mAttack, Item.Attribution) ), true, true, false, "chatFontSize12",0,0,getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);
                    AddTooltipItemBonus(Item.mAttack, nEnchantedMagicalDamageBonus, 0, 7);
                }
            }

            //Attack Speed
            AddTooltipItemOption(111, GetAttackSpeedString(Item.pAttackSpeed), true, true, false);
 
            //추가!!!!!!!!!!!!!!!!!!
            //방어력[물리방어]           
            if( Item.pDefense > 0 )
            {
                AddTooltipItemOption(54, string( Item.pDefense ), true, true, false, "chatFontSize12",0, 0, getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);
            }
                
            //마법방어[마법저항]
            if( Item.mDefense > 0 )   
            {
                AddTooltipItemOption(99, string( Item.mDefense ), true, true, false);
            }

            //명중
            if( Item.pHitRate + rValue.PhysicalHitRate != 0 )
                AddTooltipItemOption(96, string( Item.pHitRate + rValue.PhysicalHitRate ), true, true, false);
                //물리명중
                //AddTooltipItemOption(2360, string( Item.pHitRate + rValue.PhysicalHitRate ), true, true, false);

            //크리티컬
            if( Item.pCriRate + rValue.PhysicalCriRate > 0 )
                AddTooltipItemOption(113, string( Item.pCriRate + rValue.PhysicalCriRate ), true, true, false);
                //물리크리티컬
                //AddTooltipItemOption(2362, string( Item.pCriRate + rValue.PhysicalCriRate ), true, true, false);

            //이동속도
            if( Item.MoveSpeed + rValue.MoveSpeed != 0 )
                AddTooltipItemOption(432, string( Item.MoveSpeed + rValue.MoveSpeed ), true, true, false);

            //방어력(방패)           
            if( Item.ShieldDefense > 0 )
            {
                AddTooltipItemOption(95, string( Item.ShieldDefense ), true, true, false, "chatFontSize12",0,0,getInstanceL2Util().BrightWhite, getInstanceL2Util().ColorYellow);
            }

            //방어성공
            if( Item.ShieldDefenseRate > 0 )
                AddTooltipItemOption(317, string( Item.ShieldDefenseRate ), true, true, false);

            //물리회피
            if( Item.pAvoid + rValue.PhysicalAvoid > 0 )
                AddTooltipItemOption(2361, string( Item.pAvoid + rValue.PhysicalAvoid ), true, true, false);

            //마법회피
            if( Item.mAvoid + rValue.MagicalAvoid > 0 )
                AddTooltipItemOption(2364, string( Item.mAvoid + rValue.MagicalAvoid ), true, true, false);

            //TTP 48614로 제거.
            //공격속도[물리공격속도]
            //if( Item.pAttackSpeed + rValue.PhysicalAttackSpeed > 0 )
            //    AddTooltipItemOption(111, string( Item.pAttackSpeed + rValue.PhysicalAttackSpeed ), true, true, false);
            //마법적중[마법명중]
            //if( Item.mHitRate + rValue.MagicalHitRate > 0 )
            //    AddTooltipItemOption(2363, string( Item.mHitRate + rValue.MagicalHitRate ), true, true, false);
            //마법크리티컬
            //if( Item.mCriRate + rValue.MagicalCriRate > 0 )
            //    AddTooltipItemOption(2365, string( Item.mCriRate ), true, true, false);

            //마법속도[마법공격속도]
            if( Item.mAttackSpeed + rValue.MagicalAttackSpeed > 0 )
                AddTooltipItemOption(112, string( Item.mAttackSpeed + rValue.MagicalAttackSpeed ), true, true, false);

            // 마법 무기인가?
            bMagicWeapon = class'UIDATA_ITEM'.static.IsMagicWeapon(Item.ID);

            //SoulShot Count, 정령탄소모
            if (Item.SoulshotCount>0) AddTooltipItemOption(404, "X" $ String(Item.SoulshotCount), true, true, false);
            //SpiritShot Count, 마정탄소모
            if (Item.SpiritShotCount>0) AddTooltipItemOption(496, "X" $ String(Item.SpiritshotCount), true, true, false);

            //if ((Item.SoulshotCount>0 || Item.SpiritShotCount>0 ) && !getInstanceUIData().getIsClassicServer() )
            if ((Item.SoulshotCount>0 || Item.SpiritShotCount>0 ))
            {
                // 정령탄 증폭 효과 수치(float)
                fSoulShotPower   = GetSoulShotPower(Item.CrystalType, Item.Enchanted, Item.weaponType, bMagicWeapon);   
                // 마정탄 증폭 효과 수치(float)
                fSpiritShotPower = GetSpiritShotPower(Item.CrystalType, Item.Enchanted, Item.weaponType, bMagicWeapon); 
                
                // 정령탄, 마정탄 추가 대미지가 같다면 하나로 표현
                if (fSoulShotPower == fSpiritShotPower)
                {
                    // 0이면 기본칼라, 0보다 크면 강조
                    if (fSoulShotPower > 0)
                    {
                        AddTooltipItemBlank(TOOLTIP_LINE_HGAP);
                        AddTooltipColorText(GetSystemMessage(4297) $ " : ", getColor(163, 163, 163, 255), true, true);   
                        AddTooltipColorText("+" $ string(fSoulShotPower) $ "%", getColor(238, 170, 34, 255), false, true);                           
                    }
                }
                // 정령탄, 마정탄 추가 대미지가 다르면 1.4%, 3%  "," 로 구분해서..
                else
                {
                    AddTooltipItemBlank(TOOLTIP_LINE_HGAP);
                    AddTooltipColorText(GetSystemMessage(4297) $ " : ", getColor(163, 163, 163, 255), true, true);   
                    AddTooltipColorText("+" $ string(fSoulShotPower) $ "%" $ ", " $ string(fSpiritShotPower) $ "%", getColor(238, 170, 34, 255), false, true);   
                }
            }       
            
            //Weight
            if (Item.Weight==0)
                AddTooltipItemOption(52, " 0 ", true, true, false);
            else
                AddTooltipItemOption(52, String(Item.Weight), true, true, false);
            //AddTooltipItemOption(52, String(Item.Weight), true, true, false);
            
            //MP Consume
            if (Item.MpConsume != 0)
            {
                AddTooltipItemOption(320, String(Item.MpConsume), true, true, false);
            }
            
            //제련효과 설명
            AddTooltipRefinery(Item);

        break;
 
Hedgehog, да ведь Вы же смотрите на оружие, какие там сетовые бонусы. :)
Найдите "function addSetitemTooltip( ItemInfo Item )", присмотритесь там.
Да, кстати, решить вопрос с хдат - нет, не выйдет, тултипы там не живут.
 
Hedgehog, да ведь Вы же смотрите на оружие, какие там сетовые бонусы. :)
Найдите "function addSetitemTooltip( ItemInfo Item )", присмотритесь там.
Да, кстати, решить вопрос с хдат - нет, не выйдет, тултипы там не живут.
ну так разве мне для внедрения изображение в тутлип веапона не между строк надо свтавлять её?
Как я например вставил в конце и у меня картинка в конце, если вставлю в начале то она будет в начале, по ваше совету присмотреться ничего не увидел, так как я не понимаю, не могли бы вы выделить код который за это отвечает!?


C++:
//세트 아이템.

function addSetitemTooltip( ItemInfo Item )

{

    local int i;

    local int j;

    local string strTmp;

    local ItemID tmpItemID;

    local int SetID;

    //총 세트 아이템 개수

    local int totalNum;



    local bool IsSigil;   

    local ItemInfo tmpInfo;

    

    //아이템인지 확인.

    if( IsValidItemID(Item.ID) )

    {

        SetItemLineInsert( Item.ID, 0 );

        AddTooltipItemBlank(4);

        //AddCrossLine();



        //TOOLTIP_SETITEM_MAX 총 3종류의 setitem이 존재 함.

        //0 -> 5세트로 만들어진 아이템 (헬멧, 각반, 흉갑, 건틀렛, 부츠)

        //1 -> 쉴드, 시길이 추가된 세트

        //2 -> ?? 있는지 모름. 나중을 위해 만들어진듯.



        for ( i = 0; i < TOOLTIP_SETITEM_MAX ; i++ )

        {

            //세트아이템 리스트

            //GetSetItemNum 각 셋트 아이템의 개수.

            

            for ( SetID = 0 ; SetID < class'UIDATA_ITEM'.static.GetSetItemNum(Item.ID, i) ; SetID++ ) //0,1,2번 세트아이템효과 에 대해서 각각 몇가지의 세트가 완비되야하나..

            {                     

                tmpItemID.classID = class'UIDATA_ITEM'.static.GetSetItemFirstID( Item.ID, i, SetID );

                

                //세트아이템의 종류 추가 및 작용한 세트 아이템 클라이언트에서 확인.

                if (tmpItemID.classID > 0)

                {

                    strTmp = class'UIDATA_ITEM'.static.GetItemName(tmpItemID);

                    class'UIDATA_ITEM'.static.GetItemInfo( tmpItemID, tmpInfo );

                    //AddTooltipItemBlank(1);



                    addItemIconSmallType(tmpInfo, "");



                    StartItem();

                    m_Info.eType = DIT_TEXT;

                    //m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

                    m_Info.nOffSetY   = 4;

                    m_Info.bLineBreak = false;

                    m_Info.t_bDrawOneLine = false;                       

                    SetTooltipTextColor( 100, 100, 65, 255 );



                    //0 -> 5세트로 만들어진 아이템 (헬멧, 각반, 흉갑, 건틀렛, 부츠)

                    if( i == 0 )

                    {

                        //m_Info.t_strText = "- "$strTmp;

                        m_Info.t_strText = " "$strTmp;

                        ParamAdd(m_info.Condition, "SetItemNum", string(i));

                        ParamAdd(m_Info.Condition, "Type", "Equip");

                        ParamAddItemID(m_Info.Condition, Item.ID);

                        ParamAdd(m_Info.Condition, "CurTypeID", string(SetID));        //비교할 아이템의 Type 예(0번:흉갑 1번:각반 2번:헬멧 3번:팔 4번 다리 ..ItemName.txt에 들어있는순서

                        ParamAdd(m_Info.Condition, "NormalColor", "100,100,65");

                        ParamAdd(m_Info.Condition, "EnableColor", "255,250,160");

                        totalNum = SetID;

                    }

                    //1 -> 쉴드, 시길이 추가된 세트

                    else if( i == 1 )

                    {

                        m_Info.t_strText = "- (+) "$strTmp;

                        ParamAdd(m_info.Condition, "SetItemNum", string(i));

                        ParamAdd(m_Info.Condition, "Type", "Equip");

                        ParamAddItemID(m_Info.Condition, Item.ID);                       

                        ParamAdd(m_Info.Condition, "CurTypeID", string(SetID));        //비교할 아이템의 Type 예(0번:흉갑 1번:각반 2번:헬멧 3번:팔 4번 다리 ..ItemName.txt에 들어있는순서

                        ParamAdd(m_Info.Condition, "NormalColor", "100,70,0");

                        ParamAdd(m_Info.Condition, "EnableColor", "255,180,0");

                        IsSigil = IsSigilArmor(tmpItemID);

                    }

                    EndItem();

                    AddTooltipItemBlank(1);

                }

            }

        }



        for ( i = 0; i < TOOLTIP_SETITEM_MAX ; i++ )

        {   

            //셋트효과           

            for( j = 0; j < class'UIDATA_ITEM'.static.GetSetItemPeaceEffectNum( Item.ID, i ) ; j++ )

            {

                StartItem();

                m_Info.eType = DIT_TEXT;

                m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

                m_Info.bLineBreak = true;

                m_Info.t_bDrawOneLine = true;

                SetTooltipTextColor( 100, 70, 0, 255 );

                //0 -> 5세트로 만들어진 아이템 (헬멧, 각반, 흉갑, 건틀렛, 부츠)

                if( i == 0 )

                {

                    m_Info.t_strText = string( j+2 ) $ GetSystemString(2345) $ " : ";

                }

                //1 -> 쉴드, 시길이 추가된 세트

                else if( i == 1 )

                {   

                    //branch 110824

                    if( IsSigil == true )

                    {

                        m_Info.t_strText = string( totalNum + 1 ) $ GetSystemString(2345)$ "+" $ GetSystemString(1987) $ ": ";

                    }

                    else

                    {

                        m_Info.t_strText = string( totalNum + 1 ) $ GetSystemString(2345)$ "+" $ GetSystemString(2346) $ ": ";

                    }

                    //end of branch

                }

                ParamAdd(m_Info.Condition, "Type", "SetEffect");

                ParamAddItemID(m_Info.Condition, Item.ID);

                ParamAdd(m_Info.Condition, "EffectID", string(i));

                ParamAdd(m_Info.Condition, "SetEffectIndex", String(j));

                ParamAdd(m_Info.Condition, "NormalColor", "100,70,0");

                ParamAdd(m_Info.Condition, "EnableColor", "255,180,0");

                EndItem();

                

                strTmp = class'UIDATA_ITEM'.static.GetSetItemPeaceEffectDescription( Item.ID, i, j );

                StartItem();

                m_Info.eType = DIT_TEXT;

                m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

                SetTooltipTextColor( 68, 68, 68, 255 );

                m_Info.t_strText = strTmp;

                ParamAdd(m_Info.Condition, "Type", "SetEffect");

                ParamAddItemID(m_Info.Condition, Item.ID);

                ParamAdd(m_Info.Condition, "EffectID", String(i));

                ParamAdd(m_Info.Condition, "SetEffectIndex", String(j));

                ParamAdd(m_Info.Condition, "NormalColor", "68,68,68");

                ParamAdd(m_Info.Condition, "EnableColor", "170,170,170");

                EndItem();   

            }

        }



        for( j = 0; j < class'UIDATA_ITEM'.static.GetItemSetEnchantEffectNum( Item.ID ) ; j++ )

        {

            //인첸트 셋트효과

            strTmp = class'UIDATA_ITEM'.static.GetSetItemEnchantEffectDescription(Item.ID, j);

            if (Len(strTmp) > 0)

            {

                StartItem();

                m_Info.eType = DIT_TEXT;

                m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

                m_Info.bLineBreak = true;

                m_Info.t_color.R = 110;

                m_Info.t_color.G = 140;

                m_Info.t_color.B = 170;

                m_Info.t_color.A = 255;

                m_Info.t_strText = strTmp;

                ParamAdd(m_Info.Condition, "Type", "EnchantEffect");

                ParamAddItemID(m_Info.Condition, Item.ID);

                

                ParamAdd(m_Info.Condition, "NormalColor", "74,92,104");

                ParamAdd(m_Info.Condition, "EnableColor", "110,140,170");

                ParamAdd(m_Info.Condition, "SetEnchantEffectIndex", string(j));  //추가됨 2013.01.23 정우균



                EndItem();

            }

        }

    }

}



function SetItemLineInsert( ItemID id, int setID )

{

    //세트 아이템인지 확인..

    if( class'UIDATA_ITEM'.static.GetSetItemPeaceEffectNum( Id, setID ) != 0 )

    {

        // Debug( string ( class'UIDATA_ITEM'.static.GetSetItemPeaceEffectNum( Id, setID ) ) );



        BSetItem = true;



        //AddSectionTitleBoader();

        //AddTooltipItemBlank(1);

        ////AddTooltipItemOption(2347, "", true, false, false,"", 0, -24);

        //AddTooltipColorText(GetSystemString(2347), getColor(163, 163, 163, 255), true, true, false, "", 0, -24);           

        //SetTooltipItemColor(255, 255, 255, 0);

        //AddTooltipItemBlank(1);



        AddCrossLine();

        StartItem();

        m_Info.eType = DIT_TEXT;

        m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

        m_Info.bLineBreak = true;

        m_Info.t_bDrawOneLine = true;

        m_Info.t_strText = GetSystemString(2347);

        SetTooltipTextColor( 230, 230, 230, 255 );

        EndItem();

    }

    else

    {

        BSetItem = false;

    }

}



/**

 * 혈맹전쟁 용

 * 초를 넣어서 1일/11:33 같은 스트링 타입으로 반환

 **/

function string getSecToDateStr(int sec, bool onlyDayFlag)

{

    // 86400

    // 1109

    local string returnStr;

    local int remainSec;

    local int m_timeDay;

    local int m_timeHour;

    local int m_timeMin;

    //local int m_timeSec;



    // (일 day)

    m_timeDay = sec / 86400;

    remainSec = sec % 86400;

    

    m_timeHour = (remainSec / 60 / 60);        // 시

    m_timeMin = (remainSec / 60) % 60;        // 분

    // m_timeSec = remainSec % 60;    // 초



    // debug(" m_timeHour : " $ m_timeHour $ "m_timeMin : "  $ m_timeMin$ "m_timeSec : "  $ m_timeSec);   

    returnStr = "";

    if (m_timeDay > 0)

    {

        returnStr = String(m_timeDay) $ GetSystemString(1109); // $ "/";

    }



    if (onlyDayFlag == false)

    {

        // 일 day 이 없다면 / 을 해주지 않는다.

        if (returnStr != "") returnStr = returnStr $ "/";



        // 시를 그려준다.

        if(m_timeHour > 0)

        {

            if (m_timeHour < 10 ) returnStr = returnStr $ "0" $ string( m_timeHour );

            else returnStr = returnStr $ string( m_timeHour );

        }

        else

        {

            returnStr = returnStr $ "00";

        }



        // 분

        if(m_timeMin > 0)

        {

            if (m_timeMin < 10 ) returnStr =  returnStr $ ":0" $ string( m_timeMin );

            else returnStr = returnStr $ ":" $ string( m_timeMin );

        }

        else

        {

            returnStr = returnStr $ ":00";

        }

    }



    return returnStr;

}



/**

 * 전쟁 상태에 따른 스트링 리턴

 * 0, 1, 2, 3, 4  (매우열세, 열세, 대응, 우세, 매우강세)

 **/

function string getWarSituationString(int warSituation)

{

    local string returnStr;

    

    switch (warSituation)

    {

        case 0 : returnStr = returnStr $ GetSystemString(2355); break;

        case 1 : returnStr = returnStr $ GetSystemString(2354); break;

        case 2 : returnStr = returnStr $ GetSystemString(2353); break;

        case 3 : returnStr = returnStr $ GetSystemString(2352); break;

        case 4 : returnStr = returnStr $ GetSystemString(2351); break;



    }



    return returnStr;

}



//----------------------------------------------------------------------------------------------------------------------------------------------------

//  툴팁 조건 검사 함수들 모음

//----------------------------------------------------------------------------------------------------------------------------------------------------



function bool IsEnchantableItem(EItemParamType Type)

{

    return (Type == ITEMP_WEAPON || Type == ITEMP_ARMOR || Type == ITEMP_ACCESSARY || Type == ITEMP_SHIELD);

}



//----------------------------------------------------------------------------------------------------------------------------------------------------

//  툴팁 생성, 기본 함수 (가장 기본이 되는 것들만 넣을 것)

//----------------------------------------------------------------------------------------------------------------------------------------------------



function ClearTooltip()

{

    m_Tooltip.SimpleLineCount = 0;

    m_Tooltip.MinimumWidth = 0;

    m_Tooltip.DrawList.Remove(0, m_Tooltip.DrawList.Length);

}



function StartItem()

{

    local DrawItemInfo infoClear;

    m_Info = infoClear;

}



function EndItem()

{

    m_Tooltip.DrawList.Length = m_Tooltip.DrawList.Length + 1;

    m_Tooltip.DrawList[m_Tooltip.DrawList.Length-1] = m_Info;

}





//툴팁 Text 색상 변경.

function SetTooltipTextColor( int R, int G, int B, int A )

{

    m_Info.t_color.R = R;

    m_Info.t_color.G = G;

    m_Info.t_color.B = B;

    m_Info.t_color.A = A;

}



//툴팁 Text

function SetTooltipText( string strDesc, bool bLineBreak, bool t_bDrawOneLine, optional bool isFirstLine)

{

    m_Info.eType = DIT_TEXT;

    if (!isFirstLine) m_Info.nOffSetY = TOOLTIP_LINE_HGAP;

    m_Info.t_strText = strDesc;

    m_Info.bLineBreak = bLineBreak;   

    m_Info.t_bDrawOneLine = t_bDrawOneLine;

}
 
Hedgehog, ну вот там где прям addItemIconSmallType(tmpInfo, ""); идет вызов иконки и дальше текст. Проще всего действительно методом тыка всё переклацать в своем интерфейсе и смотреть что происходит, как default_npc и говорил, либо прям саливейшена интерфейс пересобирать и там ломать что-то, смотря, что теперь работать перестало. Тут просто мне видиться не очень много вариантов: Вы можете хотеть в этом разобраться и понимать как с этими тултипами обходиться и что-то менять - тогда всё еще верю в эффективность священного метода тыка, либо оно Вам не очень-то нужно, хочется чтобы просто работало как Вам нужно и не вникать в эти все тонкости, тогда Вы рискуете потратить много времени в пустую, я бы рекомендовал просто заказать нужную Вам реализацию и не топтаться на месте.
 
Hedgehog, ну вот там где прям addItemIconSmallType(tmpInfo, ""); идет вызов иконки и дальше текст. Проще всего действительно методом тыка всё переклацать в своем интерфейсе и смотреть что происходит, как default_npc и говорил, либо прям саливейшена интерфейс пересобирать и там ломать что-то, смотря, что теперь работать перестало. Тут просто мне видиться не очень много вариантов: Вы можете хотеть в этом разобраться и понимать как с этими тултипами обходиться и что-то менять - тогда всё еще верю в эффективность священного метода тыка, либо оно Вам не очень-то нужно, хочется чтобы просто работало как Вам нужно и не вникать в эти все тонкости, тогда Вы рискуете потратить много времени в пустую, я бы рекомендовал просто заказать нужную Вам реализацию и не топтаться на месте.
В том то и дело, топчусь на месте, но мне принципиально нужно сделать ээто самому а не заказать и тд. Так как я начал познавать всё это с 0 хочеться и самому это делать, ну как минимум своими руками по гайдам/советам/подсказкам но своими. Чтобы потом в случае чего я мог править то что уже сделал. Ну методом тыка у меня получилось то что получилось, чтож, буду тыкать дальше.
На этом форуме есть гуру интерфейса пару человек минимум, но к сожелению это не в их интересах направлять по таким вопросам)
 
Hedgehog, если цель научиться, понимать и принципиально делать самому, я бы еще советовал Вам ставить задачу не "прийти к какому-то результату", а прежде всего разобраться за что отвечает каждая строка, зачем используется bLineBreak, что такое nOffSet, и всё-всё, что сейчас не до конца понятно или вызывает сомнения.
 
Hedgehog, если цель научиться, понимать и принципиально делать самому, я бы еще советовал Вам ставить задачу не "прийти к какому-то результату", а прежде всего разобраться за что отвечает каждая строка, зачем используется bLineBreak, что такое nOffSet, и всё-всё, что сейчас не до конца понятно или вызывает сомнения.
Да да, именно в этом я и хотел бы разобраться, это в каких-то книгах есть этому объяснение или это также методом тыка в данном случае узнавать :)?
 
Hedgehog, может я мыслю наивно, но в данном случае, особенно с параметрами бул, которые могут быть только тру/фолс, куда проще скомпилить два раза и посмотреть что вышло. :ROFLMAO: В большинстве случаев названия намекают на то что собой являют, "DrawOneLine", "LineBreak", но посмотреть как это на практике работает - лучше таки на практике. )
 
Hedgehog, может я мыслю наивно, но в данном случае, особенно с параметрами бул, которые могут быть только тру/фолс, куда проще скомпилить два раза и посмотреть что вышло. :ROFLMAO: В большинстве случаев названия намекают на то что собой являют, "DrawOneLine", "LineBreak", но посмотреть как это на практике работает - лучше таки на практике. )
Я по моему так делал уже, не помню. Ну щас ещё раз попробую )

C++:
            m_Info.bLineBreak = false;
            m_Info.t_bDrawOneLine = false;

Не, методом тыка выяснилось что эти строчки просто дают команду перенести на след строку или что-то в этом духе, а мне надо наложить картинку на картинку какбы. И текст на картинку, что-бы картинка была был как Бэкграунд(Задни фон)
 
Hedgehog, я не имел ввиду, что эти булы всё сделают сами (иначе почему их так много в тултипах, и так мало реализаций которых Вы ищите? :ROFLMAO: ), это я к тому, что когда у Вас не останется вопросов "а за что отвечает этот параметр и что он конкретно здесь делает", Вы будете знать как реализовать то, что ищите. А пока такие вопросы есть, Вы не сможете в случае чего свободно исправить то, что уже сделали, как указывали раньше.
 
Условно говоря пример как вложенные структуры, и в зависимости от одного параметра может показываться или скрываться другая часть параметров... поняно
Да, так понятно что ничего не понятно, спасибо.
 
  • Ха-ха-ха
Реакции: Rolo
Rolo Monokini2
Спасибо большое за помощь. Вопрос решился строчкой
m_Info.nOffSetX = -398; :ROFLMAO:
 
Для того чтобы текст лег на текстуру нужно сдвинуть текст в минус координату nOffSetX (Как писал выше Hedgehog) так как по умолчанию текстура сдвигает текст в право.
C++:
    StartItem();
    m_Info.eType = DIT_TEXTURE;
    m_Info.nOffSetY = 6;
    m_Info.bLineBreak = true;
    m_Info.t_bDrawOneLine = true;
    m_Info.u_nTextureWidth = 160;
    m_Info.u_nTextureHeight = 26;
    m_Info.u_nTextureUWidth = 160;
    m_Info.u_nTextureUHeight = 26;
    m_Info.u_strTexture = "L2UI_CT1.Button.Button_DF_Click";
    EndItem();

    StartItem();
    m_Info.eType = DIT_TEXT;
    m_Info.t_strText = GetSystemString(190) $ " : "$ ConvertNumToText(Int64ToString(GetAdena()));
    m_Info.nOffSetY = 15;
    m_Info.nOffSetX = -150;
    EndItem();
 

Вложения

  • w.png
    w.png
    42,8 КБ · Просмотры: 63
  • Мне нравится
Реакции: Hedgehog

    Hedgehog

    Баллов: 1
    За развёрнутый ответ :)
Rolo Monokini2
Спасибо большое за помощь. Вопрос решился строчкой
m_Info.nOffSetX = -398; :ROFLMAO:
По моему в этих хрониках уже есть бекграунд текстуры в структуре тултипа. Но если нужны под кастомные или специфические задачи - то это решение тоже канает.

Грубо говоря ставится текстура и ставится текст, а после текст сдвигается на размер текстуры в минус и оказывается на ней.
 
По моему в этих хрониках уже есть бекграунд текстуры в структуре тултипа. Но если нужны под кастомные или специфические задачи - то это решение тоже канает.

Было бы не плохо увидеть пример :)
 
Назад
Сверху Снизу