dataserver appears to be broken
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-12-2006 18:48
I can't get any answer from llGetNumberOfNotecardLines, llGetNotecardLine. This simple script don't work: default { state_entry() { gName = llGetInventoryName(INVENTORY_NOTECARD, 0); llSay(0, "Reading notecard " +gName); gQueryID = llGetNumberOfNotecardLines(gName); }
dataserver(key queryid, string data) { llSay(0, "This notecard has " + data + " lines."); integer lines = (integer)data; } }[18:45] Object: Reading notecard TEST NOTECARD [18:45] Object: This notecard has lines.
|
|
Joannah Cramer
Registered User
Join date: 12 Apr 2006
Posts: 1,539
|
12-12-2006 18:56
If the notecard is fresh item made with "Create New Note" command in inventory window, then it's handled in odd manner by data server (like some sort of 'shortcut' to generic empty notecard that cannot be succesfully queried nor read)
The card becomes 'real' notecard only after you open it to edit and hit "Save" to record its content. If you want the card to be empty then enter any character as content of the card (to enable "Save" button), then delete the character and save such card.
And yes it's clumsy and convoluted but oh well. Can't beat them, join them ^^;;
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-12-2006 19:05
Hi Joannah.
My notecard is not empty, and had been read this way before version 1.3. I've tried with different notecards, different objects, logged out/in suspecting a network error. The result is always the same: dataserver returns two blank lines for every llGetNumberOfNotecardLines or llGetNotecardLine request.
UPDATE: the notecards exhibiting the problem were written with 8 bit ASCII. Since version 1.3, all 8 bits characters have been replaced with a '?'. Those cards are not compatible with the dataserver.
|
|
Tyken Hightower
Automagical
Join date: 15 Feb 2006
Posts: 472
|
12-12-2006 19:34
From: Jeff Kelley Hi Joannah.
My notecard is not empty, and had been read this way before version 1.3. I've tried with different notecards, different objects, logged out/in suspecting a network error. The result is always the same: dataserver returns two blank lines for every llGetNumberOfNotecardLines or llGetNotecardLine request.
UPDATE: the notecards exhibiting the problem were written with 8 bit ASCII. Since version 1.3, all 8 bits characters have been replaced with a '?'. Those cards are not compatible with the dataserver. There's no assets in it, like landmarks, textures, etc., right? Those will kill it too.
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-12-2006 22:00
From: Tyken Hightower There's no assets in it, like landmarks, textures, etc., right? Those will kill it too. No Tyken, there is no asset in it. I've read about that one also  It's really a character encoding problem. Every notecard containing non 7-bit ASCII blows the dataserver. Example: 2006-07-24 16:15:29 note card from the ICT Library: About Scripting SL ICT Library: Free Script dispensers (pertaining to education) ? <- here and of course, all foreign language notecards having being written before release 1.3. We have tons of notecards to rewrite now.
|
|
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
|
12-12-2006 23:20
Oh, that's rich....
So, basically, if your notecard has high-order characters (> 127), it won't even count the lines anymore, let alone read?
Uhh, why did they do that?????
|
|
Escort DeFarge
Together
Join date: 18 Nov 2004
Posts: 681
|
12-13-2006 00:06
Erm llGetNotecardLines returns immediately and does not trigger the dataserver event...
***what can I say? I wasn't awake LOL *** duh me for spreading disinformation *smacks his own hands *
_____________________
http://slurl.com/secondlife/Together
|
|
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
|
12-13-2006 01:53
From: Escort DeFarge Erm llGetNotecardLines returns immediately and does not trigger the dataserver event... There is no llGetNotecardLines, but if you meant llGetNumberOfNotecardLines: From: The Wiki key llGetNumberOfNotecardLines(string name)
Returns number of lines in the notecard name via the dataserver event. (Cast the value returned by the dataserver to an integer.) ...methinks you are at odds with the Wiki. 
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-13-2006 02:44
From: Talarus Luan So, basically, if your notecard has high-order characters (> 127), it won't even count the lines anymore, let alone read? Yep. The dataserver handler spits two (or three) empty lines instead of number and string. I'm torture-testing a notecard to e-mail gateway, and every note crashing it contains a "?" in place of éàèùç or «». Of course i can fix the gateway easily, but the notecards are lost. You have to copy/paste them in-world. Huge pain for the education business.
|
|
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
|
12-13-2006 03:14
From: Talarus Luan Oh, that's rich....
So, basically, if your notecard has high-order characters (> 127), it won't even count the lines anymore, let alone read?
Uhh, why did they do that????? Because someone goofed I think.....
|
|
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
|
12-13-2006 05:41
Are you saying they finally added unicode support to notecards? Well I'll be a monkeys uncle.
It's not a screw-up that extended ascii characters bork it. The original notecard format that LL uses, they mark embedded assets with extended ascii characters. The first asset is 0x80, the second 0x81... etc.
They just need to properly write the code so that it actually checks to see what assets are included in the notecard instead of just fudging it.
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly
Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey
|
|
Newgate Ludd
Out of Chesse Error
Join date: 8 Apr 2005
Posts: 2,103
|
12-13-2006 06:08
From: Strife Onizuka Are you saying they finally added unicode support to notecards? Well I'll be a monkeys uncle.
It's not a screw-up that extended ascii characters bork it. The original notecard format that LL uses, they mark embedded assets with extended ascii characters. The first asset is 0x80, the second 0x81... etc.
They just need to properly write the code so that it actually checks to see what assets are included in the notecard instead of just fudging it. Isnt that contradictory Strife? It would have been nice to have actually been informed about it.
|
|
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
|
12-13-2006 06:40
*rereads* Yeah it does sound like a paradox.
LL just got lazy when implementing UTF8 in notecards. If you want them to fix it best to bug report it. If I see a linden I'll point it out.
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly
Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey
|
|
Boss Spectre
Registered User
Join date: 5 Sep 2005
Posts: 229
|
12-13-2006 07:30
The line which reads: gQueryID = llGetNumberOfNotecardLines(gName);
is incorrect in the assumption that it will trigger a dataserver event. The function returns the number of lines not a QueryID, so no dataserver event will be triggered. integer lines = llGetNumberOfNotecardLines(gName); llSay(0, "This notecard has " + (string)lines + " lines.");
The dataserver is not needed to get the number of lines, only the contents.
|
|
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
|
12-13-2006 09:06
From: Boss Spectre The line which reads: gQueryID = llGetNumberOfNotecardLines(gName);
is incorrect in the assumption that it will trigger a dataserver event. The function returns the number of lines not a QueryID, so no dataserver event will be triggered. integer lines = llGetNumberOfNotecardLines(gName); llSay(0, "This notecard has " + (string)lines + " lines.");
The dataserver is not needed to get the number of lines, only the contents. You are wrong. Read: http://lslwiki.com/lslwiki/wakka.php?wakka=llGetNumberOfNotecardLines
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly
Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey
|
|
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
|
12-13-2006 13:37
From: Boss Spectre The line which reads: gQueryID = llGetNumberOfNotecardLines(gName);
is incorrect in the assumption that it will trigger a dataserver event. The function returns the number of lines not a QueryID, so no dataserver event will be triggered. integer lines = llGetNumberOfNotecardLines(gName); llSay(0, "This notecard has " + (string)lines + " lines.");
The dataserver is not needed to get the number of lines, only the contents. Wow, and even after someone else was corrected for the same misinformation in the same thread.
|
|
Boss Spectre
Registered User
Join date: 5 Sep 2005
Posts: 229
|
12-13-2006 19:30
My bad.
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-13-2006 23:52
From: Strife Onizuka If you want them to fix it best to bug report it. If I see a linden I'll point it out. I want more than the bug fixed, I want the capability to access linked cards, that is getting the UUID of the embedded link through dataserver, then accessing the asset the link points to. In a word, I want a Second World Wide Web. Linked cards are the most powerful information vector we have in SL. They have all the capabilities of the hypertext, plus more. We can link objects. Think about rezing an object from Internet Explorer to your 1st life floor. Wow! But information management requires automatic data processing, and we have quite nothing on this side.
|
|
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
|
12-14-2006 07:43
From: Jeff Kelley I want more than the bug fixed, I want the capability to access linked cards, that is getting the UUID of the embedded link through dataserver, then accessing the asset the link points to. In a word, I want a Second World Wide Web.
Linked cards are the most powerful information vector we have in SL. They have all the capabilities of the hypertext, plus more. We can link objects. Think about rezing an object from Internet Explorer to your 1st life floor. Wow! But information management requires automatic data processing, and we have quite nothing on this side. Heh. With the way LL works, you better be thankful if the bug gets fixed at all, let alone extended funcionality.  What you're asking for can pretty much be done as it is right now by copy/pasting the Asset UUID in as text.
|
|
Jeff Kelley
Registered User
Join date: 8 Nov 2006
Posts: 223
|
12-15-2006 01:57
From: Talarus Luan What you're asking for can pretty much be done as it is right now by copy/pasting the Asset UUID in as text. That's right, llGetNotecardLine(UUID, line) can read the notecard, even if the notecard is not in the object's directory. llGetNotecardLine("Anti-Griefing", n) won't work, but llGetNotecardLine("4fbc1b72-e6cb-bebe-065c-09d4c9156a6d", n) will. That makes sense, because names resolve to UUID, and the directory is a name to UUID mapping. Good thing but... how to display Notecard "4fbc1b72... to the user? The client can do it. But an object can't. llGiveInventory("4fbc1b72...) won't work. It can only give objects residing in it's directory. The missing link, here, is llMakeDirectoryEntry(name, key).
|