• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Prallluftschifffertigung

ooooookey, eigentlich dachte ich ja, ich wuerde heute fertig, indem ich Euch noch die Skripte geb... aber ich schulde Euch noch das HUD. naja, fliegen tut das Teil auch ohne HUD, ich reich's Euch trotzdem noch nach. erstmal die Skripte. die erklaer ich nicht extra, ich hab sie fuer mich als Copy-Paste-Programmierer so umfangreich kommentiert, dass sie eigentlich auch fuer Anfaenger verstaendlich sein muessten:

in den Fahrersitz, der gleichzeitig Euer Rootprims ist, steckt Ihr folgendes Skript:

Code:
//glauchauer slinfo.de blimp
//fahrersitz und root
//use it, change it, enjoy it, give credit, or not ...
//contact your local Goethe-Institut if there's something you don't understand


float fahrhoehe;                                // [m]            angestrebte Fahrhoehe
float delta_fahrhoehe =             0.5;        // [m]            Schrittgroesse fuer Fahrhoehenaenderung
vector position;
float geschwindigkeit_steig_sink =  0.5;        // [m/s]          Steig- Sinkgeschwinigkeit
float geschwindigkeit_drehen =     15.0;        // [deg/s]        maximale Drehgeschwindigkeit
float omega;                                    // [/s]           angestrebte Drehgeschwindigkeit
float geschwindigkeit_vorwaerts =   5.0;        // [m/s]          Vorwaertsgeschwindigkeit
float geschwindigkeit_rueckwaerts = 2.5;        // [m/s]          Rueckwaertsgeschwindigkeit
vector linear_motor =               <0,0,0>;    // [m/s]          Lineargeschwindigkeiten <vor, seitwaerts, hoch>
float multiplikator_delta_fahrhoehe = 1.2;      //                Multiplikator zum Erhoehen der Schrittgroesse fuer Fahrhoehenaenderung
integer i = 1;
string objektname_alt;
string objektname_neu;
key eigentuemer_UUID;
vector kamera_position = <-1.0, 0, 0.5>;        // [m, m, m]      Position der Kamera vor, neben, ueber dem Primmittelpunkt
vector kamera_fokus = <2, 0, 0.1>;              // [m, m, m]      wohin die Kamera schaut, vor, neben, ueber dem Primmittelpunkt
string kamera = "kamera_eins";                  //                die verschiedenen Kameras


//===== >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===== eigene Funktionen Anfang ==============================================

geradehaengen()
{
    rotation ausgangslage_rot = llGetRot();
    vector ausgangslage_winkel = llRot2Euler(ausgangslage_rot);
    float rollwinkel = ausgangslage_winkel.x * RAD_TO_DEG;
    float nickwinkel = ausgangslage_winkel.y * RAD_TO_DEG;
    float gierwinkel = ausgangslage_winkel.z * RAD_TO_DEG;
    while(llFabs(rollwinkel) > 1.0 | llFabs(nickwinkel) > 1.0)
    {
        // vector endlage_winkel = <0.0, 0.0, gierwinkel>; // den Gierwinkel (die Himmelsrichtung) wollen wir nicht veraendern
        rollwinkel = 0.0; // gerade Endlage
        nickwinkel = 0.0; // gerade Endlage
        vector endlage_winkel = <rollwinkel, nickwinkel, gierwinkel> * DEG_TO_RAD;
        rotation endlage_rot = llEuler2Rot(endlage_winkel);
        llSetRot(endlage_rot);
    }
}

fahrhoeheFestlegen()
{
    position = llGetPos();
    fahrhoehe = position.z + 0.2; // beginnt, 20cm ueber der Ausgangsposition zu schweben
}

//===== eigene Funktionen Ende ================================================
//=============================================================================


//===== >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===== Kameras Anfang ========================================================

schalt_auf_kamera_eins() { //Kamera aus
    llClearCameraParams(); // reset camera to default
    llSetCameraParams([
        CAMERA_ACTIVE, 0 // 1 is active, 0 is inactive
    ]);
}

schalt_auf_kamera_zwei() { //50m zurueck
    llClearCameraParams(); // reset camera to default
    llSetCameraParams([
        CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
        CAMERA_BEHINDNESS_ANGLE, 15.0, // (0 to 180) degrees
        CAMERA_BEHINDNESS_LAG, 0.5, // (0 to 3) seconds
        CAMERA_DISTANCE, 50.0, // ( 0.5 to 10) meters
        //CAMERA_FOCUS, <0.0,0.0,5.0>, // region relative position
        CAMERA_FOCUS_LAG, 0.05 , // (0 to 3) seconds
        CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE)
        CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
        CAMERA_PITCH, 20.0, // (-45 to 80) degrees
        //CAMERA_POSITION, <0.0,0.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.0, // (0 to 4) meters
        CAMERA_FOCUS_OFFSET, <3.0,0.0,2.0> // <-10,-10,-10> to <10,10,10> meters
    ]);
}

//===== Kameras Ende ==========================================================
//=============================================================================


default {

    on_rez(integer indeddscher)
    {
        llResetScript();
    }

    state_entry()
    {
        // erstmal gehen wir auf Nummer sicher und sehen zu, dass wir das Teil nicht "physisch" eingepackt haben und es uns jetzt wegfliegt
        llSetStatus(STATUS_PHYSICS, FALSE);

        // dann ermitteln wir den Eigentuemer, um dem Ballon einen einmaligen Namen zu geben, unter dem ihn das HUD erkennt
        objektname_alt = llGetObjectName();
        eigentuemer_UUID = llGetOwner();
        objektname_neu = "zeppelin-" + (string)eigentuemer_UUID;
                    
//----- Fahrhoehe festlegen
        fahrhoeheFestlegen();


//----- Sitz- und Kameraeinrichtung
        llSitTarget(<0, 0, -.2>, <0,0,0,1>); //vor, neben, ueber dem Sitzmittelpunkt, Richtung
        llSetSitText("Fahr mich");
        llSetCameraEyeOffset(kamera_position);
        // llSetCameraEyeOffset(<-20, 0, 1>); // the camera is 20m behind and 1m above the object
        llSetCameraAtOffset(kamera_fokus);


//===== >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===== Fahrzeugeigenschaften Anfang ==========================================

        linear_motor.z = geschwindigkeit_steig_sink;

        llSetVehicleType(VEHICLE_TYPE_BALLOON);

        llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <6, 3, 3> ); // geringe lineare Reibung in Fahrtrichtung, hoeher zur Seite und in die Hoehe
        llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, <6, 1, 1> ); // geringe axialeReibung in Fahrtrichtung, hoeher zur Seite und in die Hoehe

        // ============ Linearmotor
        llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> );
        llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 ); // [s] Zeit zu vollem Motoreffekt
        llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 10 ); // [s] Zeit zu vollem Motorstillstand

        // ============ Winkelmotor
        llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> );
        llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 6 ); // [s] Zeit zu vollem Motoreffekt
        llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 10 ); // [s] Zeit zu vollem Motorstillstand

        // ============ Hoehenregulierung
        llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, fahrhoehe ); // [m] angestrebte Fahrhoehe
        llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.4 ); // von 0 (aprupt) bis 1 (glatt)
        llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 30 ); // Periodenlaenge der Schwingung zur Fahrhoehe
        llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 ); //  von 0 (normale Gravitation) bis 1 (schwerelos)

        // no linear deflection
        llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0 );
        llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 5 );

        // no angular deflection
        llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 );
        llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 15 );

        // Stehaufmaennchen
        llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.1 );
        llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10.0 );

        // keine Querneigung
        llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 );
        llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.7 );
        llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 5 );

        // default rotation of local frame
        llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> );

        // remove flags
        llRemoveVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP
            | VEHICLE_FLAG_HOVER_WATER_ONLY
            | VEHICLE_FLAG_HOVER_TERRAIN_ONLY
            | VEHICLE_FLAG_HOVER_UP_ONLY
            | VEHICLE_FLAG_LIMIT_ROLL_ONLY
            | VEHICLE_FLAG_LIMIT_MOTOR_UP );

        // set flags
        llSetVehicleFlags( VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT          );
//            | VEHICLE_FLAG_LIMIT_ROLL_ONLY );

//===== Fahrzeugeigenschaften Ende ============================================
//=============================================================================
    }

    touch_start(integer num) {
        key gAvatarKey = llDetectedKey(0);
        llLoadURL(gAvatarKey, "SLinfo.de - Social Network Second Life.", "http://www.slinfo.de/vb_forum");
     }

    
    changed(integer change) {
        if (change & CHANGED_LINK) {
            key agent = llAvatarOnSitTarget();
            if (agent) {
                if (agent != llGetOwner()) {
                    // jemand anderes als der Eigentuemer setzt sich in den Zeppelin
                    // llSay(0, "Schoen, dass Du Dich auf einen GRUENEN Sitz gesetzt hast, um einen Ausflug zu geniessen. Um das Luftschiff selbst steuern zu koennen, folge dem Link http://slurl.com/secondlife/Junapel/146/172/23 und kauf eins. Danke.");
                    // llGiveInventory(agent, "glauchauer shop next to the SLinfo.de headquarters");
                    // llUnSit(agent);
                    // llPushObject(agent, <0,0,10>, ZERO_VECTOR, FALSE);

                } else {
                    // der Eigentuemer setzt sich in den Zeppelin
                    llSetStatus(STATUS_PHYSICS, TRUE);
                    //----- wir fordern die Kontrolle ueber die Steuerungstasten und die Kamera
                    llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA);
                    schalt_auf_kamera_eins();
                    llSay(9610, (string)fahrhoehe);
                }

            } else {
                // der Eigentuemer steht auf
                llSetObjectName(objektname_alt); // wir setzen den Objektnamen zurueck, um den Eigentuemer nicht zu veraergern
                llSetStatus(STATUS_PHYSICS, FALSE);
                llSetCameraParams([CAMERA_ACTIVE, 0]); // wir geben dem Benutzer die Kontrolle ueber seine Kamera zurueck
                llReleaseControls(); // wir geben dem Benutzer die Kontrolle ueber seine Bewegung zurueck
                //geradehaengen();
                fahrhoeheFestlegen();
            }
        }
    }

    //________wir nehmen die Kontrolle ueber die Steuerungstasten und die Kamera

    run_time_permissions(integer perm) {
        if (perm) {
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE);
        }

        if (perm & PERMISSION_CONTROL_CAMERA) {
            llSetCameraParams([CAMERA_ACTIVE, 0]);
        }
    }

    
//===== >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===== Bewegungs- und Kamerakontrolle Anfang =================================

    control(key id, integer level, integer edge) {

        //===== Bewegung

        //----- links

        if(level & (CONTROL_ROT_LEFT)) { // linke Cursortaste
            omega = geschwindigkeit_drehen * PI / 180;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach LINKS", NULL_KEY);
        } else if (edge & (CONTROL_LEFT | CONTROL_ROT_LEFT)) {
            omega = 0.0;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach LINKS", NULL_KEY);
        }

        //----- rechts

        if(level & (CONTROL_ROT_RIGHT)) { //rechte Cursortaste
            omega = -geschwindigkeit_drehen * PI / 180;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach RECHTS", NULL_KEY);
        } else if (edge & (CONTROL_RIGHT | CONTROL_ROT_RIGHT)) {
            omega = 0.0;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach RECHTS", NULL_KEY);
        }

        // ----- vorwaerts

        if(level & CONTROL_FWD) {
            linear_motor.x = geschwindigkeit_vorwaerts;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach VORN", NULL_KEY);
        } else if (edge & CONTROL_FWD) {
            linear_motor.x = 0;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach VORN", NULL_KEY);
        }

        //----- rueckwaerts

        if(level & CONTROL_BACK) {
            linear_motor.x = -geschwindigkeit_rueckwaerts;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach HINTEN", NULL_KEY);
        } else if (edge & CONTROL_BACK) {
            linear_motor.x = 0;
            llSleep(0.0);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach HINTEN", NULL_KEY);
        }

        //----- hoch

        if(level & CONTROL_UP) {
            if (fahrhoehe < 1000) // hoeher als 1000m kann ein SL-Ballon nicht
            {
                if (i<=5) fahrhoehe += i/5;
                else if (i<=10) fahrhoehe += i/4;
                else if (i<=15) fahrhoehe += i/3;
                else if (i<=20) fahrhoehe += i/2;
                else fahrhoehe += 10.0;

                i+=1;                

                llSetObjectName(objektname_neu); // wir benutzen "unseren" Objektnamen, damit uns das HUD hoert
                llSay(9610, (string)fahrhoehe);
                llSetObjectName(objektname_alt); // wir setzen den Objektnamen zurueck, um den Eigentuemer nicht zu veraergern

                llSleep(0.5);
                llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach OBEN", NULL_KEY);
            }
            else
            {
                fahrhoehe = 1000.0;
                llSleep(0.3);
                llSay(9610, (string)fahrhoehe);
                llWhisper(0, "Hoeher als 1000m fliegt der Ballon nicht.");
            }
        }
        else if (edge & CONTROL_UP) {
            //            linear_motor.z = 0;
            i=1;
            llSleep(0.3);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach OBEN", NULL_KEY);
            //geradehaengen();
        }

        //----- runter

        if(level & CONTROL_DOWN) {
            if (fahrhoehe > 0) // wir wollen nicht tauchen
            {
                if (i<=5) fahrhoehe -= i/5;
                else if (i<=10) fahrhoehe -= i/4;
                else if (i<=15) fahrhoehe -= i/3;
                else if (i<=20) fahrhoehe -= i/2;
                else fahrhoehe -= 10.0;

                i+=1;

                llSetObjectName(objektname_neu); // wir benutzen "unseren" Objektnamen, damit uns das HUD hoert
                llSay(9610, (string)fahrhoehe);
                llSetObjectName(objektname_alt); // wir setzen den Objektnamen zurueck, um den Eigentuemer nicht zu veraergern

                llSleep(0.5);
                llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen nach UNTEN", NULL_KEY);
            }
            else
            {
                fahrhoehe = 0;
                llSleep(0.3);
                llSay(9610, (string)fahrhoehe);
                llWhisper(0, "Unter den Meeresspiegel fliegt der Ballon nicht.");
            }
        } else if (edge & CONTROL_DOWN) {
//            linear_motor.z = 0;
            i=1;
            llSleep(0.3);
            llMessageLinked(LINK_ALL_CHILDREN , 0, "wir fliegen NICHT mehr nach UNTEN", NULL_KEY);
            //geradehaengen();
        }


        //----- Bewegung anwenden

        llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,linear_motor);
        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0,0,omega>);
        llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, fahrhoehe);

        //===== Kamera

        if(level & CONTROL_RIGHT) { // [shift] rechte cursortaste
            if (kamera == "kamera_eins") {
                kamera = "kamera_zwei";
                schalt_auf_kamera_zwei();
                llSleep(2.5);
            }

            else if (kamera == "kamera_zwei") {
                kamera = "kamera_eins";
                schalt_auf_kamera_eins();
                llSleep(2.5);
            }
        }
    }

//===== Bewegungs- und Kamerakontrolle Ende ===================================
//=============================================================================

}
das hier kommt in den linken Propeller und den Knubbel daran:

Code:
//glauchauer slinfo.de blimp
//propeller, links
//use it, change it, enjoy it, give credit, or not ...
//contact your local Goethe-Institut if there's something you don't understand


float geschwindigkeit_ruhe = 0.1;
float geschwindigkeit_lenken = 1.0;
float schalter_lenken = 0.0;
float geschwindigkeit_vor = 5.0;
float schalter_vor = 0.0;
float geschwindigkeit_hinter = 3.0;
float schalter_hinter = 0.0;
float drehgeschwindigkeit = 0.0;

default
{

    on_rez(integer indeddscher)
    {
        llResetScript();
    }

    state_entry()
    {
        drehgeschwindigkeit = geschwindigkeit_ruhe;
    }

    link_message(integer sender, integer num, string message, key id)
    {

        if (message == "wir fliegen nach VORN") schalter_vor = 1.0;
        else if (message == "wir fliegen nach HINTEN") schalter_hinter = 1.0;
        else if (message == "wir fliegen nach LINKS") schalter_lenken = 1.0;  // diese zwei Werte unterscheiden sich zwischen
        else if (message == "wir fliegen nach RECHTS") schalter_lenken = -1.0; // linkem und rechtem Propeller in ihrem Vorzeichen
        else if (message == "wir fliegen NICHT mehr nach VORN") schalter_vor = 0.0;
        else if (message == "wir fliegen NICHT mehr nach HINTEN") schalter_hinter = 0.0;
        else if (message == "wir fliegen NICHT mehr nach LINKS") schalter_lenken = 0.0;
        else if (message == "wir fliegen NICHT mehr nach RECHTS") schalter_lenken = 0.0;

        llSleep(0.2);
        drehgeschwindigkeit = schalter_vor * geschwindigkeit_vor + schalter_hinter * geschwindigkeit_hinter + schalter_lenken * geschwindigkeit_lenken + geschwindigkeit_ruhe;
        
        llSleep(0.2);
        llTargetOmega(<1.0,0.0,0.0>,-drehgeschwindigkeit,1.0);
     }
}
das hier in die rechten:

Code:
//glauchauer slinfo.de blimp
//propeller, rechts
//use it, change it, enjoy it, give credit, or not ...
//contact your local Goethe-Institut if there's something you don't understand


float geschwindigkeit_ruhe = 0.1;
float geschwindigkeit_lenken = 1.0;
float schalter_lenken = 0.0;
float geschwindigkeit_vor = 5.0;
float schalter_vor = 0.0;
float geschwindigkeit_hinter = 3.0;
float schalter_hinter = 0.0;
float drehgeschwindigkeit = 0.0;

default
{

    on_rez(integer indeddscher)
    {
        llResetScript();
    }

    state_entry()
    {
        drehgeschwindigkeit = geschwindigkeit_ruhe;
    }

    link_message(integer sender, integer num, string message, key id)
    {

        if (message == "wir fliegen nach VORN") schalter_vor = 1.0;
        else if (message == "wir fliegen nach HINTEN") schalter_hinter = 1.0;
        else if (message == "wir fliegen nach LINKS") schalter_lenken = -1.0;  // diese zwei Werte unterscheiden sich zwischen
        else if (message == "wir fliegen nach RECHTS") schalter_lenken = 1.0; // linkem und rechtem Propeller in ihrem Vorzeichen
        else if (message == "wir fliegen NICHT mehr nach VORN") schalter_vor = 0.0;
        else if (message == "wir fliegen NICHT mehr nach HINTEN") schalter_hinter = 0.0;
        else if (message == "wir fliegen NICHT mehr nach LINKS") schalter_lenken = 0.0;
        else if (message == "wir fliegen NICHT mehr nach RECHTS") schalter_lenken = 0.0;

        llSleep(0.2);
        drehgeschwindigkeit = schalter_vor * geschwindigkeit_vor + schalter_hinter * geschwindigkeit_hinter + schalter_lenken * geschwindigkeit_lenken + geschwindigkeit_ruhe;
        
        llSleep(0.2);
        llTargetOmega(<1.0,0.0,0.0>,-drehgeschwindigkeit,1.0);
     }
}
das hier in das Hoehenruder:

Code:
//glauchauer slinfo.de blimp
//hoehenruder
//use it, change it, enjoy it, give credit, or not ...
//contact your local Goethe-Institut if there's something you don't understand


rotation geradeaus;
rotation nach_oben;
rotation nach_unten;
rotation ausrichtung;

default
{

    on_rez(integer indeddscher)
    {
        llResetScript();
    }

    state_entry()
    {
        geradeaus = llEuler2Rot(<0.0, (0.0 + 0), 90.0> * DEG_TO_RAD);
        nach_oben = llEuler2Rot(<0.0, (0.0 - 30), 90.0> * DEG_TO_RAD);
        nach_unten = llEuler2Rot(<0.0, (0.0 + 30), 90.0> * DEG_TO_RAD);
        ausrichtung = geradeaus;
    }

    link_message(integer sender, integer num, string message, key id)
    {

        if (message == "wir fliegen nach OBEN") ausrichtung = nach_oben;
        else if (message == "wir fliegen nach UNTEN") ausrichtung = nach_unten;
        else if (message == "wir fliegen NICHT mehr nach OBEN") ausrichtung = geradeaus;
        else if (message == "wir fliegen NICHT mehr nach UNTEN") ausrichtung = geradeaus;

        llSetLocalRot(ausrichtung);
     }
}
und das Skript kommt ins Seitenruder:

Code:
//glauchauer slinfo.de blimp
//seitenruder
//use it, change it, enjoy it, give credit, or not ...
//contact your local Goethe-Institut if there's something you don't understand


rotation geradeaus;
rotation nach_links;
rotation nach_rechts;
rotation ausrichtung;

default
{

    on_rez(integer indeddscher)
    {
        llResetScript();
    }

    state_entry()
    {
        geradeaus = llEuler2Rot(<0.0, 0.0, (90 + 0) * DEG_TO_RAD>);
        nach_links = llEuler2Rot(<0.0, 0.0, (90 - 30) * DEG_TO_RAD>);
        nach_rechts = llEuler2Rot(<0.0, 0.0, (90 + 30) * DEG_TO_RAD>);
        ausrichtung = geradeaus;
    }

    link_message(integer sender, integer num, string message, key id)
    {

        if (message == "wir fliegen nach LINKS") ausrichtung = nach_links;
        else if (message == "wir fliegen nach RECHTS") ausrichtung = nach_rechts;
        else if (message == "wir fliegen NICHT mehr nach LINKS") ausrichtung = geradeaus;
        else if (message == "wir fliegen NICHT mehr nach RECHTS") ausrichtung = geradeaus;

        llSetLocalRot(ausrichtung);
     }
}
ferrdsch. *Euch das HUD schulde*

aaaah, nee, Moment. wo ich Euch das schon zeige. ich hab zwei Probleme. ich hab teilweise willkuerlich llSleeps verstreut, in dem Versuch, den Propellern und den Rudern Zeit zu lassen zu reagieren. das ist mir so richtig nicht gelungen. das zweite besteht darin, dass ich beim Aufstehen eine Fehlermeldung bekomme, weil die Kamerakontrolle nicht zurueckgegeben wird, wie ich mir das dachte. also wenn sich wirklich jemand die Skripte durchlesen sollte und Ahnung davon hat: DIE zwei Probleme wuerde ich gern noch irgendwann loesen.
 
<-----

hätte da einen Mangel festegtellt: beim aufstehen komm ich nichtmehr aus die Gondel. Stehe vor dem Sitz und komme seitlich nicht vorbei weil"Decke" zu niedig ist (zumindest mit den Schuhen) aber vorher Schuhe ausziehen um auszusteigen ist aber auch doof
 
Sehr geehrte Frau Runo,

Dankend nehmen wir Ihre Beschwerde entgegen. Zur temporaeren Loesung des Problems koennten wir Ihnen mehrere Vorschlaege unterbreiten, die die vielfaeltigen Moeglichkeiten innerhalb SL ausnutzen. Als verantwortungsvolles Unternehmen werden wir uns jedoch der Ursache des unangenehmen Vorfalls annehmen, den Mangel beheben und Ihnen ein verbessertes Modell zur Verfuegung stellen, sobald unsere Inschenoere ein solches zu erstellen die Zeit gefunden haben werden. Wir bitten Sie, sich bis dahin in Geduld zu ueben, und verbleiben
mit freundlichen Gruessen

glauchauer engineering - abteilung luftschiffe
Glauch Auer
 
done. hier, neben Version 0.9.17, steht jetzt eine Kiste mit Version 0.9.18. dieser Blimp hat eine hoehere Gondel und hoehere Sitze. selbst mein max-size-Glauch passt da jetzt rein und auch wieder raus.

*"Mist, der hatte aber auch keine Stoeckelschuhe an" ueberleg*
 
erster Nachtrag

:oops:, Ines80 hat mich mit ihrem Beitrag gerade daran erinnert: da war doch noch das Skript fuer die Neonwerbung. aber Ihr habt natuerlich laengst durchschaut, dass das Skript weiter nichts macht, als zu schauen, wo die Sonne gerade steht, und in Abhaengigkeit davon die Werbeprims (un-)sichtbar macht, und Euch die paar Zeilen selbst zusammengehackt:

Code:
default
{
   state_entry()
   {
        while(TRUE)
        {
            vector sun = llGetSunDirection();
            if (sun.z <= 0) llSetAlpha(1, ALL_SIDES);
            else llSetAlpha(0, ALL_SIDES);
            llSleep(0.5);
        }
   }
}
sogar noch optimaler als ich, mit einem timer, der nur alle 5 Minuten schaut und nicht alle halbe Sekunde, und der wohl ein klein weniger laggt.
 

Users who are viewing this thread

Zurück
Oben Unten