quq_CCCP, думал насчёт иконок и пришел к тому, что мне не хватит подходящих иконок. Ведь если я поставлю в одном месте иконки, то придётся их везде ставить.
quq_CCCP, только тогда придётся писать базу данных, чтобы знать, какие способности есть у каждого воина. Думаю, лучше их воскресить через "Воскрешение" Паладина, вместо создания нового юнита.
То есть, если в карте будут воины под контролем этих игроков, то при наличии судьи, они перейдут под контроль судьи?
И как понять для ливеров? Воины ливнувшего игрока меняют своего владельца что ли?
Если не ошибаюсь, то при включённом whosyourdaddy GetEventDamage( ) возвращает очень большие значения ( на много больше самого урона ). И чтобы вычислить чит, думаю, нужно проверять полученный урон, если урон очень большой, то значит читы активированы.
Дальше пришла в голову другая идея. Думаю, можно сделать с помощью ремонта зданий Альянса: на месте смерти героя создаётся здание с моделью креста со здоровьем 1/100 ед., а союзные герои ремонтируя крест будут повышать её здоровье, получается некая иллюзия прогресс бара. И если спрятать способность ремонта с помощью функции HideAbilityButton( ) из мемхака, то будет ли она срабатывать при нажатии на ПКМ? Также, как отловить момент полного ремонта здания? С помощью таймера проверять процент здоровья каждые доли секунды?
раскрыть
scope HeroRevive initializer Initialization
struct herorevive
private unit dyingUnit
private unit reincarnate
private real life
private thistype prev
private thistype next
public static constant trigger trig = CreateTrigger( )
public static constant timer period = CreateTimer( )
private static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
if ( GetWidgetLife( this.reincarnate ) > this.life ) then
set this.life = GetWidgetLife( this.reincarnate )
elseif ( GetWidgetLife( this.reincarnate ) >= GetUnitState( this.reincarnate, UNIT_STATE_MAX_LIFE ) ) then
call ReviveHero( this.dyingUnit, GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), true )
call RemoveUnit( this.reincarnate )
set this.reincarnate = null
set this.life = 0.0
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype( 0 ).next == 0 ) then
call PauseTimer( thistype.period )
endif
call thistype.deallocate( this )
elseif ( GetWidgetLife( this.reincarnate ) <= this.life ) then
set this.life = 1.0
call SetWidgetLife( this.reincarnate, this.life )
endif
set this = this.next
endloop
endmethod
public static method actions takes nothing returns nothing
local thistype this = thistype.allocate( )
set this.next = 0
set this.prev = thistype( 0 ).prev
set this.next.prev = this
set this.prev.next = this
set this.dyingUnit = GetDyingUnit( )
set this.reincarnate = CreateUnit( GetOwningPlayer( this.dyingUnit ), 'h003', GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), 0.0 )
set this.life = 1.0
call SetUnitPathing( this.reincarnate, false )
call SetWidgetLife( this.reincarnate, this.life )
if ( this.prev == 0 ) then
call TimerStart( thistype.period, 0.10, true, function thistype.iterate )
endif
endmethod
public static constant method conditions takes nothing returns boolean
return IsUnitType( GetDyingUnit( ), UNIT_TYPE_HERO )
endmethod
endstruct
public function Initialization takes nothing returns nothing
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerAddCondition( herorevive.trig, Condition( function herorevive.conditions ) )
call TriggerAddAction( herorevive.trig, function herorevive.actions )
endfunction
endscope
Вот только если спрятать кнопку через HideAbilityButton( ), то способность ремонта зданий исчезает и не работает через ПКМ.
Ред. scopterectus
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Ред. scopterectus
» WarCraft 3 / Кол-во впитываемого урона
» WarCraft 3 / Кол-во впитываемого урона
» WarCraft 3 / Кол-во впитываемого урона
» WarCraft 3 / Кол-во впитываемого урона
» WarCraft 3 / Как сохранить доп характиристики от книг во время морфа ?
Ред. scopterectus
» WarCraft 3 / Блок урона во время - Юнит Получает Урон
Ред. scopterectus
» WarCraft 3 / Можно ли гальванизированным оставить свои способности?
» WarCraft 3 / Мемхак
» WarCraft 3 / Player( 13 ), Player( 14 )
И как понять для ливеров? Воины ливнувшего игрока меняют своего владельца что ли?
» WarCraft 3 / Что означают первые FF в цветовом коде?
» WarCraft 3 / Что означают первые FF в цветовом коде?
Ред. scopterectus
» WarCraft 3 / Мемхак
Ред. scopterectus
» WarCraft 3 / Радиус атаки башен.
» WarCraft 3 / Как не дать юниту умереть
Ред. scopterectus
» WarCraft 3 / Сопротивление
» WarCraft 3 / Сопротивление
» WarCraft 3 / Почему в GenericUnitEvent отсутствуют некоторые события?
» WarCraft 3 / Воскрешение героев как в ивентах Dota 2
» XGM Конкурсы / Fun Spell Contest 2018
» XGM Конкурсы / Fun Spell Contest 2018
Ред. scopterectus
» WarCraft 3 / MinimapPing
» WarCraft 3 / MinimapPing