Как сделать триггер, из-за которого все слова игрока появляются над его героем?
(Если не трудно - дайте пожалуйста скриншот!)

Принятый ответ

гугл в помошь! Такой ресурс ого-го 5-6 лет назад реализован... Найдеш!
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
23
6 лет назад
2
8gabriel8, получаем длину строк и проходим циклом по 1 букв выдергивая и снова цикл ишем в альфавит русского языка если нет то 1 байт а если есть 2 байт и так расчитиваем и свдиг позиции... Геморой конечно но зная лимита текст над головой не актуально если и будет урон появлять и чат.
Короче неактуально как бы!
0
26
6 лет назад
0
Как циклом по букве проходить? На GUI)
2
23
6 лет назад
Отредактирован pro100master
2
вроде Substr не помню забыл есть в гуи, просто век не заходил в редактор забываю((
8gabriel8:
Как циклом по букве проходить? На GUI)
Вот так примерно гуи реализовал и конвентировал в jass
set udg_t = GetEventPlayerChatString()
set bj_forLoopAIndex = 0
set bj_forLoopAIndexEnd = StringLength(udg_t)
loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set udg_b = SubStringBJ(udg_t, bj_forLoopAIndex, IMinBJ((bj_forLoopAIndex + 1), bj_forLoopAIndexEnd))
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
где udg_b это 1 букв каждый цикл и проверяете что хотите узнай что это
Вот хороший библиотека выровняет текст над головой
//==============================================================================
//  TEXT TAG - Floating text system by Cohadar - v4.0
//==============================================================================
//
//  PURPOUSE:
//       * Displaying floating text - the easy way
//       * Text is automatically centered depending on it's length
//
//  FUNCTION LIST:
//       * TextTag_XY(x, y, text, color)
//       * TextTag_Unit(unit, text, color)
//       * TextTag_GoldBounty(unit, text, killer)
//       * TextTag_LumberBounty(unit, text, killer)
//
//         color is a color string, example: "|c00FFCC00"
//         killer is a killing player, usually: GetOwningPlayer(GetKillingUnit())
//         (bounty text is visible only to killer)
//
//  HOW TO IMPORT:
//       * Just create a trigger named TextTag
//         convert it to text and replace the whole trigger text with this one
//==============================================================================

library TextTag

globals    
    private constant integer MEAN_CHAR_WIDTH = 8
    private constant integer MAX_TEXT_SHIFT = 32    
    
    private constant real    FONT_SIZE = 0.025
    private constant real    VELOCITY_X = 0
    private constant real    VELOCITY_Y = .04
    private constant real    LIFESPAN = 4
    private constant real    HEIGHT = 16
    private constant real    FADE_POINT = 2.5
endglobals


//===========================================================================
public function XY takes real x, real y, string text, string color returns nothing
    local texttag t = CreateTextTag()
    local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
   
    call SetTextTagText(t, color+text, FONT_SIZE)
    call SetTextTagPos(t, x-shift, y, HEIGHT)
    call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
    call SetTextTagVisibility(t, true)
    call SetTextTagFadepoint(t, FADE_POINT)
    call SetTextTagLifespan(t, LIFESPAN)
    call SetTextTagPermanent(t, false)
   
    set t = null
endfunction

//===========================================================================
public function Unit takes unit whichUnit, string text, string color returns nothing
    local texttag t = CreateTextTag()
    local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
   
    call SetTextTagText(t, color+text, FONT_SIZE)
    call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
    call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
    call SetTextTagVisibility(t, true)
    call SetTextTagFadepoint(t, FADE_POINT)
    call SetTextTagLifespan(t, LIFESPAN)
    call SetTextTagPermanent(t, false)    
   
    set t = null
endfunction

//===========================================================================
public function GoldBounty takes unit whichUnit, string text, player killer returns nothing
    local texttag t = CreateTextTag()
    local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
   
    call SetTextTagText(t, text, FONT_SIZE)
    call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
    call SetTextTagColor(t, 255, 220, 0, 255)
    call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
    call SetTextTagVisibility(t, GetLocalPlayer()==killer)
    call SetTextTagFadepoint(t, FADE_POINT)
    call SetTextTagLifespan(t, LIFESPAN)
    call SetTextTagPermanent(t, false)
   
    set t = null
endfunction

//==============================================================================
public function LumberBounty takes unit whichUnit, string text, player killer returns nothing
    local texttag t = CreateTextTag()
    local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
   
    call SetTextTagText(t, text, FONT_SIZE)
    call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
    call SetTextTagColor(t, 0, 196, 0, 255)
    call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
    call SetTextTagVisibility(t, GetLocalPlayer()==killer)
    call SetTextTagFadepoint(t, FADE_POINT)
    call SetTextTagLifespan(t, LIFESPAN)
    call SetTextTagPermanent(t, false)
   
    set t = null
endfunction

endlibrary
0
26
6 лет назад
0
Разобрался с SubString и сделал версию с выровненным текстом:
Может быть в некоторых обстоятельствах немного менее чёткую, чем у этой библиотеки, зато на обычных триггерах.
Загруженные файлы
0
30
6 лет назад
Отредактирован Clamp
0
зато на обычных триггерах
В контексте личного развития это вряд ли можно считать положительной характеристикой.
0
26
6 лет назад
0
Clamp, очень разумно детсадовцу дать учебник по математике средней школы и сказать: «Развивайся!»
Автору вопроса в этом GUI будет трудно разобраться
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.