Difference between revisions of "Talk:On rez"
Line 20: | Line 20: | ||
:Nopes, doesn't trigger an [[on_rez]] event. But it triggers [[changed]] with [[CHANGED_REGION_START]]. | :Nopes, doesn't trigger an [[on_rez]] event. But it triggers [[changed]] with [[CHANGED_REGION_START]]. | ||
:--[[File:Zai_signature.png|45px|link=User:Zai Lynch]] <sup><small>([[User talk:Zai Lynch|talk]]|[[Special:Contributions/Zai Lynch|contribs]])</small></sup> 17:11, 21 February 2010 (UTC) | :--[[File:Zai_signature.png|45px|link=User:Zai Lynch]] <sup><small>([[User talk:Zai Lynch|talk]]|[[Special:Contributions/Zai Lynch|contribs]])</small></sup> 17:11, 21 February 2010 (UTC) | ||
<p> | |||
== HOW TO GIVE A FLOAT AS STARTPARAMETER IN ON_REZ FUNCTION == | |||
<br> | |||
float f = 12345.6789;<br> | |||
<br> | |||
//*****ENCODING THE FLOAT INTO AN INTEGER*****<br> | |||
<br> | |||
//separate integers and decimals<br> | |||
list l = llParseString2List((string)f, ["."], []);<br> | |||
<br> | |||
//define dot's position<br> | |||
integer n = llStringLength(llList2String(l, 0));<br> | |||
<br> | |||
//build the string dot position + integers + decimals<br> | |||
string m = (string)n + llList2String(l, 0) + llList2String(l, 1); <br> | |||
<br> | |||
//cast into an integer and send as startParam <br> | |||
integer startParam = (integer)m; <br> | |||
<br> | |||
//*****DECONDING THE FLOAT FROM THE INTEGER*****<br> | |||
<br> | |||
//extract dot position<br> | |||
integer dot = (integer)llGetSubString((string)startParam, 0, 0);<br> | |||
<br> | |||
//delete dot position<br> | |||
string num = llDeleteSubString((string)startParam, 0, 0); <br> | |||
<br> | |||
//separate the integers and the decimals <br> | |||
string part1 = llGetSubString(num, 0, dot-1); <br> | |||
string part2 = llDeleteSubString(num, 0, dot-1);<br> | |||
<br> | |||
//build the string integers + dot + decimals <br> | |||
string v = part1 + "." + part2;<br> | |||
<br> | |||
//cast into a float<br> | |||
float f = (float)v; <br> | |||
<br> | |||
AS YOU SEE BY THIS ROUTINE YOU CAN PRESERVE UNTIL 9 DECIMALS THAT IS MORE THAN | |||
ENOUGH FOR LSL USE.<br> | |||
HOWEVER YOU CAN PRESERVE AS MANY DECIMALS AS YOU NEED BY SIMPLY | |||
ENCODING-DECODING THE HEADER IN TWO OR MORE DIGITS;<br> | |||
//UNTIL 99 DECIMALS<br> | |||
// 07 == 7 DECIMALS<br> | |||
// 12 == 12 DECIMALS<br> | |||
//UNTIL 999 DECIMALS<br> | |||
// 003 == 3 DECIMALS<br> | |||
// 123 == 123 DECIMALS </p> |
Revision as of 01:53, 15 October 2013
Object Duplicate
It seems that this event does not fire when an object is duplicated in-world using the Shift-Key + Drag-Posistion-Arrow technique. I wonder.. Is there a way (in LSL) to detect this occurance? As I see it there are a few ways for a script to appear in-world:
- Copied/moved from inventory.
- Creating a new script in an object.
- Saving/resetting a script already in an object.
- Using the Shift-Drag technique to duplicate an existing rezzed object.
- Copying/moving an object, that has a script inside it, from inventory to the world.
- Sending a script via llGiveInventory.
- Sending a script via llRemoteLoadScriptPin.
As far as I can tell, there is no way to tell, programmatically, between numbers 1, 2, 3, and 4. Number 5 keeps the script's state and fires on_rez; Number 6 sends the script to the other object in a deactivated way; And number 7 can send a start parameter. Yet, to me, it seems that #4 should fire on_rez. Any reasons why not? If doing number 4 reset the script, then called on_rez, it could be easily detected. Cron Stardust 00:42, 26 December 2007 (PST)
Disambiguation
A disambiguation notice should probably be added to the page, to avoid confusion among people looking for the third party OnRez viewer. SignpostMarv Martin 04:34, 26 December 2007 (PST)
Sim restart
Is on_rez triggered when a sim is restarted? —The preceding unsigned comment was added by Mardu Kuhn
- Nopes, doesn't trigger an on_rez event. But it triggers changed with CHANGED_REGION_START.
- -- (talk|contribs) 17:11, 21 February 2010 (UTC)
HOW TO GIVE A FLOAT AS STARTPARAMETER IN ON_REZ FUNCTION
float f = 12345.6789;
//*****ENCODING THE FLOAT INTO AN INTEGER*****
//separate integers and decimals
list l = llParseString2List((string)f, ["."], []);
//define dot's position
integer n = llStringLength(llList2String(l, 0));
//build the string dot position + integers + decimals
string m = (string)n + llList2String(l, 0) + llList2String(l, 1);
//cast into an integer and send as startParam
integer startParam = (integer)m;
//*****DECONDING THE FLOAT FROM THE INTEGER*****
//extract dot position
integer dot = (integer)llGetSubString((string)startParam, 0, 0);
//delete dot position
string num = llDeleteSubString((string)startParam, 0, 0);
//separate the integers and the decimals
string part1 = llGetSubString(num, 0, dot-1);
string part2 = llDeleteSubString(num, 0, dot-1);
//build the string integers + dot + decimals
string v = part1 + "." + part2;
//cast into a float
float f = (float)v;
AS YOU SEE BY THIS ROUTINE YOU CAN PRESERVE UNTIL 9 DECIMALS THAT IS MORE THAN
ENOUGH FOR LSL USE.
HOWEVER YOU CAN PRESERVE AS MANY DECIMALS AS YOU NEED BY SIMPLY
ENCODING-DECODING THE HEADER IN TWO OR MORE DIGITS;
//UNTIL 99 DECIMALS
// 07 == 7 DECIMALS
// 12 == 12 DECIMALS
//UNTIL 999 DECIMALS
// 003 == 3 DECIMALS
// 123 == 123 DECIMALS