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

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

Закрытая тема
 
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Вопрос по texttag и таймерам.
Решил поучиться джассу, написать системку которая будет показывать урон, экспу ну вообщем любой текст плавно движущимися тексттагами. Таймер запускается, значения увиличиваются, вообщем все работает. кроме одного. ТЕКСТА НЕТ!

» Код

Код:
// Функция движения

function TextTagMove takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = GetHandleId(t)
local texttag TextTagWorking = LoadTextTagHandle(Hash, id, 1)
local real X = LoadReal(Hash, id, 2)
local real Y = LoadReal(Hash, id, 3)
local real Z = LoadReal(Hash, id, 4)
set Z = Z+2

call SaveReal(Hash, id, 4, Z)

call SetTextTagPos(TextTagWorking, X, Y, Z)

if (Z >= 200) then
DestroyTimer(t)
FlushChildHashtable(Hash, id)

endif
set TextTagWorking = null

endfunction

// Создаем тексттаг и сохраняем в кэш параметры

function CreateMessage takes string text, real X, real Y returns nothing
local timer Period = CreateTimer()
local texttag MessageText = CreateTextTag()
local integer Id = GetHandleId(Period)

 call SetTextTagText(MessageText, text, 100)
 call SetTextTagColor(MessageText, 50, 0, 50, 50)
 call SaveTextTagHandle(Hash, Id, 1, MessageText)
 
 call SaveTextTagHandle(Hash, Id, 1, MessageText)
 call SaveReal(Hash, Id, 2, X)
 call SaveReal(Hash, Id, 3, Y)
 call SaveReal(Hash, Id, 4, 100)

  TimerStart(Period, 0.01, true, function TextTagMove)
 
 set Period = null

 endfunction



Кто нибудь, подскажите в чем дело?!

Отредактировано MrSigma, 13.02.2010 в 13:03.
Старый 12.02.2010, 18:40
DioD

offline
Опыт: 45,134
Активность:
глупости не пишем, там же явно видно что работа идёт через хеш.
сам то чего отладку не делал, где дебаг сообщения, хоть одно?
Старый 12.02.2010, 21:39
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
MrSigma, не проще юзать встроенную функцию, которая поднимает текстаг плавно или уже готовую систему. Такая гдето была в наработках
Старый 12.02.2010, 21:44
adic3x

offline
Опыт: 108,439
Активность:
TimerStart(Period, 0.01...
никогда не ставьте такой период - для плавного движения как по мне вполне хватает .025, .03 - оптимальнее, ну и так далее
кстате для, для плавающего текста есть свои фунции, которые позволяют единоразово указав параметры того, как он будет подниматься, становитсья прозрачным и исчезать, используйте их
Старый 12.02.2010, 22:45
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
SetTextTagVelocity. Использовать таймер для движения - глупо.
Старый 12.02.2010, 23:04
DioD

offline
Опыт: 45,134
Активность:
если автор преследует иные задачи то использовать таймер может и быть правильным подходом.
таймер 0.03125 соответствует развёртке вара, как раз через фрейм будет идти обработка, максимальная эффективность.
Старый 12.02.2010, 23:16
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Странно. Никогда раньше таких функций у текст тагов не видел. Если можно по подробнее?
Старый 12.02.2010, 23:17
agentex

offline
Опыт: 34,834
Активность:
native SetTextTagVelocity takes texttag t, real xvel, real yvel returns nothing
native SetTextTagFadepoint takes texttag t, real fadepoint returns nothing
native SetTextTagAge takes texttag t, real age returns nothing
как их юзать - смотрим в гуи
Старый 12.02.2010, 23:20
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Есть вопрос. Я немного пересмотрел свою систему и понял что я делал бред) Решил переделать, собственно...
» Вот она:

Код:
function CreateMessage takes string text, string color, real X, real Y returns nothing
 local texttag MessageTag = CreateTextTag()
 local timer t = CreateTimer()
    call SetTextTagText(MessageTag, color + text, 100)
    call SetTextTagPos(MessageTag, X, Y, 100)
    call SetTextTagPermanent(MessageTag, false)
    call SetTextTagVelocity(MessageTag, 100.00, GetRandomReal(45.00, 135.00))
    call SetTextTagLifespan(MessageTag, 1.00)
    call SetTextTagFadepoint(MessageTag, 0.00)
    
  //Здесь будет что-то, что можно использовать для удаления TextTag'а
  
  set MessageTag = null
  set t = null

endfunction



Подскажите, что же лучше использовать? Я думал с таймером, но функция для таймера не должна брать параметров, придется создавать отдельную функцию, а это лишние строки кода.

MrSigma добавил:
О Нет! Эта система тоже не работает! Текст вообще не выводится =\
Старый 13.02.2010, 00:18
agentex

offline
Опыт: 34,834
Активность:
возможно изза этого:
call SetTextTagFadepoint(MessageTag, 0.00)
?
Старый 13.02.2010, 00:28
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Наврядли. Эта функция задает время начала исчезновения, а не время исчезновения.

MrSigma добавил:
...Во всяком случае на GUI было именно так.

MrSigma добавил:
Как я и думал. Это не из-за fadepoind.

MrSigma добавил:
Странно. Когда я юзал BJ функции и создавал текст таг именной BJ, то все работало.
Старый 13.02.2010, 00:33
agentex

offline
Опыт: 34,834
Активность:
call SetTextTagVelocity(MessageTag, 100.00, GetRandomReal(45.00, 135.00))
откуда взял аргументы? с потолка? оно ведь моментально улетает, поэтому и не замечаешь
Старый 13.02.2010, 00:46
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
На GUI с этими же аргументами все работало идеально. Я просто конвертил в текст триггер и копировал в кастом скрипт, заменив все BJ. К тому же то что ты показывааешь - расстояние на которое текст таг улетает. Эти самые 100 - это одна средняя клетка ландшафта в редакторе.

MrSigma добавил:
А второе - это рандомный угол, чтобы текст разлетался в разные стороны.
Старый 13.02.2010, 00:49
agentex

offline
Опыт: 34,834
Активность:
а теперь сравни две функции Т_Т
function SetTextTagVelocityBJ takes texttag tt, real speed, real angle returns nothing
    local real vel = TextTagSpeed2Velocity(speed)
    local real xvel = vel * Cos(angle * bj_DEGTORAD)
    local real yvel = vel * Sin(angle * bj_DEGTORAD)

    call SetTextTagVelocity(tt, xvel, yvel)
endfunction
native SetTextTagVelocity takes texttag t, real xvel, real yvel returns nothing
Старый 13.02.2010, 00:50
DioD

offline
Опыт: 45,134
Активность:
как бы как бы этот вопрос поднимался меньше месяца назад, доступные значения заведомо меньше единицы.
Старый 13.02.2010, 03:55
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Смотри SetTextTagVelocityBJ. Там формула для скорости. И вообще, создай ТТ на БЖ и переделывай на нативки. Таймер с ТТ не нужен, используй SetTextTagLifespan, он через это время сам исчезнет.
Примечания:
Fadepoint - время, через которое ТТ начнёт становиться невидимым.
(От 0 до 100% набирается за Lifespan-fadepoint секунд)
Age - "возраст" ТТ, нужен для fadepoint'а, в принципе тебе вряд ли пригодится.
avatarDr добавил:
Но, лично для тебя, я сделаю 1 ремарочку: native SetTextTagVelocity берёт аргументы real x и real y - движение по этим осям. А SetTextTagVelocityBJ берёт скорость и угол. Чуешь подвох?
Старый 13.02.2010, 07:20
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Чую, и я понял почему у меня так каклично двигалось) Я написал запредельное движение по X и по Y и оно улетало так быстро, что я не успелвал заметить)
Старый 13.02.2010, 12:36
agentex

offline
Опыт: 34,834
Активность:
MrSigma,
оно ведь моментально улетает, поэтому и не замечаешь
Старый 13.02.2010, 12:38
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
На место Xvel надо поставить Xтексттага+то насколько по OX улетит, а на место Yvel - Yтексттага+Random real beetween -10 and +10. Примерно так?

MrSigma добавил:
А какие примерно значения надо брать для нормального движения?
Старый 13.02.2010, 12:42
agentex

offline
Опыт: 34,834
Активность:
MrSigma, может хоть изредка будеш читать то что тут постят?)
как бы как бы этот вопрос поднимался меньше месяца назад, доступные значения заведомо
меньше единицы.
Старый 13.02.2010, 12:55
Закрытая тема

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

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

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

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



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