iKrivetko #661 14 октября 2011 а точно циклон не снимает рут? Вроде ж снимает, т.к. дает неуязвимость, а рут диспелится, значит инвул его точно должен снять.0 ms А с тоссом мимо меня проскочило "=1"Старый я стал, видимо. Поделиться сообщением Ссылка на сообщение
smokemsu #662 14 октября 2011 Колличество итераций в тоссе, правильный ответ - 51, но почему? Ведь подсчет идет от 1 до 51, причем этот 51ый шаг обнуляет переменные и снимает паузу. Т.е. 50 итераций. Я прав. // Objects used:// 'A0BZ' = Toss (Stone Giant : Tiny)// 'n00I' = Chicken// 'e01H' = Crow// 'n00L' = Roshan// 'A04R' = Marker (Nether Ward 4,Lightning Bolter,Nether Ward 3,Nether Ward 2,Vengeance Death caster,...)// 'H00F' = Dragon Knight// 'H00E' = Dragon Knight// 'H00G' = Dragon Knight// 'A0CY' = Grow (Stone Giant : Tiny)// 'AEme' = Metamorphosis (Demon Hunter : Shadowsong,Shadowfury,Shadowstalker,Flameseeker,Darkweaver,...) function Trig_Toss_Conditions takes nothing returns boolean if(GetSpellAbilityId()!='A0BZ')then return false endif if GetUnitTypeId(GetSpellTargetUnit())=='n00I'or GetUnitTypeId(GetSpellTargetUnit())=='e01H'then return false endif if(GetOwningPlayer(GetSpellTargetUnit())==GetOwningPlayer(GetTriggerUnit()))then return false endif return trueendfunction function TossFilter takes nothing returns boolean if(IsUnitType(GetFilterUnit(),UNIT_TYPE_ANCIENT))then return false endif if IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE) then return false elseif IsUnitType(GetFilterUnit(),UNIT_TYPE_FLYING) then return false elseif GetFilterUnit()==GetSpellAbilityUnit()then return false elseif IsUnitDeadBJ(GetFilterUnit())then return false elseif IsUnitType(GetTriggerUnit(),UNIT_TYPE_ANCIENT) then return false elseif GetUnitTypeId(GetFilterUnit())=='n00L'then return false elseif IsUnitType(GetTriggerUnit(),UNIT_TYPE_GIANT) then return false elseif IsUnitVisible(GetFilterUnit(),GetOwningPlayer(GetSpellAbilityUnit()))==false then return false elseif GetUnitAbilityLevelSwapped('A04R',GetFilterUnit())!=0 then return false elseif(GetUnitTypeId(GetFilterUnit())=='H00F'or GetUnitTypeId(GetFilterUnit())=='H00E'or GetUnitTypeId(GetFilterUnit())=='H00G')then return false endif return trueendfunction function TossDamage takes unit pWho,real pxx,real pyy,real pAOE,real pDamage,integer pSpellId returns nothing local group lVictims=CreateGroup() local unit lFirst local location lTMP call GroupEnumUnitsInRange(lVictims,pxx,pyy,pAOE,null) loop set lFirst=FirstOfGroup(lVictims) exitwhen lFirst==null if IsUnitEnemy(lFirst,GetOwningPlayer(pWho))and IsUnitDeadBJ(lFirst)==false and GetUnitAbilityLevel(lFirst,'A04R')==0 then if(IsUnitType(lFirst,UNIT_TYPE_STRUCTURE)==false)then call UnitDamageTargetBJ(pWho,lFirst,pDamage,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) else call UnitDamageTargetBJ(pWho,lFirst,pDamage/3,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) endif set lTMP=GetUnitLoc(lFirst) call DestroyEffect(AddSpellEffectByIdLoc(pSpellId,EFFECT_TYPE_CASTER,lTMP)) call DestroyEffect(AddSpellEffectByIdLoc(pSpellId,EFFECT_TYPE_CASTER,lTMP)) call DestroyEffect(AddSpellEffectByIdLoc(pSpellId,EFFECT_TYPE_CASTER,lTMP)) call RemoveLocation(lTMP) call GroupRemoveUnit(lVictims,lFirst) else call GroupRemoveUnit(lVictims,lFirst) endif endloop call GroupClear(lVictims) call DestroyGroup(lVictims)endfunction function TossMain takes nothing returns nothing local timer lMoveTimer=GetExpiredTimer() local string lTable=H2Tx(lMoveTimer) local integer lCount=GetInteger(lTable,"TossCounter") local real lRange=GetReal(lTable,"TossDistance") local real lAngle=GetReal(lTable,"TossAngle") local location lTarget=GetLocation(lTable,"TossTargetLoc") local location lStart=GetLocation(lTable,"TossSourceLoc") local unit lCaster=GetUnit(lTable,"Tiny") local unit lVictim=GetUnit(lTable,"TossSource") local real lHeight=(lCount-25)*(lCount-25) local real lSpeedMod=lRange*lCount/50-lRange local location lDest=PolarProjectionBJ(lTarget,lSpeedMod,lAngle) if(lCount<51)then call SetUnitPositionLoc(lVictim,lDest) call SetUnitFlyHeight(lVictim,775-lHeight,0) set lCount=lCount+1 if(GetRandomInt(1,4)==2)then call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",lVictim,"Abilities\\Spells\\Undead\\Cripple\\CrippleTarget.mdl")) endif endif if(lCount>50)then call SetUnitFlyHeight(lVictim,GetUnitDefaultFlyHeight(lVictim),0) call PauseUnit(lVictim,false) call SetUnitPathing(lVictim,true) call TerrainDeformationRippleBJ(.2,true,lTarget,1.,300.,96.,1,64.) if IsUnitAlly(lVictim,GetOwningPlayer(lCaster))then call UnitDamageTargetBJ(lCaster,lVictim,.2*75*GetUnitAbilityLevel(lCaster,'A0BZ'),ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) else call UnitDamageTargetBJ(lCaster,lVictim,(.2+.15*GetUnitAbilityLevel(lCaster,'A0CY'))*75*GetUnitAbilityLevel(lCaster,'A0BZ'),ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) endif call TossDamage(lCaster,GetLocationX(lTarget),GetLocationY(lTarget),300,75.*I2R(GetUnitAbilityLevelSwapped('A0BZ',lCaster)),'A0BZ') call EnumDestructablesInCircleBJ(300,lTarget,function KillDestructableEnum) call PauseTimer(GetExpiredTimer()) call PolledWait(.01) call FastFlush(lTable) call DestroyTimer(GetExpiredTimer()) call RemoveLocation(lTarget) call RemoveLocation(lStart) endif call SetInteger(lTable,"TossCounter",lCount) call RemoveLocation(lDest)endfunction function Trig_Toss_Actions takes nothing returns nothing local group lNearCaster=CreateGroup() local timer lMoveTimer local unit lCaster=GetTriggerUnit() local unit lVictim local location lTarget local location lStart local integer lCounter local real lRange local real lAngle local string lf5 call GroupEnumUnitsInRange(lNearCaster,GetUnitX(lCaster),GetUnitY(lCaster),275,Condition(function TossFilter)) set lVictim=GroupPickRandomUnit(lNearCaster) call DestroyGroup(lNearCaster) set lTarget=GetUnitLoc(GetSpellTargetUnit()) set lStart=GetUnitLoc(lVictim) set lCounter=1 set lRange=DistanceBetweenPoints(lStart,lTarget) set lAngle=AngleBetweenPoints(lStart,lTarget) if(lVictim!=null and GetUnitTypeId(lVictim)!='n00I'and GetUnitTypeId(lVictim)!='e01H'and GetOwningPlayer(GetSpellTargetUnit())!=GetOwningPlayer(lCaster))then call SetUnitAnimationByIndex(lCaster,4) call PauseUnit(lVictim,true) call SetUnitPathing(lVictim,false) call UnitAddAbility(lVictim,'AEme') call UnitRemoveAbility(lVictim,'AEme') set lMoveTimer=CreateTimer() set lf5=H2Tx(lMoveTimer) call SetHandle(lf5,"Tiny",lCaster) call SetHandle(lf5,"TossSource",lVictim) call SetHandle(lf5,"TossTargetLoc",lTarget) call SetHandle(lf5,"TossSourceLoc",lStart) call SetInteger(lf5,"TossCounter",lCounter) call SetReal(lf5,"TossDistance",lRange) call SetReal(lf5,"TossAngle",lAngle) call TimerStart(lMoveTimer,.02,true,function TossMain) endifendfunction function StartTrigger_Toss takes nothing returns nothing set gg_trg_Toss=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_Toss,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(gg_trg_Toss,Condition(function Trig_Toss_Conditions)) call TriggerAddAction(gg_trg_Toss,function Trig_Toss_Actions)endfunction function InitTrig_Toss takes nothing returns nothingendfunction ^выделил жирным доказательства 50+1 итерация, зависит от того - что называть итерациями Поделиться сообщением Ссылка на сообщение
ItIsNight #663 14 октября 2011 а точно циклон не снимает рут? Вроде ж снимает, т.к. дает неуязвимость, а рут диспелится, значит инвул его точно должен снять.0 ms115 as При чем тут ms? Тип бафа рута - магический (если требуемый уровень рута ниже 6 офк), значит диспелится циклоном. Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
iKrivetko #664 14 октября 2011 а точно циклон не снимает рут? Вроде ж снимает, т.к. дает неуязвимость, а рут диспелится, значит инвул его точно должен снять.0 ms115 as При чем тут ms? Тип бафа рута - магический (если требуемый уровень рута ниже 6 офк), значит диспелится циклоном.Нельзя циклоном таргетить юнитов с 0 ms Поделиться сообщением Ссылка на сообщение
smokemsu #665 14 октября 2011 планируются ли ещё тесты и когда, если не секрет? Поделиться сообщением Ссылка на сообщение
iKrivetko #666 14 октября 2011 планируются ли ещё тесты и когда если не секрет?В соло такое составлять, как видишь, удовольствия мало. Мелкие мб буду составлять. Поделиться сообщением Ссылка на сообщение
smokemsu #667 14 октября 2011 планируются ли ещё тесты и когда если не секрет?В соло такое составлять, как видишь, удовольствия мало. Мелкие мб буду составлять. мб драколич поможет))?, у вас по всем проблемным вопросам ответы отличаются)) //кроме триггер хилов, где неуказан достоверный источник в статье драколича вообщем, все равно спасибо) Поделиться сообщением Ссылка на сообщение
DracoLich #669 14 октября 2011 и че я только ленился гугл открыть если бы ты постил свои посты на спец форумах по исследованию дегенератов, где за каждый дегенеративный пост платят 1 цент, ты бы уже был в десятке форбс Поделиться сообщением Ссылка на сообщение
ItIsNight #670 14 октября 2011 а точно циклон не снимает рут? Вроде ж снимает, т.к. дает неуязвимость, а рут диспелится, значит инвул его точно должен снять.0 ms115 as При чем тут ms? Тип бафа рута - магический (если требуемый уровень рута ниже 6 офк), значит диспелится циклоном.Нельзя циклоном таргетить юнитов с 0 msХммм, это интересно. Что насчет 50 итераций в тоссе? БТВ, "пост лечение" это то же самое триггерное лечение, только не сразу, а с таймером на 0.0 сек, что бы было помещено в очередь выполняемых условий, но после уже выполняемой функции на "unit takes damage". А то, что вы тут обозвали его "пост лечением" и "динамическим" - в открытом коде функция называется "DelayedDamage" (а так же DelayedDamageCheck и DelayedDamageTimer). Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
iKrivetko #671 14 октября 2011 а точно циклон не снимает рут? Вроде ж снимает, т.к. дает неуязвимость, а рут диспелится, значит инвул его точно должен снять.0 ms115 as При чем тут ms? Тип бафа рута - магический (если требуемый уровень рута ниже 6 офк), значит диспелится циклоном.Нельзя циклоном таргетить юнитов с 0 msХммм, это интересно. Что насчет 50 итераций в тоссе?Выше написал :\ Надо было про DAMAGE_TYPE_DEMOLITION какой-нибудь вопрос сделать. Уж больно грозно звучит. Поделиться сообщением Ссылка на сообщение
ItIsNight #672 14 октября 2011 интересно. Что насчет 50 итераций в тоссе?Выше написал :\ну так 50 итераций, т.к. функция вызывается 50 раз. Использование другой функции не считается, т.к. она не повторяется. Для тех кто не понял: в течении 49 вызовов функции счетчик возрастает с 1 до 50, в 50ый вызов счетчик накидывает до 51 и проходит условие в следующем ветвлении - завершется. Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
ItIsNight #674 14 октября 2011 Кстати, откуда код?o_Oу меня есть открытая 6.41 версия с кодом, рассортированным по папочкам я же меп-мейкер с xgm.ru, у меня такое должно быть Еще вопросы:пурж убивает вызванных существ мгновенно. Правильный ответ - нет. Почему?Подразумевается дефолтный Purge в Diffusual Blade или любой пурж вообще?Под убийством "мгновенно" подразумевается то, что урон будет нанесен мгновенно заклинанием или то, что пурж пробивает все резисты у самонов?Считается ли медведь сулабира самоном? Считаются ли варды самонами? И про винд-волки я уже спрашивал - я насчитал 19 абилок с родителем AOwk (тот самый WW блейда) Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
iKrivetko #675 15 октября 2011 То-то я смотрю. Вроде и то, а вроде и хуйня какая-то. ты ведь в курсе, что в .54 (вроде) он переделке подвергался? function Func2210 takes unit loc_unit01 returns unit local unit loc_unit02=null local group loc_group01=Func0030() call GroupEnumUnitsInRange(loc_group01,GetUnitX(loc_unit01),GetUnitY(loc_unit01),275,Condition(function Func2209)) call GroupRemoveUnit(loc_group01,loc_unit01) set loc_unit02=GroupPickRandomUnit(loc_group01) call Func0029(loc_group01) set unit124=loc_unit02 set loc_unit02=null set loc_group01=null return unit124endfunction function Func2211 takes nothing returns boolean local trigger loc_trigger01=GetTriggeringTrigger() local integer loc_integer01=GetHandleId(loc_trigger01) local integer loc_integer02=GetTriggerEvalCount(loc_trigger01) local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integer01),(14))) local unit loc_unit02=(LoadUnitHandle(hashtable001,(loc_integer01),(2))) local integer loc_integer03=(LoadInteger(hashtable001,(loc_integer01),(30))) local unit loc_unit03=Func0022(loc_integer03) local real loc_real01=(LoadReal(hashtable001,(loc_integer01),(282))) local real loc_real02=(LoadReal(hashtable001,(loc_integer01),(283))) local real loc_real03=GetUnitX(loc_unit02) local real loc_real04=GetUnitY(loc_unit02) local real loc_real05=GetUnitX(loc_unit03) local real loc_real06=GetUnitY(loc_unit03) local real loc_real07 local real loc_real08 local real loc_real09 local real loc_real10 local real loc_real11 local real loc_real12 local location loc_location01 if Func0139(loc_real01,loc_real02,loc_real05,loc_real06)>1000 then set loc_real05=loc_real01 set loc_real06=loc_real02 endif set loc_real07=Func0157(loc_real03,loc_real04,loc_real05,loc_real06) set loc_real08=Func0139(loc_real03,loc_real04,loc_real05,loc_real06) set loc_real09=loc_real08/IMaxBJ((51-loc_integer02),1) set loc_real10=(loc_integer02-25)*(loc_integer02-25) set loc_real11=loc_real03+loc_real09*Cos(loc_real07*bj_DEGTORAD) set loc_real12=loc_real04+loc_real09*Sin(loc_real07*bj_DEGTORAD) if loc_integer02<51 then if Func0096(loc_unit02)==false then call SetUnitFlyHeight(loc_unit02,775-loc_real10,0) endif call SetUnitPosition(loc_unit02,loc_real11,loc_real12) else if Func0096(loc_unit02)==false then call SetUnitFlyHeight(loc_unit02,GetUnitDefaultFlyHeight(loc_unit02),0) endif call PauseUnit(loc_unit02,false) call SetUnitPathing(loc_unit02,true) call SetUnitPosition(loc_unit02,loc_real05,loc_real06) call SaveInteger(hashtable001,(GetHandleId((loc_unit02))),((4268)),(2)) set loc_location01=Location(loc_real05,loc_real06) call TerrainDeformationRippleBJ(0.2,true,loc_location01,1.00,300.00,96.00,1,64.00) call RemoveLocation(loc_location01) call DestroyEffect((LoadEffectHandle(hashtable001,(loc_integer01),(32)))) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl",GetUnitX(loc_unit02),GetUnitY(loc_unit02))) if IsUnitAlly(loc_unit02,GetOwningPlayer(loc_unit01))then else if(Func0348((loc_unit01),integers083[integer335])!=null)then call Func0107(loc_unit01,loc_unit02,1,(0.2+0.15*(GetUnitAbilityLevel(loc_unit01,'A0CY')+1))*75*GetUnitAbilityLevel(loc_unit01,'A0BZ')) else call Func0107(loc_unit01,loc_unit02,1,(0.2+0.15*GetUnitAbilityLevel(loc_unit01,'A0CY'))*75*GetUnitAbilityLevel(loc_unit01,'A0BZ')) endif endif call Func0168(loc_real05,loc_real06,300) call Func2208(loc_unit01,loc_real05,loc_real06,300,75*GetUnitAbilityLevel(loc_unit01,'A0BZ')) call Func0021(loc_integer03) call FlushChildHashtable(hashtable001,(loc_integer01)) call Func0035(loc_trigger01) endif set loc_trigger01=null set loc_unit01=null set loc_unit02=null set loc_unit03=null set loc_location01=null return falseendfunction function Func2212 takes nothing returns nothing local unit loc_unit01=GetTriggerUnit() local unit loc_unit02=unit292 local unit loc_unit03=GetSpellTargetUnit() local trigger loc_trigger01=CreateTrigger() local integer loc_integer01=GetHandleId(loc_trigger01) call SetUnitAnimationByIndex(loc_unit01,4) call PauseUnit(loc_unit02,true) call SetUnitPathing(loc_unit02,false) if Func0096(loc_unit02)==false then call Func0179(loc_unit02,'Amrf') call UnitRemoveAbility(loc_unit02,'Amrf') endif call SaveInteger(hashtable001,(GetHandleId((loc_unit02))),((4268)),(1)) call SaveUnitHandle(hashtable001,(loc_integer01),(14),(loc_unit01)) call SaveUnitHandle(hashtable001,(loc_integer01),(2),(loc_unit02)) call SaveInteger(hashtable001,(loc_integer01),(30),(Func0024(loc_unit03))) call SaveEffectHandle(hashtable001,(loc_integer01),(32),(AddSpecialEffectTarget("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",loc_unit02,"origin"))) call SaveReal(hashtable001,(loc_integer01),(282),((GetUnitX(loc_unit03))*1.0)) call SaveReal(hashtable001,(loc_integer01),(283),((GetUnitY(loc_unit03))*1.0)) call TriggerRegisterTimerEvent(loc_trigger01,0.02,true) call TriggerAddCondition(loc_trigger01,Condition(function Func2211)) set loc_unit01=null set loc_unit02=null set loc_unit03=null set loc_trigger01=nullendfunction function Func2213 takes nothing returns nothing local unit loc_unit01=GetTriggerUnit() local unit loc_unit02=Func2210(loc_unit01) local unit loc_unit03=GetSpellTargetUnit() set unit292=loc_unit02 if loc_unit02==null then call Func0115(loc_unit01) call Func0112(GetOwningPlayer(loc_unit01),GetObjectName('n0DA')) elseif GetOwningPlayer(loc_unit03)==GetOwningPlayer(loc_unit01)then call Func0115(loc_unit01) call Func0112(GetOwningPlayer(loc_unit01),GetObjectName('n0CY')) endif set loc_unit01=null set loc_unit02=null set loc_unit03=nullendfunction function Func2214 takes nothing returns boolean if GetSpellAbilityId()=='A0BZ' then if GetTriggerEventId()==EVENT_PLAYER_UNIT_SPELL_CAST then call Func2213() else call Func2212() endif endif return falseendfunction function Func2215 takes nothing returns nothing local trigger loc_trigger01=CreateTrigger() call Func0164(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_CAST) call Func0164(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(loc_trigger01,Condition(function Func2214)) set loc_trigger01=nullendfunction Любой пурж. Они все не убивают мгновенно, собственно, просто наносят урон.Насчет ww - подразумевались те, которые используются. В случаях, когда вопрос был о устаревших и проч. - это указывалось. Поделиться сообщением Ссылка на сообщение
ItIsNight #676 15 октября 2011 Вот триггер Berserker's Call Акса - 5 локальных переменных в функциях заклинания. Objects used // Objects used:// 'A0C7' = Berserker's Call (Axe : Mogul Kahn)// 'BHwe' = Berserker's Call// 'B008' = Shackles// 'Bcyc' = Cyclone// 'e00E' = Spellcaster// 'A0E1' = Berserker's Call effect Trig_Berserker_Call_Conditions function Trig_Berserker_Call_Conditions takes nothing returns boolean if(not(GetSpellAbilityId()=='A0C7'))then return false endif return trueendfunction Berserker_Call_Buff function Berserker_Call_Buff takes nothing returns boolean return GetUnitAbilityLevel(GetTriggerUnit(),'BHwe')>0endfunction Berserker_Call_Aim function Berserker_Call_Aim takes nothing returns nothing local unit lMy=GetUnit(H2Tx(GetTriggeringTrigger()),"Axe") if GetUnitState(lMy,UNIT_STATE_LIFE)>0 then call DisableTrigger(GetTriggeringTrigger()) call IssueTargetOrderById(GetTriggerUnit(),OrderId("attack"),lMy) call EnableTrigger(GetTriggeringTrigger()) endifendfunction Berserker_Call_OrderFilter function Berserker_Call_OrderFilter takes nothing returns boolean if(UnitHasBuffBJ(GetFilterUnit(),'BHwe'))then if((UnitHasBuffBJ(GetFilterUnit(),'B008')==false)or(UnitHasBuffBJ(GetFilterUnit(),'Bcyc')==false))then if IsUnitPaused(GetFilterUnit())==false then return true endif endif endif return falseendfunction Berserker_Call_Caster function Berserker_Call_Caster takes nothing returns nothing call IssueTargetOrderById(GetEnumUnit(),OrderId("attack"),udg_u_DTAX_temp)endfunction Berserker_Call_CreepVictim function Berserker_Call_CreepVictim takes nothing returns boolean return GetBooleanAnd((UnitHasBuffBJ(GetFilterUnit(),'BHwe')),GetOwningPlayer(GetFilterUnit())==udg_pA_DTAX_SEPlayers[0]or GetOwningPlayer(GetFilterUnit())==udg_pA_DTAX_SCPlayers[0])endfunction Berserker_Call_CreepAttack function Berserker_Call_CreepAttack takes nothing returns nothing if(GetOwningPlayer(GetEnumUnit())==udg_pA_DTAX_SEPlayers[0])then call UnitRemoveAbility(GetEnumUnit(),'BHwe') call IssuePointOrderByIdLoc(GetEnumUnit(),OrderId("attack"),GetRectCenter(gg_rct_TheFrozenThroneRect)) endif if(GetOwningPlayer(GetEnumUnit())==udg_pA_DTAX_SCPlayers[0])then call UnitRemoveAbility(GetEnumUnit(),'BHwe') call IssuePointOrderByIdLoc(GetEnumUnit(),OrderId("attack"),GetRectCenter(gg_rct_TheWorldTreeRect)) endifendfunction Trig_Berserker_Call_Actions function Trig_Berserker_Call_Actions takes nothing returns nothing local location liD=GetUnitLoc(GetTriggerUnit()) local group lEw local trigger ltt=CreateTrigger() local unit lrs=GetSpellAbilityUnit() call SetHandle(H2Tx(ltt),"Axe",GetTriggerUnit()) call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER) call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER) call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_ISSUED_ORDER) call TriggerAddCondition(ltt,Condition(function Berserker_Call_Buff)) call TriggerAddAction(ltt,function Berserker_Call_Aim) call PolledWait(.2) call CreateNUnitsAtLocFacingLocBJ(1,'e00E',GetOwningPlayer(GetTriggerUnit()),liD,liD) call RemoveLocation(liD) call UnitAddAbility(bj_lastCreatedUnit,'A0E1') call SetUnitAbilityLevelSwapped('A0E1',bj_lastCreatedUnit,GetUnitAbilityLevel(lrs,'A0C7')) call IssueTargetOrderById(bj_lastCreatedUnit,OrderId("innerfire"),GetTriggerUnit()) set liD=GetUnitLoc(lrs) set lEw=GetUnitsInRangeOfLocMatching(550.,liD,Condition(function Berserker_Call_OrderFilter)) set udg_u_DTAX_temp=lrs call ForGroupBJ(lEw,function Berserker_Call_Caster) call RemoveLocation(liD) call DestroyGroup(lEw) call PolledWait(1+.5*GetUnitAbilityLevel(lrs,'A0C7')) set lEw=GetUnitsInRectMatching(bj_mapInitialPlayableArea,Condition(function Berserker_Call_CreepVictim)) call ForGroupBJ(lEw,function Berserker_Call_CreepAttack) call DestroyGroup(lEw) call FastFlush(H2Tx(ltt)) call TriggerClearActions(ltt) call DestroyTriggerEx(ltt)endfunction создает триггер из функций function StartTrigger_Berserker_Call takes nothing returns nothing set gg_trg_Berserker_Call=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_Berserker_Call,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(gg_trg_Berserker_Call,Condition(function Trig_Berserker_Call_Conditions)) call TriggerAddAction(gg_trg_Berserker_Call,function Trig_Berserker_Call_Actions)endfunction function InitTrig_Berserker_Call takes nothing returns nothingendfunction Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
ItIsNight #677 15 октября 2011 То-то я смотрю. Вроде и то, а вроде и хуйня какая-то. ты ведь в курсе, что в .54 (вроде) он переделке подвергался?Это все фигня, до 1.24б (вроде) в варике была дыра и был в какой-то момент был найден баг, названный Return Bag (позволял возвращать любые объекты как число), на основе которого была создана система SCV - Super Custom Value, на ней держалось 90% карт, созданных в варике (в том числе дота). Но потом близы запатчили дыру, но взамен создали систему хэш-таблиц. Механика такая же, разве что пришлось код слегка видоизменить. Если интересно - Return Bag функции: hiddenfunction H2Ix takes handle pTarg returns integer return pTarg return 0endfunction function H2Tx takes handle pTarg returns string return I2S(H2Ix(pTarg))endfunction function FastFlush takes string pTable returns nothing call FlushStoredMission(udg_gc_DTAX_Core,pTable)endfunction function SetHandle takes string pTable,string pKey,handle pData returns nothing call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,H2Ix(pData))endfunction function SetInteger takes string pTable,string pKey,integer pData returns nothing call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,pData)endfunction function SetReal takes string pTable,string pKey,real pData returns nothing call StoreReal(udg_gc_DTAX_Core,pTable,pKey,pData)endfunction function SetBoolean takes string pTable,string pKey,boolean pData returns nothing call StoreBoolean(udg_gc_DTAX_Core,pTable,pKey,pData)endfunction function GetUnit takes string pTable,string pKey returns unit return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetPlayer takes string pTable,string pKey returns player return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetTimer takes string pTable,string pKey returns timer return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetTrigger takes string pTable,string pKey returns trigger return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetGroup takes string pTable,string pKey returns group return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetFX takes string pTable,string pKey returns effect return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetLocation takes string pTable,string pKey returns location return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey) return nullendfunction function GetInteger takes string pTable,string pKey returns integer return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)endfunction function GetReal takes string pTable,string pKey returns real return GetStoredReal(udg_gc_DTAX_Core,pTable,pKey)endfunction function GetBoolean takes string pTable,string pKey returns boolean return GetStoredBoolean(udg_gc_DTAX_Core,pTable,pKey)endfunction Насчет ww - подразумевались те, которые используются. В случаях, когда вопрос был о устаревших и проч. - это указывалось.Блин, это плохо, на пальцах считать долго D: Вообще что я так всполошился? Тест хороший и интересный, но я не попал в топ 5 и кровь просто кипит Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
FreezingEFL #678 15 октября 2011 Выложите кто-то тест или пришлите в пм....Интересно ведь...(Не успел зарегиться) Nitinur in vetitum semper, cupimusque negata--------------------------------------------DreamSend me a signTurn back the сlockGive me some timeI need to break outAnd make a new nameLet's open our eyesTo the brand new dayIt's a brand new day------------------------------------------- Поделиться сообщением Ссылка на сообщение
ItIsNight #679 15 октября 2011 http://rghost.net/25515761Pass: avatossnebug Nite's Dungeon Arena beta 0.8 - экшн-арена, напоминает BLC. Ждите 1.0 релиза, вдруг скоро сделаю Поделиться сообщением Ссылка на сообщение
SailorMoon #680 15 октября 2011 Какой ещё нахуй драколич :avtorklif: Поделиться сообщением Ссылка на сообщение