[Bidouille]Script vehicule

Répondre
Partager Rechercher
Bonjour,

C'est encore moi avec mes bidouillages de scripts ^^.
Je voudrais réaliser un objet qui permet de porter quelqu'un sur son dos, comme celui de chez Abranimation. Donc j'ai les anims, les prims (le plus facile à avoir) et le script, enfin presque.
Je prend un script freebie, le Simple Vehicle 10.0 by Cory Linden.
Voila le script (j'ai effacé les commentaires de Ben Linden qui prenaient pas mal de place) :

Code PHP:

//Basic Motorcycle Script
//
// by Cory
// Last edited by Nada Epoch on 01-01-2004 at 08:51 PM

//The new vehicle action allows us to make any physical object in Second 
//Life a vehicle. This script is a good example of a
// very basic vehicle that is done very well.
// Very well c'est toi qui le dis.

default
{

    
state_entry()
    {
        
llPassCollisions(TRUE);
        
        
llSetSitText("Ride");

        
        
llSitTarget(<0.60.030.20>, ZERO_ROTATION);

        
        
llSetCameraEyeOffset(<-5.0, -0.002.0> );
        
llSetCameraAtOffset(<3.00.02.0> );


        
        
llSetVehicleType(VEHICLE_TYPE_CAR);


        
        
llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY VEHICLE_FLAG_LIMIT_MOTOR_UP);

        
         
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY0.2);
         
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY0.80);
         
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE0.10);
         
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE0.10);

        
         
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE1.0);
         
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE0.2);
         
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE0.1);
         
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE0.5);

        
         
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <10.00.51000.0> );
         
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <10.010.00.5> );

        
         
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY0.50);
         
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE0.40);

        
        
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY1.0);
        
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE0.01);
        
llSetVehicleFloatParam(VEHICLE_BANKING_MIX1.0);

        
        
llCollisionSound(""0.0);
    }


    
changed(integer change)
    {
        if (
change CHANGED_LINK)
        {
            
key agent llAvatarOnSitTarget();

            if (
agent)
            {
                if (
agent != llGetOwner())
                {
                    
llSay(0"You aren't the owner");
                    
llUnSit(agent);
                    
llPushObject(agent, <0,0,100>, ZERO_VECTORFALSE);
                }
                else
                {
                    
                    
llRequestPermissions(agentPERMISSION_TRIGGER_ANIMATION PERMISSION_TAKE_CONTROLS);
                    
llPlaySound("SUZ_start (2).wav"0.7);
                    
llMessageLinked(LINK_SET0"get_on""");
                }
            }
            else
            {
                
llSetStatus(STATUS_PHYSICSFALSE);
                
llReleaseControls();
                
llStopAnimation("motorcycle_sit");
                
llMessageLinked(LINK_SET0"idle""");
            }
        }

    }

    
run_time_permissions(integer perm)
    {
        if (
perm)
        {
            
llStartAnimation("motorcycle_sit");
            
llTakeControls(CONTROL_FWD CONTROL_BACK CONTROL_RIGHT CONTROL_LEFT CONTROL_ROT_RIGHT CONTROL_ROT_LEFTTRUEFALSE);
        }
    }

    {
        
vector angular_motor;

        if(
level CONTROL_FWD)
        {
            
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <50,0,0> );

        }
        if(
level CONTROL_BACK)
        {
             
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-20,0,0> );
        }
        if(
level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
        {
            
angular_motor.+= PI*4;
            
angular_motor.-= PI*4;
        }
        if(
level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
        {
            
angular_motor.-= PI*4;
            
angular_motor.+= PI*4;
        }
        if(
level & (CONTROL_UP))
        {
            
angular_motor.-= 50;
        }

        if((
edge CONTROL_FWD) && (level CONTROL_FWD))
        {
            
llMessageLinked(LINK_SET0"burst""");
        }
        if((
edge CONTROL_FWD) && !(level CONTROL_FWD))
        {
            
llMessageLinked(LINK_SET0"stop""");
        }

        
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,angular_motor);
    }


Donc dans tous sa, il y a des trucs qui me plaisent pas, donc je réécris entièrement le script avec le LSL Editor, supprime et modifie quelques lignes.
Voila le script après modification à l'aveugle :

Code PHP:

//Basic Car Script
//
// by Cory
// Last edited by Nada Epoch on 01-01-2004 at 08:51 PM

default
{
state_entry()
{
    
llPassCollisions(TRUE);

    
llSetSitText("Ride")
    
    
llSitTarget(<0.60.030.20>, ZERO_ROTATION);

    
llSetCameraEyeOffset(<-5.0, -0.002.0> );
    
llSetCameraAtOffset(<3.00.02.0> );
    
    
llSetVehicleType(VEHICLE_TYPE_CAR);
    
    
llSetVehicleFlags(VEHICLE_FLAG_MOUSELOOK_STEER VEHICLE_FLAG_LIMIT_ROLL_ONLY);
    
    
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY0.2);
    
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY0.80);
    
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE0.10);
    
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE0.10);
    
    
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE1.0);
    
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE0.2);
    
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE0.1);
    
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE0.5);
    
    
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <10.00.51000.0>);
    
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <10.010.00.5>);
    
    
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY0.50);
    
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE0.40);
    
    
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY1.0);
    
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE0.01);
    
llSetVehicleFloatParam(VEHICLE_BANKING_MIX1.0);
}
    
changed(integer change)
{    
    if (
change CHANGED_LINK)
    {
    
    
// Detection key avatar
    
key agent llAvatarOnSitTarget();
    
    if (
agent)
    {
    
       if (
agent != llGetOwner())
       {
        
        
llSay(0"You aren't the owner");
        
llUnsit(agent);
        
llPushObject(agent, <0,0,100>, ZERO_VECTORFALSE);
        }
        else
        }
          
llSetStatus(STATUS_PHYSICSTRUE);
          
llRequestPermissions(agentPERMISSION_TRIGGER_ANIMATION PERMISSION_TAKE_CONTROLS);
        }
}
    
    
llSetStatus(STATUS_PHYSICSFALSE);
    
llReleaseControls();
    
llStopAnimation("msmale16b");    
    }
}        
    
run_time_permissions(integer perm)
{
  if (
perm)
  {
    
llStartAnimation("anim1");
    
llTakeControls(CONTROL_FWD CONTROL_BACK CONTROL_RIGHT CONTROL_LEFT CONTROL_ROT_RIGHT CONTROL_ROT_LEFTTRUEFALSE);
  }
}
vector angular_motor;
if(
level CONTROL_FWD)
{
    
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <50,0,);

}
if(
level CONTROL_BACK)
{
    
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-20,0,0> );
{
if(
level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
    
angular_motor.+= PI*4;
    
angular_motor.-= PI*4;
}
if(
level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
    
angular_motor.-= PI*4;
    
angular_motor.+= PI*4;
}
if(
level & (CONTROL_UP))
    
angular_motor.-= 50;
}
if((
edge CONTROL_FWD) && (level CONTROL_FWD))
{
if((
edge CONTROL_FWD) && !(level CONTROL_FWD))
  }

Petit test debug avec le LSL Editor et comme on pouvait s'en douter, c'est pas bon.
Voila le rapport :
Citation :
Line 82 Character 5: Class, struct, or interface method must have a return type
Line 82 Character 31: Identifier expected
Line 82 Character 38: Identifier expected
Line 83 Character 2: Class, struct, or interface method must have a return type
Line 84 Character 2: Class, struct, or interface method must have a return type
Line 84 Character 18: Type expected
Line 89 Character 17: Expected class, delegate, enum, interface, or struct
Line 105 Character 62: Expected class, delegate, enum, interface, or struct
Line 124 Character 1: Type or namespace definition, or end-of-file expected
Il me dit sa, j'arrive à régler quelques erreurs mais malheureusement pas toutes.
Avec sa je suis bloqué mais pas seulement avec sa car il y a d'autres choses que j'aurais voulu modifier dans ce script, mais avec mon peu de connaissance, je n'ai pas pu réussir à modifier.
Comme par exemple pour enlever la fonction qui dit "You aren't the owner" quand une autre personne que moi clique droit sur la ball.
Aussi rajouter dans ce script un système comme la poseball avec l'anim et la prim qui disparaît.

Après c'est tout parce que là c'est déja trop.

Voila si quelqu'un pouvait m'aider à finir ce script sa serait très sympa de sa part parce que là je galère avec sa.
Merci d'avance
Déjà, il manque des lignes de code dans le script de départ.
Après, tu rajoutes encore des erreurs (accolades manquantes, tests qui ne font rien). Tu devrais commencer par quelque chose de plus simple et qui donne un résultat rapide.
Euh oui...c'est remplis de faute. Scripter des véhicules est ce qui ce qui se fait de plus dur donc avant de t'attaquer à cela, prends le temps d'apprendre sur des scripts plus faciles. Courage !
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés