susi Repine
Aktiver Nutzer
Huhu,
ich hab einen TP gescripted, der mich irgendwie zum Wahnsinn treibt (Skript siehe unten).
Wenn ich den TP benutze lande ich oft in der Ecke des Sim's, irgendwo tief unten auf dem Grund. Manchmal klappt es allerdings auch.
Kann mir einer sagen was ich da ändern muss?
LG
Susi
vector Ziel;
integer ComChannel = -2134535;
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) );
if ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
while ( --jumps )
llSetPos( destpos );
}
doTeleport( vector destpos )
{
integer jumps = (integer) (llVecDist(destpos, llGetPos()) / 10.0) + 1;
if (jumps > 100) {
integer hops = jumps / 100;
while (hops > 0) {
hops--;
warpPos(destpos);
}
}
warpPos(destpos);
}
default
{
on_rez(integer param)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if(llAvatarOnSitTarget() != NULL_KEY)
{
vector homeVector = llGetPos();
doTeleport(Ziel);
llSleep(0.2);
llUnSit(llAvatarOnSitTarget());
llDie();
}
}
}
state_entry()
{
llListen( ComChannel,"", "","");
llSitTarget(<0,0,0.5>, ZERO_ROTATION);
llSetClickAction(1);
llSetTimerEvent(15);
}
listen(integer channel, string name, key id, string message)
{
Ziel = (vector)(message);
}
timer()
{
llSay(0,"Timeout");
llDie();
}
}
ich hab einen TP gescripted, der mich irgendwie zum Wahnsinn treibt (Skript siehe unten).
Wenn ich den TP benutze lande ich oft in der Ecke des Sim's, irgendwo tief unten auf dem Grund. Manchmal klappt es allerdings auch.
Kann mir einer sagen was ich da ändern muss?
LG
Susi
vector Ziel;
integer ComChannel = -2134535;
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) );
if ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
while ( --jumps )
llSetPos( destpos );
}
doTeleport( vector destpos )
{
integer jumps = (integer) (llVecDist(destpos, llGetPos()) / 10.0) + 1;
if (jumps > 100) {
integer hops = jumps / 100;
while (hops > 0) {
hops--;
warpPos(destpos);
}
}
warpPos(destpos);
}
default
{
on_rez(integer param)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if(llAvatarOnSitTarget() != NULL_KEY)
{
vector homeVector = llGetPos();
doTeleport(Ziel);
llSleep(0.2);
llUnSit(llAvatarOnSitTarget());
llDie();
}
}
}
state_entry()
{
llListen( ComChannel,"", "","");
llSitTarget(<0,0,0.5>, ZERO_ROTATION);
llSetClickAction(1);
llSetTimerEvent(15);
}
listen(integer channel, string name, key id, string message)
{
Ziel = (vector)(message);
}
timer()
{
llSay(0,"Timeout");
llDie();
}
}