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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » EVENT_PLAYER_UNIT_DEATH (Какие случаи "изчезновения" юнита считаются смертью?)
EVENT_PLAYER_UNIT_DEATH
FatalBladeДата: Суббота, 03 Декабря 2011, 22:52:13 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
И так, мне очень нужно знать, на какие будет ли реагировать событие EVENT_PLAYER_UNIT_DEATH на следующие случаи:
1) - Абилка Possession у баньши у Андед (типа юнит "входит" в цель, и тот юнит становится за игрока баньши, а сама баньши изчезает)
2) - Суммон который призывается на время. По истечению времени он исчезает. Это считается смертью юнита?


 

YaNeZnauJassДата: Суббота, 03 Декабря 2011, 23:13:52 | Сообщение # 2
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 15
Блокировки:
Quote (FatalBlade)
2) - Суммон который призывается на время. По истечению времени он исчезает. Это считается смертью юнита?

нед
 

TrekonusДата: Воскресенье, 04 Декабря 2011, 12:59:05 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 210
Награды: 0
Репутация: 23
Блокировки:
Смертью(как бы странно это не звучало) является смерть.Т.е. когда юнит получает урон превышающий его здоровье или умирает по воле Бо.. эмм...триггера.

 

Ty3uKДата: Воскресенье, 04 Декабря 2011, 13:19:30 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Насколько я знаю, переселение баньши не смерть. Просто проигрывается анимация и юнит удаляется. С, епть

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

SirNikolasДата: Воскресенье, 04 Декабря 2011, 13:31:14 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
function Trig_TestDeath_Actions takes nothing returns nothing
     call BJDebugMsg(GetUnitName(GetTriggerUnit()) + " " + I2S(GetHandleId(GetTriggerUnit())) + " умирает")
endfunction

function InitTrig_TestDeath takes nothing returns nothing
     local trigger trig = CreateTrigger()
     local integer i = 0
     loop
         call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_DEATH, null)
         exitwhen i == 15
         set i = i + 1
     endloop
     call TriggerAddAction(trig, function Trig_TestDeath_Actions)
     set trig = null
endfunction


 

Ty3uKДата: Воскресенье, 04 Декабря 2011, 13:33:31 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну да, можно и дебагом проверить ^_^

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

HexingДата: Воскресенье, 04 Декабря 2011, 14:58:36 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Сирниколас)
function Trig_TestDeath_Actions takes nothing returns nothing
call BJDebugMsg(GetUnitName(GetTriggerUnit()) + " " + I2S(GetHandleId(GetTriggerUnit())) + " умирает")
endfunction

function InitTrig_TestDeath takes nothing returns nothing
local trigger trig = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_DEATH, null)
exitwhen i == 15
set i = i + 1
endloop
call TriggerAddAction(trig, function Trig_TestDeath_Actions)
set trig = null
endfunction

а ха ха наконецто я дождался этого момента, SirNikolas, написал не идеальный код!!!
Code

function Trig_TestDeath_Actions takes nothing returns nothing
       local unit u = GetTriggerUnit()
       call BJDebugMsg(GetUnitName(u) + " " + I2S(GetHandleId(u)) + " умирает")
       set u = null
endfunction

переменная 2 раза используется, 2 вызова одной функции - нехорошо




Сообщение отредактировал Hexing - Воскресенье, 04 Декабря 2011, 15:49:13
 

SirNikolasДата: Воскресенье, 04 Декабря 2011, 15:31:46 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Hexing)
2 вызова одной функции - нехорошо
Полностью согласен. Единственное исключение - native GetTriggerUnit takes nothing returns unit - самая быстрая функция в игре. Ха-ха.

P. S. Поправь автора цитаты.


 

HexingДата: Воскресенье, 04 Декабря 2011, 15:49:00 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
SirNikolas как всегда лучше всех facepalm

 

FatalBladeДата: Воскресенье, 04 Декабря 2011, 22:25:38 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
GetTriggerUnit

Почему? И откуда ты это знаешь?))
Чем она отличается от GetSpellAbilityUnit, GetAttacker, GetDyingUnit, GetKillingUnit, GetSpellTargetUnit... ?


 

SlonickДата: Воскресенье, 04 Декабря 2011, 22:36:12 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1688
Награды: 0
Репутация: 247
Блокировки:
Hexing, не дождешься чтобы он ошибся)

 

lawsonДата: Воскресенье, 04 Декабря 2011, 22:54:07 | Сообщение # 12
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
GetTriggerUnit

Quote (FatalBlade)
отличается от

Quote (FatalBlade)
GetSpellAbilityUnit

Только при событии юнит использут способность.
Quote (FatalBlade)
GetAttacker

Триггер юнит ни когда не может быть аттакером, так как есть только событие юнит атакован.
Quote (FatalBlade)
GetDyingUnit

При событии юнит умирает.
Quote (FatalBlade)
GetKillingUnit

Не может быть триггер юнитом.
Quote (FatalBlade)
GetSpellTargetUnit

При событии юнит использует способность.
ты это хотел узнать?

TriggerUnit наверное быстрей потому что ловит любые события которые может вызвать юнит.


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


Сообщение отредактировал lawson - Воскресенье, 04 Декабря 2011, 23:00:09
 

oleg_best_olegДата: Воскресенье, 04 Декабря 2011, 23:05:12 | Сообщение # 13
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (FatalBlade)
1) - Абилка Possession у баньши у Андед (типа юнит "входит" в цель, и тот юнит становится за игрока баньши, а сама баньши изчезает)

Вроде как считается, я сделал триггер, который выводил сообщение в игру: Игрок <имя> убил игрока <имя>.

При любых обстоятельствах писало нормально. А от этой способности писало:

Code
Игрок    убил игрока 1.
 

FatalBladeДата: Воскресенье, 04 Декабря 2011, 23:26:05 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
lawson, Я знаю что значит каждая их тех функций что я написал. Мой вопрос о том, почему все советуют юзать именно GetTRiggerUnit, когда можно юзать GetSpellAbilityUnit?

 

lawsonДата: Воскресенье, 04 Декабря 2011, 23:39:37 | Сообщение # 15
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
почему все советуют юзать именно GetTRiggerUnit

Quote (lawson)
TriggerUnit

Quote (lawson)
ловит любые события которые может вызвать юнит.

Quote (FatalBlade)
GetSpellAbilityUnit

Quote (lawson)
При событии юнит использует способность.

Понял?

Добавлено (04 Декабрь 2011, 23:39:37)
---------------------------------------------

Quote (FatalBlade)
Я знаю что значит каждая их тех функций что я написал

Это не функции, а ссылки на юнитов.


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

FatalBladeДата: Понедельник, 05 Декабря 2011, 00:21:05 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
Понял?

Допустим у меня событие юнит использует способность. В данном случае должно быть неважно как я ловлю юнита - GetTriggerUnit или GetSpellAbilityUnit. Результат тот же. Но всё равно все советуют В ДАННОМ СЛУЧАЕ юзать GetTriggerUnit. Why??

Добавлено (05 Декабрь 2011, 00:21:05)
---------------------------------------------

Quote (oleg_best_oleg)
Игрок убил игрока 1.

Это как понимать? Что нулевой игрок, или "никакой" игрок убил игрока 1?


 

lawsonДата: Понедельник, 05 Декабря 2011, 01:31:43 | Сообщение # 17
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
советуют В ДАННОМ СЛУЧАЕ юзать GetTriggerUnit. Why??

Потому что первоисточником всех этих SpellTarget или других есть TriggerUnit.
На оптимизации карты это не скажится аж никак.


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


Сообщение отредактировал lawson - Понедельник, 05 Декабря 2011, 01:32:35
 

Ty3uKДата: Понедельник, 05 Декабря 2011, 07:48:20 | Сообщение # 18
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Триггер юнит работает быстрее всех других ссылок, его можно и не заносить в переменную, если ты обращаешься к нему один или два раза (так же можно сразу сейвить в хэш через call SaveAgentHandle(hash, parent, child, GetTriggierUnit()). Тебе нужно просто запомнить, что это самая быстрая ссылка на события с юнитом

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

HexingДата: Понедельник, 05 Декабря 2011, 08:13:24 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, пруууф ит!!!! где доказательства?

 

Ty3uKДата: Понедельник, 05 Декабря 2011, 08:21:10 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Это аксиома. Триггер юнит- родитель таких ссылкок, как GetAttackedUnit(), GetDyingUnit(), GetLearningHero() и прочие. Это как хэндл родитель агента, юнита, эффекта и прочего. Пруф?

Добавлено (05 Декабрь 2011, 08:19:02)
---------------------------------------------
Точнее хэндл -> агент -> юнит, эффект, молния, трекабл и прочее

Добавлено (05 Декабрь 2011, 08:21:10)
---------------------------------------------
Альтернатива из яваскрипт и jquery: object -> window, document и прочее


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

HexingДата: Понедельник, 05 Декабря 2011, 08:27:58 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, нет, ты не прав.
GetSpellTargetUnit() - съел? нефига это не родитель, и связывать их без соурс кода движка варика я тебе не дам, по крайней мере навязывать ложные доказательства мне.
Ватсон, чтобы раскрыть это дело нам понадобится вся наша дедукция! buba


 

Ty3uKДата: Понедельник, 05 Декабря 2011, 08:31:10 | Сообщение # 22
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я и не сказал, что таргетюнит родитель. Такая же ссылка, как и триггерюнит, и аттакер

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

HexingДата: Понедельник, 05 Декабря 2011, 09:10:01 | Сообщение # 23
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, аттакер не тру - GetEventDamageSource - тру

 

Ty3uKДата: Понедельник, 05 Декабря 2011, 09:44:07 | Сообщение # 24
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Да ну? Смотря какой момент атаки тебе надо отловить- замах или нанесение урона. Замах отлично отлавливать для того, чтобы запретить атаку, ибо при нанесении урона еще придется пополнять здоровье, а это лишнее действие

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

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » EVENT_PLAYER_UNIT_DEATH (Какие случаи "изчезновения" юнита считаются смертью?)
  • Страница 1 из 1
  • 1
Поиск:

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