I have the following code to shoot crates, but somehow there not solid (so u cant use it as baricade):

Code:
SpawnCrate()
{
	self endon("death");
        for(;;)
        {
                self waittill ( "weapon_fired" );
                vec = anglestoforward(self getPlayerAngles());
                SPLOSIONlocation = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+(vec[0] * 2000, vec[1] * 2000, vec[2] * 2000), 0, self)[ "position" ];
                obj = spawn("script_model", self gettagorigin("tag_eye"));
                obj setModel( "com_plasticcase_friendly" );
		obj CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
		obj Solid();
                obj moveto(SPLOSIONlocation, distance(self gettagorigin("tag_eye"), SPLOSIONlocation)/1200);
                obj.angles = self getplayerangles();
		obj.health = 250;
                self thread ObjManageHealth(obj);                
			
		
	}
}

ObjManageHealth(obj)
{
	for(;;){
		obj setcandamage(true);
		obj.team = self.team;
		obj.owner = self.owner;
		obj.pers["team"] = self.team;
		if(obj.health < 0){
			level.chopper_fx["smoke"]["trail"] = loadfx ("fire/fire_smoke_trail_L");
			playfx(level.chopper_fx["smoke"]["trail"], obj.origin);
			obj delete();
			}
		wait 0.1;
		}
}
What did i do wrong ?