offline
Опыт:
8,449
Активность:
|
Помогите вылечить ошибку при сохранении карты
дайте плиз вотето.. либоя слепой либо там нету этого.
#
Q - Как запретить редактору выключать триггеры в результате ошибок?
A - К сожалению, система защиты от глюков так просто не сдается, можно добавить некоторую строку, например "//" в секцию custom script карты или воспользоваться специальной утилитой, которая лечит это.
Сама утилита прикреплена в это сообщение под именем "vwe".
sleepw добавил:
всё сори нашёл.. но неплохо былобы до удобности поместить ссылку в гайд.. ато я ели додумался=\
sleepw добавил:
хелп
» script
Код:
scope MysticNet
globals
private constant integer SpellId='A00S'
private constant string LightningType="LEAS"
private constant integer BuffSpellId='A00T'
private constant string BuffOrder="berserk"
private rect MaxArea=null
private constant real MissileFlyHeight=60.00
private constant real MaxMissileDistance=750.00
private constant real MissileSpeed=20.00
private constant real TargetSpeed=15.00
private constant real Periodic=0.03
private constant real MissileCollision=90.00
private constant real StopTargetRange=120.00
private constant real lightningZ=45.00
private constant real DeformationRange=200.00
private constant string Code="MysticNet_SaveCodeString"
private constant integer DummyId='e000'
private constant string MissileGFXPath="Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl"
private constant string MissileGFXAttach="origin"
private constant string MissGFXPath="Abilities\\Spells\\Orc\\Disenchant\\DisenchantSpecialArt.mdl"
private constant string MissGFXAttach="origin"
private constant string HitGFXPath="Abilities\\Spells\\Human\\AerialShackles\\AerialShacklesTarget.mdl"
private constant string HitGFXAttach="origin"
private constant string GroundHitGFXPath="Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl"
private constant string GroundNetGFXPath="Abilities\\Weapons\\DemolisherFireMissile\\DemolisherFireMissile.mdl"
private constant string ReactHitGFXPath="Abilities\\Spells\\NightElf\\BattleRoar\\RoarCaster.mdl"
private constant string ReactHitGFXAttach="origin"
private constant string ReactMissGFXPath="Abilities\\Spells\\NightElf\\Taunt\\TauntCaster.mdl"
private constant string ReactMissGFXAttach="origin"
private constant real maxHigh=500.00
endglobals
private constant function MaxFlyHeight takes real distance returns real
return distance*1.1
endfunction
private constant function DamagePerLevel takes real lvl returns real
return 20+60*lvl
endfunction
function Trig_Mystic_Net_Conditions takes nothing returns boolean
return GetSpellAbilityId()==SpellId
endfunction
private struct MNdat_Throw
real x
real y
real z
real ux
real uy
real endh
real temptime
real distance
real angle
unit caster
unit target
unit GFXdummy
effect GFX
boolean hit
lightning rope
endstruct
private function MysticNet_Hit takes nothing returns nothing
local timer t =GetExpiredTimer()
local MNdat_Throw datas =GetStoredInteger(GC(),HS(t),"datas")
local real x =GetUnitX(datas.target)
local real y =GetUnitY(datas.target)
local real cx
local real cy
local real angle
local real time =datas.distance/TargetSpeed*Periodic
local real curv
if time>=datas.temptime and GetUnitState(datas.caster,UNIT_STATE_LIFE)>0.00 then
set cx=GetUnitX(datas.caster)
set cy=GetUnitY(datas.caster)
set angle=A2PXY(x,y,cx,cy)
set curv=GetFlyParabelEx(datas.x,datas.y,GetUnitDefaultFlyHeight(datas.target),time, datas.temptime,datas.endh,TargetSpeed,x,y,datas.ux,datas.uy)
set datas.temptime=datas.temptime+Periodic
set x=x+TargetSpeed*Cos(angle*3.14159/180)
set y=y+TargetSpeed*Sin(angle*3.14159/180)
call MoveLightningEx(datas.rope,true,cx,cy,MissileFlyHeight+CreateZ(x,y),x,y,curv+lig htningZ+CreateZ(x,y))
call SetUnitPosition(datas.target,x,y)
call BugUse_AddFlyAbility(datas.target)
call SetUnitFlyHeight(datas.target,curv,0)
call TimerStart(t,Periodic,false,function MysticNet_Hit)
set t=null
else
call UnitDamageTarget(datas.caster,datas.target,DamagePerLevel(I2R(GetUnitAbilityLeve l(datas.caster,SpellId))),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPO N_TYPE_WHOKNOWS)
call UnitAddAbility(datas.target,BuffSpellId)
call IssueImmediateOrder(datas.target,BuffOrder)
call UnitRemoveAbility(datas.target,BuffSpellId)
call TerrainDeformationRippleXY(1,false,x,y,0,DeformationRange,90,0.5,200)
call DestroyEffect(AddSpecialEffect(GroundHitGFXPath,x,y))
call DestroyEffect(AddSpecialEffect(GroundNetGFXPath,x,y))
call BugUse_AddFlyAbility(datas.target)
call SetUnitFlyHeight(datas.target,GetUnitDefaultFlyHeight(datas.target),300)
call DestroyEffect(datas.GFX)
call DestroyLightning(datas.rope)
call MNdat_Throw.destroy(datas)
call FlushStoredMission(GC(),HS(t))
call AB_DestroyTimer(t)
endif
endfunction
private function MysticNet_Miss takes nothing returns nothing
local timer t =GetExpiredTimer()
local MNdat_Throw datas =GetStoredInteger(GC(),HS(t),"datas")
if datas.distance>0 then
set datas.ux=datas.ux+MissileSpeed*Cos(datas.angle*3.14159/180)
set datas.uy=datas.uy+MissileSpeed*Sin(datas.angle*3.14159/180)
set datas.distance=datas.distance-MissileSpeed
call MoveLightningEx(datas.rope,true,datas.ux,datas.uy,datas.z,datas.x,datas.y,datas. z)
call DestroyEffect(datas.GFX)
set datas.GFX=AddSpecialEffectTarget(MissGFXPath,datas.GFXdummy,MissGFXAttach)
call TimerStart(t,Periodic,false,function MysticNet_Miss)
set t=null
else
call DestroyEffect(datas.GFX)
call RemoveUnit(datas.GFXdummy)
call DestroyLightning(datas.rope)
call MNdat_Throw.destroy(datas)
call FlushStoredMission(GC(),HS(t))
call AB_DestroyTimer(t)
endif
endfunction
private function MysticNet_Collision takes nothing returns nothing
local MNdat_Throw datas =GetStoredInteger(GC(),Code,"datas")
local unit u =GetEnumUnit()
if IsUnitNotImmun(datas.caster,u) then
set datas.target=GetEnumUnit()
set datas.hit=true
endif
set u=null
endfunction
private function MysticNet_MissileMotion takes nothing returns nothing
local timer t =GetExpiredTimer()
local MNdat_Throw datas =GetStoredInteger(GC(),HS(t),"datas")
local real x =GetUnitX(datas.caster)
local real y =GetUnitY(datas.caster)
local real angle =A2PXY(x,y,datas.ux,datas.uy)
local real z
local group g
set datas.x=datas.x+MissileSpeed*Cos(angle*3.14159/180)
set datas.y=datas.y+MissileSpeed*Sin(angle*3.14159/180)
set datas.distance=D2PXY(datas.x,datas.y,x,y)
set z=CreateZ(datas.x,datas.y)
call MoveLightningEx(datas.rope,true,x,y,datas.z,datas.x,datas.y,datas.z)
call BugUse_AddFlyAbility(datas.GFXdummy)
call SetUnitFlyHeight(datas.GFXdummy,datas.z-z,0)
call SetUnitX(datas.GFXdummy,datas.x)
call SetUnitY(datas.GFXdummy,datas.y)
call SetUnitFacing(datas.GFXdummy,angle)
set g=GetUnitsInRange(MissileCollision,datas.x,datas.y,null,true)
call StoreInteger(GC(),Code,"datas",datas)
call ForGroup(g,function MysticNet_Collision)
call FlushStoredMission(GC(),Code)
call AB_DestroyGroup(g)
if z>=datas.z or datas.distance>=MaxMissileDistance or not RectContainsCoords(MaxArea,datas.x,datas.y) or GetUnitState(datas.caster,UNIT_STATE_LIFE)<=0.00 or CountDestructableInRangeOfXY(datas.x,datas.y,MissileCollision)>0 then
//Miss Init
call DestroyEffect(datas.GFX)
set datas.ux=x
set datas.uy=y
set datas.angle=A2PXY(x,y,datas.x,datas.y)
set datas.GFX=AddSpecialEffectTarget(MissGFXPath,datas.GFXdummy,MissGFXAttach)
call DestroyEffect(AddSpecialEffectTarget(ReactMissGFXPath,datas.caster,ReactMissGFXA ttach))
call BugUse_AddFlyAbility(datas.GFXdummy)
call SetUnitFlyHeight(datas.GFXdummy,datas.z-z,0)
call SetUnitX(datas.GFXdummy,datas.x)
call SetUnitY(datas.GFXdummy,datas.y)
call TimerStart(t,Periodic,false,function MysticNet_Miss)
else
if datas.hit then
//Hit Init
call RemoveUnit(datas.GFXdummy)
call DestroyEffect(datas.GFX)
set datas.temptime=0
set datas.x=GetUnitX(datas.target)
set datas.y=GetUnitY(datas.target)
set datas.ux=x+StopTargetRange*Cos(angle*3.14159/180)
set datas.uy=y+StopTargetRange*Sin(angle*3.14159/180)
set datas.distance=D2PXY(datas.x,datas.y,datas.ux,datas.uy)
set datas.endh=MaxFlyHeight(datas.distance)
set datas.GFX=AddSpecialEffectTarget(HitGFXPath,datas.target,HitGFXAttach)
call DestroyEffect(AddSpecialEffectTarget(ReactHitGFXPath,datas.caster,ReactHitGFXAtt ach))
call SetUnitPathing(datas.target,false)
call TimerStart(t,0,false,function MysticNet_Hit)
else
//loop
call TimerStart(t,Periodic,false,function MysticNet_MissileMotion)
endif
endif
set t=null
endfunction
private function Trig_Mystic_Net_Actions takes nothing returns nothing
local timer t =CreateTimer()
local unit caster =GetTriggerUnit()
local real x =GetUnitX(caster)
local real y =GetUnitY(caster)
local location loc =GetSpellTargetLoc()
local real lx =GetLocationX(loc)
local real ly =GetLocationY(loc)
local MNdat_Throw datas =MNdat_Throw.create()
local real z =CreateZ(x,y)
set datas.hit=false
set datas.x=x
set datas.y=y
set datas.ux=lx
set datas.uy=ly
set datas.z=MissileFlyHeight+CreateZ(x,y)
set datas.distance=0
set datas.caster=caster
set datas.target=null
set datas.rope=AddLightningEx(LightningType,true,x,y,datas.z,x,y,datas.z)
set datas.GFXdummy=CreateUnit(Player(14),DummyId,x,y,A2PXY(x,y,lx,ly))
set datas.GFX=AddSpecialEffectTarget(MissileGFXPath,datas.GFXdummy,MissileGFXAttach)
call BugUse_AddFlyAbility(datas.GFXdummy)
call SetUnitFlyHeight(datas.GFXdummy,datas.z-z,0)
call SetUnitX(datas.GFXdummy,x)
call SetUnitY(datas.GFXdummy,y)
call TimerStart(t,0,false,function MysticNet_MissileMotion)
call StoreInteger(GC(),HS(t),"datas",datas)
call RemoveLocation(loc)
set t=null
endfunction
//===========================================================================
function InitTrig_Mystic_Net_____________________u takes nothing returns nothing
set gg_trg_Mystic_Net_____________________u = CreateTrigger( )
set MaxArea=bj_mapInitialPlayableArea
call TriggerRegisterAnyUnitEventBJ( gg_trg_Mystic_Net_____________________u, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Mystic_Net_____________________u, Condition( function Trig_Mystic_Net_Conditions ) )
call TriggerAddAction( gg_trg_Mystic_Net_____________________u, function Trig_Mystic_Net_Actions )
endfunction
endscope
неполучается ничем сохранить:(((((( хотя на мапе откуда взял нормально работает.. хелпхелп
|