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

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

Закрытая тема
 
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,598
Активность:
beril:
на Gowrk == true
Лол, ты про оптимизацию читал статьи?
Булевские переменные можно юзать без == true, просто напросто exitwhen Gowrk
и усё...
Так же создай глобальный массив строк с вариантами текстагов, а потом выбыирай уже варианты в твоём триггере, так же не советую использование вейтов в тех целях в которых ты их используешь.
Старый 20.12.2012, 15:36
beril
Доктор ЗЛО!!!
offline
Опыт: 3,204
Активность:
quq_CCCP:
beril:
на Gowrk == true
Лол, ты про оптимизацию читал статьи?
Булевские переменные можно юзать без == true, просто напросто exitwhen Gowrk
и усё...
Так же создай глобальный массив строк с вариантами текстагов, а потом выбыирай уже варианты в твоём триггере, так же не советую использование вейтов в тех целях в которых ты их используешь.
Да меня как бы оптимизация не очень волнует )
Старый 20.12.2012, 16:44
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,598
Активность:
ну а на jass зачем писать, и постить темы про баги и утечки?
Старый 20.12.2012, 16:50
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
beril, выложи что получилось теперь
Старый 20.12.2012, 17:19
beril
Доктор ЗЛО!!!
offline
Опыт: 3,204
Активность:
Вот так я сделал ( и не надо писать, что китайский код, для меня важно, что все работает)
А пишу я на jass по нескольким причинам
1- это все в cs карты, по другому никак
2- мне так удобней редактировать и ускоряет процесс написания триггеров + локалки
((код jass
loop
exitwhen udg_L_Work[i] == false
call TriggerSleepAction(1.00)
set d = GetRandomInt(1,7)
call TriggerSleepAction(18.00)
if(d == 1) then
call CreateTextTagLocBJ( "Фуг устал уже", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[1] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[1])

else
endif
call TriggerSleepAction(15.00)
if(d == 2) then
call CreateTextTagLocBJ( "Отдохнуть бы чуток", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[2] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[2])

else
endif
call TriggerSleepAction(15.00)
if(d == 3) then
call CreateTextTagLocBJ( "Спина уже побаливает", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[3] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[3])

else
endif
call TriggerSleepAction(15.00)
if(d == 4) then
call CreateTextTagLocBJ( "Яйца вспотели уже от работы", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[4] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[4])

else
endif
call TriggerSleepAction(15.00)
if(d == 5) then
call CreateTextTagLocBJ( "Мозоли уже на руках от работы", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[5] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[5])

else
endif
call TriggerSleepAction(15.00)
if(d == 6) then
call CreateTextTagLocBJ( "(Свистит)....", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[6] = GetLastCreatedTextTag()
play sound
call TriggerSleepAction(3.00)
call DestroyTextTag(n[6])
else
endif
call TriggerSleepAction(15.00)
if(d == 7) then
call CreateTextTagLocBJ( "Побыстрее бы...", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[7] = GetLastCreatedTextTag()
call TriggerSleepAction(3.00)
call DestroyTextTag(n[7])
else
endif
call TriggerSleepAction(15.00)
endloop
set n[1] = null
set n[2] = null
set n[3] = null
set n[4] = null
set n[5] = null
set n[6] = null
set n[7] = null
set t = null
set d = 0
endfunction
))
Старый 20.12.2012, 22:11
Киря

offline
Опыт: 769
Активность:
Зачем так много повторного кода?
  1. Сделай отдельную функцию создания текст-тага.
  2. Не используй TriggerSleepAction в циклах, уже лучше пусть вызывается в отдельной функции создания текст-тага
  3. Зачем так?
call CreateTextTagLocBJ( "Спина уже побаливает", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
set n[3] = GetLastCreatedTextTag()
Если можно так:
set n[3] = CreateTextTagLocBJ( "Спина уже побаливает", GetUnitLoc(udg_L_Unit[i]), 91.00, 8.00, 50.00, 50.00, 100, 0 )
И вообще не используй BJ функции. Есть же аналоги обычных.
Старый 20.12.2012, 23:22
beril
Доктор ЗЛО!!!
offline
Опыт: 3,204
Активность:
спс.
Да в том то и прикол с Bj работает нормально теперь
Старый 21.12.2012, 00:16
Киря

offline
Опыт: 769
Активность:
function createTT takes string s, location loc, real z, real size, real red, real green, real blue, real transparency returns texttag
    local texttag tt = CreateTextTag()
    call SetTextTagText(tt, s, size)
    call SetTextTagPos(tt, loc, z)
    call SetTextTagColor(tt, red, green, blue, transparency)

    return tt
endfunction
Попробуй использовать эту.
И избався от TriggerSleepAction. Это действительно очень плохо, что ты их используешь, особенно в циклах. Лучше таймер.
Старый 21.12.2012, 00:40
beril
Доктор ЗЛО!!!
offline
Опыт: 3,204
Активность:
Я так в начале и делал (смотри 1 пост), но изменил на BJ функции и все заработало.
Насчет таймеров у меня 1.20 патч хэш не работает и я не могу таймер сделать который запускает функцию в которой есть значения.
Тему можно закрыть так как проблема решилась. Всем спс
Старый 21.12.2012, 01:16
ScorpioT1000
Работаем
offline
Опыт: отключен
избався от TriggerSleepAction. Это действительно очень плохо, что ты их используешь, особенно в циклах.
Пояснить сможешь?
Ну тред закрыли, можно в лс.
Суть в том, что это неправда.
Старый 21.12.2012, 14:03
Закрытая тема

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

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

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

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



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