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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] DisableTrigger (Для одного игрока)
[Вопрос] DisableTrigger
FatalBladeДата: Суббота, 17 Декабря 2011, 05:16:35 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Если я напишу вот так:
Code
If GetLocalPlayer() == GetOwningPlayer(GetSpellAbilityUnit()) then
          DisableTrigger(gg_trg_Telekinesis)
endif

или
Code
If GetLocalPlayer() == GetOwningPlayer(GetSpellAbilityUnit()) then
          DisableTrigger(GetTriggeringTrigger())
endif


Это отменит триггер только для данного игрока?




Сообщение отредактировал FatalBlade - Суббота, 17 Декабря 2011, 05:22:04
 

Ty3uKДата: Суббота, 17 Декабря 2011, 09:34:51 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Нет, скорее всего будет десинх, попробуй лучше локально запускать его через TriggerExecute()

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

FkoFFДата: Суббота, 17 Декабря 2011, 12:31:48 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Вопрос в лоб - а зачем?

 

FatalBladeДата: Суббота, 17 Декабря 2011, 12:50:37 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Ty3uK)
Нет, скорее всего будет десинх, попробуй лучше локально запускать его через TriggerExecute()

Это как?

Quote (FkoFF)
Вопрос в лоб - а зачем?

Есть у меня в карте спелл, который поднимает цель в воздух, а затем отпускает её, и та падая, получает урон. Урон так же наносится всем вражеским юнитам вокруг падения. Сама абилка сделана на основе Aerial Shackles, то что у расы Алльянса у наездниках на драконах, которая связывает сетью вражеского летучего юнита.

Вообщем абилка кастуется 2 секунды, это как раз то время что у меня герой должен поднимать цель ввоздух. Вообщем тут естественно событие SPELL_CAST а не SPELL_EFFECT. Оно то конечно же работает, но вчера тестил карту, и нашёл баг связанный со спеллом. Если во время того, или немного до того, как цель поднимается ввоздух, она уходит в инвиз, то сам триггер срабатывает 2 раза. Короче юнита 2 раза поднимает вверх и снова опускает. Я так понял дело в инвизе, потому что код уже давно прекрасно работает, но инвиз это инвиз, он тоже нужен.

Так вот нужно просто сделать так что бы триггер в течение нескольки секунд не срабатывал для данного игрока владельца кастера.


 

lawsonДата: Суббота, 17 Декабря 2011, 12:58:24 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Так вот нужно просто сделать так что бы триггер в течение нескольки секунд не срабатывал для данного игрока владельца кастера.

ЕСли ты хочешь остановить глобальный триггер, ты остановишь его для всех игроков.


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

Ty3uKДата: Суббота, 17 Декабря 2011, 13:41:14 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
"Это как?" О.о иф локалплеер равно игроку зен call TriggerExecute(gg_trg_триггер) эндиф. Не уверен, что сработает, но вполне возможно

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

SirNikolasДата: Суббота, 17 Декабря 2011, 13:49:21 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
Вобщем, тут, естественно, событие SPELL_CAST, а не SPELL_EFFECT.
Глупости. SPELL_EFFECT можно использовать практически везде. И инвизом он сбиваться не должен.


 

HexingДата: Суббота, 17 Декабря 2011, 13:53:26 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Code

local boolean b = true
If GetLocalPlayer() == GetOwningPlayer(GetSpellAbilityUnit()) then
           set b = false
endif
if(b == true) then
           DisableTrigger(GetTriggeringTrigger())
endif

кажется не должно быть десинха


 

SirNikolasДата: Суббота, 17 Декабря 2011, 13:56:23 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Я не пойму, зачем выключать триггер для игрока, если можно поставить условие, что GetTriggerUnit() не находится в группе кастовавших в ближайшую секунду.

 

FatalBladeДата: Суббота, 17 Декабря 2011, 13:58:08 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Глупости. SPELL_EFFECT можно использовать практически везде. И инвизом он сбиваться не должен.

Тут продолжительный каст, и триггер должен срабатывать когда каст начинается а не заканчивается. Юнита должно поднимать когда герой только начинает каст

Добавлено (17 Декабрь 2011, 13:58:08)
---------------------------------------------

Quote (SirNikolas)
Я не пойму, зачем выключать триггер для игрока, если можно поставить условие, что GetTriggerUnit() не находится в группе кастовавших в ближайшую секунду.

массив булеан?


 

SirNikolasДата: Суббота, 17 Декабря 2011, 14:04:47 | Сообщение # 11
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
Тут продолжительный каст, и триггер должен срабатывать, когда каст начинается, а не заканчивается. Юнита должно поднимать, когда герой только начинает каст
Так и будет.


 

ExtrematorДата: Суббота, 17 Декабря 2011, 14:06:24 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (FatalBlade)
Если во время того, или немного до того, как цель поднимается ввоздух, она уходит в инвиз, то сам триггер срабатывает 2 раза

с какого фига она будет кастоваться 2 раза?
если юнит завершил преанимацию каста и спелл физически "был применён" то невидимая цель будет ВИДИМА игроку который поймал инвизера
если юнит завершил преанимацию каста, но цели он не видит, то каст сработать не может и событие "юнит применил спел" не сработает!

только что тестил...

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

а вообще я хз чё там можно было натворить... оп идее всё просто и реализуемо даж на гуи ._. а ты там в жассе ковыряешься не можешь решить
 

HexingДата: Суббота, 17 Декабря 2011, 14:17:19 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Extremator, я так понял у него не MUI?

p.s.
Используйте с. Юнит начинает направлять способность, никогда не подводит


 

ExtrematorДата: Суббота, 17 Декабря 2011, 14:21:33 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (Hexing)
Юнит начинает направлять способность

юнит ещё не успел потратить ману и кд не пошёл... и действия уже происходят хР
 

FatalBladeДата: Суббота, 17 Декабря 2011, 14:24:46 | Сообщение # 15
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Extremator)
с какого фига она будет кастоваться 2 раза?

Кастуется же...

Quote (Extremator)
если у тебя идёт 1й каст а потом 2й, то у тебя в триггерах должна быть пробита работа с "юнит прекратил применение" в котором будет завершение действия и падение цели... И... в этот момент у тебя начинается новый каст и все данный должны работать с нуля... если канешно ты не берёшь за высоту юнита его "текущую высоту"...

У меня юнит поднимается на одну и ту же максимальную высоту и затем падает, даже если кастер прекратил приминение.

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

Добавлено (17 Декабрь 2011, 14:24:46)
---------------------------------------------
Quote (Hexing)
Extremator, я так понял у него не MUI?

MUI

Quote (Hexing)
Используйте с. Юнит начинает направлять способность, никогда не подводит

SPELL_CAST?

Подводит ещё как...
Quote (Extremator)
юнит ещё не успел потратить ману и кд не пошёл... и действия уже происходят хР




Сообщение отредактировал FatalBlade - Суббота, 17 Декабря 2011, 14:26:18
 

SirNikolasДата: Суббота, 17 Декабря 2011, 14:31:48 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Используйте SPELL_EFFECT.

FatalBlade, может быть, "Огненное лассо" вызывает события дважды: при касте и при окончании. Так же и "Перевоплощение" - тоже два раза.


 

FatalBladeДата: Суббота, 17 Декабря 2011, 14:37:39 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
FatalBlade, может быть, "Огненное лассо" вызывает события дважды: при касте и при окончании. Так же и "Перевоплощение" - тоже два раза.

Но если так, то почему это происходит только в определённом случае, а не всегда?


 

SirNikolasДата: Суббота, 17 Декабря 2011, 14:42:25 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (SirNikolas)
Используйте SPELL_EFFECT.
Проверь.


 

ExtrematorДата: Суббота, 17 Декабря 2011, 14:53:04 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (FatalBlade)
даже если кастер прекратил приминение.

тебе не кажется что у тебя корявый триггер? =/
 

FatalBladeДата: Суббота, 17 Декабря 2011, 14:54:33 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Проверь.

ок ща

Добавлено (17 Декабрь 2011, 14:54:33)
---------------------------------------------

Quote (Extremator)
тебе не кажется что у тебя корявый триггер? =/

хз раньше проблем небыло


 

SirNikolasДата: Суббота, 17 Декабря 2011, 14:54:55 | Сообщение # 21
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Extremator)
тебе не кажется, что у тебя корявый триггер?
Вполне возможно. FatalBlade, если не получится, выложи код.


 

FatalBladeДата: Суббота, 17 Декабря 2011, 15:29:05 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Во щас норм больше не конфликтует с инвизом. Всем спс

Добавлено (17 Декабрь 2011, 15:29:05)
---------------------------------------------
Quote (SirNikolas)
Вполне возможно. FatalBlade, если не получится, выложи код.

Могу всё равно выложить код. Может там реально чё коряво. Но предупреждаю - код здоровенный. Вот:





Сообщение отредактировал FatalBlade - Суббота, 17 Декабря 2011, 15:32:27
 

SirNikolasДата: Суббота, 17 Декабря 2011, 15:40:00 | Сообщение # 23
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
if IsPlayerInForce( GetLocalPlayer(), f ) then
if GetLocalPlayer() == GetOwningPlayer(u1) then
Quote (FatalBlade)
local timer t1 = CreateTimer()
//...
local timer t2 = CreateTimer()
Вместо одного из них лучше использовать истекший таймер. В других функциях то же самое.
Кстати, вместо того, чтобы отключать контроль игроку мог бы сделать заклинание на "Канале".

Добавлено (17 Декабрь 2011, 15:40:00)
---------------------------------------------
А в остальном нормально.


 

FatalBladeДата: Суббота, 17 Декабря 2011, 16:05:23 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Кстати, вместо того, чтобы отключать контроль игроку мог бы сделать заклинание на "Канале".

И? Мне же нужно отключать контроль для того что бы юниту нельзя было дать другой приказ. Чем тут канал поможет?


 

lawsonДата: Суббота, 17 Декабря 2011, 16:27:31 | Сообщение # 25
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Но предупреждаю - код здоровенный

Так на заметку: эт еще не здоровенный.


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

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] DisableTrigger (Для одного игрока)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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