i did that in my shooter tutorial (the laser beam)
problem with particals is there is no collision detection so you need to substitute in something to handle collision for a partical. i.e. a small model ( i use a single poly) or traces( can be taxing on frame rate if running several particals with trace every frame)
as for the other problem
you need to back up your data in the event fucntion
i.e.
var dirdata[3];
function bullet_hit()
{
if(event_type == event_block)
{
vec_set(dirdata,my.skill5);
my.flag1 = 1;
}
}
action bullet_mover
{
//...
while(my.flag1 !=1)
{
// stuff here
wait(1);
}
// so myflag1 is 1 I hit a wall
ent_create*bullehole.pcx,my.x,bul_hole_action);
remove(me);
}
function bul_hole_action
{
vec_set(my.skill5,dirdata);
// more stuff here
}