Véhicule et problème de légèreté dans les virages hahahaha

Répondre
Partager Rechercher
Bonjour à tous ou re-bonjour pour certains,

Alors, comme à mon habitude, je rencontre un soucis avec la création d'un véhicule, il s'agit d'un concept car qui vol et qui roule... Enfin, sérieusement je ne me souvient plus du tout où j'avais déniché un script modifié par Damen Hax mais j'avais bien envie de le mettre à jour et en plus si quelqu'un est tenté d'apparaitre en final last editor hahahaha. A l'époque mon problème, qui est toujours d'actualité d'ailleurs, c'est que tout est vraiment parfait... Sauf dès que je tourne le volant... Alors là le véhicule se met presque à la verticale ... C'est d'une chianteté (oui ça n'existe pas ce mot ^^ )! Enfin, là j'ai déterré mon véhicule suite au build d'une ville ^^ et du coup je suis toujours aussi larguée sur ce problème abandonné y a environ 1 an...

Je me souviens, qu'en réalité, ou du-moins j'en suis presque sûre, qu'il s'agit d'un problème de calibrage et d'équilibre... J'avais essayé d'encastrer deux prims invisibles sur les cotés mais dès que je rase un mur, je voltige... Enfin bon, si jamais vous avez une solution.. Ce script est bien trop long et trop compliqué pour un QI aussi bas que le miens... Merci d'avance à vous tous !

Code PHP:

//Drifting Thoughts Car script
//by Kayla Stonecutter
//Date: 3/20/2006
//
//Last edit by //•/•/•/•/•/•/•/Ð/A/M/E/N/•/H/A/X/•/•/•/•/•/•/•/•/•//
//Removed a LOT of scripts & listens,.
//Date: 12/10/2008

//Basic settings
float       ForwardPower//Forward power
list        ForwardPowerGears = [153045607590105175200];
float       ReversePower = -40//Reverse power
float       TurnPower 30//Turning power
float       TurnSpeedAdjust 1.0//how much effect speed has on turning, higher numbers effect more. 0.0 to disable
float       FlightForwardPower 24;
float       FlightReversePower 16;
float       FlightUpPower 14;
float       FlightDownPower 14;
float       FlightStrafePower 12;
float       FlightTurnPower 4;
string      SitText "Rouler!"//Text to show on pie menu
//string      NonOwnerMessage = "Access Denied :"; //Message when someone other than owner tries to sit
string      OwnerName;
integer     ListenCh 0;
string      HelpCommand "aide";
string      FlipCommand "ugh";
string      IdleCommand "i";
string      StopCommand "s";
string      FlightCommand "f";
string      GroundCommand "g";
string      FlightSound "d09480b7-6615-1c49-e76e-360e7270cc2e";
string      HornSound "043aab33-fdc8-3da2-912c-cf7463e6ea11";
string      NonOwnerSound "5732d36d-e6a3-e95f-f5f0-69614e1915da";
string      IdleSound "9b3f0cf8-3fec-5c63-caea-c39750d00dc9"//Sound to play when idling
string      RunSound "d32d29c2-0163-1fb1-e0c8-429c3f2fa41a"//Sound to play when the gas in pressed
string      RevSound "0eb7c31d-53e6-156d-ab0c-cd860aac3f53";
string      StartupSound "e2a1bdf5-21fc-7fff-13a5-31e36ff37790"//Sound to play when owner sits
string      DrivingAnim "Caraction"//Animation to play when owner sits

//Other variables
key         Owner;
integer     NumGears;
integer     Gear 0;
integer     NewSound;
string      Sound;
integer     CurDir;
integer     LastDir;
integer     Forward;
vector      SpeedVec;
vector      Linear;
vector      Angular;
integer     Active;
key         sitting;
integer     Moving;
string      SimName;
integer     DIR_STOP 100;
integer     DIR_START 101;
integer     DIR_NORM 102;
integer     DIR_LEFT 103;
integer     DIR_RIGHT 104;
integer     DIR_FLIGHT 105;

flip(){//for when you turn upsidedown
    
vector pos llGetPos();
    
pos.pos.3.0;
    
llMoveToTarget(pos0.1);
    
llRotLookAt(ZERO_ROTATION0.11.0);
    
llSleep(2.0);
    
llStopLookAt();
    
llStopMoveToTarget();
    
Linear = <0,0,-2>;
}
help(){
    
llTriggerSound(RevSound,1.0); 
    
llOwnerSay("<<<< SLn Car Aide/Info >>>> 
Utilisez Page Up et Page Down pour contrôler la vitesse et/ou le vol.

*Liste des commandes* - Il suffit de taper la commande sur le chat local.
i == Démarrer
s == Stopper
f == Mode Vol
g == Mode Voiture
aide == Retrouvez les infos et la liste des commandes."
);
}

default{
//
    
state_entry(){
        
Owner llDetectedKey(0);
        
OwnerName llKey2Name(Owner);
        
TurnSpeedAdjust *= 0.01;
        
ForwardPower llList2Integer(ForwardPowerGears0);
        
NumGears llGetListLength(ForwardPowerGears);
        
llSetSitText(SitText);
        
llCollisionSound(""0.0);
        
llSitTarget(<0.6,0.65,0.65>, llEuler2Rot(<0,0,0> ));
        
state Ground;
    }
//
    
on_rez(integer tot){help();
        
llResetScript();
    }
// 
}

state Ground{
//
    
on_rez(integer param){help();
        
llResetScript();
    }
//
    
state_entry(){
        
llListen(ListenChOwnerNameNULL_KEY"");
        
llStopSound();
        if(!
Active){
            
llSetStatus(STATUS_PHYSICSFALSE);
            
llMessageLinked(LINK_ALL_CHILDREN DIR_STOP""NULL_KEY);
            
llUnSit(llAvatarOnSitTarget());
        }else{
            
SimName llGetRegionName();
            
llMessageLinked(LINK_ALL_CHILDRENDIR_START""NULL_KEY);
            
llMessageLinked(LINK_ALL_CHILDRENDIR_NORM""NULL_KEY);
            
NewSound 1;
            
Sound IdleSound;
            
Linear = <0,0,-2>;
        }
        
llSetVehicleType(VEHICLE_TYPE_CAR);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY0.80);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY0.2);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE0.1);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE0.1);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE0.3);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE0.1);
        
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <100.02.01000.0> );
        
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000.01000.01000.0> );
        
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY0.0);
        
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE300.0);
        
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT);
        
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY);
        
llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE1000 );
        
llSetVehicleFloatParam(VEHICLE_BUOYANCY, -0.3 );
        
llRemoveVehicleFlags(VEHICLE_FLAG_HOVER_WATER_ONLY VEHICLE_FLAG_HOVER_TERRAIN_ONLY VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
        
llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_LIMIT_MOTOR_UP);
    }
//
    
listen(integer channelstring namekey idstring message){
        if(
llGetOwnerKey(id) != sitting)return;
        
message llToLower(message);
        if(
message == IdleCommand
            
llLoopSound(IdleSound1.0);
        else if(
message == FlipCommand
            
flip();
        else if(
message == StopCommand
            
llStopSound();    
        else if((
message == FlightCommand) && Active
            
state Flight;
        else if(
message == HelpCommand)
            
help();
    }
//
    
changed(integer change){
        if((
change CHANGED_LINK) == CHANGED_LINK){
            
sitting llAvatarOnSitTarget();
            if((
sitting != NULL_KEY) && !Active){
                if(
sitting != llGetOwner()){
                    
//llWhisper(0, NonOwnerMessage);
                    
llTriggerSound(NonOwnerSound1.0);
                    
llUnSit(sitting);
                }else{
                    
llRequestPermissions(sittingPERMISSION_TRIGGER_ANIMATION PERMISSION_TAKE_CONTROLS PERMISSION_CONTROL_CAMERA);
                    
llTriggerSound(StartupSound1.0);
                    
llMessageLinked(LINK_ALL_CHILDRENDIR_START""NULL_KEY);
                    
llSetPos(llGetPos() + <0,0,0.15>);
                    
llSetStatus(STATUS_PHYSICSTRUE);
                    
llSetStatus(STATUS_PHANTOMFALSE);
                    
SimName llGetRegionName();
                    
llLoopSound(IdleSound,1);
                    
llSetTimerEvent(0.1);
                    
CurDir DIR_NORM;
                    
LastDir DIR_NORM;
                }
            }
            else if((
sitting == NULL_KEY) && Active){
                
llSetTimerEvent(0.0);
                
llStopAnimation(DrivingAnim);
                
Active 0;
                
llStopSound();
                
llSetStatus(STATUS_PHYSICSFALSE);
                
llSetStatus(STATUS_PHANTOMTRUE);
                
llMessageLinked(LINK_ALL_CHILDREN DIR_STOP""NULL_KEY);
                
llReleaseControls();
            }
        }
    }
//
    
run_time_permissions(integer perms){
        if(
perms == (PERMISSION_TRIGGER_ANIMATION PERMISSION_TAKE_CONTROLS PERMISSION_CONTROL_CAMERA)){
            
Active 1;
            
Linear = <0,0,-2>;
            
Angular = <0,0,0>;
            
llStopAnimation("sit");
            
llStartAnimation(DrivingAnim);
            
llTakeControls(CONTROL_FWD CONTROL_BACK CONTROL_DOWN CONTROL_UP CONTROL_RIGHT CONTROL_LEFT CONTROL_ROT_RIGHT CONTROL_ROT_LEFTTRUEFALSE);
            
llSetCameraParams([
                
CAMERA_ACTIVE1// 1 is active, 0 is inactive
                
CAMERA_BEHINDNESS_ANGLE2.0// (0 to 180) degrees
                
CAMERA_BEHINDNESS_LAG0.1// (0 to 3) seconds
                
CAMERA_DISTANCE8.0// ( 0.5 to 10) meters
                // CAMERA_FOCUS, <0,0,0>, // region-relative position
                
CAMERA_FOCUS_LAG0.1 // (0 to 3) seconds
                
CAMERA_FOCUS_LOCKEDFALSE// (TRUE or FALSE)
                
CAMERA_FOCUS_THRESHOLD0.5// (0 to 4) meters
                
CAMERA_PITCH20.0// (-45 to 80) degrees
                // CAMERA_POSITION, <0,0,0>, // region-relative position
                
CAMERA_POSITION_LAG0.1// (0 to 3) seconds
                
CAMERA_POSITION_LOCKEDFALSE// (TRUE or FALSE)
                
CAMERA_POSITION_THRESHOLD0.5// (0 to 4) meters
                
CAMERA_FOCUS_OFFSET, <0,0,0// <-10,-10,-10> to <10,10,10> meters
            
]);
        }
    }
//
    
control(key idinteger levelsinteger edges){
        if(!
Moving){Moving 1;
            
llSetStatus(STATUS_PHYSICSTRUE);
        }
        
SpeedVec llGetVel() / llGetRot();
        if((
edges levels CONTROL_UP)){
            if((
Gear 1) != NumGears){++Gear;
                
llWhisper(0"Vitesse " + (string)(Gear 1));
                
ForwardPower llList2Float(ForwardPowerGearsGear);
                if(
Linear.0Linear.ForwardPower;
            }
        }
        else if((
edges levels CONTROL_DOWN)){
            if((
Gear 1) != -1){--Gear;
                
llWhisper(0"Vitesse " + (string)(Gear 1));
                
ForwardPower llList2Float(ForwardPowerGearsGear);
                if(
Linear.0Linear.ForwardPower;
            }
        }
        if((
edges levels CONTROL_FWD)){
            
Linear.+= ForwardPower;
            
NewSound 1;
        }
        else if((
edges & ~levels CONTROL_FWD)){
            
Linear.-= ForwardPower;
            
NewSound 1;
        }
        if((
edges levels CONTROL_BACK)){
            
Linear.+= ReversePower;
            
NewSound 1;
        }
        else if((
edges & ~levels CONTROL_BACK)){
            
Linear.-= ReversePower;
            
NewSound 1;
        }
        if(
NewSound){
            if(
Linear.xSound RunSound;
            else 
Sound IdleSound;
        }
        if(
llFabs(SpeedVec.x) < 0.5){
            if(
levels CONTROL_ROT_LEFTCurDir DIR_LEFT;
            else if(
levels CONTROL_ROT_RIGHTCurDir DIR_RIGHT;
            else 
CurDir DIR_NORM;
            
Angular.0.0;
        }else{
            if(
SpeedVec.0.0){Forward = -1;
                
SpeedVec.*= -TurnSpeedAdjust;
            }else{
Forward 1;
                
SpeedVec.*= TurnSpeedAdjust;
            }
            if(
levels CONTROL_ROT_LEFT){CurDir DIR_LEFT;
                
Angular.= (TurnPower SpeedVec.x) * Forward;
            }
            else if((
edges & ~levels CONTROL_ROT_LEFT)){CurDir DIR_NORM;
                
Angular.0;
            }
            if(
levels CONTROL_ROT_RIGHT){CurDir DIR_RIGHT;
                
Angular.= -((TurnPower SpeedVec.x) * Forward);
            }
            else if((
edges & ~levels CONTROL_ROT_RIGHT)){CurDir DIR_NORM;
                
Angular.0;
            }
        }
    }
//
    
moving_end(){
        if(
llGetRegionName() == SimName){Moving 0;
            
llSetStatus(STATUS_PHYSICSFALSE);
        }else{
SimName llGetRegionName();
        }
    }
//
    
timer(){
        if(
Linear != <0.0,  0.0, -2.0>){
            
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIONLinear);
            
llApplyImpulse(LinearTRUE);
        }
        if(
Angular != <0.00.00.0>) 
        
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTIONAngular);
        if(
CurDir != LastDir){
            
llMessageLinked(LINK_ALL_CHILDRENCurDir""NULL_KEY);
            
LastDir CurDir;
        }
        if(
NewSound){
            
llStopSound();
            
NewSound 0;
            
llLoopSound(Sound1.0);
        }
    }
}
//
state Flight{
//
    
state_entry(){
        
Linear = <0,0,0>;
        
llStopSound();
        
llMessageLinked(LINK_ALL_CHILDRENDIR_FLIGHT""NULL_KEY);
        
llLoopSound(FlightSound1.0);
        
llSetStatus(STATUS_PHYSICSFALSE);
        
llSetPos(llGetPos() + <0,0,0.25>);
        
vector rot llRot2Euler(llGetRot());
        
llSetRot(llEuler2Rot(<0,0,rot.z>));
        
llListen(ListenChOwnerNameNULL_KEY"");
        
llSetVehicleType(VEHICLE_TYPE_AIRPLANE);
        
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <100.0100.0100.0>);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE0.5);
        
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0.00.00.0>);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE1.0);
        
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0.00.00.0>);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE2.0);
        
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT0.0);
        
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY0.0);
        
llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE360.0);
        
llSetVehicleFloatParam(VEHICLE_BUOYANCY0.988);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY0.0);
        
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY0.25);
        
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE100.0);
        
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY0.5);
        
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE1.0);
        
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY0.0);
        
llSetVehicleFloatParam(VEHICLE_BANKING_MIX1.0);
        
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE1.0);
        
llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, <0.000000.000000.000000.00000>);
        
llRemoveVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_FLAG_HOVER_WATER_ONLY VEHICLE_FLAG_HOVER_TERRAIN_ONLY VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY);
        
llSetVehicleFlags(VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
        
llTakeControls(CONTROL_FWD CONTROL_BACK CONTROL_LEFT CONTROL_RIGHT CONTROL_ROT_LEFT CONTROL_ROT_RIGHT CONTROL_UP CONTROL_DOWN CONTROL_LBUTTONTRUEFALSE);
        
llSetStatus(STATUS_PHYSICSTRUE);
    }
//
    
listen(integer channelstring namekey idstring message){
        if(
llGetOwnerKey(id) != sitting)return;
        
message llToLower(message);
        if(
message == IdleCommand
            
llLoopSound(IdleSound1.0);
        else if(
message == GroundCommand
            
state Ground;    
        else if(
message == HelpCommand)
            
help();
    }
//
    
control(key nameinteger levelsinteger edges){
        if((
levels CONTROL_LBUTTON)){
            
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0,0,0>);
            
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0,0,0>);
            
llSetStatus(STATUS_PHYSICSFALSE);
            
llSleep(0.1);
            
llSetStatus(STATUS_PHYSICSTRUE);
            return;
        }
        if((
edges levels CONTROL_UP)) Linear.+= FlightUpPower;
        else if((
edges & ~levels CONTROL_UP)) Linear.0.0;
        if((
edges levels CONTROL_DOWN)) Linear.-= FlightDownPower;
        else if((
edges & ~levels CONTROL_DOWN)) Linear.0.0;
        if((
edges levels CONTROL_FWD)) Linear.+= FlightForwardPower;
        else if((
edges & ~levels CONTROL_FWD)) Linear.0.0;
        if((
edges levels CONTROL_BACK)) Linear.-= FlightReversePower;
        else if((
edges & ~levels CONTROL_BACK)) Linear.0.0;
        if((
edges levels CONTROL_LEFT)) Linear.+= FlightStrafePower;
        else if((
edges & ~levels CONTROL_LEFT)) Linear.0.0;
        if((
edges levels CONTROL_RIGHT)) Linear.-= FlightStrafePower;
        else if((
edges & ~levels CONTROL_RIGHT)) Linear.0.0;
        if((
edges levels CONTROL_ROT_LEFT)) Angular.FlightTurnPower;
        else if((
edges & ~levels CONTROL_ROT_LEFT)) Angular.0;
        if((
edges levels CONTROL_ROT_RIGHT)) Angular.= -FlightTurnPower;
        else if((
edges & ~levels CONTROL_ROT_RIGHT)) Angular.0;
    }
//
    
changed(integer change){
        if((
change CHANGED_LINK) == CHANGED_LINK){
            
sitting llAvatarOnSitTarget();
            if(
sitting == NULL_KEY){
                
llSetTimerEvent(0.0);
                
llStopAnimation(DrivingAnim);
                
Active 0;
                
llStopSound();
                
llSetStatus(STATUS_PHYSICSFALSE);
                
llMessageLinked(LINK_ALL_CHILDREN DIR_STOP""NULL_KEY);
                
llReleaseControls();
                
state Ground;
            }
        }
    }
//
    
timer(){
        
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIONLinear);
        
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTIONAngular);
    }
//


Dernière modification par **Nyxia** ; 07/04/2015 à 02h06.
Projet annulé, ça sert à rien, j'ai tout essayé, même en suivant les nombreux conseils que vous m'avez donné ici. On se sent aidé sur JoL merci ^^ Le forum a peut être été abandonné et je n'étais pas au courante ou alors c'est quand je pose une question :-(
Pourquoi tant d'amertume ?

Ce sous-forum est dédié au script et généralement animé par une petite dizaine (et je suis généreux) de scripteurs super compétents et jamais avares de conseils et de solutions.

Seulement, voilà nous sommes en période de vacances, il suffit que tous ces scripteurs soient en vacances et ce sous-forum est en panne...

Je te conseille donc un peu de patience en ce moment, voilà
Bha c'est pas de l’amertume ^^ mais je patiente ... Depuis le 7 avril :'( snif snif enfin c'est pas grave, depuis le temps, j'ai laissé tombé et je suis passée à autre chose :-D Un plongeoir XD
Répondre

Connectés sur ce fil

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