jai tout modifié mais sa fait toujours la meme chose, je pense que c'est un probleme des conditions non ? Le but ce sera que si une personne sapproche de moi, l'objet s'active sauf si c'est le owner. Voila le script, dsl d'insister mathew :
integer TIME_STEPS = 5;
float SPEED_THRESHOLD = 0.5;
string SHIELD_TEXTURE = "sa";
string TRANS_TEXTURE = "sna";
string HIT_SOUND = "ArmorHit2";
// Globals
integer giCurrentStep;
float gfStepSize;
integer gbFading;
key name;
default
{
state_entry()
{
llSensorRepeat("","",AGENT,4.0,PI,0.1);
name = llGetOwner();
}
sensor(integer total_number)
{
llSetText("Owner of shield : " + (string)name, <0.9,0.1,0.1>, 1.0);
vector pos = llGetPos();
integer j;
integer count = total_number;
for (j = 0; j < count; j++)
{
if(llDetectedKey(j) != name)
{
float diff = llVecDist(pos,llDetectedPos(j));
integer dist = llRound(diff);
string result = (llDetectedName(j)) + " " + ((string)dist) + "m";
if(llDetectedKey(j) == name && dist <= 4)
{
llSetStatus(STATUS_PHANTOM, TRUE);
llSetTexture( "no_active", ALL_SIDES );
llSetScale(<0.5, 0.5, 0.5>);
}
else if (llDetectedKey(j) != name && dist <= 4)
{
llSetText("AGENT DETECTED : " + (string)llDetectedKey(j), <0.9,0.1,0.1>, 1.0);
llSetStatus(STATUS_PHANTOM, FALSE);
integer num;
integer i;
vector vVelocity;
vector vCurPos = llGetPos();
for ( i=0; i < num; i++ )
{
vVelocity = llDetectedVel(i);
if ( llVecMag(vVelocity) > SPEED_THRESHOLD )
{
llSetForce(<0,0,0>, FALSE);
llMoveToTarget(vCurPos, 0.1);
llPushObject( llDetectedKey(i), -1.5 * vVelocity, <0,0,0>, FALSE );
gbFading = FALSE;
}
}
llSetScale(<3, 3, 6>);
llSetTexture( "active", ALL_SIDES );
llSetTextureAnim( ANIM_ON | ROTATE | LOOP, ALL_SIDES, 0, 0, 0, TWO_PI, 20 );
}
else
{
llSetStatus(STATUS_PHANTOM, TRUE);
llSetScale(<0.5, 0.5, 0.5>);
llSetTexture( "no_active", ALL_SIDES ); }
llResetScript();
llSetTimerEvent(5.0);
}
}
}
no_sensor()
{
llSetStatus(STATUS_PHANTOM, TRUE);
llSetTexture( "no_active", ALL_SIDES );
llSetScale(<0.5, 0.5, 0.5>);
}
}