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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Создание способности в одном триггере. (JASS)
Создание способности в одном триггере.
CHLSNДата: Среда, 12 Января 2011, 06:50:42 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Я не прошу написать мне заклинание. Я прошу объяснить, как это сделать.
Герой вызывает боевую единицу. Запускаем таймер, который будет эту единицу перемещать к герою. Запускаем таймер, который разрушит периодический таймер и удалит вызванную единицу.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

Manko_OДата: Среда, 12 Января 2011, 08:12:36 | Сообщение # 2
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
http://ifolder.ru/21272150
 

SirNikolasДата: Среда, 12 Января 2011, 08:24:18 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Это делается одним таймером. При каждом истечении таймера нужно увеличивать прикрепленную к нему целочисленную на один. Когда она достигнет определенного значения, уничтожаешь таймер, обнуляешь хэш и удаляешь юнита.



Сообщение отредактировал SirNikolas - Среда, 12 Января 2011, 08:24:40
 

CHLSNДата: Среда, 12 Января 2011, 12:52:25 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Сделал, даже сработало с первого раза (такое редко бывает), но мне интересно, правильно ли все обнулил, и все ли обнулил?

Code
function Trig_Bladestorm_Timer takes nothing returns nothing
     timer t = GetExpiredTimer()
     real r = LoadReal( udg_hash, GetHandleId( t ), 0 ) - 0.10
     SaveReal( udg_hash, GetHandleId( t ), 0, r )
     SetUnitPositionLoc( LoadUnitHandle( udg_hash, GetHandleId( t ), 0 ), GetUnitLoc( LoadUnitHandle( udg_hash, GetHandleId( t ), 1 ) ) )
     if r <= 0 then
         RemoveUnit( LoadUnitHandle( udg_hash, GetHandleId( t ), 0 ) )
         SaveUnitHandle( udg_hash, GetHandleId( t ), 0, null )
         SaveUnitHandle( udg_hash, GetHandleId( t ), 1, null )
         DestroyTimer( t )
     endif
     t = null
     r = 0
endfunction
function Trig_Bladestorm_Actions takes nothing returns nothing
     unit u = GetSummonedUnit()
     timer t = CreateTimer()
     SaveUnitHandle( udg_hash, GetHandleId( t ), 0, u )
     SaveUnitHandle( udg_hash, GetHandleId( t ), 1, GetSummoningUnit() )
     SaveReal( udg_hash, GetHandleId( t ), 0, GetUnitAbilityLevel( GetSummoningUnit(), 'A035' ) * 5.00 )
     TimerStart( t, 0.10, true, function Trig_Bladestorm_Timer )
     u = null
     t = null
endfunction




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 12:58:50 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, хеш не очистил

Добавлено (12-01-2011, 12:54)
---------------------------------------------
и преде DestroyTimer(t) лучше запаузить его PauseTimer(t)

Добавлено (12-01-2011, 12:55)
---------------------------------------------

Code
   unit u = GetSummonedUnit()   
       timer t = CreateTimer()   
       SaveUnitHandle( udg_hash, GetHandleId( t ), 0, u )

unit u никчему
Code
   
   timer t = CreateTimer()   
SaveUnitHandle( udg_hash, GetHandleId( t ), 0,GetSummonedUnit() )

Добавлено (12-01-2011, 12:56)
---------------------------------------------

Code
   SetUnitPositionLoc( LoadUnitHandle( udg_hash, GetHandleId( t ), 0 ), GetUnitLoc( LoadUnitHandle( udg_hash, GetHandleId( t ), 1 ) ) )

используй координаты
SetUnitPosition(unit,x,y)

Добавлено (12-01-2011, 12:58)
---------------------------------------------
CHLSN, в u лучше занести GetSummoningUnit()
т.к используется более 1 раза




Сообщение отредактировал Dreii - Среда, 12 Января 2011, 12:57:40
 

CHLSNДата: Среда, 12 Января 2011, 12:59:58 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Dreii)
хеш не очистил

Точно ))
Quote (Dreii)
и преде DestroyTimer(t) лучше запаузить его PauseTimer(t)

Почему?
Quote (Dreii)
unit u никчему

Согласен, просто не оптимизировал еще ))
Quote (Dreii)
используй координаты

Почему так?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 13:04:58 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Code
call FlushChildHashtable(udg_Hash, ID)
полностью обнулит все в хеше и все привзянное к ниму

Добавлено (12-01-2011, 13:00)
---------------------------------------------

Quote (CHLSN)
Почему так?

Так безутечнее
Quote (CHLSN)
Почему?

[DUOS] так сказал))

Добавлено (12-01-2011, 13:04)
---------------------------------------------
CHLSN, ах да еще

Code
GetHandleId( t )

лучше так
Code
local integer ID=GetHandleId(t)


 

CHLSNДата: Среда, 12 Января 2011, 13:09:38 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Dreii)
лучше так

Это понятно, уменьшение кол-ва обращений
Quote (Dreii)
[DUOS] так сказал))

А почему он так сказал?
Quote (Dreii)
Так безутечнее

Почему так безутечнее?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 13:11:02 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
Почему так безутечнее?

пфф,не знаю но когда я делал с локациями меня ругали ^^
Quote (CHLSN)
А почему он так сказал?

Спроси у него ))


 

CHLSNДата: Среда, 12 Января 2011, 13:11:59 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Dreii)
пфф,не знаю но когда я делал с локациями меня ругали ^^

Позови их, пусть меня поругают.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 13:13:23 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
Позови их, пусть меня поругают.

Они приходят сами когда их никто неждет.


 

AjaccioДата: Среда, 12 Января 2011, 13:18:45 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Quote
Они приходят сами когда их никто неждет.

А вот и мы! :D
Локации в отстойнике, ибо медленнее, забивают память и вообще не используются, вроде, ни в одной нормальной native функции.
А зачем тогда делать лишнее дело?


XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

CHLSNДата: Среда, 12 Января 2011, 13:18:50 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Тогда я буду злом и буду использовать локальное перемещение, а не координатное, бугога.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 13:20:39 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (Ajaccio)
А вот и мы!

Вот стоило тока написать......
Хм вследующий раз напишу про мешок денег...




Сообщение отредактировал Dreii - Среда, 12 Января 2011, 13:21:27
 

[DUОS]Дата: Среда, 12 Января 2011, 13:23:09 | Сообщение # 15
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (CHLSN)
Запускаем таймер, который разрушит периодический таймер и удалит вызванную единицу.

CHLSN,
Этот таймер будет лишним, нужно в хеш записать значение и в первом таймере его сравнивать. Да и вешать в хеш дважды нерационально.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

CHLSNДата: Среда, 12 Января 2011, 13:26:01 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Ajaccio, разве SetUnitPositionLoc ненормальная native-функция?

Добавлено (12-01-2011, 13:26)
---------------------------------------------
[DUОS], упс, а где там что дважды вешается?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 13:26:44 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (|DUОS|)
Запускаем таймер

Quote (|DUОS|)
периодический таймер

Я думаю это?Не?


 

CHLSNДата: Среда, 12 Января 2011, 13:28:19 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Ajaccio)
Локации в отстойнике, ибо медленнее

Ну в общем-то да, правда что.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

[DUОS]Дата: Среда, 12 Января 2011, 13:37:19 | Сообщение # 19
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (CHLSN)
разве SetUnitPositionLoc ненормальная native-функция?

Это утечная нативка. Использовать SetUnitPosition() или SetUnitX(), SetUnitY()


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DreiiДата: Среда, 12 Января 2011, 13:40:30 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
[DUОS], а что лучше SetUnitPosition() или SetUnitX(), SetUnitY()

 

CHLSNДата: Среда, 12 Января 2011, 13:41:34 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Dreii)
и преде DestroyTimer(t) лучше запаузить его PauseTimer(t)

[DUОS], Dreii сказал, что ты сказал, что так надо делать, зачем?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

[DUОS]Дата: Среда, 12 Января 2011, 13:44:27 | Сообщение # 22
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
CHLSN,
Code
function Trig_Bladestorm_Timer takes nothing returns nothing
      local timer t = GetExpiredTimer()
      local real r = LoadReal(udg_hash,GetHandleId(t),2) - .04
      local unit u = LoadUnitHandle(udg_hash,GetHandleId(t),0)
      local unit u2 = LoadUnitHandle(udg_hash,GetHandleId(t),1)
       
      call SaveReal(udg_hash,GetHandleId(t),0,r)
       
      call SetUnitX(u,GetWidgetX(u2))
      call SetUnitY(u,GetWidgetY(u2))

      if r <= 0 then
          call RemoveUnit(u)
          call FlushChildHashtable(udg_hash,GetHandleId(t))
          call PauseTimer(t)
          call DestroyTimer(t)
      endif
       
      set t = null
      set u = null
      set u2 = null
endfunction

function Trig_Bladestorm_Actions takes nothing returns nothing
      local unit u = GetSummonedUnit()
      local unit s = GetSummoningUnit()
      local timer t = CreateTimer()
      call SaveUnitHandle(udg_hash,GetHandleId(t),0,u)
      call SaveUnitHandle(udg_hash,GetHandleId(t),1,s)
      call SaveReal(udg_hash,GetHandleId(t),2,GetUnitAbilityLevel(s,'A035') * 5.)
      call TimerStart(t,.04,true,function Trig_Bladestorm_Timer)
      set u = null
      set t = null
      set s = null
endfunction

Вроде, теперь без сучка и задоринки :)

Добавлено (12-01-2011, 13:44)
---------------------------------------------

Quote (CHLSN)
[DUОS], Dreii сказал, что ты сказал, что так надо делать, зачем?

Антибаг периодических таймеров - иногда его уничтожает, но не паузит.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

CHLSNДата: Среда, 12 Января 2011, 13:48:00 | Сообщение # 23
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
[DUОS], уже сделал, как у тебя, только SetUnitPosition, и паузу для таймера сейчас добавлю))



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Среда, 12 Января 2011, 15:09:07 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
может стоит добавить хендл таймера в переменную?

 

CHLSNДата: Среда, 12 Января 2011, 15:17:41 | Сообщение # 25
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, я сразу добавил, как ты посоветовал)) ничего, робит)



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Создание способности в одном триггере. (JASS)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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