Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
OSSL2Gif
#30
Ich werden das ganze Skript austauschen so das die alten Animationstexturen gelesen werden können und die neuen eine Notecard bekommen.

Prototyp:

Texture-Animation-Script.lsl
PHP-Code:
// Universal LSL Texture Animation Script (Texture-based Notecard)
// Uses: <textureName>.notecard

integer animOn = TRUE;

list 
defaultEffects = [LOOP];
integer defaultMovement = 0; // 0=SLIDE, ROTATE, SCALE
integer face = ALL_SIDES;

integer sideX = 1;
integer sideY = 1;
float start = 0.0;
float length = 1.0;
float speed = 10.0;

string textureName = "";
string configNotecard = "";

key notecardQuery;
integer notecardLine = 0;

string trim(string v)
{
    return 
llStringTrim(v, STRING_TRIM);
}

list 
parseEffects(string value)
{
    list 
t = llParseString2List(llToUpper(value), [",",";","|"," "], []);
    list 
r = [];
    
integer i;
    for(
i=0;i<llGetListLength(t);i++)
    {
        
string s = trim(llList2String(t,i));
        if(
s == "LOOP") r += [LOOP];
        else if(
s == "SMOOTH") r += [SMOOTH];
        else if(
s == "REVERSE") r += [REVERSE];
        else if(
s == "PING_PONG" || s == "PINGPONG") r += [PING_PONG];
    }
    if(
llGetListLength(r) == 0) return defaultEffects;
    return 
r;
}

integer parseMovement(string v)
{
    
v = llToUpper(trim(v));
    if(
v == "ROTATE") return ROTATE;
    if(
v == "SCALE") return SCALE;
    return 
0;
}

integer parseFace(string v)
{
    
v = llToUpper(trim(v));
    if(
v == "ALL" || v == "ALL_SIDES") return ALL_SIDES;
    return (integer)
v;
}

stopAnim()
{
    
llSetTextureAnim(FALSE, face, 0,0,0,0,0);
}

initAnim()
{
    
integer bits = 0;
    
integer i;
    for(
i=0;i<llGetListLength(defaultEffects);i++)
        
bits |= llList2Integer(defaultEffects,i);

    
llSetTextureAnim(ANIM_ON | bits | defaultMovement,
        
face, sideX, sideY, start, length, speed);
}

parseConfig(string line)
{
    
line = trim(line);
    if(
line == "" || llGetSubString(line,0,0) == "#" || llGetSubString(line,0,1) == "//")
        return;

    
integer eq = llSubStringIndex(line,"=");
    if(
eq == -1) return;

    
string k = llToLower(trim(llGetSubString(line,0,eq-1)));
    
string v = trim(llGetSubString(line,eq+1,-1));

    if(
k == "columns") sideX = (integer)v;
    else if(
k == "rows") sideY = (integer)v;
    else if(
k == "speed" || k == "fps") speed = (float)v;
    else if(
k == "start") start = (float)v;
    else if(
k == "effects") defaultEffects = parseEffects(v);
    else if(
k == "movement") defaultMovement = parseMovement(v);
    else if(
k == "face") face = parseFace(v);
    else if(
k == "animon")
        
animOn = (llToUpper(v) == "TRUE" || v == "1" || v == "ON");
}

apply()
{
    if(
textureName == "")
    {
        
llOwnerSay("Keine Textur gefunden.");
        return;
    }

    
llSetTexture(textureName, face);
    
length = (float)(sideX * sideY);

    if(
animOn) initAnim();
    else 
stopAnim();
}

loadNotecard()
{
    if(
llGetInventoryType(configNotecard) == INVENTORY_NOTECARD)
    {
        
notecardLine = 0;
        
notecardQuery = llGetNotecardLine(configNotecard, notecardLine);
    }
    else
    {
        
llOwnerSay("Keine Notecard gefunden: " + configNotecard);
        
apply();
    }
}

default
{
    
state_entry()
    {
        
stopAnim();

        
textureName = llGetInventoryName(INVENTORY_TEXTURE,0);
        if(
textureName == "")
            return;

        
configNotecard = textureName + ".notecard";
        
loadNotecard();
    }

    
dataserver(key q, string data)
    {
        if(
q != notecardQuery) return;

        if(
data != EOF)
        {
            
parseConfig(data);
            
notecardLine++;
            
notecardQuery = llGetNotecardLine(configNotecard, notecardLine);
        }
        else
        {
            
apply();
        }
    }

    
changed(integer c)
    {
        if(
c & CHANGED_INVENTORY)
            
llResetScript();
    }

    
touch_start(integer t)
    {
        
animOn = !animOn;
        
apply();
    }
} 

bildname.notecard
Code:
# Konfiguration für bildname
columns = 6
rows    = 5
speed   = 5
start   = 0
effects = LOOP
movement = SLIDE
face = ALL
animOn = TRUE

bildname.png
   
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



Zitieren


Nachrichten in diesem Thema
OSSL2Gif - von Manfred Aabye - 12.02.2026, 13:46
RE: OSSL2Gif - von Manfred Aabye - 12.02.2026, 21:00
RE: OSSL2Gif - von Manfred Aabye - 14.02.2026, 15:29
RE: OSSL2Gif - von Dorena Verne - 15.02.2026, 12:56
RE: OSSL2Gif - von Manfred Aabye - 17.02.2026, 10:42
RE: OSSL2Gif - von Pius Noel - 17.02.2026, 17:38
RE: OSSL2Gif - von Manfred Aabye - 18.02.2026, 17:45
RE: OSSL2Gif - von Manfred Aabye - 18.02.2026, 17:52
RE: OSSL2Gif - von Pius Noel - 18.02.2026, 20:06
RE: OSSL2Gif - von Manfred Aabye - 18.02.2026, 18:09
RE: OSSL2Gif - von Manfred Aabye - 19.02.2026, 13:43
RE: OSSL2Gif - von Manfred Aabye - 19.02.2026, 22:00
RE: OSSL2Gif - von Manfred Aabye - 20.02.2026, 18:52
RE: OSSL2Gif - von Manfred Aabye - 21.02.2026, 12:28
RE: OSSL2Gif - von Manfred Aabye - 22.02.2026, 20:26
RE: OSSL2Gif - von Pius Noel - 23.02.2026, 15:05
RE: OSSL2Gif - von Manfred Aabye - 23.02.2026, 16:41
RE: OSSL2Gif - von Dorena Verne - 23.02.2026, 18:21
RE: OSSL2Gif - von Pius Noel - 23.02.2026, 20:50
RE: OSSL2Gif - von Manfred Aabye - 24.02.2026, 15:22
RE: OSSL2Gif - von Dorena Verne - 24.02.2026, 17:27
RE: OSSL2Gif - von Pius Noel - 24.02.2026, 18:44
RE: OSSL2Gif - von Pius Noel - 24.02.2026, 18:54
RE: OSSL2Gif - von Manfred Aabye - 24.02.2026, 19:22
RE: OSSL2Gif - von Manfred Aabye - 24.02.2026, 21:04
RE: OSSL2Gif - von Pius Noel - 25.02.2026, 13:29
RE: OSSL2Gif - von Manfred Aabye - 25.02.2026, 16:17
RE: OSSL2Gif - von Pius Noel - 25.02.2026, 18:01
RE: OSSL2Gif - von Manfred Aabye - 25.02.2026, 19:05
RE: OSSL2Gif - von Manfred Aabye - 26.02.2026, 13:13
RE: OSSL2Gif - von Dorena Verne - 26.02.2026, 14:01
RE: OSSL2Gif - von Manfred Aabye - 26.02.2026, 15:51
RE: OSSL2Gif - von Manfred Aabye - 26.02.2026, 15:29
RE: OSSL2Gif - von Dorena Verne - 26.02.2026, 16:06
RE: OSSL2Gif - von Manfred Aabye - 26.02.2026, 16:32
RE: OSSL2Gif - von Manfred Aabye - 26.02.2026, 16:14
RE: OSSL2Gif - von Dorena Verne - 26.02.2026, 16:56
RE: OSSL2Gif - von Pius Noel - 27.02.2026, 12:08
RE: OSSL2Gif - von Dorena Verne - 27.02.2026, 12:20
RE: OSSL2Gif - von Manfred Aabye - 01.03.2026, 15:36
RE: OSSL2Gif - von Nightshade Ceres - 26.03.2026, 17:46
RE: OSSL2Gif - von Dorena Verne - 01.03.2026, 15:50
RE: OSSL2Gif - von Pius Noel - 02.03.2026, 13:42
RE: OSSL2Gif - von Dorena Verne - 02.03.2026, 14:22
RE: OSSL2Gif - von Manfred Aabye - 27.03.2026, 15:32

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 5 Gast/Gäste