1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. 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.
    Information ausblenden
  3. 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.
    Information ausblenden

Fahrzeug Script

Dieses Thema im Forum "OpenSim - Technische Fragen" wurde erstellt von Xenos Yifu, 3. August 2011.

  1. Xenos Yifu

    Xenos Yifu Guest

    Hat schon jemand ein taugliches Fahrzeug Script?
    Ich habe selber nur ein bedingt taugliches, grausam ruckelig und es nimmt keinerlei Rücksichten auf Kollisionsabfrage.

    Eigentlich suche ich eins zum segeln, wäre aber auch zufrieden eins zu bekommen was korrekt lenkt, stabilen Dauerschub am besten Schrittweise
    Schubkorrektur hat und eben korrekte Kollisionabfrage hat.

    Mit Booten durch Berge zu fahren ist doch irgendwie doof^^.


    .... natürlich für OS, aber ich denke das sieht man ja am Unterforum ;)
     
  2. Xenos Yifu

    Xenos Yifu Guest

    Habe ein Script gefunden was ich mal ausprobieren wollte.
    Ergebnis: egal wo ich es reinpacke und benutze "ride" und anschließend aufstehe kommt: "You are not the Owner of the Vehikel".

    Also gut dachte ich mir, zum testen rezze ich ein Würfel und packe es darein.
    Selbes Ergebnis, das geht ja wohl nicht an, wem bitte soll das Prim denn gehören ausser mir?!

    Hier mal das Script:

    Code:
    // Script Name: Boat_lsl_for_opensim.lsl
    // Author: Jules
    //Fixed some issues I get with boat.lsl while using opensim 0.7.0.2. Namely that I get easily stuck upside down or trying to move "forward" into the ground. Also added a boat message on channel 8000, to find boat if lost
    
    // Downloaded from : http://www.free-lsl-scripts.com/freescripts.plx?ID=1511
    
    // This program is free software; you can redistribute it and/or modify it.
    // License information must be included in any script you give out or use.
    // This script is licensed under the Creative Commons Attribution-Share Alike 3.0 License
    // from http://creativecommons.org/licenses/by-sa/3.0 unless licenses are
    // included in the script or comments by the original author,in which case
    // the authors license must be followed.
    
    // Please leave any authors credits intact in any script you use or publish.
    ////////////////////////////////////////////////////////////////////
    // From the book:
    //
    // Scripting Recipes for Second Life
    // by Jeff Heaton (Encog Dod in SL)
    // ISBN: 160439000X
    // Copyright 2007 by Heaton Research, Inc.
    //
    // This script may be freely copied and modified so long as this header
    // remains unmodified.
    //
    // For more information about this book visit the following web site:
    //
    // http://www.heatonresearch.com/articles/series/22/
    //
    // additional fixes for opensim by Renmiri Writer @ Second Life on 9/12/2010
    
    float forward_power = 25; //Power used to go forward (1 to 30)
    float reverse_power = -15; //Power ued to go reverse (-1 to -30)
    float turning_ratio = 5.0; //How sharply the vehicle turns. Less is more sharply. (.1 to 10)
    string sit_message = "Ride"; //Sit message
    vector green = <0,1,0>;
    string not_owner_message = "You are not the owner of this vehicle ..."; //Not owner message
    
    //Anything past this point should only be modfied if you know what you are doing
    
    default
    {
        state_entry()
        {
            llSetSitText(sit_message);
            llListen(8000, "","", "" );
            // forward-back,left-right,updown
            llSitTarget(<0.25,0,0.25>, ZERO_ROTATION );
            llSetText(".message ch 8000 to find me. \n use Pageup, Pagedown if you get stuck \n touch me to straighten the boat",green,1.0);
    
            llSetCameraEyeOffset(<-12, 0.0, 5.0>);
            llSetCameraAtOffset(<1.0, 0.0, 2.0>);
    
            llPreloadSound("boat_start");
            llPreloadSound("boat_run");
            llSetVehicleFlags(0);
            llSetVehicleType(VEHICLE_TYPE_BOAT);
            llSetVehicleFlags(VEHICLE_FLAG_HOVER_UP_ONLY | VEHICLE_FLAG_HOVER_WATER_ONLY);
            llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <1, 1, 1> );
            llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 2 );
    
    
    
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0>);
            llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1);
            llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.05);
    
            llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1 );
            llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 5 );
            llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0.15);
            llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY,.5 );
            llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 2.0 );
            llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 );
            llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 );
            llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3 );
            llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5 );
            llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 );
            llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5 );
            llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2 );
            llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 1 );
            llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.1 );
            llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, .5 );
            llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, ZERO_ROTATION );
        }
    
        changed(integer change)
        {
            if (change & CHANGED_LINK)
            {
                key agent = llAvatarOnSitTarget();
    
                if (agent)
                {
                    if (agent != llGetOwner())
                    {
                        llSay(0, not_owner_message);
                        llUnSit(agent);
                        llPushObject(agent, <0,0,50>, ZERO_VECTOR, FALSE);
                    }
                    else
                    {
                        llTriggerSound("boat_start",1);
    
    
                        llMessageLinked(LINK_ALL_CHILDREN , 0, "start", NULL_KEY);
                        llSleep(.4);
                        llSetStatus(STATUS_PHYSICS, TRUE);
                        llSleep(.1);
                        llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
    
                        llLoopSound("boat_run",1);
                    }
                }
                else
                {
                    llStopSound();
    
                    llSetStatus(STATUS_PHYSICS, FALSE);
                    llSleep(.1);
                    llMessageLinked(LINK_ALL_CHILDREN , 0, "stop", NULL_KEY);
                    llSleep(.4);
                    llReleaseControls();
                    llTargetOmega(<0,0,0>,PI,0);
    
                    llResetScript();
                }
            }
    
        }
    
        run_time_permissions(integer perm)
        {
            if (perm)
            {
                llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_DOWN | CONTROL_UP | CONTROL_RIGHT |
                    CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);
            }
        }
    
        control(key id, integer level, integer edge)
        {
            integer reverse=1;
            vector angular_motor;
    
            //get current speed
            vector vel = llGetVel();
            float speed = llVecMag(vel);
    
            //car controls
            if(level & CONTROL_FWD)
            {
                llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <forward_power,0,0>);
                reverse=1;
            }
            if(level & CONTROL_BACK)
            {
                llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <reverse_power,0,0>);
                reverse = -1;
            }
    
            if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
            {
                angular_motor.z -= speed / turning_ratio * reverse;
                angular_motor.x += 15;
            }
    
            if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
            {
                angular_motor.z += speed / turning_ratio * reverse;
                angular_motor.x -= 15;
            }
    
            if(level & (CONTROL_UP|CONTROL_DOWN))
            {
                if (level & (CONTROL_UP))
                    llSay(0,"UP");
                if (level & (CONTROL_DOWN))
                    llSay(0,"DOWN");
                vector position = llGetPos();
                llSay(0, (string)position);
                vector vRadBase = llRot2Euler( llGetRot() );
                //-- round the z-axis to the nearest 90deg (PI_BY_TWO = 90deg in radians)
                llSetRot( llEuler2Rot( <0.0, 0.0, llRound( vRadBase.z / PI_BY_TWO ) * PI_BY_TWO > ) );
            }
    
            llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
    
        } //end control
        listen( integer channel, string name, key id, string message )
        {
    
            integer c = llStringLength(message);
            vector position = llGetPos();
            string newmessage = "" ;
            llSay(0,"messsage "+message+" heard by boat at "+ (string)position);
        } //end listen
        touch_start( integer vIntTouches )
        {
            //-- convert our rotation to x/y/z radians
            vector vRadBase = llRot2Euler( llGetRot() );
            //-- round the z-axis to the nearest 90deg (PI_BY_TWO = 90deg in radians)
            llSetRot( llEuler2Rot( <0.0, 0.0, llRound( vRadBase.z / PI_BY_TWO ) * PI_BY_TWO > ) );
        } //end touch
    
    
    } //end default
    
    
    // Look for updates at : http://www.free-lsl-scripts.com/freescripts.plx?ID=1511
    // __END__
    
    
    
     
  3. Tanja Byron

    Tanja Byron Superstar

    Beiträge:
    3.220
    Zustimmungen:
    214
    Punkte für Erfolge:
    64
    Ich habe keine Ahnung von Scripten oder Open Sim!

    Sollte es aber funktionieren und dich nur die Meldung stören, würde ich sie einfach löschen.

    ...
    string not_owner_message = "You are not the owner of this vehicle ..."; //Not owner message
    ...
     
  4. Datalo Tenk

    Datalo Tenk Nutzer

    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  5. Simon Illyar

    Simon Illyar Freund/in des Forums

    Beiträge:
    712
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Was dein Script oben angeht, liegt der Fehler vermutlich im change-event.


    Code:
    if (change & CHANGED_LINK)
            {
                key agent = llAvatarOnSitTarget();
    
                [COLOR="Red"]if (agent)[/COLOR]
                {
                    if (agent != llGetOwner())
                    {
                        llSay(0, not_owner_message);
                        llUnSit(agent);
                        llPushObject(agent, <0,0,50>, ZERO_VECTOR, FALSE);
                    }
                    else
                    {
                        llTriggerSound("boat_start",1);
    
    
                        llMessageLinked(LINK_ALL_CHILDREN , 0, "start", NULL_KEY);
                        llSleep(.4);
                        llSetStatus(STATUS_PHYSICS, TRUE);
                        llSleep(.1);
                        llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
    
                        llLoopSound("boat_run",1);
                    }
                }
    key agent = llAvatarOnSitTarget();

    Da bekommt er den Key desjenigen der sich da drauf gesetzt hat. Wenn du nun aufstehst ist der Key = NULL_KEY also kein key.

    if (agent != llGetOwner())

    Da fragt er ob der Key der selbe ist wie der vom Owner. Wenn er da nen NULL_KEY hat, ist das natürlich nicht der selbe wie der vom Owner.

    Eigendlich sollte kurz davor die Zeile

    if (agent)

    genau das abfangen. Aber ich schätze mal, dass das in OpenSim nicht funktioniert.

    Versuch stattdessen mal

    if(agent != NULL_KEY)

    und schau ob es dann geht.



    Gruß Simon
     
  6. Xenos Yifu

    Xenos Yifu Guest

    @Simon: Danke, werde ich mal probieren :)
    @Tanja: Und selbst wenn das Teil Hallelulia schreit, wäre mir wurscht, aber es fährt nicht.

    Und wie man ja schon länger weiß: Ein Taucher der nicht taucht, taucht nichts ;)
     
  7. Xenos Yifu

    Xenos Yifu Guest

    So habe die Zeile editiert, die Owner Meldung wird nicht mehr angezeigt.
    Leider funzt das Script nicht, sobald ich move forward (Pfeiltaste) drücke
    rutscht die Kamera so 10 Meter unter das Boot, welches sich aber keinen Millimeter bewegt, Mist.

    Also frage ich nochmal: Hat jemand ein Script welches funzt?

    Schönes WE :)
     
  8. Xenos Yifu

    Xenos Yifu Guest

    ... ach so, noch was, immer wenn ich das Script speicher kommt die Meldung das eine Engine nicht funzt und deswegen eine andere verwendet wird. Danach kommt die Meldung das alles ok ist und das Script läuft.
     
  9. Michelle Argus

    Michelle Argus Aktiver Nutzer

    Beiträge:
    439
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Lasse immer die erste Zeile von Scripte leer, in der erstern Zeile kann man definieren welche Scriptengine verwendet werden soll wenn es eine spezielle sein soll...
     
  10. Xenos Yifu

    Xenos Yifu Guest

    Hmm, womit öffne ich das File und was mache ich mit dem Inhalt der die Datei: OKC_Racer_Kit_v0.186X

    Die Endung "*.186X" sagt mir nun gar nichts :?
     
  11. Michelle Argus

    Michelle Argus Aktiver Nutzer

    Beiträge:
    439
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das ist die Version v0.186X ;)

    Auf der webseite von dem Link ist eine iar datei die du per os in dein inventar laden kannst...
     
  12. Xenos Yifu

    Xenos Yifu Guest

    Ist mir ja echt peinlich nach über 4,5 Jahren so was fragen zu müssen, aber ich tue es trotzdem ;)

    Wie macht man das ?
    Im Viewer (Imprudence) mportieren ... oder was in der Art?
     
  13. Michelle Argus

    Michelle Argus Aktiver Nutzer

    Beiträge:
    439
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Über dem Viewer geht das nicht... das muss man über die Opensim Konsolemachen. Im Link vom Datalo Tenk gibt es die Datei als iar zum Herunterladen und dann kannst du per konsole die datei zu deinem Avatar hochladen...

    http://opensimulator.org/wiki/IAR_Format
     
  14. Xenos Yifu

    Xenos Yifu Guest

    Hm, mit OAR´s kenne ich das, jeweils auf die aktuelle Region changen und sichern oder laden.

    Aber wo ist denn INV Ordner meines Ava´s?

    Bin mal in die Tiefen meines Servers abgetaucht .... (siehe Foddo)
    Aber selbst wenn es wäre wie kommt denn der Ava da dran?
    Oder ist das mein (Owner) INV Ordner?

    alles sehr verwirrend ^^.
     
  15. Michelle Argus

    Michelle Argus Aktiver Nutzer

    Beiträge:
    439
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Siehe den Link in meinem Letzten Beitrag: Beispiel

    Code:
    load iar Betrand Russell Folder2 PASSWORD http://justincc.org/downloads/iars/my-great-items.iar
    "Betrand Russell" -> Ersetzt du mit deinem Avatar Namen
    "PASSWORD" -> Ersetz du mit deinem Passwort den du zum Einloggen mit dem Viewer auch nutzt.
    "http://justincc.org/downloads/iars/my-great-items.iar" -> Da kannste direkt den Url zu der datei die du runterladen kannst ersetzten oder mit dem Dateinamen inkl ordner wo es abgespeichert ist


    "Folder2" -> Das ist der Ordner Pfad wo du die IAR hochladen willst. Dabei ist dein Avatar Inventar gemeint, also dasselbe Inventar wie du im Viewer siehst wo du auch unterordner hast (Trash, Landmarks, Objects... etc) und "/Landmarks" wird dir die sachen in deinen Landmark Ordner von deinem Inventar laden.
     
  16. Xenos Yifu

    Xenos Yifu Guest

    Erst mal ganzen lieben Dank, Michelle :)

    Teil eins habe ich verstanden, zu Teil zwei:

    Der Ordner Folder2 muss ja wohl ein Ordner in meinem INV sein.
    Muss der schon vorhanden sein oder wird der durch diesen Befehl erzeugt?

    Dann noch eine Frage, ich nutze Putty als Konsole.
    In welchem Verzeichnis kann oder muss ich den Befehl ausführen?
    Im Hauptverzeichnis von OpenSim?
     
  17. Xenos Yifu

    Xenos Yifu Guest

    Ich habe jetzt mal alle Varianten probiert, nichts klappt.
    Weder load noch save....



    Meldung:
    Code:
    -bash: save: command not found
    vserver1:/usr/games/bin#
    
    Komischerweise habe ich die Probleme mir oar´s nicht und das ist ja fast das selbe.

    So sieht mein Befehl aus, ich finde da kein Fehler, oder?:

    vserver1:/usr/games/bin# save iar Xenos Yifu ordnerneu *** ordnerneu.iar

    Die Sternchen sind logo das PW, den Ordner habe ich erstellt und was reingepackt....
     
  18. Xenos Yifu

    Xenos Yifu Guest

    Zwischenstand:

    Der Fehler muss woanders liegen, in Putty geht gerade gar nichts.
    Kann kein OAR saven, dieselbe Fehlermeldung.
    Ist mir zu hoch der Server und OS läuft tadellos.
    Über Webadmin und Putty komme ich auch rein, habe mal testhalber das iar ins Bin geuppt, geht alles ....
     
  19. Michelle Argus

    Michelle Argus Aktiver Nutzer

    Beiträge:
    439
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du musst dich in die Konsole von deiner SIM einloggen, also da wo du auch oar und Regionzeugs bearbeitest. Putty alleine ist nur einloggen in den server, anschliessend z.b. per screen deine Sim öffnen...
     
  20. Xenos Yifu

    Xenos Yifu Guest

    Wunderbar :)
    Mein Sonntag ist gerettet.
    Zwei mögliche Fehler:
    Entweder es war der Fehler erst ins BIN Verzeichnis zu wechseln, oder screen -r OS mit kleinem os zu schreiben.
    (ich bekam im die Meldung da wäre nichts am laufen)
    Jetzt hat alles geklappt, habe aktuelle OAR´s gesichert und erfolgreich einen vorher erstellten INV Ordner gesichert.
    In den dann anschließend per Web Adresse das IAR importiert :)

    Danke für die Hilfe und einen schönen Sonntag :)

    Gruß Xenos :)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden