Добавлен SamuraiKing
Я написал систему, которая отображает полученный урон. Но т.к. я новичок в этом деле, мне любопытно, можно ли её сделать лучше, чем сейчас, и будет ли такая система лагать со временем?
Код:
Триггер 1
function Trig_AttackSystem_Conditions takes nothing returns boolean
return IsUnitInGroup(GetTriggerUnit(), g) == false
endfunction
function Trig_AttackSystem_Actions takes nothing returns nothing
call GroupAddUnit(g,GetTriggerUnit())
call TriggerRegisterUnitEvent( gg_trg_AttackSystem1, GetTriggerUnit(), EVENT_UNIT_DAMAGED )
endfunction
//===========================================================================
function InitTrig_AttackSystem takes nothing returns nothing
local trigger t = CreateTrigger( )
local integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ATTACKED, null)
set index = index + 1
exitwhen index == 15
endloop
call TriggerAddCondition( t, Condition( function Trig_AttackSystem_Conditions ) )
call TriggerAddAction( t, function Trig_AttackSystem_Actions )
set t = null
endfunction
Триггер 2
function Trig_AttackSystem1_Conditions takes nothing returns boolean
return GetEventDamage() > 0.00
endfunction
function Trig_AttackSystem1_Actions takes nothing returns nothing
local texttag tt = CreateTextTag()
local unit a = GetTriggerUnit()
local integer damage = R2I(GetEventDamage())
call SetTextTagText(tt,I2S(damage),11.00*0.023 / 10)
call SetTextTagPosUnit(tt,a,0.00)
call SetTextTagColor(tt,70,255,70,0)
local real vel = 96.00 * 0.071 / 128
local real xvel = vel * Cos(90 * bj_DEGTORAD)
local real yvel = vel * Sin(90 * bj_DEGTORAD)
call SetTextTagVelocity(tt, xvel, yvel)
call SetTextTagPermanent(tt,false)
call SetTextTagFadepoint(tt,0.01)
call SetTextTagLifespan(tt,1.50)
set tt = null
set a = null
endfunction
//===========================================================================
function InitTrig_AttackSystem1 takes nothing returns nothing
set gg_trg_AttackSystem1 = CreateTrigger()
local trigger t = gg_trg_AttackSystem1
call TriggerAddCondition( t, Condition( function Trig_AttackSystem1_Conditions ) )
call TriggerAddAction( t, function Trig_AttackSystem1_Actions )
set t = null
endfunction
Триггер 3
function Trig_AttackSystem2_Conditions takes nothing returns boolean
return IsUnitInGroup(GetTriggerUnit(),g) == true
endfunction
function Trig_AttackSystem2_Actions takes nothing returns nothing
call GroupRemoveUnit(g,GetTriggerUnit())
endfunction
//===========================================================================
function InitTrig_AttackSystem2 takes nothing returns nothing
local trigger t = CreateTrigger( )
local integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_DEATH, null)
set index = index + 1
exitwhen index == 15
endloop
call TriggerAddCondition( t, Condition( function Trig_AttackSystem2_Conditions ) )
call TriggerAddAction( t, function Trig_AttackSystem2_Actions )
set t = null
endfunction
Принятый ответ
боже
ловить атакованных юнитов это нафиг не нужная жесть
лови юнитов которые входят на карту и добавляй им событие
юнит может войти на карту только однажды(если не извращаться специально) так что лишних срабатываний не будет
и на 1 триггер меньше так как группа не нужна и отлов смерти тоже
в общем смотри статьи и наработки
ловить атакованных юнитов это нафиг не нужная жесть
лови юнитов которые входят на карту и добавляй им событие
юнит может войти на карту только однажды(если не извращаться специально) так что лишних срабатываний не будет
и на 1 триггер меньше так как группа не нужна и отлов смерти тоже
в общем смотри статьи и наработки
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
ловить атакованных юнитов это нафиг не нужная жесть
лови юнитов которые входят на карту и добавляй им событие
юнит может войти на карту только однажды(если не извращаться специально) так что лишних срабатываний не будет
и на 1 триггер меньше так как группа не нужна и отлов смерти тоже
в общем смотри статьи и наработки