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

гугл в помошь! Такой ресурс ого-го 5-6 лет назад реализован... Найдеш!
`
ОЖИДАНИЕ РЕКЛАМЫ...
22
гугл в помошь! Такой ресурс ого-го 5-6 лет назад реализован... Найдеш!
Принятый ответ
26
pro100master:
гугл в помошь! Такой ресурс ого-го 5-6 лет назад реализован... Найдеш!
Очень смешно, сам поискал бы.

Сделал пример:
Но только там не по центру героя получается текст, а влево от героя уходит. Но в целом и так нормально. Следует количество символов подсчитывать, чтобы хотя бы примерно текст центрировать и заодно разное время исчезновения делать для текстов разной длины. А подсчитывать количество символов не умею.
Загруженные файлы
18
8gabriel8, есть проверка длины строки (String Length) - она целочисленная.
28
8gabriel8, pro100master, у нас есть статья в который описана подобная вещь
и даже карта с ней прикреплена
26
nvc123:
у нас есть статья в который описана подобная вещь
и даже карта с ней прикреплена
Не видел у нас такой статьи.

Maniac_91:
8gabriel8, есть проверка длины строки (String Length) - она целочисленная.
Попробовал переделать триггер с учётом этого, но что-то пошло не так. Тогда стал выводить на экран длину строки, русские символы занимают места в два раза больше английских. По идее должен быть другой способ считать символы.
28
Попробовал переделать триггер с учётом этого, но что-то пошло не так. Тогда стал выводить на экран длину строки, русские символы занимают места в два раза больше английских. По идее должен быть другой способ считать символы.
потому что 1 русский символ это 2 байта
другого способа нету
26
nvc123, так можно забить алфавит строчных и прописных и сверять по букве алфавита из введённой строки. Только не умею этого.
P. S. По названию статьи "Скрытие сообщений чата" сразу становится понятно, что там сообщения выводятся над героем игрока)
P. P. S. Да ещё и jass-триггер
22
8gabriel8, получаем длину строк и проходим циклом по 1 букв выдергивая и снова цикл ишем в альфавит русского языка если нет то 1 байт а если есть 2 байт и так расчитиваем и свдиг позиции... Геморой конечно но зная лимита текст над головой не актуально если и будет урон появлять и чат.
Короче неактуально как бы!
22
вроде 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
26
Разобрался с SubString и сделал версию с выровненным текстом:
Может быть в некоторых обстоятельствах немного менее чёткую, чем у этой библиотеки, зато на обычных триггерах.
Загруженные файлы
30
зато на обычных триггерах
В контексте личного развития это вряд ли можно считать положительной характеристикой.
26
Clamp, очень разумно детсадовцу дать учебник по математике средней школы и сказать: «Развивайся!»
Автору вопроса в этом GUI будет трудно разобраться
Чтобы оставить комментарий, пожалуйста, войдите на сайт.