|
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 !
//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 = [15, 30, 45, 60, 75, 90, 105, 175, 200]; 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.z = pos.z + 3.0; llMoveToTarget(pos, 0.1); llRotLookAt(ZERO_ROTATION, 0.1, 1.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(ForwardPowerGears, 0); 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(ListenCh, OwnerName, NULL_KEY, ""); llStopSound(); if(!Active){ llSetStatus(STATUS_PHYSICS, FALSE); llMessageLinked(LINK_ALL_CHILDREN , DIR_STOP, "", NULL_KEY); llUnSit(llAvatarOnSitTarget()); }else{ SimName = llGetRegionName(); llMessageLinked(LINK_ALL_CHILDREN, DIR_START, "", NULL_KEY); llMessageLinked(LINK_ALL_CHILDREN, DIR_NORM, "", NULL_KEY); NewSound = 1; Sound = IdleSound; Linear = <0,0,-2>; } llSetVehicleType(VEHICLE_TYPE_CAR); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.80); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.1); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.1); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.3); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.1); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <100.0, 2.0, 1000.0> ); llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000.0, 1000.0, 1000.0> ); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.0); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 300.0); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0 ); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0 ); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 1000 ); 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 channel, string name, key id, string message){ if(llGetOwnerKey(id) != sitting)return; message = llToLower(message); if(message == IdleCommand) llLoopSound(IdleSound, 1.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(NonOwnerSound, 1.0); llUnSit(sitting); }else{ llRequestPermissions(sitting, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA); llTriggerSound(StartupSound, 1.0); llMessageLinked(LINK_ALL_CHILDREN, DIR_START, "", NULL_KEY); llSetPos(llGetPos() + <0,0,0.15>); llSetStatus(STATUS_PHYSICS, TRUE); llSetStatus(STATUS_PHANTOM, FALSE); 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_PHYSICS, FALSE); llSetStatus(STATUS_PHANTOM, TRUE); 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_LEFT, TRUE, FALSE); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 2.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.1, // (0 to 3) seconds CAMERA_DISTANCE, 8.0, // ( 0.5 to 10) meters // CAMERA_FOCUS, <0,0,0>, // region-relative position CAMERA_FOCUS_LAG, 0.1 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.5, // (0 to 4) meters CAMERA_PITCH, 20.0, // (-45 to 80) degrees // CAMERA_POSITION, <0,0,0>, // region-relative position CAMERA_POSITION_LAG, 0.1, // (0 to 3) seconds CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.5, // (0 to 4) meters CAMERA_FOCUS_OFFSET, <0,0,0> // <-10,-10,-10> to <10,10,10> meters ]); } } // control(key id, integer levels, integer edges){ if(!Moving){Moving = 1; llSetStatus(STATUS_PHYSICS, TRUE); } SpeedVec = llGetVel() / llGetRot(); if((edges & levels & CONTROL_UP)){ if((Gear + 1) != NumGears){++Gear; llWhisper(0, "Vitesse " + (string)(Gear + 1)); ForwardPower = llList2Float(ForwardPowerGears, Gear); if(Linear.x > 0) Linear.x = ForwardPower; } } else if((edges & levels & CONTROL_DOWN)){ if((Gear - 1) != -1){--Gear; llWhisper(0, "Vitesse " + (string)(Gear + 1)); ForwardPower = llList2Float(ForwardPowerGears, Gear); if(Linear.x > 0) Linear.x = ForwardPower; } } if((edges & levels & CONTROL_FWD)){ Linear.x += ForwardPower; NewSound = 1; } else if((edges & ~levels & CONTROL_FWD)){ Linear.x -= ForwardPower; NewSound = 1; } if((edges & levels & CONTROL_BACK)){ Linear.x += ReversePower; NewSound = 1; } else if((edges & ~levels & CONTROL_BACK)){ Linear.x -= ReversePower; NewSound = 1; } if(NewSound){ if(Linear.x) Sound = RunSound; else Sound = IdleSound; } if(llFabs(SpeedVec.x) < 0.5){ if(levels & CONTROL_ROT_LEFT) CurDir = DIR_LEFT; else if(levels & CONTROL_ROT_RIGHT) CurDir = DIR_RIGHT; else CurDir = DIR_NORM; Angular.z = 0.0; }else{ if(SpeedVec.x < 0.0){Forward = -1; SpeedVec.x *= -TurnSpeedAdjust; }else{Forward = 1; SpeedVec.x *= TurnSpeedAdjust; } if(levels & CONTROL_ROT_LEFT){CurDir = DIR_LEFT; Angular.z = (TurnPower - SpeedVec.x) * Forward; } else if((edges & ~levels & CONTROL_ROT_LEFT)){CurDir = DIR_NORM; Angular.z = 0; } if(levels & CONTROL_ROT_RIGHT){CurDir = DIR_RIGHT; Angular.z = -((TurnPower - SpeedVec.x) * Forward); } else if((edges & ~levels & CONTROL_ROT_RIGHT)){CurDir = DIR_NORM; Angular.z = 0; } } } // moving_end(){ if(llGetRegionName() == SimName){Moving = 0; llSetStatus(STATUS_PHYSICS, FALSE); }else{SimName = llGetRegionName(); } } // timer(){ if(Linear != <0.0, 0.0, -2.0>){ llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, Linear); llApplyImpulse(Linear, TRUE); } if(Angular != <0.0, 0.0, 0.0>) llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, Angular); if(CurDir != LastDir){ llMessageLinked(LINK_ALL_CHILDREN, CurDir, "", NULL_KEY); LastDir = CurDir; } if(NewSound){ llStopSound(); NewSound = 0; llLoopSound(Sound, 1.0); } } } // state Flight{ // state_entry(){ Linear = <0,0,0>; llStopSound(); llMessageLinked(LINK_ALL_CHILDREN, DIR_FLIGHT, "", NULL_KEY); llLoopSound(FlightSound, 1.0); llSetStatus(STATUS_PHYSICS, FALSE); llSetPos(llGetPos() + <0,0,0.25>); vector rot = llRot2Euler(llGetRot()); llSetRot(llEuler2Rot(<0,0,rot.z>)); llListen(ListenCh, OwnerName, NULL_KEY, ""); llSetVehicleType(VEHICLE_TYPE_AIRPLANE); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <100.0, 100.0, 100.0>); llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.5); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0.0, 0.0, 0.0>); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 1.0); llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0.0, 0.0, 0.0>); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.0); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.0); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 360.0); llSetVehicleFloatParam(VEHICLE_BUOYANCY, 0.988); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.0); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.25); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 100.0); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 0.0); llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 1.0); llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 1.0); llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, <0.00000, 0.00000, 0.00000, 0.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_LBUTTON, TRUE, FALSE); llSetStatus(STATUS_PHYSICS, TRUE); } // listen(integer channel, string name, key id, string message){ if(llGetOwnerKey(id) != sitting)return; message = llToLower(message); if(message == IdleCommand) llLoopSound(IdleSound, 1.0); else if(message == GroundCommand) state Ground; else if(message == HelpCommand) help(); } // control(key name, integer levels, integer edges){ if((levels & CONTROL_LBUTTON)){ llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0,0,0>); llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0,0,0>); llSetStatus(STATUS_PHYSICS, FALSE); llSleep(0.1); llSetStatus(STATUS_PHYSICS, TRUE); return; } if((edges & levels & CONTROL_UP)) Linear.z += FlightUpPower; else if((edges & ~levels & CONTROL_UP)) Linear.z = 0.0; if((edges & levels & CONTROL_DOWN)) Linear.z -= FlightDownPower; else if((edges & ~levels & CONTROL_DOWN)) Linear.z = 0.0; if((edges & levels & CONTROL_FWD)) Linear.x += FlightForwardPower; else if((edges & ~levels & CONTROL_FWD)) Linear.x = 0.0; if((edges & levels & CONTROL_BACK)) Linear.x -= FlightReversePower; else if((edges & ~levels & CONTROL_BACK)) Linear.x = 0.0; if((edges & levels & CONTROL_LEFT)) Linear.y += FlightStrafePower; else if((edges & ~levels & CONTROL_LEFT)) Linear.y = 0.0; if((edges & levels & CONTROL_RIGHT)) Linear.y -= FlightStrafePower; else if((edges & ~levels & CONTROL_RIGHT)) Linear.y = 0.0; if((edges & levels & CONTROL_ROT_LEFT)) Angular.z = FlightTurnPower; else if((edges & ~levels & CONTROL_ROT_LEFT)) Angular.z = 0; if((edges & levels & CONTROL_ROT_RIGHT)) Angular.z = -FlightTurnPower; else if((edges & ~levels & CONTROL_ROT_RIGHT)) Angular.z = 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_PHYSICS, FALSE); llMessageLinked(LINK_ALL_CHILDREN , DIR_STOP, "", NULL_KEY); llReleaseControls(); state Ground; } } } // timer(){ llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, Linear); llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, Angular); } // }
Dernière modification par **Nyxia** ; 07/04/2015 à 02h06.
|