Jump to content

Alexander Mauclerc

Resident
  • Posts

    1
  • Joined

  • Last visited

Everything posted by Alexander Mauclerc

  1. Hi i need help with a script! When i sit on the car i want it to be ready to move witout clicking on it. But i don't know how to make it work.. // Hot Air Balloon Script // Modified version of the flying Saucer script // // string animation = "crossleg"; // name of built-in animation or animation in prim inventory string gSoundIdle = "Idle"; string gSoundStart = "Start2"; integer gOldSound=3; //variable for sound function integer gNewSound=3; float LINEAR_TAU = 0.75; float TARGET_INCREMENT = 0.5; float ANGULAR_TAU = 1.5; float ANGULAR_DAMPING = 0.85; float THETA_INCREMENT = 10; integer KEYMASK = 0; vector pos; vector face; float brake = 0.5; key gOwnerKey; string gOwnerName; key Driver; integer gFLYING = 0; integer nudge = FALSE; integer auto=FALSE; integer CHANNEL = 6; //--------------------------------------------------------------- help() { string chan = (string)CHANNEL; llWhisper(0,"Commands:"); llWhisper(0,"Left click craft = Start "); llWhisper(0,"Left click craft = Stop and release contol"); llWhisper(0,"/" + chan + " 1! through" + " /" + chan + " 9!," + " /" + chan + " slow = Set power"); llWhisper(0,"/" + chan + " menu = Display this list"); llWhisper(0,"PgUp or PgDn = Gain or lose altitude"); llWhisper(0,"Arrow keys = Left, right, Forwards and Back"); llWhisper(0,"Shift + Left or Right arrow = Rotate but maintain view"); llWhisper(0,"PgUp + PgDn or combination similar = Set cruise on or off"); } //--------------------------------------------------------------- SetPhysics() { llSetStatus(STATUS_PHYSICS, TRUE); llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y, TRUE); llSleep(0.1); llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y, FALSE); llSetStatus(STATUS_PHYSICS, FALSE); llMoveToTarget(llGetPos(), 0); llRotLookAt(llGetRot(), 0, 0); llSetStatus(STATUS_PHYSICS, FALSE); } //--------------------------------------------------------------- SetPilotPosition() { llSetSitText("Pilot"); llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); } //--------------------------------------------------------------- SetCamera() { llSetCameraEyeOffset(<-10.0, 0.0, 4.0>); llSetCameraAtOffset(<0, 0.0, 0>); } //--------------------------------------------------------------- SetSpeed(float speed) { TARGET_INCREMENT = speed; llWhisper(0,"Power: " + llGetSubString((string)(TARGET_INCREMENT * 10.0),0,3) + "%"); } //--------------------------------------------------------------- handleKeys() { } //--------------------------------------------------------------- Move() { pos *= brake; // Update position, effectively decays away 'speed' if (pos.x < 0) { pos.x=0; } // Dont allow negative X values else { pos.x += TARGET_INCREMENT; } // Speed increment vector world_target = pos * llGetRot(); // Rotate into world co-ordinate system llMoveToTarget(llGetPos() + world_target, LINEAR_TAU); // Move the vehicle } //--------------------------------------------------------------- CruiseMode() { if (auto) { auto=FALSE; llWhisper(0,"Cruise off"); llSetTimerEvent(0.0); } else { auto=TRUE; llWhisper(0,"Cruise on"); llSetTimerEvent(0.5); } llSleep(0.5); } //--------------------------------------------------------------- enginesound(){ vector vel = llGetVel(); float speed = llVecMag(vel); if(speed <=10){ gNewSound = 0; } else if(speed >=50){ gNewSound = 2; } else { gNewSound = 1; } if(gOldSound != gNewSound){ if(speed <=10){ llLoopSound(gSoundIdle,2.0); } else if(speed >=50){ } else { } gOldSound = gNewSound; } } default { state_entry() { gOwnerKey = llGetOwner(); // The Owner gOwnerName = llKey2Name(llGetOwner()); // The Owners name (WHY, Never Used) SetPilotPosition(); // Position of pilot's seat SetCamera(); // Position camera llSetTimerEvent(0.0); SetPhysics(); // Which Keys we are interested in KEYMASK = CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ML_LBUTTON; TARGET_INCREMENT = 0.5; state Listening; } } //--------------------------------------------------------------- state Listening { state_entry() { llWhisper(0,"Type /" + (string)CHANNEL + " menu for a list of options."); llListen(CHANNEL, "", "", ""); // Listen to anyoen saying anything } on_rez(integer number) { llResetScript(); } // Reset The script if we rez, this ensures a good start up changed(integer change) { if (change & CHANGED_LINK) { llWhisper(0,"if1"); key sitter = llAvatarOnSitTarget(); if(sitter != NULL_KEY) llRequestPermissions(sitter , PERMISSION_TRIGGER_ANIMATION); else { key id = llDetectedKey(0); if (id == Driver) { llWhisper(0,"Thank You for flying!"); gFLYING = 0; auto=FALSE; llSleep(1.5); llSetSitText("Pilot"); llSetStatus(STATUS_PHYSICS, FALSE); llMessageLinked(LINK_ALL_CHILDREN, 0, "stop", gOwnerKey); llSetTimerEvent(0.0); llReleaseControls(); llStopSound(); llResetScript(); llStopSound(); } } } } run_time_permissions(integer perm) { if ( perm & PERMISSION_TRIGGER_ANIMATION ) { llSetAlpha(0.0, ALL_SIDES); // hide prim llStartAnimation(animation); llStopAnimation("sit"); if (gFLYING == 0) { gFLYING = 1; llSetStatus(STATUS_PHYSICS, TRUE); llSetSitText("Ride"); Driver=llGetOwner(); llTriggerSound(gSoundStart,1.0); llSleep(2.5); enginesound(); state StateDriving; } else{llStopSound();} } } //touch_start(integer total_number) //{ // if (gFLYING == 0) //{ //gFLYING = 1; //llSetStatus(STATUS_PHYSICS, TRUE); //llSetSitText("Ride"); //Driver=llDetectedKey(total_number - 1); // llTriggerSound(gSoundStart,1.0); // llSleep(2.5); //enginesound(); // state StateDriving; // } // } // Here is the Listen callback listen(integer channel, string name, key id, string msg) { //if (llSameGroup(id)==1) // This is meant to only allow same group control but it fails //{ string message = llToLower(msg); if (message == "menu") { help(); } //} } } //--------------------------------------------------------------- state StateDriving { state_entry() { llRequestPermissions(Driver, PERMISSION_TAKE_CONTROLS); llMoveToTarget(llGetPos(), LINEAR_TAU); llRotLookAt(llGetRot(), ANGULAR_TAU, 1.0); llListen(CHANNEL, "", Driver, ""); llMessageLinked(LINK_ALL_CHILDREN, 0, "light", gOwnerKey); } // Handles Key press events control(key driver, integer keys, integer edges) { pos *= brake; face.x *= brake; face.z *= brake; nudge = FALSE; if (keys & CONTROL_FWD) { if (pos.x < 0) { pos.x=0; } else { pos.x += TARGET_INCREMENT; } nudge = TRUE; } if (keys & CONTROL_BACK) { if (pos.x > 0) { pos.x=0; } else { pos.x -= TARGET_INCREMENT; } nudge = TRUE; } if (keys & CONTROL_UP) { llMessageLinked(LINK_ALL_CHILDREN, 0, "fast", driver); if(pos.z<0) { pos.z=0; } else { pos.z += TARGET_INCREMENT; } face.x=0; nudge = TRUE; } if (keys & CONTROL_DOWN) { llMessageLinked(LINK_ALL_CHILDREN, 0, "fast", driver); if(pos.z>0) { pos.z=0; } else { pos.z -= TARGET_INCREMENT; } face.x=0; nudge = TRUE; } if ((keys) & (CONTROL_LEFT|CONTROL_ROT_LEFT)) { if (face.z < 0) { face.z=0; } else { face.z += THETA_INCREMENT; } nudge = TRUE; } if ((keys) & (CONTROL_RIGHT|CONTROL_ROT_RIGHT)) { if (face.z > 0) { face.z=0; } else { face.z -= THETA_INCREMENT; } nudge = TRUE; } if ((keys & CONTROL_UP) && (keys & CONTROL_DOWN)) { CruiseMode(); } if (nudge) { llWhisper(0,"ok6"); vector world_target = pos * llGetRot(); llMoveToTarget(llGetPos() + world_target, LINEAR_TAU); vector eul = face; eul *= DEG_TO_RAD; rotation quat = llEuler2Rot( eul ); rotation rot = quat * llGetRot(); llRotLookAt(rot, ANGULAR_TAU, ANGULAR_DAMPING); } } timer() { Move(); } }
×
×
  • Create New...