1. Hm, wie genau man das eingrenzt, kommt darauf an, was Du damit machen willst. Aber verkehrt sollte diese Zeile am Anfang Deines Scripts nicht sein:
PHP-Code:
if ( GetDistance Player 2500 )
    return
else
    ;
Code
endif 
2. Ich weiß nicht, wie GetSecondsPassed innerhalb eines ScriptEffects reagiert. Ich würde hier auf den ScriptEffectUpdate-Block zurückgreifen. Du müsstest allerdings testen, ob dieser Block wirklich jede Sekunde durchläuft.
PHP-Code:
Scriptname MeinMagieEffektScript

short Start
short done

Begin ScriptEffectStart

set Start to 0

End

Begin ScriptEffectUpdate

if ( Start == 15 )
    if ( 
done == )
        
set done to 1
        
;Code
    
endif
elseif ( 
Start 15 )
    
set Start to Start )
endif

End

Begin ScriptEffectFinish

End