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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Слежка...
Слежка...
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], спасибо большое за участие=))) жаль еще не могу + ставить=)

 

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

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