Sunbleached Posted September 8, 2019 Share Posted September 8, 2019 Hello! Please help to remake the random order multiple GIF animation script into a script playing it in a strict order, one after another. I suspect this line but I can’t fix it yet gTexture = llGetInventoryName( INVENTORY_TEXTURE, (integer) llFrand(llGetInventoryNumber(INVENTORY_TEXTURE)) ); integer gFrameX = 0; integer gFrameY = 0; float gRate = 0.0; string gTexture; setTex() { gTexture = llGetInventoryName( INVENTORY_TEXTURE, (integer) llFrand(llGetInventoryNumber(INVENTORY_TEXTURE)) ); llSetTexture(gTexture, 2); if (llSubStringIndex(gTexture, ".anim") != -1) { list lParams = llParseString2List(gTexture, [";"], []); gFrameX = llList2Integer(lParams, 1); gFrameY = llList2Integer(lParams, 2); gRate = llList2Float(lParams, 3); llSetTextureAnim(ANIM_ON | LOOP, 2, gFrameX, gFrameY, 0, 0, gRate); } else llSetTextureAnim(LOOP, 2, gFrameX, gFrameY, 0, 0, gRate); } default { state_entry() { llAllowInventoryDrop(TRUE); llSetTimerEvent (10.0); setTex(); } timer() { setTex(); } touch_start(integer touches) { llSetTimerEvent (10.0); setTex(); } changed(integer change) { if (change & (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY)) setTex(); } } Link to comment Share on other sites More sharing options...
Rolig Loon Posted September 8, 2019 Share Posted September 8, 2019 Good guess. Set a global integer variable as a counter and start counting. 1 Link to comment Share on other sites More sharing options...
Kyrah Abattoir Posted September 9, 2019 Share Posted September 9, 2019 (edited) <nevermind> Edited September 9, 2019 by Kyrah Abattoir Link to comment Share on other sites More sharing options...
Sunbleached Posted September 9, 2019 Author Share Posted September 9, 2019 33 minutes ago, Kyrah Abattoir said: <nevermind> Haha, maybe it was! what was it? Link to comment Share on other sites More sharing options...
Sunbleached Posted September 9, 2019 Author Share Posted September 9, 2019 (edited) 13 hours ago, Rolig Loon said: Good guess. Set a global integer variable as a counter and start counting. Hello! Thank you for answer! I did this but something is wrong... integer count; setTex() { gTexture = llGetInventoryName( INVENTORY_TEXTURE, (integer)llFrand( llGetInventoryNumber(INVENTORY_TEXTURE)) ); llSetTexture(llList2Key(gTexture,count), ALL_SIDES ); ++count; count %=llGetListLength(gTexture); I can see that i misused llList2Key and llGetListLength ... but still dont get it Edited September 9, 2019 by Sunbleached Link to comment Share on other sites More sharing options...
Mollymews Posted September 9, 2019 Share Posted September 9, 2019 the script code you posted is all a bit over-complicated. Try to simplify stuff down to the bare basics. Basics example integer index; integer number = llGetInventoryNumber(INVENTORY_TEXTURE); if (number) { string name = llGetInventoryName(INVENTORY_TEXTURE, index); if (name != "") llSetTexture(name, ALL_SIDES); index = (++index) % number; } 1 Link to comment Share on other sites More sharing options...
Sunbleached Posted September 9, 2019 Author Share Posted September 9, 2019 40 minutes ago, Mollymews said: the script code you posted is all a bit over-complicated. Try to simplify stuff down to the bare basics. Basics example integer index; integer number = llGetInventoryNumber(INVENTORY_TEXTURE); if (number) { string name = llGetInventoryName(INVENTORY_TEXTURE, index); if (name != "") llSetTexture(name, ALL_SIDES); index = (++index) % number; } Wooow! Thank you so much! Now everything works perfectly!!! integer index; integer gFrameX = 0; integer gFrameY = 0; float gRate = 0.0; string name; setTex() { integer number = llGetInventoryNumber(INVENTORY_TEXTURE); if (number) { string name = llGetInventoryName(INVENTORY_TEXTURE, index); if (name != "") llSetTexture(name, ALL_SIDES); index = (++index) % number; llSubStringIndex(name, ".anim") != -1; list lParams = llParseString2List(name, [";"], []); gFrameX = llList2Integer(lParams, 1); gFrameY = llList2Integer(lParams, 2); gRate = llList2Float(lParams, 3); llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES, gFrameX, gFrameY, 0, 0, gRate); } else llSetTextureAnim(LOOP, ALL_SIDES, gFrameX, gFrameY, 0, 0, gRate); } default { state_entry() { llAllowInventoryDrop(TRUE); llSetTimerEvent(10.0); setTex(); } timer() { setTex(); } touch_start(integer touches) { llSetTimerEvent(10.0); setTex(); } changed(integer change) { if (change & (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY)) setTex(); } } (may come in handy to somebody else!) Link to comment Share on other sites More sharing options...
Recommended Posts
Please take a moment to consider if this thread is worth bumping.
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now