logo

Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden.Neue Registrierungen sind deaktiviert.

Mitteilung

Icon
Error

Einloggen


Beitrag melden
Geschrieben von: MartinRJ Fayray Offline Geschrieben Mittwoch, 28. Januar 2015 23:29:10(UTC)
Das folgende Skript hilft, eine Partikelsystem-Liste die via Chat, Linkmessage oder dergleichen an ein anderes Skript übertragen wurde wieder zurück in eine Liste zu konvertieren.
Man wandelt hierzu die komplette Liste des Partikelsystems mit llDumpList2String zunächst in einen String um, und nach der Übertragung ruft man lsystem() auf, um den String wieder in eine Liste zu konvertieren.

Das Skript speichert dazu zu jedem möglichen Wert im Partikelsystem den passenden Typ in der Liste ltypes.

Inklusive Beispiel im state_entry- Event:

Code:

string sSEP = "|";

list lsystem(string smessage)
{ //Converts message (converted with llDumpList2String() with sSEP as separator from a valid particlesystem-list) back to a particlesystem-list again.
  list lnew;
  list lj = llParseString2List(smessage, [sSEP], []);
  integer iC; integer iE; integer iV; integer iT;
  for (iC = 0; iC < llGetListLength(lj); iC = iC + 2)
  {
    iE = (integer)llList2String(lj, iC);
    iV = llListFindList(lpsystem, [iE]);
    iT = llList2Integer(ltypes, iV);
    if (iT == 1)
    {
     lnew += [iE] + llList2Integer(lj, iC+1);
    }
    else if (iT == 2)
    {
     lnew += [iE] + llList2Float(lj, iC+1);
    }
    if (iT == 3)
    {
     lnew += [iE] + (vector)llList2String(lj, iC+1);
    }
    if (iT == 4)
    {
     lnew += [iE] + (key)llList2String(lj, iC+1);
    }
    if (iT == 5)
    {
     lnew += [iE] + llList2String(lj, iC+1);
    }
  }
  return lnew;
}

list lpsystem =
[PSYS_PART_FLAGS,
PSYS_SRC_PATTERN ,
PSYS_SRC_BURST_RADIUS,
PSYS_SRC_ANGLE_BEGIN,
PSYS_SRC_ANGLE_END,
PSYS_SRC_TARGET_KEY,
PSYS_PART_START_COLOR,
PSYS_PART_END_COLOR,
PSYS_PART_START_ALPHA,
PSYS_PART_END_ALPHA,
PSYS_PART_START_SCALE,
PSYS_PART_END_SCALE,
PSYS_SRC_TEXTURE,
PSYS_PART_START_GLOW,
PSYS_PART_END_GLOW,
PSYS_PART_BLEND_FUNC_SOURCE,
PSYS_PART_BLEND_FUNC_DEST,
PSYS_SRC_MAX_AGE,
PSYS_PART_MAX_AGE,
PSYS_SRC_BURST_RATE,
PSYS_SRC_BURST_PART_COUNT,
PSYS_SRC_ACCEL,
PSYS_SRC_OMEGA,
PSYS_SRC_BURST_SPEED_MIN,
PSYS_SRC_BURST_SPEED_MAX];
/*1 = integer
2 = float
3 = vektor
4 = key
5 = string */
list ltypes =
[1,
1,
2,
2,
2,
4,
3,
3,
2,
2,
3,
3,
5,
2,
2,
1,
1,
2,
2,
2,
1,
3,
3,
2,
2];

default
{
    state_entry()
    { //Test.
        list ltestsystem = [
        PSYS_PART_FLAGS,       PSYS_PART_WIND_MASK | PSYS_PART_EMISSIVE_MASK,
        PSYS_SRC_PATTERN,      PSYS_SRC_PATTERN_EXPLODE,
        PSYS_PART_START_COLOR, <1.0, 0.0, 0.0>
        ];
        string stestsystem = llDumpList2String(ltestsystem, sSEP);
        list lconvertedback = lsystem(stestsystem);
        llOwnerSay(llDumpList2String(ltestsystem, "_"));
        llOwnerSay(llDumpList2String(lconvertedback, "_"));
        //Output:
        //[14:14] Object: 0_264_9_2_1_<1.000000, 0.000000, 0.000000>
        //[14:14] Object: 0_264_9_2_1_<1.000000, 0.000000, 0.000000>
    }
}
Geben Sie den Meldetext hier ein.
Fett Kursiv Unterstrichen   Hervorheben Zitat Sprachauswahl für Syntax Highlighting Bild einfügen Link einfügen   Unsortierte Liste Sortierte Liste   Linksbündig Zentriert Rechtsbündig   Herausrücken Einrücken   Weitere BBCodes
Schriftfarbe: Schriftgröße:
Melden Abbruch

Powered by YAF.NET | YAF.NET © 2003-2019, Yet Another Forum.NET
Diese Seite wurde in 0.017 Sekunden generiert.

Datenschutzrichtlinie
Haftungsausschluss
Impressum
Datenschutzerklärung
AGB, ToS
Kontakt