offline
Опыт:
805
Активность:
|
Помогите исправить код
Способность Meat Hook:
Код карты:
Код:
function SetHandle takes string pTable,string pKey,handle pData returns nothing
call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,H2Ix(pData))
endfunction
function GetInteger takes string pTable,string pKey returns integer
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
endfunction
function FastFlush takes string pTable returns nothing
call FlushStoredMission(udg_gc_DTAX_Core,pTable)
endfunction
function SetInteger takes string pTable,string pKey,integer pData returns nothing
call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,pData)
endfunction
function GetTimer takes string pTable,string pKey returns timer
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetUnit takes string pTable,string pKey returns unit
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
Сам триггер Meat Hook.
Код:
scope MeatHook initializer Init
private function Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A06I'
endfunction
private function Filter takes nothing returns boolean
if(IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE) or GetUnitAbilityLevel(GetFilterUnit(),'A04R')==1)or GetFilterUnit()==udg_u_DTAX_temp then
return false
endif
if GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)<=0 or GetUnitTypeId(GetFilterUnit())=='u00H'or GetUnitTypeId(GetFilterUnit())=='u00F'or IsUnitType(GetFilterUnit(),UNIT_TYPE_ANCIENT) then
return false
endif
return true
endfunction
private function Timer takes nothing returns nothing
local timer ltt=GetExpiredTimer()
local timer lTk=GetTimer(H2Tx(ltt),"ExtendCache")
local string lf5=H2Tx(lTk)
local integer lTK=GetInteger(lf5,"ChainLinkNumber")
local unit lFB=GetUnit(lf5,"Target")
local unit lTl=GetUnit(lf5,"Pudge")
local unit lgl=GetUnit(lf5,"ChainLinks"+I2S(lTK))
if(lFB!=null)then
call SetUnitX(lFB,GetUnitX(lgl))
call SetUnitY(lFB,GetUnitY(lgl))
endif
call RemoveUnit(lgl)
call SetInteger(lf5,"ChainLinkNumber",lTK-1)
if(lTK==1)then
call PauseTimer(ltt)
call FastFlush(lf5)
call FastFlush(H2Tx(ltt))
call PolledWait(1)
call DestroyTimer(ltt)
call DestroyTimer(lTk)
endif
endfunction
private function Main takes nothing returns nothing
local timer ltt=GetExpiredTimer()
local string lf5=H2Tx(ltt)
local integer lTK=GetInteger(lf5,"ChainLinkNumber")
local unit lTl=GetUnit(lf5,"Pudge")
local real lnM=GetReal(lf5,"Angle")
local integer lmZ=GetUnitAbilityLevel(lTl,'A06I')
local unit lgl
local group lEw
local real lxx
local real lyy
local boolexpr lTM
local timer lTn
local string lCache2
if(lTK<5+6*lmZ)then
set lTK=lTK+1
set lxx=GetUnitX(lTl)+lTK*40*Cos(lnM*bj_DEGTORAD)
set lyy=GetUnitY(lTl)+lTK*40*Sin(lnM*bj_DEGTORAD)
set lgl=CreateUnit(GetOwningPlayer(lTl),'u00H',lxx,lyy,lnM)
call SetHandle(lf5,"ChainLinks"+I2S(lTK),lgl)
call SetInteger(lf5,"ChainLinkNumber",lTK)
set lEw=CreateGroup()
set udg_u_DTAX_temp=lTl
set lTM=Condition(function Filter)
call GroupEnumUnitsInRange(lEw,lxx,lyy,'}',lTM)
call DestroyBoolExpr(lTM)
set lgl=FirstOfGroup(lEw)
call DestroyGroup(lEw)
if(lgl!=null)then
call SetHandle(lf5,"Target",lgl)
if IsUnitEnemy(lgl,GetOwningPlayer(lTl))then
call UnitDamageTargetBJ(lTl,lgl,lmZ*100,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_ENHANCED)
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl",lgl,"origin"))
endif
call PauseTimer(ltt)
set lTn=CreateTimer()
call SetHandle(H2Tx(lTn),"ExtendCache",ltt)
call TimerStart(lTn,.03,true,function Timer)
endif
else
call PauseTimer(ltt)
set lTn=CreateTimer()
call SetHandle(H2Tx(lTn),"ExtendCache",ltt)
call TimerStart(lTn,.03,true,function Timer)
endif
endfunction
private function Actions takes nothing returns nothing
local location lTo=GetUnitLoc(GetSpellAbilityUnit())
local location lng=GetSpellTargetLoc()
local timer ltt=CreateTimer()
local unit lTl=GetTriggerUnit()
local real lnM=AngleBetweenPoints(lTo,lng)
local string lf5=H2Tx(ltt)
call SetHandle(lf5,"Pudge",lTl)
call SetReal(lf5,"Angle",lnM)
call TimerStart(ltt,.03,true,function Main)
call RemoveLocation(lTo)
call RemoveLocation(lng)
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function Conditions))
call TriggerAddAction(t,function Actions)
set t = null
endfunction
endscope
Проблема: jngp проверяет и пишет все окей, но карта в варе не запускается. Пожалуйста помогите перевести все в хеш-таблицы.
|