[Вопрос] Не удаляет эфект
tRu^S Дата: Пятница, 16 Марта 2012, 14:16:29 | Сообщение # 1
8 уровень
Группа: Проверенные
Сообщений: 614
Награды:
0
Репутация:
138
Блокировки:
Code
function Okt1 takes nothing returns nothing timer t=GetExpiredTimer() integer id=GetHandleId(t) effect e1=LoadEffectHandle(Hash,id,0) effect e2=LoadEffectHandle(Hash,id,1) DestroyEffect(e1) DestroyEffect(e2) DisableTrigger(gg_trg_Oktavian_1_Attak) endfunction function Trig_Oktavian_1_Actions takes nothing returns nothing timer t=CreateTimer() integer id=GetHandleId(t) unit u=GetTriggerUnit() effect e1 effect e2 AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,left") e1 = bj_lastCreatedEffect AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl",u,"hand,right") e2 = bj_lastCreatedEffect EnableTrigger(gg_trg_Oktavian_1_Attak) TimerStart(t,3+0.50*GetUnitAbilityLevel(u,'A00B'),false,function Okt1) SaveEffectHandle(Hash,id,0,e1) SaveEffectHandle(Hash,id,1,e2) u=null endfunction
И почему на правой руке несоздаёться эфект?
Сообщение отредактировал 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 -_- лол что А правая рука неработает Добавлено (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"
Karamba
Сообщение отредактировал Borodach - Пятница, 16 Марта 2012, 16:14:56
tRu^S Дата: Пятница, 16 Марта 2012, 16:18:33 | Сообщение # 7
8 уровень
Группа: Проверенные
Сообщений: 614
Награды:
0
Репутация:
138
Блокировки:
Borodach , тот же результат
[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| )
там нужно точно прописать в каком месте эффект должен быть иначе его не будет быть
Quote (|Robert| )
не будет быть
даблфеиспалм
[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
Блокировки:
А почему бы: не юзать коллбэк из последнего адика, раз; не совмещать конд и действие- два. Ведь последним мы режем поток, разве нет?
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) --------------------------------------------- И его зовут Адик, а не Эдик
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
Блокировки:
Коллбэк ты видел в последнем посте Ника. Конд- условие. Можно вместо условия + действия юзать одно только условие
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
Блокировки:
Его на хгм все по-русски Адиком зовут