• 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.

Fahrzeug Script

X

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 ;)
 
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__
 
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
...
 
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
 
@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 ;)
 
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 :)
 
... 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.
 
... 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.

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...
 
ist eine iar datei die du per os in dein inventar laden kannst...

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?
 
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 ^^.
 
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.
 
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?
 
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....
 
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 ....
 
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...
 
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 :)
 

Users who are viewing this thread

Zurück
Oben Unten