Сейчас 16:19:25 Четверг, 28 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Помогите с триггером
[Вопрос] Помогите с триггером
berilДата: Четверг, 06 Декабря 2012, 20:28:40 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
В общем не могу понять почему именно так, возможно что то не так делаю
Вот функция
Code
loop
exitwhen GetTimeOfDay() == 16.00

call TriggerSleepAction(6.00)
set d = GetRandomInt(1,6)
call TriggerSleepAction(7.00)
  if d == 1 then //  
          call CreateTextTagUnitBJ( "Фуг устал уже", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif
if d == 2 then //  
          call CreateTextTagUnitBJ( "Отдохнуть бы чуток", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif
   if d == 3 then //  
          call CreateTextTagUnitBJ( "Спина уже побаливает", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif       
     if d == 4 then //  
          call CreateTextTagUnitBJ( "Яйца вспотели уже от работы", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif  
     if d == 5 then //  
          call CreateTextTagUnitBJ( "Мозоли уже натер", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif  
     if d == 6 then //  
          call CreateTextTagUnitBJ( "(Свистит)....", udg_L_Unit[i], 82.00, 8.00, 50.00, 50.00, 100, 0 )
          set n = GetLastCreatedTextTag()
     else
     endif    
     call TriggerSleepAction(3.80)
     call DestroyTextTag(n)
call TriggerSleepAction(10.00)
    
     endloop  

Почему выводится тексттаг одновременно несколько разных фраз, а именно 3 раза подряд


 

lawsonДата: Четверг, 06 Декабря 2012, 21:10:52 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
beril, хммм
Quote (beril)
loop

Quote (beril)
call TriggerSleepAction(6.00)

Quote (beril)
call TriggerSleepAction(7.00)

Quote (beril)
call TriggerSleepAction(3.80)

Quote (beril)
call TriggerSleepAction(10.00)

вроде все должно работать, хмм


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

berilДата: Четверг, 06 Декабря 2012, 21:15:16 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
Да вот и я так думаю ) Что все правильно, но выводится сразу 3 тексттага. Да и вообще в loop когда вставляешь действие какоето оно почему то 3 раза подряд проигрывается :o :o :o

 

[SeKtOR]Дата: Четверг, 06 Декабря 2012, 21:15:53 | Сообщение # 4
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Code
loop  
exitwhen GetFloatGameState(GAME_STATE_TIME_OF_DAY) == 16.00  
call TriggerSleepAction(6.00)  // Вейт 3:
set d = GetRandomInt(1,6)  
call TriggerSleepAction(7.00)  // Вейт 3:
set textt = CreateTextTag() // local texttag textt
if(d == 1) then  
call SetTextTagText(textt, "Фуг устал уже", .0184) // 8. * 0.23 / 10
elseif(d == 2) then
call SetTextTagText(textt, "Отдохнуть бы чуток", .0184) // etc
elseif(d == 3) then
call SetTextTagText(textt, "Спина уже побаливает", .0184)
elseif(d == 4) then
call SetTextTagText(textt, "Яйца вспотели уже от работы", .0184)
elseif(d == 5) then
call SetTextTagText(textt, "Мозоли уже натер", .0184)
elseif(d == 6) then
call SetTextTagText(textt, "(Свистит)....", .0184)
else  
call SetTextTagText(textt, "Фуг устал уже", .0184)
endif
call SetTextTagPosUnit(textt, udg_L_Unit[i], 82.)
call SetTextTagColor(tt, 127.5, 127.5, 255., 255.) // (percent * 255) * 0.01
call TriggerSleepAction(3.80) // Вейт 3:
call DestroyTextTag(textt)  
call TriggerSleepAction(10.00) // Вейт 3:
set textt = null
endloop  

чуток оптимизации


 

berilДата: Четверг, 06 Декабря 2012, 21:20:30 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
сектор спс, но всеравно так же. ) А может быть это из за того, что функция в cs карты ? И вообще влияет как то то (на производителльность или загрузку), что в cs карты много функций ? Или лучше в триггерах это все делать
Code
call SetTextTagColor(n, 127.00,  127.00, 255.00, 255.00) // (percent * 255) * 0.01  

Пишит ошибку Неверный тип аргумента(real)




Сообщение отредактировал beril - Четверг, 06 Декабря 2012, 21:28:23
 

[SeKtOR]Дата: Четверг, 06 Декабря 2012, 22:19:13 | Сообщение # 6
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Quote (beril)
сектор спс, но всеравно так же.)
Code
call SetTextTagColor(n, 127.00,  127.00, 255.00, 255.00) // (percent * 255) * 0.01

Пишит ошибку Неверный тип аргумента(real)

Я сделал только оптимизиацию.
Quote
call SetTextTagColor(n, 127.00,  127.00, 255.00, 255.00)

на
Quote
call SetTextTagColor(n, 127,  127, 255, 255)

Quote (beril)
И вообще влияет как то то (на производителльность или загрузку), что в cs карты много функций ? Или лучше в триггерах это все делать

Нет, т.к. весь код помещается в war3map.j и где ты его напишешь, это только для твоего удобства(вот способ написания это другой разговор)




Сообщение отредактировал [SeKtOR] - Четверг, 06 Декабря 2012, 22:19:38
 

Ty3uKДата: Четверг, 06 Декабря 2012, 22:44:24 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Quote (beril)
И вообще влияет как то то (на производителльность или загрузку), что в cs карты много функций ?

На это влияет то, что ты в цикле используешь TriggerSleepAction buba


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

berilДата: Четверг, 06 Декабря 2012, 23:24:11 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
Quote (Ty3uK)
На это влияет то, что ты в цикле используешь TriggerSleepAction buba

А как по другому ?? Через таймеры ?


 

Ty3uKДата: Пятница, 07 Декабря 2012, 09:16:47 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Конечно

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

berilДата: Суббота, 08 Декабря 2012, 21:09:07 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
Но все равно проблема не решилась, выводитсразу несколько текст тагов



Сообщение отредактировал beril - Суббота, 08 Декабря 2012, 21:09:28
 

Ty3uKДата: Суббота, 08 Декабря 2012, 23:04:35 | Сообщение # 11
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
а ты покажи код с таймерами

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

berilДата: Воскресенье, 09 Декабря 2012, 00:43:41 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
И еще как запустить таймер
Code
call TimerStart(t, 7.00, true, function функция)

Если функция которая хочу запустить
Code
function TWork takes integer i returns nothing

То есть нужно как то так
call TimerStart(t, 7.00, true, function TWork(i))
но это не работает :o
Quote (Ty3uK)
а ты покажи код с таймерами

Мне кажется, что дело не в вайтах или таймерах (таймеры, это всетаки оптимизация)

Добавлено (09 Декабря 2012, 00:43:41)
---------------------------------------------
Ах да еще хотел спросить, как запустить таймер не вызывая другую функцию.
Тоесть
какое то действие
Тут запускаем таймер
тут следующее действие после истечения таймера.
Как это правильно сделать подскажите ?


 

SirNikolasДата: Воскресенье, 09 Декабря 2012, 13:33:22 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
60-14225

 

berilДата: Суббота, 15 Декабря 2012, 12:38:42 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 282
Награды: 0
Репутация: 139
Блокировки:
я так понял хэш не работает на 1.20? :(

 

SirNikolasДата: Суббота, 15 Декабря 2012, 13:23:11 | Сообщение # 15
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Нет. 1.24 и выше.

 

FkoFFДата: Понедельник, 17 Декабря 2012, 18:17:01 | Сообщение # 16
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Может проблема в том что триггер срабатывает три раза одновременно? ) На что реагирует функция?

 

BorodachДата: Вторник, 18 Декабря 2012, 15:21:51 | Сообщение # 17
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Quote (beril)
call TimerStart(t, 7.00, true, function TWork(i))

Функция в таймере не должна принимать значений


Karamba
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Помогите с триггером
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz