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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Помогите пожалуйста с триггером
Помогите пожалуйста с триггером
AkcmДата: Четверг, 07 Июня 2012, 19:52:15 | Сообщение # 1
5 уровень
Группа: Проверенные
Сообщений: 132
Награды: 0
Репутация: 11
Блокировки:
Добрый вечер, у меня вот такая проблема:
Я хочу чтобы после смерти герой воскрешался через "уровень героя * 2" секунды.
я создал триггер, сделал переменную целочисленная, которая равна уровню умершего героя. но в триггере wait, я выбрал арифметика и не могу вместо числа поставить эту переменную, не подскажите почему? и ещё я не очень пока что прошареный, но по идее эта переменная должна будет использоваться много раз,а она случайно не занесёт уровень самого первого мертвяка и будет юзать его всё время ? если да, то подскажите пожалуйста, как это исправить тоже....
 

pomogiДата: Четверг, 07 Июня 2012, 19:55:59 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 7
Блокировки:
скинн триггеры в наработке

 

AkcmДата: Четверг, 07 Июня 2012, 20:07:33 | Сообщение # 3
5 уровень
Группа: Проверенные
Сообщений: 132
Награды: 0
Репутация: 11
Блокировки:
Этого я не умею, но могу написать:
С: Юнит умирает
У: Юнит, которому не повезло - Герой
Д: Set "переменная" = HeroLevel of мертвый юнит

[(ЗДЕСЬ ДОЛЖНО БЫТЬ) wait "переменная" * 2]

Воскресить мёртвого героя, чтобы он продолжил влачить своё жалкое существование
 

pomogiДата: Четверг, 07 Июня 2012, 20:14:56 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 7
Блокировки:
у нас шас света нет гроза надвигается когда свет будет скину наработку!

 

kapa6acvlkДата: Четверг, 07 Июня 2012, 21:12:20 | Сообщение # 5
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
Если на Гуи, можно так: http://s019.radikal.ru/i620/1206/70/df4c36f485e0.png но тут утечка точки, да и вайты лучше не использовать.
Гораздо лучше так:
Code
function ResHero takes nothing returns nothing
     local timer t = GetExpiredTimer()
     local unit u = LoadUnitHandle(udg_Hash,GetHandleId(t),0)
     call ReviveHero( u, GetUnitX(u), GetUnitY(u), true )
     call DestroyTimerDialog(LoadTimerDialogHandle(udg_Hash,GetHandleId(t),1))
     call DestroyTimer(t)
     set t = null
     set u = null
endfunction

function Trig_ResurrectionTime_Conditions takes nothing returns boolean
     return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO)
endfunction

function Trig_ResurrectionTime_Actions takes nothing returns nothing
     local timer t  = CreateTimer()
     local timerdialog td = CreateTimerDialog(t)
     local unit u = GetDyingUnit()
     call SaveUnitHandle(udg_Hash,GetHandleId(t),0,u)
     call SaveTimerDialogHandle(udg_Hash,GetHandleId(t),1,td)
     call TimerDialogSetTitle(td, "Âîçðîæäåíèå")
     call TimerDialogDisplay(td, true)
     call TimerStart(t,GetHeroLevel(u)*2.0,false,function ResHero)
     set t = null
     set u = null
     set td = null
endfunction

//===========================================================================
function InitTrig_ResurrectionTime takes nothing returns nothing
     set gg_trg_ResurrectionTime = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_ResurrectionTime, EVENT_PLAYER_UNIT_DEATH )
     call TriggerAddCondition( gg_trg_ResurrectionTime, Condition( function Trig_ResurrectionTime_Conditions ) )
     call TriggerAddAction( gg_trg_ResurrectionTime, function Trig_ResurrectionTime_Actions )
endfunction


1. Создаешь триггер ResurrectionTime, преобразуешь его в текст, заменяешь текст приведенным выше кодом.
2. Заходишь в редактор переменных создаешь переменную типа Хэш-таблица, с именем Hash
3. создаешь триггер или добавляешь в уже имеющийся триггер инициализации (тот что при загрузке карты срабатывает) строку, через Custom script :
Code
set udg_Hash=InitHashtable()

4. Запускаешь карту проверяешь, задаешь вопросы.



Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна.
© Александр Зорич
 

AkcmДата: Четверг, 07 Июня 2012, 21:59:22 | Сообщение # 6
5 уровень
Группа: Проверенные
Сообщений: 132
Награды: 0
Репутация: 11
Блокировки:
Всё, спасибо большое kapa6acvlk, сделал
 

ExtrematorДата: Четверг, 07 Июня 2012, 22:20:17 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Для справки
Quote (Akcm)
С: Юнит умирает
У: Юнит, которому не повезло - Герой
Д: Set "переменная" = HeroLevel of мертвый юнит

[(ЗДЕСЬ ДОЛЖНО БЫТЬ) wait "переменная" * 2]
Уровень героя может быть 1 2 3 4 5 и т.д. ... это целые числа
Время может быть 1.00 сек 1.5 сек 2.33 сек и т.д. ... это реальные числа

wait (реальное от (уровень героя * 2)) seconds game-time
 

kapa6acvlkДата: Четверг, 07 Июня 2012, 22:36:34 | Сообщение # 8
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
2ALL
Зачем вообще заносить данные в переменную, если они используются один раз? Да и это ведь целое число, утечек не вызывает. Проще сделать сразу.



Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна.
© Александр Зорич
 

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

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