Search the Community
Showing results for tags 'dataserver'.
-
I have a Doll Key with 11 scripts within it, and one of these scripts calls: queryLandmarkData = llRequestInventoryData(landmark); ...where landmark equals "Home" in the standard case. queryLandmarkData is verified to not be NULL_KEY, but the dataserver event never fires: dataserver(key queryID, string queryData) { if (queryID == queryLandmarkData) { rlvTeleport(queryData); llSetTimerEvent(0.0); queryLandmarkData = NULL_KEY; } } (The function rlvTeleport takes queryData, generates the appropriate global position setting, and generates an RLV call to teleport.) Through the use of multiple debug statements it can be determined that the dataserver event never fires for the llRequestInventoryData() call. It does however respond to other dataserver events that happen in other scripts, including processing notecard lines and getting region data and username data. Is it possible that dataserver events in this script get throttled? I can find zero reason for llRequestInventoryData to work and then for data server to fail. There's no documentation in the llRequestInventoryData wiki page or in the dataserver wiki page that explains such a scenario. I'm using Firestorm to compile, along with full usage of all of Firestorm's compile-time enhancements. I also have the code in a git repository. I searched for the possibility that dataserver events were getting throttled or stopped outright due to too many all at once - but I can't find that documented anywhere if it is the case. Help?
- 41 replies
-
- llrequestinventorydata
- lsl
-
(and 2 more)
Tagged with:
-
I'm hoping someone will be kind enough to help. I am processing a list into a notecard and then reading that list in another script. It has various data types in the list. In all, there is a total of about 22 elements. Using dataserver I'm processing them back into the correct types and using them. However, (and this has only become a problem once I added more to the list up from 14 separate elements), it is not processing all the data. It seems to fall short around 14 (which is a vector and the list ends like this "<0.0"). I'm concluding this because A: the other data are missing and B: I added a feedback llSay function to evaluate the end processed data. I thought maybe it was a limitation of the data put into a CSV string (like the character limit if you cast a string into open chat), but the other script didn't have a problem making it. I then thought maybe it is a memory problem, so I tried processing twenty two 11 and 12 digit numbers and it processed fine. Perhaps with the various data types it uses more memory and has hit some limit I can't find mentioned ? I'm stumped basically. lol. Can anyone shed some light on it ? dataserver( key queryid, string data ) { list sort; string name; // object name that wrote the CSV string count; temp = []; if(queryid == QueryID) { if(data != EOF) { if(llGetSubString(data, 0, 0) != "#" && llStringTrim(data, STRING_TRIM) != "" ) { temp = llParseString2List(data, ["^"], []); // just to separate the useable data from the name name = llStringTrim(llToLower(llList2String(temp, 0)), STRING_TRIM); count = llStringTrim(llList2String(temp, 1), STRING_TRIM); sort += llCSV2List(count); //Then casting the data back to their types and using them } NotecardLine++; QueryID = llGetNotecardLine( CONFIG_CARD, NotecardLine); } } }
-
Hello, I have searched for an answer to this question, but either don't understand the answer or am not finding what I'm looking for. I think the problem lies in my understanding of the way dataserver events (or events in general) work. Please let me know if my explanation is confusing. (1) Is this how the dataserver event works?: When I request a notecard line using llGetNotecardLine("My Notecard", 2), the dataserver event is triggered. Inside the dataserver block I can access whatever string is returned from line 2 in "My Notecard" and manipulate it (or whatever I'm trying to do). (2) I have a script that needs to read some values in from specific lines in a notecard. For example, let's say I need to store the integers on lines 2 and 4 from "My Notecard" into two different variables called A and B. Is this true?: Every time I call llGetNotecardLine(), the script is going to go into the same dataserver event, so inside the dataserver event block I have to have some way of figuring out which line I asked for to store it in the correct variable? Like this: integer A; integer B; key queryA; key queryB; default { state_entry() { // Check the notecard exists, and has been saved if (llGetInventoryKey(notecardName) == NULL_KEY) { llOwnerSay( "Notecard '" + notecardName + "' missing or unwritten"); return; } queryA = llGetNotecardLine("My Notecard", 2); queryB = llGetNotecardLine("My Notecard", 4); } dataserver(key query_id, string data) { if (query_id == queryA) { if (data == EOF) llSay(0,"Done reading notecard, read " + (string) notecardLine + " notecard lines."); else { A = (integer)data; } } if (query_id == queryB) { if (data == EOF) llSay(0,"Done reading notecard, read " + (string) notecardLine + " notecard lines."); else { B = (integer)data; } } } } Just FYI, I stole some of this code from an example I saw and added the parts I needed. Thanks!
- 7 replies
-
- lsl
- dataserver
-
(and 2 more)
Tagged with: