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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Не удаляет эфект
[Вопрос] Не удаляет эфект
tRu^SДата: Пятница, 16 Марта 2012, 14:16:29 | Сообщение # 1
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:

И почему на правой руке несоздаёться эфект?




Сообщение отредактировал tRu^S - Пятница, 16 Марта 2012, 14:18:02
 

TerradorДата: Пятница, 16 Марта 2012, 14:24:26 | Сообщение # 2
8 уровень
Группа: Проверенные
Сообщений: 676
Награды: 0
Репутация: 1101
Блокировки:
может надо было написать right hand, а не hand right?

 

tRu^SДата: Пятница, 16 Марта 2012, 14:27:14 | Сообщение # 3
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Terrador, -_- на 1 строчку выше написано hand,left и то что рука стоит первой создоваться в левой её части эфекту немешает.

 

KartohaДата: Пятница, 16 Марта 2012, 15:50:47 | Сообщение # 4
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
tRu^S, для начала исправь нерациональную запись эффектов в переменные. Зачем использовать bj_lastCreatedEffect когда можно сразу записать:
Code
e1 = AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,left")      
e2 = AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,right")

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

Добавлено (16 Март 2012, 15:50:47)
---------------------------------------------
Quote (tRu^S)
Неудаляет эфект

Quote (tRu^S)
И почему на правой руке несоздаёться эфект?

Кстати это вводит в небольшое недоумение.
 

tRu^SДата: Пятница, 16 Марта 2012, 16:07:39 | Сообщение # 5
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Quote (Kartoha)
Кстати это вводит в небольшое недоумение.

Да...
Спасибо. Просто я первый раз забыл про переменую effect, и делал через real, и думал почему неполучаеться
Quote (Kartoha)
e1 = AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,left")      e2 = AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,right")


Добавлено (16 Март 2012, 15:59:36)
---------------------------------------------
Ахаха, я посмотрел самый 1-ый код))) AddSpecialEffect -_- лол что
А правая рука неработает hmm

Добавлено (16 Март 2012, 16:07:39)
---------------------------------------------
Ой левая неработает просто он комне лицом стоял




Сообщение отредактировал tRu^S - Пятница, 16 Марта 2012, 16:00:31
 

BorodachДата: Пятница, 16 Марта 2012, 16:14:34 | Сообщение # 6
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
tRu^S,может попробуй "hand"+"right" hmm

Karamba


Сообщение отредактировал Borodach - Пятница, 16 Марта 2012, 16:14:56
 

tRu^SДата: Пятница, 16 Марта 2012, 16:18:33 | Сообщение # 7
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Borodach, тот же результат hmm

 

[Robert]Дата: Пятница, 16 Марта 2012, 16:30:30 | Сообщение # 8
4 уровень
Группа: Проверенные
Сообщений: 96
Награды: 0
Репутация: 207
Блокировки:
там нужно точно прописать в каком месте эффект должен быть иначе его не будет быть
 

tRu^SДата: Пятница, 16 Марта 2012, 16:32:49 | Сообщение # 9
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Quote (|Robert|)
там нужно точно прописать в каком месте эффект должен быть иначе его не будет быть

avtorklif
Quote (|Robert|)
не будет быть

avtorklif avtorklif
даблфеиспалм


 

[Robert]Дата: Пятница, 16 Марта 2012, 16:43:00 | Сообщение # 10
4 уровень
Группа: Проверенные
Сообщений: 96
Награды: 0
Репутация: 207
Блокировки:
Quote (tRu^S)
даблфеиспалм

ты ничего не мыслишь в картостройственных делах и глупости несешь
 

tRu^SДата: Пятница, 16 Марта 2012, 16:50:26 | Сообщение # 11
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
[Robert], ок босс 5 уровень набрал, молчи ;)

 

[Robert]Дата: Пятница, 16 Марта 2012, 16:51:24 | Сообщение # 12
4 уровень
Группа: Проверенные
Сообщений: 96
Награды: 0
Репутация: 207
Блокировки:
tRu^S, нимыслишь
 

llkaДата: Пятница, 16 Марта 2012, 17:15:21 | Сообщение # 13
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 34
Блокировки:
tRu^S, А может там без запятой: lefthand или handleft, righthand или handright.

Добавлено (16 Март 2012, 17:15:21)
---------------------------------------------
tRu^S, Это что сжасс?

 

BorodachДата: Пятница, 16 Марта 2012, 17:19:34 | Сообщение # 14
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
tRu^S, У меня тож была похожая проблема, на ноге отображалость а на руке нет, может еще проблема в определенном спецэффекте или юните

Karamba
 

tRu^SДата: Пятница, 16 Марта 2012, 18:19:44 | Сообщение # 15
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Borodach, возможно

 

SirNikolasДата: Суббота, 17 Марта 2012, 10:42:04 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Естественно, проблема в дурацком создании эффектов.
Code
function AddSpecialEffectTargetUnitBJ takes string attachPointName, widget targetWidget, string modelName returns effect
     set bj_lastCreatedEffect = AddSpecialEffectTarget(modelName, targetWidget, attachPointName)
     return bj_lastCreatedEffect
endfunction
bj_lastCreatedEffect - просто переменная, которая записывается соответствующей BJ.

Переписал код на настоящем cJass:
Code
scope Octavian1Spell initializer Init {
     include "cj_types_priv.j"

     define {
         private ABILITY = 'A00B'
         private EFFECT = "Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl"
         private TIME(level) = 3. + .5 * level
     }

     private void Init() {
         trigger trig = CreateTrigger()
         int i = 0
         loop {
             TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
             exitwhen i == 11
             i++
         }
         TriggerAddCondition(trig, \
             lambda bool() {
                 return GetSpellAbilityId() == ABILITY
             }
         )
         TriggerAddAction(trig, \
             lambda void() {
                 timer t = CreateTimer()
                 int id = GetHandleId(t)
                 EnableTrigger(gg_trg_Oktavian_1_Attak)
                 SaveAgentHandle(Hash, id, 0, AddSpecialEffectTarget(EFFECT, u, "hand,left"))
                 SaveAgentHandle(Hash, id, 1, AddSpecialEffectTarget(EFFECT, u, "hand,right")
                 TimerStart(t, TIME(GetUnitAbilityLevel(GetTriggerUnit(), ABILITY)), false, \
                     lambda void() {
                         timer t = GetExpiredTimer()
                         int id = GetHandleId(t)
                         DisableTrigger(gg_trg_Oktavian_1_Attak)
                         DestroyEffect(LoadEffectHandle(Hash, id, 0))
                         DestroyEffect(LoadEffectHandle(Hash, id, 1))
                         FlushChildHashtable(Hash, id)
                         DestroyTimer(t)
                         t = null
                     }
                 )
                 t = null
             }
         )
         trig = null
     }
}


 

RaiN_SДата: Суббота, 17 Марта 2012, 16:30:55 | Сообщение # 17
6 уровень
Группа: Проверенные
Сообщений: 163
Награды: 0
Репутация: 77
Блокировки:
Может покажусь глупым, но почему бы лучше не создать липовую способность с нужным эффектом в нужной точке прикрепления и дать её юниту, а потом удалить, когда надо.

 

SirNikolasДата: Суббота, 17 Марта 2012, 16:50:03 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Потому что по коду разница в пару строк, а игру способность нагружает чуть больше.

 

Ty3uKДата: Суббота, 17 Марта 2012, 16:53:32 | Сообщение # 19
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
А почему бы: не юзать коллбэк из последнего адика, раз; не совмещать конд и действие- два. Ведь последним мы режем поток, разве нет?

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

SirNikolasДата: Суббота, 17 Марта 2012, 17:48:06 | Сообщение # 20
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Потому что у автора темы вряд ли есть последний Эдик. А так-то можно:
Code
scope Octavian1Spell {
     include "cj_types_priv.j"

     define {
         private ABILITY = 'A00B'
         private EFFECT = "Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl"
         private TIME(level) = 3. + .5 * level
     }

     callback onUnitSpellEffect(ABILITY) {
         timer t = CreateTimer()
         int id = GetHandleId(t)
         EnableTrigger(gg_trg_Oktavian_1_Attak)
         SaveAgentHandle(Hash, id, 0, AddSpecialEffectTarget(EFFECT, u, "hand,left"))
         SaveAgentHandle(Hash, id, 1, AddSpecialEffectTarget(EFFECT, u, "hand,right")
         TimerStart(t, TIME(GetUnitAbilityLevel(GetTriggerUnit(), ABILITY)), false, \
             lambda void() {
                 timer t = GetExpiredTimer()
                 int id = GetHandleId(t)
                 DisableTrigger(gg_trg_Oktavian_1_Attak)
                 DestroyEffect(LoadEffectHandle(Hash, id, 0))
                 DestroyEffect(LoadEffectHandle(Hash, id, 1))
                 FlushChildHashtable(Hash, id)
                 DestroyTimer(t)
                 t = null
             }
         )
         t = null
     }
}
По поводу условий - не знаю, как лучше. Привык писать так.


 

Ty3uKДата: Суббота, 17 Марта 2012, 17:51:28 | Сообщение # 21
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
На хайве ругаются, говорят что лучше совмещать :)

Добавлено (17 Март 2012, 17:51:28)
---------------------------------------------
И его зовут Адик, а не Эдик avtoradolf


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

DreiiДата: Суббота, 17 Марта 2012, 19:17:49 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (Ty3uK)
юзать коллбэк из последнего адика

Quote (Ty3uK)
совмещать конд и действие

Можно поясните моему тупенькому мозгу что за звери такие?


 

Ty3uKДата: Суббота, 17 Марта 2012, 19:56:36 | Сообщение # 23
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Коллбэк ты видел в последнем посте Ника. Конд- условие. Можно вместо условия + действия юзать одно только условие

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

SirNikolasДата: Воскресенье, 18 Марта 2012, 15:16:12 | Сообщение # 24
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
И его зовут Адик, а не Эдик
'A' в закрытом слоге читается как [æ]. К тому же, гипотетически возможно, что Адольфа зовут Эдуард.
Quote (Ty3uK)
совмещать конд и действие
Одно из двух:
Code
bool Conditions() {
     if ... { ... }
     return false
}
Code
void Actions() { ... }

bool Conditions() {
     if ... { Actions() }
     return false
}


 

Ty3uKДата: Воскресенье, 18 Марта 2012, 17:03:05 | Сообщение # 25
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Его на хгм все по-русски Адиком зовут :)

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

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

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