This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Hallo, Gast
Sie müssen sich registrieren bevor Sie auf unserer Seite Beiträge schreiben können.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 23
» Neuestes Mitglied: Lilida
» Foren-Themen: 599
» Foren-Beiträge: 1.567

Komplettstatistiken

Aktive Themen
Red light district
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
Gestern, 13:45
» Antworten: 3
» Ansichten: 84
Tanzball rezzen
Forum: OpenSim-Manager
Letzter Beitrag: Lilida
16.04.2024, 14:27
» Antworten: 6
» Ansichten: 479
Was ist ne Kaffestube ohn...
Forum: Kaffeestube
Letzter Beitrag: Susan
15.04.2024, 15:17
» Antworten: 0
» Ansichten: 203
Sim geht in Schlafmodus
Forum: OpenSim
Letzter Beitrag: Scarlett Candor
11.04.2024, 10:16
» Antworten: 3
» Ansichten: 439
C Programmierung und bull...
Forum: Scripting
Letzter Beitrag: Cheryl Furse
07.04.2024, 00:50
» Antworten: 2
» Ansichten: 302
Steampunk-Party mit Marlo...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
02.04.2024, 18:29
» Antworten: 0
» Ansichten: 235
ERÖFFNUNG FLORES SEA Wild...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
01.04.2024, 18:52
» Antworten: 3
» Ansichten: 314
Einladung zur SCIFI Party...
Forum: Virtual Africa
Letzter Beitrag: Cheryl Furse
31.03.2024, 13:32
» Antworten: 7
» Ansichten: 636
Das Ei ist hart
Forum: Kaffeestube
Letzter Beitrag: ThunderTower
30.03.2024, 16:38
» Antworten: 0
» Ansichten: 248
Lukas, melde dich bitte, ...
Forum: Kaffeestube
Letzter Beitrag: Tron Mcp
25.03.2024, 12:31
» Antworten: 2
» Ansichten: 307

 
  Eigenes OpenSim Server Hosting mit Ubuntu 20.04.3 LTS Teil 2
Geschrieben von: ThunderTower - 15.12.2021, 15:12 - Forum: Serversoftware - Keine Antworten

Ubuntu 20.04.3 LTS wurde erfolgreich auf einem Rechner im LAN installiert. Ich bin nun mit diesem Rechner über SSH verbunden.

Ja, es gibt nur ein schwarzes Fenster! Nichts erinnert an ein buntes, verkaspertes und verschachteltes Windows.

Da steht man nun da, wie die Kuh vorm Neuen Tor. Willkommen in der Welt von Linux!

Heute: 


  1. Einen Benutzer unter Linux anlegen (wird für das Setup von OpenSim benötigt)
  2. Einen Sudo-fähigen Benutzer unter Linux anlegen
  3. Einen Ordner erstellen
  4. Eine Datei erstellen
  5. Eine Datei umbenennen
  6. Eine Datei mit nano anzeigen und editieren
  7. Eine Datei downloaden und extrahieren
  8. Navigieren im Terminal

Einen Benutzer unter Linux anlegen:

root@kiste:~# adduser salatbieger
Adding user `salatbieger' ...
Adding new group `salatbieger' (1003) ...
Adding new user `salatbieger' (1003) with group `salatbieger' ...
Creating home directory `/home/salatbieger' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for salatbieger
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

Einen salatbieger unter Linux Sudo-Rechte geben:

usermod -aG sudo salatbieger

Einen Ordner für die Installation erstellen:

salatbieger@kiste:~$ mkdir opensim

Ordner anzeigen:

salatbieger@kiste:~$ ls

opensim

In diesen Ordner opensim wechseln:

salatbieger@kiste:~$ cd opensim

salatbieger@kiste:~/opensim$

Eine Datei in diesem Ordner erstellen:

salatbieger@kiste:~/opensim$ touch test.txt

Datei bearbeiten:

nano test.txt

Datei test.txt umbennenen:

mv test.txt nochmal.txt

Datei nochmal.txt löschen:

rm nochmal.txt

Rekursiv löschen (inkl aller Unterverzeichnisse und Dateien)

rm -R Ordnername

OpenSim downloaden und extrahieren:

curl -O http://opensimulator.org/dist/opensim-0.9.2.0.tar.gz

tar xzvf opensim-0.9.2.0.tar.gz

Navigieren im Terminal in den bin Ordner:

cd ~/opensim/opensim-0.9.2.0/bin

OpenSim.ini anzeigen - bearbeiten:

nano OpenSim.ini

Änderungen abspeichern:

Strg+o

OpenSim.ini schließen:

Strg+x

Start von OpenSim:

mono OpenSim.exe

Herunterfahren von OpenSim:

shutdown

Diese wenigen Grundlagen helfen Dir im Umgang mit der Konsole!

Drucke diesen Beitrag

  Herzlich Willkommen
Geschrieben von: ThunderTower - 14.12.2021, 09:30 - Forum: Informationen und aktuelle Meldungen - Keine Antworten

Herzlich Willkommen

Willkommen Nasti Bakerly in unserem gemeinsamen Forum. Wir freuen uns alle sehr, dass Du auch zu uns gefunden hast.

Im Namen aller, möchte ich Dich recht herzlich im Forum begrüßen!

Wir wünschen Dir bei uns eine angenehme, interessante und stets höfliche virtuelle Kommunikation.

Vielen Dank!


Das Foren-Team


Yes

Drucke diesen Beitrag

  MOTORRAD SCRIPT für BULLET in OPENSIM
Geschrieben von: Tron Mcp - 13.12.2021, 21:51 - Forum: Scripting - Antworten (7)

MOTORRAD SCRIPT für BULLET Physik in OPENSIM   by Tron

Nachdem sich meine Bikescripte in Opensim verbreiten und ich mehrere positive Rückmeldungen über das angenehm präzise Fahrverhalten erhalten habe,
veröffentliche ich nun dieses Script hier im Forum unter fairen Bedingungen:

Es darf frei in Opensim verbeitet werden, aber nicht gegen Geld verkauft werden. Der Hinweis auf mich als Autor ist zu belassen.
Verkauf und Veröffentlichung in SL ist alleinig mir vorbehalten.

Mögen alle damit Spaß haben die gerne auf ihrer Sim biken wollen.

Das Script ist Fahrtechnisch ausgereift und fertig. Allerdings kann man Features noch hinzufügen.
Etliches ist bereits integriert was ich bei Nachfrage gesondert beschreiben werde.

Hier nun das Basis Script. Diese kommt in ein unsichtbares Root Prim. Die Form des Rootprims ist für die Fahrdynamik sehr wichtig. Früher habe ich bei Autos zu einen abgeschrägten Primwürfel geraten. Das ist aber nicht für ein gutes Motorrad zielführend. Minimum muss der Würfel von allen 4 Seiten abgeschrägt sein damit man sich in die Kurven legen kann. Besser ist ein Eiförmiges Mesh mit entsprechender Physik. Dieses ermöglicht sanftes in die Kurve legen.

Das Fahrzeug selber wird dann mit diesem "PhysikPrim" verlinkt, und zur Fahrzeit phantom.

Einige Features:

FAHREN:

- das Bike hat 5 Vorwärtsgänge, Leerlauf und Rückwärtsgang.
- es gibt Unterstützung für schnelle Schaltvorgänge.
  Bremst man bei hoher Geschwindigkeit schaltet das Bike einen Gang herab um besseres Fahrverhalten und höhere Beschleunigung zu erzielen.
- Fahrparameter ändern sich dynamisch in Abhängigkeit von Gang und Fahrtgeschwindigkeit.
  Dies gilt für Lenkung, Kurvenneigung, Spurtreue, Driften, Radhaftung sowie Aufsteigen des Vorderrades.
- Es gibt einen Leerlauf in dem das Bike nicht driftet. Auch wird in diesem Modus getankt.
- Im ersten Gang neigt das Bike zum Aufsteigen des Vorderrades wenn man Pfeil Links und Pfeil Rechts gleichzeitig drückt.
- Im ersten Gang driftet das Bike wenn Gasgeben und Lenken zusammen erfolgt. Dann Raucht auch das Hinterrad

FAHRERANIMATIONEN:
- Es wird pro Gang eine eigene Fahrer Animation unterstützt.

BENZINVERBRAUCH:
- Das Bike verbaucht je nach Fahrtgeschwindigkeit unterschiedlich Benzin.  Dafür habe ich euch ein Tankstellenscript mit erstellt.
  Der Sprittank sollte der Fahrzeuggröße angepasst sein. Für ein normales Motorrad hat sich als "vollertank" 600 bewährt.
  Die initiale Tankfüllung nach Scriptreset wird in "benzintank" festgelegt. Es kann ja sein das man frisch gerezzte Bikes erstmal 1/3 voll haben will damit anfangs getankt werden muss.
  Aktuell ist das Scritp beim Start auf vollen Tank eingestellt. Probiert aber mal 200 als "benzintank" aus.

PARKEN:
- Es gibt einen Parkmodus auf dem Seitenständer wenn ihr absteigt.

LICHT:
- es gibt Unterstützung für Bremslicht/Rücklicht.
- es gibt Unterstützung für einen Frontscheinwerfer.
- es gibt Unterstützung für einen optionalen Lichtkegel vor dem Fahrzeug zur Strassenbeleuchtung.
- die Einstellung der Paramater wird halbautomatisch unterstützt:
- das Script sucht sich selber die Linknummern heraus wenn ihr die entsprechenden Teile im Mesh folgendermaßen benennt: (auf Gross/Kleinschreibung achten)
"Bremslicht", "Scheinwerfer", "Lichtkegel", "Hinterrad".

Die zugehörigen Faces müsst ihr aber per Hand eintragen:
für Bremslicht in"bremslichtface" damit im Mesh die richtige Fläche leuchtet, und für Scheinwerfer in "frontlichtface".


Code:
// P318 Motorrad mit Renngetriebe für Simcrossing in Opensim 09 by Tron V50
// Stand 12.09.2021  V2.0
// unterstützt Hinterraddrift, Gangschaltung mit Leerlauf
// Partikel Textur vorladen auf Fahrzeugprim, damit diese sofort angezeigt wird

//==== FAHRZEUG CHARAKTERISTIKA VARIABLEN: ====


// MOTOR
float   bremskraft           = 6;                                                       // Kraft der Betriebsbremse. Größer bremst stärker
float   motorbremse          = 1.0;                                                     // Motorbremswirkung 1.0 gut, 2.0 weniger Bremswirkung für längerere Auslauf
list    getriebeliste        = [ -5 , 0.001, 15, 25, 35, 45, 55 ];                      // Maximalkraft & Geschwindigkeit des Motors je Gang [ -5 , 0, 15, 25, 35, 55, 70 ];
list    beschleunigungsListe = [1.0, 100.0 , 1.0, 3.0, 6.0, 10.0, 15.0];                // Beschleunigungsdauer des Motors bis maximaler Ganggeschwindigkeit. 1 = schnell [1.0, 100.0 , 1.0, 3.0, 6.0, 10.0, 15.0];
list    ganganimationListe = ["Bikerfahrer","Bikerfahrer","Bikerfahrer","Bikerfahrer","Bikerfahrer","Bikerfahrer","Bikerfahrer"];
list    gangListe = ["Rückwärts","Leerlauf","1. Gang","2. Gang","3. Gang","4. Gang","5. Gang"];


// LENKUNG
float   lenkansprechverhalten = 0.32;  // 0.32 REAKTIONSZEIT der LENKUNG 0.2 knackig, 0.3 medium, 0,4träge
float   lenkberuhgungszeit = 0.8;      // 0.50 NACHWIRKZEIT der LENKUNG  0.2++ sehr direkt // 0.5 gut // 1.2 träge
float   kurvenkraenkung;               // 3 - 6 für Motorrad wird dynamisch zugewiesen
float   einknicken = 4;
float   lenkradius = 4;                // Basiswirkung der Lenkung. größere Werte ermöglichen kleinerer Wendekreise. Wirkung wird dynamisch gesteuert: gut 4

integer racemode = TRUE;                // Zeigt Geschwindigkeit und Benzin an, und verbraucht Benzin
vector  sitzposition = < -0.690, 0.0, 1.65>;      // Sitzposition

// Linknummern des FAHRZEUGS werden automatisch ermittelt anhand LINKNAMEN. Faces manuell eingetragen
integer bremslichtlink;                 // Bremslicht
integer bremslichtface = ALL_SIDES;     // Face des Bremslichtes

integer frontlichtlink;                 // Frontscheinwerfer
integer frontlichtface = 6;             // Face des Frontscheinwerfer manuell eintragen
integer lichtkegellink;                 // Lichtkegelprims vor dem Bike
integer hinterradlink = 5;              // Linknummer des Hinterrades für Rauch

// TANKDIMENSIONIERUNG
float   vollertank  = 600;             // Voller Tank
float   benzintank  = 600;             // Initiale Tankfüllung
integer benzin;

//==== ENDE FAHRZEUG CHARAKTERISTIKA VARIABLEN ====
integer debug = TRUE;

// TANKEN
integer  listenhandle;                   // für Tanken
integer  channel = -1000;                // Fernbedienungs Kanal für Tankstelle

// GLOBALE VARIABLEN
key      biker;
integer  bikefahrt;
integer  gang;                                      // aktuell eingelegter Gang
float    antriebskraft;
integer  ganganzahl;
string   gangname;
string   animation;                                 // aktuell gespielte Animation


vector   vel;
float    fahrtgeschwindigkeit;                     // aktuelle Geschwindigkeit
float    fahrfaktor;                               // Hilfsvariable zur Rechenreduktion

integer  rechtslenk;
integer  linkslenk;
integer  bremslicht_ist_an;                         // aktueller Zustand


// RAUCH
integer rauchpartikelzahl = 1;                      // Anzahl Partikel pro Ausstoß und Prim
integer raddrift;                                   // aktueller Zustand
list    particle_parameters;

//==== E N D   G L O B A L   V A R I A B L E   D E C L A R A T I O N ====

// Ermitteln der aktuellen Linknummer anhand des Linknamens
integer getlink(string linkname)
{
    integer linknummer = llGetNumberOfPrims();
    do
    {   
        if (linkname == llGetLinkName(linknummer)) { return (linknummer);}
        linknummer--;
    }
    while (linknummer > 0);
    return (0);
}


rauchpartikel()                                     // Rauchpartikel Vorab initialisieren um in der Fahrschleife Zeit zu sparen
{
    particle_parameters =
        [         
           PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0),  // erste Textur aus Prim auslesen und nehmen
           PSYS_PART_START_SCALE,  <3.0000,3.00000,3.00000>,
           PSYS_PART_END_SCALE, <7.5,7.5,7.5>,
           PSYS_PART_START_COLOR, <0.2 , 0.2 ,0.2 >,
           PSYS_PART_END_COLOR, <0.4,0.4,0.4>,
           PSYS_PART_START_ALPHA, 0.75,
           PSYS_PART_END_ALPHA, 0.0,
           PSYS_SRC_BURST_PART_COUNT, rauchpartikelzahl,
           PSYS_SRC_BURST_RATE, 0.1, //0.3
           PSYS_PART_MAX_AGE, 2.0,
           PSYS_SRC_MAX_AGE,(float) 0.0,
           PSYS_SRC_PATTERN, 2,
           PSYS_SRC_BURST_SPEED_MIN, 1.0,
           PSYS_SRC_BURST_SPEED_MAX, 2.05,
           PSYS_SRC_BURST_RADIUS, 0.1,
           PSYS_SRC_ANGLE_BEGIN, (float) 0.08*PI,
           PSYS_SRC_ANGLE_END, (float) 0.08*PI,
           PSYS_SRC_ACCEL, <2,0,-.3>,
           PSYS_PART_FLAGS, (integer)( 0 | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_EMISSIVE_MASK )
         ];
}


hinterraddrift(integer raddriftenlassen)            // Durchdrehendes Hinterrad: Rauch Erzeugung und Fahrwerte ändern: an / aus
{
    raddrift = raddriftenlassen;
    if (raddrift)
    {
        llMessageLinked(LINK_SET, 10, "2", NULL_KEY);
        llLinkParticleSystem(hinterradlink, particle_parameters );
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY,0.1);   // SPURTREUE: starkes seitliches Driften des Hinterrades 0.2
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 40.00); // DRIFTZEIT: starkes Nachdriften des durchdrehenden Hinterrades 10.0
        lenkradius = 8;
    }
    else
    {
        llMessageLinked(LINK_SET, 10, "1", NULL_KEY);
        llLinkParticleSystem(hinterradlink, []);
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY,1.0);  // SPURTREUE: kein seitliches Driften des Hinterrades 1.0
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1.0);  // DRIFTZEIT: wenig Nachdriften des Hinterrades 1.0
        lenkradius = 4;
    }
}


bikeausrichten(integer park)              // Richtet das Bike in Park und Fahr Positionen aus
{
    rotation bikerot =  llGetRot();
    if (park) llSetRot(<-0.4, bikerot.y, bikerot.z, PI>);    // Bike parken (<0.0, -0.20, bikerot.z, PI>);
    else llSetRot(<0.0, bikerot.y, bikerot.z, PI>);           // Bike fahren  
}


frontlicht(integer an)                     // Schaltet Frontlicht an oder aus
{
    // PRIM_POINT_LIGHT, TRUE, primcolor, fIntensity, fRadius, fFalloff ]
    if (an)
    {  
        llSetLinkPrimitiveParamsFast(frontlichtlink, [PRIM_GLOW, frontlichtface, 1.0]);
        llSetLinkPrimitiveParamsFast(lichtkegellink, [PRIM_POINT_LIGHT, TRUE, <1.0, 1.0, 1.0>, 1.0, 10.0, 0.20, PRIM_GLOW, ALL_SIDES, 0.05]);
        llSetLinkPrimitiveParamsFast(bremslichtlink, [PRIM_POINT_LIGHT, FALSE, <1.0, 0.0, 0.0>, 0.0, 0.0, 0.0, PRIM_GLOW, bremslichtface, 0.5]);
    }
    else
    {
        llSetLinkPrimitiveParamsFast(frontlichtlink, [PRIM_GLOW, frontlichtface, 0.0]);
        llSetLinkPrimitiveParamsFast(lichtkegellink, [PRIM_POINT_LIGHT, FALSE, <0.0, 0.0, 0.0>, 0.0, 0.0, 0.0, PRIM_GLOW, ALL_SIDES, 0.0]);
        llSetLinkPrimitiveParamsFast(bremslichtlink, [PRIM_POINT_LIGHT, FALSE, <1.0, 0.0, 0.0>, 0.0, 0.0, 0.0, PRIM_GLOW, bremslichtface, 0.0]);
    }
}


bremslicht(integer bremse)                // Schaltet Bremslicht an oder aus
{
    if (bremse) {llSetLinkPrimitiveParamsFast(bremslichtlink, [PRIM_POINT_LIGHT, TRUE, <1.0, 0.0, 0.0>, 1.0, 2.0, 0.5 , PRIM_GLOW, bremslichtface, 1.0]);}
    else {llSetLinkPrimitiveParamsFast(bremslichtlink, [PRIM_POINT_LIGHT, FALSE, <1.0, 0.0, 0.0>, 0.0, 0.0, 0.0, PRIM_GLOW, bremslichtface, 0.5]);}
    bremslicht_ist_an = bremse;
}


integer tankanzeige(integer funktion )
{
    if (funktion == 1)
    {
        string kmh = (string)llRound(fahrtgeschwindigkeit * 5);
        string rpm = (string)llRound(((fahrtgeschwindigkeit / llList2Float(getriebeliste, gang ))*7000)+600);
        if(gang < 2) rpm = "600";
        string liter = (string) llRound((benzintank / 50));
       
        if (benzintank < ( vollertank * 0.15))
            {
                if(benzintank > 0) { llSetText( kmh + " kmh \n Gang: "+ gangname + " rpm: "+ rpm +  "  \n Benzin: RESERVE " + liter +" Liter",<1,0,0>,1.0); return(TRUE);}
                else { benzintank = 0;  antriebskraft = 0; llSetText( kmh + " kmh \n Gang: "+ gangname + " rpm: 0  \n Benzin: TANK LEER " ,<1,0,0>,1.0); return(FALSE);}
            }
        else { llSetText( kmh + " kmh \n Gang: "+ gangname + " rpm: "+ rpm +  "  \n Benzin: " + liter +" Liter",<1,1,1>,1.0); return(TRUE);}
    }
    else {llSetText("",<0,0,0>,0.0); return(TRUE);}
}


init_engine()                            // Vorinitialisierung des Bikes
{
    bikefahrt = FALSE;
    ganganzahl = llGetListLength(getriebeliste);
    llSetSitText("Biker");
    llSitTarget(sitzposition, ZERO_ROTATION);
    llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_NONE]);
    // LINKNummern ermitteln anhand Namen der Links
    bremslichtlink = getlink("Bremslicht");
    frontlichtlink = getlink("Scheinwerfer");
    lichtkegellink = getlink("Lichtkegel");   // Lichtkegelprims vor Fahrzeug
    hinterradlink  = getlink("Hinterrad");
}


gangschaltung(string schalte)            // Gangumschaltung
{   
    string neueanimation;

    if (schalte == "Leerlauf") { gang = 1; llMessageLinked(LINK_SET, 10, "0", NULL_KEY); llMessageLinked(LINK_SET, 20, (string)0, NULL_KEY);} // in Leerlauf schalten
    else if (schalte == "Rückwärts") { gang = 0; llSleep(0.5); init_fahrercam(-45.0, 6.0); llMessageLinked(LINK_SET, 10, "-1", NULL_KEY); } // Rückwärts Gang einlegen
    else if (schalte == "Vorwärts") { gang = 2;  llSleep(0.5); init_fahrercam(0.0, 2.5); llMessageLinked(LINK_SET, 10, "1", NULL_KEY);}  // in 1. Gang schalten
    else if (schalte == "+") { gang += 1;}  // in höheren Gang schalten
    else { gang -= 1;}    // schalte in niedrigeren Gang

    antriebskraft = llList2Float(getriebeliste, gang);
    float drehmoment = llList2Float(beschleunigungsListe, gang);
    llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, drehmoment);
   
    neueanimation = llList2String(ganganimationListe, gang);
    gangname =  llList2String(gangListe , gang);
    benzin = tankanzeige(1);
   
    hinterraddrift(FALSE);
    if (neueanimation != animation) // Animationswechsel
        {
            llStopAnimation(animation);
            animation = neueanimation;
            llStartAnimation(animation);
        }
    if (gang == 1){ llSetTimerEvent(0.0);} else llSetTimerEvent(1.0);
}


// *** KAMERA EINSTELLEN
init_fahrercam(float angle, float distance)
{
    llSetCameraParams(
        [
            CAMERA_ACTIVE, 1,                 // 0=INACTIVE  1=ACTIVE
                CAMERA_BEHINDNESS_ANGLE, angle,   // (0 to 180) DEGREES
                CAMERA_BEHINDNESS_LAG, 1.3,       // (0 to 3) SECONDS  0.3
                CAMERA_DISTANCE, distance,        // ( 0.5 to 10) METERS 2.5
                CAMERA_PITCH, 12.0,               // (-45 to 80) DEGREES
                CAMERA_POSITION_LOCKED, FALSE,    // (TRUE or FALSE)
                CAMERA_POSITION_LAG, 0.25,        // (0 to 3) SECONDS 0.05
                CAMERA_POSITION_THRESHOLD, 0.0,   // (0 to 4) METERS
                CAMERA_FOCUS_LOCKED, FALSE,       // (TRUE or FALSE)
                CAMERA_FOCUS_LAG, 0.0,            // (0 to 3) SECONDS
                CAMERA_FOCUS_THRESHOLD, 0.0,      // (0 to 4) METERS
                CAMERA_FOCUS_OFFSET, <0, 0, 0>    //  METERS
        ]);
    llForceMouselook(FALSE);
}


set_engine()
{
    llSetVehicleType(VEHICLE_TYPE_CAR);
   
     // default rotation of prim
        llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, <0.00, 0.00, 0.00, 1.00>);
       
// VEHICLE FLAGS
        llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP | VEHICLE_FLAG_HOVER_TERRAIN_ONLY);    // Fahrzeug Grundausrichtung bei falschen Mesh Axen
       

// LINEAR MOTOR ANTRIEB UND SPURTREUE
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);                // 1.0 BESCHLEUNIGUNG des MOTORS: Wirkung: Größere Zahl ergibt geringere Beschleunigung. 10 Gut für hohen Gang
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, motorbremse);  // 2.0 MOTORBREMSE: Wirkung: Kleinere Zahl größere Motorbremswirkung
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY,1.0);           // 1.0 SPURTREUE: bewirkt starkes seitliches driften des Hinterrades. 0.2 driftet stark für Start mit drehenden rauchenden Reifen, 0.5 leichtes driften. 1 fährt Spurtreu
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1.00);           // 1.0 DRIFTZEIT nach Lenkstop: Kleine Zahl kurzes Nachdriften [1, .. , 100 ] Griffigkeit der Strasse simulierbar. 1trockener Asphalt, 100 Eis. 10 für Start mit drehenden rauchenden Reifen,

// ANGULAR MOTOR LENKUNG UND NEIGUNG BEI KURVEN
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, lenkansprechverhalten);     // REAKTIONSZEIT der LENKUNG
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, lenkberuhgungszeit);  // NACHLENKZEIT bis GERADEAUSLAUF
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 1.00);                // 1.0 SPURTREUE  wird dynamisch eingestellt
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1.00);  // 1.00 DRIFTZEIT

// Friction Reibung
        llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE,  <1.0,1.0,1.0>  );  // ohne sichtbare Auswirkung <1.0,1.0,0.10>
        llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1.0,1.0,1.0> );  // ohne sichtbare Auswirkung  <1.0,1.0,1.0>

// Vertical Attraction Vertikale Zugkraft
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1.0);  // ohne sichtbare Auswirkung 5.5
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1.00);  // 1.0  FINAL sonst säuft Nase in Kurven ab // Werte <= 0.4 ZAPPELT Fahrzeug schlecht! SOLL1

// BANKING Nachschieben
        llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 1.0 );
        llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 0.5 );
        llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1.0 );
        llCollisionSound("", 0.0);
}


default
{
    state_entry()
    {
        if(!debug) llSetLinkTexture(LINK_THIS,llGetInventoryName(INVENTORY_TEXTURE, 0), ALL_SIDES);  // Partikeltextur auf roortprim vorladen damit sie sofort angezeigt wird
        bikeausrichten(TRUE);
        init_engine();
        rauchpartikel();
        llSetText("",<0,0,0>,0.0);
        state Fahrbereit;
    }
   
    on_rez(integer param) { llResetScript();}
}


state Fahrbereit
{
    state_entry() {}


    on_rez(integer param) { llResetScript();}


    changed(integer change)
    {
        if ((change & CHANGED_LINK) == CHANGED_LINK)
        {
            biker = llAvatarOnSitTarget();    // wir haben einen Fahrer
            if (biker != NULL_KEY)
                { llRequestPermissions(biker, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA | PERMISSION_TRACK_CAMERA);}
            else
            {   // Fahrer ist aufgestanden
                llMessageLinked(LINK_SET, 10, "0", NULL_KEY);  // Räder stoppen
                llSetTimerEvent(0.0);
                llSetStatus(STATUS_PHYSICS, FALSE);
                bikeausrichten(TRUE);
                bremslicht(FALSE);                 // Bremslicht ausschalten
                frontlicht(FALSE);
                bikefahrt = FALSE;
                llStopAnimation(animation);
                hinterraddrift(FALSE);
                llPushObject(biker, <3,3,21>, ZERO_VECTOR, FALSE);
                llReleaseControls();
                llClearCameraParams();
                llSetCameraParams([CAMERA_ACTIVE, 0]);
                benzin = tankanzeige(FALSE);
               // llResetScript(); // Hinderlich bei Benzinberechnung. Ansonsten gut
                llListenRemove(listenhandle);
                state default;
            }
        }
    }

    run_time_permissions(integer perm)
    {
        if (perm)
        {
            set_engine();                // MOTOR einstellen
            listenhandle = llListen(channel,"","","");
            bikeausrichten(FALSE);
            llSetStatus(STATUS_PHYSICS | STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, TRUE);
            frontlicht(TRUE);
            bikefahrt = TRUE; // BIKE fährt
            animation = "sit";
            gangschaltung("Leerlauf"); // im Leerlauf starten und Animation ändern
            benzin = tankanzeige(TRUE);
            init_fahrercam(0.0, 2.5);
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_DOWN | CONTROL_UP | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);
            llSleep(1.5);
        }
    }


    control(key id, integer tastenzustand, integer tastenaenderung)
    {
        if(!bikefahrt){return;}
        vector AngularMotor;
       
        integer tastefrischgedrueckt = tastenzustand & tastenaenderung;   
        integer tastelosgelassen = ~tastenzustand & tastenaenderung;
     //     integer tastegehalten = tastenzustand & ~tastenaenderung;
     //     integer tastenichtgehalten = ~tastenzustand & ~tastenaenderung;

        vel = llGetVel();
        fahrtgeschwindigkeit = llVecMag(vel);            // Geschwindigkeit
        fahrfaktor = fahrtgeschwindigkeit /10;     // Hilfsvariable zur Rechenreduktion


// in höheren Gang schalten mit BILD AUF
        if(tastefrischgedrueckt & (CONTROL_UP | CONTROL_RIGHT)) { if (gang < (ganganzahl -1)) gangschaltung("+");}
// sonst in niedrigerne Gang schalten mit BILD AB
        else if(tastefrischgedrueckt & (CONTROL_DOWN | CONTROL_LEFT)) { if (gang > 0) gangschaltung("-");}


// weiterhin Vorwärts Gas geben
        if (tastenzustand & CONTROL_FWD)
        {
            if (gang < 2) gangschaltung("Vorwärts");        // Auf 1. Gang schalten wenn kein Vorwärtsgang eingelegt war
            else { llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <antriebskraft,0,0>);} // Linear Motor Kraft geben
           
// Sport Gangschaltung aufwärts
  //          if  ((tastefrischgedrueckt & CONTROL_ROT_RIGHT) && (tastefrischgedrueckt & CONTROL_ROT_LEFT))  { if (gang < (ganganzahl -1)) gangschaltung("+"); tastefrischgedrueckt = FALSE; tastenzustand = FALSE; llSleep(0.1); return; }
// Sport Gangschaltung abwärts
            if ((tastefrischgedrueckt & CONTROL_BACK)) {if (gang > 2) gangschaltung("-"); tastefrischgedrueckt = FALSE; tastenzustand = FALSE; llSleep(0.1); return; }
      
        }
// sonst Rückwärts schalten (nur wenn kein Gas gegeben wird, und Fahrzeug fast im Stillstand)
        else if (tastefrischgedrueckt & CONTROL_BACK) { if ((fahrtgeschwindigkeit < 0.5 ) && (gang > 0)) { gangschaltung("Rückwärts");}}

// weiterhin Rückwärts fahren oder Bremsen
        if (tastenzustand & CONTROL_BACK)
        {
            if (gang > 1)
            {
                if (!bremslicht_ist_an) bremslicht(TRUE);
                if(fahrtgeschwindigkeit > 9) {llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-bremskraft, 0, 0>);} // stark Bremsen
                else llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0>);  // sanft Bremsen, Rückwärts fahren verhindern
            }
            else if (gang == 0) { llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <antriebskraft, 0, 0>);} // Rückwärts fahren
        }
// sonst Bremse lösen
        else if (tastelosgelassen & CONTROL_BACK){ if (bremslicht_ist_an) bremslicht(FALSE); llMessageLinked(LINK_SET, 20, (string)fahrtgeschwindigkeit, NULL_KEY);}


// Vorderrad Aufsteigen bei Vorwärtsfahrt und links + rechts Pfeiltasten
        if  ((tastenzustand & CONTROL_ROT_RIGHT) && (tastenzustand & CONTROL_ROT_LEFT))
        {
            if((gang == 2) || (gang == 3))                                    // nur im 1. und 2. Gang aufsteigen lassen
            {
                rechtslenk++; linkslenk++;                                     // eventuell rauchende Reifen erhalten
                AngularMotor.y -= ( 2.7 );                                     // Vorderrad aufsteigen lassen
                if(fahrtgeschwindigkeit < 1.0) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <5.0, 0, 0>); // Vortrieb falls zu langsam für Aufsteigen           
            }
        }
       
// RECHTS lenken
        if  (tastenzustand & CONTROL_ROT_RIGHT)
        {
           if( gang > 1)   // Einknicken in Kurvenmittelpunkt bei Vorwärtsfahrt
            {
                rechtslenk++;
                if(fahrtgeschwindigkeit < 1.0) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <3.0, 0, 0>); // Vortrieb falls zu langsam für Kurvenfahrt
                if ((rechtslenk > 30) & (gang == 2) & (fahrtgeschwindigkeit > 4.5)) { if (!raddrift) hinterraddrift(TRUE);}     // Hinterrad rotieren lassen
            }
            AngularMotor.y -= ( 1.15 );                                     // Nase hoch zur Kompensation des Eintauchens 0.75
            AngularMotor.x += ( einknicken + fahrfaktor );                   // Seitlich einknicken steigt mit Geschwindigkeit (3-6 gut)
            if(gang >0) AngularMotor.z -= ( lenkradius - fahrfaktor );        // Lenkung wird mit steigender Geschwindigkeit wirkungsloser
            else if(!gang) AngularMotor.z += 4;                                // Rueckwärts invers lenken
        }
// Nicht mehr rechts lenken
        else if (tastelosgelassen & CONTROL_ROT_RIGHT){ rechtslenk = 0; llMessageLinked(LINK_SET, 30, (string)0, NULL_KEY);}

// LINKS Lenken
        if (tastenzustand & CONTROL_ROT_LEFT)
        {
           if( gang > 1)  // Einknicken in Kurvenmittelpunkt bei Vorwärtsfahrt
            {
                linkslenk++;
                if(fahrtgeschwindigkeit < 1.0) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <3.0, 0, 0>); // Vortrieb falls zu langsam für Kurvenfahrt
                if ((linkslenk > 30) & (gang == 2) & (fahrtgeschwindigkeit > 4.5)) { if (!raddrift) hinterraddrift(TRUE);}      // Hinterrad rotieren lassen
            }
            AngularMotor.y -= ( 1.15 ); // Nase hoch zur Kompensation des Eintauchens
            AngularMotor.x -= ( einknicken + fahrfaktor );       // Seitlich einknicken steigt mit Geschwindigkeit (3-6 gut)           
            if(gang >0) AngularMotor.z += ( lenkradius - fahrfaktor );    // Lenkung wird mit steigender Geschwindigkeit wirkungsloser
            else if(!gang) AngularMotor.z -= 4;                            // Rueckwärts invers lenken
        }
// Nicht mehr links lenken
        else if (tastelosgelassen & CONTROL_ROT_LEFT){ linkslenk = 0;}

        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, AngularMotor);     // ROTATIONS MOTOR mit Kraft versorgen
        if ((!rechtslenk) & (!linkslenk) & raddrift) {hinterraddrift(FALSE);}        // rauchende Reifen abschalten
    }
   
   
    timer()
    {
        vel = llGetVel();
        fahrtgeschwindigkeit = llVecMag(vel);      // beide Richtugnen haben positive Geschwindigkeit!
        float verbrauch = fahrtgeschwindigkeit / 20;    // Hilfsvariable zur Rechenreduktion
        if(racemode)
        {   
            benzintank -= verbrauch;                  // Spritverbrauch
            benzin = tankanzeige(1);
        }
        if((gang != 1) & (fahrtgeschwindigkeit < 0.1)) { gangschaltung("Leerlauf"); fahrtgeschwindigkeit = 0.0;} // bei Stand in Leerlauf schalten
        llMessageLinked(LINK_SET, 20, (string)fahrtgeschwindigkeit, NULL_KEY);
    }


    listen(integer channel, string name, key id, string message)
    {
        string sender =  llGetSubString( message, 0, 35 );

        if(biker == sender)
        {
            float tankmenge =  ((vollertank - benzintank)/50);
            string befehl =  llGetSubString( message, 36, llStringLength( message ));
            if(befehl == "Tanken")
            {
                if(gang ==1)
                {
                    llWhisper(0, (string)tankmenge + "Liter Super getankt, das macht dann €:" + (string)(tankmenge *1.57));
                    benzintank = vollertank;
                    if(racemode) benzin = tankanzeige(1);
                }
                else {llWhisper(0, "Bitte zum Tanken den Motor abstellen");}
            }
        }
    }
}


Vorderrad und Hinterrad Script

In Vorder und Hinterrad kommt jeweils folgendes Radscript. Das Radscript dreht das verlinkte Radmesh direkt. Dazu muss die Achse des Rads passen.
Alternativ kann man hier auch die Achse im Script einstellen.   lltargetOmega <x,y,z>


Code:
// Radscript Variante by Tron
integer richtung = 0;
float   speed;

default
{
    state_entry()
    {
        llTargetOmega(<0,1,0>,PI,0.0);
    }

    link_message(integer sender_num,integer kanal,string message,key id)
    {
        if (kanal == 10) { richtung = (integer)(message);}
        else if (kanal == 20) { speed = (float)message * 0.20 *PI;}

        if ((richtung > 0) & (speed > 0.1)) llTargetOmega(<0,3,0>,speed,0.5);
        else if ((richtung < 0) & (speed > 0.1)) llTargetOmega(<0,-3,0>,speed,0.5);
        else { speed = 0; llTargetOmega(<0,0,0>,PI,0.0);}
    }
}


Tankstellen Script:

Das Tankstellenscript dient dem Betanken von mir gescripteter Fahrzeuge.
Das Script kommt in einen transparenten Primwürfel, der Phantom gemacht wird. Dieser soll die Zapfsäule großzügig ummanteln damit ein Klick auf die Zapfsäule das Prim trifft.

Getankt wird indem man auf dem Fahrzeug in Nähe der Zapfsäule sitzt,  den LEERLAUF eingelegt hat, und die Zapfsäule anklickt.
Dann muss man warten bis der Tankvorgang abgeschlossen ist. Nun erhält man eine Meldung wieviel getankt wurde.
Die Zapfsäule ist auch für alle anderen modernen Fahrzeuge meiner Entwicklung zu nutzen. Aktuell sind das Autos. Boote werden folgen.

Die Tankstelle funktioniert aktuell nur interaktiv mit meinen Fahrzeugen.
Wenn jemand seine Fahrzeugscripte in das Tanksystem integrieren will, bitte hier posten für Hilfe, oder aus dem Bike Script herauslesen

Code:
P319 Tankstelle Zapfsäulenscript by Tron V1.0

string ident = "Tanken";
integer channel = -1000;                // Fernbedienungs Kanal zur Kommunikation für Fahrzeuge
key user;                               // ID desjenigen der die Zapfsäule berührt- wird ans Fahrzeug gesendet
integer listenhandle;                   // für Tanken

default
{
    touch_end(integer num_detected)
    {
        user =  llDetectedKey(0);
        llSay (0, "Tankvorgang gestartet... bitte warten");
        listenhandle = llListen((channel+1),"","","");
        llSleep(20.0);
        llWhisper(channel,(string) user +ident);    // ID desjenigen der die Zapfsäule berührt- wird ans Fahrzeug gesendet
    }

    listen(integer channel, string name, key id, string message)
    {
        string sender =  llGetSubString( message, 0, 35 );
        if(user == sender)
        {
            string befehl =  llGetSubString( message, 36, llStringLength( message ));
            {
                llSay(0, befehl);
                llListenRemove(listenhandle);
            }
        }
    }
}


So, nun wünsche ich viel Spaß, und freue mich auf Rückmeldungen

Tron

Drucke diesen Beitrag

  Eigenes OpenSim Server Hosting mit Ubuntu 20.04.3 LTS
Geschrieben von: ThunderTower - 13.12.2021, 13:36 - Forum: Serversoftware - Keine Antworten

Eigenes OpenSim Server Hosting mit Ubuntu 20.04.3 LTS

Weihnachtszeit ist auch Bastelzeit - Ideal also, um einmal selbst die Welt von Ubuntu auszuprobieren.

Voraussetzungen:

1. Ein PC im Lan

2. Eine bootfähige DVD Ubuntu 20.04.3 LTS

To Do:

1. Kenntnisse Serverbereich erwerben

Vor der Entscheidung sich einen leistungsstarken Server zu mieten, sollte man im Lan erst testen.

Im Lan schützt 'NAT' und das hilft zunächst die notwendigen Kenntnisse im Serverbereich zu erlangen.

Ubuntu 20.04.3 LTS (Focal Fossa)

Ich nutze das Server install image ohne grafische Benutzeroberfläche. Ideal als BS für OpenSim.

Einfach eine Boot-CD erstellen, also ISO-Datei mit einer beschreibbaren DVD brennen und fertig.

Boot-Reihenfolge im Bios ändern (von CD/DVD) starten und das Server Setup geht los.

Eine Grafikkarte im PC ist nicht erforderlich. Die onboard graphic erledigt den Job für das Setup. Wichtig bei der Installation nur, dass

die Auswahl auf:

    Eine ganze Festplatte verwenden steht.
    Der Haken muß ebenfalls bei SSH-Server installieren gesetzt sein.

Alles andere bleibt abgewählt. Wir verwenden nur das reine Server Betriebssystem ohne grafische Benutzeroberfläche.

Der Installationsprozess läuft weitestgehend automatisch ab. Nach Abschluss der Installation sind nur 3 Sachen wichtig:

Notieren:

    Welche IP im Lan hat der neue Server?
    Welchen Benutzernamen habe ich vergeben?
    Wie war das passwd zu diesem angelegten Benutzer?

Ab jetzt gehen wir nur noch mit einer Verbindung über SSH (im Terminal) auf unseren neuen Server.

ssh Benutzer@IP-Adresse

Aktualisieren - Neuester Stand:

sudo apt-get update

gefolgt von:

sudo apt-get upgrade

root kommt ohne Passwort, daher root Passwort vergeben:

sudo passwd root

7$#45Hg[]sZGh$§n$#45BGZsh+.n$#45BGZsh+R7$#45Hg[.]sZGh$§n$#45BGZsh+.n$#45BGZsh+$

Benutzerpasswort ändern:

sudo passwd Benutzername

hn$#+.##§§&gszhdn91n.L§§&gszhdnzhdn91n.L§§&[]#$$++NuhjXRdVGZsh+.n$#45BGZsh+R

Neustart:

sudo reboot

Fertig!

Das war es auch schon für Ubuntu. Viel mehr ist erforderlich - später!

   

Server downloaden: https://releases.ubuntu.com/20.04.3/

Drucke diesen Beitrag

  Für unsere Forenbeiträge gilt grundsätzlich:
Geschrieben von: ThunderTower - 12.12.2021, 12:30 - Forum: Informationen und aktuelle Meldungen - Keine Antworten

Sehr geehrte Leserinnen, sehr geehrte Leser,

ein Forenbeitrag entspricht nicht unseren gültigen Regeln.

Für unsere Forenbeiträge gilt grundsätzlich:

Sinn und Zweck des Forums ist ein an die Öffentlichkeit gerichteter "Markt der Meinungen".

Es soll daher unter den Nutzern ein friedlicher und respektvoller Umgang ohne beleidigende Anfeindungen gepflegt werden.


Es ist Ihnen insbesondere untersagt:

  •     beleidigende oder unwahre Inhalte zu veröffentlichen
  •     Spam über das System an andere Nutzer zu versenden
  •     gesetzlich, insbesondere durch das Urheber- und Markenrecht, geschützte Inhalte ohne Berechtigung zu verwenden
  •     wettbewerbswidrige Handlungen vorzunehmen
  •     Ihr Thema mehrfach im Forum einzustellen (Verbot von Doppelpostings)
  •     Presseartikel Dritter ohne Zustimmung des Urhebers im Forum zu veröffentlichen
  •     Werbung im Forum ohne ausdrückliche schriftliche Genehmigung durch den Anbieter zu betreiben.
  •     Dies gilt auch für sog. Schleichwerbung wie insbesondere das Verlinken der eigenen Homepage mit oder ohne Beitext in der Signatur           
  •     Homepage-URLs und Adress- bzw. Kontaktdaten dürfen nur im Benutzer-Profil des Forums veröffentlicht werden.


Beim Verstoß, insbesondere gegen die zuvor genannten Regeln § 3 Abs. 1 und 2, kann der Anbieter unabhängig von einer Kündigung,

auch die folgenden Sanktionen gegen den Nutzer verhängen:

Löschung oder Abänderung von Inhalten, die der Nutzer eingestellt hat,

Ausspruch einer Abmahnung oder Sperrung des Zugangs zum Forum.

Wir bitten um Beachtung, dass aggressive, verachtende oder beleidigende Online-Beiträge in Zukunft ohne Vorankündigung (icl. Profil) sofort gelöscht werden.


Lukas

Drucke diesen Beitrag

  Und jetzt: Viel Spaß beim Lesen mit Jupiter!
Geschrieben von: ThunderTower - 07.12.2021, 11:31 - Forum: Informationen und aktuelle Meldungen - Antworten (2)

Hallo Jupiter,

da hast Du uns allen ein wunderbares Weihnachtsgeschenk gemacht.

Ich möchte mich im Namen aller (insofern ich das darf) für diese umfangreiche perfekte Dokumentation bedanken.

Die Links zu den einzelnen Threads sind sehr übersichtlich angeordnet und angenehm der gesamte Beitrag zu lesen.

Man findet viele Antworten auf Fragen mit nachfolgendem Aha-Erlebnis. Hast viel Zeit und Energie für alle Leser investiert.

Ein bemerkenswert guter und empfehlenswerter Beitrag!

Danke

Und jetzt: Viel Spaß beim Lesen mit Jupiter!


Yes

Drucke diesen Beitrag

  Klamotto, Otterland (3 Läden)
Geschrieben von: Jupiter Rowland - 06.12.2021, 22:51 - Forum: Shops für legale Meshbodys Ruth2, Roth2 und Verwandte - Keine Antworten

OpenSimWorld-Eintrag

Taxi: hop://otterland.de:8002/Klamotto

Warnung: Bakes-on-Mesh funktionieren hier noch nicht richtig!

Ein Klassiker unter den Freebie-Sims ist Klamotto. Die Ursprünge dieser Sim gehen zurück bis in die Zeit, als es in OpenSim mit Rigged-Mesh-Kleidung losging und Otto von Otter in Eigeninitiative Herrenbekleidung anfertigte, damit nicht wie sonst so oft die Herren der Schöpfung modisch zu kurz kamen. Ihm zur Seite stand damals Cary Bean mit ihrer Deva-Moda-Produktlinie.

Im Gegensatz zu vielen neueren Freebie-Sims gibt es hier aber nicht einen großen Laden mit einem Betreiber, auch nicht das typische „urbane“ Umfeld mit jeweils themenbezogenen Läden, die auch wieder alle dem Sim-Betreiber gehören. Die meisten Läden in Klamotto werden tatsächlich von den von Otters betrieben, aber es gibt auch „Ladenmieter“ und Fremdprodukte. Das führt dann dazu, daß die Läden vielfach nicht themenrein sind, und zu einer riesigen Produktvielfalt, die überwiegend jenseits dessen liegt, was man in denjenigen Freebie-Sims findet, die in den letzten zwei, drei Jahren gestartet wurden.

Einerseits führt das dazu, daß ich diese Sim in neun Threads präsentieren muß, weil sie sich über neun Rubriken erstreckt. Hier geht es um Meshbodys aus der Ruth2-Familie.

  • Den Thread für Damenbekleidung findet ihr hier.
  • Den Thread für Herrenbekleidung findet ihr hier.
  • Den Thread für Schmuck und Accessoires findet ihr hier.
  • Den Thread für Hüte findet ihr hier.
  • Den Thread für Bodys, die nichts mit Ruth2 und Roth2 zu tun haben, und Körperteile findet ihr hier.
  • Den Thread für Erotik-Artikel findet ihr hier.
  • Den Thread für Sim-Deko findet ihr hier.
  • Den Thread für Musikinstrumente findet ihr hier.

Andererseits fallen einige dieser Threads sehr umfangreich aus, weil die jeweiligen Rubriken auch schon mal von mehr als einem halben Dutzend Läden abgedeckt werden. Lukas hat mich darum gebeten, jeweils nur einen Thread pro Sim zu machen und nicht einen pro Laden. Es sollte aber klar sein, daß ich acht Läden in einer Rubrik nicht mit drei, vier bunten Bildchen und einem Zweizeiler informativ abdecken kann, und nur grobe Impressionen will ich hier nicht bringen. Also können die Threads durchaus umfangreich ausfallen, so auch dieser hier.


Mesh Body Shop (Eingangsbereiche: 93/77/21, 110/61/21)

[Bild: attachment.php?aid=738]
Zwischen den vielen Meshbodys zumindest zweifelhafter Herkunft ist aus den Ruth2- und Roth2-Familien nur ein einziger zu finden: Ruth 2.0 RC#2. Den hat Otto auch nicht direkt von Shin Ingen, sondern von HGluv, Hyacinth Jewells altem Grid. Den Release von RC#3 – Monate nach RC#2 – hat auch er nie mitbekommen.

Ich würde ihn dahingehend ja gern auf den neuesten Stand bringen (Ruth 2.0 RC#2 durch RC#3 ersetzen, dazu die Extras-Box, Roth 2.0 RC#1 und die insgesamt 13 Ruth2-v4- und Roth2-v2-Boxen), aber der Laden gibt den Platz nicht mehr her. Schon Athena 6 und Adonis 4 müssen in der Mitte knapp hinter der Rezzfläche stehen.


Leora’s Beautiful Adam and Eve (Eingangsbereich: 103/181/22)

[Bild: attachment.php?aid=743]
In diesem Laden bietet Leora ihren Meshbody Eva (auf der Box steht Eve) an, einen Fork von Sean Heavys RuthToo RC#3, was wiederum ein Fork von Shin Ingens Ruth 2.0 RC#3 ist. Den Body kenne ich nur vom Hören und habe ihn noch nicht getestet. Andere Boxen lassen aber erkennen, daß sie den eigentlichen Meshbody unverändert gelassen hat. Bevor jemand nach BoM fragt: Dafür ist er schon wieder zu alt. In der „Starteroutfit“-Box in der Box ist übrigens keine Kleidung enthalten, sonst hätte ich sie unter Damenmode vermeldet.

Leora hatte auch einen Adam auf Basis RothToo RC#1 geplant, der aber nie das Licht der Welt erblickte.


The Little Medieval Stall

[Bild: attachment.php?aid=745]
Zwischen den Gebäuden befindet sich eine Art Marktfläche, auf der weitere Boxen angeboten werden. Diese haben als Thema entweder Mittelalter inklusive Piraten oder Gor. Leora Jacobus hat hier zwei Boxen mit Eva (eigentlich RothToo RC#3) und grüner Mittelalterkleidung aufgestellt.

Hier gab es auch mal japanischen Content, der ist aber auf eine eigene Sim ausgelagert worden.

Drucke diesen Beitrag

  Klamotto, Otterland (3 Läden)
Geschrieben von: Jupiter Rowland - 06.12.2021, 22:49 - Forum: Hutshopping für Damen und Herren - Keine Antworten

OpenSimWorld-Eintrag

Taxi: hop://otterland.de:8002/Klamotto

Warnung: Bakes-on-Mesh funktionieren hier noch nicht richtig!

Ein Klassiker unter den Freebie-Sims ist Klamotto. Die Ursprünge dieser Sim gehen zurück bis in die Zeit, als es in OpenSim mit Rigged-Mesh-Kleidung losging und Otto von Otter in Eigeninitiative Herrenbekleidung anfertigte, damit nicht wie sonst so oft die Herren der Schöpfung modisch zu kurz kamen. Ihm zur Seite stand damals Cary Bean mit ihrer Deva-Moda-Produktlinie.

Im Gegensatz zu vielen neueren Freebie-Sims gibt es hier aber nicht einen großen Laden mit einem Betreiber, auch nicht das typische „urbane“ Umfeld mit jeweils themenbezogenen Läden, die auch wieder alle dem Sim-Betreiber gehören. Die meisten Läden in Klamotto werden tatsächlich von den von Otters betrieben, aber es gibt auch „Ladenmieter“ und Fremdprodukte. Das führt dann dazu, daß die Läden vielfach nicht themenrein sind, und zu einer riesigen Produktvielfalt, die überwiegend jenseits dessen liegt, was man in denjenigen Freebie-Sims findet, die in den letzten zwei, drei Jahren gestartet wurden.

Einerseits führt das dazu, daß ich diese Sim in neun Threads präsentieren muß, weil sie sich über neun Rubriken erstreckt. Hier geht es um Hüte.

  • Den Thread für Damenbekleidung findet ihr hier.
  • Den Thread für Herrenbekleidung findet ihr hier.
  • Den Thread für Schmuck und Accessoires findet ihr hier.
  • Den Thread für Bodys, die nichts mit Ruth2 und Roth2 zu tun haben, und Körperteile findet ihr hier.
  • Den Thread für Bodys der Ruth2-Familie findet ihr hier
  • Den Thread für Erotik-Artikel findet ihr hier.
  • Den Thread für Sim-Deko findet ihr hier.
  • Den Thread für Musikinstrumente findet ihr hier.

Andererseits fallen einige dieser Threads sehr umfangreich aus, weil die jeweiligen Rubriken auch schon mal von mehr als einem halben Dutzend Läden abgedeckt werden. Lukas hat mich darum gebeten, jeweils nur einen Thread pro Sim zu machen und nicht einen pro Laden. Es sollte aber klar sein, daß ich acht Läden in einer Rubrik nicht mit drei, vier bunten Bildchen und einem Zweizeiler informativ abdecken kann, und nur grobe Impressionen will ich hier nicht bringen. Also können die Threads durchaus umfangreich ausfallen, so auch dieser hier.


Klamotto (Eingangsbereich: 150/49/21)

[Bild: attachment.php?aid=733]
Das große gelbe Haus in der Südostecke beherbergt im Grunde das Herz der Sim, den Doppelladen Klamotto/Deva Moda.

Im Erdgeschoß befindet sich die von Otto von Otter selbst ausgestattete Herrenabteilung Klamotto Menswear.

[Bild: attachment.php?aid=762]
In einem der hinteren Räume wird man auf eine erkleckliche Auswahl an Kopfbedeckungen stoßen. Obwohl diese im Erdgeschoß stehen, sind sie grundsätzlich als unisex zu betrachten. Die Holzbüsten tragen dabei nicht einfach nur Einzelhüte, sondern die meisten sind Boxen, in denen mehrere Varianten derselben Kopfbedeckung stecken.

Im Obergeschoß befindet sich die von Cary Bean ausgestattete Damenabteilung Deva Moda.

[Bild: attachment.php?aid=735]
Schon im ersten Raum wird man fündig in Form eines Damen-Bowlers und eines sehr großen weißen Huts, den man selbst einfärben kann. Fertig dekorierte Varianten desselben Huts sind enthalten in den Sakko-Outfit-Boxen.


AlCapone menSweaR (Eingangsbereich: 74/40/22)

[Bild: attachment.php?aid=751]
Beim hauptsächlichen Herrenausstatter auf der Sim gibt es Teile des Hutsortiments von Klamotto noch einmal.


Steamhat (Eingangsbereich: 56/99/21)

   
Der eigentliche Hutladen in Klamotto ist Steamhat. Das heißt, eigentlich ist Steamhat sogar auf Kopfbedeckungen für Damen spezialisiert. Hier ist ein Spezialgebiet wiederum, wie der Name schon andeutet, Steampunk. Aber generell gibt es eine große Auswahl an Hüten, Mützen und dergleichen.

Drucke diesen Beitrag

  Klamotto, Otterland (2 Läden)
Geschrieben von: Jupiter Rowland - 06.12.2021, 22:46 - Forum: Clubausstattung - Keine Antworten

OpenSimWorld-Eintrag

Taxi: hop://otterland.de:8002/Klamotto

Warnung: Bakes-on-Mesh funktionieren hier noch nicht richtig!

Ein Klassiker unter den Freebie-Sims ist Klamotto. Die Ursprünge dieser Sim gehen zurück bis in die Zeit, als es in OpenSim mit Rigged-Mesh-Kleidung losging und Otto von Otter in Eigeninitiative Herrenbekleidung anfertigte, damit nicht wie sonst so oft die Herren der Schöpfung modisch zu kurz kamen. Ihm zur Seite stand damals Cary Bean mit ihrer Deva-Moda-Produktlinie.

Im Gegensatz zu vielen neueren Freebie-Sims gibt es hier aber nicht einen großen Laden mit einem Betreiber, auch nicht das typische „urbane“ Umfeld mit jeweils themenbezogenen Läden, die auch wieder alle dem Sim-Betreiber gehören. Die meisten Läden in Klamotto werden tatsächlich von den von Otters betrieben, aber es gibt auch „Ladenmieter“ und Fremdprodukte. Das führt dann dazu, daß die Läden vielfach nicht themenrein sind, und zu einer riesigen Produktvielfalt, die überwiegend jenseits dessen liegt, was man in denjenigen Freebie-Sims findet, die in den letzten zwei, drei Jahren gestartet wurden.

Einerseits führt das dazu, daß ich diese Sim in neun Threads präsentieren muß, weil sie sich über neun Rubriken erstreckt. Hier geht es um Musikinstrumente.

  • Den Thread für Damenbekleidung findet ihr hier.
  • Den Thread für Herrenbekleidung findet ihr hier.
  • Den Thread für Schmuck und Accessoires findet ihr hier.
  • Den Thread für Hüte findet ihr hier.
  • Den Thread für Bodys, die nichts mit Ruth2 und Roth2 zu tun haben, und Körperteile findet ihr hier.
  • Den Thread für Bodys der Ruth2-Familie findet ihr hier
  • Den Thread für Erotik-Artikel findet ihr hier.
  • Den Thread für Sim-Deko findet ihr hier.

Andererseits fallen einige dieser Threads sehr umfangreich aus, weil die jeweiligen Rubriken auch schon mal von mehr als einem halben Dutzend Läden abgedeckt werden. Lukas hat mich darum gebeten, jeweils nur einen Thread pro Sim zu machen und nicht einen pro Laden. Es sollte aber klar sein, daß ich acht Läden in einer Rubrik nicht mit drei, vier bunten Bildchen und einem Zweizeiler informativ abdecken kann, und nur grobe Impressionen will ich hier nicht bringen. Also können die Threads durchaus umfangreich ausfallen, so auch dieser hier.


Klamotto/Deva Moda (Eingangsbereich: 150/49/21)

[Bild: attachment.php?aid=733]
Das große gelbe Haus in der Südostecke beherbergt im Grunde das Herz der Sim, den Doppelladen Klamotto/Deva Moda.

[Bild: attachment.php?aid=734]
Im Eingangsbereich steht ein Tisch mit ein paar Boxen. Die ganz linke ist eine Box mit Musikequipment von Manfred Aabye. Für Clubs tauglich ist davon aber nur wenig, am ehesten noch das DJ-Set. Ansonsten geht der Inhalt eher Richtung Gitarre und Baß, allerdings ohne am Avatar tragbare Musikinstrumente.


MB Creations (Eingangsbereich: 170/171/22)

[Bild: attachment.php?aid=747]

Im ansonsten eher zweifelhaften Laden steht ein kopierbarer schwarzer Flügel mit eingebautem Radioskript (!) und einer Bank mit drei Sitzpositionen.

Für Clubbetreiber oder Sammler älterer Clubtechnik wäre noch Aine Caoimhes Country Line Dance Floor in der OSgrid/Metropolis-Edition interessant, der in einer Box vorm Eingang zu finden ist.

Drucke diesen Beitrag

  Klamotto, Otterland (7 Läden)
Geschrieben von: Jupiter Rowland - 06.12.2021, 22:44 - Forum: Bodys und Körperteile - Keine Antworten

OpenSimWorld-Eintrag

Taxi: hop://otterland.de:8002/Klamotto

Warnung: Bakes-on-Mesh funktionieren hier noch nicht richtig!

Ein Klassiker unter den Freebie-Sims ist Klamotto. Die Ursprünge dieser Sim gehen zurück bis in die Zeit, als es in OpenSim mit Rigged-Mesh-Kleidung losging und Otto von Otter in Eigeninitiative Herrenbekleidung anfertigte, damit nicht wie sonst so oft die Herren der Schöpfung modisch zu kurz kamen. Ihm zur Seite stand damals Cary Bean mit ihrer Deva-Moda-Produktlinie.

Im Gegensatz zu vielen neueren Freebie-Sims gibt es hier aber nicht einen großen Laden mit einem Betreiber, auch nicht das typische „urbane“ Umfeld mit jeweils themenbezogenen Läden, die auch wieder alle dem Sim-Betreiber gehören. Die meisten Läden in Klamotto werden tatsächlich von den von Otters betrieben, aber es gibt auch „Ladenmieter“ und Fremdprodukte. Das führt dann dazu, daß die Läden vielfach nicht themenrein sind, und zu einer riesigen Produktvielfalt, die überwiegend jenseits dessen liegt, was man in denjenigen Freebie-Sims findet, die in den letzten zwei, drei Jahren gestartet wurden.

Einerseits führt das dazu, daß ich diese Sim in neun Threads präsentieren muß, weil sie sich über neun Rubriken erstreckt. Hier geht es um Meshbodys, die nichts mit Ruth2 und Roth2 zu tun haben, und Körperteile.

  • Den Thread für Damenbekleidung findet ihr hier.
  • Den Thread für Herrenbekleidung findet ihr hier.
  • Den Thread für Schmuck und Accessoires findet ihr hier.
  • Den Thread für Hüte findet ihr hier.
  • Den Thread für Bodys der Ruth2-Familie findet ihr hier
  • Den Thread für Erotik-Artikel findet ihr hier.
  • Den Thread für Sim-Deko findet ihr hier.
  • Den Thread für Musikinstrumente findet ihr hier.

Andererseits fallen einige dieser Threads sehr umfangreich aus, weil die jeweiligen Rubriken auch schon mal von mehr als einem halben Dutzend Läden abgedeckt werden. Lukas hat mich darum gebeten, jeweils nur einen Thread pro Sim zu machen und nicht einen pro Laden. Es sollte aber klar sein, daß ich acht Läden in einer Rubrik nicht mit drei, vier bunten Bildchen und einem Zweizeiler informativ abdecken kann, und nur grobe Impressionen will ich hier nicht bringen. Also können die Threads durchaus umfangreich ausfallen, so auch dieser hier.


Klamotto (Eingangsbereich: 150/49/21)

[Bild: attachment.php?aid=733]
Das große gelbe Haus in der Südostecke beherbergt im Grunde das Herz der Sim, den Doppelladen Klamotto/Deva Moda.

Im Erdgeschoß befindet sich die von Otto von Otter selbst ausgestattete Herrenabteilung Klamotto Menswear.

   
In den hinteren Räumen findet man männliche „Körperteile“ im weitesten Sinne, die überwiegend noch für den Systembody gemacht wurden. Die Auswahl ist riesig: Skins in verschiedenen Stilen und jeweils in etlichen Hautfarben, Haare durchweg in verschiedenen Farben, Augen, realistische Shapes, Bärte als Tattoos, Bärte als Attachments – so ziemlich alle Attachment-Bärte, die im Hypergrid kursieren, dürften von hier stammen –, Körperbehaarung als Tattoos, Körperbehaarung als Attachments, Hairbase-Tattoos, Genitalien usw. Bemerkenswert ist, daß es hier auch Skins ohne fest aufgebaketen Dreitagebart im Gesicht gibt.

In dem Raum mit den Bärten, der Körperbehaarung und den Genitalien liegt vor einem Fenster auch eine undekorierte Box mit einem ziemlich brauchbaren Männer-AO, den man direkt im Viewer nutzen kann, was den jeweiligen Server im Vergleich zu den üblichen ZHAO-AOs extrem viel weniger belastet und somit Lag reduziert.

Im Obergeschoß befindet sich die von Cary Bean ausgestattete Damenabteilung Deva Moda.

   
Die Auswahl an Avatarausstattung für Damen, die es hier gibt, steht der für Herren im Erdgeschoß in nichts nach – bis natürlich darauf, daß es keine Bärte gibt. Allerdings haben sehr viele Skins fertig aufgebaketes, also nicht entfernbares Make-up. Am rechten Bildrand seht ihr übrigens eine Box mit genau dem schwarzen Flexi-Bob, den mein Schwesterchen Juno trägt, falls euch die Frisur gefällt.

[Bild: attachment.php?aid=736]
In dem mit Hanfblättern geschmückten Raum für Make-up gibt es noch drei andere Goodies: Fingernägel für den Systembody, ein geskriptetes weibliches Genital und wiederum in einer undekorierten, unbeschrifteten Box einen guten Frauen-AO für den Viewer – falls ihr mit einfachen Mitteln Leistung sparen, Lag reduzieren und euch vielleicht auch wie Juno bewegen wollt. Dieser AO kommt auch wieder in verschiedenen Varianten: Neben dem normalen VISTA AO gibt es einen namens RELAXED, einen namens COQUETTE und für besondere Anlässe einen namens FORMAL.


Tante Tilly’s (Eingangsbereich: 63/54/21)

[Bild: attachment.php?aid=737]
Im primären Damenmodeladen auf der Sim gibt es auch eine Abteilung mit Haaren an zwei Wänden.

   
Links dürften durchgängig noch Flexi-Haare hängen; woher die stammen, ist mir unbekannt. Die Mesh-Frisuren rechts sind jedenfalls meines Wissens allesamt durch die Bank nicht sauber.


Mesh Body Shop (Eingangsbereiche: 93/77/21, 110/61/21, 110/92/22)

[Bild: attachment.php?aid=738]
Der Mesh Body Shop dürfte eine der größten Auswahlen an Meshbodys im Hypergrid haben. Der Fokus liegt natürlich auf Athena (4.0, 5.0, 6.0 inkl. Petite und Flat) und Adonis (2.01, 3.0, 4.0), aber ansonsten gibt es hier etliche andere Bodys, die teilweise ziemlich obskur sind. Im Grunde vermißt man nur Femme und die Decadence-Bodys (und eine größere und aktuellere Ruth2-Auswahl sowie Roth2 überhaupt, aber das gehört in einen anderen Thread).

Zusätzlich gibt es die üblichen klassischen Meshköpfe aus der Zeit vor BoM, Skin-Applier für Athena und Adonis, einen Lippenstift-Applier und eine Nippel-Box für Athena, ein paar Frisuren und eine kleinere Auswahl an bekannteren ZHAO-AOs.


Chain’s Fetishwear (Eingangsbereiche: 33/161/21, 48/150/21, 68/157/21, 48/174/21, 45/174/21)

[Bild: attachment.php?aid=741]
Die VAW-Genitalien, die es im Klamotto/Deva-Moda-Bau gibt, finden sich hier noch einmal. Insgesamt sind sie auf der Sim mindestens dreimal zu finden.


Leora’s Beautiful People (Eingangsbereich: 106/184/22)

[Bild: attachment.php?aid=742]
Auch Leora Jacobus hat zwei Läden in Klamotto. In einem davon bietet sie ihre Beautiful People an, Komplettavatare auf Basis des Systembody mit Layer- und Prim-Bekleidung. OpenSim-Komplettneulinge können sie nutzen, um ihren Avatar aufzuhübschen, ohne sich erst in Mesh einarbeiten zu müssen. Fortgeschrittene Nutzer – vor allem solche mit Systembody, teilweise aber auch solche mit Meshbodys, am ehesten noch mit BoM – können diese Avatare wiederum nutzen als Quellen für Einzelteile. Viele davon, etwa Haare, wird man schon von Linda Kellie kennen, andere dürften exklusive Eigenanfertigungen von Leora sein.


Leora’s Beautiful Adam and Eve (Eingangsbereich: 103/181/22)

[Bild: attachment.php?aid=743]
In ihrem zweiten Laden bietet Leora zwei Na’vi-Komplettavatare auf Basis des Systembody an (die Na’vi sind die drei Meter großen Schlümpfe aus James Camerons Avatar) Hier gibt es also auch die passende Skin zur Na’vi-Kleidung auf Ai Austins RuthAndRoth-Sim – nur eben in einer Komplettavatar-Box.


A&O (Eingangsbereich: 117/219/22)

   
A&O ist ein eher ungewöhnliches, mysteriös anmutendes Gebäude und ein Laden, der sich auf Animation Overrides spezialisiert hat. Die sind aber nicht wie üblich als Boxen an Wände geklebt. Statt dessen gibt es spezielle Apparaturen zu beiden Seiten des Gebäudes – links für Weiblein, rechts für Männlein, jeweils elf an der Zahl –, die gleichzeitig zum „Kaufen“ und zum Testen (!) des jeweiligen AO genutzt werden können. Man kann also seinen Avatar auf eine dieser Gerätschaften „setzen“ und den AO vorm „Kauf“ in Ruhe durchtesten. Das erspart es einem, sein Inventar mit AOs zuzumüllen, die einem dann erst in der Praxis mißfallen.

Eigentlich ist das überflüssig zu erwähnen, aber gewarnt sei man trotzdem: Es handelt sich dabei durchweg um sogenannte ZHAO-AOs, wie sie aus Second Life kommen. Diese werden als Attachments getragen; sie verursachen sehr viel Last auf dem Grid- bzw. Simserver und sind eine der hauptsächlichen Ursachen für Lag bei Veranstaltungen. Wer das vermeiden will (und auf das evtl. dem Lieblings-AO beiliegende HUD verzichten kann), kann den AO aber rezzen, auspacken und den Inhalt direkt im Viewer nutzen, was die Serverlast extrem reduziert.

Drucke diesen Beitrag