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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Пара вопросов о jass...
DarkVaderДата: Пятница, 22 Октября 2010, 01:08:21 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Вопрос 1.
Допустим в моем триггере есть такой код

local effect e
call AddSpecialEffectTarget( "модель", target, "chest")
set e = bj_lastCreatedEffect ( пробовал и через GetLastCreatedEffectBJ( ) )
...
...
...
...
call DestroyEffect(e)
set e = null

Ожидаемые мной действия: создается спец эффект на юните , записывается в переменную, потом уничтожается
Но получается что спец эффект не удаляется вообще... помогите плиз что делаю не так и почему эффект не записывается в переменную?

Вопрос 2.
Допустим есть триггерный спелл, который действует от 1-3 сек. в зависимости от ситуации
что бы кастер ничего больше не делал использую пустышку на основе канала
в параметрах отключаю другие спелы во время его действия и ставлю следовать в течении времени = 3сек

Все бы было хорошо кроме как если спел действует 1 сек, то кастер еще 2 секунды кастует канал...
В код спела добавил по окончании всех действий

call IssueImmediateOrder( caster, "stop" )

Но результат нулевой, юнит как кастовал так и кастует...
Почему не подходит эта функция? или я неправильно настроил сам канал?
З.Ы. Даже пробовал тупо двигать юнита что бы сбить каст, все равно он кастует канал...

 

[san9]Дата: Пятница, 22 Октября 2010, 01:56:07 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (DarkVader)
Вопрос 1.

l
Code
ocal effect e =  AddSpecialEffectTarget( "путь", unit, "chest")
     -------------------
     call DestroyEffect(e)
     set e = null

Quote (DarkVader)
Вопрос 2. Допустим есть триггерный спелл, который действует от 1-3 сек. в зависимости от ситуации что бы кастер ничего больше не делал использую пустышку на основе канала в параметрах отключаю другие спелы во время его действия и ставлю следовать в течении времени = 3сек Все бы было хорошо кроме как если спел действует 1 сек, то кастер еще 2 секунды кастует канал... В код спела добавил по окончании всех действий call IssueImmediateOrder( caster, "stop" ) Но результат нулевой, юнит как кастовал так и кастует... Почему не подходит эта функция? или я неправильно настроил сам канал? З.Ы. Даже пробовал тупо двигать юнита что бы сбить каст, все равно он кастует канал...

Канал не отменить)


 

DarkVaderДата: Пятница, 22 Октября 2010, 02:27:45 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (|san9|)
Канал не отменить)

тогда может вместо канала длительностью 3 сек. юзать канал 0.01 сек и паузить юнита потом играть на нем анимацию chanel, а как каст заканчивается возвращать норму?

 

FkoFFДата: Пятница, 22 Октября 2010, 04:45:39 | Сообщение # 4
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (DarkVader)
тогда может вместо канала длительностью 3 сек. юзать канал 0.01 сек и паузить юнита потом играть на нем анимацию chanel, а как каст заканчивается возвращать норму?

юнита можно даже не паузить, а просто ежесекундно запрещать текущее действие через ордер и заставлять проигрывать анимацию "channel"


 

DarkVaderДата: Пятница, 22 Октября 2010, 05:48:41 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
FkoFF и [san9] спасибо большое вопрос номер 2 решен=))

А по первому вопросу тишина=))) Ладно буду ждать=)

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

 

[san9]Дата: Пятница, 22 Октября 2010, 08:04:58 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (DarkVader)
А по первому вопросу тишина=))) Ладно буду ждать=)

Quote (|san9|)
local effect e =  AddSpecialEffectTarget( "путь", unit, "chest")      -------------------      call DestroyEffect(e)      set e = null


 

DarkVaderДата: Пятница, 22 Октября 2010, 15:37:31 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (|san9|)
local effect e =  AddSpecialEffectTarget( "путь", unit, "chest")

Ну мне нужна повторяющаяся функция в которой будет фигурировать лишь один спец эффект такой код будет норм работать?

Code


  function Trig_Action takes nothing  returns nothing

local effect e = LoadEffectHandle( udg_HASH, parentKey, childKey)

   if ( условие1 ) then
    set e = AddSpecialEffectTarget( "путь", unit, "chest")
    call SaveEffectHandle( udg_HASH, parentKey, childKey, e)
    set e = null
   endif

   if ( условие2 ) then
   call DestroyEffect(e)
   call FlushChildHashtable( udg_HASH, parentKey)
   set e = null
   endif

endfunction

То есть, функция в ходе действия триггера выполняется два раза, первый раз выполняется условие1 и создается спец эффект, а второй раз выполняется условие2 и спецэффект удаляется... если напишу так у мну норм получится?=)

 

Banzay89Дата: Пятница, 22 Октября 2010, 18:16:52 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
call DestroyEffect(AddSpecialEffectTarget(modelName, targetWidget, attachPointName)) - делаем правильно!!!!!

Если нужно дать эффект юниту на время, то лучше сделать абилу на основе сферы и на нужный аттач вцепить нужный эффект. Потом триггерно давать / отнимать абилу. Все

 

DarkVaderДата: Суббота, 23 Октября 2010, 00:06:03 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Banzay89)
call DestroyEffect(AddSpecialEffectTarget(modelName, targetWidget, attachPointName)) - делаем правильно!!!!!

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

 

Banzay89Дата: Суббота, 23 Октября 2010, 00:22:10 | Сообщение # 10
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
DarkVader, анимация эффекта проиграеться от начала до конца (зависит только от модели эффекта).

Quote
мне нужно сохранить его в хэш, а потом выгрузить и уничтожить.

Не знаю почему, но с этим иногда возникают проблемы

Quote
Если нужно дать эффект юниту на время, то лучше сделать абилу на основе сферы и на нужный аттач вцепить нужный эффект. Потом триггерно давать / отнимать абилу.

Это 100% работает

Добавлено (23-10-2010, 00:22)
---------------------------------------------

Code
function Trig_Action takes nothing  returns nothing  

local effect e = LoadEffectHandle( udg_HASH, parentKey, childKey)  

    if ( условие1 ) then  
     set e = AddSpecialEffectTarget( "путь", unit, "chest")  
     call SaveEffectHandle( udg_HASH, parentKey, childKey, e)  
     set e = null  
    endif  

    if ( условие2 ) then  
    call DestroyEffect(e)  
    call FlushChildHashtable( udg_HASH, parentKey)  
    set e = null  
    endif  

endfunction

Что за бред??? При старте функции ты выгружаеш уже сохраненный в хэш эффект (тоесть гдето ты его уже сохранял), а потом переписываеш локалку на новый эффект.. Оо А что со старым? А? А старый висит в памяти...что я могу сказать - бред

 

DarkVaderДата: Суббота, 23 Октября 2010, 00:30:10 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Banzay89)
Не знаю почему, но с этим иногда возникают проблемы

Жаль, а то я активно юзаю хэш, но проблема только с эффектами, при том таже самая молния по этому принципу работает нормально...

Quote (Banzay89)
Это 100% работает

Кстати я наблюдал баг с эффектом на основе сферы, когда юнит атакует с таким эффектом он прыгает(эффект в смысле))), как от него избавиться?

Добавлено (23-10-2010, 00:30)
---------------------------------------------

Quote (Banzay89)
Что за бред??? При старте функции ты выгружаеш уже сохраненный в хэш эффект (тоесть гдето ты его уже сохранял), а потом переписываеш локалку на новый эффект.. Оо А что со старым? А? А старый висит в памяти...что я могу сказать - бред

я выгружаю в локалку нулевое значение ( null ) при первом проходе функции, а потом при втором проходе уже выгружается сам созданный эффект сохраненный при создании в ту же ячейку
call SaveEffectHandle( udg_HASH, parentKey, childKey, e)

 

rixt7956Дата: Суббота, 23 Октября 2010, 00:30:10 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Ницего не прыгает,посмотри как сделано в моей статье
 

Banzay89Дата: Суббота, 23 Октября 2010, 00:32:19 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
Жаль, а то я активно юзаю хэш, но проблема только с эффектами, при том таже самая молния по этому принципу работает нормально...

Я тоже им всегда пользовался - хорошая вещь! =)
И у меня тоже были проблемы с эффектами... делал так, что теоретически работать должно было 100%... но...

Quote
Кстати я наблюдал баг с эффектом на основе сферы, когда юнит атакует с таким эффектом он прыгает(эффект в смысле))), как от него избавиться?

Я такого не замечал.. О.О

Добавлено (23-10-2010, 00:32)
---------------------------------------------

Quote
я выгружаю в локалку нулевое значение ( null ) при первом проходе функции, а потом при втором проходе уже выгружается сам созданный эффект сохраненный при создании в ту же ячейку

Зачем тогда это делать вообще??? Я имею в виду сохранять в хэш пустое место??? Оо
Тогда local effect e и все. Или я чтото не доганяю?

 

DarkVaderДата: Суббота, 23 Октября 2010, 00:33:04 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Banzay89)
Что за бред??? При старте функции ты выгружаеш уже сохраненный в хэш эффект (тоесть гдето ты его уже сохранял), а потом переписываеш локалку на новый эффект.. Оо А что со старым? А? А старый висит в памяти...что я могу сказать - бред

я выгружаю в локалку нулевое значение ( null ) при первом проходе функции, а потом при втором проходе уже выгружается сам созданный эффект сохраненный при создании в ту же ячейку
call SaveEffectHandle( udg_HASH, parentKey, childKey, e)

 

Banzay89Дата: Суббота, 23 Октября 2010, 00:33:11 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Ну то ладно, смотри как тебе лучше)
 

DarkVaderДата: Суббота, 23 Октября 2010, 00:41:40 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (Banzay89)
Зачем тогда это делать вообще??? Я имею в виду сохранять в хэш пустое место??? Оо Тогда local effect e и все. Или я чтото не доганяю?

Если не будет этой функции, то во втором проходе функции значение переменной е будет пустым и call DestroyEffect(e) ничего не удалит, да и самого эффекта может и не быть если не выполняется условие 1 в первый раз

Добавлено (23-10-2010, 00:41)
---------------------------------------------
а если не задать значение переменной перед ее использованием ( local effect e) то код будет ошибочным в call DestroyEffect(e)

 

[san9]Дата: Суббота, 23 Октября 2010, 00:52:08 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
DarkVader,
Чё ты твариш? Какой нахрен хэш? Как у тебя не может удалятся?

Code
local effect e =  AddSpecialEffectTarget( "путь", unit, "chest")  
      -------------------  
      call DestroyEffect(e)  
      set e = null

Всё создаётся, и всё удаляется...


 

Banzay89Дата: Суббота, 23 Октября 2010, 01:11:21 | Сообщение # 18
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
[san9], теоретически все правильно, а практически не всегда работает
 

[san9]Дата: Суббота, 23 Октября 2010, 01:14:21 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (Banzay89)
[san9], теоретически все правильно, а практически не всегда работает

Как это может не работать? Сколько уже юзаю, неразу ошибок не видел. Тестил даже :D
Поставил 100 героев и 50 героем создал спецэфект через секунду ещё 50, через 3 сек удалял спецэфекты у первых 50, через 1 сек ещё 50.
И как это может не работать??




Сообщение отредактировал [san9] - Суббота, 23 Октября 2010, 01:14:33
 

DarkVaderДата: Суббота, 23 Октября 2010, 01:15:31 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (|san9|)
Чё ты твариш? Какой нахрен хэш? Как у тебя не может удалятся?

хэш нужен из за спецефичности триггера, я привел пример в общем а не конкретный,
Code

  local effect e =  AddSpecialEffectTarget( "путь", unit, "chest")   
       -------------------   
       call DestroyEffect(e)   
       set e = null

такого рода код не даст нужного эффекта
 

[san9]Дата: Суббота, 23 Октября 2010, 01:19:14 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
Quote (DarkVader)
такого рода код не даст нужного эффекта

А какой эффект тебе нужен?




Сообщение отредактировал [san9] - Суббота, 23 Октября 2010, 01:19:29
 

DarkVaderДата: Суббота, 23 Октября 2010, 16:47:37 | Сообщение # 22
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Quote (|san9|)
Как это может не работать? Сколько уже юзаю, неразу ошибок не видел. Тестил даже Поставил 100 героев и 50 героем создал спецэфект через секунду ещё 50, через 3 сек удалял спецэфекты у первых 50, через 1 сек ещё 50. И как это может не работать??

ну я сейчас не совсем могу затестить=) завтра проверю создание эффекта сразу в перменную ( set e = AddSpecialEffectTarget( "путь", unit, "chest") ) а потом сохранение или сразу сохранение... и если норм робит то вопрос решен=)

Добавлено (23-10-2010, 01:25)
---------------------------------------------

Quote (|san9|)
А какой эффект тебе нужен?

нужно создать эффект на юните а через некоторое время удалить, но время может быть совершенно любым от 0.01 до 2 сек, для этого и юзаю хэш

Добавлено (23-10-2010, 16:47)
---------------------------------------------
усе вопрос решен, создал эффект сразу в переменную и заработало=)))
Всем спасибо большое за участие!=)

 

  • Страница 1 из 1
  • 1
Поиск:

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