В маньяке с бензопилой помню было такое, хп и стамина отображались сверху в виде плавающего текста, только мне для другого надо. Не знаю как закрепить, пытался многими способами, но ни к чему хорошему не пришел, может есть идеи как это исполнить на GUI ну или если на Jass, то тогда объяснить, что и как там можно менять и для чего)

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

Например, так.
Создаёшь текст, периодическим триггером на 0.01 секунды его смещаешь. Но всё равно текст сильно дёргается. Надо вскрывать маньяка, либо DGUI, чтобы посмотреть, как там ровно сделано.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
5 лет назад
0
Можно прикрепить к положению камеры игрока и с очень малым периодом смещать в текущее местоположение, если координаты камеры сменились. По такому принципу сделан DGUI.
0
7
5 лет назад
0
8gabriel8:
Можно прикрепить к положению камеры игрока и с очень малым периодом смещать в текущее местоположение, если координаты камеры сменились. По такому принципу сделан DGUI.
я так и пытался, только не понял как прикрепить к положению камеры игрока, можно тут поподробнее.
0
26
5 лет назад
0
Например, так.
Создаёшь текст, периодическим триггером на 0.01 секунды его смещаешь. Но всё равно текст сильно дёргается. Надо вскрывать маньяка, либо DGUI, чтобы посмотреть, как там ровно сделано.
Загруженные файлы
Принятый ответ
4
24
5 лет назад
Отредактирован prog
4
Или переходить на 1.31 и делать интерфейсный фрейм новыми нативками и забыть про DGUI и плавающий текст как про страшный сон.
0
29
5 лет назад
Отредактирован nazarpunk
0
8gabriel8, главное утечеч не наплодить
Загруженные файлы
0
7
5 лет назад
0
NazarPunk:
8gabriel8, главное утечеч не наплодить
к счастью для меня, я в курсе про утечки, я сейчас попробую сделать и отпишу о результате, спасибо.
Эх и в правду сильно дергается, в DGUI я к сожалению не разобрался, пока не знаю как буду решать, пока оставлю дерганный, если в будущем придумаю как усовершенствовать, то сделаю что-нибудь, всем спасибо.
0
26
5 лет назад
0
Не проверил на кручение колёсиком мыши. Если что с колёсиком будет не так, то можно экспериментировать ещё с Source Camera, но там прибавлять надо уже не 512, а, например, 1408.
0
21
5 лет назад
0
prog, а Вы не знаете как это сделать? Я пытался, но ничего не смог сделать, едниственное, что смог сделать, это сдвинуть в места "Нет расходов" и только то, что вызывается во время игры, а сам свою создать никак не могу.
        local mainFrame = BlzGetOriginFrame( ORIGIN_FRAME_TOP_MSG, 0 )
        local text      = BlzCreateFrame( "ResourceBarUpkeepText", mainFrame, 0, 0 )

        SetPlayerState( Player(0), PLAYER_STATE_RESOURCE_FOOD_USED, 99 )

        BlzFrameSetText( text, "P I C K   H E R O" )
        BlzFrameSetVisible( text, true )

        BlzFrameSetPoint( text, FRAMEPOINT_TOP, mainFrame, FRAMEPOINT_CENTER, 0.0, 0.0 )

        print( "ASD" )
2
29
5 лет назад
2
а Вы не знаете как это сделать?
Здесь есть примеры.
0
21
5 лет назад
0
NazarPunk, я там прочитал и сделал то, что выше скинул. Код не работает.
0
29
5 лет назад
0
я там прочитал и сделал то
Плохо читали, там же есть пример с текстом
function TestFrameEvent takes nothing returns nothing
   //call BJDebugMsg("TestFrameEvent")
   //call BJDebugMsg("Player: "+GetPlayerName(GetTriggerPlayer()))

   if BlzGetTriggerFrameEvent() ==FRAMEEVENT_CONTROL_CLICK then
       call BJDebugMsg("FRAMEEVENT_CONTROL_CLICK")

   elseif BlzGetTriggerFrameEvent() == FRAMEEVENT_MOUSE_ENTER then
       call BJDebugMsg("FRAMEEVENT_MOUSE_ENTER")
   elseif BlzGetTriggerFrameEvent() == FRAMEEVENT_MOUSE_LEAVE then
       call BJDebugMsg("FRAMEEVENT_MOUSE_LEAVE")
   endif
endfunction

function TestClickableButton takes nothing returns nothing
local trigger trig = CreateTrigger()
  local framehandle mainbutton = BlzCreateFrame("ScoreScreenBottomButtonTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI,0), 0,  0)
   local framehandle imgFrame = BlzGetFrameByName("ScoreScreenButtonBackdrop",  0)
   local framehandle tooltipBox = BlzCreateFrame("ListBoxWar3", mainbutton, 0,  0)
  local framehandle tooltip = BlzCreateFrameByType("TEXT", "StandardInfoTextTemplate", tooltipBox, "StandardInfoTextTemplate",  0)

   call BlzFrameSetSize(mainbutton, 0.04, 0.04)

   call BlzFrameSetSize(tooltipBox, 0.3, 0.1)
   call BlzFrameSetSize(tooltip, 0.28, 0.08)//tooltip-Text is smaller than the box, so it wont touch the border.

  call BlzFrameSetTexture(imgFrame, "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp", 0, true) //set the image of the imgFrame, with 0 the texture is streched with 1 the frame is filled with that texture.

   call BlzFrameSetAbsPoint(mainbutton, FRAMEPOINT_TOPLEFT, 0.4, 0.3) //positionate button on the screen


   call BlzFrameSetPoint(tooltip, FRAMEPOINT_CENTER, tooltipBox, FRAMEPOINT_CENTER, 0.0, 0.0) //place tooltip into tooltipBox
  call BlzFrameSetPoint(tooltipBox, FRAMEPOINT_BOTTOM, mainbutton, FRAMEPOINT_TOP, 0.0, 0.0) //place tooltipBox with its bottom to the mainButtons TOP. tooltipBox will be over the mainbutton

   call BlzFrameSetTooltip(mainbutton, tooltipBox) //show tooltipBox only when mainbutton is hovered with the mouse.
  call BlzFrameSetText(tooltip, "Sound\\Music\\mp3Music\\Credits.mp3|nSound\\Music\\mp3Music\\PH.mp3|n|cffffcc00Sound\\Music\\mp3Music\\War2IntroMusic.mp3") //text of the tooltip


   call TriggerAddAction(trig, function TestFrameEvent)
   call BlzTriggerRegisterFrameEvent(trig, fh, FRAMEEVENT_CONTROL_CLICK)
   call BlzTriggerRegisterFrameEvent(trig, fh, FRAMEEVENT_MOUSE_ENTER)
   call BlzTriggerRegisterFrameEvent(trig, fh, FRAMEEVENT_MOUSE_LEAVE)

endfunction
0
21
5 лет назад
0
NazarPunk, кажется тут совсем другое. Я имел ввиду этот текст
1
29
5 лет назад
1
кажется тут совсем другое. Я имел ввиду этот текст
Я ж говорю, плохо читали)
do
    TimerStart(
        CreateTimer(),
        0,
        false,
        function()
            local GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
            local tooltip =
                BlzCreateFrameByType("TEXT", "StandardInfoTextTemplate", GAME_UI, "StandardInfoTextTemplate", 0)
            BlzFrameSetSize(tooltip, 0.28, 0.08)
            BlzFrameSetPoint(tooltip, FRAMEPOINT_CENTER, GAME_UI, FRAMEPOINT_CENTER, 0.0, 0.0)
            BlzFrameSetText(tooltip, "И что тут непонятного?")
        end
    )
end
Загруженные файлы
0
26
5 лет назад
0
вообще то в маньяке это сделано через абуз строк мультиборда, способ очень бородатый
0
21
5 лет назад
0
NazarPunk, а почему текст не похож? Я попытался имзенить размер, но он не меняется. Расположение тоже не получается сделать по центру.
Походу это просто текст на экране, а не сообщение о расходах.
SetSize меняет не размер, а местонахождение...
1
29
5 лет назад
1
Походу это просто текст на экране, а не сообщение о расходах.
Вы точно читали?
do
    TimerStart(
        CreateTimer(),
        0,
        false,
        function()
            local GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
            local frame = BlzGetFrameByName("ResourceBarUpkeepText", 0)
            BlzFrameClearAllPoints(frame)
            BlzFrameSetPoint(frame, FRAMEPOINT_TOP, GAME_UI, FRAMEPOINT_TOP, 0, -0.05)
        end
    )
end
Загруженные файлы
0
21
5 лет назад
0
NazarPunk, здесь Вы просто переместили надпись, а мне нужно создать свой текст
Здесь я вывел через SetPlayerState( ) надпись на экране, как видно на скрине, эта надпись намного крупнее.
Загруженные файлы
0
26
5 лет назад
0
здесь Вы просто переместили надпись, а мне нужно создать свой текст
Hate:
вообще то в маньяке это сделано через абуз строк мультиборда, способ очень бородатый
чукча не читатель, чукча писатель?
0
29
5 лет назад
Отредактирован nazarpunk
0
ScopteRectuS, я непойму, что вы хотите?
Величину текста кодом задать нельзя. Все текстовые фрэймы игры наследуют один из следующих фрэймов
  Frame "TEXT" "StandardButtonTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.013, "",
    FontJustificationH JUSTIFYCENTER,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 0.99 0.827 0.0705 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.5 0.5 0.5 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,
}

Frame "TEXT" "StandardInfoTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.013, "",
    FontJustificationH JUSTIFYCENTER,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 0.99 0.827 0.0705 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.5 0.5 0.5 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardTitleTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.015, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 1.0 1.0 1.0 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
    FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardLabelTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.013, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 0.99 0.827 0.0705 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardValueTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.013, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 1.0 1.0 1.0 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardSmallTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.011, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 0.99 0.827 0.0705 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardSmallTitleTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.011, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 1.0 1.0 1.0 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
	FontShadowColor 0.0 0.0 0.0 0.9,	
    FontShadowOffset 0.001 -0.001,	
}

Frame "TEXT" "StandardExtraSmallTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.009, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 0.99 0.827 0.0705 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
    FontShadowColor 0.0 0.0 0.0 0.9,    
    FontShadowOffset 0.001 -0.001,  
}

Frame "TEXT" "StandardExtraSmallTitleTextTemplate" {
    DecorateFileNames,
    FrameFont "MasterFont", 0.007, "",
    FontJustificationH JUSTIFYLEFT,
    FontJustificationV JUSTIFYMIDDLE,    
    FontFlags "FIXEDSIZE",
    FontColor 1.0 1.0 1.0 1.0,
    FontHighlightColor 1.0 1.0 1.0 1.0,
    FontDisabledColor 0.2 0.2 0.2 1.0,
    FontShadowColor 0.0 0.0 0.0 0.9,    
    FontShadowOffset 0.001 -0.001,  
}
Если хотите свои настройки, создайте свой .fdf и измените их
            Frame "TEXT" "MyAwesomeText" INHERITS "StandardInfoTextTemplate" {
                SetPoint TOPLEFT, "MyAwesomeFrame", BOTTOMLEFT, 0.0, -0.001,
                Width 0.37,
                FontJustificationH JUSTIFYLEFT,
                Text "MyAwesomeText",
            }

0
21
5 лет назад
0
NazarPunk, если в двух словах, то мне нужна функция из мемхака:
    function SuperTextPrinter takes string s, integer color, real staytime returns nothing
        call CallThisCallWith4Args( pPrintText1, RMem( pGameClass2 ), GetStringAddress( s ), mR2I( staytime ), color )
    endfunction
1
26
5 лет назад
1
ScopteRectuS:
NazarPunk, если в двух словах, то мне нужна функция из мемхака:
    function SuperTextPrinter takes string s, integer color, real staytime returns nothing
        call CallThisCallWith4Args( pPrintText1, RMem( pGameClass2 ), GetStringAddress( s ), mR2I( staytime ), color )
    endfunction
але, вы в порядке там?
0
29
5 лет назад
0
если в двух словах, то мне нужна функция из мемхака
Ну это уже у адептов мемхака спрашивайте)
0
21
5 лет назад
0
Hate, зачем мне этот мультибоард, если близы добавили нативную поддержку делать то же самое?
К тому же, по-моему, в карте нельзя использовать больше одного мультибоарда.
0
26
5 лет назад
0
ScopteRectuS:
Hate, зачем мне этот мультибоард, если близы добавили нативную поддержку делать то же самое?
К тому же, по-моему, в карте нельзя использовать больше одного мультибоарда.
вы спросили как сделать как в маньяке - я дал вам ссылку.
делать динамичное изменение фреймов еще наверное известно как делать полтора землекопам
0
21
5 лет назад
0
Hate, я не спрашивал как сделать в маньяке, я не автор этого вопроса.))
Чтобы оставить комментарий, пожалуйста, войдите на сайт.