|
Librairie Scripts
|
|
Written by Nathaniel
|
|
Script d'une arme qui lance un objet: Les objets qui seront lancés doivent être aussi dans le contenu de l'arme avec le script. L'objet lancé doit être physique et contenir un script qui va l'éffacer du monde quelques secondes après le lancement, pour éviter de remplir un sim d'objet.
/* Script pour les armes qui lance des objets: Il est appellé aussi POPGUN. */ vector fwd; vector pos; rotation rot; float power = 1.0; key holder; vector centerpos; integer attached = FALSE; integer permissions = FALSE;
fire_ball() { rot = llGetRot(); fwd = llRot2Fwd(rot); pos = llGetPos(); pos = pos + fwd; pos.z += 0.75; fwd = fwd * 30.0; llRezObject("Plastic poulet", pos, fwd, rot, 1); // Le nom de l'objet peut être changé } default { state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH); } on_rez(integer param) { llResetScript(); } run_time_permissions(integer permissions) { if (permissions > 0) { llSay(0, "Mettez vous en Mouselook pour tirer!"); if (!attached) { llAttachToAvatar(ATTACH_RHAND); } llTakeControls(CONTROL_ML_LBUTTON, TRUE, FALSE);
llStartAnimation("hold_R_handgun"); attached = TRUE; permissions = TRUE; } } PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH); attach(key attachedAgent) { if (attachedAgent != NULL_KEY) { attached = TRUE; if (!permissions) { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH); } } else { attached = FALSE; llStopAnimation("hold_R_handgun"); llReleaseControls(); } } control(key name, integer levels, integer edges) { if ( ((edges & CONTROL_ML_LBUTTON) == CONTROL_ML_LBUTTON) &&((levels & CONTROL_ML_LBUTTON) == CONTROL_ML_LBUTTON) ) { { fire_ball(); } } } } |
|