Use the collisionX,collisionY,collisionZ commands as these will give you the exact position in world space of the collision between bullet and ground.
The above code is just a simple example of how you might go about it, there are many ways to skin a cat as it were...
For ColID=1 to CountCollisions(BulletEntity) ;bulletentity would be defined elsewhere, I think you know what I mean here ColEntity=CollisionEntity(BulletEntity,ColID) If GetEntityType(ColEntity)=CollisionType_Scene then ;CollisionType Scene is a constant declared earlier for your ground entity type CreateDustCloud(CollisionX(BulletEntity,ColID),CollisionY(BulletEntity,ColID),CollisionZ(BulletEntity,ColID)) ;CreateDustCloud would be a function that takes X,Y,Z coordinates and creates a dust cloud there. endif next
The above code is just a simple example of how you might go about it, there are many ways to skin a cat as it were...