EDIT: Case cleared for me.
Alright lets do this then

Here is the code I came up with: (not tested)
Code:
string arrow_str = <arrow.mdl>; //your arrow model
function arrow_event()
{
//hit an entity?
if(event_type == event_impact || event_type == event_entity)
{
if(you == player) //player = pointer to your player model
{
you.health -= 25; //do damage
}
my.skill1 = 1; //set my skill 1 so I get removed
}
//hit a wall?
if(event_type == event_block)
{
my.skill1 = 1; //remove me
}
}
action arrow_act
{
my.enable_impact = on;
my.enable_entity = on;
my.enable_block = on;
my.event = arrow_event;
my.skill1 = 0;
while(!my.skill1)
{
//change the 5 for making the arrow faster or slower
//if there is a syntax error with time_step, change it into time
c_move(my,vector(5*time_step,0,0),nullvector,ignore_passable);
wait(1);
}
wait(1); //just to be safe
ent_remove(me);
}
action arrow_creator
{
my.invisible = on;
my.passable = on;
my.skill1 = 0;
while(!my.skill1) //get rid of this entity by setting skill1 to 1
{
you = ent_create(arrow_str,my.x,arrow_act);
you.pan = my.pan; //let the arrow face the same way
wait(-5); //wait 5 seconds
}
wait(1);
ent_remove(me);
}
Thunder