|
|
|
|
Слежка...
|
|
DarkVader | Дата: Понедельник, 25 Октября 2010, 01:48:56 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| Вопрос такой: Как отследить урон наносимый всеми героями на карте например в течении 5 сек и выбрать максимальный? Пример желательно на Jass.
|
|
|
|
[san9] | Дата: Понедельник, 25 Октября 2010, 02:19:36 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Создай следущие переменные Dmg - реальная массив 2 Hash - хзш таблица Code //TESH.scrollpos=-1 //TESH.alwaysfold=0 function Trig_Dmg_RmvTrg takes nothing returns nothing local timer Tmr = GetExpiredTimer() local trigger Trg = LoadTriggerHandle(udg_Hash, GetHandleId(Tmr), 1) call FlushChildHashtable(udg_Hash, GetHandleId(Tmr)) call DestroyTimer(Tmr) set Tmr = null call DestroyTrigger(Trg) set Trg = null endfunction
function Trig_Dmg_TakeDmg takes nothing returns nothing local trigger Trg = GetTriggeringTrigger() set udg_Dmg[1] = GetEventDamage() if (udg_Dmg[1] > udg_Dmg[2]) then set udg_Dmg[2] = udg_Dmg[1] endif call DestroyTrigger(Trg) set Trg = null endfunction
function Trig_Dmg_TakeAttack takes nothing returns nothing local trigger Trg = CreateTrigger() local timer Tmr = CreateTimer() call TriggerRegisterUnitEvent(Trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED) call TriggerAddAction(Trg, function Trig_Dmg_TakeDmg) call SaveTriggerHandle(udg_Hash, GetHandleId(Tmr), 1, Trg) call TimerStart(Tmr, 7, false, function Trig_Dmg_RmvTrg) set Trg = null set Tmr = null endfunction
//=========================================================================== function InitTrig_Dmg takes nothing returns nothing set gg_trg_Dmg = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Dmg, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_Dmg, function Trig_Dmg_TakeAttack ) endfunction Потом оброщаемся к Dmg[2]
|
|
|
|
DarkVader | Дата: Понедельник, 25 Октября 2010, 03:51:34 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| Хм не совсем то что нужно=))) Но идею я разовью для конкретной цели=)))) Спасибо большое=) + Вопрос: EVENT_UNIT_DAMAGED учитывает и нанесенный от спелов урон?( наверно тупой вопрос=))) но все же...)
|
|
|
|
[san9] | Дата: Понедельник, 25 Октября 2010, 07:44:11 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (DarkVader) + Вопрос: EVENT_UNIT_DAMAGED учитывает и нанесенный от спелов урон?( наверно тупой вопрос=))) но все же...) Конечно учитывает. Quote (DarkVader) Хм не совсем то что нужно=))) А что тебе надо?) Quote (DarkVader) Как отследить урон наносимый всеми героями на карте например в течении 5 сек и выбрать максимальный? Тут тебе надо поставить проверку на героя и всё.Будет записан самый высокий урон.
|
|
|
|
DarkVader | Дата: Понедельник, 25 Октября 2010, 15:44:18 | Сообщение # 5 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| Quote (|san9|) А что тебе надо?) Хочу написать что то вроде ИИ для босса=)))
|
|
|
|
[san9] | Дата: Понедельник, 25 Октября 2010, 16:15:54 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (DarkVader) Хочу написать что то вроде ИИ для босса=))) Тебе надо занести юнита,каторый нанёс самый сильный дмг?
|
|
|
|
DarkVader | Дата: Понедельник, 25 Октября 2010, 16:19:11 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| Quote (|san9|) Тебе надо занести юнита,каторый нанёс самый сильный дмг? Да и определить владельца юнита.
|
|
|
|
[san9] | Дата: Понедельник, 25 Октября 2010, 16:32:12 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (DarkVader) Да и определить владельца юнита. Пффф в чём проблема? Создай ещё 1 переменную udg_DmgUnit массив 2 и Code //TESH.scrollpos=-1 //TESH.alwaysfold=0 function Trig_Dmg_RmvTrg takes nothing returns nothing local timer Tmr = GetExpiredTimer() local trigger Trg = LoadTriggerHandle(udg_Hash, GetHandleId(Tmr), 1) call FlushChildHashtable(udg_Hash, GetHandleId(Tmr)) call DestroyTimer(Tmr) set Tmr = null call DestroyTrigger(Trg) set Trg = null endfunction
function Trig_Dmg_TakeDmg takes nothing returns nothing local trigger Trg = GetTriggeringTrigger() set udg_Dmg[1] = GetEventDamage() set udg_DmgUnit[1] = GetEventDamageSource() if (udg_Dmg[1] > udg_Dmg[2]) then set udg_Dmg[2] = udg_Dmg[1] set udg_DmgUnit[2] = udg_DmgUnit[1] endif // EndTestComands call DestroyTrigger(Trg) set Trg = null endfunction
function Trig_Dmg_TakeAttack takes nothing returns nothing local trigger Trg = CreateTrigger() local timer Tmr = CreateTimer() call TriggerRegisterUnitEvent(Trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED) call TriggerAddAction(Trg, function Trig_Dmg_TakeDmg) call SaveTriggerHandle(udg_Hash, GetHandleId(Tmr), 1, Trg) call TimerStart(Tmr, 7, false, function Trig_Dmg_RmvTrg) set Trg = null set Tmr = null endfunction
//=========================================================================== function InitTrig_Dmg takes nothing returns nothing set gg_trg_Dmg = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Dmg, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_Dmg, function Trig_Dmg_TakeAttack ) endfunction Но лучше конечно юнитов и реальную в хэш ещё записывать.
|
|
|
|
DarkVader | Дата: Понедельник, 25 Октября 2010, 16:46:31 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| [san9], спасибо=)))) вечерком начну делать и разберу все подробно если вопросы появятся еще напишу=))))) Добавлено (25-10-2010, 16:46) --------------------------------------------- и еще почему такой триг не робит? Code function Trig_AgrPointUp_Actions takes nothing returns nothing local unit damager = GetEventDamageSource() local integer i = GetConvertedPlayerId(GetOwningPlayer(damager)) set udg_DMG[i] = udg_DMG[i] + GetEventDamage() set damager = null endfunction
//=========================================================================== function InitTrig_AgrPointUp takes nothing returns nothing set gg_trg_AgrPointUp = CreateTrigger( ) call TriggerRegisterUnitEvent( gg_trg_AgrPointUp, udg_BOSS, EVENT_UNIT_DAMAGED ) call TriggerAddAction( gg_trg_AgrPointUp, function Trig_AgrPointUp_Actions ) endfunction
|
|
|
|
Omni174 | Дата: Понедельник, 25 Октября 2010, 16:47:30 | Сообщение # 10 |
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
| ну это вроде еще на GUI можно сделать
|
|
|
|
DarkVader | Дата: Вторник, 26 Октября 2010, 00:53:17 | Сообщение # 11 |
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
| Quote (Omni174) ну это вроде еще на GUI можно сделать Мб и можно, но не нужно=) Я полностью перешел на Jass, а гуи в редких случаях=) Добавлено (26-10-2010, 00:53) --------------------------------------------- Все с системой разобрался=))) [san9], спасибо большое за участие=))) жаль еще не могу + ставить=)
|
|
|
|
|
|
|
|
|
|
|