Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

No more warp?

Gaius Goodliffe
Dreamsmith
Join date: 15 Jan 2006
Posts: 116
03-16-2007 20:37
From: Keknehv Psaltery
Hopefully they'll update the Main grid before next Wednesday, but at least it's coming.

Rolling across the grid as we speak (I was just kicked out of Dogfight Atoll a little bit ago).

From: Rita Hemingway
Bunnyporter works again!!!!!

I'm afraid to ask...
Rita Hemingway
Registered User
Join date: 23 Sep 2005
Posts: 45
03-16-2007 20:58
Bunnyporter's my Warp teleporter. :)

Just tested it in m' burrow. On th main grid.

Got all kindsa happy customers now. Ah... hope.
Rita Hemingway
Registered User
Join date: 23 Sep 2005
Posts: 45
03-16-2007 21:04
From: Talarus Luan
The 10-meter limit has nothing to do with griefing and everything to do with inter-sim communications.
Reckon they could limit it to <-10,-10,0>..<266,266,768> then.
Luz Melbourne
Registered User
Join date: 26 Nov 2006
Posts: 9
Augh!
03-16-2007 22:00
The rolling update is supposedly finished, but my warpPos-scripted objects are still broken!

Maybe it has something to do with there now being over 12,000 active scripts in my sim (Work-arounds for the broken llSetPrimitiveParameters()? Even llSetPos() seems to be working even more slowly than usual.), but then, you'd think my workshop teleporter wouldn't be dropping me off 10m above its origin.

Maybe I'd better call support. Do they ever miss sims when they do these rolling updates?
_____________________
-----
Luz Melbourne
(Who speaks neither Spanish nor Australian.)
Seifert Surface
Mathematician
Join date: 14 Jun 2005
Posts: 912
03-16-2007 22:39
Warppos is working again in The Future :)
_____________________
-Seifert Surface
2G!tGLf 2nLt9cG
Joker Opus
Registered Usimibober
Join date: 9 May 2006
Posts: 363
03-16-2007 22:52
*clings onto warppos as it drifts away* Take me with you!!!!!!!!!!!!
_____________________
Jøkêr Øpüs
PLEASE FIX THE WEAPON TESTING SANDBOX - AN OLD SECONDLIFE HANGOUT!
Yiffy Yaffle
Purple SpiritWolf Mystic
Join date: 22 Oct 2004
Posts: 2,802
03-17-2007 11:42
At the end of a stressful day, WARPPOS TAKE ME AWAAAAYYYyyyyyy.
_____________________
Tiarnalalon Sismondi
Registered User
Join date: 1 Jun 2006
Posts: 402
03-18-2007 05:11
So I'm curious why, after they reinstated its functionality...they took it away again??

I reverted my lifts back to the original code and tested - worked perfectly. Now this morning they're broken again.
Daisy Rimbaud
Registered User
Join date: 12 Oct 2006
Posts: 764
03-18-2007 07:09
Yep, I just found them broken again - this is very odd.
Ravanne Sullivan
Pole Dancer Extraordinair
Join date: 10 Dec 2005
Posts: 674
03-18-2007 07:25
The recent patch broke many things, Warppos included. They put in a patch to fix that and broke many othere tings. They have now reverted back to the prior broken patch. LL really does not know what they are doing and their QC is absolute garbage.
_____________________
Ravanne's Dance Poles and Animations

Available at my Superstore and Showroom on Insula de Somni
http://slurl.com/secondlife/Insula de Somni/94/194/27/
Winter Ventura
Eclectic Randomness
Join date: 18 Jul 2006
Posts: 2,579
03-18-2007 07:54
CODE
WarpPos(vector destpos)
{
//R&D by Keknehv Psaltery, 05/25/2006
//with a little pokeing by Strife, and a bit more
//some more munging by Talarus Luan
//Final cleanup by Keknehv Psaltery
//Implementation of Failsafe by Winter Ventura 03/17/2007

// Compute the number of jumps necessary
integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1;

// Try and avoid stack/heap collisions
if (jumps > 100 )
jumps = 100; // 1km should be plenty
list rules = [ PRIM_POSITION, destpos ]; //The start for the rules list
integer count = 1;
while ( ( count = count << 1 ) < jumps)
rules = (rules=[]) + rules + rules; //should tighten memory use.
llSetPrimitiveParams( rules + llList2List( rules, (count - jumps) << 1, count) );

// Fail Safe
if ( llVecDist(llGetPos(), destpos) > 0.001 ) // Are we there yet? No?
{
while ( llVecDist(llGetPos(), destpos) > 0.001 ) // Okay let's do this the SLOW way
{
llSetPos(destpos);
}
}
}


This is a really rudimentary "failsafe" fallback from WarpPos to the older "slow train" method. It has ONE flaw that I've discovered.. so perhaps someone can help refine this further.

if destpos is underground, the beam get's stuck on the ground level, in an infinite loop. ANyone help me break that loop? Let's make the best WarpPos ever.
_____________________

● Inworld Store: http://slurl.eclectic-randomness.com
● Website: http://www.eclectic-randomness.com
● Twitter: @WinterVentura
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
03-18-2007 08:24
as in underground underground or just under a faked ground?
for the later making the item phantom should work?

For the former I guess you could keep a check to see if you are getting any closer and if not then abort safely.
Tiarnalalon Sismondi
Registered User
Join date: 1 Jun 2006
Posts: 402
03-18-2007 08:51
Well, this is my rudimentary fix to warpPos I'm using atm. Basically I just removed PRIM_POSITION from the lists and did a loop to set the pos destinations.

CODE
warp(vector target) 
{
if (target.z > 768) {
target.z = 768;
}
if (target == llGetPos())
{
llWhisper(0,"We are already on that floor");
}

integer jumps = (integer)(llVecMag(target-llGetPos())/10)+1;
if (jumps > 100) {
jumps = 100;
}
integer e = (integer)( llLog(jumps) / 0.6931471805 );
list rules = [ target ];
integer i;
for ( i = 0 ; i < e ; ++i ) {
rules += rules;
}
integer r = jumps - (integer)llPow( 2, e );
if (r > 0) {
rules += llList2List( rules, 0, r * 2 + 1 );
}
gothere(rules,jumps);
//llSetPrimitiveParams(rules);
}
gothere(list points, integer times)
{
integer i;
while (i < times)
{
llSetPos(llList2Vector(points,i));
i++;
}
}


Good thing is it's easy to revert since I only removed one thing and commented out the params call.
Winter Ventura
Eclectic Randomness
Join date: 18 Jul 2006
Posts: 2,579
03-18-2007 09:16
My goal actually, was to make a WaprPos subroutine that would try WarpPos first, and then could TELL if WarpPos wasn't working, and then "fall back" to the original method.

Newgate.. I mean "the real ground". Phantom or not, we're talking non-phys movement here, so moving through prims is NOT an issue.

The problem comes in if the ground is at 29m Z... and your target destpos is below that. (since llSetPos can't be used to move a prim under the "real" ground.

I know there's a way to detect the ground height.. Basically I need to fail out of the while loop if a setpos move would move the prim underground. (but not "fail" before getting TO the ground.)

Basically if I use the mod I posted.. the beam shoots to the ground.. and sits there flashing without unsitting the rider. WarpPos takes you to the same place (when working) but once it fails to "get to destpos" it completes and pops, depositing the rider.

I can show you the issue inworld if you're interested. Basically I need the beam to go as close as the system will allow it to get to destpos, then exit the while loop when it reaches an irreconcilable point.
_____________________

● Inworld Store: http://slurl.eclectic-randomness.com
● Website: http://www.eclectic-randomness.com
● Twitter: @WinterVentura
RobbyRacoon Olmstead
Red warrior is hungry!
Join date: 20 Sep 2006
Posts: 1,821
03-18-2007 10:07
From: Tiarnalalon Sismondi
So I'm curious why, after they reinstated its functionality...they took it away again??

I reverted my lifts back to the original code and tested - worked perfectly. Now this morning they're broken again.


Hmmm.... I noticed ALL KINDS OF THINGS broken during testing after the rolling update, then this morning my teleporters don't work again...

I assume they reverted the rolling update because it broke even MORE stuff.
_____________________
Winter Ventura
Eclectic Randomness
Join date: 18 Jul 2006
Posts: 2,579
03-18-2007 10:44
you notice how they never roll back the wednesday updates? THAT update broke stuff.. so they apply a fix.. the fix breaks stuff, so they unfix. I wish they'd unupdate. (downdate?)
_____________________

● Inworld Store: http://slurl.eclectic-randomness.com
● Website: http://www.eclectic-randomness.com
● Twitter: @WinterVentura
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
03-18-2007 10:46
If you are using a workaround, try to avoid the distance-checking loop type. IE,

CODE

while (llVecDist(llGetPos(),destpos) > 0.01)
llSetPos(destpos);


Try to use one which calculates a number of setpos statements (plus one if you wanna be sure), loops only that many times, then exits.

That prevents prims getting hung forever in that loop in the case of trying to move below ground, or into a blocked parcel. IE:

CODE
//1.13.3 (2) fix by Redux
//Optimized by SiRiS & Talarus
warpPos(vector d) //R&D by Keknehv Psaltery, ~05/25/2006
{
if (d.z > 768) {d.z = 768;}
integer s = (integer)(llVecMag(d-llGetPos())/10)+1; //The number of jumps necessary
do{
llSetPrimitiveParams([PRIM_POSITION, d]);
} while (--s);
}
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
03-18-2007 12:00
Since you already know the number of loops for the parameter list, that's the way to go.
Hg Beeks
llGetElement(80);
Join date: 13 Apr 2006
Posts: 134
03-18-2007 13:18
From: bucky Barkley
omg, it just came to me.. the linden plan is to replace
intra-sim transport with:

llPinballPort(vector d);

The pinball transport works via:
a) doing llShout() to temporarily rez huge bumpers along the route
b) giving the AV a mighty push via llApplyImpulse()
The bumpers will help keep the AV on track. It should be possible
to make a trip anywhere in a Sim with < 32 deflections.
This should allow for much faster transport than the llSetPos() method.
It should also create a market for designer "transport padding" to keep
AVs from getting killed by merely traversing damage-enabled sims.
I'm betting they do this April 1st ...


I'm looking into designing a little Sonic-themed area, and was actually working on something similar to this. XD The only problem is that I can't seem to find a way to very specifically control the direction a person if going, which makes their velocity when they step on the object change their destination - By wide margins, if it's a long distance.
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
03-18-2007 14:06
I have updated my WarpPos code on the forums, the lsl wiki, and the lsl portal to include the failsafe:
CODE

while ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
llSetPos(destpos);
Ed Gobo
ed44's alt
Join date: 20 Jun 2006
Posts: 220
03-18-2007 18:03
From: Keknehv Psaltery
I have updated my WarpPos code on the forums, the lsl wiki, and the lsl portal to include the failsafe:
CODE

while ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
llSetPos(destpos);

Not sure how that is failsafe. You could still be stuck in a loop if you don't get to the destination because of some obstruction. The code at post 67 looks more failsafe to me!
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
03-18-2007 19:51
From: Ed Gobo
Not sure how that is failsafe. You could still be stuck in a loop if you don't get to the destination because of some obstruction. The code at post 67 looks more failsafe to me!


Fine, fine...
CODE

if ( llVecDist( llGetPos(), destpos ) > .001 )
while ( --jumps )
llSetPos( destpos );
Yiffy Yaffle
Purple SpiritWolf Mystic
Join date: 22 Oct 2004
Posts: 2,802
03-18-2007 20:10
I just wana say thanks to all who are working on alternative methods and listing them here. I will try out these scripts next time I'm in world and set up a new teleport system to use as a backup for times like this. I use the Terra Mark III teleporter but i modified it to use WarpPos. Going back to default is gona suck, so I'm willing to see out the alternative methods.
_____________________
Ed Gobo
ed44's alt
Join date: 20 Jun 2006
Posts: 220
03-18-2007 20:57
Probably getting compulsive about this, but would this not be better?

CODE

integer jumps = (integer)(llVecMag(destPos-llGetPos())/10)+2; //The number of jumps that might be necessary
while ( --jumps )
if ( llVecDist( llGetPos(), destpos ) > .001 )
llSetPos( destpos );
else
jumps = 1;


I would imagine this could still have problems with sim crossings, or would you use global coordinates?
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
03-18-2007 21:17
The code snippet that I gave was meant to be appended to the end of the original WarpPos function, i.e.:
CODE

warpPos( vector destpos)
{ //R&D by Keknehv Psaltery, 05/25/2006
//with a little pokeing by Strife, and a bit more
//some more munging by Talarus Luan
//Final cleanup by Keknehv Psaltery
// Compute the number of jumps necessary
integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1;
// Try and avoid stack/heap collisions
if (jumps > 100 )
jumps = 100; // 1km should be plenty
list rules = [ PRIM_POSITION, destpos ]; //The start for the rules list
integer count = 1;
while ( ( count = count << 1 ) < jumps)
rules = (rules=[]) + rules + rules; //should tighten memory use.
llSetPrimitiveParams( rules + llList2List( rules, (count - jumps) << 1, count) );
while ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
llSetPos(destpos);
if ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
while ( --jumps )
llSetPos( destpos );
}


The failsafe should be enough for someone to get by if the function breaks until they can update their code to use a faster method.
1 2 3 4