, Гильдия «Черамор»

DefaultTextTag

» опубликован
» Способ реализации: Zinc
» Тип: Наработка

Имитация стандартного плавающего текста

MUI: да
Импорт: нет
Утечки: нет
Требования: JNGP
Позволяет имитировать:
  • Награда золотом
  • Награда деревом
  • Промах
  • Критический удар
  • Магический огонь
  • Отравленный нож

Скриншоты

Установка

  • Скопировать триггер DefaultTextTag

Описание функции

DefaultTextTag(integer index, widget target, string text) -> texttag
/*
index	тип текстага	0 : Награда золотом
								1 : Награда деревом
								2 : Промах             
								3 : Критический удар             
								4 : Магический огонь
								5 : Отравленный нож             
target	цель
text		текст
*/

Техничеcкие подробности

» Код библиотеки
/*
DefaultTextTag(integer index, widget target, string text) -> texttag
index       тип текстага    0 : Награда золотом
                            1 : Наград деревом
                            2 : Промах             
                            3 : Критический удар             
                            4 : Магический огонь
                            5 : Отравленный нож             
target      цель
text        текст

*/
//! zinc
library DefaultTextTag {    
    constant real OffsetX = 16.0;
    constant real FontSize = 0.024;
    
    integer Color[16][4];
    real Setting[16][4];
    
    function addColor(integer index, integer c0, integer c1, integer c2, integer c3){
        Color[index][0] = c0;
        Color[index][1] = c1;
        Color[index][2] = c2;
        Color[index][3] = c3;
    }
    
    function addSetting(integer index, real s0, real s1, real s2, real s3, real s4){
        Setting[index][0] = s0; // Velocity 1
        Setting[index][1] = s1; // Velocity 2
        Setting[index][2] = s2; // Fadepoint
        Setting[index][3] = s3; // Lifespan
        Setting[index][4] = s4; // OffsetX
    }
    
    function addTextTag(texttag tt, integer index, widget target, string text) -> texttag {
        real x = GetWidgetX(target);
        real y = GetWidgetY(target);
    
        SetTextTagText(tt, text, FontSize);
        SetTextTagPos(tt, x + Setting[index][4], y, 0.0);
        SetTextTagColor(tt, Color[index][0],Color[index][1], Color[index][2], Color[index][3]);
        SetTextTagVelocity(tt, Setting[index][0],  Setting[index][1]);
        SetTextTagFadepoint(tt, Setting[index][2]);
        SetTextTagLifespan(tt, Setting[index][3]);
        SetTextTagVisibility(tt, IsVisibleToPlayer(x, y, GetLocalPlayer()));
        SetTextTagPermanent(tt, false);
        return tt;
    }
    
    public {
        function DefaultTextTag(integer index, widget target, string text) -> texttag {
            return addTextTag(CreateTextTag(), index, target, text);
        }
    }
    
    function onInit(){
        integer index;
        
        index = 0; // Gold Bounty
        addColor(index, 255, 220, 0, 255);
        addSetting(index,
            0.0,    // Velocity 1
            0.03,   // Velocity 2
            2.0,    // Fadepoint
            3.0,    // Lifespan
            -16.0   // OffsetX
        );
        
        index = 1; // Lumber Bounty
        addColor(index, 0, 200, 80, 255);
        addSetting(index,
            0.0,    // Velocity 1
            0.03,   // Velocity 2
            2.0,    // Fadepoint
            3.0,    // Lifespan
            -16.0   // OffsetX
        );
        
        index = 2; // Miss
        addColor(index, 255, 0, 0, 255);
        addSetting(index,
            0.0,    // Velocity 1
            0.03,   // Velocity 2
            1.0,    // Fadepoint
            3.0,    // Lifespan
            0       // OffsetX
        );
  
        index = 3; // Critical Strike
        addColor(index, 255, 0, 0, 255);
        addSetting(index,
            0.0,    // Velocity 1
            0.04,   // Velocity 2
            2.0,    // Fadepoint
            5.0,    // Lifespan
            0       // OffsetX
        );        
        
        index = 4; // Mana Burn
        addColor(index, 82, 82 ,255 ,255);
        addSetting(index,
            0.0,    // Velocity 1
            0.04,   // Velocity 2
            2.0,    // Fadepoint
            5.0,    // Lifespan
            0       // OffsetX
        );          
        
        index = 5; // Shadow Strike
        addColor(index, 160, 255, 0, 255);
        addSetting(index,
            0.0,    // Velocity 1
            0.04,   // Velocity 2
            2.0,    // Fadepoint
            5.0,    // Lifespan
            0       // OffsetX
        ); 
    }
}
//! endzinc


Просмотров: 614

MrGROX #1 - 8 месяцев назад 0
Великолепно. Это просто неоценимая услуга. Получи свою награду.
Bergi_Bear #2 - 8 месяцев назад 0
Это уже было где -то просто рассказывали какой цветовой код нужен для стандартных текстагов, а тут всё в 1 наработке собрано, да и в таком виде, всё круто
NazarPunk #3 - 8 месяцев назад (отредактировано ) 0
Это уже было где -то
Сам видел множество наработок для этого, но ниодна не возвращала созданный текстаг. А тут например
local texttag tt = DefaultTextTag(0, GetTriggerUnit(), "+10 золота")
call SetTextTagVisibility(tt, GetOwning(GetTriggerUnit()) == GetLocalPlayer())
// call SetTextTagVisibility(tt, /* Любое ваше условие, если стандартное не нравится */)

tt = null