Well I have made some headway here but I need some help figuring out were to go from here. I need this script to start by chat channel 7 not by proximity and I need the pieces to all rez at once and blast out like a explosion. it is currently rezing one piece at a time. finally for some reason the main object I'm using as the bomb is not temporarilly disappearing like it should. could someone show me how to fix these issues.
//-----------
//Landmine
//-----------
vector pos; // Used to store the current position.
// Follows the function used to rez in random position a burst of
// ten bullets.
// Be sure that they are temporary prims!
burst()
{
// The bullet contained into your object's inventory is rezzed at
// the acquired position with random initial velocity and zero
// rotation.
llRezObject("piece_1", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_2", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_3", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_4", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_5", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_6", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_7", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_8", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_9", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_10", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_11", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_12", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_13", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_14", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_15", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_16", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_17", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_18", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_19", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_20", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_21", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_22", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_23", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_24", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
llRezObject("piece_25", pos, < llFrand(9) + llFrand(-9),
llFrand(9) + llFrand(-9),
llFrand(9) > ,
ZERO_ROTATION, 0);
}
default
{
on_rez(integer start_param)
{
llResetScript();
}
// Script is resetted to its default values on object's rezzing
// (state_entry section).
state_entry()
{
llSetAlpha(1, ALL_SIDES);
// This makes your object visible.
llSetStatus(STATUS_PHANTOM, FALSE);
// This makes your object solid.
pos = llGetPos();
// Used to acquire the actual position.
pos = pos + < 0.0, 0.0, 0.5 > ;
// Used to add a little offset to the bullets rezzing point.
}
collision_start(integer num_detected)
{
llSetAlpha(0, ALL_SIDES);
// This makes your object invisible.
llSetStatus(STATUS_PHANTOM, TRUE);
// This makes your object "phantom" (non solid).
llSay(0, llDetectedName(0) + " you just stepped on a landmine!"

;
// Whenever someone walks on your object, will receive this
// message.
burst();
// Bullets are rezzed.
llSleep(20);
// This makes the script sleep for 600 seconds (10 minutes)
// before your object's initial status is restored.
llResetScript();
// Script is resetted and your object's initial status
// is restored (state_entry section).
}
}