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

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

Закрытая тема
 
inhuman89

offline
Опыт: 3,019
Активность:
BoolExp
function ttBoolExp takes nothing returns boolean
    return (IsLocationVisibleToPlayer(Location(x,y),GetFilterPlayer()) == false)
endfunction

function TextTag takes real x, real y, real z, real size, real life, real fade, string open, string base, string close returns nothing
    local texttag tt = CreateTextTag()
    call SetTextTagText(tt,open+base+close,size*0.023/10)
    call SetTextTagPos(tt,x,y,z)
    call SetTextTagPermanent (tt,false)
    call SetTextTagVelocityBJ(tt,GetRandomInt(100,150),GetRandomInt(80,100))
    call SetTextTagLifespan (tt,life)
    call SetTextTagFadepoint (tt,fade)
    call ShowTextTagForceBJ(false,tt,GetPlayersMatching(Condition(function ttBoolExp)))
    set tt = null
endfunction
Как мне сделать чтобы в функции ttBoolExp, x и y были из второй функции? Без глобалки? Или обьясните как сделать так чтобы этот тексттаг показывался только тем игрокам, которые выдят Location(x,y).
А то я в этих BoolExp пока никак не могу разобраться _@
Заранее спасибо
Старый 02.09.2010, 00:15
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
function TextTag takes real x, real y, real z, real size, real life, real fade, string open, string base, string close returns nothing
    local texttag tt = CreateTextTag()
    local integer index=0
    call SetTextTagText(tt,open+base+close,size*0.023/10)
    call SetTextTagPos(tt,x,y,z)
    call SetTextTagPermanent (tt,false)
    call SetTextTagVelocityBJ(tt,GetRandomInt(100,150),GetRandomInt(80,100))
    call SetTextTagLifespan (tt,life)
    call SetTextTagFadepoint (tt,fade)
    loop
        exitwhen index>=12
        call SetTextTagVisibility(tt,IsVisibleToPlayer(x,y,Player(index)))
        set index=index+1
    endloop
    set tt = null
endfunction
Старый 02.09.2010, 00:44
inhuman89

offline
Опыт: 3,019
Активность:
Hellfim, Спасибо
inhuman89 добавил:
тока не работает нифига :D
loop
        exitwhen index>=12
        call SetTextTagVisibility(tt,IsVisibleToPlayer(x,y,Player(index)))
        set index=index+1
    endloop
это же просто включает/выключает видимость tt для всех игроков, или я не прав?
мне нужно чтобы видели тока те кто видит локейшн где он создается.
если через GetLocalPlayer() то это правильно сделать так ?:
function TextTagP takes real x, real y, real z, real size, real life, real fade, string open, string base, string close returns nothing
    local texttag tt = CreateTextTag()
    local integer i = 0
    call SetTextTagText(tt,open+base+close,size*0.023/10)
    call SetTextTagPos(tt,x,y,z)
    call SetTextTagPermanent (tt,false)
    call SetTextTagVelocityBJ(tt,GetRandomInt(100,150),GetRandomInt(80,100))
    call SetTextTagLifespan (tt,life)
    call SetTextTagFadepoint (tt,fade)
    call SetTextTagVisibility(tt,false)
    loop
        exitwhen i>=12
        if GetLocalPlayer() == Player(i) and IsVisibleToPlayer(x,y,Player(i)) then
            call SetTextTagVisibility(tt,true)
        endif
        set i=i+1
    endloop
    set tt = null
endfunction
inhuman89 добавил:
а теперь работает :D
Старый 02.09.2010, 02:00
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
inhuman89, правильно так:
Код:
if GetLocalPlayer( ) == p then
    call SetTextTagVisibility( txt, true )
endif
Без цикла, ибо бред.
Старый 02.09.2010, 02:01
inhuman89

offline
Опыт: 3,019
Активность:
а покажет только игроку p ? а если мне нужно не только ему? а всем тем, кто подходит под условие
Старый 02.09.2010, 02:07
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
bee, ну и как ты без цикла сделаешь, гений?
inhuman89, что-то я натупил, да.
function TextTag takes real x, real y, real z, real size, real life, real fade, string open, string base, string close returns nothing
    local texttag tt = CreateTextTag()
    local integer index=0
    call SetTextTagText(tt,open+base+close,size*0.023/10)
    call SetTextTagPos(tt,x,y,z)
    call SetTextTagPermanent (tt,false)
    call SetTextTagVelocityBJ(tt,GetRandomInt(100,150),GetRandomInt(80,100))
    call SetTextTagLifespan (tt,life)
    call SetTextTagFadepoint (tt,fade)
    loop
        exitwhen index>=12
        if (GetLocalPlayer()==Player(index)) then
            call SetTextTagVisibility(tt,IsVisibleToPlayer(x,y,Player(index))) //IsVisibleToPlayer возвращает boolean, если вернет true (точка видна), то тексттаг покажется, если вернет false (точка не видна), то тексттаг не покажется.
        endif
        set index=index+1
    endloop
    set tt = null
endfunction
Старый 02.09.2010, 02:31
inhuman89

offline
Опыт: 3,019
Активность:
Hellfim, все, спасибо, теперь все отлично
Старый 02.09.2010, 03:02
Закрытая тема

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

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

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

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



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