Rang: Ehrenmitglied
Mitglied seit: 05.09.2014(UTC) Beiträge: 84  Wohnort: Tulln und Rostock Dankte: 1 mal(e)
|
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>
}
}
|
It is the mark of an educated mind to be able to entertain a thought without accepting it. |