XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Прозрачность тексттага...
Собственно не как не могу сделать тексттаг полупрозрачным, те. каким он был таким и остаётся, несмотря на настройки параметра Alpha...
Вот код:
function TextTagAlpha takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local texttag tt = LoadTextTagHandle(udg_Hashtable,h,0)
    local integer Alpha = LoadInteger(udg_Hashtable,h,1)
    
    if( Alpha >= 100 ) then
      call PauseTimer(t)
      call FlushChildHashtable(udg_Hashtable,h)
      call DestroyTextTag(tt)
      call DestroyTimer(t)
    endif
    set Alpha = Alpha + 15
    call SetTextTagColor(tt, 255, 255, 255,PercentTo255(100.0-Alpha) )
    call SaveInteger(udg_Hashtable,GetHandleId(t),1,Alpha)
    
    set t = null
    set tt = null
endfunction

function FloatingTextFadeout takes player pl, unit fp_uUnit, string st returns nothing
    local texttag tt = CreateTextTag()
    local timer t = CreateTimer()
    call SetTextTagText(tt,st,0.023)
    call SetTextTagPosUnit(tt, fp_uUnit, 0.00)
    call SetTextTagVelocity(tt, 0.00, 0.035)

    if( GetLocalPlayer() == pl and pl != Player(12)) then 
      call SetTextTagVisibility(tt, true)
    endif
    call SetTextTagColor(tt, 255, 255, 255, 100 )
    call SaveTextTagHandle(udg_Hashtable,GetHandleId(t),0,tt)
    call SaveInteger(udg_Hashtable,GetHandleId(t),1,0)
    
    call TimerStart(t, 0.25, true, function TextTagAlpha )
    
    set t = null
    set tt = null
endfunction
всё остальное работает исправно...

Отредактировано Master_chan, 07.03.2012 в 03:49.
Старый 07.03.2012, 02:44
Msey
????
offline
Опыт: 67,346
Активность:
call SaveInteger(udg_Hashtable,GetHandleId(t),1,Alpha)
у тебя же и так хэндл таймера объявлен, зачем писать снова GetHandleId вместо h?
из-за этого мб и не работает

Отредактировано Msey, 07.03.2012 в 04:43.
Старый 07.03.2012, 04:03
Klop
Папа римский
offline
Опыт: 13,006
Активность:
quq_CCCP,
я хз даже в чём проблема попробуй в else код засунуть который в не увеличение альфа и сохранения когда ведь удаляешь таймер дейсвия всёравно выполняются
и SaveInteger срабатывает и TextTag присваивается альфа -5%
Msey:
у тебя же и так хэндл таймера объявлен, зачем писать снова GetHandleId вместо h?
это не имеет значение просто лишний раз вызывает функцию)
Старый 07.03.2012, 04:24
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Msey, тупанул немного, всё не могу понять чё к чему текстаг не становится прозрачным, тупо исчезает через 2 сек и всё...
Старый 07.03.2012, 04:34
Msey
????
offline
Опыт: 67,346
Активность:
Klop, И в самом деле, раньше считал, что после внесения в переменную, Last .. Thing уже не будет срабатывать))
однако все равно могут быть конфликты в функции
Старый 07.03.2012, 04:39
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Msey, ну поправил код, все равно непонятно, чё такое ну я на гуи видел текстаг становится полупразрачным, а тут тупо исчезает через 2 сек, и какой был такой и остался...
Вот кода мб я накасячил опять... ну и скрин чтобы не подумали будто у меня с головой не впорядке...
код.:
function TextTagAlpha takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local texttag tt = LoadTextTagHandle(udg_Hashtable,h,0)
    local integer Alpha = LoadInteger(udg_Hashtable,h,1)
    
    if( Alpha >= 100 ) then
      call PauseTimer(t)
      call FlushChildHashtable(udg_Hashtable,h)
      call DestroyTextTag(tt)
      call DestroyTimer(t)
    else
      set Alpha = Alpha + 15
      call SetTextTagColor(tt, 255, 255, 255,PercentTo255(100.0-Alpha) )
      call SaveInteger(udg_Hashtable,h,1,Alpha)
    endif
    
    
    set t = null
    set tt = null
endfunction
а вот скрины...
Миниатюры
Кликните на картинку для увеличения
Название:  Scr03.jpg
Просмотров: 25
Размер:  381.2 Кбайт  Кликните на картинку для увеличения
Название:  Scr08.jpg
Просмотров: 19
Размер:  376.8 Кбайт  Кликните на картинку для увеличения
Название:  Scr06.jpg
Просмотров: 16
Размер:  362.5 Кбайт  Кликните на картинку для увеличения
Название:  Scr09.jpg
Просмотров: 21
Размер:  383.6 Кбайт  Кликните на картинку для увеличения
Название:  Scr07.jpg
Просмотров: 24
Размер:  351.9 Кбайт  


Отредактировано Master_chan, 07.03.2012 в 06:34.
Старый 07.03.2012, 04:53
ScorpioT1000
Работаем
online
Опыт: отключен
|cFFFFFFFFыыы|r
Старый 07.03.2012, 05:06
Msey
????
offline
Опыт: 67,346
Активность:
на 4-м скрине вроде есть изменения, или я слеп?
Попробуй изначально объявить переменную альфы, а потом ее сохранить вместо числа.
Старый 07.03.2012, 05:06
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
ScorpioT1000: - ?, какое это имеет отношение к моей проблеме?
|cFFFFFFFFыыы|r
Старый 07.03.2012, 05:10
Klop
Папа римский
offline
Опыт: 13,006
Активность:
quq_CCCP, намекает что там тег цвета текста у тебя поэтому и не становится прозрачным
Старый 07.03.2012, 05:12
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Msey:
на 4-м скрине вроде есть изменения, или я слеп?
Вот то то и оно что тупо исчез текстаг, а мне надо чтобы он растворился в воздухе в течении 2 сек (примерно)
quq_CCCP добавил:
Вот тут всё работает (автор сего чуда Blizzard Entertament).
function Trig_Floating_Text_Fadeout_Actions takes nothing returns nothing
    local texttag tempTag
    set tempTag = udg_TempFloatText
    call PolledWait( 1.50 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 7.50 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 22.50 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 30.00 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 45.00 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 60.00 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 75.00 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 90.00 )
    set tempTag = udg_TempFloatText
    call PolledWait( 0.06 )
    set udg_TempFloatText = tempTag
    call SetTextTagColorBJ( udg_TempFloatText, 100, 100, 100, 100.00 )
    set tempTag = udg_TempFloatText
    call DestroyTextTagBJ( udg_TempFloatText )
endfunction

//===========================================================================
function InitTrig_Floating_Text_Fadeout takes nothing returns nothing
    set gg_trg_Floating_Text_Fadeout = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Floating_Text_Fadeout, function Trig_Floating_Text_Fadeout_Actions )
endfunction
[+] замечание от Master_chan: Пожалуйста оформляйте код правильно.

Отредактировано Master_chan, 07.03.2012 в 06:34.
Старый 07.03.2012, 05:15
Msey
????
offline
Опыт: 67,346
Активность:
call SetTextTagColor(tt, 255, 255, 255,PercentTo255(100.0-Alpha) )
вместо этого ^ бреда делай через цикл
короче завтра объясню, на сонную голову я краб

Отредактировано Msey, 07.03.2012 в 05:39.
Старый 07.03.2012, 05:33
Klop
Папа римский
offline
Опыт: 13,006
Активность:
quq_CCCP, милый код
так а есть ещё некая функция
native SetTextTagFadepoint takes texttag t, real fadepoint returns nothing
может она решит твою проблему)
Старый 07.03.2012, 05:58
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Ну всё перепробовал чё к чему, и Fadepoint делал и цвета менял, всё без толку, что текст цветной что бесцветный (белый)...
код...
((код jass
function TextTagAlpha takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local texttag tt = LoadTextTagHandle(udg_Hashtable,h,0)
local integer Alpha = LoadInteger(udg_Hashtable,h,1)

if( Alpha >= 255 ) then
call PauseTimer(t)
call FlushChildHashtable(udg_Hashtable,h)
call DestroyTextTag(tt)
call DestroyTimer(t)
else
set Alpha = Alpha + 31
call SetTextTagColor(tt, 255, 255, 255, 255 - Alpha )
call SaveInteger(udg_Hashtable,h,1,Alpha)
endif


set t = null
set tt = null
endfunction
function FloatingTextFadeout takes player pl, unit fp_uUnit, string st returns nothing
local texttag tt = CreateTextTag()
local timer t = CreateTimer()

call SetTextTagText(tt,st,0.023)
call SetTextTagPos(tt,GetUnitX(fp_uUnit),GetUnitY(fp_uUnit),60.00)
call SetTextTagVelocity(tt, 0.00, 0.035)
call SetTextTagColor(tt, 0, 0, 0, 255 )
call SetTextTagFadepoint(tt, 1.00)

if( GetLocalPlayer() == pl and pl != Player(12)) then
call SetTextTagVisibility(tt, true)
elseif(pl == Player(12)) then
call SetTextTagVisibility(tt, true)
endif

call SaveTextTagHandle(udg_Hashtable,GetHandleId(t),0,tt)
call SaveInteger(udg_Hashtable,GetHandleId(t),1,7)

call TimerStart(t, 0.25, true, function TextTagAlpha )

set t = null
set tt = null
endfunction
))
Старый 07.03.2012, 07:40
J64_

offline
Опыт: 4,724
Активность:
quq_CCCP, в функции FloatingTextFadeout добавь SetTextTagPermanent - это дает тебе возможность изменять альфа-канал texttag'а
Старый 07.03.2012, 10:32
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Judycaster64, если бы это сработало я бы тут тему не писал...
пробовал, я это. так что не надо самое очевидное говорить, я не настолько туп чтобы не проверить это...
Старый 07.03.2012, 10:52
J64_

offline
Опыт: 4,724
Активность:
quq_CCCP, по моим сегодняшним наблюдениям, это именно так:
нажми ESC для теста
Прикрепленные файлы
Тип файла: w3x axax.w3x (9.3 Кбайт, 4 просмотров )
Старый 07.03.2012, 11:01
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Judycaster64, скинул карту с кодом где синтаксические ошибки, и хахахах, я ставил параметр перманентный текстаг, ну и каим был таким и состался, могу сделать скрин...
((код jass
call SetTextTagPermanent(tt, true)
))
Ну что он есть что его нет, одно и тоже, выше есть скрины там на одном без этой функции, на другом с ней.
Старый 07.03.2012, 11:28
J64_

offline
Опыт: 4,724
Активность:
quq_CCCP, уважаемый, там cJass...
не пробовал: SetTextTagPermanent(tt, false)?
Старый 07.03.2012, 11:38
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Judycaster64, у меня JassGenNewPack( расширенная сборка), неп робовал параметр false... Вроде как разблокировать перманентность true ? или я ошибаюсь...
Старый 07.03.2012, 12:05
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:56.