GREAT I've got it ! it was the weapon_menu(my_player,0); function that causes the problem! Well I just don't know why...

So there is my alternativ version that works:
Code:
function good_crystals()
{
VECTOR rotator;
var my_player;
set(my,PASSABLE,TRANSLUCENT);
my.scale_x=0;
my.scale_y=0;
my.scale_z=0;
my.material=mat_crystal;
my.alpha=75;
vec_set(rotator,vector(random(3),random(2),random(1)));
while(!p1_vehicle){wait(1);}
while(1)
{
if(my.scale_x<5)
{
my.scale_x+=0.1;
my.scale_y+=0.1;
my.scale_z+=0.1;
}
ent_bonerotate(my,"bone",rotator);
ent_bonerotate(my,"bone1",vector(random(0.5)+1,0,0));
if(del_item==0){
if(vec_dist(my.x,p1_vehicle.x)<150){my_player=1;break;}
if(vec_dist(my.x,p2_vehicle.x)<150){my_player=2;break;}
}
if(del_item==1){ptr_remove(me);return;}
wait(1);
}
if(my_player==1){get_weaponsP1=1;}
if(my_player==2){get_weaponsP2=1;}
ent_create("crystal_exp.mdl",vector(1,0,my.z),crystal_explosion);
ptr_remove(me);
wait(2);
if(my_player==1){get_weaponsP1=0;}
if(my_player==2){get_weaponsP2=0;}
}
...
...
function check_weopons_startup()
{
while(1)
{
if(get_weaponsP1){weapon_menu(1,0);}
if(get_weaponsP2){weapon_menu(2,0);}
wait(1);
}
}