LlReadKeyValue

来自人工智能助力教育知识百科
Mkx讨论 | 贡献2020年7月6日 (一) 12:48的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: key llReadKeyValue( string k ); |参数= 参数:string k…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: key llReadKeyValue( string k );
参数:string k – 键-值对的键
返回值:启动一个异步事务,读取与指定键(k)和脚本经验相关联的值。

返回一个句柄(键),可用于识别对应的dataserver事件,以确定此命令是成功还是失败以及结果。

注意事项
如果密钥不存在,dataserver将返回一个失败以及错误XP_ERROR_KEY_NOT_FOUND

要使此函数工作,必须将脚本编译成Experience

如果您重新编译一个以前与经验相关联的脚本,但在这样做的客户端缺乏将脚本编译成经验的能力,那么脚本将丢失相关的经验。

Specification

 Dataserver
 数据服务器回调参数是:
 从llReadKeyValue返回的包含句柄的键
 包含逗号分隔列表(cdl)的字符串。llDumpList2String([ integer success ] + components);
     组件的不同取决于请求的成功或失败。
     Failure: cdl = llDumpList2String([ 0, integer error],",") 
     Success: cdl = llDumpList2String([ 1, string value ],",")    
 String Components
  • integer success – 一个布尔值,指定事务是否成功(1)或不成功(0)。
  • integer error – 描述操作失败原因的XP_ERROR_*标志。 
  • string value – 键-值对的值。最大2047个字符,如果使用Mono,则为4095个字符。注意!此值可能包含逗号。
示例
示例1
key trans;
default
{
    state_entry()
    {
        trans = llReadKeyValue("FOO");
    }
    dataserver(key t, string value)
    {
        if (t == trans)
        {
            // our llReadKeyValue transaction is done
            if (llGetSubString(value, 0, 0) == "1")
            {
                // the key-value pair was successfully read
                llSay(0, "New key-value pair value: " + llGetSubString(value, 2, -1));
            }
            else
            {
                // the key-value pair failed to read
                integer error =  (integer)llGetSubString(value, 2, -1);
                llSay(0, "Key-value failed to read: " + llGetExperienceErrorMessage(error));
            }
        } 
    }
}
相关函数
llGetExperienceErrorMessage

llCreateKeyValue

llReadKeyValue

llUpdateKeyValue

llDeleteKeyValue

llDataSizeKeyValue

llKeyCountKeyValue

llKeysKeyValue

相关事件