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

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

Ответ
 
Kenshi245

offline
Опыт: 2,252
Активность:
Плавающий текст
Если локальные переменные работают каждая внутри своего триггера, то почему после поллед вейта DestroyTextTag(tt2) удаляет плавающий текст не своего триггера? Как такое возможно?

Вот кусок кода:
Код:
local texttag tt2=null

    set tt2 = CreateTextTagUnitBJ(I2S(R2I(GetEventDamage())),GetTriggerUnit(),0,11,100.0,100.0  ,100.0,0.0)

    call SetTextTagVelocityBJ(tt2,196.0,90)
    call SetTextTagPermanentBJ(tt2,false)
    call SetTextTagLifespanBJ(tt2,1)
    call SetTextTagFadepointBJ(tt2,0.0)
    set udg_DT = true
    call PolledWait(0.5)
    set udg_DT = false
    call PolledWait(10.5)
    call DestroyTextTag(tt2)
    set tt2 = null


Kenshi245 добавил:
Короче это 100% баг. Начинаю атаковать юнита все ок, текст появляется и плывет вверх, в переменной хранится 5 строк, стоит отойти юнитом и снова начать атаковать, как все начинает сбиваться, скрипт начинает удалять строки совершенно непонятным образом.


Код:
local integer tt2 = 4

    loop
    set udg_DT[tt2+1] = udg_DT[tt2]
    exitwhen tt2 == 0
    set tt2 = tt2 - 1
    endloop
    call DestroyTextTag(udg_DT[5])
    set udg_DT[5] = null

    set udg_DT[0] = CreateTextTagUnitBJ(I2S(R2I(GetEventDamage())),GetTriggerUnit(),0,11,100.0,100.0  ,100.0,0.0)
    call SetTextTagVelocityBJ(udg_DT[0],96.0,90)
    call SetTextTagPermanentBJ(udg_DT[0],false)
    call SetTextTagLifespanBJ(udg_DT[0],2)
    call SetTextTagFadepointBJ(udg_DT[0],0.0)
Старый 08.04.2008, 01:12
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
попробуй создать тригер в локальной переменной

Код:
function InitTrig_Board takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    call TriggerRegisterTimerEventSingle( t, 0.05 )
    call TriggerAddAction( t, function Trig_Board_Actions )
endfunction


примерно так
Старый 08.04.2008, 01:53
Toadcop

offline
Опыт: 54,313
Активность:
скока у тебя этих ТТ на карте то ? =)
+ удаляютьса они самостоятельно =) ТТ
Код:
call SetTextTagLifespanBJ(tt2,1)
    call SetTextTagFadepointBJ(tt2,0.0)

ну правильно =) у тебя ТТ сами по 2 сек удалятьса. а потом через 10 ты еще удаляеш ТТ но на этот ИД уже был создан новый ТТ (ТекстТаг)
так что... твой косяк ^^ (бывает)
Старый 08.04.2008, 03:08
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Toadcop +1. Kenshi245, если (полностью) читал статью Сергея про джасс, то можешь знать, что на этом баге и строиться весь заюз кеша . В тему:
Код:
call SetTextTagLifespanBJ(*переменная тексттага*,*время жизни тексттага*)
достаточно для полного удаления тексттага и утечек не вызывает. В крайнем случае, удаляй тексттаг в точно такое же время, которое указано у тебя в вызове функции.
Старый 08.04.2008, 07:14
Kenshi245

offline
Опыт: 2,252
Активность:
То есть достаточно указать время жизни тега и не парится с удалением?
Старый 08.04.2008, 10:35
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Типа да
Старый 08.04.2008, 13:30
Toadcop

offline
Опыт: 54,313
Активность:
Kenshi245 иммено =)
Старый 08.04.2008, 13:34
Kenshi245

offline
Опыт: 2,252
Активность:
Спасиб, еще такой вопросик - нужно сделать чтобы такие циферки были на хил тоже, я сделал на инстант хилы и на хоты, а вот на чейн хил не смог ибо я не могу определить куда полетит волна, есть идеи как можно такое реализовать?
Старый 09.04.2008, 00:49
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Лечить триггерно. Онли
Старый 09.04.2008, 13:54
Kenshi245

offline
Опыт: 2,252
Активность:
Короче я сделал так, вместо Чейн хила сделал чейн лайтинг, который бьет по 0.01 дамага на цель, а скрипт реагируя на эту велечину урона лечит саму цель и делает надпись над ней.
Старый 09.04.2008, 15:02
Kenshi245

offline
Опыт: 2,252
Активность:
А не, нефига так не пашет, на сойзников не хочет отскакивать.((
Старый 10.04.2008, 20:24
adic3x

offline
Опыт: 108,439
Активность:
делать создавать и двигать снаряд тригерно/создавать молнии тригерно ?
Старый 10.04.2008, 22:14
Омега

offline
Опыт: 12,033
Активность:
Про чаиллайт:
А не лучше ли отрицательный урон задать?
-1 Даммиспэл будет.
Старый 10.04.2008, 22:19
Kenshi245

offline
Опыт: 2,252
Активность:
Нельзя делать отрицательный урон, не предусмотрено вариком.
Блин а вообще никто не знает как реализовать реакцию на событие - лечение?
Старый 10.04.2008, 23:57
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
реакцию на событие - лечение?

лечение происходит после каста - отлавливать каст спела
Старый 11.04.2008, 13:36
Kenshi245

offline
Опыт: 2,252
Активность:
А как сделать чтобы таймер запускал функцию n-ное число раз?
Старый 11.04.2008, 19:55
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Код:
native TimerStart takes timer whichTimer, real timeout, boolean periodic, code handlerFunc returns nothing

call TimerStart(t, 1.00, true, function MyFunc)

Если true, будет выполнятся периодически. Если false, то только один раз.
Старый 12.04.2008, 09:13
adic3x

offline
Опыт: 108,439
Активность:
а также так или иначе сопоставить ему интегер счетчик, при каждой сработке изменять его и проверять его значение, если оно равно нужному тебе числу - уничтожать таймер и обнулять все что больше ненадо
Старый 12.04.2008, 10:11
Ответ

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

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

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

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



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