
|
If you were logged in you would be able to see more operations.
|
|
|
|
Environment:
|
Server-side issue on main grid
|
|
Issue Links:
|
Duplicate
|
|
This issue duplicates:
|
|
|
SVC-26 Scripts being reset when not running.
|
|
|
|
|
|
This issue is original of duplicate:
|
|
SVC-4329
Non-running script is reset on region-crossing
|
|
|
|
|
SVC-4497
llSetScriptState() resets the script !
|
|
|
|
|
Parent/Child
|
|
This issue parent of:
|
|
|
SVC-2721 llSetScriptState should always reset a script on stopping it
|
|
|
|
|
|
Relates
|
|
|
|
This issue is related to by:
|
|
SVC-2558
Inactive scripts loose their state when taken and re rezzed, active scripts remember their state.
|
|
|
|
|
|
|
| Linden Lab Issue ID: |
DEV-14012
|
Put two scripts in an object.
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
—
Update 20080328...
This includes any granted Permissions, so in the crude example below, the script will lose the granted Debit permission over a restart if the script was not running at the time. Of course, if the script's owner isn't around to re-grant the permissions things get nasty.
A really good script would detect that it's unexpectedly lost permissions it had been previously granted. Most won't and will carry on regardless, which could be real nasty in the case of a script that thinks it has the Debit permission to (for example) pay out the prize in a competition.
Modified version of Counter script (I know this is crude ):-
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
timer()
{
count++;
llOwnerSay((string)count);
llGiveMoney(llGetOwner(),1);
}
}
|
|
Description
|
Put two scripts in an object.
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
—
Update 20080328...
This includes any granted Permissions, so in the crude example below, the script will lose the granted Debit permission over a restart if the script was not running at the time. Of course, if the script's owner isn't around to re-grant the permissions things get nasty.
A really good script would detect that it's unexpectedly lost permissions it had been previously granted. Most won't and will carry on regardless, which could be real nasty in the case of a script that thinks it has the Debit permission to (for example) pay out the prize in a competition.
Modified version of Counter script (I know this is crude  ):-
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
timer()
{
count++;
llOwnerSay((string)count);
llGiveMoney(llGetOwner(),1);
}
}
|
Show » |
made changes - 28/Mar/08 01:52 AM
| Field |
Original Value |
New Value |
|
Description
|
Put two scripts in an object.
Script 1: Counter
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
Script 2 : Start/Stop
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
|
Put two scripts in an object.
Script 1: Counter
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
Script 2 : Start/Stop
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
---
Update 20080328...
This includes any granted Permissions, so in the crude example below, the script will lose the granted Debit permission over a restart if the script was not running at the time. Of course, if the script's owner isn't around to re-grant the permissions things get nasty.
A really good script would detect that it's unexpectedly lost permissions it had been previously granted. Most won't and will carry on regardless, which could be real nasty in the case of a script that thinks it has the Debit permission to (for example) pay out the prize in a competition.
Modified version of Counter script (I know this is crude :-) ):-
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
timer()
{
count++;
llOwnerSay((string)count);
llGiveMoney(llGetOwner(),1);
}
}
|
made changes - 10/Apr/08 08:38 PM
|
Affects Version/s
|
|
1.20.0 Server
[ 10280
]
|
made changes - 18/Apr/08 12:38 PM
|
Linden Lab Issue ID
|
|
DEV-14012
|
made changes - 21/Apr/08 09:40 AM
|
Link
|
|
This issue Relates to SVC-26
[ SVC-26
]
|
made changes - 21/Apr/08 11:49 AM
|
Link
|
|
This issue duplicates SVC-26
[ SVC-26
]
|
made changes - 21/Apr/08 11:49 AM
|
Link
|
This issue Relates to SVC-26
[ SVC-26
]
|
|
made changes - 20/Jul/08 12:23 PM
|
Link
|
|
This issue is related to by SVC-2558
[ SVC-2558
]
|
made changes - 25/Jul/08 08:29 AM
|
Status
|
Open
[ 1
]
|
Resolved
[ 5
]
|
|
Resolution
|
|
Won't Finish
[ 2
]
|
made changes - 25/Jul/08 08:31 AM
|
Priority
|
Critical
[ 2
]
|
Low
[ 5
]
|
made changes - 31/Jul/08 12:24 AM
|
Link
|
|
This issue is related to by SVC-2721
[ SVC-2721
]
|
made changes - 26/Sep/08 02:50 PM
|
Resolution
|
Won't Finish
[ 2
]
|
|
|
Status
|
Resolved
[ 5
]
|
Reopened
[ 4
]
|
made changes - 26/Sep/08 05:11 PM
|
Environment
|
n/a - server-side issue on main grid
|
Server-side issue on main grid
|
|
Affects Version/s
|
|
1.24 Server
[ 10351
]
|
|
Priority
|
Low
[ 5
]
|
Major
[ 3
]
|
made changes - 12/Oct/08 12:49 PM
|
Description
|
Put two scripts in an object.
Script 1: Counter
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
Script 2 : Start/Stop
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
---
Update 20080328...
This includes any granted Permissions, so in the crude example below, the script will lose the granted Debit permission over a restart if the script was not running at the time. Of course, if the script's owner isn't around to re-grant the permissions things get nasty.
A really good script would detect that it's unexpectedly lost permissions it had been previously granted. Most won't and will carry on regardless, which could be real nasty in the case of a script that thinks it has the Debit permission to (for example) pay out the prize in a competition.
Modified version of Counter script (I know this is crude :-) ):-
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
timer()
{
count++;
llOwnerSay((string)count);
llGiveMoney(llGetOwner(),1);
}
}
|
Put two scripts in an object.
{code:title=Counter}
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
count++;
llOwnerSay((string)count);
}
}
{code}
{code:title=Start/Stop}
default
{
state_entry()
{
}
touch_start(integer total_number)
{
integer running=llGetScriptState("Counter");
if (running)
{
llSetScriptState("Counter",FALSE);
llOwnerSay("Script stopped");
}
else
{
llSetScriptState("Counter",TRUE);
llOwnerSay("Script started");
}
}
}
{code}
Touch the object to see that the Counter script is started and stopped as expected. Let it run for a while, stop it, and note the last value displayed.
Now restart the region.
When the region is back, return to the object and touch it to restart the Counter.
The Counter script, which was stopped, has lost all state and will begin counting from 0 rather than the total it had previously.
Implications: This is a major headache for those situations where scripts would be stopped because they're not needed at the time or are stopped to reduce peformance impact. If a restart happens whilst they're stopped they do not resume in the same state that they were stopped.
---
Update 20080328...
This includes any granted Permissions, so in the crude example below, the script will lose the granted Debit permission over a restart if the script was not running at the time. Of course, if the script's owner isn't around to re-grant the permissions things get nasty.
A really good script would detect that it's unexpectedly lost permissions it had been previously granted. Most won't and will carry on regardless, which could be real nasty in the case of a script that thinks it has the Debit permission to (for example) pay out the prize in a competition.
Modified version of Counter script (I know this is crude :-) ):-
{code:title=Modified Counter}
integer count;
default
{
state_entry()
{
llSetTimerEvent(1.0);
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
timer()
{
count++;
llOwnerSay((string)count);
llGiveMoney(llGetOwner(),1);
}
}
{code}
|
made changes - 13/Nov/08 12:07 PM
|
Workflow
|
jira-2007-12-22a
[ 53484
]
|
jira-2008-11-14
[ 81665
]
|
made changes - 13/Nov/08 04:35 PM
|
Workflow
|
jira-2008-11-14
[ 81665
]
|
jira-2008-11-14a
[ 88718
]
|
made changes - 02/Jun/09 10:03 AM
|
Link
|
|
This issue is original of duplicate SVC-4329
[ SVC-4329
]
|
made changes - 06/Jul/09 01:16 PM
|
Link
|
|
This issue is original of duplicate SVC-4497
[ SVC-4497
]
|
made changes - 13/Jul/09 11:59 AM
|
Link
|
|
This issue parent of SVC-2721
[ SVC-2721
]
|
made changes - 13/Jul/09 12:00 PM
|
Link
|
This issue is related to by SVC-2721
[ SVC-2721
]
|
|
|