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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Создание эффекта на множестве юнитов (JASS)
Создание эффекта на множестве юнитов
CHLSNДата: Вторник, 04 Января 2011, 21:02:18 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Забабахал в общем триггер, всё работает шикарно:
Code
    x = 0
     loop
         ForGroup( for, function Cry )
         TriggerSleepAction( 1.00 )
         x++
         exitwhen x == 10
     endloop

Одна проблема: на эту одну секунду надо добавить эффект ко всем юнитам в группе, но TriggerSleepAction внутри Cry'я приводит к тому, что код после него вообще не выполняется.




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

lawsonДата: Вторник, 04 Января 2011, 21:19:26 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
TriggerSleepAction вообще для GUI пользуйся PolledWait() и еще скин полный код хочу научиться делать loop

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

DreiiДата: Вторник, 04 Января 2011, 21:26:03 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, либо юзай хеш,либо покажи весь код

 

CHLSNДата: Вторник, 04 Января 2011, 21:35:33 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Повторяю еще раз, для плохочитающих: TriggerSleepAction внутри функции используемой в ForGroup приводит к тому, что код после него вообще не выполняется.

P.S. к TriggerSleepAction, что внутри PolledWait это тоже относится кстати, потому что <читай строку выше>.




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

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

 

CHLSNДата: Вторник, 04 Января 2011, 21:53:22 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (CHLSN)
Одна проблема: на эту одну секунду надо добавить эффект ко всем юнитам в группе.

Уже вроде как объяснил.




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

DreiiДата: Вторник, 04 Января 2011, 21:56:46 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, какой эффект?

 

CHLSNДата: Вторник, 04 Января 2011, 22:29:13 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Какая разница, какой. Факт, что его нужно удалять. Ну, например, эффект эмпатии.



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

DreiiДата: Вторник, 04 Января 2011, 22:30:49 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, call DestroyEffect(AddSpecialEffectTarget(modelname,target,attchpoint))

 

CHLSNДата: Вторник, 04 Января 2011, 22:40:27 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, клёво. То же самое, что arcsin( sin ( x ) ). Эффект-то не появится даже!



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

DreiiДата: Вторник, 04 Января 2011, 22:56:52 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, все появляеться

 

CHLSNДата: Вторник, 04 Января 2011, 23:35:55 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, че ты споришь-то? Пойди и напиши, то что ты написал: DestroyEffect(AddSpecialEffectTarget(modelname,target,attchpoint)). Я посмотрю как у тебя получится. Ты создаешь эффект для удаления. Дай Бог ему 0.(0)1 секунду прожить.



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

FkoFFДата: Вторник, 04 Января 2011, 23:42:09 | Сообщение # 13
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Автор - учи матчасть. грубо говоря на классическом джассе это будет выглядеть как:

Code
func func_02 takes nothing returns nothing
local timer t = ExpiredTimer()

call DestroyEffect(LoadEffectHandle(udg_Data,GetHandleId(t), xx)

call FlushChildHashtable(udg_Data, GetHandleId(t))
call DestroyTimer(t)

set t = null
endfunc

func rand takes rand returns rand
local timer t = CreateTimer()

call SaveEffectHandle(udg_Data,GetHandleId(t), xx, CreateEffectOnUnit(параметры))
call TimerStart(t, 1.0, false, function func_02)

set t = null
endfunc

как нубу, тебе будет полезно.

Добавлено (04-01-2011, 23:42)
---------------------------------------------

Quote (CHLSN)
Дай Бог ему 0.(0)1 секунду прожить.

эффект проиграет лишь анимацию смерти.


 

DreiiДата: Среда, 05 Января 2011, 00:04:18 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
DestroyEffect(AddSpecialEffectTarget(modelname,target,attchpoint))

Эффект создаеться играться доконца и удаляеться


 

FkoFFДата: Среда, 05 Января 2011, 00:19:26 | Сообщение # 15
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Dreii, если, к примеру, нужно создать огонь или другой партикловый эффект - ничего не выйдет ибо они живут ровно столько, сколько эффект проигрывает анимацию stand, а она не проигрывается после смерти.

 

XimikSДата: Среда, 05 Января 2011, 00:40:28 | Сообщение # 16
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 28
Блокировки:
нельзя юзать слип внутри лупа, и тем более утечный полледвойт. вообще не надо юзать слипы, они кривые
 

CHLSNДата: Среда, 05 Января 2011, 00:47:48 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
FkoFF, что-то нихрена не работает твой госу-код.



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

FkoFFДата: Среда, 05 Января 2011, 00:51:38 | Сообщение # 18
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
CHLSN, омфг, неужели пазитиффный школьник не осилил перенос кода со страниц внутрь карты? или мне надо написать для тебя функцию отсроченного эффекта? Омфг лол - здесь все проще некуда, да только ты нуп )

по полкам
func func_02 takes nothing returns nothing тут должно быть открытие блока функции, нормальное. тобишь через function, но мне лень.
local timer t = ExpiredTimer()

call DestroyEffect(LoadEffectHandle(udg_Data,GetHandleId(t), xx) тут вбивай нужную цифру под хх

call FlushChildHashtable(udg_Data, GetHandleId(t))
call DestroyTimer(t)

set t = null
endfunc закрываем нормальным способом

func rand takes rand returns rand не знаешь как открыть функцию?
local timer t = CreateTimer()

call SaveEffectHandle(udg_Data,GetHandleId(t), xx, CreateEffectOnUnit(параметры)) смотри нативку от крейтэффекта и вбивай нужные параметры
call TimerStart(t, 1.0, false, function func_02) название функции уничтожающей таймер с эффектом

set t = null
endfunc




Сообщение отредактировал FkoFF - Среда, 05 Января 2011, 00:52:30
 

CHLSNДата: Среда, 05 Января 2011, 01:13:22 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
*усердно переписывает код* Сейчас я досканально его подправлю. Вот чтобы точь-в-точь как у тебя было, и проверю.

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

Code
function s3 takes nothing returns nothing
timer t = GetExpiredTimer() //ExpiredTimer() не нашел, зато такой есть
DestroyEffect(LoadEffectHandle( udg_hash, GetHandleId( t ), 0) )
DestroyEffect(LoadEffectHandle( udg_hash, GetHandleId( t ), 2) )
FlushChildHashtable( udg_hash, GetHandleId( t ) )
DestroyTimer(t)    
t = null
endfunction
function s2 takes nothing returns nothing //как-то не очень получается вместо nothing s2 написать, веришь да?
       unit n = GetEnumUnit()
       unit c = GetSpellAbilityUnit()
       timer t = CreateTimer()
           SaveEffectHandle( udg_hash, GetHandleId( t ), 0, AddSpecialEffectTarget( string, n, "origin" ) )    
           SaveEffectHandle( udg_hash, GetHandleId( t ), 2, AddSpecialEffectTarget( string, c, "origin" ) )    
           TimerStart( t, 1.0, false, function s3 )    
       t = null
       n = null
       c = null
endfunction

Code
    x = 0
       loop
           ForGroup( for, function s )
           ForGroup( for, function s2 )
           TriggerSleepAction( 1.00 )
           x++
           exitwhen x == 10
       endloop

P.S. эффекты-то создаются - норм, да вот только ни один из них не разрушается.

P.S.S. Почти всё работает. Но последние несколько эффектов (2-3+) не удаляются. Как исправить?




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


Сообщение отредактировал CHLSN - Среда, 05 Января 2011, 02:41:40
 

DreiiДата: Среда, 05 Января 2011, 01:20:07 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (FkoFF)
огонь или другой партикловый эффект

Не пробывал...


 

AjaccioДата: Среда, 05 Января 2011, 06:26:49 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Code

function EffectFD takes nothing returns nothing //Уничтожение эффекта.
  local timer destroyer = GetExpiredTimer()
  call DestroyEffect(LoadEffectHandle(HASH, GetHandleId(destroyer), 0))
  call DestroyTimer(destroyer)
     set destroyer = null
endfunction

function EffectFU takes string place, unit target, string path, real time returns nothing //Создание эффекта для юнита.
  local timer destroyer = CreateTimer()
         call SaveEffectHandle(HASH, GetHandleId(destroyer), 0, AddSpecialEffectTarget(path, target, place))
  call TimerStart(destroyer, time, false, function EffectFD)
         set destroyer = null
endfunction

function EffectFP takes string path, real X, real Y, real time returns nothing //Создание эффекта для координат.
  local timer destroyer = CreateTimer()
  call SaveEffectHandle(HASH, GetHandleId(destroyer), 0, AddSpecialEffect(path, X, Y))
  call TimerStart(destroyer, time, false, function EffectFD)
         set destroyer = null
endfunction

Можно добавить это в "Нестандартный код" или в библиотеку (vJass), а затем жить припеваючи.
Конкретно в рамках темы - используйте call ForGroup(for, function <Имя функции>).
Затем применяйте call EffectFU("origin", GetEnumUnit(), "<Путь>", <Нужное время>).


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

DreiiДата: Среда, 05 Января 2011, 10:37:44 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Ajaccio, это же только на создание и удаление спецэффекта?

 

FkoFFДата: Среда, 05 Января 2011, 10:59:35 | Сообщение # 23
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Dreii, ага, API Для работы с эффектами. Любой мало-мальский джассер делает себе набор для работы с молниями, эффектами, уроном, и плавными переходами, к примеру тумана или чего еще.

 

DreiiДата: Среда, 05 Января 2011, 11:02:00 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (FkoFF)
мало-мальский джассер

Значит я мини-мини-очень мини-нубоджассер^^


 

CHLSNДата: Среда, 05 Января 2011, 11:40:28 | Сообщение # 25
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Ajaccio)
Затем применяйте call EffectFU("origin", GetEnumUnit(), "<Путь>", <Нужное время>).

Проще тогда уж не две функции делать, а одну, и вызывать её с параметрами:
Quote (FkoFF)
Любой мало-мальский джассер делает себе набор для работы с молниями, эффектами, уроном, и плавными переходами...




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

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

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