From 18a0bb4ae2ae508ec1bbca61c6786d25501bf350 Mon Sep 17 00:00:00 2001 From: WolfGangS Date: Tue, 11 Nov 2025 19:15:26 +0000 Subject: [PATCH 1/5] changes --- data/slua_keywords.overrides.json | 10 +- deno.jsonc | 3 + src/slua/slua-common.ts | 495 +++-- src/slua/slua-defs-gen.ts | 325 +-- src/slua/slua-json-gen.ts | 3070 +++++++++++++++++------------ src/slua/slua-md-gen.ts | 627 +++--- src/slua/slua-sele-gen.ts | 129 +- src/types.d.ts | 2 +- src/util.ts | 1 + templates/slua/_funcs.md.ejs | 9 + templates/slua/function.md.ejs | 8 +- templates/slua/table.md.ejs | 14 +- 12 files changed, 2729 insertions(+), 1964 deletions(-) create mode 100644 templates/slua/_funcs.md.ejs diff --git a/data/slua_keywords.overrides.json b/data/slua_keywords.overrides.json index 1a456de..65430ba 100644 --- a/data/slua_keywords.overrides.json +++ b/data/slua_keywords.overrides.json @@ -1,14 +1,14 @@ [ { - "key": [ "global", "props", "ll", "props", "TakeControls", "signatures", 0, "args", 1, "type" ], - "value": [ "boolean" ] + "key": [ "global", "props", "ll", "props", "TakeControls", "signatures", 0, "args", 1, "type", 0, "value" ], + "value": "boolean" }, { - "key": [ "global", "props", "ll", "props", "TakeControls", "signatures", 0, "args", 2, "type" ], - "value": [ "boolean" ] + "key": [ "global", "props", "ll", "props", "TakeControls", "signatures", 0, "args", 2, "type", 0, "value" ], + "value": "boolean" }, { - "key": [ "global", "props", "NULL_KEY", "type" ], + "key": [ "global", "props", "NULL_KEY", "type", "value" ], "value": "uuid" } ] \ No newline at end of file diff --git a/deno.jsonc b/deno.jsonc index 10c2861..b7c00d3 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -32,5 +32,8 @@ }, "imports": { "@std/assert": "jsr:@std/assert@1" + }, + "fmt": { + "indentWidth": 4 } } \ No newline at end of file diff --git a/src/slua/slua-common.ts b/src/slua/slua-common.ts index 1fbe962..41e1960 100644 --- a/src/slua/slua-common.ts +++ b/src/slua/slua-common.ts @@ -1,267 +1,354 @@ import { - NamedVarOpType, - SLuaBaseType, - SLuaFuncDef, - SLuaFuncResult, - SLuaFuncSig, - SLuaType, + NamedVarOpType, + SLuaBaseType, + SLuaClassDef, + SLuaCustomType, + SLuaFuncArg, + SLuaFuncArgs, + SLuaFuncDef, + SLuaFuncResult, + SLuaFuncSig, + SLuaFunctionType, + SLuaGlobalTable, + SLuaSimpleType, + SLuaSimpleTypeValue, + SLuaTableDef, + SLuaType, + SLuaValueType, } from "./slua-json-gen.ts"; export function mapResultToFunctionString(results: SLuaFuncResult[]): string { - return results.map((r) => mapArgToFunctionString(r)).join(", "); + return results.map((r) => mapArgToFunctionString(r)).join(", "); } export function mapSLuaTypeToString(t: SLuaBaseType): string { - if (typeof t == "string") return t; - if (isTypeCustom(t)) { - return t.custom; - } else if (isTypeValue(t)) { - return t.value; - } else { - console.error(t); - throw new Error("Unknown type handle"); - } + switch (t.def) { + case "custom": + case "value": + case "simple": + return t.value.toString(); + case "function": + return "(...any)->()"; // TODO : make function more correct + case "table": + return `{ ${t.value.map((e) => e.value)} }`; + default: + console.error("Unknown type", t); + throw "Unknown type for mapSLuaTypeToString"; + } } -export function generateCombinedDefinition(ofunc: SLuaFuncDef) { - const args = []; - const ress = []; - const func: SLuaFuncDef = JSON.parse(JSON.stringify(ofunc)); - for (const sig of func.signatures) { - let addArg = false; - while (args.length < sig.args.length) { - args.push(sig.args[args.length]); - addArg = true; - } - if (!addArg) { - for (let i = 0; i < sig.args.length; i++) { - const arg = sig.args[i]; - args[i].type = [...new Set([...args[i].type, ...arg.type])]; - } - } - let addRes = false; - while (ress.length < sig.result.length) { - ress.push(sig.result[ress.length]); - addRes = true; - } - if (!addRes) { - for (let i = 0; i < sig.result.length; i++) { - const res = sig.result[i]; - ress[i].type = [...new Set([...ress[i].type, ...res.type])]; - } +function addIfArrayNotContainJson(accum: T[], add: T[]): void { + const matchJSON = (t: T) => { + const json = JSON.stringify(t); + return (v: T) => JSON.stringify(v) == json; + }; + for (const t of add) { + if (!accum.some(matchJSON(t))) { + accum.push(t); + } } - } +} - return `(${mapArgsToFunctionParamString(args, true)}) : ${ - mapResultToFunctionString(ress) - }`; +export function generateStringDefinitions(ofunc: SLuaFuncDef): string[] { + return ofunc.signatures.map((sig) => { + return `(${mapArgsToFunctionParamString(sig.args, true)}) -> ${ + mapResultToFunctionString(sig.result) + }`; + }); } export function mapArgsToFunctionParamString( - args: NamedVarOpType[], - cleanup: boolean = false, + args: NamedVarOpType[], + cleanup: boolean = false, ): string { - return args.map((a) => doMapArgToFunctionString(a, cleanup)).join(", "); + return args.map((a) => doMapArgToFunctionString(a, cleanup)).join(", "); } export function mapArgToFunctionString( - arg: NamedVarOpType, + arg: NamedVarOpType, ): string { - return doMapArgToFunctionString(arg, false); + return doMapArgToFunctionString(arg, false); } function doMapArgToFunctionString( - arg: NamedVarOpType, - cleanup: boolean = false, + arg: NamedVarOpType, + cleanup: boolean = false, ): string { - const types = (cleanup ? cleanTypes(arg.type) : arg.type).map( - mapSLuaTypeToString, - ); + const types = (cleanup ? cleanTypes(arg.type) : arg.type).map( + mapSLuaTypeToString, + ); - let str = types.filter((t) => t != "self").join("|"); + let str = types.filter((t) => t != "self").join("|"); - if (arg.variadic || arg.optional) { - if (arg.type.length > 1) { - str = `(${str})`; + if (arg.variadic || arg.optional) { + if (arg.type.length > 1) { + str = `(${str})`; + } + if (arg.variadic) str = `...${str}`; + if (arg.optional) str = `${str}?`; } - if (arg.variadic) str = `...${str}`; - if (arg.optional) str = `${str}?`; - } - if (arg.name && !arg.variadic) { - if (str) { - str = `${arg.name}: ${str}`; - } else { - str = arg.name; + if (arg.name && !arg.variadic) { + if (str) { + str = `${arg.name}: ${str}`; + } else { + str = arg.name; + } } - } - return str; + return str; +} + +export function classDefToTableDef( + cls: SLuaClassDef, + name?: string, +): SLuaGlobalTable { + return { + def: "table", + name: name || cls.name, + props: { + ...cls.props, + ...cls.funcs, + }, + }; +} + +function isDefObj(c: unknown): c is { def: string } { + if (typeof c != "object") return false; + if (c == null) return false; + if (c instanceof Array) return false; + return Object.hasOwn(c, "def"); +} + +function isType(c: unknown): c is { def: string; value: unknown } { + if (!isDefObj(c)) return false; + return Object.hasOwn(c, "value"); +} + +export function isTypeFunction( + c: unknown, +): c is SLuaFunctionType { + if (!isType(c)) return false; + if (c.def != "function") return false; + if (!isDefObj(c.value)) return false; + return c.value.def == "signature"; +} + +export function isTypeCustom( + c: unknown, +): c is SLuaCustomType { + if (!isType(c)) return false; + return c.def == "custom" && typeof (c.value) == "string"; } -export function isTypeCustom(c: unknown): c is { custom: string } { - if (typeof c != "object") return false; - if (c == null) return false; - if (c instanceof Array) return false; - return Object.hasOwn(c, "custom"); +export function isTypeValue(c: unknown): c is SLuaValueType { + if (!isType(c)) return false; + return c.def == "value" && + (typeof (c.value) == "string" || typeof (c.value) == "number"); } -export function isTypeValue(c: unknown): c is { value: string } { - if (typeof c != "object") return false; - if (c == null) return false; - if (c instanceof Array) return false; - return Object.hasOwn(c, "value"); +export function isTypeSimple( + c: unknown, +): c is SLuaSimpleType { + if (!isType(c)) return false; + return c.def == "simple" && typeof (c.value) == "string" && + isSimpleTypeValue(c.value); +} + +export function isSimpleTypeValue(s: string): s is SLuaSimpleTypeValue { + return [ + "string", + "boolean", + "number", + "vector", + "buffer", + "{}", + "quaternion", + "uuid", + "nil", + "list", + "self", + "any", + "()", + "numeric", + ].includes(s); } export function generatePreferedCodeSample( - prefix: string[], - func: SLuaFuncDef, + prefix: string[], + func: SLuaFuncDef, ): [string, number] { - let str = generateCodeSample( - prefix, - func, - 0, - 0, - func.signatures[0].args.length > 3, - ); - let sigIndex = 0; - let args = func.signatures[0].args.length; - for (let i = 1; i < func.signatures.length; i++) { - for (let o = 0; o < 5; o++) { - const nStr = generateCodeSample( + let str = generateCodeSample( prefix, func, - i, - o, - func.signatures[i].args.length > 3, - ); - const nArgs = func.signatures[i].args.length; - if (samplePrefered(nStr, str) || nArgs > args) { - str = nStr; - args = nArgs; - sigIndex = i; - } + 0, + 0, + func.signatures[0].args.length > 3, + ); + let sigIndex = 0; + let args = func.signatures[0].args.length; + for (let i = 1; i < func.signatures.length; i++) { + for (let o = 0; o < 5; o++) { + const nStr = generateCodeSample( + prefix, + func, + i, + o, + func.signatures[i].args.length > 3, + ); + const nArgs = func.signatures[i].args.length; + if (samplePrefered(nStr, str) || nArgs > args) { + str = nStr; + args = nArgs; + sigIndex = i; + } + } } - } - return [str, sigIndex]; + return [str, sigIndex]; } export function generateCodeSample( - prefix: string[], - func: SLuaFuncDef, - sigIndex: number, - off: number = 0, - verbose: boolean = false, + prefix: string[], + func: SLuaFuncDef, + sigIndex: number, + off: number = 0, + verbose: boolean = false, ): string { - const name = [...prefix, func.name].join("."); - return generateCodeSampleForSig( - name, - func.signatures[sigIndex], - off, - verbose, - ); + const name = prefix.join(".") + (func.takesSelf ? ":" : ".") + func.name; + return generateCodeSampleForSig( + name, + func.signatures[sigIndex], + off, + verbose, + func.takesSelf, + ); } function samplePrefered(sample1: string, sample2: string) { - const intc1 = sample1.split("integer(").length - 1; - const intc2 = sample2.split("integer(").length - 1; - return intc1 < intc2; + const intc1 = sample1.split("integer(").length - 1; + const intc2 = sample2.split("integer(").length - 1; + return intc1 < intc2; } function generateCodeSampleForSig( - name: string, - sig: SLuaFuncSig, - off: number = 0, - verbose: boolean = false, + name: string, + sig: SLuaFuncSig, + off: number = 0, + verbose: boolean = false, + takesSelf: boolean = false, ): string { - const args = []; - for (const arg of sig.args) { - const type = cleanType(arg.type, off); - switch (type) { - case "quaternion": - args.push("quaternion(0,0,0,1)"); - break; - case "integer": - args.push("integer(1)"); - break; - case "numeric": - args.push(Math.floor(Math.random() * 16)); - break; - case "number": - args.push("3.14"); - break; - case "list": - case "{}": - args.push("{}"); - break; - case "uuid": - if (verbose) { - args.push("uuid('677bf9a4-bba5-4cf9-a4ad-4802a0f7ef46')"); - } else { - args.push("uuid()"); - } - break; - case "vector": - args.push("vector(1,1,1)"); - break; - case "boolean": - args.push("true"); - break; - case "string": - args.push("'test'"); - break; - case "self": - break; - default: - if (isTypeCustom(type)) { - args.push(type.custom); - } else if (isTypeValue(type)) { - args.push(type.value); - } else { - args.push("nil"); + const [args, funcs] = buildCodeSampleArgsForSig(sig.args, off, verbose); + if (takesSelf) args.shift(); + const prefix = funcs.length > 0 ? funcs.join("\n\n") + "\n\n" : ""; + if (verbose) { + return `${prefix}${name}(\n ${args.join(",\n ")}\n)`; + } else { + return `${prefix}${name}(${args.join(", ")})`; + } +} - console.trace("Can't create default for:", arg); - throw "AAAAAAAAA"; +function buildCodeSampleArgsForSig( + fargs: SLuaFuncArgs, + off: number, + verbose: boolean = false, +): [string[], string[]] { + const args: (string | null)[] = []; + const funcs: string[] = []; + for (const arg of fargs) { + const type = cleanType(arg.type, off); + switch (type.def) { + case "custom": + case "value": + args.push(type.value.toString()); + break; + case "simple": + args.push(buildCodeSampleSimpleArgForSig(type, verbose)); + break; + case "function": + funcs.push(generateCodeSampleForFunction(type.value, arg.name)); + args.push(arg.name); + break; + default: + console.trace("Can't create default for:", type, arg); + throw "AAAAAAAAA"; } - break; } - } - if (verbose) { - return `${name}(\n ${args.join(",\n ")}\n)`; - } else { - return `${name}(${args.join(", ")})`; - } + return [args.filter((a) => typeof a == "string"), funcs]; } -function cleanTypes(type: SLuaBaseType[]): SLuaBaseType[] { - if (type.length == 2) { - if (type.includes("number") && type.includes("integer")) { - return ["number"]; +function buildCodeSampleSimpleArgForSig( + type: SLuaSimpleType, + verbose: boolean = false, +): string | null { + switch (type.value) { + case "quaternion": + return "quaternion(0,0,0,1)"; + case "numeric": + return Math.floor(Math.random() * 16).toString(); + case "number": + return "3.14"; + case "list": + case "{}": + return "{}"; + case "uuid": + return verbose + ? "uuid('677bf9a4-bba5-4cf9-a4ad-4802a0f7ef46')" + : "uuid()"; + case "vector": + return "vector(1,1,1)"; + case "boolean": + return "true"; + case "string": + return "'test'"; + case "self": + return "self"; + case "nil": + return "nil"; + default: + console.error("Unknown type", type); + throw "AAAAAAAAAA"; } - if (type.includes("uuid") && type.includes("string")) { - return ["uuid"]; +} + +function generateCodeSampleForFunction( + sig: SLuaFuncSig, + name?: string, +): string { + let result = ""; + if (name) { + result += `local ${name} = `; } - } - return type; + return `${result}function(${ + mapArgsToFunctionParamString(sig.args, true) + }) : ${mapResultToFunctionString(sig.result)}\n -- Your code\nend`; +} + +function cleanTypes(type: SLuaBaseType[]): SLuaBaseType[] { + if (type.length == 2) { + if ( + type.some((t) => t.def == "simple" && t.value == "uuid") && + type.some((t) => t.def == "simple" && t.value == "string") + ) { + return [{ def: "simple", value: "uuid" }]; + } + } + return type; } function cleanType(stype: SLuaType, off: number = 0): SLuaBaseType { - if (stype instanceof Array) { - if (off >= stype.length) off = 0; - if (stype.includes("number") && stype.includes("integer")) { - return "numeric"; + if (stype instanceof Array) { + if (off >= stype.length) off = 0; + } + const type = stype instanceof Array ? stype[off] : stype; + if (type == null) { + console.trace(stype); + throw new Error("Cannot cleantype null for generated function"); } - } - const type = stype instanceof Array ? stype[off] : stype; - if (type == null) { - console.trace(stype); - throw new Error("Cannot cleantype null for generated function"); - } - return type; - // if (typeof type == "object") { - // console.error(type); - // throw new Error("Failed to case type for docs"); - // } else { - // return type; - // } + return type; + // if (typeof type == "object") { + // console.error(type); + // throw new Error("Failed to case type for docs"); + // } else { + // return type; + // } } diff --git a/src/slua/slua-defs-gen.ts b/src/slua/slua-defs-gen.ts index 6c95356..a233a2a 100644 --- a/src/slua/slua-defs-gen.ts +++ b/src/slua/slua-defs-gen.ts @@ -1,136 +1,235 @@ import { - buildSluaJson, - SLuaClassDef, - SLuaConstDef, - SLuaEventDef, - SLuaFuncDef, - SLuaGlobalTable, - SLuaGlobalTableProps, - SLuaTypeDef, + buildSluaJson, + SLuaClassDef, + SLuaClassType, + SLuaConstDef, + SLuaFuncDef, + SLuaFuncSig, + SLuaGlobalTable, + SLuaGlobalTableProps, + SLuaTableType, + SLuaTypeDef, } from "./slua-json-gen.ts"; import { StrObj } from "../types.d.ts"; import { - mapArgToFunctionString, - mapResultToFunctionString, - mapSLuaTypeToString, + mapArgToFunctionString, + mapResultToFunctionString, + mapSLuaTypeToString, } from "./slua-common.ts"; export async function buildSluaTypeDefs( - file: string, - strict: boolean = true, + file: string, + strict: boolean = true, ): Promise { - const data = await buildSluaJson(file, strict); + const data = await buildSluaJson(file, strict); - return "\n" + - "----------------------------------\n" + - "---------- LSL LUAU DEFS ---------\n" + - "----------------------------------\n" + - "\n" + - outputTypeDefs(data.types) + - "\n\n" + - outpufClassDefs(data.classes) + - "\n\n" + - outputFunctionDefs(data.global.props); + return "\n" + + "----------------------------------\n" + + "---------- LSL LUAU DEFS ---------\n" + + "----------------------------------\n" + + "\n" + + outputTypeDefs(data.types) + + "\n\n" + + outpufClassDefs(data.classes) + + "\n\n" + + outputFunctionDefs(data.global.props); } function outpufClassDefs(classes: StrObj): string { - let output = ""; - for (const key in classes) { - const cls = classes[key]; - output += `declare class ${cls.name}\n`; - for (const pkey in cls.props) { - const prop = cls.props[pkey]; - output += ` ${prop.name} : ${prop.type}`; - output += " -- " + prop.desc.replaceAll("\n", " ") + "\n"; + let output = ""; + for (const key in classes) { + const cls = classes[key]; + output += `declare class ${cls.name}\n`; + for (const pkey in cls.props) { + const prop = cls.props[pkey]; + if (prop.type instanceof Array) { + console.error( + "Not implemented handling array prop types", + cls, + prop, + ); + throw "Not implemented handling array prop types"; + } + output += ` ${prop.name} : ${prop.type.value}`; + output += " -- " + prop.desc.replaceAll("\n", " ") + "\n"; + } + for (const fkey in cls.funcs) { + const func = cls.funcs[fkey]; + for (const result of func.signatures) { + const args = result.args.map(mapArgToFunctionString); + output += ` function ${func.name}(${args.join(", ")}): ${ + mapResultToFunctionString(result.result) + }`; + output += " -- " + func.desc.replaceAll("\n", " ") + "\n"; + } + } + output += "end\n\n"; } - for (const fkey in cls.funcs) { - const func = cls.funcs[fkey]; - for (const result of func.signatures) { - const args = result.args.map(mapArgToFunctionString); - output += ` function ${func.name}(${args.join(", ")}): ${ - mapResultToFunctionString(result.result) - }`; - output += " -- " + func.desc.replaceAll("\n", " ") + "\n"; - } + return output; +} + +function outputTypeDefs(typeDefs: StrObj): string { + const output: string[] = []; + for (const key in typeDefs) { + const def = typeDefs[key]; + const typeArray = def.type instanceof Array; + const types = def.type instanceof Array ? def.type : [def.type]; + const typeStrs: string[] = []; + for (const typ of types) { + switch (typ.def) { + case "simple": + case "custom": + case "value": + typeStrs.push(typ.value.toString()); + break; + case "class": + if (typeArray) throw `Cannot output type class array`; + typeStrs.push(outputClassType(typ)); + break; + case "table": + typeStrs.push(outputTableType(typ)); + break; + case "function": + typeStrs.push(outputFunctionSiganture(typ.value)); + break; + default: + console.error(`Unhandled type def type`, typ); + throw `Unhandled type def type`; + } + } + // switch(typ.type.def) + // if (typeof typ.type == "string") { + // out += `${typ.type}`; + // } else { + + // } + output.push(`type ${def.name} = ` + typeStrs.join("|")); } - output += "end\n\n"; - } - return output; + return output.join("\n") + "\n"; } -function outputTypeDefs(types: StrObj): string { - let output = ""; - for (const key in types) { - const typ = types[key]; - output += `type ${typ.name} = ${typ.type}\n`; - } - return output; +function outputTableType(table: SLuaTableType): string { + const str: string[] = []; + + for (const type of table.value) { + switch (type.def) { + case "simple": + case "custom": + case "value": + str.push(type.value.toString()); + break; + case "class": + str.push(type.value.name); + break; + default: + console.error(table, type); + throw `Unhandled type for table ouput '${type.def}'`; + } + } + + return `{${str.join("|")}}`; } -function outputFunctionDefs( - funcs: SLuaGlobalTableProps, - depth: number = 0, -): string { - let output = ""; - const pad = new Array((depth * 2) + 1).join(" "); - const funcBe = depth > 0 ? "" : "function "; - const funcAf = depth > 0 ? ": " : " "; - const funcRes = depth > 0 ? " -> " : " : "; - const pre = depth == 0 ? "declare " : pad; - const suf = depth == 0 ? "" : ","; - for (const key in funcs) { - const entry = funcs[key]; - switch (entry.def ?? null) { - case "const": { - const con = entry as SLuaConstDef; - output += `${pre}${con.name} : ${mapSLuaTypeToString(con.type)}${suf}`; - output += " -- " + con.desc.replaceAll("\n", " "); - break; - } - case "event": { - const event = entry as SLuaEventDef; - const args = event.args.map(mapArgToFunctionString); - output += `${pre}${funcBe}${event.name}${funcAf}(${ - args.join(", ") - }) : ()${suf}`; - output += " -- " + event.desc.replaceAll("\n", " "); - break; - } - case "func": { - const func = entry as SLuaFuncDef; +function outputClassType(typ: SLuaClassType): string { + const funcs: string[] = []; + const props: string[] = []; + for (const name in typ.value.props) { + const prop = typ.value.props[name]; + if (prop.type instanceof Array) { + console.error( + "Not implemented handling array prop types", + typ, + prop, + ); + throw "Not implemented handling array prop types"; + } + props.push(` ${prop.name} : ${prop.type.value},`); + } + if (props.length) props.push(""); + for (const name in typ.value.funcs) { + const func = typ.value.funcs[name]; const results = func.signatures.map((result) => { - const args = result.args.map(mapArgToFunctionString); - return `(${args.join(", ")})${funcRes}${ - mapResultToFunctionString(result.result) - }`; + const args = result.args.map(mapArgToFunctionString); + return `(${args.join(", ")}) -> ${ + mapResultToFunctionString(result.result) + }`; }); - output += `${pre}${funcBe}${func.name}${funcAf}${ - results.length > 1 ? "(" : "" - }${results.join(") & (")}${results.length > 1 ? ")" : ""}${suf}`; - output += " -- " + func.desc.replaceAll("\n", " "); - break; - } - case "table": { - const table = entry as SLuaGlobalTable; - if (depth == 0) { - output += "\n---------------------------\n"; - output += `-- Global Table: ${table.name}\n`; - output += "---------------------------\n\n"; + let resultStr = results.length > 1 ? "(" : ""; + resultStr += results.join(") & ("); + resultStr += results.length > 1 ? ")" : ""; + funcs.push(` ${func.name} : ${resultStr},`); + } + return `{\n${props.join("\n")}${funcs.join("\n")}\n}`; +} + +function outputFunctionSiganture( + sig: SLuaFuncSig, + colon: boolean = false, +): string { + const args: string[] = sig.args.map(mapArgToFunctionString); + const result: string = mapResultToFunctionString(sig.result); + return `(${args.join(", ")})${colon ? ":" : " ->"} ${result}`; +} + +function outputFunctionDefs( + funcs: SLuaGlobalTableProps, + depth: number = 0, +): string { + let output = ""; + const pad = new Array((depth * 2) + 1).join(" "); + const funcBe = depth > 0 ? "" : "function "; + const funcAf = depth > 0 ? ": " : " "; + const funcRes = depth > 0 ? " -> " : " : "; + const pre = depth == 0 ? "declare " : pad; + const suf = depth == 0 ? "" : ","; + for (const key in funcs) { + const entry = funcs[key]; + switch (entry.def ?? null) { + case "const": { + const con = entry as SLuaConstDef; + output += `${pre}${con.name} : ${ + mapSLuaTypeToString(con.type) + }${suf}`; + output += " -- " + con.desc.replaceAll("\n", " "); + break; + } + case "func": { + const func = entry as SLuaFuncDef; + const results = func.signatures.map((result) => { + const args = result.args.map(mapArgToFunctionString); + return `(${args.join(", ")})${funcRes}${ + mapResultToFunctionString(result.result) + }`; + }); + output += `${pre}${funcBe}${func.name}${funcAf}${ + results.length > 1 ? "(" : "" + }${results.join(") & (")}${ + results.length > 1 ? ")" : "" + }${suf}`; + output += " -- " + func.desc.replaceAll("\n", " "); + break; + } + case "table": { + const table = entry as SLuaGlobalTable; + if (depth == 0) { + output += "\n---------------------------\n"; + output += `-- Global Table: ${table.name}\n`; + output += "---------------------------\n\n"; + } + output += `${pre}${key}: {\n`; + output += outputFunctionDefs(table.props, depth + 1).trimEnd() + .split( + "\n", + ).sort().join("\n"); + output += `\n${pad}}`; + if (depth == 0) output += "\n\n"; + break; + } + default: + console.error(entry); + throw "WTF WHAT EVEN AM I"; } - output += `${pre}${key}: {\n`; - output += outputFunctionDefs(table.props, depth + 1).trimEnd() - .split( - "\n", - ).sort().join("\n"); - output += `\n${pad}}`; - if (depth == 0) output += "\n\n"; - break; - } - default: - console.error(entry); - throw "WTF WHAT EVEN AM I"; + output += "\n"; } - output += "\n"; - } - return output; + return output; } diff --git a/src/slua/slua-json-gen.ts b/src/slua/slua-json-gen.ts index b82b0ac..9c652e1 100644 --- a/src/slua/slua-json-gen.ts +++ b/src/slua/slua-json-gen.ts @@ -1,22 +1,22 @@ import { buildLSLJson, LSLDef } from "../lsl/lsl-json-gen.ts"; import { - ConstDef, - ConstDefs, - EventDef, - EventDefs, - FuncArg, - FuncArgs, - FuncDef, - FuncDefs, - Overrides, - StrObj, - TypeDef, + ConstDef, + ConstDefs, + EventDefs, + FuncArg, + FuncArgs, + FuncDef, + FuncDefs, + Overrides, + StrObj, + TypeDef, } from "../types.d.ts"; // import _KnownTypes from "../../data/knownTypes.json" with { type: "json" }; import _overrides from "../../data/slua_keywords.overrides.json" with { - type: "json", + type: "json", }; import { applyPatches } from "../util.ts"; +import { isSimpleTypeValue } from "./slua-common.ts"; const overides = _overrides as Overrides; @@ -34,67 +34,92 @@ const overides = _overrides as Overrides; const quaternion = "quaternion"; const uuid = "uuid"; -const integer = "integer"; +// const integer = "integer"; + +export type SLuaSimpleTypeValue = + | "string" + | "boolean" + | "number" + | "vector" + | "buffer" + | "{}" + // | "integer" + | "quaternion" + | "uuid" + | "nil" + | "list" + | "self" + | "any" + | "()" + | "numeric"; + +export type SLuaSimpleType = { def: "simple"; value: SLuaSimpleTypeValue }; +export type SLuaFunctionType = { def: "function"; value: SLuaFuncSig }; +export type SLuaCustomType = { def: "custom"; value: string }; +export type SLuaValueType = { def: "value"; value: string | number }; +export type SLuaTableType = { def: "table"; value: SLuaBaseType[] }; +export type SLuaClassType = { def: "class"; value: SLuaClassDef }; export type SLuaBaseType = - | "string" - | "boolean" - | "number" - | "vector" - | "buffer" - | "{}" - | "integer" - | "quaternion" - | "uuid" - | "nil" - | "list" - | "self" - | "any" - | "()" - | "numeric" - | SLuaFuncSig - | { custom: string } - | { value: string | number }; + | SLuaSimpleType + | SLuaFunctionType + | SLuaCustomType + | SLuaValueType + | SLuaTableType + | SLuaClassType; // | string // | null; export type SLuaType = SLuaBaseType | SLuaBaseType[]; export type SLuaFuncResult = { - def: "result"; - desc: string; + def: "result"; + desc: string; } & NamedVarOpType; export type SLuaFuncSig = { - args: SLuaFuncArgs; - result: SLuaFuncResult[]; + def: "signature"; + args: SLuaFuncArgs; + result: SLuaFuncResult[]; }; export type SLuaFuncDef = Omit & { - signatures: SLuaFuncSig[]; + signatures: SLuaFuncSig[]; + takesSelf: boolean; }; export type SLuaConstDef = Omit & { type: SLuaBaseType }; -export type SLuaEventDef = Omit & { args: SLuaFuncArgs }; -export type SLuaTypeDef = TypeDef & { type: string }; +// export type SLuaEventDef = Omit & { args: SLuaFuncArgs }; +export type SLuaTypeDef = TypeDef & { type: SLuaType }; export type NamedVarOpType = { name: string } & VarOpType; export type VarOpType = { - type: SLuaBaseType[]; - variadic: boolean; - optional: boolean; + type: SLuaBaseType[]; + variadic: boolean; + optional: boolean; }; -export type SLuaFuncArg = Omit & VarOpType; +export type SLuaFuncArg = Omit & VarOpType & { + example?: string; +}; export type SLuaFuncArgs = SLuaFuncArg[]; -export type SLuaDef = SLuaFuncDef | SLuaConstDef | SLuaEventDef | SLuaClassDef; +export type SLuaDef = SLuaFuncDef | SLuaConstDef | SLuaClassDef | SLuaPropDef; export type SLuaClassDef = { - def: "class"; - name: string; - funcs: StrObj; - props: StrObj; + def: "class"; + name: string; + funcs: StrObj; + props: StrObj; +}; + +export type SLuaPropDef = { + def: "prop"; + name: string; + desc: string; + link: string | null; + type: SLuaType; + readOnly: boolean; }; export type SLuaTableDef = StrObj; @@ -103,1409 +128,1864 @@ export type SLuaGlobalTableProp = SLuaDef | SLuaGlobalTable; export type SLuaGlobalTableProps = StrObj; export type SLuaGlobalTable = { - def: "table"; - name: string; - props: SLuaGlobalTableProps; + def: "table"; + name: string; + props: SLuaGlobalTableProps; }; export type SLuaGlobal = StrObj; -type SLua = { - global: SLuaGlobalTable; - types: StrObj; - classes: StrObj; +export type SLua = { + global: SLuaGlobalTable; + types: StrObj; + classes: StrObj; }; let remapLSLArgType: ( - type: string | null, + type: string | null, ) => SLuaType = remapLSLArgTypeStrict; +const newCustomType = (t: string): { def: "custom"; value: string } => { + return { def: "custom", value: t }; +}; +const newSimpleType = ( + t: string, +): { def: "simple"; value: SLuaSimpleTypeValue } => { + if (!isSimpleTypeValue(t)) throw new Error(`Invalid simple type '${t}'`); + return { def: "simple", value: t }; +}; +const newValueType = (t: string): SLuaValueType => { + return { def: "value", value: t }; +}; +const newValueTypeArray = (t: string[]): SLuaValueType[] => { + return t.map(newValueType); +}; + +const newTableType = ( + t: flexiSluaBaseType, +): SLuaTableType => { + t = castFlexiType(t); + if (!(t instanceof Array)) t = [t]; + return { def: "table", value: t }; +}; + +const castFlexiType = (t: flexiSluaBaseType): SLuaType => { + if (t instanceof Array) return castTypeArray(t); + return castType(t); +}; + +const castType = (t: SLuaFuncSig | string | SLuaBaseType): SLuaBaseType => { + if (typeof t != "string") { + if (t.def == "signature") { + return { def: "function", value: t }; + } else return t; + } + return newSimpleType(t); +}; + +const castTypeArray = (t: (string | SLuaBaseType)[]): SLuaBaseType[] => { + const r: SLuaBaseType[] = []; + for (const i of t) { + r.push(castType(i)); + } + return r; +}; + +const EventHandler = newCustomType("EventHandler"); +const DetectedEventHandler = newCustomType("DetectedEventHandler"); + export async function buildSluaJson( - file: string, - strict: boolean = true, + file: string, + strict: boolean = true, ): Promise { - if (!strict) remapLSLArgType = remapLSLArgTypeLoose; - const lsl = await buildLSLJson(file); - const slua: SLua = { - global: { - def: "table", - name: "SLua", - props: { - ...builtInSluaFuncs(), - ...builtInSluaTables(), - ...buildSLuaGlobalsFromLSL(lsl), - ...buildSLuaEventsFromLSL(lsl.events), - ...buildSLuaConstsFromLSL(lsl.constants), - }, - }, - types: builtInSluaTypes(), - classes: builtInSluaClasses(), - }; - - applyPatches(slua, overides); - - return slua; + if (!strict) remapLSLArgType = remapLSLArgTypeLoose; + const lsl = await buildLSLJson(file); + const slua: SLua = { + global: { + def: "table", + name: "SLua", + props: { + LLEvents: { + def: "const", + name: "LLEvents", + type: newCustomType("LLEventsProto"), + valueRaw: null, + value: null, + desc: "LLEvents object", + link: "", + }, + LLTimers: { + def: "const", + name: "LLTimers", + type: newCustomType("LLTimersProto"), + valueRaw: null, + value: null, + desc: "LLTimers object", + link: "", + }, + ...builtInSluaFuncs(), + ...builtInSluaTables(), + ...buildSLuaGlobalsFromLSL(lsl), + ...buildSLuaConstsFromLSL(lsl.constants), + }, + }, + types: builtInSluaTypes(lsl.events), + classes: builtInSluaClasses(), + }; + + applyPatches(slua, overides); + + return slua; +} + +function newFuncImpureSelf( + name: string, + desc: string, + link: string | null, + results: SLuaFuncSig[] = [], + self: string, +): SLuaFuncDef { + const func = newFuncSelf(name, desc, link, results, self); + func.pure = false; + return func; +} + +function newFuncImpure( + name: string, + desc: string, + link: string | null, + results: SLuaFuncSig[] = [], +): SLuaFuncDef { + const func = newFunc(name, desc, link, results); + func.pure = false; + return func; +} + +function newFuncSelf( + name: string, + desc: string, + link: string | null, + results: SLuaFuncSig[] = [], + self: string, +): SLuaFuncDef { + const func = newFunc(name, desc, link, results); + func.takesSelf = true; + for (const i in func.signatures) { + const sig = func.signatures[i]; + sig.args = [newArg("self", "self", newCustomType(self)), ...sig.args]; + } + return func; } function newFunc( - name: string, - desc: string, - link: string, - results: SLuaFuncSig[] = [], + name: string, + desc: string, + link: string | null, + results: SLuaFuncSig[] = [], ): SLuaFuncDef { - return { - def: "func", - name, - energy: 0, - pure: true, - sleep: 0, - signatures: results, - desc, - link, - }; + return { + def: "func", + name, + energy: 0, + pure: true, + sleep: 0, + signatures: results, + desc, + link, + takesSelf: false, + }; } function _newVResult( - type: SLuaBaseType | SLuaBaseType[], - desc: string = "", + type: SLuaBaseType | SLuaBaseType[], + desc: string = "", ): SLuaFuncResult { - return newResult("", type, desc, true); + return newResult("", type, desc, true); } function _newOResult( - type: SLuaBaseType | SLuaBaseType[], - desc: string = "", + type: SLuaBaseType | SLuaBaseType[], + desc: string = "", ): SLuaFuncResult { - return newResult("", type, desc, false, true); + return newResult("", type, desc, false, true); } function _newOVResult( - type: SLuaBaseType | SLuaBaseType[], - desc: string = "", + type: SLuaBaseType | SLuaBaseType[], + desc: string = "", ): SLuaFuncResult { - return newResult("", type, desc, true, true); + return newResult("", type, desc, true, true); } +type flexiSluaBaseType = + | SLuaBaseType + | SLuaBaseType[] + | string + | string[] + | SLuaFuncSig; + function newResult( - name: string, - type: SLuaBaseType | SLuaBaseType[], - desc: string = "", - variadic: boolean = false, - optional: boolean = false, + name: string, + type: flexiSluaBaseType, + desc: string = "", + variadic: boolean = false, + optional: boolean = false, ): SLuaFuncResult { - if (!(type instanceof Array)) type = [type]; - return { - name, - def: "result", - desc, - variadic, - type, - optional, - }; + if (type instanceof Array) { + type = castTypeArray(type); + } else type = castType(type); + if (!(type instanceof Array)) type = [type]; + return { + name, + def: "result", + desc, + variadic, + type, + optional, + }; } function newSFuncSignature( - result: SLuaBaseType | SLuaBaseType[], - args: SLuaFuncArgs = [], -) { - return newFuncSignature( - newResult("", result), - args, - ); + result: flexiSluaBaseType, + args: SLuaFuncArgs = [], +): SLuaFuncSig { + return newFuncSignature( + newResult("", result), + args, + ); } function newFuncSignature( - result: SLuaFuncResult[] | SLuaFuncResult, - args: SLuaFuncArgs = [], + result: SLuaFuncResult[] | SLuaFuncResult, + args: SLuaFuncArgs = [], ): SLuaFuncSig { - if (!(result instanceof Array)) result = [result]; - return { - result, - args, - }; + if (!(result instanceof Array)) result = [result]; + return { + def: "signature", + result, + args, + }; } -function newOArg(name: string, desc: string, type: SLuaType): SLuaFuncArg { - return newArg(name, desc, type, false, true); +function newOArg( + name: string, + desc: string, + type: flexiSluaBaseType, +): SLuaFuncArg { + return newArg(name, desc, type, false, true); } -function newVArg(name: string, desc: string, type: SLuaType): SLuaFuncArg { - return newArg(name, desc, type, true); +function newVArg( + name: string, + desc: string, + type: flexiSluaBaseType, +): SLuaFuncArg { + return newArg(name, desc, type, true); } -function _newOVArg(name: string, desc: string, type: SLuaType): SLuaFuncArg { - return newArg(name, desc, type, true, true); +function newOVArg( + name: string, + desc: string, + type: flexiSluaBaseType, +): SLuaFuncArg { + return newArg(name, desc, type, true, true); } function newArg( - name: string, - desc: string, - btype: SLuaType, - variadic: boolean = false, - optional: boolean = false, + name: string, + desc: string, + btype: flexiSluaBaseType, + variadic: boolean = false, + optional: boolean = false, ): SLuaFuncArg { - const type = btype instanceof Array ? btype : [btype]; - return { - def: "arg", - name, - desc, - type, - variadic, - optional, - }; + if (btype instanceof Array) { + btype = castTypeArray(btype); + } else btype = castType(btype); + const type = btype instanceof Array ? btype : [btype]; + return { + def: "arg", + name, + desc, + type, + variadic, + optional, + }; } function builtInSluaTables(): SLuaGlobal { - return { - bit32: buildBit32(), - lljson: buildLLJSON(), - llbase64: buildLLBase64(), - vector: buildVector(), - }; + return { + bit32: buildBit32(), + lljson: buildLLJSON(), + llbase64: buildLLBase64(), + vector: buildVector(), + }; } function newConstFromLSL(lsl: ConstDef): SLuaConstDef { - const type = remapLSLConstType(lsl.type); - const con = newConst(lsl.name, lsl.desc, type); - con.link = lsl.link; - con.value = lsl.value; - con.valueRaw = lsl.valueRaw; - return con; + const type = remapLSLConstType(lsl.type); + const con = newConst(lsl.name, lsl.desc, type); + con.link = lsl.link; + con.value = lsl.value; + con.valueRaw = lsl.valueRaw; + return con; +} + +function newReadOnlyProp( + name: string, + desc: string, + type: flexiSluaBaseType, +): SLuaPropDef { + return newProp(name, desc, type, true); +} + +function newProp( + name: string, + desc: string, + type: flexiSluaBaseType, + readOnly: boolean = false, +): SLuaPropDef { + return { + def: "prop", + name, + desc, + link: null, + type: castFlexiType(type), + readOnly, + }; } function newConst( - name: string, - desc: string, - type: SLuaBaseType, + name: string, + desc: string, + type: SLuaBaseType | string, ): SLuaConstDef { - return { - def: "const", - name, - type, - value: null, - valueRaw: null, - desc, - link: "", - }; + if (typeof type == "string") { + type = newSimpleType(type); + } + return { + def: "const", + name, + type, + value: null, + valueRaw: null, + desc, + link: "", + }; } function newNoUrlFunc(name: string, desc: string, results: SLuaFuncSig[]) { - return newFunc(name, desc, "", results); + return newFunc(name, desc, "", results); } function buildLLJSON(): SLuaGlobalTable { - const props: StrObj = { - "_NAME": newConst("_NAME", "Name of the lljson table", { - value: '"lljson"', - }), - "_VERSION": newConst( - "_VERSION", - "Version of the lljson library (based on the lua-cjson library)", - "string", - ), - array_mt: newConst( - "array_mt", - "Metatable for declaring table as an array for json encode", - "{}", - ), - empty_array_mt: newConst( - "array_mt", - "Metatable for declaring table as an empty array for json encode", - "{}", - ), - empty_array: newConst( - "empty_array", - "A constant to pass for an empty array to json encode", - { custom: "lljson_constant" }, - ), - null: newConst( - "null", - "A constant to pass for null to json encode", - { custom: "lljson_constant" }, - ), - encode: newNoUrlFunc("encode", "encode lua value as json", [ - newSFuncSignature( - "string", - [ - newArg( - "value", - "value to encode", - [ - "string", - "number", - "integer", - "vector", - "uuid", - "quaternion", - "boolean", - "{}", - "nil", - ], - ), - ], - ), - ]), - decode: newNoUrlFunc("decode", "decode json string to lua value", [ - newSFuncSignature( - [ - "string", - "number", - "integer", - "vector", - "uuid", - "quaternion", - "boolean", - "{}", - "nil", - ], - [ - newArg( - "json", - "json string to decode", + const props: StrObj = { + "_NAME": newConst( + "_NAME", + "Name of the lljson table", + newValueType('"lljson"'), + ), + "_VERSION": newConst( + "_VERSION", + "Version of the lljson library (based on the lua-cjson library)", "string", - ), - ], - ), - ]), - }; - return { - def: "table", - name: "lljson", - props, - }; -} - -function buildLLBase64(): SLuaGlobalTable { - const props: SLuaGlobalTableProps = { - encode: newNoUrlFunc("encode", "encode a string or buffer to base64", [ - newSFuncSignature( - "string", - [ - newArg( - "value", - "value to encode", - ["string", "buffer"], - ), - ], - ), - ]), - decode: newNoUrlFunc( - "decode", - "decode a base64 string, to a buffer or string", - [ - newSFuncSignature( - "string", - [ - newArg( - "base64", - "base64 string to decode", - "string", - ), - ], ), - newSFuncSignature( - "buffer", - [ - newArg( - "base64", - "base64 string to decode", - "string", - ), - newArg( - "asBuffer", - "", - { value: "true" }, - ), - ], + array_mt: newConst( + "array_mt", + "Metatable for declaring table as an array for json encode", + "{}", ), - newSFuncSignature( - "string", - [ - newArg( - "base64", - "base64 string to decode", - "string", + empty_array_mt: newConst( + "array_mt", + "Metatable for declaring table as an empty array for json encode", + "{}", + ), + empty_array: newConst( + "empty_array", + "A constant to pass for an empty array to json encode", + newCustomType("lljson_constant"), + ), + null: newConst( + "null", + "A constant to pass for null to json encode", + newCustomType("lljson_constant"), + ), + encode: newNoUrlFunc("encode", "encode lua value as json", [ + newSFuncSignature( + "string", + [ + newArg( + "value", + "value to encode", + [ + "string", + "number", + // "integer", + "vector", + "uuid", + "quaternion", + "boolean", + "{}", + "nil", + ], + ), + ], ), - newArg( - "asBuffer", - "", - { value: "false" }, + ]), + decode: newNoUrlFunc("decode", "decode json string to lua value", [ + newSFuncSignature( + [ + "string", + "number", + // "integer", + "vector", + "uuid", + "quaternion", + "boolean", + "{}", + "nil", + ], + [ + newArg( + "json", + "json string to decode", + "string", + ), + ], ), - ], + ]), + }; + return { + def: "table", + name: "lljson", + props, + }; +} + +function buildLLBase64(): SLuaGlobalTable { + const props: SLuaGlobalTableProps = { + encode: newNoUrlFunc("encode", "encode a string or buffer to base64", [ + newSFuncSignature( + "string", + [ + newArg( + "value", + "value to encode", + ["string", "buffer"], + ), + ], + ), + ]), + decode: newNoUrlFunc( + "decode", + "decode a base64 string, to a buffer or string", + [ + newSFuncSignature( + "string", + [ + newArg( + "base64", + "base64 string to decode", + "string", + ), + ], + ), + newSFuncSignature( + "buffer", + [ + newArg( + "base64", + "base64 string to decode", + "string", + ), + newArg( + "asBuffer", + "", + newValueType("true"), + ), + ], + ), + newSFuncSignature( + "string", + [ + newArg( + "base64", + "base64 string to decode", + "string", + ), + newArg( + "asBuffer", + "", + newValueType("false"), + ), + ], + ), + ], ), - ], - ), - }; - return { - def: "table", - name: "llbase64", - props, - }; + }; + return { + def: "table", + name: "llbase64", + props, + }; } function newLuauFunc( - section: string, - name: string, - desc: string, - results: SLuaFuncSig[] = [], + section: string, + name: string, + desc: string, + results: SLuaFuncSig[] = [], ): SLuaFuncDef { - return newFunc( - name, - desc, - `https://luau.org/library#bit32-library#:~:text=function%20${section}.${name}`, - results, - ); + return newFunc( + name, + desc, + `https://luau.org/library#bit32-library#:~:text=function%20${section}.${name}`, + results, + ); } function addToTable(g: SLuaGlobalTable, p: SLuaFuncDef | SLuaConstDef) { - g.props[p.name] = p; + g.props[p.name] = p; } function buildVector(): SLuaGlobalTable { - const newVecFunc = ( - name: string, - desc: string, - results: SLuaFuncSig[] = [], - ): SLuaFuncDef => { - return newLuauFunc( - "bit32", - name, - desc, - results, + const newVecFunc = ( + name: string, + desc: string, + results: SLuaFuncSig[] = [], + ): SLuaFuncDef => { + return newLuauFunc( + "bit32", + name, + desc, + results, + ); + }; + const vec: SLuaGlobalTable = { + def: "table", + name: "vector", + props: {}, + }; + addToTable( + vec, + newConst( + "zero", + "A Zero vector <0,0,0>", + "vector", + ), ); - }; - const vec: SLuaGlobalTable = { - def: "table", - name: "vector", - props: {}, - }; - addToTable( - vec, - newConst( - "zero", - "A Zero vector <0,0,0>", - "vector", - ), - ); - - addToTable( - vec, - newConst( - "one", - "A one vector <1,1,1>", - "vector", - ), - ); - - addToTable( - vec, - newVecFunc( - "create", - "Creates a new vector with the given component values", - [ - newSFuncSignature( - "vector", - [ - newArg("x", "x value of vector", ["number", "integer"]), - newArg("y", "y value of vector", ["number", "integer"]), - newArg("z", "z value of vector", ["number", "integer"]), - ], + + addToTable( + vec, + newConst( + "one", + "A one vector <1,1,1>", + "vector", ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "magnitude", - "Calculates the magnitude of a given vector.", - [ - newSFuncSignature( - "number", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "create", + "Creates a new vector with the given component values", + [ + newSFuncSignature( + "vector", + [ + newArg("x", "x value of vector", "number"), + newArg("y", "y value of vector", "number"), + newArg("z", "z value of vector", "number"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "normalize", - "Computes the normalized version (unit vector) of a given vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "magnitude", + "Calculates the magnitude of a given vector.", + [ + newSFuncSignature( + "number", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "cross", - "Computes the cross product of two vectors.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec1", "", "vector"), - newArg("vec2", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "normalize", + "Computes the normalized version (unit vector) of a given vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "dot", - "Computes the dot product of two vectors.", - [ - newSFuncSignature( - "number", - [ - newArg("vec1", "", "vector"), - newArg("vec2", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "cross", + "Computes the cross product of two vectors.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec1", "", "vector"), + newArg("vec2", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "angle", - "Computes the angle between two vectors in radians. The axis, if specified, is used to determine the sign of the angle.", - [ - newSFuncSignature( - "number", - [ - newArg("vec1", "", "vector"), - newArg("vec2", "", "vector"), - newOArg("axis", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "dot", + "Computes the dot product of two vectors.", + [ + newSFuncSignature( + "number", + [ + newArg("vec1", "", "vector"), + newArg("vec2", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "floor", - "Applies `math.floor` to every component of the input vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "angle", + "Computes the angle between two vectors in radians. The axis, if specified, is used to determine the sign of the angle.", + [ + newSFuncSignature( + "number", + [ + newArg("vec1", "", "vector"), + newArg("vec2", "", "vector"), + newOArg("axis", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "ceil", - "Applies `math.ceil` to every component of the input vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "floor", + "Applies `math.floor` to every component of the input vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "abs", - "Applies `math.abs` to every component of the input vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "ceil", + "Applies `math.ceil` to every component of the input vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "sign", - "Applies `math.sign` to every component of the input vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "abs", + "Applies `math.abs` to every component of the input vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "clamp", - "Applies `math.clamp` to every component of the input vector.", - [ - newSFuncSignature( - "vector", - [ - newArg("vec", "", "vector"), - newArg("min", "", "vector"), - newArg("max", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "sign", + "Applies `math.sign` to every component of the input vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "max", - "Applies `math.max` to the corresponding components of the input vectors.", - [ - newSFuncSignature( - "vector", - [ - newVArg("vecs", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "clamp", + "Applies `math.clamp` to every component of the input vector.", + [ + newSFuncSignature( + "vector", + [ + newArg("vec", "", "vector"), + newArg("min", "", "vector"), + newArg("max", "", "vector"), + ], + ), + ], + ), + ); + + addToTable( + vec, + newVecFunc( + "max", + "Applies `math.max` to the corresponding components of the input vectors.", + [ + newSFuncSignature( + "vector", + [ + newVArg("vecs", "", "vector"), + ], + ), + ], ), - ], - ), - ); - - addToTable( - vec, - newVecFunc( - "min", - "Applies `math.min` to the corresponding components of the input vectors.", - [ - newSFuncSignature( - "vector", - [ - newVArg("vecs", "", "vector"), - ], + ); + + addToTable( + vec, + newVecFunc( + "min", + "Applies `math.min` to the corresponding components of the input vectors.", + [ + newSFuncSignature( + "vector", + [ + newVArg("vecs", "", "vector"), + ], + ), + ], ), - ], - ), - ); + ); - return vec; + return vec; } function buildBit32(): SLuaGlobalTable { - const newBFunc = ( - name: string, - desc: string, - results: SLuaFuncSig[] = [], - ): SLuaFuncDef => { - return newLuauFunc( - "bit32", - name, - desc, - results, - ); - }; - const props: SLuaGlobalTableProps = { - arshift: newBFunc( - "arshift", - "Shifts `n` by `i` bits to the right (if `i` is negative, a left shift is performed instead).\nThe most significant bit of `n` is propagated during the shift.\nWhen `i` is larger than `31`, returns an integer with all bits set to the sign bit of `n`.\nWhen `i` is smaller than `-31`, `0` is returned", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "number to be shifted", "integer"), - newArg("i", "bits to shift by", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newArg("n", "number to be shifted", ["integer", "number"]), - newArg("i", "bits to shift by", ["integer", "number"]), - ], - ), - ], - ), - band: newBFunc( - "band", - "Performs a bitwise and of all input numbers and returns the result.\nIf the function is called with no arguments, an integer with all bits set to `1` is returned.", - [ - newSFuncSignature( - "integer", - [ - newVArg("args", "integers to and together", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newVArg("args", "numbers to and together", ["integer", "number"]), - ], - ), - ], - ), - bnot: newBFunc( - "bnot", - "Returns a bitwise negation of the input number.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "integers to not", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newArg("n", "number to not", ["integer", "number"]), - ], - ), - ], - ), - bor: newBFunc( - "bor", - "Performs a bitwise or of all input numbers and returns the result.\nIf the function is called with no arguments, `0` is returned.", - [ - newSFuncSignature( - "integer", - [ - newVArg("args", "integers to or together", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newVArg("args", "numbers to or together", ["integer", "number"]), - ], - ), - ], - ), - bxor: newBFunc( - "bxor", - "Performs a bitwise xor (exclusive or) of all input numbers and returns the result.\nIf the function is called with no arguments, `0` is returned.", - [ - newSFuncSignature( - "integer", - [ - newVArg("args", "integers to xor together", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newVArg("args", "numbers to xor together", ["integer", "number"]), - ], - ), - ], - ), - btest: newBFunc( - "btest", - "Perform a bitwise and of all input numbers, and return `true` if the result is not `0`.\nIf the function is called with no arguments, `true` is returned.", - [ - newSFuncSignature( - "boolean", - [ - newVArg("args", "values to test together", ["integer", "number"]), - ], - ), - ], - ), - extract: newBFunc( - "extract", - "Extracts bits of `n` at position `f` with `a` width of `w`, and returns the resulting integer.\n`w` defaults to 1, so a two-argument version of extract returns the bit value at position `f`.\nBits are indexed starting at `0`.\nErrors if `f` and `f+w-1` are not between `0` and `31`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("f", "", "integer"), - newArg("w", "", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("f", "", ["integer", "number"]), - newArg("w", "", ["integer", "number"]), - ], - ), - ], - ), - lrotate: newBFunc( - "lrotate", - "Rotates `n` to the left by `i` bits (if `i` is negative, a right rotate is performed instead)\nThe bits that are shifted past the bit width are shifted back from the right.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("i", "", "integer"), - ], - ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("i", "", ["integer", "number"]), - ], + const newBFunc = ( + name: string, + desc: string, + results: SLuaFuncSig[] = [], + ): SLuaFuncDef => { + return newLuauFunc( + "bit32", + name, + desc, + results, + ); + }; + const props: SLuaGlobalTableProps = { + arshift: newBFunc( + "arshift", + "Shifts `n` by `i` bits to the right (if `i` is negative, a left shift is performed instead).\nThe most significant bit of `n` is propagated during the shift.\nWhen `i` is larger than `31`, returns an integer with all bits set to the sign bit of `n`.\nWhen `i` is smaller than `-31`, `0` is returned", + [ + newSFuncSignature( + "number", + [ + newArg("n", "number to be shifted", "number"), + newArg("i", "bits to shift by", "number"), + ], + ), + ], ), - ], - ), - lshift: newBFunc( - "lshift", - "Shifts `n` to the left by `i` bits (if `i` is negative, a right shift is performed instead).\nWhen `i` is outside of `[-31..31]` range, returns `0`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("i", "", "integer"), - ], + band: newBFunc( + "band", + "Performs a bitwise and of all input numbers and returns the result.\nIf the function is called with no arguments, an integer with all bits set to `1` is returned.", + [ + newSFuncSignature( + "number", + [ + newVArg("args", "numbers to and together", "number"), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("i", "", ["integer", "number"]), - ], + bnot: newBFunc( + "bnot", + "Returns a bitwise negation of the input number.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "number to not", "number"), + ], + ), + ], ), - ], - ), - replace: newBFunc( - "replace", - "Replaces bits of `n` at position `f` and width `w` with `r`, and returns the resulting integer.\n`w` defaults to `1`, so a three-argument version of replace changes one bit at position `f` to `r` (which should be `0` or `1`) and returns the result.\nBits are indexed starting at `0`.\nErrors if `f` and `f+w-1` are not between `0` and `31`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("r", "", "integer"), - newArg("f", "", "integer"), - newOArg("w", "", "integer"), - ], + bor: newBFunc( + "bor", + "Performs a bitwise or of all input numbers and returns the result.\nIf the function is called with no arguments, `0` is returned.", + [ + newSFuncSignature( + "number", + [ + newVArg("args", "numbers to or together", "number"), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("r", "", ["integer", "number"]), - newArg("f", "", ["integer", "number"]), - newOArg("w", "", ["integer", "number"]), - ], + bxor: newBFunc( + "bxor", + "Performs a bitwise xor (exclusive or) of all input numbers and returns the result.\nIf the function is called with no arguments, `0` is returned.", + [ + newSFuncSignature( + "number", + [ + newVArg("args", "numbers to xor together", "number"), + ], + ), + ], ), - ], - ), - rrotate: newBFunc( - "rrotate", - "Rotates `n` to the right by `i` bits (if `i` is negative, a left rotate is performed instead)\nThe bits that are shifted past the bit width are shifted back from the left.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("i", "", "integer"), - ], + btest: newBFunc( + "btest", + "Perform a bitwise and of all input numbers, and return `true` if the result is not `0`.\nIf the function is called with no arguments, `true` is returned.", + [ + newSFuncSignature( + "boolean", + [ + newVArg("args", "values to test together", "number"), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("i", "", ["integer", "number"]), - ], + extract: newBFunc( + "extract", + "Extracts bits of `n` at position `f` with `a` width of `w`, and returns the resulting integer.\n`w` defaults to 1, so a two-argument version of extract returns the bit value at position `f`.\nBits are indexed starting at `0`.\nErrors if `f` and `f+w-1` are not between `0` and `31`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", "number"), + newArg("f", "", "number"), + newArg("w", "", "number"), + ], + ), + ], ), - ], - ), - rshift: newBFunc( - "rshift", - "Shifts `n` to the right by `i` bits (if `i` is negative, a left shift is performed instead).\nWhen `i` is outside of `[-31..31]` range, returns `0`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - newArg("i", "", "integer"), - ], + lrotate: newBFunc( + "lrotate", + "Rotates `n` to the left by `i` bits (if `i` is negative, a right rotate is performed instead)\nThe bits that are shifted past the bit width are shifted back from the right.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", "number"), + newArg("i", "", "number"), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - newArg("i", "", ["integer", "number"]), - ], + lshift: newBFunc( + "lshift", + "Shifts `n` to the left by `i` bits (if `i` is negative, a right shift is performed instead).\nWhen `i` is outside of `[-31..31]` range, returns `0`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", "number"), + newArg("i", "", "number"), + ], + ), + ], ), - ], - ), - countlz: newBFunc( - "countlz", - "Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the left-most (most significant) bit.\nReturns `32` if `n` is `0`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - ], + replace: newBFunc( + "replace", + "Replaces bits of `n` at position `f` and width `w` with `r`, and returns the resulting integer.\n`w` defaults to `1`, so a three-argument version of replace changes one bit at position `f` to `r` (which should be `0` or `1`) and returns the result.\nBits are indexed starting at `0`.\nErrors if `f` and `f+w-1` are not between `0` and `31`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", "number"), + newArg("r", "", "number"), + newArg("f", "", "number"), + newOArg("w", "", "number"), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - ], + rrotate: newBFunc( + "rrotate", + "Rotates `n` to the right by `i` bits (if `i` is negative, a left rotate is performed instead)\nThe bits that are shifted past the bit width are shifted back from the left.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", ["number"]), + newArg("i", "", ["number"]), + ], + ), + ], ), - ], - ), - countrz: newBFunc( - "countrz", - "Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the right-most (least significant) bit.\nReturns `32` if `n` is `0`.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - ], + rshift: newBFunc( + "rshift", + "Shifts `n` to the right by `i` bits (if `i` is negative, a left shift is performed instead).\nWhen `i` is outside of `[-31..31]` range, returns `0`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", ["number"]), + newArg("i", "", ["number"]), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - ], + countlz: newBFunc( + "countlz", + "Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the left-most (most significant) bit.\nReturns `32` if `n` is `0`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", ["number"]), + ], + ), + ], ), - ], - ), - byteswap: newBFunc( - "byteswap", - "Returns n with the order of the bytes swapped.", - [ - newSFuncSignature( - "integer", - [ - newArg("n", "", "integer"), - ], + countrz: newBFunc( + "countrz", + "Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the right-most (least significant) bit.\nReturns `32` if `n` is `0`.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", ["number"]), + ], + ), + ], ), - newSFuncSignature( - "number", - [ - newArg("n", "", ["integer", "number"]), - ], + byteswap: newBFunc( + "byteswap", + "Returns n with the order of the bytes swapped.", + [ + newSFuncSignature( + "number", + [ + newArg("n", "", ["number"]), + ], + ), + ], ), - ], - ), - }; - return { - def: "table", - name: "bit32", - props, - }; + }; + return { + def: "table", + name: "bit32", + props, + }; } -function builtInSluaTypes(): StrObj { - return { - "numeric": { - name: "numeric", - desc: - "numeric type to genericize for functions that accept any numric type", - type: "number|boolean|integer", - }, - "list": { - name: "list", - desc: - "a table type to try and restrict LL functions that only accept flat lists", - type: "{[number]:(string|number|integer|vector|uuid|quaternion|boolean)}", - }, - "lljson_constant": { - name: "lljson_constant", - desc: "A set of constants for changing json encode output", - type: "number", - }, - }; +const detectedEventNames: string[] = [ + "touch_start", + "touch_end", + "touch", + "collision_start", + "collision", + "collision_end", + "sensor", + "on_damage", + "final_damage", +]; + +function builtInSluaTypes(lslEvents: EventDefs): StrObj { + const [_eventNames, nonDetectedEventNames] = getSplitEventNames(lslEvents); + + return { + "numeric": { + name: "numeric", + desc: + "numeric type to genericize for functions that accept any numric type", + type: [ + castType("boolean"), + castType("number"), + ], + }, + "list": { + name: "list", + desc: + "a table type to try and restrict LL functions that only accept flat lists", + type: newTableType([ + "string", + "number", + "vector", + "uuid", + "quaternion", + "boolean", + ]), + }, + "lljson_constant": { + name: "lljson_constant", + desc: "A set of constants for changing json encode output", + type: castType("number"), + }, + DetectedEvent: buildDetectedEvent(), + DetectedEventName: { + name: "DetectedEventName", + desc: "Event names", + type: newValueTypeArray(detectedEventNames.map((v) => `"${v}"`)), + }, + NonDetectedEventName: { + name: "NonDetectedEventName", + desc: "Event Names", + type: newValueTypeArray(nonDetectedEventNames.map((v) => `"${v}"`)), + }, + EventName: { + name: "EventName", + desc: "Event Names", + type: [ + newCustomType("DetectedEventName"), + newCustomType("NonDetectedEventName"), + ], + }, + EventHandler: { + name: "EventHandler", + desc: "EventHandler Type", + type: { + def: "function", + value: newSFuncSignature( + "()", + [ + newVArg( + "", + "", + "any", + ), + ], + ), + }, + }, + DetectedEventHandler: { + name: "DetectedEventHandler", + desc: "DetectedEventHandler Type", + type: { + def: "function", + value: newSFuncSignature( + "()", + [ + newArg( + "", + "", + newTableType(newCustomType("DetectedEvent")), + ), + ], + ), + }, + }, + // Events + "LLEventsProto": { + name: "LLEventsProto", + desc: "Type of events class", + type: { + def: "class", + value: buildSLuaEventsFromLSL(lslEvents), + }, + }, + "LLTimersProto": { + name: "LLTimersProto", + desc: "Type of timers class", + type: { + def: "class", + value: buildSLuaTimersProto(), + }, + }, + }; +} + +function buildDetectedEvent(): SLuaTypeDef { + const newDetectedFunc = ( + name: string, + desc: string, + type: flexiSluaBaseType, + ) => { + return newFuncSelf( + name, + desc, + "", + [ + newSFuncSignature(type), + ], + "DetectedEvent", + ); + }; + + const value: SLuaClassDef = { + def: "class", + name: "DetectedEvent", + props: { + valid: newReadOnlyProp("valid", "", "boolean"), + index: newReadOnlyProp("index", "", "number"), + can_change_damage: newReadOnlyProp( + "can_change_damage", + "", + "boolean", + ), + }, + funcs: { + getOwner: newDetectedFunc("getOwner", "DetectedOwner", "uuid"), + getName: newDetectedFunc("getName", "ll.DetectedName", "string"), + getKey: newDetectedFunc("getKey", "ll.DetectedKey", "uuid"), + getTouchFace: newDetectedFunc( + "getTouchFace", + "ll.DetectedTouchFace", + "number", + ), + getLinkNumber: newDetectedFunc( + "getLinkNumber", + "ll.DetectedLinkNumber", + "number", + ), + getGrab: newDetectedFunc("getGrab", "ll.DetectedGrab", "vector"), + getGroup: newDetectedFunc( + "getGroup", + "ll.DetectedGroup", + "boolean", + ), + getPos: newDetectedFunc("getPos", "ll.DetectedPos", "vector"), + getRot: newDetectedFunc("getRot", "ll.DetectedRot", quaternion), + getTouchBinormal: newDetectedFunc( + "getTouchBinormal", + "ll.DetectedTouchBinormal", + "vector", + ), + getTouchNormal: newDetectedFunc( + "getTouchNormal", + "ll.DetectedTouchNormal", + "vector", + ), + getTouchPos: newDetectedFunc( + "getTouchPos", + "DetectedTouchPos", + "vector", + ), + getTouchST: newDetectedFunc( + "getTouchST", + "ll.DetectedTouchST", + "vector", + ), + getTouchUV: newDetectedFunc( + "getTouchUV", + "ll.DetectedTouchUV", + "vector", + ), + getType: newDetectedFunc("getType", "DetectedType", "number"), + getVel: newDetectedFunc("getVel", "ll.DetectedVel", "vector"), + getRezzer: newDetectedFunc( + "getRezzer", + "ll.DetectedRezzer", + "uuid", + ), + }, + }; + + return { + name: "DetectedEvent", + desc: "Detected Event Object", + type: { + def: "class", + value, + }, + }; +} + +function buildSLuaTimersProto(): SLuaClassDef { + return { + def: "class", + name: "LLTimersProto", + funcs: { + every: newFuncImpureSelf( + "every", + "Start a timer that ticks at defined interval", + null, + [ + newSFuncSignature( + EventHandler, + [ + newArg("seconds", "interval in seconds", "number"), + newArg("handler", "handler function", EventHandler), + ], + ), + ], + "LLTimersProto", + ), + once: newFuncImpureSelf( + "once", + "Execute a function once after a defined delay", + null, + [ + newSFuncSignature( + EventHandler, + [ + newArg("seconds", "delay in seconds", "number"), + newArg("handler", "handler function", EventHandler), + ], + ), + ], + "LLTimersProto", + ), + off: newFuncImpureSelf( + "off", + "Cancel a timer or delay", + null, + [ + newSFuncSignature( + "boolean", + [ + newArg("handler", "handler function", EventHandler), + ], + ), + ], + "LLTimersProto", + ), + }, + props: {}, + }; } function builtInSluaFuncs(): StrObj { - return { - [integer]: newNoUrlFunc(integer, "Creates an integer value from argument", [ - newSFuncSignature(integer, [ - newArg( - "value", - "value to be convetered to an integer", - ["string", "number"], + return { + // [integer]: newNoUrlFunc(integer, "Creates an integer value from argument", [ + // newSFuncSignature(integer, [ + // newArg( + // "value", + // "value to be convetered to an integer", + // ["string", "number"], + // ), + // ]), + // ]), + [uuid]: newNoUrlFunc(uuid, "Creates a uuid from a string argument", [ + newSFuncSignature(uuid, [ + newArg( + "str", + "string to create uuid from", + "string", + ), + ]), + ]), + toquaternion: newNoUrlFunc( + "toquaternion", + "Creates a quaternion from a string argument in format `<1,1,1,1>`\n\nInvalid strings will return `nil`\n\n#### Caveat\n\nDue to an old error from lsl strings that match upto the closing `>` are interpreted as valid\n\nSo `<1,1,1,1` and `<1,1,1,1spoon` are both cast to `<1,1,1,1>`\n\nWhen testing if a string is a quaternion or a vector, you should test with `toquaternion` first.", + [ + newSFuncSignature([quaternion, "nil"], [ + newArg( + "str", + `string to create ${quaternion} from`, + "string", + ), + ]), + ], ), - ]), - ]), - [uuid]: newNoUrlFunc(uuid, "Creates a uuid from a string argument", [ - newSFuncSignature(uuid, [ - newArg( - "str", - "string to create uuid from", - "string", + tovector: newNoUrlFunc( + "tovector", + "Creates a vector from a string argument in format `<1,1,1>`\n\nInvalid strings will return `nil`\n\n#### Caveat\n\nDue to an old error from lsl strings that match upto the closing `>` are interpreted as valid\n\nSo `<1,1,1`, `<1,1,1,1` and `<1,1,1spoon` are all cast to `<1,1,1>`\n\nWhen testing if a string is a quaternion or a vector, you should test with `toquaternion` first.", + [ + newSFuncSignature(["vector", "nil"], [ + newArg( + "str", + "string to create vector from", + "string", + ), + ]), + ], ), - ]), - ]), - toquaternion: newNoUrlFunc( - "toquaternion", - "Creates a quaternion from a string argument in format `<1,1,1,1>`\n\nInvalid strings will return `nil`\n\n#### Caveat\n\nDue to an old error from lsl strings that match upto the closing `>` are interpreted as valid\n\nSo `<1,1,1,1` and `<1,1,1,1spoon` are both cast to `<1,1,1,1>`\n\nWhen testing if a string is a quaternion or a vector, you should test with `toquaternion` first.", - [ - newSFuncSignature([quaternion, "nil"], [ - newArg( - "str", - `string to create ${quaternion} from`, - "string", - ), - ]), - ], - ), - tovector: newNoUrlFunc( - "tovector", - "Creates a vector from a string argument in format `<1,1,1>`\n\nInvalid strings will return `nil`\n\n#### Caveat\n\nDue to an old error from lsl strings that match upto the closing `>` are interpreted as valid\n\nSo `<1,1,1`, `<1,1,1,1` and `<1,1,1spoon` are all cast to `<1,1,1>`\n\nWhen testing if a string is a quaternion or a vector, you should test with `toquaternion` first.", - [ - newSFuncSignature(["vector", "nil"], [ - newArg( - "str", - "string to create vector from", - "string", - ), - ]), - ], - ), - [quaternion]: newNoUrlFunc( - quaternion, - "Creates a quaternion from x,y,z,s", - [ - newSFuncSignature(quaternion, [ - newArg( - "x", - "x value of quaternion", - "number", - ), - newArg( - "y", - "y value of quaternion", - "number", - ), - newArg( - "z", - "z value of quaternion", - "number", - ), - newArg( - "s", - "s value of quaternion", - "number", - ), - ]), - ], - ), - }; + [quaternion]: newNoUrlFunc( + quaternion, + "Creates a quaternion from x,y,z,s", + [ + newSFuncSignature(quaternion, [ + newArg( + "x", + "x value of quaternion", + "number", + ), + newArg( + "y", + "y value of quaternion", + "number", + ), + newArg( + "z", + "z value of quaternion", + "number", + ), + newArg( + "s", + "s value of quaternion", + "number", + ), + ]), + ], + ), + }; } function builtInSluaClasses(): StrObj { - const selfArg = newArg("self", "", "self"); - const newSelfFuncSig = function ( - result: SLuaBaseType | SLuaBaseType[], - arg: SLuaType, - ) { - return newSFuncSignature(result, [ - selfArg, - newArg("other", "", arg), - ]); - }; - const classes: StrObj = {}; - classes["uuid"] = { - def: "class", - name: "uuid", - props: { - istruthy: newConst( - "istruthy", - "property to check if uuid is valid", - "boolean", - ), - }, - funcs: { - "__tostring": newNoUrlFunc( - "__tostring", - "converts uuid to a string", - [ - newSFuncSignature("string", [selfArg]), - ], - ), - }, - }; - classes[quaternion] = { - def: "class", - name: quaternion, - props: { - x: newConst( - "x", - `x property of ${quaternion}`, - "number", - ), - y: newConst( - "y", - `y property of ${quaternion}`, - "number", - ), - z: newConst( - "z", - `z property of ${quaternion}`, - "number", - ), - s: newConst( - "s", - `s property of ${quaternion}`, - "number", - ), - }, - funcs: { - "__mul": newNoUrlFunc( - "__mul", - "multiply vector/quaternion by quaternion", - [ - newSFuncSignature("vector", [ + const selfArg = newArg("self", "", "self"); + const newSelfFuncSig = function ( + result: flexiSluaBaseType, + arg: flexiSluaBaseType, + ) { + return newSFuncSignature(result, [ selfArg, - newArg("other", "", "vector"), - ]), - newSFuncSignature("quaternion", [ - selfArg, - newArg("other", "", "quaternion"), - ]), - ], - ), - }, - }; - classes.vector = { - def: "class", - name: "vector", - props: { - x: newConst( - "x", - `x property of vector`, - "number", - ), - y: newConst( - "y", - `y property of vector`, - "number", - ), - z: newConst( - "z", - `z property of vector`, - "number", - ), - }, - funcs: { - "__mul": newNoUrlFunc( - "__mul", - "multiply vector by number, vector, or quaternion", - [ - newSelfFuncSig("vector", "vector"), - newSelfFuncSig("vector", quaternion), - newSelfFuncSig("vector", "number"), - ], - ), - "__div": newNoUrlFunc( - "__div", - "divide vector by number, vector, or quaternion", - [ - newSelfFuncSig("vector", "vector"), - newSelfFuncSig("vector", quaternion), - newSelfFuncSig("vector", "number"), - ], - ), - "__idiv": newNoUrlFunc( - "__idiv", - "floor divide vector by number, vector, or quaternion", - [ - newSelfFuncSig("vector", "vector"), - newSelfFuncSig("vector", quaternion), - newSelfFuncSig("vector", "number"), - ], - ), - "__add": newNoUrlFunc( - "__add", - "add two vectors", - [ - newSelfFuncSig("vector", "vector"), - ], - ), - "__sub": newNoUrlFunc( - "__sub", - "subtract vector from vector", - [ - newSelfFuncSig("vector", "vector"), - ], - ), - "__unm": newNoUrlFunc( - "__unm", - "negate a vector", - [ - newSFuncSignature("vector", [selfArg]), - ], - ), - }, - }; - const iSelfNI = [ - newSelfFuncSig(integer, integer), - newSelfFuncSig("number", "number"), - ]; - classes[integer] = { - def: "class", - name: integer, - props: {}, - funcs: { - "__add": newNoUrlFunc( - "__add", - "Meta function to allow for '+' operation", - iSelfNI, - ), - "__sub": newNoUrlFunc( - "__sub", - "Meta function to allow for '-' operation", - iSelfNI, - ), - "__mul": newNoUrlFunc( - "__mul", - "Meta function to allow for '*' operation", - iSelfNI, - ), - "__div": newNoUrlFunc( - "__div", - "Meta function to allow for '/' operation", - [ - newSelfFuncSig("number", integer), - newSelfFuncSig("number", "number"), - ], - ), - "__unm": newNoUrlFunc( - "__unm", - "Meta function to allow for '-' negation", + newArg("other", "", arg), + ]); + }; + const classes: StrObj = {}; + classes["uuid"] = { + def: "class", + name: "uuid", + props: { + istruthy: newReadOnlyProp( + "istruthy", + "property to check if uuid is valid", + "boolean", + ), + }, + funcs: { + "__tostring": newNoUrlFunc( + "__tostring", + "converts uuid to a string", + [ + newSFuncSignature("string", [selfArg]), + ], + ), + }, + }; + classes[quaternion] = { + def: "class", + name: quaternion, + props: { + x: newReadOnlyProp( + "x", + `x property of ${quaternion}`, + "number", + ), + y: newReadOnlyProp( + "y", + `y property of ${quaternion}`, + "number", + ), + z: newReadOnlyProp( + "z", + `z property of ${quaternion}`, + "number", + ), + s: newReadOnlyProp( + "s", + `s property of ${quaternion}`, + "number", + ), + }, + funcs: { + "__mul": newNoUrlFunc( + "__mul", + "multiply vector/quaternion by quaternion", + [ + newSFuncSignature("vector", [ + selfArg, + newArg("other", "", "vector"), + ]), + newSFuncSignature("quaternion", [ + selfArg, + newArg("other", "", "quaternion"), + ]), + ], + ), + }, + }; + classes.vector = { + def: "class", + name: "vector", + props: { + x: newReadOnlyProp( + "x", + `x property of vector`, + "number", + ), + y: newReadOnlyProp( + "y", + `y property of vector`, + "number", + ), + z: newReadOnlyProp( + "z", + `z property of vector`, + "number", + ), + }, + funcs: { + "__mul": newNoUrlFunc( + "__mul", + "multiply vector by number, vector, or quaternion", + [ + newSelfFuncSig("vector", "vector"), + newSelfFuncSig("vector", quaternion), + newSelfFuncSig("vector", "number"), + ], + ), + "__div": newNoUrlFunc( + "__div", + "divide vector by number, vector, or quaternion", + [ + newSelfFuncSig("vector", "vector"), + newSelfFuncSig("vector", quaternion), + newSelfFuncSig("vector", "number"), + ], + ), + "__idiv": newNoUrlFunc( + "__idiv", + "floor divide vector by number, vector, or quaternion", + [ + newSelfFuncSig("vector", "vector"), + newSelfFuncSig("vector", quaternion), + newSelfFuncSig("vector", "number"), + ], + ), + "__add": newNoUrlFunc( + "__add", + "add two vectors", + [ + newSelfFuncSig("vector", "vector"), + ], + ), + "__sub": newNoUrlFunc( + "__sub", + "subtract vector from vector", + [ + newSelfFuncSig("vector", "vector"), + ], + ), + "__unm": newNoUrlFunc( + "__unm", + "negate a vector", + [ + newSFuncSignature("vector", [selfArg]), + ], + ), + }, + }; + // const iSelfNI = [ + // newSelfFuncSig(integer, integer), + // newSelfFuncSig("number", "number"), + // ]; + // classes[integer] = { + // def: "class", + // name: integer, + // props: {}, + // funcs: { + // "__add": newNoUrlFunc( + // "__add", + // "Meta function to allow for '+' operation", + // iSelfNI, + // ), + // "__sub": newNoUrlFunc( + // "__sub", + // "Meta function to allow for '-' operation", + // iSelfNI, + // ), + // "__mul": newNoUrlFunc( + // "__mul", + // "Meta function to allow for '*' operation", + // iSelfNI, + // ), + // "__div": newNoUrlFunc( + // "__div", + // "Meta function to allow for '/' operation", + // [ + // newSelfFuncSig("number", integer), + // newSelfFuncSig("number", "number"), + // ], + // ), + // "__unm": newNoUrlFunc( + // "__unm", + // "Meta function to allow for '-' negation", + // [ + // newSFuncSignature("integer", [selfArg]), + // ], + // ), + // "__mod": newNoUrlFunc( + // "__mod", + // "Meta function to allow for '%' operation", + // iSelfNI, + // ), + // "__pow": newNoUrlFunc( + // "__pow", + // "Meta function to allow for '^' operation", + // iSelfNI, + // ), + // "__idiv": newNoUrlFunc( + // "__idiv", + // "Meta function to allow for '//' operation", + // iSelfNI, + // ), + // "__eq": newNoUrlFunc( + // "__eq", + // "Meta function to allow for '==' operation", + // [ + // newSFuncSignature("integer", [ + // selfArg, + // newArg("other", "", "integer"), + // ]), + // ], + // ), + // "__lt": newNoUrlFunc( + // "__lt", + // "Meta function to allow for '<' and '>' operation", + // [ + // newSFuncSignature("integer", [ + // selfArg, + // newArg("other", "", "integer"), + // ]), + // ], + // ), + // "__le": newNoUrlFunc( + // "__le", + // "Meta function to allow for '<=' and '>=' operation", + // [ + // newSFuncSignature("integer", [ + // selfArg, + // newArg("other", "", "integer"), + // ]), + // ], + // ), + // }, + // }; + return classes; +} + +function buildSLuaConstsFromLSL(lslConsts: ConstDefs): StrObj { + const consts: StrObj = {}; + for (const key in lslConsts) { + const lslCon = lslConsts[key]; + const con = newConstFromLSL(lslCon); + consts[con.name] = con; + } + return Object.keys(consts).sort().reduce( + (obj: StrObj, key): StrObj => { + obj[key] = consts[key]; + return obj; + }, + {}, + ); +} + +function getSplitEventNames(lslEvents: EventDefs): [string[], string[]] { + const eventNames: string[] = []; + + for (const key in lslEvents) { + const { name, args, desc, link, ...lslFunc } = lslEvents[key]; + if (name == "timer" || name.startsWith("state_")) continue; + eventNames.push(name); + } + + detectedEventNames.sort(); + + const nonDetectedEventNames: string[] = eventNames.filter((n) => + !detectedEventNames.includes(n) + ); + eventNames.sort(); + nonDetectedEventNames.sort(); + return [eventNames, nonDetectedEventNames]; +} + +function buildSLuaEventsFromLSL(lslEvents: EventDefs): SLuaClassDef { + const funcs: StrObj = {}; + // const props: StrObj = {}; + + // for (const key in lslEvents) { + // const { name, args, desc, link, ...lslFunc } = lslEvents[key]; + // if (name == "timer") continue; + + // const prop: SLuaConstDef = { + // def: "const", + // desc, + // link, + // name, + // type: { def: "simple", value: "nil" }, + // valueRaw: null, + // value: null, + // }; + + // props[prop.name] = prop; + // } + + funcs.eventNames = newFuncSelf( + "eventNames", + "List event names of currently registered event handlers", + "", [ - newSFuncSignature("integer", [selfArg]), + newSFuncSignature( + newTableType("string"), + [], + ), ], - ), - "__mod": newNoUrlFunc( - "__mod", - "Meta function to allow for '%' operation", - iSelfNI, - ), - "__pow": newNoUrlFunc( - "__pow", - "Meta function to allow for '^' operation", - iSelfNI, - ), - "__idiv": newNoUrlFunc( - "__idiv", - "Meta function to allow for '//' operation", - iSelfNI, - ), - "__eq": newNoUrlFunc( - "__eq", - "Meta function to allow for '==' operation", + "LLEventsProto", + ); + + funcs.listeners = newFuncSelf( + "listeners", + "Get set handlers for event name", + null, [ - newSFuncSignature("integer", [ - selfArg, - newArg("other", "", "integer"), - ]), + newSFuncSignature( + newTableType(newCustomType("EventHandler")), + [ + newArg( + "eventName", + "name of the Event to hook", + newCustomType("EventName"), + ), + ], + ), ], - ), - "__lt": newNoUrlFunc( - "__lt", - "Meta function to allow for '<' and '>' operation", + "LLEventsProto", + ); + + funcs.on = newFuncImpureSelf( + "on", + "Method for hooking event by name", + null, [ - newSFuncSignature("integer", [ - selfArg, - newArg("other", "", "integer"), - ]), + newSFuncSignature( + EventHandler, + [ + newArg( + "eventName", + "name of the Event to hook", + newCustomType("DetectedEventName"), + ), + newArg( + "handler", + "The name of the function to handle the event", + DetectedEventHandler, + ), + ], + ), + newSFuncSignature( + EventHandler, + [ + newArg( + "eventName", + "name of the Event to hook", + newCustomType("NonDetectedEventName"), + ), + newArg( + "handler", + "The name of the function to handle the event", + EventHandler, + ), + ], + ), ], - ), - "__le": newNoUrlFunc( - "__le", - "Meta function to allow for '<=' and '>=' operation", + "LLEventsProto", + ); + funcs.off = newFuncImpureSelf( + "off", + "Clear a event handler", + null, [ - newSFuncSignature("integer", [ - selfArg, - newArg("other", "", "integer"), - ]), + newSFuncSignature( + "boolean", + [ + newArg( + "handler", + "The name of the function to handle the event", + EventHandler, + ), + ], + ), ], - ), - }, - }; - return classes; -} - -function buildSLuaConstsFromLSL(lslConsts: ConstDefs): StrObj { - const consts: StrObj = {}; - for (const key in lslConsts) { - const lslCon = lslConsts[key]; - const con = newConstFromLSL(lslCon); - consts[con.name] = con; - } - return Object.keys(consts).sort().reduce( - (obj: StrObj, key): StrObj => { - obj[key] = consts[key]; - return obj; - }, - {}, - ); -} - -function buildSLuaEventsFromLSL(lslEvents: EventDefs): StrObj { - const events: StrObj = {}; - for (const key in lslEvents) { - const lslEvent = lslEvents[key]; - if (lslEvent.name.startsWith("state_")) continue; - const event: SLuaEventDef = { - def: "event", - name: lslEvent.name, - args: remapLSLFuncArgs(lslEvent.args), - desc: lslEvent.desc, - link: lslEvent.link, + "LLEventsProto", + ); + // const events: StrObj = {}; + // for (const key in lslEvents) { + // const lslEvent = lslEvents[key]; + // if (lslEvent.name.startsWith("state_")) continue; + // const event: SLuaEventDef = { + // def: "event", + // name: lslEvent.name, + // args: remapLSLFuncArgs(lslEvent.args), + // desc: lslEvent.desc, + // link: lslEvent.link, + // }; + // events[event.name] = event; + // } + return { + def: "class", + name: "LLEventsProto", + funcs, + props: {}, }; - events[event.name] = event; - } - return Object.keys(events).sort().reduce( - (obj: StrObj, key): StrObj => { - obj[key] = events[key]; - return obj; - }, - {}, - ); } function buildSLuaGlobalsFromLSL(lsl: LSLDef): SLuaGlobal { - const global: SLuaGlobal = { - ll: buildSLuaLLFuncsFromLSL(lsl.functions), - }; - return global; + const global: SLuaGlobal = { + ll: buildSLuaLLFuncsFromLSL(lsl.functions), + }; + return global; } function buildSLuaLLFuncsFromLSL(lslFuncs: FuncDefs): SLuaGlobalTable { - const props: SLuaGlobalTableProps = {}; - for (const key in lslFuncs) { - const { name, result, args, ...lslFunc } = lslFuncs[key]; - const func: SLuaFuncDef = { - ...lslFunc, - name: name.substring(2), - signatures: [ - newSFuncSignature( - remapLSLReturnType(result), - remapLSLFuncArgs(args), - ), - ], + const props: SLuaGlobalTableProps = {}; + for (const key in lslFuncs) { + const { name, result, args, ...lslFunc } = lslFuncs[key]; + const func: SLuaFuncDef = { + ...lslFunc, + takesSelf: false, + name: name.substring(2), + signatures: [ + newSFuncSignature( + remapLSLReturnType(result), + remapLSLFuncArgs(args), + ), + ], + }; + + props[func.name] = func; + } + return { + def: "table", + name: "ll", + props, }; - - props[func.name] = func; - } - return { - def: "table", - name: "ll", - props, - }; } function remapLSLFuncArgs(lslArgs: FuncArgs): SLuaFuncArgs { - const args: SLuaFuncArgs = []; - for (const lslArg of lslArgs) { - args.push( - newArg( - lslArg.name, - lslArg.desc, - remapLSLArgType(lslArg.type), - ), - ); - } - return args; + const args: SLuaFuncArgs = []; + for (const lslArg of lslArgs) { + args.push( + newArg( + lslArg.name, + lslArg.desc, + remapLSLArgType(lslArg.type), + ), + ); + } + return args; } function remapLSLArgTypeLoose( - type: string | null, + type: string | null, ): SLuaType { - const ntype = remapLSLArgTypeStrict(type); - switch (ntype) { - case "integer": - case "number": - case "boolean": - return "numeric" as SLuaType; - default: - return ntype; - } + let ntype = remapLSLArgTypeStrict(type); + if (!(ntype instanceof Array)) ntype = [ntype]; + const otype = []; + for (const i in ntype) { + const nt = ntype[i]; + if (nt.def == "simple") { + if (nt.value == "number" || nt.value == "boolean") { + otype.push(newSimpleType("numeric")); + continue; + } + } + otype.push(nt); + } + const rtype: SLuaType = []; + const seen = new Set(); + for (const ot of otype) { + const k = `${ot.def}::${ot.value}`; + if (!seen.has(k)) { + seen.add(k); + rtype.push(ot); + } + } + return rtype.length > 1 ? rtype : rtype[0]; } function remapLSLArgTypeStrict( - rtype: string | null, + rtype: string | null, ): SLuaType { - const type = remapLSLType(rtype); - switch (type) { - case integer: - return [integer, "number"]; - case uuid: - return [uuid, "string"]; - default: - return type as SLuaBaseType; - } + const type = remapLSLType(rtype); + if (type.def == "simple") { + if (type.value == "uuid") { + return castTypeArray([uuid, "string"]); + } + } + return type; } function remapLSLReturnType(rtype: string | null): SLuaType { - const type = remapLSLType(rtype); - switch (type) { - case integer: - return `number`; - default: - return type as SLuaType; - } + const type = remapLSLType(rtype); + switch (type) { + // case integer: + // return `number`; + default: + return type; + } } function remapLSLConstType(rtype: string | null): SLuaBaseType { - const type = remapLSLType(rtype); - switch (type) { - case "integer": - return "number"; - default: - return type; - } + const type = remapLSLType(rtype); + switch (type) { + // case integer: + // return "number"; + default: + return type; + } } function remapLSLType(type: string | null): SLuaBaseType { - switch (type) { - case "integer": - return integer; - case "float": - return "number"; - case "void": - return "()"; - case "list": - return "list"; - case "rotation": - return quaternion; - case "null": - return "nil"; - case "key": - return uuid; - case "string": - return "string"; - case "vector": - return "vector"; - default: - console.trace(); - throw `Unknown Type ${type}`; - } + const t = __remapLSLType(type); + return castType(t); +} + +function __remapLSLType(type: string | null): SLuaSimpleTypeValue { + switch (type) { + case "integer": + // return integer; + case "float": + return "number"; + case "void": + return "()"; + case "list": + return "list"; + case "rotation": + return quaternion; + case "null": + return "nil"; + case "key": + return uuid; + case "string": + return "string"; + case "vector": + return "vector"; + default: + console.trace(); + throw `Unknown Type ${type}`; + } } diff --git a/src/slua/slua-md-gen.ts b/src/slua/slua-md-gen.ts index e59e48f..cf00b07 100644 --- a/src/slua/slua-md-gen.ts +++ b/src/slua/slua-md-gen.ts @@ -3,364 +3,407 @@ import * as path from "jsr:@std/path"; // @deno-types="npm:@types/ejs" import ejs from "npm:ejs"; import { - buildSluaJson, - SLuaClassDef, - SLuaConstDef, - SLuaDef, - SLuaFuncDef, - SLuaGlobal, - SLuaGlobalTable, - SLuaGlobalTableProps, + buildSluaJson, + SLua, + SLuaClassDef, + SLuaConstDef, + SLuaDef, + SLuaFuncDef, + SLuaGlobal, + SLuaGlobalTable, + SLuaGlobalTableProps, } from "./slua-json-gen.ts"; import { - generateCombinedDefinition, - generatePreferedCodeSample, + classDefToTableDef, + generatePreferedCodeSample, + generateStringDefinitions, + isTypeCustom, } from "./slua-common.ts"; // import { create as markdown } from "npm:markdown-to-html-cli"; import { generate as markdown } from "../markdown-2-html.ts"; +import { StrObj } from "../types.d.ts"; const import_dirname = import.meta.dirname; if (typeof import_dirname != "string") { - throw new Error("Failed to get import dir"); + throw new Error("Failed to get import dir"); } const templatePath = path.join( - import_dirname, - "..", - "..", - "templates", - "slua", + import_dirname, + "..", + "..", + "templates", + "slua", ); const ejsCache: { [k: string]: string } = {}; ejs.fileLoader = function (filePath) { - const resolvedPath = path.resolve(filePath); - if (!resolvedPath.startsWith(templatePath)) { - throw new Error("Bad template"); - } - if (ejsCache[resolvedPath]) return ejsCache[resolvedPath]; - ejsCache[resolvedPath] = Deno.readTextFileSync( - resolvedPath + (resolvedPath.endsWith(".ejs") ? "" : ".ejs"), - ); - return ejsCache[resolvedPath]; + const resolvedPath = path.resolve(filePath); + if (!resolvedPath.startsWith(templatePath)) { + throw new Error("Bad template"); + } + if (ejsCache[resolvedPath]) return ejsCache[resolvedPath]; + ejsCache[resolvedPath] = Deno.readTextFileSync( + resolvedPath + (resolvedPath.endsWith(".ejs") ? "" : ".ejs"), + ); + return ejsCache[resolvedPath]; }; async function getCustomMarkdown( - type: string[] | string, - name: string, + type: string[] | string, + name: string, ): Promise { - type = type instanceof Array ? type : [type]; - try { - const tpath = type.length ? [...type, name] : [name]; - const cpath = path.join("docs", "custom", "slua", ...tpath); - const custom = await Deno.readTextFile( - cpath.endsWith(".md") ? cpath : `${cpath}.md`, - ); - return custom; - } catch (_e) { - return false; - } + type = type instanceof Array ? type : [type]; + try { + const tpath = type.length ? [...type, name] : [name]; + const cpath = path.join("docs", "custom", "slua", ...tpath); + const custom = await Deno.readTextFile( + cpath.endsWith(".md") ? cpath : `${cpath}.md`, + ); + return custom; + } catch (_e) { + return false; + } +} + +function prepSlua(slua: SLua) { + for (const pKey in slua.global.props) { + const prop = slua.global.props[pKey]; + if (prop.def == "const") { + if (prop.type.def == "custom") { + const type = slua.types[prop.type.value] || null; + if (!type) continue; + if (type instanceof Array) continue; + if (type.type.def == "class") { + slua.global.props[pKey] = classDefToTableDef( + type.type.value, + prop.name, + ); + } + } + } + } } let output_dir: string[] = []; let html_dir: string[] = []; export async function generateSLuaMarkdown( - keywords: string, - outputDir: string, - htmlDir: string, + keywords: string, + outputDir: string, + htmlDir: string, ): Promise { - const slua = await buildSluaJson(keywords); - - output_dir = [outputDir, "slua"]; - html_dir = [htmlDir, "slua"]; - - await ensureDir(path.join(...output_dir)); - await ensureDir(path.join(...html_dir)); - - await generateTableProps([], slua.global); - await generateTableProps([], { - def: "table", - name: "slua", - props: { ...slua.classes }, - }); - await generateTable([], slua.global, "index.md", "index", { - ...slua.classes, - }, true); - - const index = await Deno.readTextFile( - path.join("docs", "custom", "index.md"), - ); - await Deno.writeTextFile( - path.join(htmlDir, "index.html"), - markdown("SLua Type Defs", index, { - corners: "https://github.com/WolfGangS/sl_lua_types", - }), - ); - const readme = await Deno.readTextFile( - path.join("README.md"), - ); - await Deno.writeTextFile( - path.join(htmlDir, "readme.html"), - markdown( - "SLua Type Defs", - readme.replaceAll("docs/html/images", "images"), - { - corners: "https://github.com/WolfGangS/sl_lua_types", - }, - ), - ); + const slua = await buildSluaJson(keywords); + + prepSlua(slua); + + output_dir = [outputDir, "slua"]; + html_dir = [htmlDir, "slua"]; + + await ensureDir(path.join(...output_dir)); + await ensureDir(path.join(...html_dir)); + + await generateTableProps([], slua.global); + + await generateTableProps([], { + def: "table", + name: "slua", + props: { ...slua.classes }, + }); + await generateTable([], slua.global, "index.md", "index", { + ...slua.classes, + }, true); + + const index = await Deno.readTextFile( + path.join("docs", "custom", "index.md"), + ); + await Deno.writeTextFile( + path.join(htmlDir, "index.html"), + markdown("SLua Type Defs", index, { + corners: "https://github.com/WolfGangS/sl_lua_types", + }), + ); + const readme = await Deno.readTextFile( + path.join("README.md"), + ); + await Deno.writeTextFile( + path.join(htmlDir, "readme.html"), + markdown( + "SLua Type Defs", + readme.replaceAll("docs/html/images", "images"), + { + corners: "https://github.com/WolfGangS/sl_lua_types", + }, + ), + ); } async function output( - title: string, - file_path: string[], - content: string, + title: string, + file_path: string[], + content: string, ): Promise { - const mdpath = path.join(...[...output_dir, ...file_path]) + ".md"; - await ensureDir(path.dirname(mdpath)); - - await Deno.writeTextFile( - mdpath, - content, - ); - const htpath = path.join(...[...html_dir, ...file_path]) + ".html"; - await ensureDir(path.dirname(htpath)); - await Deno.writeTextFile( - htpath, - markdown(title, content, { - corners: "https://github.com/WolfGangS/sl_lua_types", - }), - ); + const mdpath = path.join(...[...output_dir, ...file_path]) + ".md"; + await ensureDir(path.dirname(mdpath)); + + await Deno.writeTextFile( + mdpath, + content, + ); + const htpath = path.join(...[...html_dir, ...file_path]) + ".html"; + await ensureDir(path.dirname(htpath)); + await Deno.writeTextFile( + htpath, + markdown(title, content, { + corners: "https://github.com/WolfGangS/sl_lua_types", + }), + ); } async function ejsRenderFile( - path: string, - data: { [k: string]: any }, - options: { [k: string]: any }, + path: string, + data: { [k: string]: any }, + options: { [k: string]: any }, ) { - return await ejs.renderFile( - path, - data, - { - escape: (e) => { - return e; - }, - }, - ); + return await ejs.renderFile( + path, + data, + { + escape: (e) => { + return e; + }, + }, + ); } async function generateTableProps(section: string[], table: SLuaGlobalTable) { - for (const sub in table.props) { - await generateGlobal( - [...section], - table.props[sub], - ); - } + for (const sub in table.props) { + await generateGlobal( + [...section], + table.props[sub], + ); + } } async function generateGlobal( - section: string[], - global: SLuaDef | SLuaGlobalTable, + section: string[], + global: SLuaDef | SLuaGlobalTable, ) { - switch (global.def) { - case "table": - await generateTable([...section], global); - await generateTableProps([...section, global.name], global); - break; - case "class": - await generateClass([...section], global); - await generateTableProps([...section, global.name], { - def: "table", - name: global.name, - props: global.props, - }); - await generateTableProps([...section, global.name], { - def: "table", - name: global.name, - props: global.funcs, - }); - break; - case "func": - await generateFunction( - [...section], - global, - ); - break; - } + switch (global.def) { + case "table": + await generateTable([...section], global); + await generateTableProps([...section, global.name], global); + break; + case "class": + await generateClass([...section], global); + await generateTableProps([...section, global.name], { + def: "table", + name: global.name, + props: global.props, + }); + await generateTableProps([...section, global.name], { + def: "table", + name: global.name, + props: global.funcs, + }); + break; + case "func": + await generateFunction( + [...section], + global, + ); + break; + } } async function generateClass(section: string[], cls: SLuaClassDef) { - const name = [...section, cls.name].join("."); - - const fileName = `${name}`; - - const data = { - cls, - externalLinks: {}, - custom: await getCustomMarkdown("classes", fileName), - funcs: Object.values(cls.funcs).sort(sortNameAlpha), - props: Object.values(cls.props), - tables: [], - classes: [], - section: { - name: section.join("."), - url: `../${section.join(".")}.html`, - }, - }; - - const out = await ejsRenderFile( - path.join(templatePath, "class.md"), - data, - {}, - ); - - await output( - name, - ["classes", fileName], - out, - ); + const name = [...section, cls.name].join("."); + + const fileName = `${name}`; + + const data = { + cls, + externalLinks: {}, + custom: await getCustomMarkdown("classes", fileName), + funcs: Object.values(cls.funcs).sort(sortNameAlpha), + props: Object.values(cls.props), + tables: [], + classes: [], + section: { + name: section.join("."), + url: `../${section.join(".")}.html`, + }, + }; + + const out = await ejsRenderFile( + path.join(templatePath, "class.md"), + data, + {}, + ); + + await output( + name, + ["classes", fileName], + out, + ); } async function generateFunction( - section: string[], - func: SLuaFuncDef, + section: string[], + func: SLuaFuncDef, ) { - const name = [...section, func.name].join("."); - - const fileName = `${name}`; - - const [sample, _sig] = generatePreferedCodeSample(section, func); - - const data = { - func, - definition: generateCombinedDefinition(func), - example: sample, - alternatives: "", - externalLinks: { - "Official URL": func.link ? func.link : "", - }, - custom: await getCustomMarkdown("functions", fileName), - section: { - name: section.join("."), - url: `../${section.join(".")}.html`, - }, - }; - - const out = await ejsRenderFile( - path.join(templatePath, "function.md"), - data, - {}, - ); - - await output( - name, - ["functions", fileName], - out, - ); + const name = [...section, func.name].join("."); + + const fileName = `${name}`; + + const [sample, _sig] = generatePreferedCodeSample(section, func); + + const externalLinks: StrObj = {}; + + if (func.link) { + if (func.link.toLowerCase().includes(".secondlife.com")) { + externalLinks["Official URL"] = func.link; + } else { + externalLinks[func.link] = func.link; + } + } + + const data = { + func, + definitions: generateStringDefinitions(func), + example: sample, + alternatives: "", + externalLinks, + custom: await getCustomMarkdown("functions", fileName), + section: { + name: section.join("."), + url: `../${section.join(".")}.html`, + }, + }; + + const out = await ejsRenderFile( + path.join(templatePath, "function.md"), + data, + {}, + ); + + await output( + name, + ["functions", fileName], + out, + ); } async function generateTable( - section: string[], - table: SLuaGlobalTable | SLuaGlobal, - template: string | null = null, - fileName: string | null = null, - extra: SLuaGlobalTableProps = {}, - valueSort: boolean = false, + section: string[], + table: SLuaGlobalTable | SLuaGlobal, + template: string | null = null, + fileName: string | null = null, + extra: SLuaGlobalTableProps = {}, + valueSort: boolean = false, ) { - const name = [...section, table.name]; - - fileName = fileName ?? `${name.join(".")}`; - - let props: RenderPropTable = Object.values( - table.props, - ).filter((p) => p.def == "const").sort( - sortNameAlpha, - ); - if (props.length > 30) { - props = tableProps(props); - const e = props["#"]; - delete props["#"]; - props = { "Misc": e, ...props }; - } - - const data = { - table: table, - custom: await getCustomMarkdown([], fileName), - funcs: Object.values(table.props).filter((p) => p.def == "func").sort( - sortNameAlpha, - ), - props, - tables: Object.values(table.props).filter((p) => p.def == "table").sort( - sortNameAlpha, - ), - classes: Object.values(extra).filter((e) => e.def == "class").sort( - sortNameAlpha, - ), - section: { - name: section.join("."), - url: `${section.join(".")}.html`, - }, - }; - const out = await ejsRenderFile( - path.join(templatePath, template ?? "table.md"), - data, - {}, - ); - output(name.join("."), [fileName], out); + const name = [...section, table.name]; + + fileName = fileName ?? `${name.join(".")}`; + + let props: RenderPropTable = Object.values( + table.props, + ).filter((p) => p.def == "const").filter((p) => p.type.def == "simple") + .sort( + sortNameAlpha, + ); + if (props.length > 50) { + props = tableProps(props); + const e = props["#"]; + delete props["#"]; + props = { "Misc": e, ...props }; + } + + const allFuncs: SLuaFuncDef[] = Object.values(table.props).filter((p) => + p.def == "func" + ).sort( + sortNameAlpha, + ); + + const funcs = allFuncs.filter((f) => !f.takesSelf); + const selfFuncs = allFuncs.filter((f) => f.takesSelf); + + const data = { + table: table, + custom: await getCustomMarkdown([], fileName), + funcs, + selfFuncs, + props, + tables: Object.values(table.props).filter((p) => p.def == "table").sort( + sortNameAlpha, + ), + classes: Object.values(extra).filter((e) => e.def == "class").sort( + sortNameAlpha, + ), + section: { + name: section.join("."), + url: `${section.join(".")}.html`, + }, + }; + const out = await ejsRenderFile( + path.join(templatePath, template ?? "table.md"), + data, + {}, + ); + output(name.join("."), [fileName], out); } interface Named { - name: string; + name: string; } function sortNameAlpha(a: Named, b: Named): number { - const ta = a.name.toUpperCase(); - const tb = b.name.toUpperCase(); - return (ta < tb) ? -1 : (ta > tb) ? 1 : 0; + const ta = a.name.toUpperCase(); + const tb = b.name.toUpperCase(); + return (ta < tb) ? -1 : (ta > tb) ? 1 : 0; } type RenderPropTable = SLuaConstDef[] | { [k: string]: RenderPropTable }; function tableProps( - props: SLuaConstDef[], - splt: number = 1, + props: SLuaConstDef[], + splt: number = 1, ): RenderPropTable { - const tblProps: { [k: string]: RenderPropTable } = {}; - for (const prop of props) { - const parts = prop.name.split("_"); - let start = "#"; - if (parts.length > splt) { - start = parts.slice(0, splt).join("_"); + const tblProps: { [k: string]: RenderPropTable } = {}; + for (const prop of props) { + const parts = prop.name.split("_"); + let start = "#"; + if (parts.length > splt) { + start = parts.slice(0, splt).join("_"); + } + if (!tblProps[start]) tblProps[start] = []; + tblProps[start].push(prop); } - if (!tblProps[start]) tblProps[start] = []; - tblProps[start].push(prop); - } - - let misc: SLuaConstDef[] = []; - for (const start in tblProps) { - tblProps[start].sort( - (a: SLuaConstDef, b: SLuaConstDef) => { - return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0; - }, - ); - if (tblProps[start].length < 3) { - misc = [...misc, ...tblProps[start]]; - delete tblProps[start]; - } else if (splt < 2 && start != "#") { - tblProps[start] = tableProps(tblProps[start], 2); + + let misc: SLuaConstDef[] = []; + for (const start in tblProps) { + tblProps[start].sort( + (a: SLuaConstDef, b: SLuaConstDef) => { + return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0; + }, + ); + if (tblProps[start].length < 3) { + misc = [...misc, ...tblProps[start]]; + delete tblProps[start]; + } else if (splt < 2 && start != "#") { + tblProps[start] = tableProps(tblProps[start], 2); + } + } + if (misc.length > 0) { + misc = [...misc, ...(tblProps["#"] ?? [])]; + misc.sort(sortNameAlpha); + tblProps["#"] = misc; + } + const ks = Object.keys(tblProps); + if (ks.length == 1) { + return { "#": tblProps[ks[0]] }; } - } - if (misc.length > 0) { - misc = [...misc, ...(tblProps["#"] ?? [])]; - misc.sort(sortNameAlpha); - tblProps["#"] = misc; - } - const ks = Object.keys(tblProps); - if (ks.length == 1) { - return { "#": tblProps[ks[0]] }; - } - return tblProps; + return tblProps; } diff --git a/src/slua/slua-sele-gen.ts b/src/slua/slua-sele-gen.ts index 7929425..603d420 100644 --- a/src/slua/slua-sele-gen.ts +++ b/src/slua/slua-sele-gen.ts @@ -7,9 +7,12 @@ import { SLuaFuncSig, SLuaGlobalTable, SLuaGlobalTableProps, + SLuaSimpleType, + SLuaTypeDef, VarOpType, } from "./slua-json-gen.ts"; -import { isTypeCustom, isTypeValue } from "./slua-common.ts"; +import { isTypeCustom, isTypeFunction, isTypeValue } from "./slua-common.ts"; +import { StrObj } from "../types.d.ts"; type SeleneDef = SelenePropDef | SeleneFuncDef; @@ -58,12 +61,13 @@ export async function buildSluaSelene( globals: {}, }; - outputSluaGlobals(data.global.props, selene.globals); + outputSluaGlobals(data.global.props, data.types, selene.globals); return stringify(selene); } function outputSluaGlobals( data: SLuaGlobalTableProps, + types: StrObj, selene: SeleneGlobals, section: string = "", ): void { @@ -74,7 +78,7 @@ function outputSluaGlobals( break; } case "const": { - outputSluaConst(entry as SLuaConstDef, selene, section); + outputSluaConst(entry as SLuaConstDef, types, selene, section); break; } case "func": { @@ -86,7 +90,12 @@ function outputSluaGlobals( selene[`${section}${table.name}`] = { property: section == "" ? "full-write" : "read-only", }; - outputSluaGlobals(table.props, selene, `${section}${table.name}.`); + outputSluaGlobals( + table.props, + types, + selene, + `${section}${table.name}.`, + ); break; } case "event": @@ -98,12 +107,39 @@ function outputSluaGlobals( } } +function outputSluaTypes( + types: StrObj, + selene: SeleneGlobals, + section: string = "", +) { + for (const key in types) { + const type = types[key]; + if (typeof (type.type) == "string") continue; + const funcs = type.type.funcs; + for (const fKey in funcs) { + const func = funcs[fKey]; + outputSluaFunc(func, selene, `${section}${type.name}.`); + } + } +} + function outputSluaConst( con: SLuaConstDef, - globals: SeleneGlobals, + types: StrObj, + selene: SeleneGlobals, section: string, ) { - globals[`${section}${con.name}`] = { property: "read-only" }; + selene[`${section}${con.name}`] = { property: "read-only" }; + if (con.type.def != "custom" && con.type.def != "simple") return; + const typeName = con.type.value; + if (!types[typeName]) return; + const type = types[typeName]; + if (typeof (type.type) == "string") return; + const funcs = type.type.funcs; + for (const fKey in funcs) { + const func = funcs[fKey]; + outputSluaFunc(func, selene, `${section}${con.name}.`); + } } function outputSluaFunc( @@ -131,7 +167,7 @@ function castVarOpToSelene( if (vtype.variadic) args.push("..."); else { for (const type of vtype.type) { - args.push(remapLSLArgType(type)); + args.push(remapSLuaArgType(type)); } } } @@ -184,46 +220,55 @@ function buildFuncArgs(signatures: SLuaFuncSig[]): SeleneArgDef[] { return args; } -function remapLSLArgType( +function remapSLuaArgType( type: SLuaBaseType, ): SeleneArgDefType { if (type) { - switch (type) { - case "any": - case "number": - case "string": - case "nil": - return type; - case "{}": - return "table"; - case "integer": - return "number"; - case "list": - return "table"; - case "uuid": - return "string"; - case "boolean": - return "bool"; - case "quaternion": - return { display: "Quaternion" }; - case "()": - return "nil"; - case "self": - return "any"; - default: - if (typeof type == "string") { - return { display: type }; - } else if (isTypeCustom(type)) { - return { display: type.custom }; - } else if (isTypeValue(type)) { - if (type.value === "true" || type.value === "false") { - return "bool"; - } - return { display: type.value }; - } else { - throw new Error("Unhandled Type"); + switch (type.def) { + case "simple": + return remapSimpleSLuaArgType(type); + case "value": + case "custom": + if (type.value === "true" || type.value === "false") { + return "bool"; } + return { display: type.value.toString() }; + case "function": + return "function"; + default: + console.error(type); + throw new Error("Unhandled Type"); } } return "nil"; } + +function remapSimpleSLuaArgType(type: SLuaSimpleType): SeleneArgDefType { + switch (type.value) { + case "any": + case "number": + case "string": + case "nil": + return type.value; + case "{}": + return "table"; + case "list": + return "table"; + case "uuid": + return "string"; + case "boolean": + return "bool"; + case "quaternion": + return { display: "Quaternion" }; + case "vector": + case "buffer": + return { display: type.value }; + case "()": + return "nil"; + case "self": + return "any"; + default: + console.error(type); + throw new Error("Unhandled Simple Type"); + } +} diff --git a/src/types.d.ts b/src/types.d.ts index 4a97874..ea5f51a 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -10,7 +10,7 @@ export type FuncDef = { energy: number; sleep: number; pure: boolean; - link: string; + link: string | null; }; export type FuncArgs = FuncArg[]; export type FuncArg = { diff --git a/src/util.ts b/src/util.ts index 8ad99a8..593f0ae 100644 --- a/src/util.ts +++ b/src/util.ts @@ -54,6 +54,7 @@ function isPStrObj( patch: Override, ): obj is StrObj { if (!isStrObj(obj)) { + console.error("Indexing StrObj with non string path", patch, obj); throw new Error( `Indexing StrObj with non string path ${JSON.stringify(patch)}`, ); diff --git a/templates/slua/_funcs.md.ejs b/templates/slua/_funcs.md.ejs new file mode 100644 index 0000000..2c76a5b --- /dev/null +++ b/templates/slua/_funcs.md.ejs @@ -0,0 +1,9 @@ +<% if(funcs.length) { %> +<% if(funcs.length > 19) {%>||||| +|---|---|---|---|<%let i = 0; for(const func of funcs) { %><% if(!(i % 4)){%> +|<%}%>[<%= func.name %>](functions/<%=parentName%><%=func.name%>.html)|<% i++; }%> +<% } else { %> +|Name|Description| +|----|----|<%for(const func of funcs) {%> +|[<%= func.name %>](functions/<%=parentName%><%=func.name%>.html)|<%-func.desc.replaceAll("\n","
")%>|<% } %> +<% } } %> \ No newline at end of file diff --git a/templates/slua/function.md.ejs b/templates/slua/function.md.ejs index cf08988..a77ff57 100644 --- a/templates/slua/function.md.ejs +++ b/templates/slua/function.md.ejs @@ -1,7 +1,7 @@ ## <% if (section.name){ %>[<%=section.name%>](<%=section.url%>).<%}%><%=func.name%> -``` -<% if (section.name){ %><%=section.name%>.<%}%><%=func.name%><%-definition%> -``` +<% for(const definition of definitions) {%> + - <% if (section.name){ %><%=section.name%>.<%}%><%=func.name%><%-definition%> +<% } %> <%=func.desc%> @@ -29,9 +29,11 @@
Raw function spec json + ```json <%-JSON.stringify(func,null,2)%> ``` +
<% if (section.name){ %> diff --git a/templates/slua/table.md.ejs b/templates/slua/table.md.ejs index 9196427..71dd052 100644 --- a/templates/slua/table.md.ejs +++ b/templates/slua/table.md.ejs @@ -6,15 +6,11 @@ ### Structure <%- include("./_props.md.ejs", {section, name: table.name, props, table:false}); %> -<% if(funcs.length) { %>#### Functions -<% if(funcs.length > 19) {%>||||| -|---|---|---|---|<%let i = 0; for(const func of funcs) { %><% if(!(i % 4)){%> -|<%}%>[<%= func.name %>](functions/<%=table.name%>.<%=func.name%>.html)|<% i++; }%> -<% } else { %> -|Name|Description| -|----|----|<%for(const func of funcs) {%> -|[<%= func.name %>](functions/<%=table.name%>.<%=func.name%>.html)|<%-func.desc.replaceAll("\n","
")%>|<% } %> -<% } } %> +<% if(funcs.length || selfFuncs.length) { %> #### Functions +<%- include("./_funcs.md.ejs", {parentName:`${table.name}.`, funcs: selfFuncs}); %> +<%- include("./_funcs.md.ejs", {parentName:`${table.name}.`, funcs}); %> +<% } %> + <% if (section.name){ %> [< Back to `<%=section.name%>`](<%=section.url%>) <%} else {%> From 951d190971ad0c84e2e86a938f5390de835da0b9 Mon Sep 17 00:00:00 2001 From: WolfGangS Date: Wed, 12 Nov 2025 14:03:22 +0000 Subject: [PATCH 2/5] switch to yaml --- .github/workflows/release.yml | 16 +- data/keywords_lsl_formatted.llsd.xml | 389 +- data/lsl_definitions.yaml | 12656 +++++++++++++++++++++++++ data/lsl_keywords.overrides.json | 140 + deno.jsonc | 24 +- deno.lock | 1649 +++- download/keywords.ts | 60 - package-lock.json | 6024 ------------ package.json | 28 - src/lsl/lsl-json-gen.ts | 235 - src/lsl/lslCommon.ts | 117 + src/main.ts | 93 +- src/markdown-2-html.ts | 90 +- src/slua/slua-defs-gen.ts | 8 +- src/slua/slua-docs-gen.ts | 208 +- src/slua/slua-json-gen.ts | 50 +- src/slua/slua-md-gen.ts | 11 +- src/slua/slua-sele-conf-gen.ts | 78 +- src/slua/slua-sele-gen.ts | 401 +- src/slua/slua-vsc-snippets-gen.ts | 87 +- src/types.d.ts | 71 +- src/util.ts | 84 +- src/xml/xml-lsl-json-gen.ts | 149 + src/yaml/readLSLDefinitionsYAML.ts | 187 + 24 files changed, 15875 insertions(+), 6980 deletions(-) create mode 100644 data/lsl_definitions.yaml delete mode 100644 download/keywords.ts delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/lsl/lsl-json-gen.ts create mode 100644 src/lsl/lslCommon.ts create mode 100644 src/xml/xml-lsl-json-gen.ts create mode 100644 src/yaml/readLSLDefinitionsYAML.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a9d8e25..e457e81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,19 +19,11 @@ jobs: - uses: actions/setup-node@v4 with: node-version: "22.x" - - name: Node CI - run: npm ci - - name: Download + - name: Download Yaml Defs if: ${{ startsWith(github.ref, 'refs/tags/v') }} - env: - BOT_FIRST_NAME: ${{ secrets.BOT_FIRST_NAME }} - BOT_LAST_NAME: ${{ secrets.BOT_LAST_NAME }} - BOT_PASSWORD: ${{ secrets.BOT_PASSWORD }} - BOT_LOCATION: ${{ secrets.BOT_LOCATION }} - run: npx tsc download/keywords.ts && node download/keywords.js "$BOT_FIRST_NAME" "$BOT_LAST_NAME" "$BOT_PASSWORD" "$BOT_LOCATION" - - name: Copy Download - if: ${{ startsWith(github.ref, 'refs/tags/v') }} - run: rm data/keywords_lsl_formatted.llsd.xml && cp data/keywords_lsl_download.llsd.xml data/keywords_lsl_formatted.llsd.xml + run: | + curl --output data/lsl_definitions.dl.yaml "https://raw.githubusercontent.com/secondlife/lsl-definitions/refs/heads/main/lsl_definitions.yaml" + rm data/lsl_definitions.yaml && cp data/lsl_definitions.dl.yaml data/lsl_definitions.yaml - name: Build run: deno task build - name: Document diff --git a/data/keywords_lsl_formatted.llsd.xml b/data/keywords_lsl_formatted.llsd.xml index 5b1e099..fab75a3 100644 --- a/data/keywords_lsl_formatted.llsd.xml +++ b/data/keywords_lsl_formatted.llsd.xml @@ -81,6 +81,8 @@ quaternion + private + true tooltip The quaternion type is a left over from way back when LSL was created. It was later renamed to <rotation> to make it more user friendly, but it appears @@ -1844,6 +1846,15 @@ type integer + DATA_RESERVED_0 + + tooltip + Reserved for Linden use. + value + 9 + type + integer + DATA_SIM_POS tooltip @@ -1920,6 +1931,15 @@ type integer + DEREZ_TO_INVENTORY + + tooltip + The object is returned to the inventory of the rezzer. + value + 2 + type + integer + ENVIRONMENT_DAYINFO tooltip @@ -3995,6 +4015,78 @@ type integer + OVERRIDE_GLTF_BASE_ALPHA + + tooltip + + value + 2 + type + integer + + OVERRIDE_GLTF_BASE_ALPHA_MASK + + tooltip + + value + 4 + type + integer + + OVERRIDE_GLTF_BASE_ALPHA_MODE + + tooltip + + value + 3 + type + integer + + OVERRIDE_GLTF_BASE_COLOR_FACTOR + + tooltip + + value + 1 + type + integer + + OVERRIDE_GLTF_BASE_DOUBLE_SIDED + + tooltip + + value + 5 + type + integer + + OVERRIDE_GLTF_EMISSIVE_FACTOR + + tooltip + + value + 8 + type + integer + + OVERRIDE_GLTF_METALLIC_FACTOR + + tooltip + + value + 6 + type + integer + + OVERRIDE_GLTF_ROUGHNESS_FACTOR + + tooltip + + value + 7 + type + integer + PARCEL_COUNT_GROUP tooltip @@ -4445,6 +4537,87 @@ type integer + PARCEL_SALE_AGENT + + tooltip + The agent authorized to purchase the parcel. + value + 2 + type + integer + + PARCEL_SALE_ERROR_BAD_PARAMS + + tooltip + The parameters provided to set the sale information are invalid. + value + 5 + type + integer + + PARCEL_SALE_ERROR_INVALID_PRICE + + tooltip + The price set for the parcel is invalid (e.g., less than or equal to 0). + value + 4 + type + integer + + PARCEL_SALE_ERROR_IN_ESCROW + + tooltip + The parcel is currently in escrow and cannot be set for sale. + value + 3 + type + integer + + PARCEL_SALE_ERROR_NO_PARCEL + + tooltip + The parcel could not be found. + value + 1 + type + integer + + PARCEL_SALE_ERROR_NO_PERMISSIONS + + tooltip + The script does not have the required permissions to set the sale information. + value + 2 + type + integer + + PARCEL_SALE_OBJECTS + + tooltip + Are the objects on the parcel included in the sale? + value + 3 + type + integer + + PARCEL_SALE_OK + + tooltip + The sale information was successfully set. + value + 0 + type + integer + + PARCEL_SALE_PRICE + + tooltip + The price of the parcel. If no authorized agent is set, must be greater than 0. + value + 1 + type + integer + PASSIVE tooltip @@ -4987,7 +5160,7 @@ PRIM_CLICK_ACTION tooltip - + [PRIM_CLICK_ACTION, integer CLICK_ACTION_*] value 43 type @@ -5005,7 +5178,10 @@ PRIM_COLOR tooltip - + [PRIM_COLOR, integer face, vector color, float alpha] + integer face – face number or ALL_SIDES vector color – color in RGB <R, G, B> + (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white) float alpha – from 0.0 + (clear) to 1.0 (solid) (0.0 <= alpha <= 1.0) value 18 type @@ -5023,7 +5199,7 @@ PRIM_DESC tooltip - + [PRIM_DESC, string description] value 28 type @@ -5032,7 +5208,11 @@ PRIM_FLEXIBLE tooltip - + [ PRIM_FLEXIBLE, integer boolean, integer softness, float gravity, float + friction, float wind, float tension, vector force ] + +integer boolean – TRUE + enables, FALSE disables +integer softness – ranges from 0 to 3 +float gravity – + ranges from -10.0 to 10.0 +float friction – ranges from 0.0 to 10.0 +float wind – + ranges from 0.0 to 10.0 +float tension – ranges from 0.0 to 10.0 +vector force value 21 type @@ -5041,7 +5221,7 @@ PRIM_FULLBRIGHT tooltip - + [ PRIM_FULLBRIGHT, integer face, integer boolean ] value 20 type @@ -5050,7 +5230,8 @@ PRIM_GLOW tooltip - PRIM_GLOW is used to get or set the glow status of the face. + PRIM_GLOW is used to get or set the glow status of the face.\n[ PRIM_GLOW, + integer face, float intensity ] value 25 type @@ -5087,7 +5268,7 @@ tooltip Prim parameter for materials using integer face, string texture, vector repeats, - vector offsets, float rotation_in_radians, vector color, integer alpha_mode, integer + vector offsets, float rotation_in_radians, vector color, integer alpha_mode, float alpha_cutoff, boolean double_sided.\nValid options for alpha_mode are PRIM_ALPHA_MODE_BLEND, _NONE, and _MASK.\nalpha_cutoff is used only for PRIM_ALPHA_MODE_MASK. @@ -5175,7 +5356,8 @@ PRIM_LINK_TARGET tooltip - + [ PRIM_LINK_TARGET, integer link_target ] + Used to get or set multiple links with a single PrimParameters call. value 34 type @@ -5184,7 +5366,7 @@ PRIM_MATERIAL tooltip - + [ PRIM_MATERIAL, integer PRIM_MATERIAL_* ] value 2 type @@ -5520,7 +5702,7 @@ PRIM_NAME tooltip - + [ PRIM_NAME, string name ] value 27 type @@ -5539,7 +5721,10 @@ PRIM_OMEGA tooltip - + [ PRIM_OMEGA, vector axis, float spinrate, float gain ] + vector axis – arbitrary axis to rotate the object around float spinrate – rate of + rotation in radians per second float gain – also modulates the final spinrate and + disables the rotation behavior if zero value 32 type @@ -5548,7 +5733,7 @@ PRIM_PHANTOM tooltip - + [ PRIM_PHANTOM, integer boolean ] value 5 type @@ -5557,7 +5742,7 @@ PRIM_PHYSICS tooltip - + [ PRIM_PHYSICS, integer boolean ] value 3 type @@ -5607,7 +5792,12 @@ PRIM_POINT_LIGHT tooltip - + [ PRIM_POINT_LIGHT, integer boolean, vector linear_color, float intensity, float + radius, float falloff ] + integer boolean – TRUE enables, FALSE disables vector linear_color – linear color in + RGB <R, G, B&> (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = + white) float intensity – ranges from 0.0 to 1.0 float radius – ranges from 0.1 to + 20.0 float falloff – ranges from 0.01 to 2.0 value 23 type @@ -5616,7 +5806,9 @@ PRIM_POSITION tooltip - + [ PRIM_POSITION, vector position ] + vector position – position in region or local coordinates depending upon the + situation value 6 type @@ -5625,7 +5817,8 @@ PRIM_POS_LOCAL tooltip - + PRIM_POS_LOCAL, vector position ] + vector position - position in local coordinates value 33 type @@ -5634,7 +5827,7 @@ PRIM_PROJECTOR tooltip - + [ PRIM_PROJECTOR, string texture, float fov, float focus, float ambiance ] value 42 type @@ -5687,7 +5880,7 @@ PRIM_RENDER_MATERIAL tooltip - + [ PRIM_RENDER_MATERIAL, integer face, string material ] value 49 type @@ -5696,7 +5889,7 @@ PRIM_ROTATION tooltip - + [ PRIM_ROT_LOCAL, rotation global_rot ] value 8 type @@ -5705,7 +5898,7 @@ PRIM_ROT_LOCAL tooltip - + [ PRIM_ROT_LOCAL, rotation local_rot ] value 29 type @@ -5850,7 +6043,7 @@ PRIM_SIT_TARGET tooltip - + [ PRIM_SIT_TARGET, integer boolean, vector offset, rotation rot ] value 41 type @@ -5859,7 +6052,7 @@ PRIM_SIZE tooltip - + [ PRIM_SIZE, vector size ] value 7 type @@ -5868,7 +6061,7 @@ PRIM_SLICE tooltip - + [ PRIM_SLICE, vector slice ] value 35 type @@ -5897,7 +6090,7 @@ PRIM_TEXGEN tooltip - + [ PRIM_TEXGEN, integer face, PRIM_TEXGEN_* ] value 22 type @@ -5924,7 +6117,7 @@ PRIM_TEXT tooltip - + [ PRIM_TEXT, string text, vector color, float alpha ] value 26 type @@ -5933,7 +6126,8 @@ PRIM_TEXTURE tooltip - + [ PRIM_TEXTURE, integer face, string texture, vector repeats, vector offsets, + float rotation_in_radians ] value 17 type @@ -6910,6 +7104,8 @@ 1 type integer + deprecated + true REMOTE_DATA_REPLY @@ -6919,6 +7115,8 @@ 3 type integer + deprecated + true REMOTE_DATA_REQUEST @@ -6928,6 +7126,8 @@ 2 type integer + deprecated + true REQUIRE_LINE_OF_SIGHT @@ -9516,7 +9716,7 @@ experience_permissions tooltip - + Triggered when an agent has approved an experience permissions request. arguments @@ -10029,6 +10229,8 @@ tooltip This event is deprecated. + deprecated + true arguments @@ -11067,6 +11269,8 @@ llCloseRemoteDataChannel + deprecated + true energy 10.0 sleep @@ -11090,6 +11294,8 @@ llCloud + deprecated + true energy 10.0 sleep @@ -11190,6 +11396,8 @@ llCollisionSprite + deprecated + true energy 10.0 sleep @@ -14144,10 +14352,10 @@ tooltip Returns LineNumber from NotecardName via the dataserver event. The line index - starts at zero.\nIf the requested line is passed the end of the note-card the - dataserver event will return the constant EOF string.\nThe key returned by this - function is a unique identifier which will be supplied to the dataserver event in the - requested parameter. + starts at zero in LSL, one in Lua.\nIf the requested line is passed the end of the + note-card the dataserver event will return the constant EOF string.\nThe key returned + by this function is a unique identifier which will be supplied to the dataserver + event in the requested parameter.
llGetNotecardLineSync @@ -14179,10 +14387,10 @@ tooltip - Returns LineNumber from NotecardName. The line index starts at zero.\nIf the - requested line is past the end of the note-card the return value will be set to the - constant EOF string.\nIf the note-card is not cached on the simulator the return - value is the NAK string. + Returns LineNumber from NotecardName. The line index starts at zero in LSL, one + in Lua.\nIf the requested line is past the end of the note-card the return value will + be set to the constant EOF string.\nIf the note-card is not cached on the simulator + the return value is the NAK string. llGetNumberOfNotecardLines @@ -16173,6 +16381,38 @@ tooltip Returns TRUE if avatar ID is a friend of the script owner. + llIsLinkGLTFMaterial + + energy + 10.0 + sleep + 0.0 + return + integer + arguments + + + link + + type + integer + tooltip + Link number to check. + + + + face + + type + integer + tooltip + Side to check for a PBR material. Use ALL_SIDES to check for all. + + + + tooltip + Checks the face for a PBR render material. + llJson2List energy @@ -19646,6 +19886,8 @@ llRefreshPrimURL + deprecated + true energy 10.0 sleep @@ -22322,6 +22564,47 @@ If a task exists in the link chain at LinkNumber, set the Face to color.\nSets the color of the linked child's side, specified by LinkNumber. + llSetLinkGLTFOverrides + + energy + 10.0 + sleep + 0.0 + return + void + arguments + + + link + + type + integer + tooltip + Link number to check. + + + + face + + type + integer + tooltip + Side to check for a PBR material. Use ALL_SIDES to check for all. + + + + options + + type + list + tooltip + List of individual overrides to set. + + + + tooltip + Sets or changes GLTF Overrides set on the selected faces. + llSetLinkMedia energy @@ -22778,6 +23061,42 @@ Sets the specified PermissionFlag permission to the value specified by PermissionMask on the object the script is attached to. + llSetParcelForSale + + energy + 10.0 + sleep + 0.0 + return + integer + arguments + + + ForSale + + type + integer + tooltip + If TRUE, the parcel is put up for sale. + + + + Options + + type + list + tooltip + A list of options to set for the sale. + + + + tooltip + Sets the parcel the object is on for sale.\nForSale is a boolean, if TRUE the + parcel is put up for sale. Options is a list of options to set for the sale, such as + price, authorized buyer, and whether to include objects on the parcel.\n Setting + ForSale to FALSE will remove the parcel from sale and clear any options that were + set. + llSetParcelMusicURL energy diff --git a/data/lsl_definitions.yaml b/data/lsl_definitions.yaml new file mode 100644 index 0000000..a5f1c0a --- /dev/null +++ b/data/lsl_definitions.yaml @@ -0,0 +1,12656 @@ +llsd-lsl-syntax-version: 2 +constants: + ACTIVE: + tooltip: Objects in world that are running a script or currently physically moving. + type: integer + value: '0x2' + AGENT: + tooltip: Objects in world that are agents. + type: integer + value: '0x1' + AGENT_ALWAYS_RUN: + tooltip: '' + type: integer + value: '0x1000' + AGENT_ATTACHMENTS: + tooltip: The agent has attachments. + type: integer + value: '0x2' + AGENT_AUTOMATED: + tooltip: The agent has been identified as a scripted agent + type: integer + value: '0x4000' + AGENT_AUTOPILOT: + tooltip: '' + type: integer + value: '0x2000' + AGENT_AWAY: + tooltip: '' + type: integer + value: '0x40' + AGENT_BUSY: + tooltip: '' + type: integer + value: '0x800' + AGENT_BY_LEGACY_NAME: + tooltip: '' + type: integer + value: '0x1' + AGENT_BY_USERNAME: + tooltip: '' + type: integer + value: '0x10' + AGENT_CROUCHING: + tooltip: '' + type: integer + value: '0x400' + AGENT_FLOATING_VIA_SCRIPTED_ATTACHMENT: + tooltip: The agent is floating via scripted attachment. + type: integer + value: '0x8000' + AGENT_FLYING: + tooltip: The agent is flying. + type: integer + value: '0x1' + AGENT_IN_AIR: + tooltip: '' + type: integer + value: '0x100' + AGENT_LIST_PARCEL: + tooltip: Agents on the same parcel where the script is running. + type: integer + value: 1 + AGENT_LIST_PARCEL_OWNER: + tooltip: >- + Agents on any parcel in the region where the parcel owner is the same as + the owner of the parcel under the scripted object. + type: integer + value: 2 + AGENT_LIST_REGION: + tooltip: All agents in the region. + type: integer + value: 4 + AGENT_MOUSELOOK: + tooltip: '' + type: integer + value: '0x8' + AGENT_ON_OBJECT: + tooltip: '' + type: integer + value: '0x20' + AGENT_SCRIPTED: + tooltip: The agent has scripted attachments. + type: integer + value: '0x4' + AGENT_SITTING: + tooltip: '' + type: integer + value: '0x10' + AGENT_TYPING: + tooltip: '' + type: integer + value: '0x200' + AGENT_WALKING: + tooltip: '' + type: integer + value: '0x80' + ALL_SIDES: + tooltip: '' + type: integer + value: -1 + ANIM_ON: + tooltip: Texture animation is on. + type: integer + value: '0x1' + ATTACH_ANY_HUD: + tooltip: Filtering for any HUD attachment. + type: integer + value: -1 + ATTACH_AVATAR_CENTER: + tooltip: Attach to the avatar's geometric centre. + type: integer + value: 40 + ATTACH_BACK: + tooltip: Attach to the avatar's back. + type: integer + value: 9 + ATTACH_BELLY: + tooltip: Attach to the avatar's belly. + type: integer + value: 28 + ATTACH_CHEST: + tooltip: Attach to the avatar's chest. + type: integer + value: 1 + ATTACH_CHIN: + tooltip: Attach to the avatar's chin. + type: integer + value: 12 + ATTACH_FACE_JAW: + tooltip: Attach to the avatar's jaw. + type: integer + value: 47 + ATTACH_FACE_LEAR: + tooltip: Attach to the avatar's left ear (extended). + type: integer + value: 48 + ATTACH_FACE_LEYE: + tooltip: Attach to the avatar's left eye (extended). + type: integer + value: 50 + ATTACH_FACE_REAR: + tooltip: Attach to the avatar's right ear (extended). + type: integer + value: 49 + ATTACH_FACE_REYE: + tooltip: Attach to the avatar's right eye (extended). + type: integer + value: 51 + ATTACH_FACE_TONGUE: + tooltip: Attach to the avatar's tongue. + type: integer + value: 52 + ATTACH_GROIN: + tooltip: Attach to the avatar's groin. + type: integer + value: 53 + ATTACH_HEAD: + tooltip: Attach to the avatar's head. + type: integer + value: 2 + ATTACH_HIND_LFOOT: + tooltip: Attach to the avatar's left hind foot. + type: integer + value: 54 + ATTACH_HIND_RFOOT: + tooltip: Attach to the avatar's right hind foot. + type: integer + value: 55 + ATTACH_HUD_BOTTOM: + tooltip: '' + type: integer + value: 37 + ATTACH_HUD_BOTTOM_LEFT: + tooltip: '' + type: integer + value: 36 + ATTACH_HUD_BOTTOM_RIGHT: + tooltip: '' + type: integer + value: 38 + ATTACH_HUD_CENTER_1: + tooltip: '' + type: integer + value: 35 + ATTACH_HUD_CENTER_2: + tooltip: '' + type: integer + value: 31 + ATTACH_HUD_TOP_CENTER: + tooltip: '' + type: integer + value: 33 + ATTACH_HUD_TOP_LEFT: + tooltip: '' + type: integer + value: 34 + ATTACH_HUD_TOP_RIGHT: + tooltip: '' + type: integer + value: 32 + ATTACH_LEAR: + tooltip: Attach to the avatar's left ear. + type: integer + value: 13 + ATTACH_LEFT_PEC: + tooltip: Attach to the avatar's left pectoral. + type: integer + value: 29 + ATTACH_LEYE: + tooltip: Attach to the avatar's left eye. + type: integer + value: 15 + ATTACH_LFOOT: + tooltip: Attach to the avatar's left foot. + type: integer + value: 7 + ATTACH_LHAND: + tooltip: Attach to the avatar's left hand. + type: integer + value: 5 + ATTACH_LHAND_RING1: + tooltip: Attach to the avatar's left ring finger. + type: integer + value: 41 + ATTACH_LHIP: + tooltip: Attach to the avatar's left hip. + type: integer + value: 25 + ATTACH_LLARM: + tooltip: Attach to the avatar's left lower arm. + type: integer + value: 21 + ATTACH_LLLEG: + tooltip: Attach to the avatar's lower left leg. + type: integer + value: 27 + ATTACH_LPEC: + deprecated: true + tooltip: 'Attach to the avatar''s right pectoral. (Deprecated, use ATTACH_RIGHT_PEC)' + type: integer + value: 30 + ATTACH_LSHOULDER: + tooltip: Attach to the avatar's left shoulder. + type: integer + value: 3 + ATTACH_LUARM: + tooltip: Attach to the avatar's left upper arm. + type: integer + value: 20 + ATTACH_LULEG: + tooltip: Attach to the avatar's lower upper leg. + type: integer + value: 26 + ATTACH_LWING: + tooltip: Attach to the avatar's left wing. + type: integer + value: 45 + ATTACH_MOUTH: + tooltip: Attach to the avatar's mouth. + type: integer + value: 11 + ATTACH_NECK: + tooltip: Attach to the avatar's neck. + type: integer + value: 39 + ATTACH_NOSE: + tooltip: Attach to the avatar's nose. + type: integer + value: 17 + ATTACH_PELVIS: + tooltip: Attach to the avatar's pelvis. + type: integer + value: 10 + ATTACH_REAR: + tooltip: Attach to the avatar's right ear. + type: integer + value: 14 + ATTACH_REYE: + tooltip: Attach to the avatar's right eye. + type: integer + value: 16 + ATTACH_RFOOT: + tooltip: Attach to the avatar's right foot. + type: integer + value: 8 + ATTACH_RHAND: + tooltip: Attach to the avatar's right hand. + type: integer + value: 6 + ATTACH_RHAND_RING1: + tooltip: Attach to the avatar's right ring finger. + type: integer + value: 42 + ATTACH_RHIP: + tooltip: Attach to the avatar's right hip. + type: integer + value: 22 + ATTACH_RIGHT_PEC: + tooltip: Attach to the avatar's right pectoral. + type: integer + value: 30 + ATTACH_RLARM: + tooltip: Attach to the avatar's right lower arm. + type: integer + value: 19 + ATTACH_RLLEG: + tooltip: Attach to the avatar's right lower leg. + type: integer + value: 24 + ATTACH_RPEC: + deprecated: true + tooltip: 'Attach to the avatar''s left pectoral. (deprecated, use ATTACH_LEFT_PEC)' + type: integer + value: 29 + ATTACH_RSHOULDER: + tooltip: Attach to the avatar's right shoulder. + type: integer + value: 4 + ATTACH_RUARM: + tooltip: Attach to the avatar's right upper arm. + type: integer + value: 18 + ATTACH_RULEG: + tooltip: Attach to the avatar's right upper leg. + type: integer + value: 23 + ATTACH_RWING: + tooltip: Attach to the avatar's right wing. + type: integer + value: 46 + ATTACH_TAIL_BASE: + tooltip: Attach to the avatar's tail base. + type: integer + value: 43 + ATTACH_TAIL_TIP: + tooltip: Attach to the avatar's tail tip. + type: integer + value: 44 + AVOID_CHARACTERS: + tooltip: '' + type: integer + value: 1 + AVOID_DYNAMIC_OBSTACLES: + tooltip: '' + type: integer + value: 2 + AVOID_NONE: + tooltip: '' + type: integer + value: 0 + BEACON_MAP: + tooltip: >- + Cause llMapBeacon to optionally display and focus the world map on the + avatar's viewer. + type: integer + value: '1' + CAMERA_ACTIVE: + tooltip: '' + type: integer + value: 12 + CAMERA_BEHINDNESS_ANGLE: + tooltip: '' + type: integer + value: 8 + CAMERA_BEHINDNESS_LAG: + tooltip: '' + type: integer + value: 9 + CAMERA_DISTANCE: + tooltip: '' + type: integer + value: 7 + CAMERA_FOCUS: + tooltip: '' + type: integer + value: 17 + CAMERA_FOCUS_LAG: + tooltip: '' + type: integer + value: 6 + CAMERA_FOCUS_LOCKED: + tooltip: '' + type: integer + value: 22 + CAMERA_FOCUS_OFFSET: + tooltip: '' + type: integer + value: 1 + CAMERA_FOCUS_THRESHOLD: + tooltip: '' + type: integer + value: 11 + CAMERA_PITCH: + tooltip: '' + type: integer + value: 0 + CAMERA_POSITION: + tooltip: '' + type: integer + value: 13 + CAMERA_POSITION_LAG: + tooltip: '' + type: integer + value: 5 + CAMERA_POSITION_LOCKED: + tooltip: '' + type: integer + value: 21 + CAMERA_POSITION_THRESHOLD: + tooltip: '' + type: integer + value: 10 + CHANGED_ALLOWED_DROP: + tooltip: >- + The object inventory has changed because an item was added through the + llAllowInventoryDrop interface. + type: integer + value: '0x40' + CHANGED_COLOR: + tooltip: The object color has changed. + type: integer + value: '0x2' + CHANGED_INVENTORY: + tooltip: The object inventory has changed. + type: integer + value: '0x1' + CHANGED_LINK: + tooltip: The object has linked or its links were broken. + type: integer + value: '0x20' + CHANGED_MEDIA: + tooltip: '' + type: integer + value: '0x800' + CHANGED_OWNER: + tooltip: The object has changed ownership. + type: integer + value: '0x80' + CHANGED_REGION: + tooltip: The object has changed region. + type: integer + value: '0x100' + CHANGED_REGION_START: + tooltip: The region this object is in has just come online. + type: integer + value: '0x400' + CHANGED_RENDER_MATERIAL: + tooltip: The render material has changed. + type: integer + value: '0x1000' + CHANGED_SCALE: + tooltip: The object scale (size) has changed. + type: integer + value: '0x8' + CHANGED_SHAPE: + tooltip: 'The object base shape has changed, e.g., a box to a cylinder.' + type: integer + value: '0x4' + CHANGED_TELEPORT: + tooltip: The avatar to whom this object is attached has teleported. + type: integer + value: '0x200' + CHANGED_TEXTURE: + tooltip: >- + The texture offset, scale rotation, or simply the object texture has + changed. + type: integer + value: '0x10' + CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES: + tooltip: >- + If set to false, character will not attempt to catch up on lost time when + pathfinding performance is low, potentially providing more reliable + movement (albeit while potentially appearing to be more stuttery). Default + is true to match pre-existing behavior. + type: integer + value: 14 + CHARACTER_AVOIDANCE_MODE: + tooltip: >- + Allows you to specify that a character should not try to avoid other + characters, should not try to avoid dynamic obstacles (relatively fast + moving objects and avatars), or both. + type: integer + value: 5 + CHARACTER_CMD_JUMP: + tooltip: >- + Makes the character jump. Requires an additional parameter, the height to + jump, between 0.1m and 2.0m. This must be provided as the first element of + the llExecCharacterCmd option list. + type: integer + value: '0x01' + CHARACTER_CMD_SMOOTH_STOP: + tooltip: '' + type: integer + value: 2 + CHARACTER_CMD_STOP: + tooltip: Stops any current pathfinding operation. + type: integer + value: '0x00' + CHARACTER_DESIRED_SPEED: + tooltip: Speed of pursuit in meters per second. + type: integer + value: 1 + CHARACTER_DESIRED_TURN_SPEED: + tooltip: >- + The character's maximum speed while turning about the Z axis. - Note that + this is only loosely enforced. + type: integer + value: 12 + CHARACTER_LENGTH: + tooltip: Set collision capsule length - cannot be less than two times the radius. + type: integer + value: 3 + CHARACTER_MAX_ACCEL: + tooltip: The character's maximum acceleration rate. + type: integer + value: 8 + CHARACTER_MAX_DECEL: + tooltip: The character's maximum deceleration rate. + type: integer + value: 9 + CHARACTER_MAX_SPEED: + tooltip: The character's maximum speed. + type: integer + value: 13 + CHARACTER_MAX_TURN_RADIUS: + tooltip: The character's turn radius when travelling at CHARACTER_MAX_TURN_SPEED. + type: integer + value: 10 + CHARACTER_ORIENTATION: + tooltip: 'Valid options are: VERTICAL, HORIZONTAL.' + type: integer + value: 4 + CHARACTER_RADIUS: + tooltip: Set collision capsule radius. + type: integer + value: 2 + CHARACTER_STAY_WITHIN_PARCEL: + tooltip: >- + Determines whether a character can leave its starting parcel.\nTakes a + boolean parameter. If TRUE, the character cannot voluntarilly leave the + parcel, but can return to it. + type: integer + value: 15 + CHARACTER_TYPE: + tooltip: Specifies which walk-ability coefficient will be used by this character. + type: integer + value: 6 + CHARACTER_TYPE_A: + tooltip: '' + type: integer + value: 0 + CHARACTER_TYPE_B: + tooltip: '' + type: integer + value: 1 + CHARACTER_TYPE_C: + tooltip: '' + type: integer + value: 2 + CHARACTER_TYPE_D: + tooltip: '' + type: integer + value: 3 + CHARACTER_TYPE_NONE: + tooltip: '' + type: integer + value: 4 + CLICK_ACTION_BUY: + tooltip: 'When the prim is clicked, the buy dialog is opened.' + type: integer + value: 2 + CLICK_ACTION_DISABLED: + tooltip: No click action. No touches detected or passed. + type: integer + value: 8 + CLICK_ACTION_IGNORE: + tooltip: No click action. Object is invisible to the mouse. + type: integer + value: 9 + CLICK_ACTION_NONE: + tooltip: >- + Performs the default action: when the prim is clicked, touch events are + triggered. + type: integer + value: 0 + CLICK_ACTION_OPEN: + tooltip: 'When the prim is clicked, the object inventory dialog is opened.' + type: integer + value: 4 + CLICK_ACTION_OPEN_MEDIA: + tooltip: 'When the prim is touched, the web media dialog is opened.' + type: integer + value: 6 + CLICK_ACTION_PAY: + tooltip: 'When the prim is clicked, the pay dialog is opened.' + type: integer + value: 3 + CLICK_ACTION_PLAY: + tooltip: 'When the prim is clicked, html-on-a-prim is enabled?' + type: integer + value: 5 + CLICK_ACTION_SIT: + tooltip: 'When the prim is clicked, the avatar sits upon it.' + type: integer + value: 1 + CLICK_ACTION_TOUCH: + tooltip: 'When the prim is clicked, touch events are triggered.' + type: integer + value: 0 + CLICK_ACTION_ZOOM: + tooltip: Zoom in on object when clicked. + type: integer + value: 7 + COMBAT_CHANNEL: + tooltip: >- + COMBAT_CHANNEL is an integer constant that, when passed to llRegionSay + will add the message to the combat log. A script with a chat listen active + on COMBAT_CHANNEL may also monitor the combat log. + type: integer + value: 2147483646 + COMBAT_LOG_ID: + tooltip: >- + Messages from the region to the COMBAT_CHANNEL will all be from this ID.\n + Scripts may filter llListen calls on this ID to receive only system + generated combat log messages. + type: string + value: 45e0fcfa-2268-4490-a51c-3e51bdfe80d1 + CONTENT_TYPE_ATOM: + tooltip: '"application/atom+xml"' + type: integer + value: 4 + CONTENT_TYPE_FORM: + tooltip: '"application/x-www-form-urlencoded"' + type: integer + value: 7 + CONTENT_TYPE_HTML: + tooltip: >- + "text/html", only valid for embedded browsers on content owned by the + person viewing. Falls back to "text/plain" otherwise. + type: integer + value: 1 + CONTENT_TYPE_JSON: + tooltip: '"application/json"' + type: integer + value: 5 + CONTENT_TYPE_LLSD: + tooltip: '"application/llsd+xml"' + type: integer + value: 6 + CONTENT_TYPE_RSS: + tooltip: '"application/rss+xml"' + type: integer + value: 8 + CONTENT_TYPE_TEXT: + tooltip: '"text/plain"' + type: integer + value: 0 + CONTENT_TYPE_XHTML: + tooltip: '"application/xhtml+xml"' + type: integer + value: 3 + CONTENT_TYPE_XML: + tooltip: '"application/xml"' + type: integer + value: 2 + CONTROL_BACK: + tooltip: Test for the avatar move back control. + type: integer + value: '0x2' + CONTROL_DOWN: + tooltip: Test for the avatar move down control. + type: integer + value: '0x20' + CONTROL_FWD: + tooltip: Test for the avatar move forward control. + type: integer + value: '0x1' + CONTROL_LBUTTON: + tooltip: Test for the avatar left button control. + type: integer + value: '0x10000000' + CONTROL_LEFT: + tooltip: Test for the avatar move left control. + type: integer + value: '0x4' + CONTROL_ML_LBUTTON: + tooltip: Test for the avatar left button control while in mouse look. + type: integer + value: '0x40000000' + CONTROL_RIGHT: + tooltip: Test for the avatar move right control. + type: integer + value: '0x8' + CONTROL_ROT_LEFT: + tooltip: Test for the avatar rotate left control. + type: integer + value: '0x100' + CONTROL_ROT_RIGHT: + tooltip: Test for the avatar rotate right control. + type: integer + value: '0x200' + CONTROL_UP: + tooltip: Test for the avatar move up control. + type: integer + value: '0x10' + DAMAGEABLE: + tooltip: Objects in world that are able to process damage. + type: integer + value: '0x20' + DAMAGE_TYPE_ACID: + tooltip: 'Damage caused by a caustic substance, such as acid' + type: integer + value: '1' + DAMAGE_TYPE_BLUDGEONING: + tooltip: 'Damage caused by a blunt object, such as a club.' + type: integer + value: '2' + DAMAGE_TYPE_COLD: + tooltip: Damage inflicted by exposure to extreme cold + type: integer + value: '3' + DAMAGE_TYPE_ELECTRIC: + tooltip: Damage caused by electricity. + type: integer + value: '4' + DAMAGE_TYPE_EMOTIONAL: + tooltip: '' + type: integer + value: '14' + DAMAGE_TYPE_FIRE: + tooltip: Damage inflicted by exposure to heat or flames. + type: integer + value: '5' + DAMAGE_TYPE_FORCE: + tooltip: Damage inflicted by a great force or impact. + type: integer + value: '6' + DAMAGE_TYPE_GENERIC: + tooltip: Generic or legacy damage. + type: integer + value: '0' + DAMAGE_TYPE_IMPACT: + tooltip: System damage generated by impact with land or a prim. + type: integer + value: '-1' + DAMAGE_TYPE_NECROTIC: + tooltip: Damage caused by a direct assault on life-force + type: integer + value: '7' + DAMAGE_TYPE_PIERCING: + tooltip: 'Damage caused by a piercing object such as a bullet, spear, or arrow.' + type: integer + value: '8' + DAMAGE_TYPE_POISON: + tooltip: Damage caused by poison. + type: integer + value: '9' + DAMAGE_TYPE_PSYCHIC: + tooltip: Damage caused by a direct assault on the mind. + type: integer + value: '10' + DAMAGE_TYPE_RADIANT: + tooltip: Damage caused by radiation or extreme light. + type: integer + value: '11' + DAMAGE_TYPE_SLASHING: + tooltip: Damage caused by a slashing object such as a sword or axe. + type: integer + value: '12' + DAMAGE_TYPE_SONIC: + tooltip: 'Damage caused by loud noises, like a Crash Worship concert.' + type: integer + value: '13' + DATA_BORN: + tooltip: 'The date the agent was born, returned in ISO 8601 format of YYYY-MM-DD.' + type: integer + value: 3 + DATA_NAME: + tooltip: The name of the agent. + type: integer + value: 2 + DATA_ONLINE: + tooltip: 'TRUE for online, FALSE for offline.' + type: integer + value: 1 + DATA_PAYINFO: + tooltip: '' + type: integer + value: 8 + DATA_RATING: + tooltip: "Returns the agent ratings as a comma separated string of six integers. They are:\n\t\t\t1) Positive rated behaviour\n\t\t\t2) Negative rated behaviour\n\t\t\t3) Positive rated appearance\n\t\t\t4) Negative rated appearance\n\t\t\t5) Positive rated building\n\t\t\t6) Negative rated building" + type: integer + value: 4 + DATA_SIM_POS: + tooltip: '' + type: integer + value: 5 + DATA_SIM_RATING: + tooltip: '' + type: integer + value: 7 + DATA_SIM_STATUS: + tooltip: '' + type: integer + value: 6 + DEBUG_CHANNEL: + tooltip: >- + DEBUG_CHANNEL is an integer constant that, when passed to llSay, + llWhisper, or llShout as a channel parameter, will print text to the + Script Warning/Error Window. + type: integer + value: 2147483647 + DEG_TO_RAD: + tooltip: "0.017453293 - Number of radians per degree.\n\t\t\tYou can use this to convert degrees to radians by multiplying the degrees by this number." + type: float + value: '0.017453293' + DENSITY: + tooltip: >- + Used with llSetPhysicsMaterial to enable the density value. Must be + between 1.0 and 22587.0 (in Kg/m^3 -- see if you can figure out what 22587 + represents) + type: integer + value: 1 + DEREZ_DIE: + tooltip: Causes the object to immediately die. + type: integer + value: '0' + DEREZ_MAKE_TEMP: + tooltip: The object is made temporary and will be cleaned up at some later timer. + type: integer + value: '1' + DEREZ_TO_INVENTORY: + tooltip: The object is returned to the inventory of the rezzer. + type: integer + value: '2' + ENVIRONMENT_DAYINFO: + tooltip: 'Day length, offset and progression.' + type: integer + value: 200 + ENV_INVALID_AGENT: + tooltip: Could not find agent with the specified ID + type: integer + value: -4 + ENV_INVALID_RULE: + tooltip: Attempted to change an unknown property. + type: integer + value: -5 + ENV_NOT_EXPERIENCE: + tooltip: Attempt to change environments outside an experience. + type: integer + value: -1 + ENV_NO_ENVIRONMENT: + tooltip: Could not find environmental settings in object inventory. + type: integer + value: -3 + ENV_NO_EXPERIENCE_LAND: + tooltip: The experience has not been enabled on this land. + type: integer + value: -7 + ENV_NO_EXPERIENCE_PERMISSION: + tooltip: Agent has not granted permission to change environments. + type: integer + value: -2 + ENV_NO_PERMISSIONS: + tooltip: Script does not have permission to modify environment. + type: integer + value: -9 + ENV_THROTTLE: + tooltip: Could not validate values for environment. + type: integer + value: -8 + ENV_VALIDATION_FAIL: + tooltip: Could not validate values for environment. + type: integer + value: -6 + EOF: + tooltip: Indicates the last line of a notecard was read. + type: string + value: \\n\\n\\n + ERR_GENERIC: + tooltip: '' + type: integer + value: -1 + ERR_MALFORMED_PARAMS: + tooltip: '' + type: integer + value: -3 + ERR_PARCEL_PERMISSIONS: + tooltip: '' + type: integer + value: -2 + ERR_RUNTIME_PERMISSIONS: + tooltip: '' + type: integer + value: -4 + ERR_THROTTLED: + tooltip: '' + type: integer + value: -5 + ESTATE_ACCESS_ALLOWED_AGENT_ADD: + tooltip: Add the agent to this estate's Allowed Residents list. + type: integer + value: 4 + ESTATE_ACCESS_ALLOWED_AGENT_REMOVE: + tooltip: Remove the agent from this estate's Allowed Residents list. + type: integer + value: 8 + ESTATE_ACCESS_ALLOWED_GROUP_ADD: + tooltip: Add the group to this estate's Allowed groups list. + type: integer + value: 16 + ESTATE_ACCESS_ALLOWED_GROUP_REMOVE: + tooltip: Remove the group from this estate's Allowed groups list. + type: integer + value: 32 + ESTATE_ACCESS_BANNED_AGENT_ADD: + tooltip: Add the agent to this estate's Banned residents list. + type: integer + value: 64 + ESTATE_ACCESS_BANNED_AGENT_REMOVE: + tooltip: Remove the agent from this estate's Banned residents list. + type: integer + value: 128 + 'FALSE': + tooltip: An integer constant for boolean comparisons. Has the value '0'. + type: integer + value: 0 + FILTER_FLAGS: + tooltip: Flags to control returned attachments. + type: integer + value: 2 + FILTER_FLAG_HUDS: + tooltip: Include HUDs with matching experience. + type: integer + value: '0x0001' + FILTER_INCLUDE: + tooltip: Include attachment point. + type: integer + value: 1 + FORCE_DIRECT_PATH: + tooltip: >- + Makes character navigate in a straight line toward position. May be set to + TRUE or FALSE. + type: integer + value: 1 + FRICTION: + tooltip: >- + Used with llSetPhysicsMaterial to enable the friction value. Must be + between 0.0 and 255.0 + type: integer + value: 2 + GAME_CONTROL_AXIS_LEFTX: + tooltip: '' + type: integer + value: 0 + GAME_CONTROL_AXIS_LEFTY: + tooltip: '' + type: integer + value: 1 + GAME_CONTROL_AXIS_RIGHTX: + tooltip: '' + type: integer + value: 2 + GAME_CONTROL_AXIS_RIGHTY: + tooltip: '' + type: integer + value: 3 + GAME_CONTROL_AXIS_TRIGGERLEFT: + tooltip: '' + type: integer + value: 4 + GAME_CONTROL_AXIS_TRIGGERRIGHT: + tooltip: '' + type: integer + value: 5 + GAME_CONTROL_BUTTON_A: + tooltip: '' + type: integer + value: '0x1' + GAME_CONTROL_BUTTON_B: + tooltip: '' + type: integer + value: '0x2' + GAME_CONTROL_BUTTON_BACK: + tooltip: '' + type: integer + value: '0x10' + GAME_CONTROL_BUTTON_DPAD_DOWN: + tooltip: '' + type: integer + value: '0x1000' + GAME_CONTROL_BUTTON_DPAD_LEFT: + tooltip: '' + type: integer + value: '0x2000' + GAME_CONTROL_BUTTON_DPAD_RIGHT: + tooltip: '' + type: integer + value: '0x4000' + GAME_CONTROL_BUTTON_DPAD_UP: + tooltip: '' + type: integer + value: '0x800' + GAME_CONTROL_BUTTON_GUIDE: + tooltip: '' + type: integer + value: '0x20' + GAME_CONTROL_BUTTON_LEFTSHOULDER: + tooltip: '' + type: integer + value: '0x200' + GAME_CONTROL_BUTTON_LEFTSTICK: + tooltip: '' + type: integer + value: '0x80' + GAME_CONTROL_BUTTON_MISC1: + tooltip: '' + type: integer + value: '0x8000' + GAME_CONTROL_BUTTON_PADDLE1: + tooltip: '' + type: integer + value: '0x10000' + GAME_CONTROL_BUTTON_PADDLE2: + tooltip: '' + type: integer + value: '0x20000' + GAME_CONTROL_BUTTON_PADDLE3: + tooltip: '' + type: integer + value: '0x40000' + GAME_CONTROL_BUTTON_PADDLE4: + tooltip: '' + type: integer + value: '0x80000' + GAME_CONTROL_BUTTON_RIGHTSHOULDER: + tooltip: '' + type: integer + value: '0x400' + GAME_CONTROL_BUTTON_RIGHTSTICK: + tooltip: '' + type: integer + value: '0x100' + GAME_CONTROL_BUTTON_START: + tooltip: '' + type: integer + value: '0x40' + GAME_CONTROL_BUTTON_TOUCHPAD: + tooltip: '' + type: integer + value: '0x100000' + GAME_CONTROL_BUTTON_X: + tooltip: '' + type: integer + value: '0x4' + GAME_CONTROL_BUTTON_Y: + tooltip: '' + type: integer + value: '0x8' + GCNP_GET_WALKABILITY: + private: true + tooltip: '' + type: integer + value: '2' + GCNP_RADIUS: + tooltip: '' + type: integer + value: 0 + GCNP_STATIC: + tooltip: '' + type: integer + value: 1 + GRAVITY_MULTIPLIER: + tooltip: >- + Used with llSetPhysicsMaterial to enable the gravity multiplier value. + Must be between -1.0 and +28.0 + type: integer + value: 8 + HORIZONTAL: + tooltip: '' + type: integer + value: 1 + HTTP_ACCEPT: + tooltip: |- + Provide a string value to be included in the HTTP + accepts header value. This replaces the default Second Life HTTP accepts header. + type: integer + value: 8 + HTTP_BODY_MAXLENGTH: + tooltip: '' + type: integer + value: 2 + HTTP_BODY_TRUNCATED: + tooltip: '' + type: integer + value: 0 + HTTP_CUSTOM_HEADER: + tooltip: >- + Add an extra custom HTTP header to the request. The first string is the + name of the parameter to change, e.g. "Pragma", and the second string is + the value, e.g. "no-cache". Up to 8 custom headers may be configured per + request. Note that certain headers, such as the default headers, are + blocked for security reasons. + type: integer + value: 5 + HTTP_EXTENDED_ERROR: + tooltip: Report extended error information through http_response event. + type: integer + value: 9 + HTTP_METHOD: + tooltip: '' + type: integer + value: 0 + HTTP_MIMETYPE: + tooltip: '' + type: integer + value: 1 + HTTP_PRAGMA_NO_CACHE: + tooltip: >- + Allows enabling/disabling of the "Pragma: no-cache" header.\nUsage: + [HTTP_PRAGMA_NO_CACHE, integer SendHeader]. When SendHeader is TRUE, the + "Pragma: no-cache" header is sent by the script. This matches the default + behavior. When SendHeader is FALSE, no "Pragma" header is sent by the + script. + type: integer + value: 6 + HTTP_USER_AGENT: + tooltip: |- + Provide a string value to be included in the HTTP + User-Agent header value. This is appended to the default value. + type: integer + value: 7 + HTTP_VERBOSE_THROTTLE: + tooltip: '' + type: integer + value: 4 + HTTP_VERIFY_CERT: + tooltip: '' + type: integer + value: 3 + IMG_USE_BAKED_AUX1: + tooltip: '' + type: string + value: 9742065b-19b5-297c-858a-29711d539043 + IMG_USE_BAKED_AUX2: + tooltip: '' + type: string + value: 03642e83-2bd1-4eb9-34b4-4c47ed586d2d + IMG_USE_BAKED_AUX3: + tooltip: '' + type: string + value: edd51b77-fc10-ce7a-4b3d-011dfc349e4f + IMG_USE_BAKED_EYES: + tooltip: '' + type: string + value: 52cc6bb6-2ee5-e632-d3ad-50197b1dcb8a + IMG_USE_BAKED_HAIR: + tooltip: '' + type: string + value: 09aac1fb-6bce-0bee-7d44-caac6dbb6c63 + IMG_USE_BAKED_HEAD: + tooltip: '' + type: string + value: 5a9f4a74-30f2-821c-b88d-70499d3e7183 + IMG_USE_BAKED_LEFTARM: + tooltip: '' + type: string + value: ff62763f-d60a-9855-890b-0c96f8f8cd98 + IMG_USE_BAKED_LEFTLEG: + tooltip: '' + type: string + value: 8e915e25-31d1-cc95-ae08-d58a47488251 + IMG_USE_BAKED_LOWER: + tooltip: '' + type: string + value: 24daea5f-0539-cfcf-047f-fbc40b2786ba + IMG_USE_BAKED_SKIRT: + tooltip: '' + type: string + value: 43529ce8-7faa-ad92-165a-bc4078371687 + IMG_USE_BAKED_UPPER: + tooltip: '' + type: string + value: ae2de45c-d252-50b8-5c6e-19f39ce79317 + INVENTORY_ALL: + tooltip: '' + type: integer + value: -1 + INVENTORY_ANIMATION: + tooltip: '' + type: integer + value: 20 + INVENTORY_BODYPART: + tooltip: '' + type: integer + value: 13 + INVENTORY_CLOTHING: + tooltip: '' + type: integer + value: 5 + INVENTORY_GESTURE: + tooltip: '' + type: integer + value: 21 + INVENTORY_LANDMARK: + tooltip: '' + type: integer + value: 3 + INVENTORY_MATERIAL: + tooltip: '' + type: integer + value: 57 + INVENTORY_NONE: + tooltip: '' + type: integer + value: -1 + INVENTORY_NOTECARD: + tooltip: '' + type: integer + value: 7 + INVENTORY_OBJECT: + tooltip: '' + type: integer + value: 6 + INVENTORY_SCRIPT: + tooltip: '' + type: integer + value: 10 + INVENTORY_SETTING: + tooltip: '' + type: integer + value: 56 + INVENTORY_SOUND: + tooltip: '' + type: integer + value: 1 + INVENTORY_TEXTURE: + tooltip: '' + type: integer + value: 0 + JSON_APPEND: + tooltip: '' + type: integer + value: -1 + JSON_ARRAY: + tooltip: '' + type: string + value: \\uFDD2 + JSON_DELETE: + tooltip: '' + type: string + value: \\uFDD8 + JSON_FALSE: + tooltip: '' + type: string + value: \\uFDD7 + JSON_INVALID: + tooltip: '' + type: string + value: \\uFDD0 + JSON_NULL: + tooltip: '' + type: string + value: \\uFDD5 + JSON_NUMBER: + tooltip: '' + type: string + value: \\uFDD3 + JSON_OBJECT: + tooltip: '' + type: string + value: \\uFDD1 + JSON_STRING: + tooltip: '' + type: string + value: \\uFDD4 + JSON_TRUE: + tooltip: '' + type: string + value: \\uFDD6 + KFM_CMD_PAUSE: + tooltip: For use with KFM_COMMAND. + type: integer + value: 2 + KFM_CMD_PLAY: + tooltip: For use with KFM_COMMAND. + type: integer + value: 0 + KFM_CMD_STOP: + tooltip: For use with KFM_COMMAND. + type: integer + value: 1 + KFM_COMMAND: + tooltip: '' + type: integer + value: 0 + KFM_DATA: + tooltip: '' + type: integer + value: 2 + KFM_FORWARD: + tooltip: For use with KFM_MODE. + type: integer + value: 0 + KFM_LOOP: + tooltip: For use with KFM_MODE. + type: integer + value: 1 + KFM_MODE: + tooltip: '' + type: integer + value: 1 + KFM_PING_PONG: + tooltip: For use with KFM_MODE. + type: integer + value: 2 + KFM_REVERSE: + tooltip: For use with KFM_MODE. + type: integer + value: 3 + KFM_ROTATION: + tooltip: For use with KFM_DATA. + type: integer + value: 1 + KFM_TRANSLATION: + tooltip: For use with KFM_DATA. + type: integer + value: 2 + LAND_LARGE_BRUSH: + tooltip: >- + Use a large brush size.\nNOTE: This value is incorrect, a large brush + should be 2. + type: integer + value: 3 + LAND_LEVEL: + tooltip: Action to level the land. + type: integer + value: 0 + LAND_LOWER: + tooltip: Action to lower the land. + type: integer + value: 2 + LAND_MEDIUM_BRUSH: + tooltip: >- + Use a medium brush size.\nNOTE: This value is incorrect, a medium brush + should be 1. + type: integer + value: 2 + LAND_NOISE: + tooltip: '' + type: integer + value: 4 + LAND_RAISE: + tooltip: Action to raise the land. + type: integer + value: 1 + LAND_REVERT: + tooltip: '' + type: integer + value: 5 + LAND_SMALL_BRUSH: + tooltip: >- + Use a small brush size.\nNOTE: This value is incorrect, a small brush + should be 0. + type: integer + value: 1 + LAND_SMOOTH: + tooltip: '' + type: integer + value: 3 + LEGACY_MASS_FACTOR: + private: true + tooltip: '' + type: float + value: '0.01' + LINKSETDATA_DELETE: + tooltip: 'A name:value pair has been removed from the linkset datastore.' + type: integer + value: 2 + LINKSETDATA_EMEMORY: + tooltip: 'A name:value pair was too large to write to the linkset datastore.' + type: integer + value: 1 + LINKSETDATA_ENOKEY: + tooltip: The key supplied was empty. + type: integer + value: 2 + LINKSETDATA_EPROTECTED: + tooltip: >- + The name:value pair has been protected from overwrite in the linkset + datastore. + type: integer + value: 3 + LINKSETDATA_MULTIDELETE: + tooltip: A CSV list of names removed from the linkset datastore. + type: integer + value: 3 + LINKSETDATA_NOTFOUND: + tooltip: The named key was not found in the datastore. + type: integer + value: 4 + LINKSETDATA_NOUPDATE: + tooltip: >- + The value written to a name in the keystore is the same as the value + already there. + type: integer + value: 5 + LINKSETDATA_OK: + tooltip: 'The name:value pair was written to the datastore.' + type: integer + value: 0 + LINKSETDATA_RESET: + tooltip: The linkset datastore has been reset. + type: integer + value: 0 + LINKSETDATA_UPDATE: + tooltip: 'A name:value pair in the linkset datastore has been changed or created.' + type: integer + value: 1 + LINK_ALL_CHILDREN: + tooltip: This targets every object except the root in the linked set. + type: integer + value: -3 + LINK_ALL_OTHERS: + tooltip: >- + This targets every object in the linked set except the object with the + script. + type: integer + value: -2 + LINK_ROOT: + tooltip: This targets the root of the linked set. + type: integer + value: 1 + LINK_SET: + tooltip: This targets every object in the linked set. + type: integer + value: -1 + LINK_THIS: + tooltip: The link number of the prim containing the script. + type: integer + value: -4 + LIST_STAT_GEOMETRIC_MEAN: + tooltip: '' + type: integer + value: 9 + LIST_STAT_MAX: + tooltip: '' + type: integer + value: 2 + LIST_STAT_MEAN: + tooltip: '' + type: integer + value: 3 + LIST_STAT_MEDIAN: + tooltip: '' + type: integer + value: 4 + LIST_STAT_MIN: + tooltip: '' + type: integer + value: 1 + LIST_STAT_NUM_COUNT: + tooltip: '' + type: integer + value: 8 + LIST_STAT_RANGE: + tooltip: '' + type: integer + value: 0 + LIST_STAT_STD_DEV: + tooltip: '' + type: integer + value: 5 + LIST_STAT_SUM: + tooltip: '' + type: integer + value: 6 + LIST_STAT_SUM_SQUARES: + tooltip: '' + type: integer + value: 7 + LOOP: + tooltip: Loop the texture animation. + type: integer + value: '0x2' + MASK_BASE: + tooltip: '' + type: integer + value: 0 + MASK_COMBINED: + tooltip: Fold permissions for object inventory into results. + type: integer + value: '0x10' + MASK_EVERYONE: + tooltip: '' + type: integer + value: 3 + MASK_GROUP: + tooltip: '' + type: integer + value: 2 + MASK_NEXT: + tooltip: '' + type: integer + value: 4 + MASK_OWNER: + tooltip: '' + type: integer + value: 1 + NAK: + tooltip: >- + Indicates a notecard read was attempted and the notecard was not yet + cached on the server. + type: string + value: \\n\\x15\\n + NAVIGATE_TO_GOAL_REACHED_DIST: + private: true + tooltip: '' + type: integer + value: '2' + NULL_KEY: + tooltip: '' + type: string + value: 00000000-0000-0000-0000-000000000000 + OBJECT_ACCOUNT_LEVEL: + tooltip: >- + Retrieves the account level of an avatar.\nReturns 0 when the avatar has a + basic account,\n 1 when the avatar has a premium account,\n 10 when the + avatar has a premium plus account,\n or -1 if the object is not an avatar. + type: integer + value: 41 + OBJECT_ANIMATED_COUNT: + tooltip: >- + This is a flag used with llGetObjectDetails to get the number of + associated animated objects + type: integer + value: 39 + OBJECT_ANIMATED_SLOTS_AVAILABLE: + tooltip: >- + This is a flag used with llGetObjectDetails to get the number of + additional animated object attachments allowed. + type: integer + value: 40 + OBJECT_ATTACHED_POINT: + tooltip: >- + Gets the attachment point to which the object is attached.\nReturns 0 if + the object is not an attachment (or is an avatar, etc). + type: integer + value: 19 + OBJECT_ATTACHED_SLOTS_AVAILABLE: + tooltip: >- + Returns the number of attachment slots available.\nReturns 0 if the object + is not an avatar or none are available. + type: integer + value: 35 + OBJECT_BODY_SHAPE_TYPE: + tooltip: >- + This is a flag used with llGetObjectDetails to get the body type of the + avatar, based on shape data.\nIf no data is available, -1.0 is + returned.\nThis is normally between 0 and 1.0, with 0.5 and larger + considered 'male' + type: integer + value: 26 + OBJECT_CHARACTER_TIME: + tooltip: Units in seconds + type: integer + value: 17 + OBJECT_CLICK_ACTION: + tooltip: >- + This is a flag used with llGetObjectDetails to get the click action.\nThe + default is 0 + type: integer + value: 28 + OBJECT_CREATION_TIME: + tooltip: >- + This is a flag used with llGetObjectDetails to get the time this object + was created + type: integer + value: 36 + OBJECT_CREATOR: + tooltip: 'Gets the object''s creator key. If id is an avatar, a NULL_KEY is returned.' + type: integer + value: 8 + OBJECT_DAMAGE: + tooltip: Gets the damage value assigned to this object. + type: integer + value: 51 + OBJECT_DAMAGE_TYPE: + tooltip: 'Gets the damage type, if any, assigned to this object.' + type: integer + value: 52 + OBJECT_DESC: + tooltip: >- + Gets the object's description. If id is an avatar, an empty string is + returned. + type: integer + value: 2 + OBJECT_GROUP: + tooltip: 'Gets the prims''s group key. If id is an avatar, a NULL_KEY is returned.' + type: integer + value: 7 + OBJECT_GROUP_TAG: + tooltip: >- + Gets the agent's current group role tag. If id is an object, an empty is + returned. + type: integer + value: 33 + OBJECT_HEALTH: + tooltip: Gets current health value for the object. + type: integer + value: 50 + OBJECT_HOVER_HEIGHT: + tooltip: >- + This is a flag used with llGetObjectDetails to get hover height of the + avatar\nIf no data is available, 0.0 is returned. + type: integer + value: 25 + OBJECT_LAST_OWNER_ID: + tooltip: Gets the object's last owner ID. + type: integer + value: 27 + OBJECT_LINK_NUMBER: + tooltip: Gets the object's link number or 0 if unlinked. + type: integer + value: 46 + OBJECT_MASS: + tooltip: Get the object's mass + type: integer + value: 43 + OBJECT_MATERIAL: + tooltip: Get an object's material setting. + type: integer + value: 42 + OBJECT_NAME: + tooltip: Gets the object's name. + type: integer + value: 1 + OBJECT_OMEGA: + tooltip: Gets an object's angular velocity. + type: integer + value: 29 + OBJECT_OWNER: + tooltip: >- + Gets an object's owner's key. If id is group owned, a NULL_KEY is + returned. + type: integer + value: 6 + OBJECT_PATHFINDING_TYPE: + tooltip: >- + Returns the pathfinding setting of any object in the region. It returns an + integer matching one of the OPT_* constants. + type: integer + value: 20 + OBJECT_PERMS: + tooltip: Gets the objects permissions + type: integer + value: 53 + OBJECT_PERMS_COMBINED: + tooltip: Gets the object's permissions including any inventory. + type: integer + value: 54 + OBJECT_PHANTOM: + tooltip: >- + Returns boolean, detailing if phantom is enabled or disabled on the + object.\nIf id is an avatar or attachment, 0 is returned. + type: integer + value: 22 + OBJECT_PHYSICS: + tooltip: >- + Returns boolean, detailing if physics is enabled or disabled on the + object.\nIf id is an avatar or attachment, 0 is returned. + type: integer + value: 21 + OBJECT_PHYSICS_COST: + tooltip: '' + type: integer + value: 16 + OBJECT_POS: + tooltip: Gets the object's position in region coordinates. + type: integer + value: 3 + OBJECT_PRIM_COUNT: + tooltip: >- + Gets the prim count of the object. The script and target object must be + owned by the same owner + type: integer + value: 30 + OBJECT_PRIM_EQUIVALENCE: + tooltip: '' + type: integer + value: 13 + OBJECT_RENDER_WEIGHT: + tooltip: >- + This is a flag used with llGetObjectDetails to get the + Avatar_Rendering_Cost of an avatar, based on values reported by nearby + viewers.\nIf no data is available, -1 is returned.\nThe maximum render + weight stored by the simulator is 500000. When called against an object, 0 + is returned. + type: integer + value: 24 + OBJECT_RETURN_PARCEL: + tooltip: '' + type: integer + value: 1 + OBJECT_RETURN_PARCEL_OWNER: + tooltip: '' + type: integer + value: 2 + OBJECT_RETURN_REGION: + tooltip: '' + type: integer + value: 4 + OBJECT_REZZER_KEY: + tooltip: '' + type: integer + value: 32 + OBJECT_REZ_TIME: + tooltip: Get the time when an object was rezzed. + type: integer + value: 45 + OBJECT_ROOT: + tooltip: >- + Gets the id of the root prim of the object requested.\nIf id is an avatar, + return the id of the root prim of the linkset the avatar is sitting on (or + the avatar's own id if the avatar is not sitting on an object within the + region). + type: integer + value: 18 + OBJECT_ROT: + tooltip: Gets the object's rotation. + type: integer + value: 4 + OBJECT_RUNNING_SCRIPT_COUNT: + tooltip: '' + type: integer + value: 9 + OBJECT_SCALE: + tooltip: Gets the object's size. + type: integer + value: 47 + OBJECT_SCRIPT_MEMORY: + tooltip: '' + type: integer + value: 11 + OBJECT_SCRIPT_TIME: + tooltip: '' + type: integer + value: 12 + OBJECT_SELECT_COUNT: + tooltip: >- + This is a flag used with llGetObjectDetails to get the number of avatars + selecting any part of the object + type: integer + value: 37 + OBJECT_SERVER_COST: + tooltip: '' + type: integer + value: 14 + OBJECT_SIT_COUNT: + tooltip: >- + This is a flag used with llGetObjectDetails to get the number of avatars + sitting on the object + type: integer + value: 38 + OBJECT_STREAMING_COST: + tooltip: '' + type: integer + value: 15 + OBJECT_TEMP_ATTACHED: + tooltip: 'Returns boolean, indicating if object is a temp attachment.' + type: integer + value: 34 + OBJECT_TEMP_ON_REZ: + tooltip: >- + Returns boolean, detailing if temporary is enabled or disabled on the + object. + type: integer + value: 23 + OBJECT_TEXT: + tooltip: Gets an objects hover text. + type: integer + value: 44 + OBJECT_TEXT_ALPHA: + tooltip: Gets the alpha of an objects hover text. + type: integer + value: 49 + OBJECT_TEXT_COLOR: + tooltip: Gets the color of an objects hover text. + type: integer + value: 48 + OBJECT_TOTAL_INVENTORY_COUNT: + tooltip: >- + Gets the total inventory count of the object. The script and target + object must be owned by the same owner + type: integer + value: 31 + OBJECT_TOTAL_SCRIPT_COUNT: + tooltip: '' + type: integer + value: 10 + OBJECT_UNKNOWN_DETAIL: + tooltip: '' + type: integer + value: -1 + OBJECT_VELOCITY: + tooltip: Gets the object's velocity. + type: integer + value: 5 + OPT_AVATAR: + tooltip: Returned for avatars. + type: integer + value: 1 + OPT_CHARACTER: + tooltip: Returned for pathfinding characters. + type: integer + value: 2 + OPT_EXCLUSION_VOLUME: + tooltip: Returned for exclusion volumes. + type: integer + value: 6 + OPT_LEGACY_LINKSET: + tooltip: >- + Returned for movable obstacles, movable phantoms, physical, and + volumedetect objects. + type: integer + value: 0 + OPT_MATERIAL_VOLUME: + tooltip: Returned for material volumes. + type: integer + value: 5 + OPT_OTHER: + tooltip: 'Returned for attachments, Linden trees, and grass.' + type: integer + value: -1 + OPT_STATIC_OBSTACLE: + tooltip: Returned for static obstacles. + type: integer + value: 4 + OPT_WALKABLE: + tooltip: Returned for walkable objects. + type: integer + value: 3 + OVERRIDE_GLTF_BASE_ALPHA: + tooltip: '' + type: integer + value: 2 + OVERRIDE_GLTF_BASE_ALPHA_MASK: + tooltip: '' + type: integer + value: 4 + OVERRIDE_GLTF_BASE_ALPHA_MODE: + tooltip: '' + type: integer + value: 3 + OVERRIDE_GLTF_BASE_COLOR_FACTOR: + tooltip: '' + type: integer + value: 1 + OVERRIDE_GLTF_BASE_DOUBLE_SIDED: + tooltip: '' + type: integer + value: 5 + OVERRIDE_GLTF_EMISSIVE_FACTOR: + tooltip: '' + type: integer + value: 8 + OVERRIDE_GLTF_METALLIC_FACTOR: + tooltip: '' + type: integer + value: 6 + OVERRIDE_GLTF_ROUGHNESS_FACTOR: + tooltip: '' + type: integer + value: 7 + PARCEL_COUNT_GROUP: + tooltip: '' + type: integer + value: 2 + PARCEL_COUNT_OTHER: + tooltip: '' + type: integer + value: 3 + PARCEL_COUNT_OWNER: + tooltip: '' + type: integer + value: 1 + PARCEL_COUNT_SELECTED: + tooltip: '' + type: integer + value: 4 + PARCEL_COUNT_TEMP: + tooltip: '' + type: integer + value: 5 + PARCEL_COUNT_TOTAL: + tooltip: '' + type: integer + value: 0 + PARCEL_DETAILS_AREA: + tooltip: 'The parcel''s area, in square meters. (5 chars.).' + type: integer + value: 4 + PARCEL_DETAILS_DESC: + tooltip: The description of the parcel. (127 chars). + type: integer + value: 1 + PARCEL_DETAILS_FLAGS: + tooltip: Flags set on the parcel + type: integer + value: 12 + PARCEL_DETAILS_GROUP: + tooltip: The parcel group's key. (36 chars.). + type: integer + value: 3 + PARCEL_DETAILS_ID: + tooltip: The parcel's key. (36 chars.). + type: integer + value: 5 + PARCEL_DETAILS_LANDING_LOOKAT: + tooltip: Lookat vector set for teleport routing. + type: integer + value: 10 + PARCEL_DETAILS_LANDING_POINT: + tooltip: 'The parcel''s landing point, if any.' + type: integer + value: 9 + PARCEL_DETAILS_NAME: + tooltip: The name of the parcel. (63 chars.). + type: integer + value: 0 + PARCEL_DETAILS_OWNER: + tooltip: The parcel owner's key. (36 chars.). + type: integer + value: 2 + PARCEL_DETAILS_PRIM_CAPACITY: + tooltip: The parcel's prim capacity. + type: integer + value: 7 + PARCEL_DETAILS_PRIM_USED: + tooltip: The number of prims used on this parcel. + type: integer + value: 8 + PARCEL_DETAILS_SCRIPT_DANGER: + tooltip: There are restrictions on this parcel that may impact script execution. + type: integer + value: 13 + PARCEL_DETAILS_SEE_AVATARS: + tooltip: The parcel's avatar visibility setting. (1 char.). + type: integer + value: 6 + PARCEL_DETAILS_TP_ROUTING: + tooltip: Parcel's teleport routing setting. + type: integer + value: 11 + PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY: + tooltip: '' + type: integer + value: '0x08000000' + PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS: + tooltip: '' + type: integer + value: '0x4000000' + PARCEL_FLAG_ALLOW_CREATE_OBJECTS: + tooltip: '' + type: integer + value: '0x40' + PARCEL_FLAG_ALLOW_DAMAGE: + tooltip: '' + type: integer + value: '0x20' + PARCEL_FLAG_ALLOW_FLY: + tooltip: '' + type: integer + value: '0x1' + PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY: + tooltip: '' + type: integer + value: '0x10000000' + PARCEL_FLAG_ALLOW_GROUP_SCRIPTS: + tooltip: '' + type: integer + value: '0x2000000' + PARCEL_FLAG_ALLOW_LANDMARK: + tooltip: '' + type: integer + value: '0x8' + PARCEL_FLAG_ALLOW_SCRIPTS: + tooltip: '' + type: integer + value: '0x2' + PARCEL_FLAG_ALLOW_TERRAFORM: + tooltip: '' + type: integer + value: '0x10' + PARCEL_FLAG_LINDEN_HOMES: + private: true + tooltip: '' + type: integer + value: '0x800000' + PARCEL_FLAG_LOCAL_SOUND_ONLY: + tooltip: '' + type: integer + value: '0x8000' + PARCEL_FLAG_RESTRICT_PUSHOBJECT: + tooltip: '' + type: integer + value: '0x200000' + PARCEL_FLAG_USE_ACCESS_GROUP: + tooltip: '' + type: integer + value: '0x100' + PARCEL_FLAG_USE_ACCESS_LIST: + tooltip: '' + type: integer + value: '0x200' + PARCEL_FLAG_USE_BAN_LIST: + tooltip: '' + type: integer + value: '0x400' + PARCEL_FLAG_USE_LAND_PASS_LIST: + tooltip: '' + type: integer + value: '0x800' + PARCEL_MEDIA_COMMAND_AGENT: + tooltip: '' + type: integer + value: 7 + PARCEL_MEDIA_COMMAND_AUTO_ALIGN: + tooltip: '' + type: integer + value: 9 + PARCEL_MEDIA_COMMAND_DESC: + tooltip: Use this to get or set the parcel media description. + type: integer + value: 12 + PARCEL_MEDIA_COMMAND_LOOP: + tooltip: '' + type: integer + value: 3 + PARCEL_MEDIA_COMMAND_LOOP_SET: + tooltip: Used to get or set the parcel's media looping variable. + type: integer + value: 13 + PARCEL_MEDIA_COMMAND_PAUSE: + tooltip: '' + type: integer + value: 1 + PARCEL_MEDIA_COMMAND_PLAY: + tooltip: '' + type: integer + value: 2 + PARCEL_MEDIA_COMMAND_SIZE: + tooltip: Use this to get or set the parcel media pixel resolution. + type: integer + value: 11 + PARCEL_MEDIA_COMMAND_STOP: + tooltip: '' + type: integer + value: 0 + PARCEL_MEDIA_COMMAND_TEXTURE: + tooltip: '' + type: integer + value: 4 + PARCEL_MEDIA_COMMAND_TIME: + tooltip: '' + type: integer + value: 6 + PARCEL_MEDIA_COMMAND_TYPE: + tooltip: Use this to get or set the parcel media MIME type (e.g. "text/html"). + type: integer + value: 10 + PARCEL_MEDIA_COMMAND_UNLOAD: + tooltip: '' + type: integer + value: 8 + PARCEL_MEDIA_COMMAND_URL: + tooltip: '' + type: integer + value: 5 + PASSIVE: + tooltip: Static in-world objects. + type: integer + value: '0x4' + PASS_ALWAYS: + tooltip: Always pass the event. + type: integer + value: '1' + PASS_IF_NOT_HANDLED: + tooltip: Pass the event if there is no script handling the event in the prim. + type: integer + value: '0' + PASS_NEVER: + tooltip: Always pass the event. + type: integer + value: '2' + PATROL_PAUSE_AT_WAYPOINTS: + tooltip: '' + type: integer + value: 0 + PAYMENT_INFO_ON_FILE: + tooltip: '' + type: integer + value: 1 + PAYMENT_INFO_USED: + tooltip: '' + type: integer + value: 2 + PAY_DEFAULT: + tooltip: '' + type: integer + value: -2 + PAY_HIDE: + tooltip: '' + type: integer + value: -1 + PERMISSION_ATTACH: + tooltip: >- + If this permission is enabled, the object can successfully call + llAttachToAvatar to attach to the given avatar. + type: integer + value: '0x20' + PERMISSION_CHANGE_JOINTS: + tooltip: (not yet implemented) + type: integer + value: '0x100' + PERMISSION_CHANGE_LINKS: + tooltip: >- + If this permission is enabled, the object can successfully call + llCreateLink, llBreakLink, and llBreakAllLinks to change links to other + objects. + type: integer + value: '0x80' + PERMISSION_CHANGE_PERMISSIONS: + tooltip: (not yet implemented) + type: integer + value: '0x200' + PERMISSION_CONTROL_CAMERA: + tooltip: '' + type: integer + value: '0x800' + PERMISSION_DEBIT: + tooltip: >- + If this permission is enabled, the object can successfully call + llGiveMoney or llTransferLindenDollars to debit the owners account. + type: integer + value: '0x2' + PERMISSION_OVERRIDE_ANIMATIONS: + tooltip: Permission to override default animations. + type: integer + value: '0x8000' + PERMISSION_RELEASE_OWNERSHIP: + tooltip: (not yet implemented) + type: integer + value: '0x40' + PERMISSION_REMAP_CONTROLS: + tooltip: (not yet implemented) + type: integer + value: '0x8' + PERMISSION_RETURN_OBJECTS: + tooltip: '' + type: integer + value: 65536 + PERMISSION_SILENT_ESTATE_MANAGEMENT: + tooltip: >- + A script with this permission does not notify the object owner when it + modifies estate access rules via llManageEstateAccess. + type: integer + value: '0x4000' + PERMISSION_TAKE_CONTROLS: + tooltip: >- + If this permission enabled, the object can successfully call the + llTakeControls libray call. + type: integer + value: '0x4' + PERMISSION_TELEPORT: + tooltip: '' + type: integer + value: '0x1000' + PERMISSION_TRACK_CAMERA: + tooltip: '' + type: integer + value: '0x400' + PERMISSION_TRIGGER_ANIMATION: + tooltip: >- + If this permission is enabled, the object can successfully call + llStartAnimation for the avatar that owns this. + type: integer + value: '0x10' + PERM_ALL: + tooltip: '' + type: integer + value: '0x7FFFFFFF' + PERM_COPY: + tooltip: '' + type: integer + value: '0x8000' + PERM_MODIFY: + tooltip: '' + type: integer + value: '0x4000' + PERM_MOVE: + tooltip: '' + type: integer + value: '0x80000' + PERM_TRANSFER: + tooltip: '' + type: integer + value: '0x2000' + PI: + tooltip: 3.14159265 - The number of radians in a semi-circle. + type: float + value: '3.14159265' + PING_PONG: + tooltip: 'Play animation going forwards, then backwards.' + type: integer + value: '0x8' + PI_BY_TWO: + tooltip: 1.57079633 - The number of radians in a quarter circle. + type: float + value: '1.57079633' + PRIM_ALLOW_UNSIT: + tooltip: >- + Prim parameter for restricting manual standing for seated avatars in an + experience.\nIgnored if the avatar was not seated via a call to + llSitOnLink. + type: integer + value: 39 + PRIM_ALPHA_MODE: + tooltip: >- + Prim parameter for materials using integer face, integer alpha_mode, + integer alpha_cutoff.\nDefines how the alpha channel of the diffuse + texture should be rendered.\nValid options for alpha_mode are + PRIM_ALPHA_MODE_BLEND, _NONE, _MASK, and _EMISSIVE.\nalpha_cutoff is used + only for PRIM_ALPHA_MODE_MASK. + type: integer + value: 38 + PRIM_ALPHA_MODE_BLEND: + tooltip: >- + Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse + texture's alpha channel should be rendered as alpha-blended. + type: integer + value: 1 + PRIM_ALPHA_MODE_EMISSIVE: + tooltip: >- + Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse + texture's alpha channel should be rendered as an emissivity mask. + type: integer + value: 3 + PRIM_ALPHA_MODE_MASK: + tooltip: >- + Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse + texture's alpha channel should be rendered as fully opaque for alpha + values above alpha_cutoff and fully transparent otherwise. + type: integer + value: 2 + PRIM_ALPHA_MODE_NONE: + tooltip: >- + Prim parameter setting for PRIM_ALPHA_MODE.\nIndicates that the diffuse + texture's alpha channel should be ignored. + type: integer + value: 0 + PRIM_BUMP_BARK: + tooltip: '' + type: integer + value: 4 + PRIM_BUMP_BLOBS: + tooltip: '' + type: integer + value: 12 + PRIM_BUMP_BRICKS: + tooltip: '' + type: integer + value: 5 + PRIM_BUMP_BRIGHT: + tooltip: '' + type: integer + value: 1 + PRIM_BUMP_CHECKER: + tooltip: '' + type: integer + value: 6 + PRIM_BUMP_CONCRETE: + tooltip: '' + type: integer + value: 7 + PRIM_BUMP_DARK: + tooltip: '' + type: integer + value: 2 + PRIM_BUMP_DISKS: + tooltip: '' + type: integer + value: 10 + PRIM_BUMP_GRAVEL: + tooltip: '' + type: integer + value: 11 + PRIM_BUMP_LARGETILE: + tooltip: '' + type: integer + value: 14 + PRIM_BUMP_NONE: + tooltip: '' + type: integer + value: 0 + PRIM_BUMP_SHINY: + tooltip: '' + type: integer + value: 19 + PRIM_BUMP_SIDING: + tooltip: '' + type: integer + value: 13 + PRIM_BUMP_STONE: + tooltip: '' + type: integer + value: 9 + PRIM_BUMP_STUCCO: + tooltip: '' + type: integer + value: 15 + PRIM_BUMP_SUCTION: + tooltip: '' + type: integer + value: 16 + PRIM_BUMP_TILE: + tooltip: '' + type: integer + value: 8 + PRIM_BUMP_WEAVE: + tooltip: '' + type: integer + value: 17 + PRIM_BUMP_WOOD: + tooltip: '' + type: integer + value: 3 + PRIM_CAST_SHADOWS: + deprecated: true + tooltip: '' + type: integer + value: 24 + PRIM_CLICK_ACTION: + tooltip: '[PRIM_CLICK_ACTION, integer CLICK_ACTION_*]' + type: integer + value: 43 + PRIM_COLLISION_SOUND: + tooltip: Collision sound uuid and volume for this prim + type: integer + value: 53 + PRIM_COLOR: + tooltip: >- + [PRIM_COLOR, integer face, vector color, float alpha] + + integer face – face number or ALL_SIDES vector color – color in RGB (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white) float alpha – from + 0.0 (clear) to 1.0 (solid) (0.0 <= alpha <= 1.0) + type: integer + value: 18 + PRIM_DAMAGE: + tooltip: Damage and damage type assigned to this prim. + type: integer + value: 51 + PRIM_DESC: + tooltip: '[PRIM_DESC, string description]' + type: integer + value: 28 + PRIM_FLEXIBLE: + tooltip: >- + [ PRIM_FLEXIBLE, integer boolean, integer softness, float gravity, float + friction, float wind, float tension, vector force ] + +integer boolean – + TRUE enables, FALSE disables +integer softness – ranges from 0 to 3 +float + gravity – ranges from -10.0 to 10.0 +float friction – ranges from 0.0 to + 10.0 +float wind – ranges from 0.0 to 10.0 +float tension – ranges from + 0.0 to 10.0 +vector force + type: integer + value: 21 + PRIM_FULLBRIGHT: + tooltip: '[ PRIM_FULLBRIGHT, integer face, integer boolean ]' + type: integer + value: 20 + PRIM_GLOW: + tooltip: >- + PRIM_GLOW is used to get or set the glow status of the face.\n[ PRIM_GLOW, + integer face, float intensity ] + type: integer + value: 25 + PRIM_GLTF_ALPHA_MODE_BLEND: + tooltip: Prim parameter setting for PRIM_GLTF_BASE_COLOR alpha mode "BLEND". + type: integer + value: 1 + PRIM_GLTF_ALPHA_MODE_MASK: + tooltip: Prim parameter setting for PRIM_GLTF_BASE_COLOR alpha mode "MASK". + type: integer + value: 2 + PRIM_GLTF_ALPHA_MODE_OPAQUE: + tooltip: Prim parameter setting for PRIM_GLTF_BASE_COLOR alpha mode "OPAQUE". + type: integer + value: 0 + PRIM_GLTF_BASE_COLOR: + tooltip: >- + Prim parameter for materials using integer face, string texture, vector + repeats, vector offsets, float rotation_in_radians, vector color, integer + alpha_mode, float alpha_cutoff, boolean double_sided.\nValid options for + alpha_mode are PRIM_ALPHA_MODE_BLEND, _NONE, and _MASK.\nalpha_cutoff is + used only for PRIM_ALPHA_MODE_MASK. + type: integer + value: 48 + PRIM_GLTF_EMISSIVE: + tooltip: >- + Prim parameter for GLTF materials using integer face, string texture, + vector repeats, vector offsets, float rotation_in_radians, vector color + type: integer + value: 46 + PRIM_GLTF_METALLIC_ROUGHNESS: + tooltip: >- + Prim parameter for GLTF materials using integer face, string texture, + vector repeats, vector offsets, float rotation_in_radians, float + metallic_factor, float roughness_factor + type: integer + value: 47 + PRIM_GLTF_NORMAL: + tooltip: >- + Prim parameter for GLTF materials using integer face, string texture, + vector repeats, vector offsets, float rotation_in_radians + type: integer + value: 45 + PRIM_HEALTH: + tooltip: Health value for this prim + type: integer + value: 52 + PRIM_HOLE_CIRCLE: + tooltip: '' + type: integer + value: '0x10' + PRIM_HOLE_DEFAULT: + tooltip: '' + type: integer + value: '0x00' + PRIM_HOLE_SQUARE: + tooltip: '' + type: integer + value: '0x20' + PRIM_HOLE_TRIANGLE: + tooltip: '' + type: integer + value: '0x30' + PRIM_LINK_TARGET: + tooltip: |- + [ PRIM_LINK_TARGET, integer link_target ] + Used to get or set multiple links with a single PrimParameters call. + type: integer + value: 34 + PRIM_MATERIAL: + tooltip: '[ PRIM_MATERIAL, integer PRIM_MATERIAL_* ]' + type: integer + value: 2 + PRIM_MATERIAL_DENSITY: + private: true + tooltip: '' + type: integer + value: '0x1' + PRIM_MATERIAL_FLESH: + tooltip: '' + type: integer + value: 4 + PRIM_MATERIAL_FRICTION: + private: true + tooltip: '' + type: integer + value: '0x2' + PRIM_MATERIAL_GLASS: + tooltip: '' + type: integer + value: 2 + PRIM_MATERIAL_GRAVITY_MULTIPLIER: + private: true + tooltip: '' + type: integer + value: '0x8' + PRIM_MATERIAL_LIGHT: + tooltip: '' + type: integer + value: 7 + PRIM_MATERIAL_METAL: + tooltip: '' + type: integer + value: 1 + PRIM_MATERIAL_PLASTIC: + tooltip: '' + type: integer + value: 5 + PRIM_MATERIAL_RESTITUTION: + private: true + tooltip: '' + type: integer + value: '0x4' + PRIM_MATERIAL_RUBBER: + tooltip: '' + type: integer + value: 6 + PRIM_MATERIAL_STONE: + tooltip: '' + type: integer + value: 0 + PRIM_MATERIAL_WOOD: + tooltip: '' + type: integer + value: 3 + PRIM_MEDIA_ALT_IMAGE_ENABLE: + tooltip: >- + Boolean. Gets/Sets the default image state (the image that the user sees + before a piece of media is active) for the chosen face. The default image + is specified by Second Life's server for that media type. + type: integer + value: 0 + PRIM_MEDIA_AUTO_LOOP: + tooltip: Boolean. Gets/Sets whether auto-looping is enabled. + type: integer + value: 4 + PRIM_MEDIA_AUTO_PLAY: + tooltip: >- + Boolean. Gets/Sets whether the media auto-plays when a Resident can view + it. + type: integer + value: 5 + PRIM_MEDIA_AUTO_SCALE: + tooltip: >- + Boolean. Gets/Sets whether auto-scaling is enabled. Auto-scaling forces + the media to the full size of the texture. + type: integer + value: 6 + PRIM_MEDIA_AUTO_ZOOM: + tooltip: >- + Boolean. Gets/Sets whether clicking the media triggers auto-zoom and + auto-focus on the media. + type: integer + value: 7 + PRIM_MEDIA_CONTROLS: + tooltip: >- + Integer. Gets/Sets the style of controls. Can be either + PRIM_MEDIA_CONTROLS_STANDARD or PRIM_MEDIA_CONTROLS_MINI. + type: integer + value: 1 + PRIM_MEDIA_CONTROLS_MINI: + tooltip: Mini web navigation controls; does not include an address bar. + type: integer + value: 1 + PRIM_MEDIA_CONTROLS_STANDARD: + tooltip: Standard web navigation controls. + type: integer + value: 0 + PRIM_MEDIA_CURRENT_URL: + tooltip: >- + String. Gets/Sets the current url displayed on the chosen face. Changing + this URL causes navigation. 1024 characters Maximum. + type: integer + value: 2 + PRIM_MEDIA_FIRST_CLICK_INTERACT: + tooltip: Boolean. Gets/Sets whether the first click interaction is enabled. + type: integer + value: 8 + PRIM_MEDIA_HEIGHT_PIXELS: + tooltip: Integer. Gets/Sets the height of the media in pixels. + type: integer + value: 10 + PRIM_MEDIA_HOME_URL: + tooltip: >- + String. Gets/Sets the home URL for the chosen face. 1024 characters + maximum. + type: integer + value: 3 + PRIM_MEDIA_MAX_HEIGHT_PIXELS: + tooltip: '' + type: integer + value: 2048 + PRIM_MEDIA_MAX_URL_LENGTH: + tooltip: '' + type: integer + value: 1024 + PRIM_MEDIA_MAX_WHITELIST_COUNT: + tooltip: '' + type: integer + value: 64 + PRIM_MEDIA_MAX_WHITELIST_SIZE: + tooltip: '' + type: integer + value: 1024 + PRIM_MEDIA_MAX_WIDTH_PIXELS: + tooltip: '' + type: integer + value: 2048 + PRIM_MEDIA_PARAM_MAX: + tooltip: '' + type: integer + value: 14 + PRIM_MEDIA_PERMS_CONTROL: + tooltip: >- + Integer. Gets/Sets the permissions mask that control who can see the media + control bar above the object:: PRIM_MEDIA_PERM_ANYONE, + PRIM_MEDIA_PERM_GROUP, PRIM_MEDIA_PERM_NONE, PRIM_MEDIA_PERM_OWNER + type: integer + value: 14 + PRIM_MEDIA_PERMS_INTERACT: + tooltip: >- + Integer. Gets/Sets the permissions mask that control who can interact with + the object: PRIM_MEDIA_PERM_ANYONE, PRIM_MEDIA_PERM_GROUP, + PRIM_MEDIA_PERM_NONE, PRIM_MEDIA_PERM_OWNER + type: integer + value: 13 + PRIM_MEDIA_PERM_ANYONE: + tooltip: '' + type: integer + value: 4 + PRIM_MEDIA_PERM_GROUP: + tooltip: '' + type: integer + value: 2 + PRIM_MEDIA_PERM_NONE: + tooltip: '' + type: integer + value: 0 + PRIM_MEDIA_PERM_OWNER: + tooltip: '' + type: integer + value: 1 + PRIM_MEDIA_WHITELIST: + tooltip: >- + String. Gets/Sets the white-list as a string of escaped, comma-separated + URLs. This string can hold up to 64 URLs or 1024 characters, whichever + comes first. + type: integer + value: 12 + PRIM_MEDIA_WHITELIST_ENABLE: + tooltip: >- + Boolean. Gets/Sets whether navigation is restricted to URLs in + PRIM_MEDIA_WHITELIST. + type: integer + value: 11 + PRIM_MEDIA_WIDTH_PIXELS: + tooltip: Integer. Gets/Sets the width of the media in pixels. + type: integer + value: 9 + PRIM_NAME: + tooltip: '[ PRIM_NAME, string name ]' + type: integer + value: 27 + PRIM_NORMAL: + tooltip: >- + Prim parameter for materials using integer face, string texture, vector + repeats, vector offsets, float rotation_in_radians + type: integer + value: 37 + PRIM_OMEGA: + tooltip: >- + [ PRIM_OMEGA, vector axis, float spinrate, float gain ] + + vector axis – arbitrary axis to rotate the object around float spinrate – + rate of rotation in radians per second float gain – also modulates the + final spinrate and disables the rotation behavior if zero + type: integer + value: 32 + PRIM_PHANTOM: + tooltip: '[ PRIM_PHANTOM, integer boolean ]' + type: integer + value: 5 + PRIM_PHYSICS: + tooltip: '[ PRIM_PHYSICS, integer boolean ]' + type: integer + value: 3 + PRIM_PHYSICS_SHAPE_CONVEX: + tooltip: >- + Use the convex hull of the prim shape for physics (this is the default for + mesh objects). + type: integer + value: 2 + PRIM_PHYSICS_SHAPE_NONE: + tooltip: >- + Ignore this prim in the physics shape. NB: This cannot be applied to the + root prim. + type: integer + value: 1 + PRIM_PHYSICS_SHAPE_PRIM: + tooltip: >- + Use the normal prim shape for physics (this is the default for all + non-mesh objects). + type: integer + value: 0 + PRIM_PHYSICS_SHAPE_TYPE: + tooltip: "Allows you to set the physics shape type of a prim via lsl. Permitted values are:\n\t\t\tPRIM_PHYSICS_SHAPE_NONE, PRIM_PHYSICS_SHAPE_PRIM, PRIM_PHYSICS_SHAPE_CONVEX" + type: integer + value: 30 + PRIM_POINT_LIGHT: + tooltip: >- + [ PRIM_POINT_LIGHT, integer boolean, vector linear_color, float intensity, + float radius, float falloff ] + + integer boolean – TRUE enables, FALSE disables vector linear_color – + linear color in RGB (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = + white) float intensity – ranges from 0.0 to 1.0 float radius – ranges from + 0.1 to 20.0 float falloff – ranges from 0.01 to 2.0 + type: integer + value: 23 + PRIM_POSITION: + tooltip: >- + [ PRIM_POSITION, vector position ] + + vector position – position in region or local coordinates depending upon + the situation + type: integer + value: 6 + PRIM_POS_LOCAL: + tooltip: |- + PRIM_POS_LOCAL, vector position ] + vector position - position in local coordinates + type: integer + value: 33 + PRIM_PROJECTOR: + tooltip: '[ PRIM_PROJECTOR, string texture, float fov, float focus, float ambiance ]' + type: integer + value: 42 + PRIM_REFLECTION_PROBE: + tooltip: >- + Allows you to configure the object as a custom-placed reflection probe, + for image-based lighting (IBL). Only objects in the influence volume of + the reflection probe object are affected. + type: integer + value: 44 + PRIM_REFLECTION_PROBE_BOX: + tooltip: >- + This is a flag option used with llGetPrimitiveParams and related functions + when the parameter is PRIM_REFLECTION_PROBE. When set, the reflection + probe is a box. When unset, the reflection probe is a sphere. + type: integer + value: 1 + PRIM_REFLECTION_PROBE_DYNAMIC: + tooltip: >- + This is a flag option used with llGetPrimitiveParams and related functions + when the parameter is PRIM_REFLECTION_PROBE. When set, the reflection + probe includes avatars in IBL effects. When unset, the reflection probe + excludes avatars. + type: integer + value: 2 + PRIM_REFLECTION_PROBE_MIRROR: + tooltip: >- + This is a flag option used with llGetPrimitiveParams and related functions + when the parameter is PRIM_REFLECTION_PROBE. When set, the reflection + probe acts as a mirror. + type: integer + value: 4 + PRIM_RENDER_MATERIAL: + tooltip: '[ PRIM_RENDER_MATERIAL, integer face, string material ]' + type: integer + value: 49 + PRIM_ROTATION: + tooltip: '[ PRIM_ROT_LOCAL, rotation global_rot ]' + type: integer + value: 8 + PRIM_ROT_LOCAL: + tooltip: '[ PRIM_ROT_LOCAL, rotation local_rot ]' + type: integer + value: 29 + PRIM_SCRIPTED_SIT_ONLY: + tooltip: >- + Prim parameter for restricting manual sitting on this prim.\nSitting must + be initiated via call to llSitOnLink. + type: integer + value: 40 + PRIM_SCULPT_FLAG_ANIMESH: + tooltip: Mesh is animated. + type: integer + value: 32 + PRIM_SCULPT_FLAG_INVERT: + tooltip: Render inside out (inverts the normals). + type: integer + value: 64 + PRIM_SCULPT_FLAG_MIRROR: + tooltip: Render an X axis mirror of the sculpty. + type: integer + value: 128 + PRIM_SCULPT_TYPE_CYLINDER: + tooltip: '' + type: integer + value: 4 + PRIM_SCULPT_TYPE_MASK: + tooltip: '' + type: integer + value: 7 + PRIM_SCULPT_TYPE_MESH: + tooltip: '' + type: integer + value: 5 + PRIM_SCULPT_TYPE_PLANE: + tooltip: '' + type: integer + value: 3 + PRIM_SCULPT_TYPE_SPHERE: + tooltip: '' + type: integer + value: 1 + PRIM_SCULPT_TYPE_TORUS: + tooltip: '' + type: integer + value: 2 + PRIM_SHINY_HIGH: + tooltip: '' + type: integer + value: 3 + PRIM_SHINY_LOW: + tooltip: '' + type: integer + value: 1 + PRIM_SHINY_MEDIUM: + tooltip: '' + type: integer + value: 2 + PRIM_SHINY_NONE: + tooltip: '' + type: integer + value: 0 + PRIM_SIT_FLAGS: + tooltip: '' + type: integer + value: 50 + PRIM_SIT_TARGET: + tooltip: '[ PRIM_SIT_TARGET, integer boolean, vector offset, rotation rot ]' + type: integer + value: 41 + PRIM_SIZE: + tooltip: '[ PRIM_SIZE, vector size ]' + type: integer + value: 7 + PRIM_SLICE: + tooltip: '[ PRIM_SLICE, vector slice ]' + type: integer + value: 35 + PRIM_SPECULAR: + tooltip: >- + Prim parameter for materials using integer face, string texture, vector + repeats, vector offsets, float rotation_in_radians, vector color, integer + glossy, integer environment + type: integer + value: 36 + PRIM_TEMP_ON_REZ: + tooltip: '' + type: integer + value: 4 + PRIM_TEXGEN: + tooltip: '[ PRIM_TEXGEN, integer face, PRIM_TEXGEN_* ]' + type: integer + value: 22 + PRIM_TEXGEN_DEFAULT: + tooltip: '' + type: integer + value: 0 + PRIM_TEXGEN_PLANAR: + tooltip: '' + type: integer + value: 1 + PRIM_TEXT: + tooltip: '[ PRIM_TEXT, string text, vector color, float alpha ]' + type: integer + value: 26 + PRIM_TEXTURE: + tooltip: >- + [ PRIM_TEXTURE, integer face, string texture, vector repeats, vector + offsets, float rotation_in_radians ] + type: integer + value: 17 + PRIM_TYPE: + tooltip: '' + type: integer + value: 9 + PRIM_TYPE_BOX: + tooltip: '' + type: integer + value: 0 + PRIM_TYPE_CYLINDER: + tooltip: '' + type: integer + value: 1 + PRIM_TYPE_PRISM: + tooltip: '' + type: integer + value: 2 + PRIM_TYPE_RING: + tooltip: '' + type: integer + value: 6 + PRIM_TYPE_SCULPT: + tooltip: '' + type: integer + value: 7 + PRIM_TYPE_SPHERE: + tooltip: '' + type: integer + value: 3 + PRIM_TYPE_TORUS: + tooltip: '' + type: integer + value: 4 + PRIM_TYPE_TUBE: + tooltip: '' + type: integer + value: 5 + PROFILE_NONE: + tooltip: Disables profiling + type: integer + value: 0 + PROFILE_SCRIPT_MEMORY: + tooltip: Enables memory profiling + type: integer + value: 1 + PSYS_PART_BF_DEST_COLOR: + tooltip: '' + type: integer + value: 2 + PSYS_PART_BF_ONE: + tooltip: '' + type: integer + value: 0 + PSYS_PART_BF_ONE_MINUS_DEST_COLOR: + tooltip: '' + type: integer + value: 4 + PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA: + tooltip: '' + type: integer + value: 9 + PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR: + tooltip: '' + type: integer + value: 5 + PSYS_PART_BF_SOURCE_ALPHA: + tooltip: '' + type: integer + value: 7 + PSYS_PART_BF_SOURCE_COLOR: + tooltip: '' + type: integer + value: 3 + PSYS_PART_BF_ZERO: + tooltip: '' + type: integer + value: 1 + PSYS_PART_BLEND_FUNC_DEST: + tooltip: '' + type: integer + value: 25 + PSYS_PART_BLEND_FUNC_SOURCE: + tooltip: '' + type: integer + value: 24 + PSYS_PART_BOUNCE_MASK: + tooltip: Particles bounce off of a plane at the objects Z height. + type: integer + value: '0x4' + PSYS_PART_EMISSIVE_MASK: + tooltip: The particle glows. + type: integer + value: '0x100' + PSYS_PART_END_ALPHA: + tooltip: A float which determines the ending alpha of the object. + type: integer + value: 4 + PSYS_PART_END_COLOR: + tooltip: 'A vector which determines the ending color of the object.' + type: integer + value: 3 + PSYS_PART_END_GLOW: + tooltip: '' + type: integer + value: 27 + PSYS_PART_END_SCALE: + tooltip: >- + A vector , which is the ending size of the particle billboard + in meters (z is ignored). + type: integer + value: 6 + PSYS_PART_FLAGS: + tooltip: >- + Each particle that is emitted by the particle system is simulated based on + the following flags. To use multiple flags, bitwise or (|) them together. + type: integer + value: 0 + PSYS_PART_FOLLOW_SRC_MASK: + tooltip: The particle position is relative to the source objects position. + type: integer + value: '0x10' + PSYS_PART_FOLLOW_VELOCITY_MASK: + tooltip: >- + The particle orientation is rotated so the vertical axis faces towards the + particle velocity. + type: integer + value: '0x20' + PSYS_PART_INTERP_COLOR_MASK: + tooltip: >- + Interpolate both the color and alpha from the start value to the end + value. + type: integer + value: '0x1' + PSYS_PART_INTERP_SCALE_MASK: + tooltip: Interpolate the particle scale from the start value to the end value. + type: integer + value: '0x2' + PSYS_PART_MAX_AGE: + tooltip: Age in seconds of a particle at which it dies. + type: integer + value: 7 + PSYS_PART_RIBBON_MASK: + tooltip: '' + type: integer + value: '0x400' + PSYS_PART_START_ALPHA: + tooltip: A float which determines the starting alpha of the object. + type: integer + value: 2 + PSYS_PART_START_COLOR: + tooltip: 'A vector which determines the starting color of the object.' + type: integer + value: 1 + PSYS_PART_START_GLOW: + tooltip: '' + type: integer + value: 26 + PSYS_PART_START_SCALE: + tooltip: >- + A vector , which is the starting size of the particle billboard + in meters (z is ignored). + type: integer + value: 5 + PSYS_PART_TARGET_LINEAR_MASK: + tooltip: '' + type: integer + value: '0x80' + PSYS_PART_TARGET_POS_MASK: + tooltip: >- + The particle heads towards the location of the target object as defined by + PSYS_SRC_TARGET_KEY. + type: integer + value: '0x40' + PSYS_PART_WIND_MASK: + tooltip: Particles have their velocity damped towards the wind velocity. + type: integer + value: '0x8' + PSYS_SRC_ACCEL: + tooltip: 'A vector which is the acceleration to apply on particles.' + type: integer + value: 8 + PSYS_SRC_ANGLE_BEGIN: + tooltip: >- + Area in radians specifying where particles will NOT be created (for ANGLE + patterns) + type: integer + value: 22 + PSYS_SRC_ANGLE_END: + tooltip: >- + Area in radians filled with particles (for ANGLE patterns) (if lower than + PSYS_SRC_ANGLE_BEGIN, acts as PSYS_SRC_ANGLE_BEGIN itself, and + PSYS_SRC_ANGLE_BEGIN acts as PSYS_SRC_ANGLE_END). + type: integer + value: 23 + PSYS_SRC_BURST_PART_COUNT: + tooltip: How many particles to release in a burst. + type: integer + value: 15 + PSYS_SRC_BURST_RADIUS: + tooltip: What distance from the center of the object to create the particles. + type: integer + value: 16 + PSYS_SRC_BURST_RATE: + tooltip: How often to release a particle burst (float seconds). + type: integer + value: 13 + PSYS_SRC_BURST_SPEED_MAX: + tooltip: Maximum speed that a particle should be moving. + type: integer + value: 18 + PSYS_SRC_BURST_SPEED_MIN: + tooltip: Minimum speed that a particle should be moving. + type: integer + value: 17 + PSYS_SRC_INNERANGLE: + tooltip: "Specifies the inner angle of the arc created by the PSYS_SRC_PATTERN_ANGLE or PSYS_SRC_PATTERN_ANGLE_CONE source pattern.\n\t\t\tThe area specified will NOT have particles in it." + type: integer + value: 10 + PSYS_SRC_MAX_AGE: + tooltip: 'How long this particle system should last, 0.0 means forever.' + type: integer + value: 19 + PSYS_SRC_OBJ_REL_MASK: + private: true + tooltip: '' + type: integer + value: '0x1' + PSYS_SRC_OMEGA: + tooltip: >- + Sets the angular velocity to rotate the axis that SRC_PATTERN_ANGLE and + SRC_PATTERN_ANGLE_CONE use. + type: integer + value: 21 + PSYS_SRC_OUTERANGLE: + tooltip: "Specifies the outer angle of the arc created by the PSYS_SRC_PATTERN_ANGLE or PSYS_SRC_PATTERN_ANGLE_CONE source pattern.\n\t\t\tThe area between the outer and inner angle will be filled with particles." + type: integer + value: 11 + PSYS_SRC_PATTERN: + tooltip: "The pattern which is used to generate particles.\n\t\t\tUse one of the following values: PSYS_SRC_PATTERN Values." + type: integer + value: 9 + PSYS_SRC_PATTERN_ANGLE: + tooltip: >- + Shoot particles across a 2 dimensional area defined by the arc created + from PSYS_SRC_OUTERANGLE. There will be an open area defined by + PSYS_SRC_INNERANGLE within the larger arc. + type: integer + value: '0x04' + PSYS_SRC_PATTERN_ANGLE_CONE: + tooltip: >- + Shoot particles out in a 3 dimensional cone with an outer arc of + PSYS_SRC_OUTERANGLE and an inner open area defined by PSYS_SRC_INNERANGLE. + type: integer + value: '0x08' + PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY: + tooltip: '' + type: integer + value: '0x10' + PSYS_SRC_PATTERN_DROP: + tooltip: Drop particles at the source position. + type: integer + value: '0x01' + PSYS_SRC_PATTERN_EXPLODE: + tooltip: 'Shoot particles out in all directions, using the burst parameters.' + type: integer + value: '0x02' + PSYS_SRC_TARGET_KEY: + tooltip: >- + The key of a target object to move towards if PSYS_PART_TARGET_POS_MASK is + enabled. + type: integer + value: 20 + PSYS_SRC_TEXTURE: + tooltip: An asset name for the texture to use for the particles. + type: integer + value: 12 + PUBLIC_CHANNEL: + tooltip: >- + PUBLIC_CHANNEL is an integer constant that, when passed to llSay, + llWhisper, or llShout as a channel parameter, will print text to the + publicly heard chat channel. + type: integer + value: 0 + PURSUIT_FUZZ_FACTOR: + tooltip: Selects a random destination near the offset. + type: integer + value: 3 + PURSUIT_GOAL_TOLERANCE: + tooltip: '' + type: integer + value: 5 + PURSUIT_INTERCEPT: + tooltip: Define whether the character attempts to predict the target's location. + type: integer + value: 4 + PURSUIT_OFFSET: + tooltip: Go to a position offset from the target. + type: integer + value: 1 + PU_EVADE_HIDDEN: + tooltip: Triggered when an llEvade character thinks it has hidden from its pursuer. + type: integer + value: '0x07' + PU_EVADE_SPOTTED: + tooltip: Triggered when an llEvade character switches from hiding to running + type: integer + value: '0x08' + PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED: + tooltip: '' + type: integer + value: 10 + PU_FAILURE_INVALID_GOAL: + tooltip: Goal is not on the navigation-mesh and cannot be reached. + type: integer + value: '0x03' + PU_FAILURE_INVALID_START: + tooltip: >- + Character cannot navigate from the current location - e.g., the character + is off the navmesh or too high above it. + type: integer + value: '0x02' + PU_FAILURE_NO_NAVMESH: + tooltip: >- + This is a fatal error reported to a character when there is no navmesh for + the region. This usually indicates a server failure and users should file + a bug report and include the time and region in which they received this + message. + type: integer + value: '0x09' + PU_FAILURE_NO_VALID_DESTINATION: + tooltip: >- + There is no good place for the character to go - e.g., it is patrolling + and all the patrol points are now unreachable. + type: integer + value: '0x06' + PU_FAILURE_OTHER: + tooltip: '' + type: integer + value: 1000000 + PU_FAILURE_PARCEL_UNREACHABLE: + tooltip: '' + type: integer + value: 11 + PU_FAILURE_TARGET_GONE: + tooltip: >- + Target (for llPursue or llEvade) can no longer be tracked - e.g., it left + the region or is an avatar that is now more than about 30m outside the + region. + type: integer + value: '0x05' + PU_FAILURE_UNREACHABLE: + tooltip: >- + Goal is no longer reachable for some reason - e.g., an obstacle blocks the + path. + type: integer + value: '0x04' + PU_GOAL_REACHED: + tooltip: >- + Character has reached the goal and will stop or choose a new goal (if + wandering). + type: integer + value: '0x01' + PU_SLOWDOWN_DISTANCE_REACHED: + tooltip: Character is near current goal. + type: integer + value: '0x00' + RAD_TO_DEG: + tooltip: >- + 57.2957795 - Number of degrees per radian. You can use this number to + convert radians to degrees by multiplying the radians by this number. + type: float + value: '57.2957795' + RCERR_CAST_TIME_EXCEEDED: + tooltip: '' + type: integer + value: -3 + RCERR_SIM_PERF_LOW: + tooltip: '' + type: integer + value: -2 + RCERR_UNKNOWN: + tooltip: '' + type: integer + value: -1 + RC_DATA_FLAGS: + tooltip: '' + type: integer + value: 2 + RC_DETECT_PHANTOM: + tooltip: '' + type: integer + value: 1 + RC_GET_LINK_NUM: + tooltip: '' + type: integer + value: 4 + RC_GET_NORMAL: + tooltip: '' + type: integer + value: 1 + RC_GET_ROOT_KEY: + tooltip: '' + type: integer + value: 2 + RC_MAX_HITS: + tooltip: '' + type: integer + value: 3 + RC_REJECT_AGENTS: + tooltip: '' + type: integer + value: 1 + RC_REJECT_LAND: + tooltip: '' + type: integer + value: 8 + RC_REJECT_NONPHYSICAL: + tooltip: '' + type: integer + value: 4 + RC_REJECT_PHYSICAL: + tooltip: '' + type: integer + value: 2 + RC_REJECT_TYPES: + tooltip: '' + type: integer + value: 0 + REGION_FLAG_ALLOW_DAMAGE: + tooltip: '' + type: integer + value: '0x1' + REGION_FLAG_ALLOW_DIRECT_TELEPORT: + tooltip: '' + type: integer + value: '0x100000' + REGION_FLAG_BLOCK_FLY: + tooltip: '' + type: integer + value: '0x80000' + REGION_FLAG_BLOCK_FLYOVER: + tooltip: '' + type: integer + value: '0x8000000' + REGION_FLAG_BLOCK_TERRAFORM: + tooltip: '' + type: integer + value: '0x40' + REGION_FLAG_DISABLE_COLLISIONS: + tooltip: '' + type: integer + value: '0x1000' + REGION_FLAG_DISABLE_PHYSICS: + tooltip: '' + type: integer + value: '0x4000' + REGION_FLAG_FIXED_SUN: + tooltip: '' + type: integer + value: '0x10' + REGION_FLAG_RESTRICT_PUSHOBJECT: + tooltip: '' + type: integer + value: '0x400000' + REGION_FLAG_SANDBOX: + tooltip: '' + type: integer + value: '0x100' + REMOTE_DATA_CHANNEL: + deprecated: true + tooltip: '' + type: integer + value: 1 + REMOTE_DATA_REPLY: + deprecated: true + tooltip: '' + type: integer + value: 3 + REMOTE_DATA_REQUEST: + deprecated: true + tooltip: '' + type: integer + value: 2 + REQUIRE_LINE_OF_SIGHT: + tooltip: Define whether the character needs a line-of-sight to give chase. + type: integer + value: 2 + RESTITUTION: + tooltip: >- + Used with llSetPhysicsMaterial to enable the density value. Must be + between 0.0 and 1.0 + type: integer + value: 4 + REVERSE: + tooltip: Play animation in reverse direction. + type: integer + value: '0x4' + REZ_ACCEL: + tooltip: >- + Acceleration forced applied to the rezzed object. [vector force, integer + rel] + type: integer + value: '5' + REZ_DAMAGE: + tooltip: >- + Damage applied by the object when it collides with an agent. [float + damage] + type: integer + value: '8' + REZ_DAMAGE_TYPE: + tooltip: >- + Set the damage type applied when this object collides. [integer + damage_type] + type: integer + value: '12' + REZ_FLAGS: + tooltip: 'Rez flags to set on the newly rezzed object. [integer flags]' + type: integer + value: '1' + REZ_FLAG_BLOCK_GRAB_OBJECT: + tooltip: Prevent grabbing the object. + type: integer + value: '0x0080' + REZ_FLAG_DIE_ON_COLLIDE: + tooltip: Object will die after its first collision. + type: integer + value: '0x0008' + REZ_FLAG_DIE_ON_NOENTRY: + tooltip: Object will die if it attempts to enter a parcel that it can not. + type: integer + value: '0x0010' + REZ_FLAG_NO_COLLIDE_FAMILY: + tooltip: >- + Object will not trigger collision events with other objects created by the + same rezzer. + type: integer + value: '0x0040' + REZ_FLAG_NO_COLLIDE_OWNER: + tooltip: Object will not trigger collision events with its owner. + type: integer + value: '0x0020' + REZ_FLAG_PHANTOM: + tooltip: Make the object phantom on rez. + type: integer + value: '0x0004' + REZ_FLAG_PHYSICAL: + tooltip: Make the object physical on rez. + type: integer + value: '0x0002' + REZ_FLAG_TEMP: + tooltip: Flag the object as temp on rez. + type: integer + value: '0x0001' + REZ_LOCK_AXES: + tooltip: 'Prevent the object from rotating around some axes. [vector locks]' + type: integer + value: '11' + REZ_OMEGA: + tooltip: >- + Omega applied to the rezzed object. [vector axis, integer rel, float spin, + float gain] + type: integer + value: '7' + REZ_PARAM: + tooltip: 'Integer value to pass to the object as its rez parameter. [integer param]' + type: integer + value: '0' + REZ_PARAM_STRING: + tooltip: 'A string value to pass to the object as its rez parameter. [string param]' + type: integer + value: '13' + REZ_POS: + tooltip: >- + Position at which to rez the new object. [vector position, integer rel, + integer atroot] + type: integer + value: '2' + REZ_ROT: + tooltip: 'Rotation applied to newly rezzed object. [rotation rot, integer rel]' + type: integer + value: '3' + REZ_SOUND: + tooltip: >- + Sound attached to the rezzed object. [string name, float volume, integer + loop] + type: integer + value: '9' + REZ_SOUND_COLLIDE: + tooltip: 'Sound played by the object on a collision. [string name, float volume]' + type: integer + value: '10' + REZ_TORQUE: + private: true + tooltip: '' + type: integer + value: '6' + REZ_VEL: + tooltip: >- + Initial velocity of rezzed object. [vector vel, integer rel, integer + inherit] + type: integer + value: '4' + ROTATE: + tooltip: Animate texture rotation. + type: integer + value: '0x20' + SCALE: + tooltip: Animate the texture scale. + type: integer + value: '0x40' + SCRIPTED: + tooltip: Scripted in-world objects. + type: integer + value: '0x8' + SIM_STAT_ACTIVE_SCRIPT_COUNT: + tooltip: Number of active scripts. + type: integer + value: 12 + SIM_STAT_AGENT_COUNT: + tooltip: Number of agents in region. + type: integer + value: 10 + SIM_STAT_AGENT_MS: + tooltip: Time spent in 'agent' segment of simulation frame. + type: integer + value: 7 + SIM_STAT_AGENT_UPDATES: + tooltip: Agent updates per second. + type: integer + value: 2 + SIM_STAT_AI_MS: + tooltip: Time spent on AI step. + type: integer + value: 26 + SIM_STAT_ASSET_DOWNLOADS: + tooltip: Pending asset download count. + type: integer + value: 15 + SIM_STAT_ASSET_UPLOADS: + tooltip: Pending asset upload count. + type: integer + value: 16 + SIM_STAT_CHILD_AGENT_COUNT: + tooltip: Number of child agents in region. + type: integer + value: 11 + SIM_STAT_FRAME_MS: + tooltip: Total frame time. + type: integer + value: 3 + SIM_STAT_IMAGE_MS: + tooltip: Time spent in 'image' segment of simulation frame. + type: integer + value: 8 + SIM_STAT_IO_PUMP_MS: + tooltip: Pump IO time. + type: integer + value: 24 + SIM_STAT_NET_MS: + tooltip: Time spent in 'network' segment of simulation frame. + type: integer + value: 4 + SIM_STAT_OTHER_MS: + tooltip: Time spent in 'other' segment of simulation frame. + type: integer + value: 5 + SIM_STAT_PACKETS_IN: + tooltip: Packets in per second. + type: integer + value: 13 + SIM_STAT_PACKETS_OUT: + tooltip: Packets out per second. + type: integer + value: 14 + SIM_STAT_PCT_CHARS_STEPPED: + tooltip: >- + Returns the % of pathfinding characters skipped each frame, averaged over + the last minute.\nThe returned value corresponds to the "Characters + Updated" stat in the viewer's Statistics Bar. + type: integer + value: 0 + SIM_STAT_PHYSICS_FPS: + tooltip: Physics simulation FPS. + type: integer + value: 1 + SIM_STAT_PHYSICS_MS: + tooltip: Time spent in 'physics' segment of simulation frame. + type: integer + value: 6 + SIM_STAT_PHYSICS_OTHER_MS: + tooltip: Physics other time. + type: integer + value: 20 + SIM_STAT_PHYSICS_SHAPE_MS: + tooltip: Physics shape update time. + type: integer + value: 19 + SIM_STAT_PHYSICS_STEP_MS: + tooltip: Physics step time. + type: integer + value: 18 + SIM_STAT_SCRIPT_EPS: + tooltip: Script events per second. + type: integer + value: 21 + SIM_STAT_SCRIPT_MS: + tooltip: Time spent in 'script' segment of simulation frame. + type: integer + value: 9 + SIM_STAT_SCRIPT_RUN_PCT: + tooltip: Percent of scripts run during frame. + type: integer + value: 25 + SIM_STAT_SLEEP_MS: + tooltip: Time spent sleeping. + type: integer + value: 23 + SIM_STAT_SPARE_MS: + tooltip: Spare time left after frame. + type: integer + value: 22 + SIM_STAT_UNACKED_BYTES: + tooltip: Total unacknowledged bytes. + type: integer + value: 17 + SIT_FLAG_ALLOW_UNSIT: + tooltip: The prim allows a seated avatar to stand up. + type: integer + value: '0x0002' + SIT_FLAG_NO_COLLIDE: + tooltip: The seated avatar's hit box is disabled when seated on this prim. + type: integer + value: '0x0010' + SIT_FLAG_NO_DAMAGE: + tooltip: Damage will not be forwarded to an avatar seated on this prim. + type: integer + value: '0x0020' + SIT_FLAG_SCRIPTED_ONLY: + tooltip: An avatar may not manually sit on this prim. + type: integer + value: '0x0004' + SIT_FLAG_SIT_TARGET: + tooltip: The prim has an explicitly set sit target. + type: integer + value: '0x0001' + SIT_INVALID_AGENT: + tooltip: Avatar ID did not specify a valid avatar. + type: integer + value: -4 + SIT_INVALID_LINK: + tooltip: >- + Link ID did not specify a valid prim in the linkset or resolved to + multiple prims. + type: integer + value: -5 + SIT_INVALID_OBJECT: + tooltip: >- + Attempt to force an avatar to sit on an attachment or other invalid + target. + type: integer + value: -7 + SIT_NOT_EXPERIENCE: + tooltip: Attempt to force an avatar to sit outside an experience. + type: integer + value: -1 + SIT_NO_ACCESS: + tooltip: >- + Avatar does not have access to the parcel containing the target linkset of + the forced sit. + type: integer + value: -6 + SIT_NO_EXPERIENCE_PERMISSION: + tooltip: Avatar has not granted permission to force sits. + type: integer + value: -2 + SIT_NO_SIT_TARGET: + tooltip: No available sit target in linkset for forced sit. + type: integer + value: -3 + SKY_ABSORPTION_CONFIG: + private: true + tooltip: '' + type: integer + value: 16 + SKY_AMBIENT: + tooltip: The ambient color of the environment + type: integer + value: 0 + SKY_BLUE: + tooltip: Blue settings for environment + type: integer + value: 22 + SKY_CLOUDS: + tooltip: Settings controlling cloud density and configuration + type: integer + value: 2 + SKY_CLOUD_TEXTURE: + tooltip: Texture ID used by clouds + type: integer + value: 19 + SKY_DENSITY_PROFILE_COUNTS: + private: true + tooltip: Counts for density profiles of each type. + type: integer + value: 3 + SKY_DOME: + tooltip: Sky dome information. + type: integer + value: 4 + SKY_GAMMA: + tooltip: The gamma value applied to the scene. + type: integer + value: 5 + SKY_GLOW: + tooltip: Glow color applied to the sun and moon. + type: integer + value: 6 + SKY_HAZE: + tooltip: Haze settings for environment + type: integer + value: 23 + SKY_LIGHT: + tooltip: Miscellaneous lighting values. + type: integer + value: 8 + SKY_MIE_CONFIG: + private: true + tooltip: MIE scatting profile parameters. + type: integer + value: 17 + SKY_MOON: + tooltip: Environmental moon details. + type: integer + value: 9 + SKY_MOON_TEXTURE: + tooltip: Environmental moon texture. + type: integer + value: 20 + SKY_PLANET: + tooltip: Planet information used in rendering the sky. + type: integer + value: 10 + SKY_RAYLEIGH_CONFIG: + private: true + tooltip: Rayleigh scatting profile parameters. + type: integer + value: 18 + SKY_REFLECTION_PROBE_AMBIANCE: + tooltip: Settings the ambience of the reflection probe. + type: integer + value: 24 + SKY_REFRACTION: + tooltip: Sky refraction parameters for rainbows and optical effects. + type: integer + value: 11 + SKY_STAR_BRIGHTNESS: + tooltip: Brightness value for the stars. + type: integer + value: 13 + SKY_SUN: + tooltip: Detailed sun information + type: integer + value: 14 + SKY_SUN_TEXTURE: + tooltip: Environmental sun texture + type: integer + value: 21 + SKY_TEXTURE_DEFAULTS: + tooltip: Is the environment using the default textures. + type: integer + value: 1 + SKY_TRACKS: + tooltip: Track elevations for this region. + type: integer + value: 15 + SMOOTH: + tooltip: 'Slide in the X direction, instead of playing separate frames.' + type: integer + value: '0x10' + SOUND_LOOP: + tooltip: Sound will loop until stopped. + type: integer + value: '0x01' + SOUND_PLAY: + tooltip: Sound will play normally. + type: integer + value: '0x00' + SOUND_SYNC: + tooltip: Sound will be synchronized with the nearest master. + type: integer + value: '0x04' + SOUND_TRIGGER: + tooltip: Sound will be triggered at the prim's location and not attached. + type: integer + value: '0x02' + SQRT2: + tooltip: 1.41421356 - The square root of 2. + type: float + value: '1.41421356' + STATUS_BLOCK_GRAB: + tooltip: >- + Controls whether the object can be grabbed.\nA grab is the default action + when in third person, and is available as the hand tool in build mode. + This is useful for physical objects that you don't want other people to be + able to trivially disturb. The default is FALSE + type: integer + value: '0x40' + STATUS_BLOCK_GRAB_OBJECT: + tooltip: Prevent click-and-drag movement on all prims in the object. + type: integer + value: '0x400' + STATUS_BOUNDS_ERROR: + tooltip: Argument(s) passed to function had a bounds error. + type: integer + value: 1002 + STATUS_CAST_SHADOWS: + tooltip: '' + type: integer + value: '0x200' + STATUS_DIE_AT_EDGE: + tooltip: >- + Controls whether the object is returned to the owner's inventory if it + wanders off the edge of the world.\nIt is useful to set this status TRUE + for things like bullets or rockets. The default is TRUE + type: integer + value: '0x80' + STATUS_DIE_AT_NO_ENTRY: + tooltip: >- + Controls whether the object dies if it attempts to enter a parcel that + does not allow object entry or does not have enough capacity.\nIt is + useful to set this status TRUE for things like bullets or rockets. The + default is FALSE + type: integer + value: '0x800' + STATUS_INTERNAL_ERROR: + tooltip: An internal error occurred. + type: integer + value: 1999 + STATUS_MALFORMED_PARAMS: + tooltip: Function was called with malformed parameters. + type: integer + value: 1000 + STATUS_NOT_FOUND: + tooltip: Object or other item was not found. + type: integer + value: 1003 + STATUS_NOT_SUPPORTED: + tooltip: Feature not supported. + type: integer + value: 1004 + STATUS_OK: + tooltip: Result of function call was a success. + type: integer + value: 0 + STATUS_PHANTOM: + tooltip: >- + Controls/indicates whether the object collides or not.\nSetting the value + to TRUE makes the object non-colliding with all objects. It is a good idea + to use this for most objects that move or rotate, but are non-physical. It + is also useful for simulating volumetric lighting. The default is FALSE. + type: integer + value: '0x10' + STATUS_PHYSICS: + tooltip: >- + Controls/indicates whether the object moves physically.\nThis controls the + same flag that the UI check-box for Physical controls. The default is + FALSE. + type: integer + value: '0x1' + STATUS_RETURN_AT_EDGE: + tooltip: '' + type: integer + value: '0x100' + STATUS_ROTATE_X: + tooltip: '' + type: integer + value: '0x2' + STATUS_ROTATE_Y: + tooltip: '' + type: integer + value: '0x4' + STATUS_ROTATE_Z: + tooltip: "Controls/indicates whether the object can physically rotate around\n\t\t\tthe specific axis or not. This flag has no meaning\n\t\t\tfor non-physical objects. Set the value to FALSE\n\t\t\tif you want to disable rotation around that axis. The\n\t\t\tdefault is TRUE for a physical object.\n\t\t\tA useful example to think about when visualizing\n\t\t\tthe effect is a sit-and-spin device. They spin around the\n\t\t\tZ axis (up) but not around the X or Y axis." + type: integer + value: '0x8' + STATUS_SANDBOX: + tooltip: "Controls/indicates whether the object can cross region boundaries\n\t\t\tand move more than 20 meters from its creation\n\t\t\tpoint. The default if FALSE." + type: integer + value: '0x20' + STATUS_TYPE_MISMATCH: + tooltip: Argument(s) passed to function had a type mismatch. + type: integer + value: 1001 + STATUS_WHITELIST_FAILED: + tooltip: Whitelist Failed. + type: integer + value: 2001 + STRING_TRIM: + tooltip: '' + type: integer + value: '0x03' + STRING_TRIM_HEAD: + tooltip: '' + type: integer + value: '0x01' + STRING_TRIM_TAIL: + tooltip: '' + type: integer + value: '0x02' + TARGETED_EMAIL_OBJECT_OWNER: + tooltip: Send email to the owner of the object + type: integer + value: '0x02' + TARGETED_EMAIL_ROOT_CREATOR: + tooltip: Send email to the creator of the root object + type: integer + value: '0x01' + TERRAIN_DETAIL_1: + tooltip: '' + type: integer + value: 0 + TERRAIN_DETAIL_2: + tooltip: '' + type: integer + value: 1 + TERRAIN_DETAIL_3: + tooltip: '' + type: integer + value: 2 + TERRAIN_DETAIL_4: + tooltip: '' + type: integer + value: 3 + TERRAIN_HEIGHT_RANGE_NE: + tooltip: '' + type: integer + value: 7 + TERRAIN_HEIGHT_RANGE_NW: + tooltip: '' + type: integer + value: 6 + TERRAIN_HEIGHT_RANGE_SE: + tooltip: '' + type: integer + value: 5 + TERRAIN_HEIGHT_RANGE_SW: + tooltip: '' + type: integer + value: 4 + TERRAIN_PBR_OFFSET_1: + tooltip: '' + type: integer + value: 16 + TERRAIN_PBR_OFFSET_2: + tooltip: '' + type: integer + value: 17 + TERRAIN_PBR_OFFSET_3: + tooltip: '' + type: integer + value: 18 + TERRAIN_PBR_OFFSET_4: + tooltip: '' + type: integer + value: 19 + TERRAIN_PBR_ROTATION_1: + tooltip: '' + type: integer + value: 12 + TERRAIN_PBR_ROTATION_2: + tooltip: '' + type: integer + value: 13 + TERRAIN_PBR_ROTATION_3: + tooltip: '' + type: integer + value: 14 + TERRAIN_PBR_ROTATION_4: + tooltip: '' + type: integer + value: 15 + TERRAIN_PBR_SCALE_1: + tooltip: '' + type: integer + value: 8 + TERRAIN_PBR_SCALE_2: + tooltip: '' + type: integer + value: 9 + TERRAIN_PBR_SCALE_3: + tooltip: '' + type: integer + value: 10 + TERRAIN_PBR_SCALE_4: + tooltip: '' + type: integer + value: 11 + TEXTURE_BLANK: + tooltip: '' + type: string + value: 5748decc-f629-461c-9a36-a35a221fe21f + TEXTURE_DEFAULT: + tooltip: '' + type: string + value: 89556747-24cb-43ed-920b-47caed15465f + TEXTURE_MEDIA: + tooltip: '' + type: string + value: 8b5fec65-8d8d-9dc5-cda8-8fdf2716e361 + TEXTURE_PLYWOOD: + tooltip: '' + type: string + value: 89556747-24cb-43ed-920b-47caed15465f + TEXTURE_TRANSPARENT: + tooltip: '' + type: string + value: 8dcd4a48-2d37-4909-9f78-f7a9eb4ef903 + TOUCH_INVALID_FACE: + tooltip: '' + type: integer + value: '-1' + TOUCH_INVALID_TEXCOORD: + tooltip: '' + type: vector + value: '<-1.0, -1.0, 0.0>' + TOUCH_INVALID_VECTOR: + tooltip: '' + type: vector + value: '<0.0, 0.0, 0.0>' + TP_ROUTING_BLOCKED: + tooltip: Direct teleporting is blocked on this parcel. + type: integer + value: 0 + TP_ROUTING_FREE: + tooltip: Teleports are unrestricted on this parcel. + type: integer + value: 2 + TP_ROUTING_LANDINGP: + tooltip: Teleports are routed to a landing point if set on this parcel. + type: integer + value: 1 + TRANSFER_BAD_OPTS: + tooltip: Invalid inventory options. + type: integer + value: '-1' + TRANSFER_BAD_ROOT: + tooltip: >- + The root path specified in TRANSFER_DEST contained an invalid directory or + was reduced to nothing. + type: integer + value: '-5' + TRANSFER_DEST: + tooltip: The root folder to transfer inventory into. + type: integer + value: '0' + TRANSFER_FLAGS: + tooltip: Flags to control the behavior of inventory transfer. + type: integer + value: '1' + TRANSFER_FLAG_COPY: + tooltip: Gives a copy of the object being transfered. Implies TRANSFER_FLAG_TAKE. + type: integer + value: '0x0004' + TRANSFER_FLAG_RESERVED: + tooltip: Reserved for future expansion. + type: integer + value: '0x0001' + TRANSFER_FLAG_TAKE: + tooltip: 'On a successful transfer, automatically takes the object into inventory.' + type: integer + value: '0x0002' + TRANSFER_NO_ATTACHMENT: + tooltip: Can not transfer ownership of an attached object. + type: integer + value: '-7' + TRANSFER_NO_ITEMS: + tooltip: No items in the inventory list are eligible for transfer. + type: integer + value: '-4' + TRANSFER_NO_PERMS: + tooltip: The object does not have transfer permissions. + type: integer + value: '-6' + TRANSFER_NO_TARGET: + tooltip: Could not find the receiver in the current region. + type: integer + value: '-2' + TRANSFER_OK: + tooltip: Inventory transfer offer was successfully made. + type: integer + value: '0' + TRANSFER_THROTTLE: + tooltip: Inventory throttle hit. + type: integer + value: '-3' + TRAVERSAL_TYPE: + tooltip: 'One of TRAVERSAL_TYPE_FAST, TRAVERSAL_TYPE_SLOW, and TRAVERSAL_TYPE_NONE.' + type: integer + value: 7 + TRAVERSAL_TYPE_FAST: + tooltip: '' + type: integer + value: 1 + TRAVERSAL_TYPE_NONE: + tooltip: '' + type: integer + value: 2 + TRAVERSAL_TYPE_SLOW: + tooltip: '' + type: integer + value: 0 + 'TRUE': + tooltip: An integer constant for boolean comparisons. Has the value '1'. + type: integer + value: 1 + TWO_PI: + tooltip: 6.28318530 - The radians of a circle. + type: float + value: '6.28318530' + TYPE_FLOAT: + tooltip: The list entry is a float. + type: integer + value: 2 + TYPE_INTEGER: + tooltip: The list entry is an integer. + type: integer + value: 1 + TYPE_INVALID: + tooltip: The list entry is invalid. + type: integer + value: 0 + TYPE_KEY: + tooltip: The list entry is a key. + type: integer + value: 4 + TYPE_ROTATION: + tooltip: The list entry is a rotation. + type: integer + value: 6 + TYPE_STRING: + tooltip: The list entry is a string. + type: integer + value: 3 + TYPE_VECTOR: + tooltip: The list entry is a vector. + type: integer + value: 5 + URL_REQUEST_DENIED: + tooltip: '' + type: string + value: URL_REQUEST_DENIED + URL_REQUEST_GRANTED: + tooltip: '' + type: string + value: URL_REQUEST_GRANTED + VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY: + tooltip: >- + A slider between minimum (0.0) and maximum (1.0) deflection of angular + orientation. That is, its a simple scalar for modulating the strength of + angular deflection such that the vehicles preferred axis of motion points + toward its real velocity. + type: integer + value: 32 + VEHICLE_ANGULAR_DEFLECTION_TIMESCALE: + tooltip: >- + The time-scale for exponential success of linear deflection deflection. + Its another way to specify the strength of the vehicles tendency to + reorient itself so that its preferred axis of motion agrees with its true + velocity. + type: integer + value: 33 + VEHICLE_ANGULAR_FRICTION_TIMESCALE: + tooltip: "A vector of timescales for exponential decay of the vehicle's angular velocity about its preferred axes of motion (at, left, up).\n\t\t\tRange = [0.07, inf) seconds for each element of the vector." + type: integer + value: 17 + VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE: + tooltip: The timescale for exponential decay of the angular motors magnitude. + type: integer + value: 35 + VEHICLE_ANGULAR_MOTOR_DIRECTION: + tooltip: >- + The direction and magnitude (in preferred frame) of the vehicle's angular + motor. The vehicle will accelerate (or decelerate if necessary) to match + its velocity to its motor. + type: integer + value: 19 + VEHICLE_ANGULAR_MOTOR_TIMESCALE: + tooltip: The timescale for exponential approach to full angular motor velocity. + type: integer + value: 34 + VEHICLE_BANKING_EFFICIENCY: + tooltip: >- + A slider between anti (-1.0), none (0.0), and maxmum (1.0) banking + strength. + type: integer + value: 38 + VEHICLE_BANKING_MIX: + tooltip: >- + A slider between static (0.0) and dynamic (1.0) banking. "Static" means + the banking scales only with the angle of roll, whereas "dynamic" is a + term that also scales with the vehicles linear speed. + type: integer + value: 39 + VEHICLE_BANKING_TIMESCALE: + tooltip: >- + The timescale for banking to exponentially approach its maximum effect. + This is another way to scale the strength of the banking effect, however + it affects the term that is proportional to the difference between what + the banking behavior is trying to do, and what the vehicle is actually + doing. + type: integer + value: 40 + VEHICLE_BUOYANCY: + tooltip: A slider between minimum (0.0) and maximum anti-gravity (1.0). + type: integer + value: 27 + VEHICLE_FLAG_BLOCK_INTERFERENCE: + tooltip: Prevent other scripts from pushing vehicle. + type: integer + value: '0x400' + VEHICLE_FLAG_CAMERA_DECOUPLED: + tooltip: '' + type: integer + value: '0x200' + VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT: + tooltip: Hover at global height. + type: integer + value: '0x10' + VEHICLE_FLAG_HOVER_TERRAIN_ONLY: + tooltip: Ignore water height when hovering. + type: integer + value: '0x8' + VEHICLE_FLAG_HOVER_UP_ONLY: + tooltip: >- + Hover does not push down. Use this flag for hovering vehicles that should + be able to jump above their hover height. + type: integer + value: '0x20' + VEHICLE_FLAG_HOVER_WATER_ONLY: + tooltip: Ignore terrain height when hovering. + type: integer + value: '0x4' + VEHICLE_FLAG_LIMIT_MOTOR_UP: + tooltip: Prevents ground vehicles from motoring into the sky. + type: integer + value: '0x40' + VEHICLE_FLAG_LIMIT_ROLL_ONLY: + tooltip: >- + For vehicles with vertical attractor that want to be able to climb/dive, + for instance, aeroplanes that want to use the banking feature. + type: integer + value: '0x2' + VEHICLE_FLAG_MOUSELOOK_BANK: + tooltip: '' + type: integer + value: '0x100' + VEHICLE_FLAG_MOUSELOOK_STEER: + tooltip: '' + type: integer + value: '0x80' + VEHICLE_FLAG_NO_DEFLECTION_UP: + tooltip: >- + This flag prevents linear deflection parallel to world z-axis. This is + useful for preventing ground vehicles with large linear deflection, like + bumper cars, from climbing their linear deflection into the sky. + type: integer + value: '0x1' + VEHICLE_FLAG_NO_FLY_UP: + deprecated: true + tooltip: 'Old, changed to VEHICLE_FLAG_NO_DEFLECTION_UP' + type: integer + value: '0x1' + VEHICLE_HOVER_EFFICIENCY: + tooltip: >- + A slider between minimum (0.0 = bouncy) and maximum (1.0 = fast as + possible) damped motion of the hover behavior. + type: integer + value: 25 + VEHICLE_HOVER_HEIGHT: + tooltip: >- + The height (above the terrain or water, or global) at which the vehicle + will try to hover. + type: integer + value: 24 + VEHICLE_HOVER_TIMESCALE: + tooltip: Period of time (in seconds) for the vehicle to achieve its hover height. + type: integer + value: 26 + VEHICLE_LINEAR_DEFLECTION_EFFICIENCY: + tooltip: >- + A slider between minimum (0.0) and maximum (1.0) deflection of linear + velocity. That is, its a simple scalar for modulating the strength of + linear deflection. + type: integer + value: 28 + VEHICLE_LINEAR_DEFLECTION_TIMESCALE: + tooltip: >- + The timescale for exponential success of linear deflection deflection. It + is another way to specify how much time it takes for the vehicle's linear + velocity to be redirected to its preferred axis of motion. + type: integer + value: 29 + VEHICLE_LINEAR_FRICTION_TIMESCALE: + tooltip: "A vector of timescales for exponential decay of the vehicle's linear velocity along its preferred axes of motion (at, left, up).\n\t\t\tRange = [0.07, inf) seconds for each element of the vector." + type: integer + value: 16 + VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE: + tooltip: The timescale for exponential decay of the linear motors magnitude. + type: integer + value: 31 + VEHICLE_LINEAR_MOTOR_DIRECTION: + tooltip: "The direction and magnitude (in preferred frame) of the vehicle's linear motor. The vehicle will accelerate (or decelerate if necessary) to match its velocity to its motor.\n\t\t\tRange of magnitude = [0, 30] meters/second." + type: integer + value: 18 + VEHICLE_LINEAR_MOTOR_OFFSET: + tooltip: '' + type: integer + value: 20 + VEHICLE_LINEAR_MOTOR_TIMESCALE: + tooltip: The timescale for exponential approach to full linear motor velocity. + type: integer + value: 30 + VEHICLE_REFERENCE_FRAME: + tooltip: >- + A rotation of the vehicle's preferred axes of motion and orientation (at, + left, up) with respect to the vehicle's local frame (x, y, z). + type: integer + value: 44 + VEHICLE_TYPE_AIRPLANE: + tooltip: >- + Uses linear deflection for lift, no hover, and banking to turn.\nSee + http://wiki.secondlife.com/wiki/VEHICLE_TYPE_AIRPLANE + type: integer + value: 4 + VEHICLE_TYPE_BALLOON: + tooltip: >- + Hover, and friction, but no deflection.\nSee + http://wiki.secondlife.com/wiki/VEHICLE_TYPE_BALLOON + type: integer + value: 5 + VEHICLE_TYPE_BOAT: + tooltip: >- + Hovers over water with lots of friction and some anglar deflection.\nSee + http://wiki.secondlife.com/wiki/VEHICLE_TYPE_BOAT + type: integer + value: 3 + VEHICLE_TYPE_CAR: + tooltip: >- + Another vehicle that bounces along the ground but needs the motors to be + driven from external controls or timer events.\nSee + http://wiki.secondlife.com/wiki/VEHICLE_TYPE_CAR + type: integer + value: 2 + VEHICLE_TYPE_NONE: + tooltip: '' + type: integer + value: 0 + VEHICLE_TYPE_SLED: + tooltip: >- + Simple vehicle that bumps along the ground, and likes to move along its + local x-axis.\nSee http://wiki.secondlife.com/wiki/VEHICLE_TYPE_SLED + type: integer + value: 1 + VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY: + tooltip: >- + A slider between minimum (0.0 = wobbly) and maximum (1.0 = firm as + possible) stability of the vehicle to keep itself upright. + type: integer + value: 36 + VEHICLE_VERTICAL_ATTRACTION_TIMESCALE: + tooltip: >- + The period of wobble, or timescale for exponential approach, of the + vehicle to rotate such that its preferred "up" axis is oriented along the + world's "up" axis. + type: integer + value: 37 + VERTICAL: + tooltip: '' + type: integer + value: 0 + WANDER_PAUSE_AT_WAYPOINTS: + tooltip: '' + type: integer + value: 0 + WATER_BLUR_MULTIPLIER: + tooltip: Blur factor. + type: integer + value: 100 + WATER_FOG: + tooltip: Fog properties when underwater. + type: integer + value: 101 + WATER_FRESNEL: + tooltip: Fresnel scattering applied to the surface of the water. + type: integer + value: 102 + WATER_NORMAL_SCALE: + tooltip: Scaling applied to the water normal map. + type: integer + value: 104 + WATER_NORMAL_TEXTURE: + tooltip: Normal map used for environmental waves. + type: integer + value: 107 + WATER_REFRACTION: + tooltip: Refraction factors when looking through the surface of the water. + type: integer + value: 105 + WATER_TEXTURE_DEFAULTS: + tooltip: Is the environment using the default wave map. + type: integer + value: 103 + WATER_WAVE_DIRECTION: + tooltip: Vectors for the directions of the waves. + type: integer + value: 106 + XP_ERROR_EXPERIENCES_DISABLED: + tooltip: The region currently has experiences disabled. + type: integer + value: 2 + XP_ERROR_EXPERIENCE_DISABLED: + tooltip: The experience owner has temporarily disabled the experience. + type: integer + value: 8 + XP_ERROR_EXPERIENCE_SUSPENDED: + tooltip: The experience has been suspended by Linden Customer Support. + type: integer + value: 9 + XP_ERROR_INVALID_EXPERIENCE: + tooltip: The script is associated with an experience that no longer exists. + type: integer + value: 7 + XP_ERROR_INVALID_PARAMETERS: + tooltip: One of the string arguments was too big to fit in the key-value store. + type: integer + value: 3 + XP_ERROR_KEY_NOT_FOUND: + tooltip: The requested key does not exist. + type: integer + value: 14 + XP_ERROR_MATURITY_EXCEEDED: + tooltip: The content rating of the experience exceeds that of the region. + type: integer + value: 16 + XP_ERROR_NONE: + tooltip: No error was detected. + type: integer + value: 0 + XP_ERROR_NOT_FOUND: + tooltip: >- + The sim was unable to verify the validity of the experience. Retrying + after a short wait is advised. + type: integer + value: 6 + XP_ERROR_NOT_PERMITTED: + tooltip: This experience is not allowed to run by the requested agent. + type: integer + value: 4 + XP_ERROR_NOT_PERMITTED_LAND: + tooltip: This experience is not allowed to run on the current region. + type: integer + value: 17 + XP_ERROR_NO_EXPERIENCE: + tooltip: This script is not associated with an experience. + type: integer + value: 5 + XP_ERROR_QUOTA_EXCEEDED: + tooltip: >- + An attempted write data to the key-value store failed due to the data + quota being met. + type: integer + value: 11 + XP_ERROR_REQUEST_PERM_TIMEOUT: + tooltip: Request timed out; permissions not modified. + type: integer + value: 18 + XP_ERROR_RETRY_UPDATE: + tooltip: A checked update failed due to an out of date request. + type: integer + value: 15 + XP_ERROR_STORAGE_EXCEPTION: + tooltip: Unable to communicate with the key-value store. + type: integer + value: 13 + XP_ERROR_STORE_DISABLED: + tooltip: The key-value store is currently disabled on this region. + type: integer + value: 12 + XP_ERROR_THROTTLED: + tooltip: The call failed due to too many recent calls. + type: integer + value: 1 + XP_ERROR_UNKNOWN_ERROR: + tooltip: Other unknown error. + type: integer + value: 10 + ZERO_ROTATION: + tooltip: '' + type: rotation + value: '<0.0, 0.0, 0.0, 1.0>' + ZERO_VECTOR: + tooltip: '' + type: vector + value: '<0.0, 0.0, 0.0>' +events: + at_rot_target: + arguments: + - TargetNumber: + tooltip: '' + type: integer + - TargetRotation: + tooltip: '' + type: rotation + - CurrentRotation: + tooltip: '' + type: rotation + tooltip: >- + This event is triggered when a script comes within a defined angle of a + target rotation. The range and rotation are set by a call to llRotTarget. + at_target: + arguments: + - TargetNumber: + tooltip: '' + type: integer + - TargetPosition: + tooltip: '' + type: vector + - CurrentPosition: + tooltip: '' + type: vector + tooltip: >- + This event is triggered when the scripted object comes within a defined + range of the target position, defined by the llTarget function call. + attach: + arguments: + - AvatarID: + tooltip: '' + type: key + tooltip: >- + This event is triggered whenever an object is attached or detached from an + avatar. If it is attached, the key of the avatar it is attached to is + passed in, otherwise NULL_KEY is. + changed: + arguments: + - Changed: + tooltip: '' + type: integer + tooltip: >- + Triggered when various events change the object. The change argument will + be a bit-field of CHANGED_* constants. + collision: + arguments: + - NumberOfCollisions: + tooltip: '' + type: integer + tooltip: "This event is raised while another object, or avatar, is colliding with the object the script is attached to.\n\t\t\tThe number of detected objects is passed to the script. Information on those objects may be gathered via the llDetected* functions." + collision_end: + arguments: + - NumberOfCollisions: + tooltip: '' + type: integer + tooltip: "This event is raised when another object, or avatar, stops colliding with the object the script is attached to.\n\t\t\tThe number of detected objects is passed to the script. Information on those objects may be gathered via the llDetected* library functions." + collision_start: + arguments: + - NumberOfCollisions: + tooltip: '' + type: integer + tooltip: "This event is raised when another object, or avatar, starts colliding with the object the script is attached to.\n\t\t\tThe number of detected objects is passed to the script. Information on those objects may be gathered via the llDetected* library functions." + control: + arguments: + - AvatarID: + tooltip: '' + type: key + - Levels: + tooltip: '' + type: integer + - Edges: + tooltip: '' + type: integer + tooltip: "Once a script has the ability to grab control inputs from the avatar, this event will be used to pass the commands into the script.\n\t\t\tThe levels and edges are bit-fields of control constants." + dataserver: + arguments: + - RequestID: + tooltip: '' + type: key + - Data: + tooltip: '' + type: string + tooltip: "This event is triggered when the requested data is returned to the script.\n\t\t\tData may be requested by the llRequestAgentData, llRequestInventoryData, and llGetNotecardLine function calls, for example." + email: + arguments: + - Time: + tooltip: '' + type: string + - Address: + tooltip: '' + type: string + - Subject: + tooltip: '' + type: string + - Body: + tooltip: '' + type: string + - NumberRemaining: + tooltip: '' + type: integer + tooltip: "This event is triggered when an email sent to this script arrives.\n\t\t\tThe number remaining tells how many more emails are known to be still pending." + experience_permissions: + arguments: + - agent_id: + tooltip: ID of the agent approving permission for the Experience. + type: key + tooltip: Triggered when an agent has approved an experience permissions request. + experience_permissions_denied: + arguments: + - agent_id: + tooltip: ID of the agent denying permission for the Experience. + type: key + - Reason: + tooltip: >- + One of the XP_ERROR_... constants describing the reason why the + Experience permissions were denied for the agent. + type: integer + tooltip: Describes why the Experience permissions were denied for the agent. + final_damage: + arguments: + - count: + tooltip: The number of damage events queued. + type: integer + tooltip: >- + Triggered as damage is applied to an avatar or task, after all on_damage + events have been processed. + game_control: + arguments: + - id: + tooltip: UUID of avatar supplying input + type: key + - buttons: + tooltip: 32-bit mask of buttons pressed + type: integer + - axes: + tooltip: 'Six float values in range [-1, 1]' + type: list + tooltip: This event is raised when game controller input changes. + http_request: + arguments: + - HTTPRequestID: + tooltip: '' + type: key + - HTTPMethod: + tooltip: '' + type: string + - Body: + tooltip: '' + type: string + tooltip: Triggered when task receives an HTTP request. + http_response: + arguments: + - HTTPRequestID: + tooltip: '' + type: key + - Status: + tooltip: '' + type: integer + - Metadata: + tooltip: '' + type: list + - Body: + tooltip: '' + type: string + tooltip: >- + This event handler is invoked when an HTTP response is received for a + pending llHTTPRequest request or if a pending request fails or times out. + land_collision: + arguments: + - Position: + tooltip: '' + type: vector + tooltip: >- + This event is raised when the object the script is attached to is + colliding with the ground. + land_collision_end: + arguments: + - Position: + tooltip: '' + type: vector + tooltip: >- + This event is raised when the object the script is attached to stops + colliding with the ground. + land_collision_start: + arguments: + - Position: + tooltip: '' + type: vector + tooltip: >- + This event is raised when the object the script is attached to begins to + collide with the ground. + link_message: + arguments: + - SendersLink: + tooltip: '' + type: integer + - Value: + tooltip: '' + type: integer + - Text: + tooltip: '' + type: string + - ID: + tooltip: '' + type: key + tooltip: >- + Triggered when object receives a link message via llMessageLinked function + call. + linkset_data: + arguments: + - action: + tooltip: '' + type: integer + - name: + tooltip: '' + type: string + - value: + tooltip: '' + type: string + tooltip: Triggered when a script modifies the linkset datastore. + listen: + arguments: + - Channel: + tooltip: '' + type: integer + - Name: + tooltip: '' + type: string + - ID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + tooltip: "This event is raised whenever a chat message matching the constraints set in the llListen command is received. The name and ID of the speaker, as well as the message, are passed in as parameters.\n\t\t\tChannel 0 is the public chat channel that all avatars see as chat text. Channels 1 through 2,147,483,648 are private channels that are not sent to avatars but other scripts can listen on those channels." + money: + arguments: + - Payer: + tooltip: '' + type: key + - Amount: + tooltip: '' + type: integer + tooltip: >- + This event is triggered when a resident has given an amount of Linden + dollars to the object. + moving_end: + arguments: null + tooltip: Triggered whenever an object with this script stops moving. + moving_start: + arguments: null + tooltip: Triggered whenever an object with this script starts moving. + no_sensor: + arguments: null + tooltip: >- + This event is raised when sensors are active, via the llSensor function + call, but are not sensing anything. + not_at_rot_target: + arguments: null + tooltip: >- + When a target is set via the llRotTarget function call, but the script is + outside the specified angle this event is raised. + not_at_target: + arguments: null + tooltip: >- + When a target is set via the llTarget library call, but the script is + outside the specified range this event is raised. + object_rez: + arguments: + - RezzedObjectsID: + tooltip: '' + type: key + tooltip: >- + Triggered when an object rezzes another object from its inventory via the + llRezObject, or similar, functions. The id is the globally unique key for + the object rezzed. + on_damage: + arguments: + - count: + tooltip: The number of damage events queued. + type: integer + tooltip: Triggered when an avatar or object receives damage. + on_death: + arguments: [] + tooltip: Triggered when an avatar reaches 0 health. + on_rez: + arguments: + - StartParameter: + tooltip: '' + type: integer + tooltip: >- + Triggered whenever an object is rezzed from inventory or by another + object. The start parameter is passed in from the llRezObject call, or + zero if from inventory. + path_update: + arguments: + - Type: + tooltip: '' + type: integer + - Reserved: + tooltip: '' + type: list + tooltip: >- + This event is called to inform the script of changes within the object's + path-finding status. + remote_data: + arguments: + - EventType: + tooltip: '' + type: integer + - ChannelID: + tooltip: '' + type: key + - MessageID: + tooltip: '' + type: key + - Sender: + tooltip: '' + type: string + - IData: + tooltip: '' + type: integer + - SData: + tooltip: '' + type: string + deprecated: true + tooltip: This event is deprecated. + run_time_permissions: + arguments: + - PermissionFlags: + tooltip: '' + type: integer + tooltip: "Scripts need permission from either the owner or the avatar they wish to act on before they may perform certain functions, such as debiting money from their owners account, triggering an animation on an avatar, or capturing control inputs. The llRequestPermissions library function is used to request these permissions and the various permissions integer constants can be supplied.\n\t\t\tThe integer returned to this event handler contains the current set of permissions flags, so if permissions equal 0 then no permissions are set." + sensor: + arguments: + - NumberDetected: + tooltip: '' + type: integer + tooltip: "This event is raised whenever objects matching the constraints of the llSensor command are detected.\n\t\t\tThe number of detected objects is passed to the script in the parameter. Information on those objects may be gathered via the llDetected* functions." + state_entry: + arguments: null + tooltip: >- + The state_entry event occurs whenever a new state is entered, including at + program start, and is always the first event handled. + state_exit: + arguments: null + tooltip: >- + The state_exit event occurs whenever the state command is used to + transition to another state. It is handled before the new states + state_entry event. + timer: + arguments: null + tooltip: >- + This event is raised at regular intervals set by the llSetTimerEvent + library function. + touch: + arguments: + - NumberOfTouches: + tooltip: '' + type: integer + tooltip: "This event is raised while a user is touching the object the script is attached to.\n\t\t\tThe number of touching objects is passed to the script in the parameter.\n\t\t\tInformation on those objects may be gathered via the llDetected* library functions." + touch_end: + arguments: + - NumberOfTouches: + tooltip: '' + type: integer + tooltip: "This event is raised when a user stops touching the object the script is attached to. The number of touches is passed to the script in the parameter.\n\t\t\tInformation on those objects may be gathered via the llDetected* library functions." + touch_start: + arguments: + - NumberOfTouches: + tooltip: '' + type: integer + tooltip: "This event is raised when a user first touches the object the script is attached to. The number of touches is passed to the script in the parameter.\n\t\t\tInformation on those objects may be gathered via the llDetected() library functions." + transaction_result: + arguments: + - RequestID: + tooltip: '' + type: key + - Success: + tooltip: '' + type: integer + - Message: + tooltip: '' + type: string + tooltip: Triggered by llTransferMoney() function. +functions: + llAbs: + arguments: + - Value: + tooltip: An integer value. + type: integer + energy: 10 + func-id: 6 + native: true + pure: true + return: integer + sleep: 0 + tooltip: Returns the absolute (positive) version of Value. + llAcos: + arguments: + - Value: + tooltip: A floating-point value. + type: float + energy: 10 + func-id: 172 + native: true + return: float + sleep: 0 + tooltip: 'Returns the arc-cosine of Value, in radians.' + llAddToLandBanList: + arguments: + - ID: + tooltip: Agent UUID to add to ban-list. + type: key + - Hours: + tooltip: 'Period, in hours, to ban the avatar for.' + type: float + energy: 10 + func-id: 310 + return: void + sleep: 0.1 + tooltip: >- + Add avatar ID to the parcel ban list for the specified number of Hours.\nA + value of 0 for Hours will add the agent indefinitely.\nThe smallest value + that Hours will accept is 0.01; anything smaller will be seen as 0.\nWhen + values that small are used, it seems the function bans in approximately 30 + second increments (Probably 36 second increments, as 0.01 of an hour is 36 + seconds).\nResidents teleporting to a parcel where they are banned will be + redirected to a neighbouring parcel. + llAddToLandPassList: + arguments: + - ID: + tooltip: Agent UUID to add to pass-list. + type: key + - Hours: + tooltip: 'Period, in hours, to allow the avatar for.' + type: float + energy: 10 + func-id: 240 + return: void + sleep: 0.1 + tooltip: 'Add avatar ID to the land pass list, for a duration of Hours.' + llAdjustDamage: + arguments: + - Number: + index-semantics: true + tooltip: Damage event index to modify. + type: integer + - Damage: + tooltip: New damage amount to apply on this event. + type: float + energy: 10 + func-id: 555 + return: void + sleep: 0 + tooltip: Changes the amount of damage to be delivered by this damage event. + llAdjustSoundVolume: + arguments: + - Volume: + tooltip: The volume to set. + type: float + energy: 10 + func-id: 207 + return: void + sleep: 0.1 + tooltip: >- + Adjusts the volume (0.0 - 1.0) of the currently playing attached + sound.\nThis function has no effect on sounds started with llTriggerSound. + llAgentInExperience: + arguments: + - AgentID: + tooltip: '' + type: key + bool-semantics: true + energy: 10 + experience: true + func-id: 392 + return: integer + sleep: 0 + tooltip: |2- + + Returns TRUE if the agent is in the Experience and the Experience can run in the current location. + + llAllowInventoryDrop: + arguments: + - Flag: + tooltip: >- + Boolean, If TRUE allows anyone to drop inventory on prim, FALSE + revokes. + type: integer + energy: 10 + func-id: 176 + return: void + sleep: 0 + tooltip: >- + If Flag == TRUE, users without object modify permissions can still drop + inventory items into the object. + llAngleBetween: + arguments: + - Rot1: + tooltip: First rotation. + type: rotation + - Rot2: + tooltip: Second rotation. + type: rotation + energy: 10 + func-id: 174 + pure: true + return: float + sleep: 0 + tooltip: 'Returns the angle, in radians, between rotations Rot1 and Rot2.' + llApplyImpulse: + arguments: + - Force: + tooltip: Amount of impulse force to apply. + type: vector + - Local: + tooltip: >- + Boolean, if TRUE, force is treated as a local directional vector + instead of region directional vector. + type: integer + energy: 10 + func-id: 72 + return: void + sleep: 0 + tooltip: >- + Applies impulse to the object.\nIf Local == TRUE, apply the Force in local + coordinates; otherwise, apply the Force in global coordinates.\nThis + function only works on physical objects. + llApplyRotationalImpulse: + arguments: + - Force: + tooltip: Amount of impulse force to apply. + type: vector + - Local: + tooltip: 'Boolean, if TRUE, uses local axis, if FALSE, uses region axis.' + type: integer + energy: 10 + func-id: 73 + return: void + sleep: 0 + tooltip: >- + Applies rotational impulse to the object.\nIf Local == TRUE, apply the + Force in local coordinates; otherwise, apply the Force in global + coordinates.\nThis function only works on physical objects. + llAsin: + arguments: + - Value: + tooltip: A floating-point value. + type: float + energy: 10 + func-id: 173 + native: true + return: float + sleep: 0 + tooltip: 'Returns the arc-sine, in radians, of Value.' + llAtan2: + arguments: + - 'y': + tooltip: A floating-point value. + type: float + - x: + tooltip: A floating-point value. + type: float + energy: 10 + func-id: 3 + native: true + pure: true + return: float + sleep: 0 + tooltip: 'Returns the arc-tangent2 of y, x.' + llAttachToAvatar: + arguments: + - AttachmentPoint: + tooltip: '' + type: integer + energy: 10 + func-id: 113 + return: void + sleep: 0 + tooltip: >- + Attach to avatar at point AttachmentPoint.\nRequires the PERMISSION_ATTACH + runtime permission. + llAttachToAvatarTemp: + arguments: + - AttachPoint: + tooltip: Valid attachment point or ATTACH_* constant. + type: integer + energy: 10 + func-id: 391 + return: void + sleep: 0 + tooltip: >- + Follows the same convention as llAttachToAvatar, with the exception that + the object will not create new inventory for the user, and will disappear + on detach or disconnect. + llAvatarOnLinkSitTarget: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + energy: 10 + func-id: 376 + return: key + sleep: 0 + tooltip: >- + If an avatar is sitting on the link's sit target, return the avatar's key, + NULL_KEY otherwise.\nReturns a key that is the UUID of the user seated on + the specified link's prim. + llAvatarOnSitTarget: + arguments: [] + energy: 10 + func-id: 239 + return: key + sleep: 0 + tooltip: >- + If an avatar is seated on the sit target, returns the avatar's key, + otherwise NULL_KEY.\nThis only will detect avatars sitting on sit targets + defined with llSitTarget. + llAxes2Rot: + arguments: + - Forward: + tooltip: Forward/Back part of rotation. + type: vector + - Left: + tooltip: Left/Right part of rotation. + type: vector + - Up: + tooltip: Up/Down part of rotation. + type: vector + energy: 10 + func-id: 17 + pure: true + return: rotation + sleep: 0 + tooltip: 'Returns the rotation represented by coordinate axes Forward, Left, and Up.' + llAxisAngle2Rot: + arguments: + - Axis: + tooltip: Axis. + type: vector + - Angle: + tooltip: Angle in radians. + type: float + energy: 10 + func-id: 169 + pure: true + return: rotation + sleep: 0 + tooltip: Returns the rotation that is a generated Angle about Axis. + llBase64ToInteger: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 281 + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns an integer that is the Text, Base64 decoded as a big endian + integer.\nReturns zero if Text is longer then 8 characters. If Text + contains fewer then 6 characters, the return value is unpredictable. + llBase64ToString: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 261 + pure: true + return: string + sleep: 0 + tooltip: >- + Converts a Base64 string to a conventional string.\nIf the conversion + creates any unprintable characters, they are converted to question marks. + llBreakAllLinks: + arguments: [] + energy: 10 + func-id: 143 + return: void + sleep: 0 + tooltip: >- + De-links all prims in the link set (requires permission + PERMISSION_CHANGE_LINKS be set). + llBreakLink: + arguments: + - LinkNumber: + tooltip: '' + type: integer + energy: 10 + func-id: 142 + return: void + sleep: 0 + tooltip: >- + De-links the prim with the given link number (requires permission + PERMISSION_CHANGE_LINKS be set). + llCSV2List: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 196 + pure: true + return: list + sleep: 0 + tooltip: Create a list from a string of comma separated values specified in Text. + llCastRay: + arguments: + - Start: + tooltip: '' + type: vector + - End: + tooltip: '' + type: vector + - Options: + tooltip: '' + type: list + energy: 10 + func-id: 363 + return: list + sleep: 0 + tooltip: >- + Casts a ray into the physics world from 'start' to 'end' and returns data + according to details in Options.\nReports collision data for intersections + with objects.\nReturn value: [UUID_1, {link_number_1}, hit_position_1, + {hit_normal_1}, UUID_2, {link_number_2}, hit_position_2, {hit_normal_2}, + ... , status_code] where {} indicates optional data. + llCeil: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 10 + native: true + pure: true + return: integer + sleep: 0 + tooltip: Returns smallest integer value >= Value. + llChar: + arguments: + - value: + tooltip: Unicode value to convert into a string. + type: integer + energy: 10 + func-id: 526 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns a single character string that is the representation of the + unicode value. + llClearCameraParams: + arguments: [] + energy: 10 + func-id: 314 + return: void + sleep: 0 + tooltip: >- + Resets all camera parameters to default values and turns off scripted + camera control. + llClearExperience: + arguments: + - AgentID: + tooltip: '' + type: key + - ExperienceID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 411 + private: true + return: void + sleep: 0 + tooltip: '' + llClearExperiencePermissions: + arguments: + - AgentID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 385 + private: true + return: void + sleep: 0 + tooltip: '' + llClearLinkMedia: + arguments: + - Link: + tooltip: '' + type: integer + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 373 + return: integer + sleep: 0 + tooltip: >- + Clears (deletes) the media and all parameters from the given Face on the + linked prim.\nReturns an integer that is a STATUS_* flag, which details + the success/failure of the operation. + llClearPrimMedia: + arguments: + - Face: + tooltip: Number of side to clear. + type: integer + energy: 10 + func-id: 352 + return: integer + sleep: 1 + tooltip: >- + Clears (deletes) the media and all parameters from the given + Face.\nReturns an integer that is a STATUS_* flag which details the + success/failure of the operation. + llCloseRemoteDataChannel: + arguments: + - ChannelID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 257 + return: void + sleep: 1 + tooltip: This function is deprecated. + llCloud: + arguments: + - Offset: + tooltip: '' + type: vector + deprecated: true + energy: 10 + func-id: 43 + return: float + sleep: 0 + tooltip: Returns the cloud density at the object's position + Offset. + llCollisionFilter: + arguments: + - ObjectName: + tooltip: '' + type: string + - ObjectID: + tooltip: '' + type: key + - Accept: + tooltip: >- + If TRUE, only accept collisions with ObjectName name AND ObjectID + (either is optional), otherwise with objects not ObjectName AND + ObjectID. + type: integer + energy: 10 + func-id: 110 + return: void + sleep: 0 + tooltip: >- + Specify an empty string or NULL_KEY for Accept, to not filter on the + corresponding parameter. + llCollisionSound: + arguments: + - ImpactSound: + tooltip: '' + type: string + - ImpactVolume: + tooltip: '' + type: float + energy: 10 + func-id: 160 + return: void + sleep: 0 + tooltip: >- + Suppress default collision sounds, replace default impact sounds with + ImpactSound.\nThe ImpactSound must be in the object inventory.\nSupply an + empty string to suppress collision sounds. + llCollisionSprite: + arguments: + - ImpactSprite: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 161 + return: void + sleep: 0 + tooltip: >- + Suppress default collision sprites, replace default impact sprite with + ImpactSprite; found in the object inventory (empty string to just + suppress). + llComputeHash: + arguments: + - Message: + tooltip: The message to be hashed. + type: string + - Algorithm: + tooltip: 'The digest algorithm: md5, sha1, sha224, sha256, sha384, sha512.' + type: string + energy: 10 + func-id: 548 + return: string + sleep: 0 + tooltip: Returns hex-encoded Hash string of Message using digest Algorithm. + llCos: + arguments: + - Theta: + tooltip: '' + type: float + energy: 10 + func-id: 1 + native: true + pure: true + return: float + sleep: 0 + tooltip: Returns the cosine of Theta (Theta in radians). + llCreateCharacter: + arguments: + - Options: + tooltip: '' + type: list + energy: 10 + func-id: 399 + return: void + sleep: 0 + tooltip: >- + Convert link-set to AI/Physics character.\nCreates a path-finding entity, + known as a "character", from the object containing the script. Required to + activate use of path-finding functions.\nOptions is a list of key/value + pairs. + llCreateKeyValue: + arguments: + - Key: + tooltip: '' + type: string + - Value: + tooltip: '' + type: string + energy: 10 + experience: true + func-id: 387 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction to create a key-value pair. Will fail with XP_ERROR_STORAGE_EXCEPTION if the key already exists. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value passed to the function. + + llCreateLink: + arguments: + - TargetPrim: + tooltip: Object UUID that is in the same region. + type: key + - Parent: + tooltip: >- + If FALSE, then TargetPrim becomes the root. If TRUE, then the + script's object becomes the root. + type: integer + energy: 10 + func-id: 141 + return: void + sleep: 0.1 + tooltip: >- + Attempt to link the object the script is in, to target (requires + permission PERMISSION_CHANGE_LINKS be set).\nRequires permission + PERMISSION_CHANGE_LINKS be set. + llDamage: + arguments: + - target: + tooltip: Agent or task to receive damage. + type: key + - damage: + tooltip: Damage amount to inflict on this target. + type: float + - type: + tooltip: Damage type to inflict on this target. + type: integer + energy: 10 + func-id: 671 + return: void + sleep: 0 + tooltip: Generates a damage event on the targeted agent or task. + llDataSizeKeyValue: + arguments: [] + energy: 10 + experience: true + func-id: 600 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction the request the used and total amount of data allocated for the Experience. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the the amount in use and the third item will be the total available. + + llDeleteCharacter: + arguments: [] + energy: 10 + func-id: 405 + return: void + sleep: 0 + tooltip: >- + Convert link-set from AI/Physics character to Physics object.\nConvert the + current link-set back to a standard object, removing all path-finding + properties. + llDeleteKeyValue: + arguments: + - Key: + tooltip: '' + type: string + energy: 10 + experience: true + func-id: 390 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction to delete a key-value pair. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. + + llDeleteSubList: + arguments: + - Source: + tooltip: '' + type: list + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 193 + native: true + pure: true + return: list + sleep: 0 + tooltip: >- + Removes the slice from start to end and returns the remainder of the + list.\nRemove a slice from the list and return the remainder, start and + end are inclusive.\nUsing negative numbers for start and/or end causes the + index to count backwards from the length of the list, so 0, -1 would + delete the entire list.\nIf Start is larger than End the list deleted is + the exclusion of the entries; so 6, 4 would delete the entire list except + for the 5th list entry. + llDeleteSubString: + arguments: + - Source: + tooltip: '' + type: string + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 95 + pure: true + return: string + sleep: 0 + tooltip: >- + Removes the indicated sub-string and returns the result.\nStart and End + are inclusive.\nUsing negative numbers for Start and/or End causes the + index to count backwards from the length of the string, so 0, -1 would + delete the entire string.\nIf Start is larger than End, the sub-string is + the exclusion of the entries; so 6, 4 would delete the entire string + except for the 5th character. + llDerezObject: + arguments: + - ID: + tooltip: The ID of an object in the region. + type: key + - flags: + tooltip: Flags for derez behavior. + type: integer + bool-semantics: true + energy: 10 + func-id: 509 + return: integer + sleep: 0 + tooltip: >- + Derezzes an object previously rezzed by a script in this region. Returns + TRUE on success or FALSE if the object could not be derezzed. + llDetachFromAvatar: + arguments: [] + energy: 10 + func-id: 114 + return: void + sleep: 0 + tooltip: Remove the object containing the script from the avatar. + llDetectedDamage: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 554 + return: list + sleep: 0 + tooltip: >- + Returns a list containing the current damage for the event, the damage + type and the original damage delivered. + llDetectedGrab: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 37 + return: vector + sleep: 0 + tooltip: >- + Returns the grab offset of a user touching the object.\nReturns <0.0, 0.0, + 0.0> if Number is not a valid object. + llDetectedGroup: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 39 + return: integer + bool-semantics: true + sleep: 0 + tooltip: >- + Returns TRUE if detected object or agent Number has the same user group + active as this object.\nIt will return FALSE if the object or agent is in + the group, but the group is not active. + llDetectedKey: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 32 + return: key + sleep: 0 + tooltip: >- + Returns the key of detected object or avatar number.\nReturns NULL_KEY if + Number is not a valid index. + llDetectedLinkNumber: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 40 + return: integer + sleep: 0 + tooltip: >- + Returns the link position of the triggered event for touches and + collisions only.\n0 for a non-linked object, 1 for the root of a linked + object, 2 for the first child, etc. + llDetectedName: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 31 + return: string + sleep: 0 + tooltip: >- + Returns the name of detected object or avatar number.\nReturns the name of + detected object number.\nReturns empty string if Number is not a valid + index. + llDetectedOwner: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 33 + return: key + sleep: 0 + tooltip: >- + Returns the key of detected object's owner.\nReturns invalid key if Number + is not a valid index. + llDetectedPos: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 35 + return: vector + sleep: 0 + tooltip: >- + Returns the position of detected object or avatar number.\nReturns <0.0, + 0.0, 0.0> if Number is not a valid index. + llDetectedRezzer: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 553 + return: key + sleep: 0 + tooltip: Returns the key for the rezzer of the detected object. + llDetectedRot: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 38 + return: rotation + sleep: 0 + tooltip: >- + Returns the rotation of detected object or avatar number.\nReturns <0.0, + 0.0, 0.0, 1.0> if Number is not a valid offset. + llDetectedTouchBinormal: + arguments: + - Index: + index-semantics: true + tooltip: Index of detection information + type: integer + energy: 10 + func-id: 341 + return: vector + sleep: 0 + tooltip: >- + Returns the surface bi-normal for a triggered touch event.\nReturns a + vector that is the surface bi-normal (tangent to the surface) where the + touch event was triggered. + llDetectedTouchFace: + arguments: + - Index: + index-semantics: true + tooltip: Index of detection information + type: integer + energy: 10 + func-id: 338 + return: integer + sleep: 0 + tooltip: >- + Returns the index of the face where the avatar clicked in a triggered + touch event. + llDetectedTouchNormal: + arguments: + - Index: + index-semantics: true + tooltip: Index of detection information + type: integer + energy: 10 + func-id: 340 + return: vector + sleep: 0 + tooltip: >- + Returns the surface normal for a triggered touch event.\nReturns a vector + that is the surface normal (perpendicular to the surface) where the touch + event was triggered. + llDetectedTouchPos: + arguments: + - Index: + index-semantics: true + tooltip: Index of detected information + type: integer + energy: 10 + func-id: 339 + return: vector + sleep: 0 + tooltip: >- + Returns the position, in region coordinates, where the object was touched + in a triggered touch event.\nUnless it is a HUD, in which case it returns + the position relative to the attach point. + llDetectedTouchST: + arguments: + - Index: + index-semantics: true + tooltip: Index of detection information + type: integer + energy: 10 + func-id: 342 + return: vector + sleep: 0 + tooltip: >- + Returns a vector that is the surface coordinates where the prim was + touched.\nThe X and Y vector positions contain the horizontal (S) and + vertical (T) face coordinates respectively.\nEach component is in the + interval [0.0, 1.0].\nTOUCH_INVALID_TEXCOORD is returned if the surface + coordinates cannot be determined (e.g. when the viewer does not support + this function). + llDetectedTouchUV: + arguments: + - Index: + index-semantics: true + tooltip: Index of detection information + type: integer + energy: 10 + func-id: 337 + return: vector + sleep: 0 + tooltip: >- + Returns a vector that is the texture coordinates for where the prim was + touched.\nThe X and Y vector positions contain the U and V face + coordinates respectively.\nTOUCH_INVALID_TEXCOORD is returned if the touch + UV coordinates cannot be determined (e.g. when the viewer does not support + this function). + llDetectedType: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 34 + return: integer + sleep: 0 + tooltip: "Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object.\\nReturns 0 if number is not a valid index.\\nNote that number is a bit-field, so comparisons need to be a bitwise checked. e.g.:\\ninteger iType = llDetectedType(0);\\n{\\n\t// ...do stuff with the agent\\n}" + llDetectedVel: + arguments: + - Number: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 36 + return: vector + sleep: 0 + tooltip: >- + Returns the velocity of the detected object Number.\nReturns<0.0, 0.0, + 0.0> if Number is not a valid offset. + llDialog: + arguments: + - AvatarID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + - Buttons: + tooltip: '' + type: list + - Channel: + tooltip: '' + type: integer + energy: 10 + func-id: 247 + return: void + sleep: 1 + tooltip: |- + Shows a dialog box on the avatar's screen with the message.\n + Up to 12 strings in the list form buttons.\n + If a button is clicked, the name is chatted on Channel.\nOpens a "notify box" in the given avatars screen displaying the message.\n + Up to twelve buttons can be specified in a list of strings. When the user clicks a button, the name of the button is said on the specified channel.\n + Channels work just like llSay(), so channel 0 can be heard by everyone.\n + The chat originates at the object's position, not the avatar's position, even though it is said as the avatar (uses avatar's UUID and Name etc.).\n + Examples:\n + llDialog(who, "Are you a boy or a girl?", [ "Boy", "Girl" ], -4913);\n + llDialog(who, "This shows only an OK button.", [], -192);\n + llDialog(who, "This chats so you can 'hear' it.", ["Hooray"], 0); + llDie: + arguments: [] + energy: 0 + func-id: 41 + return: void + sleep: 0 + tooltip: Delete the object which holds the script. + llDumpList2String: + arguments: + - Source: + tooltip: '' + type: list + - Separator: + tooltip: '' + type: string + energy: 10 + func-id: 245 + native: true + return: string + sleep: 0 + tooltip: >- + Returns the list as a single string, using Separator between the + entries.\nWrite the list out as a single string, using Separator between + values. + llEdgeOfWorld: + arguments: + - Position: + tooltip: '' + type: vector + - Direction: + tooltip: '' + type: vector + bool-semantics: true + energy: 10 + func-id: 205 + return: integer + sleep: 0 + tooltip: >- + Checks to see whether the border hit by Direction from Position is the + edge of the world (has no neighboring region).\nReturns TRUE if the line + along Direction from Position hits the edge of the world in the current + simulator, returns FALSE if that edge crosses into another simulator. + llEjectFromLand: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 213 + return: void + sleep: 0 + tooltip: >- + Ejects AvatarID from land that you own.\nEjects AvatarID from land that + the object owner (group or resident) owns. + llEmail: + arguments: + - Address: + tooltip: '' + type: string + - Subject: + tooltip: '' + type: string + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 119 + return: void + sleep: 20 + tooltip: >- + Sends email to Address with Subject and Message.\nSends an email to + Address with Subject and Message. + llEscapeURL: + arguments: + - URL: + tooltip: '' + type: string + energy: 10 + func-id: 307 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns an escaped/encoded version of url, replacing spaces with %20 + etc.\nReturns the string that is the URL-escaped version of URL (replacing + spaces with %20, etc.).\n + This function returns the UTF-8 encoded escape codes for selected characters. + llEuler2Rot: + arguments: + - Vector: + tooltip: '' + type: vector + energy: 10 + func-id: 16 + pure: true + return: rotation + sleep: 0 + tooltip: >- + Returns the rotation representation of the Euler angles.\nReturns the + rotation represented by the Euler Angle. + llEvade: + arguments: + - TargetID: + tooltip: Agent or object to evade. + type: key + - Options: + tooltip: No options yet. + type: list + energy: 10 + func-id: 407 + return: void + sleep: 0 + tooltip: >- + Evade a specified target.\nCharacters will (roughly) try to hide from + their pursuers if there is a good hiding spot along their fleeing path. + Hiding means no direct line of sight from the head of the character + (centre of the top of its physics bounding box) to the head of its pursuer + and no direct path between the two on the navigation-mesh. + llExecCharacterCmd: + arguments: + - Command: + tooltip: Command to send. + type: integer + - Options: + tooltip: Height for CHARACTER_CMD_JUMP. + type: list + energy: 10 + func-id: 404 + return: void + sleep: 0 + tooltip: >- + Execute a character command.\nSend a command to the path + system.\nCurrently only supports stopping the current path-finding + operation or causing the character to jump. + llFabs: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 7 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the positive version of Value.\nReturns the absolute value of + Value. + llFindNotecardTextCount: + arguments: + - NotecardName: + tooltip: '' + type: string + - Pattern: + tooltip: Regex pattern to find in the notecard text. + type: string + - Options: + tooltip: >- + A list of options to control the search. Included for future + expansion, should be [] + type: list + energy: 10 + func-id: 507 + return: key + sleep: 0 + tooltip: >- + Searches the text of a cached notecard for lines containing the given + pattern and returns the + number of matches found through a dataserver event. + + llFindNotecardTextSync: + arguments: + - NotecardName: + tooltip: '' + type: string + - Pattern: + tooltip: Regex pattern to find in the notecard text. + type: string + - StartMatch: + tooltip: The number of matches to skip before returning values. + type: integer + - Count: + tooltip: >- + The maximum number of matches to return. If 0 this function will + return the first 64 matches found. + type: integer + - Options: + tooltip: >- + A list of options to control the search. Included for future + expansion, should be [] + type: list + energy: 10 + func-id: 508 + return: list + sleep: 0 + tooltip: >- + Searches the text of a cached notecard for lines containing the given + pattern. + Returns a list of line numbers and column where a match is found. If the notecard is not in + the cache it returns a list containing a single entry of NAK. If no matches are found an + empty list is returned. + llFleeFrom: + arguments: + - Source: + tooltip: Global coordinate from which to flee. + type: vector + - Distance: + tooltip: Distance in meters to flee from the source. + type: float + - Options: + tooltip: No options available at this time. + type: list + energy: 10 + func-id: 402 + return: void + sleep: 0 + tooltip: >- + Flee from a point.\nDirects a character (llCreateCharacter) to keep away + from a defined position in the region or adjacent regions. + llFloor: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 9 + native: true + pure: true + return: integer + sleep: 0 + tooltip: Returns largest integer value <= Value. + llForceMouselook: + arguments: + - Enable: + tooltip: >- + Boolean, if TRUE when an avatar sits on the prim, the avatar will be + forced into mouse-look mode.\nFALSE is the default setting and will + undo a previously set TRUE or do nothing. + type: integer + energy: 10 + func-id: 294 + return: void + sleep: 0 + tooltip: >- + If Enable is TRUE any avatar that sits on this object is forced into + mouse-look mode.\nAfter calling this function with Enable set to TRUE, any + agent sitting down on the prim will be forced into mouse-look.\nJust like + llSitTarget, this changes a permanent property of the prim (not the + object) and needs to be reset by calling this function with Enable set to + FALSE in order to disable it. + llFrand: + arguments: + - Magnitude: + tooltip: '' + type: float + energy: 10 + func-id: 8 + return: float + sleep: 0 + tooltip: >- + Returns a pseudo random number in the range [0, Magnitude] or [Magnitude, + 0].\nReturns a pseudo-random number between [0, Magnitude]. + llGenerateKey: + arguments: [] + energy: 10 + func-id: 383 + return: key + sleep: 0 + tooltip: >- + Generates a key (SHA-1 hash) using UUID generation to create a unique + key.\nAs the UUID produced is versioned, it should never return a value of + NULL_KEY.\nThe specific UUID version is an implementation detail that has + changed in the past and may change again in the future. Do not depend upon + the UUID that is returned to be version 5 SHA-1 hash. + llGetAccel: + arguments: [] + energy: 10 + func-id: 78 + return: vector + sleep: 0 + tooltip: >- + Returns the acceleration of the object relative to the region's + axes.\nGets the acceleration of the object. + llGetAgentInfo: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 206 + return: integer + sleep: 0 + tooltip: |- + Returns an integer bit-field containing the agent information about id.\n + Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING, AGENT_IN_AIR and/or AGENT_FLOATING_VIA_SCRIPTED_ATTACHMENT.\nReturns information about the given agent ID as a bit-field of agent info constants. + llGetAgentLanguage: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 336 + return: string + sleep: 0 + tooltip: >- + Returns the language code of the preferred interface language of the + avatar.\nReturns a string that is the language code of the preferred + interface language of the resident. + llGetAgentList: + arguments: + - Scope: + tooltip: 'The scope (region, parcel, parcel same owner) to return agents for.' + type: integer + - Options: + tooltip: List of options to apply. Current unused. + type: list + energy: 10 + func-id: 412 + return: list + sleep: 0 + tooltip: >- + Requests a list of agents currently in the region, limited by the scope + parameter.\nReturns a list [key UUID-0, key UUID-1, ..., key UUID-n] or + [string error_msg] - returns avatar keys for all agents in the region + limited to the area(s) specified by scope + llGetAgentSize: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 218 + return: vector + sleep: 0 + tooltip: >- + If the avatar is in the same region, returns the size of the bounding box + of the requested avatar by id, otherwise returns ZERO_VECTOR.\nIf the + agent is in the same region as the object, returns the size of the avatar. + llGetAlpha: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 50 + return: float + sleep: 0 + tooltip: >- + Returns the alpha value of Face.\nReturns the 'alpha' of the given face. + If face is ALL_SIDES the value returned is the mean average of all faces. + llGetAndResetTime: + arguments: [] + energy: 10 + func-id: 84 + return: float + sleep: 0 + tooltip: >- + Returns the script time in seconds and then resets the script timer to + zero.\nGets the time in seconds since starting and resets the time to + zero. + llGetAnimation: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 162 + return: string + sleep: 0 + tooltip: >- + Returns the name of the currently playing locomotion animation for the + avatar id.\nReturns the currently playing animation for the specified + avatar ID. + llGetAnimationList: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 266 + return: list + sleep: 0 + tooltip: >- + Returns a list of keys of playing animations for an avatar.\nReturns a + list of keys of all playing animations for the specified avatar ID. + llGetAnimationOverride: + arguments: + - AnimationState: + tooltip: '' + type: string + energy: 10 + func-id: 500 + return: string + sleep: 0 + tooltip: >- + Returns a string that is the name of the animation that is used for the + specified animation state\nTo use this function the script must obtain + either the PERMISSION_OVERRIDE_ANIMATIONS or PERMISSION_TRIGGER_ANIMATION + permission (automatically granted to attached objects). + llGetAttached: + arguments: [] + energy: 10 + func-id: 224 + return: integer + sleep: 0 + tooltip: 'Returns the object''s attachment point, or 0 if not attached.' + llGetAttachedList: + arguments: + - ID: + tooltip: Avatar to get attachments + type: key + energy: 10 + func-id: 523 + return: list + sleep: 0 + tooltip: >- + Returns a list of keys of all visible (not HUD) attachments on the avatar + identified by the ID argument + llGetAttachedListFiltered: + arguments: + - AgentID: + tooltip: An agent in the region. + type: key + - Options: + tooltip: A list of option for inventory transfer. + type: list + energy: 10 + func-id: 518 + return: list + sleep: 0 + tooltip: Retrieves a list of attachments on an avatar. + llGetBoundingBox: + arguments: + - ID: + tooltip: '' + type: key + energy: 10 + func-id: 277 + return: list + sleep: 0 + tooltip: >- + Returns the bounding box around the object (including any linked prims) + relative to its root prim, as a list in the format [ (vector) min_corner, + (vector) max_corner ]. + llGetCameraAspect: + arguments: [] + energy: 10 + func-id: 545 + return: float + sleep: 0 + tooltip: >- + Returns the current camera aspect ratio (width / height) of the agent who + has granted the scripted object PERMISSION_TRACK_CAMERA permissions. If no + permissions have been granted: it returns zero. + llGetCameraFOV: + arguments: [] + energy: 10 + func-id: 546 + return: float + sleep: 0 + tooltip: >- + Returns the current camera field of view of the agent who has granted the + scripted object PERMISSION_TRACK_CAMERA permissions. If no permissions + have been granted: it returns zero. + llGetCameraPos: + arguments: [] + energy: 10 + func-id: 303 + return: vector + sleep: 0 + tooltip: >- + Returns the current camera position for the agent the task has permissions + for.\nReturns the position of the camera, of the user that granted the + script PERMISSION_TRACK_CAMERA. If no user has granted the permission, it + returns ZERO_VECTOR. + llGetCameraRot: + arguments: [] + energy: 10 + func-id: 304 + return: rotation + sleep: 0 + tooltip: >- + Returns the current camera orientation for the agent the task has + permissions for. If no user has granted the PERMISSION_TRACK_CAMERA + permission, returns ZERO_ROTATION. + llGetCenterOfMass: + arguments: [] + energy: 10 + func-id: 183 + return: vector + sleep: 0 + tooltip: >- + Returns the prim's centre of mass (unless called from the root prim, where + it returns the object's centre of mass). + llGetClosestNavPoint: + arguments: + - Point: + tooltip: A point in region-local space. + type: vector + - Options: + tooltip: No options at this time. + type: list + energy: 10 + func-id: 408 + return: list + sleep: 0 + tooltip: >- + Get the closest navigable point to the point provided.\nThe function + accepts a point in region-local space (like all the other path-finding + methods) and returns either an empty list or a list containing a single + vector which is the closest point on the navigation-mesh to the point + provided. + llGetColor: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 52 + return: vector + sleep: 0 + tooltip: >- + Returns the color on Face.\nReturns the color of Face as a vector of red, + green, and blue values between 0 and 1. If face is ALL_SIDES the color + returned is the mean average of each channel. + llGetCreator: + arguments: [] + energy: 10 + func-id: 272 + return: key + sleep: 0 + tooltip: >- + Returns a key for the creator of the prim.\nReturns the key of the + object's original creator. Similar to llGetOwner. + llGetDate: + arguments: [] + energy: 10 + func-id: 204 + return: string + sleep: 0 + tooltip: >- + Returns the current date in the UTC time zone in the format + YYYY-MM-DD.\nReturns the current UTC date as YYYY-MM-DD. + llGetDayLength: + arguments: [] + energy: 10 + func-id: 703 + return: integer + sleep: 0 + tooltip: Returns the number of seconds in a day on this parcel. + llGetDayOffset: + arguments: [] + energy: 10 + func-id: 705 + return: integer + sleep: 0 + tooltip: >- + Returns the number of seconds in a day is offset from midnight in this + parcel. + llGetDisplayName: + arguments: + - AvatarID: + tooltip: >- + Avatar UUID that is in the same region, or is otherwise known to the + region. + type: key + energy: 10 + func-id: 360 + return: string + sleep: 0 + tooltip: >- + Returns the display name of an avatar, if the avatar is connected to the + current region, or if the name has been cached. Otherwise, returns an + empty string. Use llRequestDisplayName if the avatar may be absent from + the region. + llGetEnergy: + arguments: [] + energy: 10 + func-id: 149 + return: float + sleep: 0 + tooltip: Returns how much energy is in the object as a percentage of maximum. + llGetEnv: + arguments: + - DataRequest: + tooltip: >- + The type of data to request. Any other string will cause an empty + string to be returned. + type: string + energy: 10 + func-id: 362 + return: string + sleep: 0 + tooltip: Returns a string with the requested data about the region. + llGetEnvironment: + arguments: + - Position: + tooltip: Location within the region. + type: vector + - EnvParams: + tooltip: >- + List of environment settings requested for the specified parcel + location. + type: list + energy: 10 + func-id: 711 + return: list + sleep: 0 + tooltip: Returns a string with the requested data about the region. + llGetExperienceDetails: + arguments: + - ExperienceID: + tooltip: May be NULL_KEY to retrieve the details for the script's Experience + type: key + energy: 10 + experience: true + func-id: 409 + return: list + sleep: 0 + tooltip: |2- + + Returns a list with the following Experience properties: [Experience Name, Owner ID, Group ID, Experience ID, State, State Message]. State is an integer corresponding to one of the constants XP_ERROR_... and State Message is the string returned by llGetExperienceErrorMessage for that integer. + + llGetExperienceErrorMessage: + arguments: + - Error: + tooltip: An Experience error code to translate. + type: integer + energy: 10 + experience: true + func-id: 603 + return: string + sleep: 0 + tooltip: |2- + + Returns a string describing the error code passed or the string corresponding with XP_ERROR_UNKNOWN_ERROR if the value is not a valid Experience error code. + + llGetExperienceList: + arguments: + - AgentID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 410 + private: true + return: list + sleep: 0 + tooltip: '' + llGetForce: + arguments: [] + energy: 10 + func-id: 65 + return: vector + sleep: 0 + tooltip: >- + Returns the force (if the script is physical).\nReturns the current force + if the script is physical. + llGetFreeMemory: + arguments: [] + energy: 10 + func-id: 225 + return: integer + sleep: 0 + tooltip: >- + Returns the number of free bytes of memory the script can use.\nReturns + the available free space for the current script. This is inaccurate with + LSO. + llGetFreeURLs: + arguments: [] + energy: 10 + func-id: 344 + return: integer + sleep: 0 + tooltip: >- + Returns the number of available URLs for the current script.\nReturns an + integer that is the number of available URLs. + llGetGMTclock: + arguments: [] + energy: 10 + func-id: 282 + return: float + sleep: 0 + tooltip: >- + Returns the time in seconds since midnight GMT.\nGets the time in seconds + since midnight in GMT/UTC. + llGetGeometricCenter: + arguments: [] + energy: 10 + func-id: 278 + return: vector + sleep: 0 + tooltip: >- + Returns the vector that is the geometric center of the object relative to + the root prim. + llGetHTTPHeader: + arguments: + - HTTPRequestID: + tooltip: A valid HTTP request key + type: key + - Header: + tooltip: Header value name + type: string + energy: 10 + func-id: 349 + return: string + sleep: 0 + tooltip: >- + Returns the value for header for request_id.\nReturns a string that is the + value of the Header for HTTPRequestID. + llGetHealth: + arguments: + - ID: + tooltip: The ID of an agent or object in the region. + type: key + energy: 10 + func-id: 552 + return: float + sleep: 0 + tooltip: Returns the current health of an avatar or object in the region. + llGetInventoryAcquireTime: + arguments: + - InventoryItem: + tooltip: Name of item in prim inventory. + type: string + energy: 10 + func-id: 529 + return: string + sleep: 0 + tooltip: >- + Returns the time at which the item was placed into this prim's inventory + as a timestamp. + llGetInventoryCreator: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 291 + return: key + sleep: 0 + tooltip: >- + Returns a key for the creator of the inventory item.\nThis function + returns the UUID of the creator of item. If item is not found in + inventory, the object says "No item named 'name'". + llGetInventoryDesc: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 543 + return: string + sleep: 0 + tooltip: >- + Returns the item description of the item in inventory. If item is not + found in inventory, the object says "No item named 'name'" to the debug + channel and returns an empty string. + llGetInventoryKey: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 175 + return: key + sleep: 0 + tooltip: >- + Returns the key that is the UUID of the inventory named.\nReturns the key + of the inventory named. + llGetInventoryName: + arguments: + - InventoryType: + tooltip: Inventory item type + type: integer + - Index: + index-semantics: true + tooltip: Index number of inventory item. + type: integer + energy: 10 + func-id: 147 + return: string + sleep: 0 + tooltip: >- + Returns the name of the inventory item of a given type, specified by index + number.\nUse the inventory constants INVENTORY_* to specify the type. + llGetInventoryNumber: + arguments: + - InventoryType: + tooltip: Inventory item type + type: integer + energy: 10 + func-id: 146 + return: integer + sleep: 0 + tooltip: >- + Returns the quantity of items of a given type (INVENTORY_* flag) in the + prim's inventory.\nUse the inventory constants INVENTORY_* to specify the + type. + llGetInventoryPermMask: + arguments: + - InventoryItem: + tooltip: Inventory item name. + type: string + - BitMask: + tooltip: 'MASK_BASE, MASK_OWNER, MASK_GROUP, MASK_EVERYONE or MASK_NEXT' + type: integer + energy: 10 + func-id: 289 + return: integer + sleep: 0 + tooltip: >- + Returns the requested permission mask for the inventory item.\nReturns the + requested permission mask for the inventory item defined by InventoryItem. + If item is not in the object's inventory, llGetInventoryPermMask returns + FALSE and causes the object to say "No item named ''", where + "" is item. + llGetInventoryType: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 301 + return: integer + sleep: 0 + tooltip: >- + Returns the type of the named inventory item.\nLike all inventory + functions, llGetInventoryType is case-sensitive. + llGetKey: + arguments: [] + energy: 10 + func-id: 121 + return: key + sleep: 0 + tooltip: >- + Returns the key of the prim the script is attached to.\nGet the key for + the object which has this script. + llGetLandOwnerAt: + arguments: + - Position: + tooltip: '' + type: vector + energy: 10 + func-id: 216 + return: key + sleep: 0 + tooltip: >- + Returns the key of the land owner, returns NULL_KEY if public.\nReturns + the key of the land owner at Position, or NULL_KEY if public. + llGetLinkKey: + arguments: + - LinkNumber: + tooltip: '' + type: integer + energy: 10 + func-id: 144 + return: key + sleep: 0 + tooltip: >- + Returns the key of the linked prim LinkNumber.\nReturns the key of + LinkNumber in the link set. + llGetLinkMedia: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Face: + tooltip: The prim's side number + type: integer + - Parameters: + tooltip: A list of PRIM_* property constants to return values of. + type: list + energy: 10 + func-id: 372 + return: list + sleep: 0 + tooltip: "Get the media parameters for a particular face on linked prim, given the desired list of parameter names. Returns a list of values in the order requested.\tReturns an empty list if no media exists on the face." + llGetLinkName: + arguments: + - LinkNumber: + tooltip: '' + type: integer + energy: 10 + func-id: 145 + return: string + sleep: 0 + tooltip: >- + Returns the name of LinkNumber in a link set.\nReturns the name of + LinkNumber the link set. + llGetLinkNumber: + arguments: [] + energy: 10 + func-id: 139 + return: integer + sleep: 0 + tooltip: >- + Returns the link number of the prim containing the script (0 means not + linked, 1 the prim is the root, 2 the prim is the first child, + etc.).\nReturns the link number of the prim containing the script. 0 means + no link, 1 the root, 2 for first child, etc. + llGetLinkNumberOfSides: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + energy: 10 + func-id: 357 + return: integer + sleep: 0 + tooltip: >- + Returns the number of sides of the specified linked prim.\nReturns an + integer that is the number of faces (or sides) of the prim link. + llGetLinkPrimitiveParams: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + - Parameters: + tooltip: PRIM_* flags. + type: list + energy: 10 + func-id: 354 + return: list + sleep: 0 + tooltip: >- + Returns the list of primitive attributes requested in the Parameters list + for LinkNumber.\nPRIM_* flags can be broken into three categories, face + flags, prim flags, and object flags.\n* Supplying a prim or object flag + will return that flag's attributes.\n* Face flags require the user to also + supply a face index parameter. + llGetLinkSitFlags: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + energy: 10 + func-id: 551 + return: integer + sleep: 0 + tooltip: Returns the sit flags set on the specified prim in a linkset. + llGetListEntryType: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 194 + native: true + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns the type of the index entry in the list (TYPE_INTEGER, TYPE_FLOAT, + TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if + index is off list).\nReturns the type of the variable at Index in + ListVariable. + llGetListLength: + arguments: + - ListVariable: + tooltip: '' + type: list + energy: 10 + func-id: 185 + native: true + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns the number of elements in the list.\nReturns the number of + elements in ListVariable. + llGetLocalPos: + arguments: [] + energy: 10 + func-id: 60 + return: vector + sleep: 0 + tooltip: >- + Returns the position relative to the root.\nReturns the local position of + a child object relative to the root. + llGetLocalRot: + arguments: [] + energy: 10 + func-id: 63 + return: rotation + sleep: 0 + tooltip: >- + Returns the rotation local to the root.\nReturns the local rotation of a + child object relative to the root. + llGetMass: + arguments: [] + energy: 10 + func-id: 109 + return: float + sleep: 0 + tooltip: >- + Returns the mass of object that the script is attached to.\nReturns the + scripted object's mass. When called from a script in a link-set, the + parent will return the sum of the link-set weights, while a child will + return just its own mass. When called from a script inside an attachment, + this function will return the mass of the avatar it's attached to, not its + own. + llGetMassMKS: + arguments: [] + energy: 10 + func-id: 382 + return: float + sleep: 0 + tooltip: 'Acts as llGetMass(), except that the units of the value returned are Kg.' + llGetMaxScaleFactor: + arguments: [] + energy: 10 + func-id: 591 + return: float + sleep: 0 + tooltip: >- + Returns the largest multiplicative uniform scale factor that can be + successfully applied (via llScaleByFactor()) to the object without + violating prim size or linkability rules. + llGetMemoryLimit: + arguments: [] + energy: 10 + func-id: 370 + return: integer + sleep: 0 + tooltip: 'Get the maximum memory a script can use, in bytes.' + llGetMinScaleFactor: + arguments: [] + energy: 10 + func-id: 590 + return: float + sleep: 0 + tooltip: >- + Returns the smallest multiplicative uniform scale factor that can be + successfully applied (via llScaleByFactor()) to the object without + violating prim size or linkability rules. + llGetMoonDirection: + arguments: [] + energy: 10 + func-id: 701 + return: vector + sleep: 0 + tooltip: >- + Returns a normalized vector of the direction of the moon in the + parcel.\nReturns the moon's direction on the simulator in the parcel. + llGetMoonRotation: + arguments: [] + energy: 10 + func-id: 709 + return: rotation + sleep: 0 + tooltip: Returns the rotation applied to the moon in the parcel. + llGetNextEmail: + arguments: + - Address: + tooltip: '' + type: string + - Subject: + tooltip: '' + type: string + energy: 10 + func-id: 120 + return: void + sleep: 0 + tooltip: >- + Fetch the next queued email with that matches the given address and/or + subject, via the email event.\nIf the parameters are blank, they are not + used for filtering. + llGetNotecardLine: + arguments: + - NotecardName: + tooltip: '' + type: string + - LineNumber: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 217 + return: key + sleep: 0.1 + tooltip: >- + Returns LineNumber from NotecardName via the dataserver event. The line + index starts at zero in LSL, one in Lua.\nIf the requested line is passed + the end of the note-card the dataserver event will return the constant EOF + string.\nThe key returned by this function is a unique identifier which + will be supplied to the dataserver event in the requested parameter. + llGetNotecardLineSync: + arguments: + - NotecardName: + tooltip: '' + type: string + - LineNumber: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 549 + return: string + sleep: 0 + tooltip: >- + Returns LineNumber from NotecardName. The line index starts at zero in + LSL, one in Lua.\nIf the requested line is past the end of the note-card + the return value will be set to the constant EOF string.\nIf the note-card + is not cached on the simulator the return value is the NAK string. + llGetNumberOfNotecardLines: + arguments: + - NotecardName: + tooltip: '' + type: string + energy: 10 + func-id: 276 + return: key + sleep: 0.1 + tooltip: >- + Returns the number of lines contained within a notecard via the dataserver + event.\nThe key returned by this function is a query ID for identifying + the dataserver reply. + llGetNumberOfPrims: + arguments: [] + energy: 10 + func-id: 275 + return: integer + sleep: 0 + tooltip: >- + Returns the number of prims in a link set the script is attached + to.\nReturns the number of prims in (and avatars seated on) the object the + script is in. + llGetNumberOfSides: + arguments: [] + energy: 10 + func-id: 168 + return: integer + sleep: 0 + tooltip: >- + Returns the number of faces (or sides) of the prim.\nReturns the number of + sides of the prim which has the script. + llGetObjectAnimationNames: + arguments: [] + energy: 10 + func-id: 506 + return: list + sleep: 0 + tooltip: >- + Returns a list of names of playing animations for an object.\nReturns a + list of names of all playing animations for the current object. + llGetObjectDesc: + arguments: [] + energy: 10 + func-id: 270 + return: string + sleep: 0 + tooltip: >- + Returns the description of the prim the script is attached to.\nReturns + the description of the scripted object/prim. You can set the description + using llSetObjectDesc. + llGetObjectDetails: + arguments: + - ID: + tooltip: Prim or avatar UUID that is in the same region. + type: key + - Parameters: + tooltip: List of OBJECT_* flags. + type: list + energy: 10 + func-id: 332 + return: list + sleep: 0 + tooltip: >- + Returns a list of object details specified in the Parameters list for the + object or avatar in the region with key ID.\nParameters are specified by + the OBJECT_* constants. + llGetObjectLinkKey: + arguments: + - id: + tooltip: UUID of prim + type: key + - link_no: + tooltip: Link number to retrieve + type: integer + energy: 10 + func-id: 532 + return: key + sleep: 0 + tooltip: >- + Returns the key of the linked prim link_no in a linkset.\nReturns the key + of link_no in the link set specified by id. + llGetObjectMass: + arguments: + - ID: + tooltip: '' + type: key + energy: 10 + func-id: 295 + return: float + sleep: 0 + tooltip: >- + Returns the mass of the avatar or object in the region.\nGets the mass of + the object or avatar corresponding to ID. + llGetObjectName: + arguments: [] + energy: 10 + func-id: 202 + return: string + sleep: 0 + tooltip: >- + Returns the name of the prim which the script is attached to.\nReturns the + name of the prim (not object) which contains the script. + llGetObjectPermMask: + arguments: + - Category: + tooltip: >- + Category is one of MASK_BASE, MASK_OWNER, MASK_GROUP, MASK_EVERYONE, + or MASK_NEXT + type: integer + energy: 10 + func-id: 287 + return: integer + sleep: 0 + tooltip: Returns the permission mask of the requested category for the object. + llGetObjectPrimCount: + arguments: + - ObjectID: + tooltip: '' + type: key + energy: 10 + func-id: 323 + return: integer + sleep: 0 + tooltip: >- + Returns the total number of prims for an object in the region.\nReturns + the prim count for any object id in the same region. + llGetOmega: + arguments: [] + energy: 10 + func-id: 79 + return: vector + sleep: 0 + tooltip: >- + Returns the rotation velocity in radians per second.\nReturns a vector + that is the rotation velocity of the object in radians per second. + llGetOwner: + arguments: [] + energy: 10 + func-id: 117 + return: key + sleep: 0 + tooltip: >- + Returns the object owner's UUID.\nReturns the key for the owner of the + object. + llGetOwnerKey: + arguments: + - ObjectID: + tooltip: '' + type: key + energy: 10 + func-id: 182 + return: key + sleep: 0 + tooltip: >- + Returns the owner of ObjectID.\nReturns the key for the owner of object + ObjectID. + llGetParcelDetails: + arguments: + - Position: + tooltip: Location within the region. + type: vector + - ParcelDetails: + tooltip: List of details requested for the specified parcel location. + type: list + energy: 10 + func-id: 327 + return: list + sleep: 0 + tooltip: >- + Returns a list of parcel details specified in the ParcelDetails list for + the parcel at Position.\nParameters is one or more of: + PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, + _SEE_AVATARS.\nReturns a list that is the parcel details specified in + ParcelDetails (in the same order) for the parcel at Position. + llGetParcelFlags: + arguments: + - Position: + tooltip: '' + type: vector + energy: 10 + func-id: 317 + return: integer + sleep: 0 + tooltip: >- + Returns a mask of the parcel flags (PARCEL_FLAG_*) for the parcel that + includes the point Position.\nReturns a bit-field specifying the parcel + flags (PARCEL_FLAG_*) for the parcel at Position. + llGetParcelMaxPrims: + arguments: + - Position: + tooltip: Region coordinates (z is ignored) of parcel. + type: vector + - SimWide: + tooltip: >- + Boolean. If FALSE then the return is the maximum prims supported by + the parcel. If TRUE then it is the combined number of prims on all + parcels in the region owned by the specified parcel's owner. + type: integer + energy: 10 + func-id: 326 + return: integer + sleep: 0 + tooltip: >- + Returns the maximum number of prims allowed on the parcel at Position for + a given scope.\nThe scope may be set to an individual parcel or the + combined resources of all parcels with the same ownership in the region. + llGetParcelMusicURL: + arguments: [] + energy: 10 + func-id: 396 + return: string + sleep: 0 + tooltip: >- + Gets the streaming audio URL for the parcel object is on.\nThe object + owner, avatar or group, must also be the land owner. + llGetParcelPrimCount: + arguments: + - Position: + tooltip: Region coordinates of parcel to query. + type: vector + - Category: + tooltip: A PARCEL_COUNT_* flag. + type: integer + - SimWide: + tooltip: >- + Boolean. If FALSE then the return is the maximum prims supported by + the parcel. If TRUE then it is the combined number of prims on all + parcels in the region owned by the specified parcel's owner. + type: integer + energy: 10 + func-id: 325 + return: integer + sleep: 0 + tooltip: >- + Returns the number of prims on the parcel at Position of the given + category.\nCategories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, + _SELECTED, _TEMP.\nReturns the number of prims used on the parcel at + Position which are in Category.\nIf SimWide is TRUE, it returns the total + number of objects for all parcels with matching ownership in the category + specified.\nIf SimWide is FALSE, it returns the number of objects on this + specific parcel in the category specified + llGetParcelPrimOwners: + arguments: + - Position: + tooltip: '' + type: vector + energy: 10 + func-id: 324 + return: list + sleep: 2 + tooltip: >- + Returns a list of up to 100 residents who own objects on the parcel at + Position, with per-owner land impact totals.\nRequires owner-like + permissions for the parcel, and for the script owner to be present in the + region.\nThe list is formatted as [ key agentKey1, integer agentLI1, key + agentKey2, integer agentLI2, ... ], sorted by agent key.\nThe integers are + the combined land impacts of the objects owned by the corresponding + agents. + llGetPermissions: + arguments: [] + energy: 10 + func-id: 138 + return: integer + sleep: 0 + tooltip: >- + Returns an integer bitmask of the permissions that have been granted to + the script. Individual permissions can be determined using a bit-wise + "and" operation against the PERMISSION_* constants + llGetPermissionsKey: + arguments: [] + energy: 10 + func-id: 137 + return: key + sleep: 0 + tooltip: >- + Returns the key of the avatar that last granted or declined permissions to + the script.\nReturns NULL_KEY if permissions were never granted or + declined. + llGetPhysicsMaterial: + arguments: [] + energy: 10 + func-id: 381 + return: list + sleep: 0 + tooltip: >- + Returns a list of the form [float gravity_multiplier, float restitution, + float friction, float density]. + llGetPos: + arguments: [] + energy: 10 + func-id: 59 + return: vector + sleep: 0 + tooltip: >- + Returns the position of the task in region coordinates.\nReturns the + vector position of the task in region coordinates. + llGetPrimMediaParams: + arguments: + - Face: + tooltip: face number + type: integer + - Parameters: + tooltip: One or more PRIM_MEDIA_* flags + type: list + energy: 10 + func-id: 351 + return: list + sleep: 1 + tooltip: >- + Returns the media parameters for a particular face on an object, given the + desired list of parameter names, in the order requested. Returns an empty + list if no media exists on the face. + llGetPrimitiveParams: + arguments: + - Parameters: + tooltip: PRIM_* flags and face parameters + type: list + energy: 10 + func-id: 279 + return: list + sleep: 0.2 + tooltip: >- + Returns the primitive parameters specified in the parameters + list.\nReturns primitive parameters specified in the Parameters list. + llGetRegionAgentCount: + arguments: [] + energy: 10 + func-id: 334 + return: integer + sleep: 0 + tooltip: >- + Returns the number of avatars in the region.\nReturns an integer that is + the number of avatars in the region. + llGetRegionCorner: + arguments: [] + energy: 10 + func-id: 199 + return: vector + sleep: 0 + tooltip: >- + Returns a vector, in meters, that is the global location of the south-west + corner of the region which the object is in.\nReturns the Region-Corner of + the simulator containing the task. The region-corner is a vector (values + in meters) representing distance from the first region. + llGetRegionDayLength: + arguments: [] + energy: 10 + func-id: 704 + return: integer + sleep: 0 + tooltip: Returns the number of seconds in a day in this region. + llGetRegionDayOffset: + arguments: [] + energy: 10 + func-id: 706 + return: integer + sleep: 0 + tooltip: >- + Returns the number of seconds in a day is offset from midnight in this + parcel. + llGetRegionFPS: + arguments: [] + energy: 10 + func-id: 228 + return: float + sleep: 0 + tooltip: Returns the mean region frames per second. + llGetRegionFlags: + arguments: [] + energy: 10 + func-id: 318 + return: integer + sleep: 0 + tooltip: >- + Returns the region flags (REGION_FLAG_*) for the region the object is + in.\nReturns a bit-field specifying the region flags (REGION_FLAG_*) for + the region the object is in. + llGetRegionMoonDirection: + arguments: [] + energy: 10 + func-id: 702 + return: vector + sleep: 0 + tooltip: >- + Returns a normalized vector of the direction of the moon in the + region.\nReturns the moon's direction on the simulator. + llGetRegionMoonRotation: + arguments: [] + energy: 10 + func-id: 710 + return: rotation + sleep: 0 + tooltip: Returns the rotation applied to the moon in the region. + llGetRegionName: + arguments: [] + energy: 10 + func-id: 226 + return: string + sleep: 0 + tooltip: Returns the current region name. + llGetRegionSunDirection: + arguments: [] + energy: 10 + func-id: 700 + return: vector + sleep: 0 + tooltip: >- + Returns a normalized vector of the direction of the sun in the + region.\nReturns the sun's direction on the simulator. + llGetRegionSunRotation: + arguments: [] + energy: 10 + func-id: 708 + return: rotation + sleep: 0 + tooltip: Returns the rotation applied to the sun in the region. + llGetRegionTimeDilation: + arguments: [] + energy: 10 + func-id: 227 + return: float + sleep: 0 + tooltip: >- + Returns the current time dilation as a float between 0.0 (full dilation) + and 1.0 (no dilation).\nReturns the current time dilation as a float + between 0.0 and 1.0. + llGetRegionTimeOfDay: + arguments: [] + energy: 10 + func-id: 712 + return: float + sleep: 0 + tooltip: >- + Returns the time in seconds since environmental midnight for the entire + region. + llGetRenderMaterial: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 760 + return: string + sleep: 0 + tooltip: >- + Returns a string that is the render material on face (the inventory name + if it is a material in the prim's inventory, otherwise the key).\nReturns + the render material of a face, if it is found in object inventory, its key + otherwise. + llGetRootPosition: + arguments: [] + energy: 10 + func-id: 268 + return: vector + sleep: 0 + tooltip: >- + Returns the position (in region coordinates) of the root prim of the + object which the script is attached to.\nThis is used to allow a child + prim to determine where the root is. + llGetRootRotation: + arguments: [] + energy: 10 + func-id: 269 + return: rotation + sleep: 0 + tooltip: >- + Returns the rotation (relative to the region) of the root prim of the + object which the script is attached to.\nGets the global rotation of the + root object of the object script is attached to. + llGetRot: + arguments: [] + energy: 10 + func-id: 62 + return: rotation + sleep: 0 + tooltip: Returns the rotation relative to the region's axes.\nReturns the rotation. + llGetSPMaxMemory: + arguments: [] + energy: 10 + func-id: 365 + return: integer + sleep: 0 + tooltip: >- + Returns the maximum used memory for the current script. Only valid after + using PROFILE_SCRIPT_MEMORY. Non-mono scripts always use 16k.\nReturns the + integer of the most bytes used while llScriptProfiler was last active. + llGetScale: + arguments: [] + energy: 10 + func-id: 48 + return: vector + sleep: 0 + tooltip: >- + Returns the scale of the prim.\nReturns a vector that is the scale + (dimensions) of the prim. + llGetScriptName: + arguments: [] + energy: 10 + func-id: 167 + return: string + sleep: 0 + tooltip: >- + Returns the name of the script that this function is used in.\nReturns the + name of this script. + llGetScriptState: + arguments: + - ScriptName: + tooltip: '' + type: string + bool-semantics: true + energy: 10 + func-id: 250 + return: integer + sleep: 0 + tooltip: >- + Returns TRUE if the script named is running.\nReturns TRUE if ScriptName + is running. + llGetSimStats: + arguments: + - StatType: + tooltip: Statistic type. + type: integer + energy: 10 + func-id: 415 + return: float + sleep: 0 + tooltip: Returns a float that is the requested statistic. + llGetSimulatorHostname: + arguments: [] + energy: 10 + func-id: 283 + return: string + sleep: 10 + tooltip: >- + Returns the host-name of the machine which the script is running on.\nFor + example, "sim225.agni.lindenlab.com". + llGetStartParameter: + arguments: [] + energy: 10 + func-id: 134 + return: integer + sleep: 0 + tooltip: >- + Returns an integer that is the script rez parameter.\nIf the object was + rezzed by an agent, this function returns 0. + llGetStartString: + arguments: null + energy: 10 + func-id: 556 + return: string + sleep: 0 + tooltip: >- + Returns a string that is the value passed to llRezObjectWithParams with + REZ_PARAM_STRING.\nIf the object was rezzed by an agent, this function + returns an empty string. + llGetStaticPath: + arguments: + - Start: + tooltip: Starting position. + type: vector + - End: + tooltip: Ending position. + type: vector + - Radius: + tooltip: >- + Radius of the character that the path is for, between 0.125m and + 5.0m. + type: float + - Parameters: + tooltip: >- + Currently only accepts the parameter CHARACTER_TYPE; the options are + identical to those used for llCreateCharacter. The default value is + CHARACTER_TYPE_NONE. + type: list + energy: 10 + func-id: 413 + return: list + sleep: 0 + tooltip: '' + llGetStatus: + arguments: + - StatusFlag: + tooltip: A STATUS_* flag + type: integer + energy: 10 + func-id: 46 + bool-semantics: true + return: integer + sleep: 0 + tooltip: >- + Returns boolean value of the specified status (e.g. STATUS_PHANTOM) of the + object the script is attached to. + llGetSubString: + arguments: + - String: + tooltip: '' + type: string + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 94 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns a sub-string from String, in a range specified by the Start and + End indices (inclusive).\nUsing negative numbers for Start and/or End + causes the index to count backwards from the length of the string, so 0, + -1 would capture the entire string.\nIf Start is greater than End, the sub + string is the exclusion of the entries. + llGetSunDirection: + arguments: [] + energy: 10 + func-id: 177 + return: vector + sleep: 0 + tooltip: >- + Returns a normalized vector of the direction of the sun in the + parcel.\nReturns the sun's direction on the simulator in the parcel. + llGetSunRotation: + arguments: [] + energy: 10 + func-id: 707 + return: rotation + sleep: 0 + tooltip: Returns the rotation applied to the sun in the parcel. + llGetTexture: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 57 + return: string + sleep: 0 + tooltip: >- + Returns a string that is the texture on face (the inventory name if it is + a texture in the prim's inventory, otherwise the key).\nReturns the + texture of a face, if it is found in object inventory, its key otherwise. + llGetTextureOffset: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 178 + return: vector + sleep: 0 + tooltip: Returns the texture offset of face in the x and y components of a vector. + llGetTextureRot: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 180 + return: float + sleep: 0 + tooltip: Returns the texture rotation of side. + llGetTextureScale: + arguments: + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 179 + return: vector + sleep: 0 + tooltip: >- + Returns the texture scale of side in the x and y components of a + vector.\nReturns the texture scale of a side in the x and y components of + a vector. + llGetTime: + arguments: [] + energy: 10 + func-id: 82 + return: float + sleep: 0 + tooltip: >- + Returns the time in seconds since the last region reset, script reset, or + call to either llResetTime or llGetAndResetTime. + llGetTimeOfDay: + arguments: [] + energy: 10 + func-id: 80 + return: float + sleep: 0 + tooltip: Returns the time in seconds since environmental midnight on the parcel. + llGetTimestamp: + arguments: [] + energy: 10 + func-id: 273 + return: string + sleep: 0 + tooltip: >- + Returns a time-stamp (UTC time zone) in the format: + YYYY-MM-DDThh:mm:ss.ff..fZ. + llGetTorque: + arguments: [] + energy: 10 + func-id: 75 + return: vector + sleep: 0 + tooltip: >- + Returns the torque (if the script is physical).\nReturns a vector that is + the torque (if the script is physical). + llGetUnixTime: + arguments: [] + energy: 10 + func-id: 316 + return: integer + sleep: 0 + tooltip: >- + Returns the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC + from the system clock. + llGetUsedMemory: + arguments: [] + energy: 10 + func-id: 366 + return: integer + sleep: 0 + tooltip: >- + Returns the current used memory for the current script. Non-mono scripts + always use 16K.\nReturns the integer of the number of bytes of memory + currently in use by the script. Non-mono scripts always use 16K. + llGetUsername: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 358 + return: string + sleep: 0 + tooltip: >- + Returns the username of an avatar, if the avatar is connected to the + current region, or if the name has been cached. Otherwise, returns an + empty string. Use llRequestUsername if the avatar may be absent from the + region. + llGetVel: + arguments: [] + energy: 10 + func-id: 77 + return: vector + sleep: 0 + tooltip: >- + Returns the velocity of the object.\nReturns a vector that is the velocity + of the object. + llGetVisualParams: + arguments: + - ID: + tooltip: Avatar UUID in the same region. + type: key + - Parameters: + tooltip: List of visual parameter IDs. + type: list + energy: 10 + func-id: 530 + return: list + sleep: 0 + tooltip: Returns a list of the current value for each requested visual parameter. + llGetWallclock: + arguments: [] + energy: 10 + func-id: 81 + return: float + sleep: 0 + tooltip: >- + Returns the time in seconds since midnight California Pacific time + (PST/PDT).\nReturns the time in seconds since simulator's time-zone + midnight (Pacific Time). + llGiveAgentInventory: + arguments: + - AgentID: + tooltip: An agent in the region. + type: key + - FolderName: + tooltip: Folder name to give to the agent. + type: string + - InventoryItems: + tooltip: Inventory items to give to the agent. + type: list + - Options: + tooltip: A list of option for inventory transfer. + type: list + energy: 10 + func-id: 517 + return: integer + sleep: 3 + tooltip: >- + Give InventoryItems to the specified agent as a new folder of items, as + permitted by the permissions system. The target must be an agent. + llGiveInventory: + arguments: + - TargetID: + tooltip: '' + type: key + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 150 + return: void + sleep: 0 + tooltip: >- + Give InventoryItem to destination represented by TargetID, as permitted by + the permissions system.\nTargetID may be any agent or an object in the + same region. + llGiveInventoryList: + arguments: + - TargetID: + tooltip: '' + type: key + - FolderName: + tooltip: '' + type: string + - InventoryItems: + tooltip: '' + type: list + energy: 10 + func-id: 231 + return: void + sleep: 3 + tooltip: >- + Give InventoryItems to destination (represented by TargetID) as a new + folder of items, as permitted by the permissions system.\nTargetID may be + any agent or an object in the same region. If TargetID is an object, the + items are passed directly to the object inventory (no folder is created). + llGiveMoney: + arguments: + - AvatarID: + tooltip: '' + type: key + - Amount: + tooltip: '' + type: integer + energy: 10 + func-id: 99 + return: integer + sleep: 0 + tooltip: >- + Transfers Amount of L$ from script owner to AvatarID.\nThis call will + silently fail if PERMISSION_DEBIT has not been granted. + llGodLikeRezObject: + arguments: + - InventoryItemID: + tooltip: '' + type: key + - Position: + tooltip: '' + type: vector + energy: 10 + func-id: 135 + god-mode: true + return: void + sleep: 0 + tooltip: Rez directly off of a UUID if owner has god-bit set. + llGround: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 42 + return: float + sleep: 0 + tooltip: >- + Returns the ground height at the object position + offset.\nReturns the + ground height at the object's position + Offset. + llGroundContour: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 223 + return: vector + sleep: 0 + tooltip: >- + Returns the ground contour direction below the object position + + Offset.\nReturns the ground contour at the object's position + Offset. + llGroundNormal: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 222 + return: vector + sleep: 0 + tooltip: >- + Returns the ground normal below the object position + offset.\nReturns the + ground contour at the object's position + Offset. + llGroundRepel: + arguments: + - Height: + tooltip: Distance above the ground. + type: float + - Water: + tooltip: 'Boolean, if TRUE then hover above water too.' + type: integer + - Tau: + tooltip: Seconds to critically damp in. + type: float + energy: 10 + func-id: 230 + return: void + sleep: 0 + tooltip: >- + Critically damps to height if within height * 0.5 of level (either above + ground level or above the higher of land and water if water == + TRUE).\nCritically damps to fHeight if within fHeight * 0.5 of ground or + water level.\n + The height is above ground level if iWater is FALSE or above the higher of land and water if iWater is TRUE.\n + Do not use with vehicles. Only works in physics-enabled objects. + llGroundSlope: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 221 + return: vector + sleep: 0 + tooltip: >- + Returns the ground slope below the object position + Offset.\nReturns the + ground slope at the object position + Offset. + llHMAC: + arguments: + - Key: + tooltip: The PEM-formatted key for the hash digest. + type: string + - Message: + tooltip: The message to be hashed. + type: string + - Algorithm: + tooltip: 'The digest algorithm: md5, sha1, sha224, sha256, sha384, sha512.' + type: string + energy: 10 + func-id: 538 + return: string + sleep: 0 + tooltip: >- + Returns the base64-encoded hashed message authentication code (HMAC), of + Message using PEM-formatted Key and digest Algorithm (md5, sha1, sha224, + sha256, sha384, sha512). + llHTTPRequest: + arguments: + - URL: + tooltip: A valid HTTP/HTTPS URL. + type: string + - Parameters: + tooltip: 'Configuration parameters, specified as HTTP_* flag-value pairs.' + type: list + - Body: + tooltip: Contents of the request. + type: string + energy: 10 + func-id: 320 + return: key + sleep: 0 + tooltip: >- + Sends an HTTP request to the specified URL with the Body of the request + and Parameters.\nReturns a key that is a handle identifying the HTTP + request made. + llHTTPResponse: + arguments: + - HTTPRequestID: + tooltip: A valid HTTP request key. + type: key + - Status: + tooltip: 'HTTP Status (200, 400, 404, etc.).' + type: integer + - Body: + tooltip: Contents of the response. + type: string + energy: 10 + func-id: 348 + return: void + sleep: 0 + tooltip: >- + Responds to an incoming HTTP request which was triggerd by an http_request + event within the script. HTTPRequestID specifies the request to respond to + (this ID is supplied in the http_request event handler). Status and Body + specify the status code and message to respond with. + llHash: + arguments: + - value: + tooltip: '' + type: string + energy: 10 + func-id: 528 + return: integer + sleep: 0 + tooltip: Calculates the 32bit hash value for the provided string. + llInsertString: + arguments: + - TargetVariable: + tooltip: '' + type: string + - Position: + index-semantics: true + tooltip: '' + type: integer + - SourceVariable: + tooltip: '' + type: string + energy: 10 + func-id: 96 + pure: true + return: string + sleep: 0 + tooltip: >- + Inserts SourceVariable into TargetVariable at Position, and returns the + result.\nInserts SourceVariable into TargetVariable at Position and + returns the result. Note this does not alter TargetVariable. + llInstantMessage: + arguments: + - AvatarID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 118 + return: void + sleep: 2 + tooltip: >- + IMs Text to the user identified.\nSend Text to the user as an instant + message. + llIntegerToBase64: + arguments: + - Value: + tooltip: '' + type: integer + energy: 10 + func-id: 280 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns a string that is a Base64 big endian encode of Value.\nEncodes the + Value as an 8-character Base64 string. + llIsFriend: + arguments: + - agent_id: + tooltip: Agent ID of another agent in the region. + type: key + bool-semantics: true + energy: 10 + func-id: 542 + return: integer + sleep: 0 + tooltip: Returns TRUE if avatar ID is a friend of the script owner. + llIsLinkGLTFMaterial: + arguments: + - link: + tooltip: Link number to check. + type: integer + - face: + tooltip: Side to check for a PBR material. Use ALL_SIDES to check for all. + type: integer + energy: 10 + func-id: 559 + return: integer + bool-semantics: true + sleep: 0 + tooltip: Checks the face for a PBR render material. + llJson2List: + arguments: + - JSON: + tooltip: '' + type: string + energy: 10 + func-id: 513 + pure: true + return: list + sleep: 0 + tooltip: Converts the top level of the JSON string to a list. + llJsonGetValue: + arguments: + - JSON: + tooltip: '' + type: string + - Specifiers: + tooltip: '' + type: list + energy: 10 + func-id: 511 + pure: true + return: string + sleep: 0 + tooltip: Gets the value indicated by Specifiers from the JSON string. + llJsonSetValue: + arguments: + - JSON: + tooltip: '' + type: string + - Specifiers: + tooltip: '' + type: list + - Value: + tooltip: '' + type: string + energy: 10 + func-id: 510 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns a new JSON string that is the JSON given with the Value indicated + by Specifiers set to Value. + llJsonValueType: + arguments: + - JSON: + tooltip: '' + type: string + - Specifiers: + tooltip: '' + type: list + energy: 10 + func-id: 512 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns the type constant (JSON_*) for the value in JSON indicated by + Specifiers. + llKey2Name: + arguments: + - ID: + tooltip: Avatar or rezzed prim UUID. + type: key + energy: 10 + func-id: 210 + return: string + sleep: 0 + tooltip: >- + Returns the name of the prim or avatar specified by ID. The ID must be a + valid rezzed prim or avatar key in the current simulator, otherwise an + empty string is returned.\nFor avatars, the returned name is the legacy + name + llKeyCountKeyValue: + arguments: [] + energy: 10 + experience: true + func-id: 601 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction the request the number of keys in the data store. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will the the number of keys in the system. + + llKeysKeyValue: + arguments: + - First: + index-semantics: true + tooltip: Index of the first key to return. + type: integer + - Count: + tooltip: The number of keys to return. + type: integer + energy: 10 + experience: true + func-id: 602 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction the request a number of keys from the data store. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. The error XP_ERROR_KEY_NOT_FOUND is returned if First is greater than or equal to the number of keys in the data store. In the success case the subsequent items will be the keys requested. The number of keys returned may be less than requested if the return value is too large or if there is not enough keys remaining. The order keys are returned is not guaranteed but is stable between subsequent calls as long as no keys are added or removed. Because the keys are returned in a comma-delimited list it is not recommended to use commas in key names if this function is used. + + llLinear2sRGB: + arguments: + - color: + tooltip: A color in the linear colorspace. + type: vector + energy: 10 + func-id: 715 + return: vector + sleep: 0 + tooltip: Converts a color from the linear colorspace to sRGB. + llLinkAdjustSoundVolume: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Volume: + tooltip: The volume to set. + type: float + energy: 10 + func-id: 535 + return: void + sleep: 0 + tooltip: >- + Adjusts the volume (0.0 - 1.0) of the currently playing sound attached to + the link.\nThis function has no effect on sounds started with + llTriggerSound. + llLinkParticleSystem: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Rules: + tooltip: >- + Particle system rules list in the format [ rule1, data1, rule2, + data2 . . . ruleN, dataN ] + type: list + energy: 10 + func-id: 355 + return: void + sleep: 0 + tooltip: >- + Creates a particle system in prim LinkNumber based on Rules. An empty list + removes a particle system from object.\nList format is [ rule-1, data-1, + rule-2, data-2 ... rule-n, data-n ].\nThis is identical to + llParticleSystem except that it applies to a specified linked prim and not + just the prim the script is in. + llLinkPlaySound: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + - Flags: + tooltip: '' + type: integer + energy: 10 + func-id: 533 + return: void + sleep: 0 + tooltip: >- + Plays Sound, once or looping, at Volume (0.0 - 1.0). The sound may be + attached to the link or triggered at its location.\nOnly one sound may be + attached to an object at a time, and attaching a new sound or calling + llStopSound will stop the previously attached sound. + llLinkSetSoundQueueing: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - QueueEnable: + tooltip: >- + Boolean, sound queuing for the linked prim: TRUE enables, FALSE + disables (default). + type: integer + energy: 10 + func-id: 537 + return: void + sleep: 0 + tooltip: >- + Limits radius for audibility of scripted sounds (both attached and + triggered) to distance Radius around the link. + llLinkSetSoundRadius: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - radius: + tooltip: Maximum distance that sounds can be heard. + type: float + energy: 10 + func-id: 536 + return: void + sleep: 0 + tooltip: >- + Limits radius for audibility of scripted sounds (both attached and + triggered) to distance Radius around the link. + llLinkSitTarget: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag of the prim. + type: integer + - Offset: + tooltip: 'Position for the sit target, relative to the prim''s position.' + type: vector + - Rotation: + tooltip: Rotation (relative to the prim's rotation) for the avatar. + type: rotation + energy: 10 + func-id: 375 + return: void + sleep: 0 + tooltip: >- + Set the sit location for the linked prim(s). If Offset == <0,0,0> clear + it.\nSet the sit location for the linked prim(s). The sit location is + relative to the prim's position and rotation. + llLinkStopSound: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + energy: 10 + func-id: 534 + return: void + sleep: 0 + tooltip: Stops playback of the currently attached sound on a link. + llLinksetDataAvailable: + arguments: [] + energy: 10 + func-id: 654 + return: integer + sleep: 0 + tooltip: Returns the number of bytes remaining in the linkset's datastore. + llLinksetDataCountFound: + arguments: + - search: + tooltip: A regex search string to match against keys in the datastore. + type: string + energy: 10 + func-id: 661 + return: integer + sleep: 0 + tooltip: >- + Returns the number of keys matching the regular expression passed in the + search parameter. + llLinksetDataCountKeys: + arguments: [] + energy: 10 + func-id: 653 + return: integer + sleep: 0 + tooltip: Returns the number of keys in the linkset's datastore. + llLinksetDataDelete: + arguments: + - name: + tooltip: Key to delete from the linkset's datastore. + type: string + energy: 10 + func-id: 652 + return: integer + sleep: 0 + tooltip: 'Deletes a name:value pair from the linkset''s datastore.' + llLinksetDataDeleteFound: + arguments: + - search: + tooltip: A regex search string to match against keys in the datastore. + type: string + - pass: + tooltip: The pass phrase used to protect key value pairs in the linkset data + type: string + energy: 10 + func-id: 662 + return: list + sleep: 0 + tooltip: >- + Deletes all key value pairs in the linkset data where the key matches the + regular expression in search. Returns a list consisting of [ #deleted, + #not deleted ]. + llLinksetDataDeleteProtected: + arguments: + - name: + tooltip: Key to delete from the linkset's datastore. + type: string + - pass: + tooltip: Pass phrase to access protected data. + type: string + energy: 10 + func-id: 660 + return: integer + sleep: 0 + tooltip: 'Deletes a name:value pair from the linkset''s datastore.' + llLinksetDataFindKeys: + arguments: + - search: + tooltip: A regex search string to match against keys in the datastore. + type: string + - start: + tooltip: First entry to return. 0 for start of list. + type: integer + index-semantics: true + - count: + tooltip: Number of entries to return. Less than 1 for all keys. + type: integer + energy: 10 + func-id: 657 + return: list + sleep: 0 + tooltip: >- + Returns a list of keys from the linkset's data store matching the search + parameter. + llLinksetDataListKeys: + arguments: + - start: + tooltip: First entry to return. 0 for start of list. + type: integer + index-semantics: true + - count: + tooltip: Number of entries to return. Less than 1 for all keys. + type: integer + energy: 10 + func-id: 656 + return: list + sleep: 0 + tooltip: Returns a list of all keys in the linkset datastore. + llLinksetDataRead: + arguments: + - name: + tooltip: Key to retrieve from the linkset's datastore. + type: string + energy: 10 + func-id: 651 + return: string + sleep: 0 + tooltip: Returns the value stored for a key in the linkset. + llLinksetDataReadProtected: + arguments: + - name: + tooltip: Key to retrieve from the linkset's datastore. + type: string + - pass: + tooltip: Pass phrase to access protected data. + type: string + energy: 10 + func-id: 659 + return: string + sleep: 0 + tooltip: Returns the value stored for a key in the linkset. + llLinksetDataReset: + arguments: [] + energy: 10 + func-id: 655 + return: void + sleep: 0 + tooltip: 'Resets the linkset''s data store, erasing all key-value pairs.' + llLinksetDataWrite: + arguments: + - name: + tooltip: 'key for the name:value pair.' + type: string + - value: + tooltip: value to store in the linkset's datastore. + type: string + energy: 10 + func-id: 650 + return: integer + sleep: 0 + tooltip: 'Sets a name:value pair in the linkset''s datastore' + llLinksetDataWriteProtected: + arguments: + - name: + tooltip: 'key for the name:value pair.' + type: string + - value: + tooltip: value to store in the linkset's datastore. + type: string + - pass: + tooltip: Pass phrase to access protected data. + type: string + energy: 10 + func-id: 658 + return: integer + sleep: 0 + tooltip: 'Sets a name:value pair in the linkset''s datastore' + llList2CSV: + arguments: + - ListVariable: + tooltip: '' + type: list + energy: 10 + func-id: 195 + pure: true + return: string + sleep: 0 + tooltip: >- + Creates a string of comma separated values from the list.\nCreate a string + of comma separated values from the specified list. + llList2Float: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 187 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Copies the float at Index in the list.\nReturns the value at Index in the + specified list. If Index describes a location not in the list, or the + value cannot be type-cast to a float, then zero is returned. + llList2Integer: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 186 + native: true + pure: true + return: integer + sleep: 0 + tooltip: >- + Copies the integer at Index in the list.\nReturns the value at Index in + the specified list. If Index describes a location not in the list, or the + value cannot be type-cast to an integer, then zero is returned. + llList2Json: + arguments: + - JsonType: + tooltip: Type is JSON_ARRAY or JSON_OBJECT. + type: string + - Values: + tooltip: List of values to convert. + type: list + energy: 10 + func-id: 514 + pure: true + return: string + sleep: 0 + tooltip: >- + Converts either a strided list of key:value pairs to a JSON_OBJECT, or a + list of values to a JSON_ARRAY. + llList2Key: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 189 + native: true + pure: true + return: key + sleep: 0 + tooltip: >- + Copies the key at Index in the list.\nReturns the value at Index in the + specified list. If Index describes a location not in the list, or the + value cannot be type-cast to a key, then null string is returned. + llList2List: + arguments: + - ListVariable: + tooltip: '' + type: list + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 192 + native: true + pure: true + return: list + sleep: 0 + tooltip: >- + Returns a subset of entries from ListVariable, in a range specified by the + Start and End indicies (inclusive).\nUsing negative numbers for Start + and/or End causes the index to count backwards from the length of the + string, so 0, -1 would capture the entire string.\nIf Start is greater + than End, the sub string is the exclusion of the entries. + llList2ListSlice: + arguments: + - ListVariable: + tooltip: '' + type: list + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + - Stride: + tooltip: '' + type: integer + - slice_index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 801 + return: list + sleep: 0 + tooltip: >- + Returns a subset of entries from ListVariable, in a range specified by + Start and End indices (inclusive) return the slice_index element of each + stride.\n Using negative numbers for Start and/or End causes the index to + count backwards from the length of the list. (e.g. 0, -1 captures entire + list)\nIf slice_index is less than 0, it is counted backwards from the end + of the stride.\n Stride must be a positive integer > 0 or an empy list is + returned. If slice_index falls outside range of stride, an empty list is + returned. slice_index is zero-based. (e.g. A stride of 2 has valid indices + 0,1) + llList2ListStrided: + arguments: + - ListVariable: + tooltip: '' + type: list + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + - Stride: + tooltip: '' + type: integer + energy: 10 + func-id: 198 + return: list + sleep: 0 + tooltip: >- + Copies the strided slice of the list from Start to End.\nReturns a copy of + the strided slice of the specified list from Start to End. + llList2Rot: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 191 + native: true + pure: true + return: rotation + sleep: 0 + tooltip: >- + Copies the rotation at Index in the list.\nReturns the value at Index in + the specified list. If Index describes a location not in the list, or the + value cannot be type-cast to rotation, thenZERO_ROTATION is returned. + llList2String: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 188 + native: true + pure: true + return: string + sleep: 0 + tooltip: >- + Copies the string at Index in the list.\nReturns the value at Index in the + specified list as a string. If Index describes a location not in the list + then null string is returned. + llList2Vector: + arguments: + - ListVariable: + tooltip: '' + type: list + - Index: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 190 + native: true + pure: true + return: vector + sleep: 0 + tooltip: >- + Copies the vector at Index in the list.\nReturns the value at Index in the + specified list. If Index describes a location not in the list, or the + value cannot be type-cast to a vector, then ZERO_VECTOR is returned. + llListFindList: + arguments: + - ListVariable: + tooltip: '' + type: list + - Find: + tooltip: '' + type: list + energy: 10 + func-id: 201 + index-semantics: true + return: integer + sleep: 0 + tooltip: >- + Returns the index of the first instance of Find in ListVariable. Returns + -1 if not found.\nReturns the position of the first instance of the Find + list in the ListVariable. Returns -1 if not found. + llListFindListNext: + arguments: + - ListVariable: + tooltip: '' + type: list + - Find: + tooltip: '' + type: list + - Instance: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 803 + index-semantics: true + return: integer + sleep: 0 + tooltip: >- + Returns the index of the nth instance of Find in ListVariable. Returns -1 + if not found. + llListFindStrided: + arguments: + - ListVariable: + tooltip: '' + type: list + - Find: + tooltip: '' + type: list + - Start: + index-semantics: true + tooltip: '' + type: integer + - End: + index-semantics: true + tooltip: '' + type: integer + - Stride: + tooltip: '' + type: integer + energy: 10 + func-id: 800 + index-semantics: true + return: integer + sleep: 0 + tooltip: >- + Returns the index of the first instance of Find in ListVariable. Returns + -1 if not found.\nReturns the position of the first instance of the Find + list in the ListVariable after the start index and before the end index. + Steps through ListVariable by stride. Returns -1 if not found. + llListInsertList: + arguments: + - Target: + tooltip: '' + type: list + - ListVariable: + tooltip: '' + type: list + - Position: + index-semantics: true + tooltip: '' + type: integer + energy: 10 + func-id: 200 + native: true + pure: true + return: list + sleep: 0 + tooltip: >- + Returns a list that contains all the elements from Target but with the + elements from ListVariable inserted at Position start.\nReturns a new + list, created by inserting ListVariable into the Target list at Position. + Note this does not alter the Target. + llListRandomize: + arguments: + - ListVariable: + tooltip: '' + type: list + - Stride: + tooltip: '' + type: integer + energy: 10 + func-id: 197 + return: list + sleep: 0 + tooltip: >- + Returns a version of the input ListVariable which has been randomized by + blocks of size Stride.\nIf the remainder from the length of the list, + divided by the stride is non-zero, this function does not randomize the + list. + llListReplaceList: + arguments: + - Target: + tooltip: '' + type: list + - ListVariable: + tooltip: '' + type: list + - Start: + tooltip: '' + type: integer + index-semantics: true + - End: + tooltip: '' + type: integer + index-semantics: true + energy: 10 + func-id: 296 + native: true + pure: true + return: list + sleep: 0 + tooltip: >- + Returns a list that is Target with Start through End removed and + ListVariable inserted at Start.\nReturns a list replacing the slice of the + Target list from Start to End with the specified ListVariable. Start and + End are inclusive, so 0, 1 would replace the first two entries and 0, 0 + would replace only the first list entry. + llListSort: + arguments: + - ListVariable: + tooltip: List to sort. + type: list + - Stride: + tooltip: Stride length. + type: integer + - Ascending: + tooltip: >- + Boolean. TRUE = result in ascending order, FALSE = result in + descending order. + type: integer + energy: 10 + func-id: 184 + return: list + sleep: 0 + tooltip: >- + Returns the specified list, sorted into blocks of stride in ascending + order (if Ascending is TRUE, otherwise descending). Note that sort only + works if the first entry of each block is the same datatype. + llListSortStrided: + arguments: + - ListVariable: + tooltip: List to sort. + type: list + - Stride: + tooltip: Stride length. + type: integer + - Sortkey: + tooltip: The zero based element within the stride to use as the sort key + type: integer + index-semantics: true + - Ascending: + tooltip: >- + Boolean. TRUE = result in ascending order, FALSE = result in + descending order. + type: integer + energy: 10 + func-id: 802 + return: list + sleep: 0 + tooltip: >- + Returns the specified list, sorted by the specified element into blocks of + stride in ascending order (if Ascending is TRUE, otherwise descending). + Note that sort only works if the first entry of each block is the same + datatype. + llListStatistics: + arguments: + - Operation: + tooltip: One of LIST_STAT_* values + type: integer + - ListVariable: + tooltip: Variable to analyze. + type: list + energy: 10 + func-id: 315 + return: float + sleep: 0 + tooltip: >- + Performs a statistical aggregate function, specified by a LIST_STAT_* + constant, on ListVariables.\nThis function allows a script to perform a + statistical operation as defined by operation on a list composed of + integers and floats. + llListen: + arguments: + - Channel: + tooltip: '' + type: integer + - SpeakersName: + tooltip: '' + type: string + - SpeakersID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 25 + return: integer + sleep: 0 + tooltip: >- + Creates a listen callback for Text on Channel from SpeakersName and + SpeakersID (SpeakersName, SpeakersID, and/or Text can be empty) and + returns an identifier that can be used to deactivate or remove the + listen.\nNon-empty values for SpeakersName, SpeakersID, and Text will + filter the results accordingly, while empty strings and NULL_KEY will not + filter the results, for string and key parameters + respectively.\nPUBLIC_CHANNEL is the public chat channel that all avatars + see as chat text. DEBUG_CHANNEL is the script debug channel, and is also + visible to nearby avatars. All other channels are are not sent to avatars, + but may be used to communicate with scripts. + llListenControl: + arguments: + - ChannelHandle: + tooltip: '' + type: integer + - Active: + tooltip: '' + type: integer + energy: 10 + func-id: 26 + return: void + sleep: 0 + tooltip: >- + Makes a listen event callback active or inactive. Pass in the value + returned from llListen to the iChannelHandle parameter to specify which + listener you are controlling.\nUse boolean values to specify Active + llListenRemove: + arguments: + - ChannelHandle: + tooltip: '' + type: integer + energy: 10 + func-id: 27 + return: void + sleep: 0 + tooltip: >- + Removes a listen event callback. Pass in the value returned from llListen + to the iChannelHandle parameter to specify which listener to remove. + llLoadURL: + arguments: + - AvatarID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + - URL: + tooltip: '' + type: string + energy: 10 + func-id: 297 + return: void + sleep: 0.1 + tooltip: "Shows dialog to avatar AvatarID offering to load web page at URL.\tIf user clicks yes, launches their web browser.\\nllLoadURL displays a dialogue box to the user, offering to load the specified web page using the default web browser." + llLog: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 265 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the natural logarithm of Value. Returns zero if Value <= + 0.\nReturns the base e (natural) logarithm of the specified Value. + llLog10: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 264 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the base 10 logarithm of Value. Returns zero if Value <= + 0.\nReturns the base 10 (common) logarithm of the specified Value. + llLookAt: + arguments: + - Target: + tooltip: '' + type: vector + - Strength: + tooltip: '' + type: float + - Damping: + tooltip: '' + type: float + energy: 10 + func-id: 105 + return: void + sleep: 0 + tooltip: >- + Cause object name to point its forward axis towards Target, at a force + controlled by Strength and Damping.\nGood Strength values are around half + the mass of the object and good Damping values are less than 1/10th of the + Strength.\nAsymmetrical shapes require smaller Damping. A Strength of 0.0 + cancels the look at. + llLoopSound: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 87 + return: void + sleep: 0 + tooltip: >- + Plays specified Sound, looping indefinitely, at Volume (0.0 - 1.0).\nOnly + one sound may be attached to an object at a time.\nA second call to + llLoopSound with the same key will not restart the sound, but the new + volume will be used. This allows control over the volume of already + playing sounds.\nSetting the volume to 0 is not the same as calling + llStopSound; a sound with 0 volume will continue to loop.\nTo restart the + sound from the beginning, call llStopSound before calling llLoopSound + again. + llLoopSoundMaster: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 88 + return: void + sleep: 0 + tooltip: >- + Plays attached Sound, looping at volume (0.0 - 1.0), and declares it a + sync master.\nBehaviour is identical to llLoopSound, with the addition of + marking the source as a "Sync Master", causing "Slave" sounds to sync to + it. If there are multiple masters within a viewers interest area, the most + audible one (a function of both distance and volume) will win out as the + master.\nThe use of multiple masters within a small area is unlikely to + produce the desired effect. + llLoopSoundSlave: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 89 + return: void + sleep: 0 + tooltip: >- + Plays attached sound looping at volume (0.0 - 1.0), synced to most audible + sync master.\nBehaviour is identical to llLoopSound, unless there is a + "Sync Master" present.\nIf a Sync Master is already playing the Slave + sound will begin playing from the same point the master is in its loop + synchronizing the loop points of both sounds.\nIf a Sync Master is started + when the Slave is already playing, the Slave will skip to the correct + position to sync with the Master. + llMD5String: + arguments: + - Text: + tooltip: '' + type: string + - Nonce: + tooltip: '' + type: integer + energy: 10 + func-id: 258 + return: string + sleep: 0 + tooltip: >- + Returns a string of 32 hex characters that is an RSA Data Security Inc., + MD5 Message-Digest Algorithm of Text with Nonce used as the salt.\nReturns + a 32-character hex string. (128-bit in binary.) + llMakeExplosion: + arguments: + - Particles: + tooltip: '' + type: integer + - Scale: + tooltip: '' + type: float + - Velocity: + tooltip: '' + type: float + - Lifetime: + tooltip: '' + type: float + - Arc: + tooltip: '' + type: float + - Texture: + tooltip: '' + type: string + - Offset: + tooltip: '' + type: vector + deprecated: true + energy: 10 + func-id: 100 + return: void + sleep: 0.1 + tooltip: >- + Make a round explosion of particles. Deprecated: Use llParticleSystem + instead.\nMake a round explosion of particles using texture from the + objects inventory. Deprecated: Use llParticleSystem instead. + llMakeFire: + arguments: + - Particles: + tooltip: '' + type: integer + - Scale: + tooltip: '' + type: float + - Velocity: + tooltip: '' + type: float + - Lifetime: + tooltip: '' + type: float + - Arc: + tooltip: '' + type: float + - Texture: + tooltip: '' + type: string + - Offset: + tooltip: '' + type: vector + deprecated: true + energy: 10 + func-id: 103 + return: void + sleep: 0.1 + tooltip: >- + Make fire like particles. Deprecated: Use llParticleSystem instead.\nMake + fire particles using texture from the objects inventory. Deprecated: Use + llParticleSystem instead. + llMakeFountain: + arguments: + - Particles: + tooltip: '' + type: integer + - Scale: + tooltip: '' + type: float + - Velocity: + tooltip: '' + type: float + - Lifetime: + tooltip: '' + type: float + - Arc: + tooltip: '' + type: float + - Bounce: + tooltip: '' + type: integer + - Texture: + tooltip: '' + type: string + - Offset: + tooltip: '' + type: vector + - Bounce_Offset: + tooltip: '' + type: float + deprecated: true + energy: 10 + func-id: 101 + return: void + sleep: 0.1 + tooltip: >- + Make a fountain of particles. Deprecated: Use llParticleSystem + instead.\nMake a fountain of particles using texture from the objects + inventory. Deprecated: Use llParticleSystem instead. + llMakeSmoke: + arguments: + - Particles: + tooltip: '' + type: integer + - Scale: + tooltip: '' + type: float + - Velocity: + tooltip: '' + type: float + - Lifetime: + tooltip: '' + type: float + - Arc: + tooltip: '' + type: float + - Texture: + tooltip: '' + type: string + - Offset: + tooltip: '' + type: vector + deprecated: true + energy: 10 + func-id: 102 + return: void + sleep: 0.1 + tooltip: >- + Make smoke like particles. Deprecated: Use llParticleSystem instead.\nMake + smoky particles using texture from the objects inventory. Deprecated: Use + llParticleSystem instead. + llManageEstateAccess: + arguments: + - Action: + tooltip: One of the ESTATE_ACCESS_ALLOWED_* actions. + type: integer + - AvatarID: + tooltip: UUID of the avatar or group to act upon. + type: key + energy: 10 + func-id: 393 + return: integer + bool-semantics: true + sleep: 0 + tooltip: >- + Adds or removes agents from the estate's agent access or ban lists, or + groups to the estate's group access list. Action is one of the + ESTATE_ACCESS_ALLOWED_* operations to perform.\nReturns an integer + representing a boolean, TRUE if the call was successful; FALSE if + throttled, invalid action, invalid or null id or object owner is not + allowed to manage the estate.\nThe object owner is notified of any + changes, unless PERMISSION_SILENT_ESTATE_MANAGEMENT has been granted to + the script. + llMapBeacon: + arguments: + - RegionName: + tooltip: Region in which to show the beacon. + type: string + - Position: + tooltip: Position within region to show the beacon. + type: vector + - Options: + tooltip: Options + type: list + energy: 10 + func-id: 516 + return: void + sleep: 1 + tooltip: >- + Displays an in world beacon and optionally opens world map for avatar who + touched the object or is wearing the script, centered on RegionName with + Position highlighted. Only works for scripts attached to avatar, or during + touch events. + llMapDestination: + arguments: + - RegionName: + tooltip: '' + type: string + - Position: + tooltip: '' + type: vector + - Direction: + tooltip: '' + type: vector + energy: 10 + func-id: 309 + return: void + sleep: 1 + tooltip: >- + Opens world map for avatar who touched it or is wearing the script, + centred on RegionName with Position highlighted. Only works for scripts + attached to avatar, or during touch events.\nDirection currently has no + effect. + llMessageLinked: + arguments: + - LinkNumber: + tooltip: '' + type: integer + - Number: + tooltip: '' + type: integer + - Text: + tooltip: '' + type: string + - ID: + tooltip: '' + type: key + energy: 10 + func-id: 164 + return: void + sleep: 0 + tooltip: >- + Sends Number, Text, and ID to members of the link set identified by + LinkNumber.\nLinkNumber is either a linked number (available through + llGetLinkNumber) or a LINK_* constant. + llMinEventDelay: + arguments: + - Delay: + tooltip: '' + type: float + energy: 10 + func-id: 125 + return: void + sleep: 0 + tooltip: Set the minimum time between events being handled. + llModPow: + arguments: + - Value: + tooltip: '' + type: integer + - Power: + tooltip: '' + type: integer + - Modulus: + tooltip: '' + type: integer + energy: 10 + func-id: 300 + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns a Value raised to the Power, mod Modulus. ((a**b)%c) b is capped + at 0xFFFF (16 bits).\nReturns (Value ^ Power) % Modulus. (Value raised to + the Power, Modulus). Value is capped at 0xFFFF (16 bits). + llModifyLand: + arguments: + - Action: + tooltip: >- + LAND_LEVEL, LAND_RAISE, LAND_LOWER, LAND_SMOOTH, LAND_NOISE or + LAND_REVERT + type: integer + - Area: + tooltip: '0, 1, 2 (2m x 2m, 4m x 4m, or 8m x 8m)' + type: integer + energy: 10 + func-id: 159 + return: void + sleep: 0 + tooltip: >- + Modify land with action (LAND_LEVEL, LAND_RAISE, LAND_LOWER, LAND_SMOOTH, + LAND_NOISE, LAND_REVERT) on size (0, 1, 2, corresponding to 2m x 2m, 4m x + 4m, 8m x 8m). + llMoveToTarget: + arguments: + - Target: + tooltip: '' + type: vector + - Tau: + tooltip: '' + type: float + energy: 10 + func-id: 70 + return: void + sleep: 0 + tooltip: >- + Critically damp to Target in Tau seconds (if the script is + physical).\nCritically damp to position target in tau-seconds if the + script is physical. Good tau-values are greater than 0.2. A tau of 0.0 + stops the critical damping. + llName2Key: + arguments: + - Name: + tooltip: Name of agent in region to look up. + type: string + energy: 10 + func-id: 524 + return: key + sleep: 0 + tooltip: Look up Agent ID for the named agent in the region. + llNavigateTo: + arguments: + - Location: + tooltip: Region coordinates for the character to navigate to. + type: vector + - Options: + tooltip: >- + List of parameters to control the type of path-finding used. + Currently only FORCE_DIRECT_PATH supported. + type: list + energy: 10 + func-id: 398 + return: void + sleep: 0 + tooltip: >- + Navigate to destination.\nDirects an object to travel to a defined + position in the region or adjacent regions. + llOffsetTexture: + arguments: + - OffsetS: + tooltip: '' + type: float + - OffsetT: + tooltip: '' + type: float + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 55 + return: void + sleep: 0.2 + tooltip: >- + Sets the texture S and T offsets for the chosen Face.\nIf Face is + ALL_SIDES this function sets the texture offsets for all faces. + llOpenFloater: + arguments: + - floater_name: + tooltip: Identifier for floater to open + type: string + - url: + tooltip: URL to pass to floater + type: string + - params: + tooltip: Parameters to apply to open floater + type: list + energy: 10 + linden-experience: true + func-id: 604 + mono-sleep: 0.2 + return: integer + sleep: 0 + tooltip: >- + Returns the value for header for request_id.\nReturns a string that is the + value of the Header for HTTPRequestID. + llOpenRemoteDataChannel: + arguments: [] + deprecated: true + energy: 10 + func-id: 254 + return: void + sleep: 1 + tooltip: This function is deprecated. + llOrd: + arguments: + - value: + tooltip: The string to convert to Unicode. + type: string + - index: + tooltip: Index of character to convert to unicode. + type: integer + index-semantics: true + energy: 10 + func-id: 527 + pure: true + return: integer + sleep: 0 + tooltip: Returns the unicode value of the indicated character in the string. + llOverMyLand: + arguments: + - ID: + tooltip: '' + type: key + bool-semantics: true + energy: 10 + func-id: 215 + return: integer + sleep: 0 + tooltip: >- + Returns TRUE if id ID over land owned by the script owner, otherwise + FALSE.\nReturns TRUE if key ID is over land owned by the object owner, + FALSE otherwise. + llOwnerSay: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 292 + return: void + sleep: 0 + tooltip: >- + says Text to owner only (if owner is in region).\nSays Text to the owner + of the object running the script, if the owner has been within the + object's simulator since logging into Second Life, regardless of where + they may be in-world. + llParcelMediaCommandList: + arguments: + - CommandList: + tooltip: 'A list of PARCEL_MEDIA_COMMAND_* flags and their parameters ' + type: list + energy: 10 + func-id: 298 + return: void + sleep: 2 + tooltip: >- + Controls the playback of multimedia resources on a parcel or for an agent, + via one or more PARCEL_MEDIA_COMMAND_* arguments specified in CommandList. + llParcelMediaQuery: + arguments: + - QueryList: + tooltip: '' + type: list + energy: 10 + func-id: 299 + return: list + sleep: 2 + tooltip: >- + Queries the media properties of the parcel containing the script, via one + or more PARCEL_MEDIA_COMMAND_* arguments specified in CommandList.\nThis + function will only work if the script is contained within an object owned + by the land-owner (or if the land is owned by a group, only if the object + has been deeded to the group). + llParseString2List: + arguments: + - Text: + tooltip: '' + type: string + - Separators: + tooltip: '' + type: list + - Spacers: + tooltip: '' + type: list + energy: 10 + func-id: 214 + pure: true + return: list + sleep: 0 + tooltip: >- + Converts Text into a list, discarding Separators, keeping Spacers + (Separators and Spacers must be lists of strings, maximum of 8 + each).\nSeparators and Spacers are lists of strings with a maximum of 8 + entries each. + llParseStringKeepNulls: + arguments: + - Text: + tooltip: '' + type: string + - Separators: + tooltip: '' + type: list + - Spacers: + tooltip: '' + type: list + energy: 10 + func-id: 285 + pure: true + return: list + sleep: 0 + tooltip: >- + Breaks Text into a list, discarding separators, keeping spacers, keeping + any null values generated. (separators and spacers must be lists of + strings, maximum of 8 each).\nllParseStringKeepNulls works almost exactly + like llParseString2List, except that if a null is found it will add a + null-string instead of discarding it like llParseString2List does. + llParticleSystem: + arguments: + - Parameters: + tooltip: '' + type: list + energy: 10 + func-id: 229 + return: void + sleep: 0 + tooltip: >- + Creates a particle system in the prim the script is attached to, based on + Parameters. An empty list removes a particle system from object.\nList + format is [ rule-1, data-1, rule-2, data-2 ... rule-n, data-n ]. + llPassCollisions: + arguments: + - Pass: + tooltip: 'Boolean, if TRUE, collisions are passed from children on to parents.' + type: integer + energy: 10 + func-id: 166 + return: void + sleep: 0 + tooltip: >- + Configures how collision events are passed to scripts in the linkset.\nIf + Pass == TRUE, collisions involving collision-handling scripted child prims + are also passed on to the root prim. If Pass == FALSE (default behavior), + such collisions will only trigger events in the affected child prim. + llPassTouches: + arguments: + - Pass: + tooltip: 'Boolean, if TRUE, touches are passed from children on to parents.' + type: integer + energy: 10 + func-id: 154 + return: void + sleep: 0 + tooltip: >- + Configures how touch events are passed to scripts in the linkset.\nIf Pass + == TRUE, touches involving touch-handling scripted child prims are also + passed on to the root prim. If Pass == FALSE (default behavior), such + touches will only trigger events in the affected child prim. + llPatrolPoints: + arguments: + - Points: + tooltip: >- + A list of vectors for the character to travel through sequentially. + The list must contain at least two entries. + type: list + - Options: + tooltip: No options available at this time. + type: list + energy: 10 + func-id: 403 + return: void + sleep: 0 + tooltip: >- + Patrol a list of points.\nSets the points for a character + (llCreateCharacter) to patrol along. + llPlaySound: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 86 + return: void + sleep: 0 + tooltip: >- + Plays Sound once, at Volume (0.0 - 1.0) and attached to the object.\nOnly + one sound may be attached to an object at a time, and attaching a new + sound or calling llStopSound will stop the previously attached sound.\nA + second call to llPlaySound with the same sound will not restart the sound, + but the new volume will be used, which allows control over the volume of + already playing sounds.\nTo restart the sound from the beginning, call + llStopSound before calling llPlaySound again. + llPlaySoundSlave: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 90 + return: void + sleep: 0 + tooltip: >- + Plays attached Sound once, at Volume (0.0 - 1.0), synced to next loop of + most audible sync master.\nBehaviour is identical to llPlaySound, unless + there is a "Sync Master" present. If a Sync Master is already playing, the + Slave sound will not be played until the Master hits its loop point and + returns to the beginning.\nllPlaySoundSlave will play the sound exactly + once; if it is desired to have the sound play every time the Master loops, + either use llLoopSoundSlave with extra silence padded on the end of the + sound or ensure that llPlaySoundSlave is called at least once per loop of + the Master. + llPointAt: + arguments: + - Point: + tooltip: '' + type: vector + deprecated: true + energy: 10 + func-id: 131 + private: true + return: void + sleep: 0 + tooltip: '' + llPow: + arguments: + - Value: + tooltip: '' + type: float + - Exponent: + tooltip: '' + type: float + energy: 10 + func-id: 5 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the Value raised to the power Exponent, or returns 0 and triggers + Math Error for imaginary results.\nReturns the Value raised to the + Exponent. + llPreloadSound: + arguments: + - Sound: + tooltip: '' + type: string + energy: 10 + func-id: 93 + return: void + sleep: 1 + tooltip: >- + Causes nearby viewers to preload the Sound from the object's + inventory.\nThis is intended to prevent delays in starting new sounds when + called upon. + llPursue: + arguments: + - TargetID: + tooltip: Agent or object to pursue. + type: key + - Options: + tooltip: Parameters for pursuit. + type: list + energy: 10 + func-id: 400 + return: void + sleep: 0 + tooltip: >- + Chase after a target.\nCauses the character (llCharacter) to pursue the + target defined by TargetID. + llPushObject: + arguments: + - ObjectID: + tooltip: '' + type: key + - Impulse: + tooltip: '' + type: vector + - AngularImpulse: + tooltip: '' + type: vector + - Local: + tooltip: '' + type: integer + energy: 10 + func-id: 165 + return: void + sleep: 0 + tooltip: >- + Applies Impulse and AngularImpulse to ObjectID.\nApplies the supplied + impulse and angular impulse to the object specified. + llReadKeyValue: + arguments: + - Key: + tooltip: '' + type: string + energy: 10 + experience: true + func-id: 388 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction to retrieve the value associated with the key given. Will fail with XP_ERROR_KEY_NOT_FOUND if the key does not exist. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. + + llRefreshPrimURL: + arguments: [] + deprecated: true + energy: 10 + func-id: 306 + return: void + sleep: 20 + tooltip: Reloads the web page shown on the sides of the object. + llRegionSay: + arguments: + - Channel: + tooltip: Any integer value except zero. + type: integer + - Text: + tooltip: Message to be transmitted. + type: string + energy: 10 + func-id: 331 + return: void + sleep: 0 + tooltip: Broadcasts Text to entire region on Channel (except for channel 0). + llRegionSayTo: + arguments: + - TargetID: + tooltip: Avatar or object to say to. + type: key + - Channel: + tooltip: 'Output channel, any integer value.' + type: integer + - Text: + tooltip: Message to be transmitted. + type: string + energy: 10 + func-id: 364 + return: void + sleep: 0 + tooltip: >- + Says Text, on Channel, to avatar or object indicated by TargetID (if + within region).\nIf TargetID is an avatar and Channel is nonzero, Text can + be heard by any attachment on the avatar. + llReleaseCamera: + arguments: + - AvatarID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 116 + return: void + sleep: 0 + tooltip: 'Return camera to agent.\nDeprecated: Use llClearCameraParams instead.' + llReleaseControls: + arguments: [] + energy: 10 + func-id: 112 + return: void + sleep: 0 + tooltip: Stop taking inputs.\nStop taking inputs from the avatar. + llReleaseURL: + arguments: + - URL: + tooltip: URL to release. + type: string + energy: 10 + func-id: 347 + return: void + sleep: 0 + tooltip: >- + Releases the specified URL, which was previously obtained using + llRequestURL. Once released, the URL will no longer be usable. + llRemoteDataReply: + arguments: + - ChannelID: + tooltip: '' + type: key + - MessageID: + tooltip: '' + type: key + - sData: + tooltip: String data to send + type: string + - iData: + tooltip: Integer data to send + type: integer + deprecated: true + energy: 10 + func-id: 256 + return: void + sleep: 3 + tooltip: This function is deprecated. + llRemoteDataSetRegion: + arguments: [] + deprecated: true + energy: 10 + func-id: 263 + return: void + sleep: 0 + tooltip: This function is deprecated. + llRemoteLoadScript: + arguments: + - Target: + tooltip: '' + type: key + - ScriptName: + tooltip: '' + type: string + - Unknown1: + tooltip: '' + type: integer + - Unknown2: + tooltip: '' + type: integer + deprecated: true + energy: 10 + func-id: 251 + private: true + return: void + sleep: 3 + tooltip: '' + llRemoteLoadScriptPin: + arguments: + - ObjectID: + tooltip: Target prim to attempt copying into. + type: key + - ScriptName: + tooltip: Name of the script in current inventory to copy. + type: string + - PIN: + tooltip: Integer set on target prim as a Personal Information Number code. + type: integer + - Running: + tooltip: If the script should be set running in the target prim. + type: integer + - StartParameter: + tooltip: Integer. Parameter passed to the script if set to be running. + type: integer + energy: 10 + func-id: 253 + return: void + sleep: 3 + tooltip: >- + If the owner of the object containing this script can modify the object + identified by the specified object key, and if the PIN matches the PIN + previously set using llSetRemoteScriptAccessPin (on the target prim), then + the script will be copied into target. Running is a boolean specifying + whether the script should be enabled once copied into the target object. + llRemoveFromLandBanList: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 312 + return: void + sleep: 0.1 + tooltip: >- + Remove avatar from the land ban list.\nRemove specified avatar from the + land parcel ban list. + llRemoveFromLandPassList: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 311 + return: void + sleep: 0.1 + tooltip: >- + Remove avatar from the land pass list.\nRemove specified avatar from the + land parcel pass list. + llRemoveInventory: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 151 + return: void + sleep: 0 + tooltip: >- + Remove the named inventory item.\nRemove the named inventory item from the + object inventory. + llRemoveVehicleFlags: + arguments: + - Vehiclelags: + tooltip: '' + type: integer + energy: 10 + func-id: 237 + return: void + sleep: 0 + tooltip: >- + Removes the enabled bits in 'flags'.\nSets the vehicle flags to FALSE. + Valid parameters can be found in the vehicle flags constants section. + llReplaceAgentEnvironment: + arguments: + - agent_id: + tooltip: '' + type: key + - transition: + tooltip: '' + type: float + - environment: + tooltip: '' + type: string + energy: 10 + experience: true + func-id: 713 + return: integer + sleep: 0 + tooltip: >- + Replaces the entire environment for an agent. Must be used as part of an + experience. + llReplaceEnvironment: + arguments: + - position: + tooltip: 'Location of parcel to change. Use <-1, -1, -1> for entire region.' + type: vector + - environment: + tooltip: |- + Name of inventory item, or UUID of environment resource to apply. + Use NULL_KEY or empty string to remove environment. + type: string + - track_no: + tooltip: Elevation zone of where to apply environment. Use -1 for all. + type: integer + - day_length: + tooltip: >- + Length of day cycle for this parcel or region. -1 to leave + unchanged. + type: integer + - day_offset: + tooltip: >- + Offset from GMT for the day cycle on this parcel or region. -1 to + leave unchanged. + type: integer + energy: 10 + func-id: 718 + return: integer + sleep: 0 + tooltip: Replaces the environment for a parcel or region. + llReplaceSubString: + arguments: + - InitialString: + tooltip: The original string in which to hunt for substring matches. + type: string + - SubString: + tooltip: The original substring to find. + type: string + - NewSubString: + tooltip: The new substring used to replace. + type: string + - Count: + tooltip: >- + The max number of replacements to make. Zero Count means "replace + all". Positive Count moves left to right. Negative moves right to + left. + type: integer + energy: 10 + func-id: 541 + pure: true + return: string + sleep: 0 + tooltip: >- + Searches InitialString and replaces instances of SubString with + NewSubString. Zero Count means "replace all". Positive Count moves left to + right. Negative moves right to left. + llRequestAgentData: + arguments: + - AvatarID: + tooltip: '' + type: key + - Data: + tooltip: '' + type: integer + energy: 10 + func-id: 155 + return: key + sleep: 0.1 + tooltip: >- + Requests data about AvatarID. When data is available the dataserver event + will be raised.\nThis function requests data about an avatar. If and when + the information is collected, the dataserver event is triggered with the + key returned from this function passed in the requested parameter. See the + agent data constants (DATA_*) for details about valid values of data and + what each will return in the dataserver event. + llRequestDisplayName: + arguments: + - AvatarID: + tooltip: Avatar UUID + type: key + energy: 10 + func-id: 361 + return: key + sleep: 0 + tooltip: >- + Requests the display name of the agent. When the display name is available + the dataserver event will be raised.\nThe avatar identified does not need + to be in the same region or online at the time of the request.\nReturns a + key that is used to identify the dataserver event when it is raised. + llRequestExperiencePermissions: + arguments: + - AgentID: + tooltip: '' + type: key + - unused: + tooltip: 'Not used, should be ""' + type: string + energy: 10 + experience: true + func-id: 384 + return: void + sleep: 0 + tooltip: |2- + + Ask the agent for permission to participate in an experience. This request is similar to llRequestPermissions with the following permissions: PERMISSION_TAKE_CONTROLS, PERMISSION_TRIGGER_ANIMATION, PERMISSION_ATTACH, PERMISSION_TRACK_CAMERA, PERMISSION_CONTROL_CAMERA and PERMISSION_TELEPORT. However, unlike llRequestPermissions the decision to allow or block the request is persistent and applies to all scripts using the experience grid wide. Subsequent calls to llRequestExperiencePermissions from scripts in the experience will receive the same response automatically with no user interaction. One of experience_permissions or experience_permissions_denied will be generated in response to this call. Outstanding permission requests will be lost if the script is derezzed, moved to another region or reset. + + llRequestInventoryData: + arguments: + - InventoryItem: + tooltip: '' + type: string + energy: 10 + func-id: 156 + return: key + sleep: 1 + tooltip: >- + Requests data for the named InventoryItem.\nWhen data is available, the + dataserver event will be raised with the key returned from this function + in the requested parameter.\nThe only request currently implemented is to + request data from landmarks, where the data returned is in the form + "" which can be cast to a vector. This position is in + region local coordinates. + llRequestPermissions: + arguments: + - AvatarID: + tooltip: '' + type: key + - PermissionMask: + tooltip: '' + type: integer + energy: 10 + func-id: 136 + return: void + sleep: 0 + tooltip: >- + Ask AvatarID to allow the script to perform certain actions, specified in + the PermissionMask bitmask. PermissionMask should be one or more + PERMISSION_* constants. Multiple permissions can be requested + simultaneously by ORing the constants together. Many of the permissions + requests can only go to object owner.\nThis call will not stop script + execution. If the avatar grants the requested permissions, the + run_time_permissions event will be called. + llRequestSecureURL: + arguments: [] + energy: 10 + func-id: 346 + return: key + sleep: 0 + tooltip: >- + Requests one HTTPS:// (SSL) URL for use by this object. The http_request + event is triggered with results.\nReturns a key that is the handle used + for identifying the request in the http_request event. + llRequestSimulatorData: + arguments: + - RegionName: + tooltip: '' + type: string + - Data: + tooltip: '' + type: integer + energy: 10 + func-id: 293 + return: key + sleep: 1 + tooltip: >- + Requests the specified Data about RegionName. When the specified data is + available, the dataserver event is raised.\nData should use one of the + DATA_SIM_* constants.\nReturns a dataserver query ID and triggers the + dataserver event when data is found. + llRequestURL: + arguments: [] + energy: 10 + func-id: 345 + return: key + sleep: 0 + tooltip: >- + Requests one HTTP:// URL for use by this script. The http_request event is + triggered with the result of the request.\nReturns a key that is the + handle used for identifying the result in the http_request event. + llRequestUserKey: + arguments: + - Name: + tooltip: Name of agent to look up. + type: string + energy: 10 + func-id: 525 + return: key + sleep: 0 + tooltip: Look up Agent ID for the named agent using a historical name. + llRequestUsername: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 359 + return: key + sleep: 0 + tooltip: >- + Requests single-word user-name of an avatar. When data is available the + dataserver event will be raised.\nRequests the user-name of the identified + agent. When the user-name is available the dataserver event is + raised.\nThe agent identified does not need to be in the same region or + online at the time of the request.\nReturns a key that is used to identify + the dataserver event when it is raised. + llResetAnimationOverride: + arguments: + - AnimationState: + tooltip: '' + type: string + energy: 10 + func-id: 502 + return: void + sleep: 0 + tooltip: >- + Resets the animation of the specified animation state to the default + value.\nIf animation state equals "ALL", then all animation states are + reset. + llResetLandBanList: + arguments: [] + energy: 10 + func-id: 321 + return: void + sleep: 0.1 + tooltip: Removes all residents from the land ban list. + llResetLandPassList: + arguments: [] + energy: 10 + func-id: 322 + return: void + sleep: 0.1 + tooltip: Removes all residents from the land access/pass list. + llResetOtherScript: + arguments: + - ScriptName: + tooltip: '' + type: string + energy: 10 + func-id: 249 + return: void + sleep: 0 + tooltip: Resets the named script. + llResetScript: + arguments: [] + energy: 10 + func-id: 163 + return: void + sleep: 0 + tooltip: Resets the script. + llResetTime: + arguments: [] + energy: 10 + func-id: 83 + return: void + sleep: 0 + tooltip: Sets the time to zero.\nSets the internal timer to zero. + llReturnObjectsByID: + arguments: + - ObjectIDs: + tooltip: List of object UUIDs to be returned. + type: list + energy: 10 + func-id: 520 + return: integer + sleep: 0 + tooltip: >- + Return objects using their UUIDs.\nRequires the PERMISSION_RETURN_OBJECTS + permission and that the script owner owns the parcel the returned objects + are in, or is an estate manager or region owner. + llReturnObjectsByOwner: + arguments: + - ID: + tooltip: Object owner's UUID. + type: key + - Scope: + tooltip: '' + type: integer + energy: 10 + func-id: 521 + return: integer + sleep: 0 + tooltip: >- + Return objects based upon their owner and a scope of parcel, parcel owner, + or region.\nRequires the PERMISSION_RETURN_OBJECTS permission and that the + script owner owns the parcel the returned objects are in, or is an estate + manager or region owner. + llRezAtRoot: + arguments: + - InventoryItem: + tooltip: '' + type: string + - Position: + tooltip: '' + type: vector + - Velocity: + tooltip: '' + type: vector + - Rotation: + tooltip: '' + type: rotation + - StartParameter: + tooltip: '' + type: integer + energy: 200 + func-id: 286 + return: void + sleep: 0.1 + tooltip: >- + Instantiate owner's InventoryItem at Position with Velocity, Rotation and + with StartParameter. The last selected root object's location will be set + to Position.\nCreates object's inventory item at the given Position, with + Velocity, Rotation, and StartParameter. + llRezObject: + arguments: + - InventoryItem: + tooltip: '' + type: string + - Position: + tooltip: '' + type: vector + - Velocity: + tooltip: '' + type: vector + - Rotation: + tooltip: '' + type: rotation + - StartParameter: + tooltip: '' + type: integer + energy: 200 + func-id: 104 + return: void + sleep: 0.1 + tooltip: >- + Instantiate owners InventoryItem at Position with Velocity, Rotation and + with start StartParameter.\nCreates object's inventory item at Position + with Velocity and Rotation supplied. The StartParameter value will be + available to the newly created object in the on_rez event or through the + llGetStartParameter function.\nThe Velocity parameter is ignored if the + rezzed object is not physical. + llRezObjectWithParams: + arguments: + - InventoryItem: + tooltip: '' + type: string + - Parms: + tooltip: '' + type: list + energy: 200 + func-id: 544 + return: key + sleep: 0.1 + tooltip: Instantiate owner's InventoryItem with the given parameters. + llRot2Angle: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 171 + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the rotation angle represented by Rotation.\nReturns the angle + represented by the Rotation. + llRot2Axis: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 170 + pure: true + return: vector + sleep: 0 + tooltip: >- + Returns the rotation axis represented by Rotation.\nReturns the axis + represented by the Rotation. + llRot2Euler: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 15 + pure: true + return: vector + sleep: 0 + tooltip: >- + Returns the Euler representation (roll, pitch, yaw) of Rotation.\nReturns + the Euler Angle representation of the Rotation. + llRot2Fwd: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 18 + pure: true + return: vector + sleep: 0 + tooltip: >- + Returns the forward vector defined by Rotation.\nReturns the forward axis + represented by the Rotation. + llRot2Left: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 19 + pure: true + return: vector + sleep: 0 + tooltip: >- + Returns the left vector defined by Rotation.\nReturns the left axis + represented by the Rotation. + llRot2Up: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 20 + pure: true + return: vector + sleep: 0 + tooltip: >- + Returns the up vector defined by Rotation.\nReturns the up axis + represented by the Rotation. + llRotBetween: + arguments: + - Vector1: + tooltip: '' + type: vector + - Vector2: + tooltip: '' + type: vector + energy: 10 + func-id: 21 + pure: true + return: rotation + sleep: 0 + tooltip: >- + Returns the rotation to rotate Vector1 to Vector2.\nReturns the rotation + needed to rotate Vector1 to Vector2. + llRotLookAt: + arguments: + - Rotation: + tooltip: '' + type: rotation + - Strength: + tooltip: '' + type: float + - Damping: + tooltip: '' + type: float + energy: 10 + func-id: 127 + return: void + sleep: 0 + tooltip: >- + Cause object to rotate to Rotation, with a force function defined by + Strength and Damping parameters. Good strength values are around half the + mass of the object and good damping values are less than 1/10th of the + strength.\nAsymmetrical shapes require smaller damping.\nA strength of 0.0 + cancels the look at. + llRotTarget: + arguments: + - Rotation: + tooltip: '' + type: rotation + - LeeWay: + tooltip: '' + type: float + energy: 10 + func-id: 68 + return: integer + sleep: 0 + tooltip: >- + Set rotations with error of LeeWay radians as a rotational target, and + return an ID for the rotational target.\nThe returned number is a handle + that can be used in at_rot_target and llRotTargetRemove. + llRotTargetRemove: + arguments: + - Handle: + tooltip: '' + type: integer + energy: 10 + func-id: 69 + return: void + sleep: 0 + tooltip: >- + Removes rotational target number.\nRemove rotational target indicated by + the handle. + llRotateTexture: + arguments: + - Radians: + tooltip: '' + type: float + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 56 + return: void + sleep: 0.2 + tooltip: >- + Sets the texture rotation for the specified Face to angle Radians.\nIf + Face is ALL_SIDES, rotates the texture of all sides. + llRound: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 11 + return: integer + sleep: 0 + tooltip: >- + Returns Value rounded to the nearest integer.\nReturns the Value rounded + to the nearest integer. + llSHA1String: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 343 + return: string + sleep: 0 + tooltip: >- + Returns a string of 40 hex characters that is the SHA1 security hash of + text. + llSHA256String: + arguments: + - text: + tooltip: '' + type: string + energy: 10 + func-id: 531 + return: string + sleep: 0 + tooltip: >- + Returns a string of 64 hex characters that is the SHA256 security hash of + text. + llSameGroup: + arguments: + - ID: + tooltip: '' + type: key + bool-semantics: true + energy: 10 + func-id: 219 + return: integer + sleep: 0 + tooltip: >- + Returns TRUE if avatar ID is in the same region and has the same active + group, otherwise FALSE.\nReturns TRUE if the object or agent identified is + in the same simulator and has the same active group as this object. + Otherwise, returns FALSE. + llSay: + arguments: + - Channel: + tooltip: Channel to use to say text on. + type: integer + - Text: + tooltip: Text to say. + type: string + energy: 10 + func-id: 23 + return: void + sleep: 0 + tooltip: >- + Says Text on Channel.\nThis chat method has a range of 20m + radius.\nPUBLIC_CHANNEL is the public chat channel that all avatars see as + chat text. DEBUG_CHANNEL is the script debug channel, and is also visible + to nearby avatars. All other channels are are not sent to avatars, but may + be used to communicate with scripts. + llScaleByFactor: + arguments: + - ScalingFactor: + tooltip: >- + The multiplier to be used with the prim sizes and their local + positions. + type: float + energy: 10 + func-id: 592 + return: integer + bool-semantics: true + sleep: 0 + tooltip: >- + Attempts to resize the entire object by ScalingFactor, maintaining the + size-position ratios of the prims.\n\nResizing is subject to prim scale + limits and linkability limits. This function can not resize the object if + the linkset is physical, a pathfinding character, in a keyframed motion, + or if resizing would cause the parcel to overflow.\nReturns a boolean (an + integer) TRUE if it succeeds, FALSE if it fails. + llScaleTexture: + arguments: + - Horizontal: + tooltip: '' + type: float + - Vertical: + tooltip: '' + type: float + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 54 + return: void + sleep: 0.2 + tooltip: >- + Sets the diffuse texture Horizontal and Vertical repeats on Face of the + prim the script is attached to.\nIf Face == ALL_SIDES, all sides are set + in one call.\nNegative values for horizontal and vertical will flip the + texture. + llScriptDanger: + arguments: + - Position: + tooltip: '' + type: vector + bool-semantics: true + energy: 10 + func-id: 246 + return: integer + sleep: 0 + tooltip: >- + Returns TRUE if Position is over public land, sandbox land, land that + doesn't allow everyone to edit and build, or land that doesn't allow + outside scripts.\nReturns true if the position is over public land, land + that doesn't allow everyone to edit and build, or land that doesn't allow + outside scripts. + llScriptProfiler: + arguments: + - State: + tooltip: PROFILE_NONE or PROFILE_SCRIPT_MEMORY flags to control the state. + type: integer + energy: 10 + func-id: 367 + return: void + sleep: 0 + tooltip: >- + Enables or disables script profiling options. Currently only supports + PROFILE_SCRIPT_MEMORY (Mono only) and PROFILE_NONE.\nMay significantly + reduce script performance. + llSendRemoteData: + arguments: + - ChannelID: + tooltip: '' + type: key + - Destination: + tooltip: '' + type: string + - Value: + tooltip: '' + type: integer + - Text: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 255 + return: key + sleep: 3 + tooltip: This function is deprecated. + llSensor: + arguments: + - Name: + tooltip: Object or avatar name. + type: string + - ID: + tooltip: Object or avatar UUID. + type: key + - Type: + tooltip: >- + Bit-field mask of AGENT, AGENT_BY_LEGACY_NAME, AGENT_BY_USERNAME, + ACTIVE, PASSIVE, and/or SCRIPTED + type: integer + - Range: + tooltip: Distance to scan. 0.0 - 96.0m. + type: float + - Arc: + tooltip: 'Angle, in radians, from the local x-axis of the prim to scan.' + type: float + energy: 10 + func-id: 28 + return: void + sleep: 0 + tooltip: >- + Performs a single scan for Name and ID with Type (AGENT, ACTIVE, PASSIVE, + and/or SCRIPTED) within Range meters and Arc radians of forward + vector.\nSpecifying a blank Name, 0 Type, or NULL_KEY ID will prevent + filtering results based on that parameter. A range of 0.0 does not perform + a scan.\nResults are returned in the sensor and no_sensor events. + llSensorRemove: + arguments: [] + energy: 10 + func-id: 30 + return: void + sleep: 0 + tooltip: removes sensor.\nRemoves the sensor set by llSensorRepeat. + llSensorRepeat: + arguments: + - Name: + tooltip: Object or avatar name. + type: string + - ID: + tooltip: Object or avatar UUID. + type: key + - Type: + tooltip: >- + Bit-field mask of AGENT, AGENT_BY_LEGACY_NAME, AGENT_BY_USERNAME, + ACTIVE, PASSIVE, and/or SCRIPTED + type: integer + - Range: + tooltip: Distance to scan. 0.0 - 96.0m. + type: float + - Arc: + tooltip: 'Angle, in radians, from the local x-axis of the prim to scan.' + type: float + - Rate: + tooltip: 'Period, in seconds, between scans.' + type: float + energy: 10 + func-id: 29 + return: void + sleep: 0 + tooltip: >- + Initiates a periodic scan every Rate seconds, for Name and ID with Type + (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within Range meters and Arc + radians of forward vector.\nSpecifying a blank Name, 0 Type, or NULL_KEY + ID will prevent filtering results based on that parameter. A range of 0.0 + does not perform a scan.\nResults are returned in the sensor and no_sensor + events. + llSetAgentEnvironment: + arguments: + - agent_id: + tooltip: Agent to receive new environment settings. + type: key + - transition: + tooltip: Number of seconds over which to apply new settings. + type: float + - Settings: + tooltip: List of environment settings to replace for agent. + type: list + energy: 10 + experience: true + func-id: 714 + return: integer + sleep: 0 + tooltip: >- + Sets an agent's environmental values to the specified values. Must be used + as part of an experience. + llSetAgentRot: + arguments: + - rot: + tooltip: Rotation to turn the avatar to face. + type: rotation + - flags: + tooltip: flags + type: integer + energy: 10 + func-id: 515 + return: void + sleep: 0 + tooltip: Sets the avatar rotation to the given value. + llSetAlpha: + arguments: + - Opacity: + tooltip: '' + type: float + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 51 + return: void + sleep: 0 + tooltip: >- + Sets the alpha (opacity) of Face.\nSets the alpha (opacity) value for + Face. If Face is ALL_SIDES, sets the alpha for all faces. The alpha value + is interpreted as an opacity percentage (1.0 is fully opaque, and 0.2 is + mostly transparent). This function will clamp alpha values less than 0.1 + to 0.1 and greater than 1.0 to 1. + llSetAngularVelocity: + arguments: + - AngVel: + tooltip: The angular velocity to set the object to. + type: vector + - Local: + tooltip: >- + If TRUE, the AngVel is treated as a local directional vector instead + of a regional directional vector. + type: integer + energy: 10 + func-id: 379 + return: void + sleep: 0 + tooltip: >- + Sets an object's angular velocity to AngVel, in local coordinates if Local + == TRUE (if the script is physical).\nHas no effect on non-physical + objects. + llSetAnimationOverride: + arguments: + - AnimationState: + tooltip: '' + type: string + - AnimationName: + tooltip: '' + type: string + energy: 10 + func-id: 501 + return: void + sleep: 0 + tooltip: >- + Sets the animation (in object inventory) that will play for the given + animation state.\nTo use this function the script must obtain the + PERMISSION_OVERRIDE_ANIMATIONS permission. + llSetBuoyancy: + arguments: + - Buoyancy: + tooltip: '' + type: float + energy: 10 + func-id: 122 + return: void + sleep: 0 + tooltip: >- + Set the tasks buoyancy (0 is none, < 1.0 sinks, 1.0 floats, > 1.0 + rises).\nSet the object buoyancy. A value of 0 is none, less than 1.0 + sinks, 1.0 floats, and greater than 1.0 rises. + llSetCameraAtOffset: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 244 + return: void + sleep: 0 + tooltip: >- + Sets the camera used in this object, at offset, if an avatar sits on + it.\nSets the offset that an avatar's camera will be moved to if the + avatar sits on the object. + llSetCameraEyeOffset: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 243 + return: void + sleep: 0 + tooltip: Sets the camera eye offset used in this object if an avatar sits on it. + llSetCameraParams: + arguments: + - Parameters: + tooltip: '' + type: list + energy: 10 + func-id: 313 + return: void + sleep: 0 + tooltip: >- + Sets multiple camera parameters at once. List format is [ rule-1, data-1, + rule-2, data-2 . . . rule-n, data-n ]. + llSetClickAction: + arguments: + - Action: + tooltip: A CLICK_ACTION_* flag + type: integer + energy: 10 + func-id: 333 + return: void + sleep: 0 + tooltip: Sets the action performed when a prim is clicked upon. + llSetColor: + arguments: + - Color: + tooltip: '' + type: vector + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 49 + return: void + sleep: 0 + tooltip: >- + Sets the color, for the face.\nSets the color of the side specified. If + Face is ALL_SIDES, sets the color on all faces. + llSetContentType: + arguments: + - HTTPRequestID: + tooltip: A valid http_request() key + type: key + - ContentType: + tooltip: >- + Media type to use with any following llHTTPResponse(HTTPRequestID, + ...) + type: integer + energy: 10 + func-id: 374 + return: void + sleep: 0 + tooltip: >- + Set the media type of an LSL HTTP server response to + ContentType.\nHTTPRequestID must be a valid http_request ID. ContentType + must be one of the CONTENT_TYPE_* constants. + llSetDamage: + arguments: + - Damage: + tooltip: '' + type: float + energy: 10 + func-id: 157 + return: void + sleep: 0 + tooltip: "Sets the amount of damage that will be done to an avatar that this task hits.\tTask will be killed.\\nSets the amount of damage that will be done to an avatar that this object hits. This object will be destroyed on damaging an avatar, and no collision event is triggered." + llSetEnvironment: + arguments: + - Position: + tooltip: Location within the region. + type: vector + - EnvParams: + tooltip: >- + List of environment settings to change for the specified parcel + location. + type: list + energy: 10 + func-id: 717 + return: integer + sleep: 0 + tooltip: Returns a string with the requested data about the region. + llSetExperienceKey: + arguments: + - ExperienceID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 386 + private: true + return: integer + sleep: 0 + tooltip: '' + llSetForce: + arguments: + - Force: + tooltip: Directional force. + type: vector + - Local: + tooltip: 'Boolean, if TRUE uses local axis, if FALSE uses region axis.' + type: integer + energy: 10 + func-id: 64 + return: void + sleep: 0 + tooltip: >- + Sets Force on object, in object-local coordinates if Local == TRUE + (otherwise, the region reference frame is used).\nOnly works on physical + objects. + llSetForceAndTorque: + arguments: + - Force: + tooltip: Directional force. + type: vector + - Torque: + tooltip: Torque force. + type: vector + - Local: + tooltip: 'Boolean, if TRUE uses local axis, if FALSE uses region axis.' + type: integer + energy: 10 + func-id: 76 + return: void + sleep: 0 + tooltip: >- + Sets the Force and Torque of object, in object-local coordinates if Local + == TRUE (otherwise, the region reference frame is used).\nOnly works on + physical objects. + llSetGroundTexture: + arguments: + - Changes: + tooltip: A list of ground texture properties to change. + type: list + energy: 10 + func-id: 558 + return: integer + sleep: 0 + tooltip: Changes terrain texture properties in the region. + llSetHoverHeight: + arguments: + - Height: + tooltip: Distance above the ground. + type: float + - Water: + tooltip: 'Boolean, if TRUE then hover above water too.' + type: integer + - Tau: + tooltip: Seconds to critically damp in. + type: float + energy: 10 + func-id: 123 + return: void + sleep: 0 + tooltip: >- + Critically damps a physical object to a Height (either above ground level + or above the higher of land and water if water == TRUE).\nDo not use with + vehicles. Use llStopHover to stop hovering. + llSetInventoryPermMask: + arguments: + - InventoryItem: + tooltip: An item in the prim's inventory + type: string + - PermissionFlag: + tooltip: MASK_* flag + type: integer + - PermissionMask: + tooltip: Permission bit-field (PERM_* flags) + type: integer + energy: 10 + func-id: 290 + god-mode: true + return: void + sleep: 0 + tooltip: Sets the given permission mask to the new value on the inventory item. + llSetKeyframedMotion: + arguments: + - Keyframes: + tooltip: >- + Strided keyframe list of the form: position, orientation, time. Each + keyframe is interpreted relative to the previous transform of the + object. + type: list + - Options: + tooltip: '' + type: list + energy: 10 + func-id: 394 + return: void + sleep: 0 + tooltip: >- + Requests that a non-physical object be key-framed according to key-frame + list.\nSpecify a list of times, positions, and orientations to be followed + by an object. The object will be smoothly moved between key-frames by the + simulator. Collisions with other non-physical or key-framed objects will + be ignored (no script events will fire and collision processing will not + occur). Collisions with physical objects will be computed and reported, + but the key-framed object will be unaffected by those + collisions.\nKeyframes is a strided list containing positional, + rotational, and time data for each step in the motion. Options is a list + containing optional arguments and parameters (specified by KFM_* + constants). + llSetLinkAlpha: + arguments: + - LinkNumber: + tooltip: '' + type: integer + - Opacity: + tooltip: '' + type: float + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 274 + return: void + sleep: 0 + tooltip: >- + If a prim exists in the link chain at LinkNumber, set Face to + Opacity.\nSets the Face, on the linked prim specified, to the Opacity. + llSetLinkCamera: + arguments: + - LinkNumber: + tooltip: >- + Prim link number (0: unlinked, 1: root prim, >1: child prims) or a + LINK_* flag + type: integer + - EyeOffset: + tooltip: >- + Offset, relative to the object's centre and expressed in local + coordinates, that the camera looks from. + type: vector + - LookOffset: + tooltip: >- + Offset, relative to the object's centre and expressed in local + coordinates, that the camera looks toward. + type: vector + energy: 10 + func-id: 377 + return: void + sleep: 0 + tooltip: >- + Sets the camera eye offset, and the offset that camera is looking at, for + avatars that sit on the linked prim. + llSetLinkColor: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + - Color: + tooltip: 'Color in RGB ' + type: vector + - Face: + tooltip: Side number or ALL_SIDES. + type: integer + energy: 10 + func-id: 140 + return: void + sleep: 0 + tooltip: >- + If a task exists in the link chain at LinkNumber, set the Face to + color.\nSets the color of the linked child's side, specified by + LinkNumber. + llSetLinkGLTFOverrides: + arguments: + - link: + tooltip: Link number to check. + type: integer + - face: + tooltip: Side to check for a PBR material. Use ALL_SIDES to check for all. + type: integer + - options: + tooltip: List of individual overrides to set. + type: list + energy: 10 + func-id: 560 + return: void + sleep: 0 + tooltip: Sets or changes GLTF Overrides set on the selected faces. + llSetLinkMedia: + arguments: + - Link: + tooltip: 'Link number (0: unlinked, 1: root prim, >1: child prims).' + type: integer + - Face: + tooltip: Face number. + type: integer + - Parameters: + tooltip: A set of name/value pairs (in no particular order) + type: list + energy: 10 + func-id: 371 + return: integer + sleep: 0 + tooltip: >- + Set the media parameters for a particular face on linked prim, specified + by Link. Returns an integer that is a STATUS_* flag which details the + success/failure of the operation(s).\nMediaParameters is a set of + name/value pairs in no particular order. Parameters not specified are + unchanged, or if new media is added then set to the default specified. + llSetLinkPrimitiveParams: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Parameters: + tooltip: '' + type: list + deprecated: true + energy: 10 + func-id: 328 + return: void + sleep: 0.2 + tooltip: 'Deprecated: Use llSetLinkPrimitiveParamsFast instead.' + llSetLinkPrimitiveParamsFast: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag + type: integer + - Parameters: + tooltip: '' + type: list + energy: 10 + func-id: 353 + return: void + sleep: 0 + tooltip: >- + Set primitive parameters for LinkNumber based on Parameters, without a + delay.\nSet parameters for link number, from the list of Parameters, with + no built-in script sleep. This function is identical to + llSetLinkPrimitiveParams, except without the delay. + llSetLinkRenderMaterial: + arguments: + - LinkNumber: + tooltip: '' + type: integer + - RenderMaterial: + tooltip: '' + type: string + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 762 + return: void + sleep: 0.2 + tooltip: >- + Sets the Render Material of Face on a linked prim, specified by + LinkNumber. Render Material may be a UUID or name of a material in prim + inventory. + llSetLinkSitFlags: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag. + type: integer + - Flags: + tooltip: >- + The new set of sit flags to apply to the specified prims in this + linkset. + type: integer + energy: 10 + func-id: 550 + return: void + sleep: 0 + tooltip: Sets the sit flags for the specified prim in a linkset. + llSetLinkTexture: + arguments: + - LinkNumber: + tooltip: '' + type: integer + - Texture: + tooltip: '' + type: string + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 329 + return: void + sleep: 0.2 + tooltip: >- + Sets the Texture of Face on a linked prim, specified by LinkNumber. + Texture may be a UUID or name of a texture in prim inventory. + llSetLinkTextureAnim: + arguments: + - LinkNumber: + tooltip: >- + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* + flag to effect + type: integer + - Mode: + tooltip: Bitmask of animation options. + type: integer + - Face: + tooltip: Specifies which object face to animate or ALL_SIDES. + type: integer + - SizeX: + tooltip: Horizontal frames (ignored for ROTATE and SCALE). + type: integer + - SizeY: + tooltip: Vertical frames (ignored for ROTATE and SCALE). + type: integer + - Start: + tooltip: Start position/frame number (or radians for ROTATE). + type: float + - Length: + tooltip: 'Specifies the animation duration, in frames (or radians for ROTATE).' + type: float + - Rate: + tooltip: >- + Specifies the animation playback rate, in frames per second (must be + greater than zero). + type: float + energy: 10 + func-id: 356 + return: void + sleep: 0 + tooltip: >- + Animates a texture on the prim specified by LinkNumber, by setting the + texture scale and offset.\nMode is a bitmask of animation options.\nFace + specifies which object face to animate.\nSizeX and SizeY specify the + number of horizontal and vertical frames.Start specifes the animation + start point.\nLength specifies the animation duration.\nRate specifies the + animation playback rate. + llSetLocalRot: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 284 + return: void + sleep: 0.2 + tooltip: Sets the rotation of a child prim relative to the root prim. + llSetMemoryLimit: + arguments: + - Limit: + tooltip: >- + The amount to reserve, which must be less than the allowed maximum + (currently 64KB) and not already have been exceeded. + type: integer + bool-semantics: true + energy: 10 + func-id: 369 + return: integer + sleep: 0 + tooltip: >- + Requests Limit bytes to be reserved for this script.\nReturns TRUE or + FALSE indicating whether the limit was set successfully.\nThis function + has no effect if the script is running in the LSO VM. + llSetObjectDesc: + arguments: + - Description: + tooltip: '' + type: string + energy: 10 + func-id: 271 + return: void + sleep: 0 + tooltip: >- + Sets the description of the prim to Description.\nThe description field is + limited to 127 characters. + llSetObjectName: + arguments: + - Name: + tooltip: '' + type: string + energy: 10 + func-id: 203 + return: void + sleep: 0 + tooltip: Sets the prim's name to Name. + llSetObjectPermMask: + arguments: + - PermissionFlag: + tooltip: MASK_* flag + type: integer + - PermissionMask: + tooltip: Permission bit-field (PERM_* flags) + type: integer + energy: 10 + func-id: 288 + god-mode: true + return: void + sleep: 0 + tooltip: >- + Sets the specified PermissionFlag permission to the value specified by + PermissionMask on the object the script is attached to. + llSetParcelMusicURL: + arguments: + - URL: + tooltip: '' + type: string + energy: 10 + func-id: 267 + return: void + sleep: 2 + tooltip: >- + Sets the streaming audio URL for the parcel the object is on.\nThe object + must be owned by the owner of the parcel; if the parcel is group owned the + object must be owned by that group. + llSetPayPrice: + arguments: + - Price: + tooltip: The default price shown in the text input field. + type: integer + - QuickButtons: + tooltip: >- + Specifies the 4 payment values shown in the payment dialog's buttons + (or PAY_HIDE). + type: list + energy: 10 + func-id: 302 + return: void + sleep: 0 + tooltip: >- + Sets the default amount when someone chooses to pay this object.\nPrice is + the default price shown in the text input field. QuickButtons specifies + the 4 payment values shown in the payment dialog's buttons.\nInput field + and buttons may be hidden with PAY_HIDE constant, and may be set to their + default values using PAY_DEFAULT. + llSetPhysicsMaterial: + arguments: + - MaterialBits: + tooltip: >- + A bitmask specifying which of the parameters in the other arguments + should be applied to the object. + type: integer + - GravityMultiplier: + tooltip: '' + type: float + - Restitution: + tooltip: '' + type: float + - Friction: + tooltip: '' + type: float + - Density: + tooltip: '' + type: float + energy: 10 + func-id: 380 + return: void + sleep: 0 + tooltip: >- + Sets the selected parameters of the object's physics + behavior.\nMaterialBits is a bitmask specifying which of the parameters in + the other arguments should be applied to the object. GravityMultiplier, + Restitution, Friction, and Density are the possible parameters to + manipulate. + llSetPos: + arguments: + - Position: + tooltip: Region coordinates to move to (within 10m). + type: vector + energy: 10 + func-id: 58 + return: void + sleep: 0.2 + tooltip: >- + If the object is not physical, this function sets the position of the + prim.\nIf the script is in a child prim, Position is treated as root + relative and the link-set is adjusted.\nIf the prim is the root prim, the + entire object is moved (up to 10m) to Position in region coordinates. + llSetPrimMediaParams: + arguments: + - Face: + tooltip: Face number + type: integer + - MediaParameters: + tooltip: A set of name/value pairs (in no particular order) + type: list + energy: 10 + func-id: 350 + return: integer + sleep: 1 + tooltip: >- + Sets the MediaParameters for a particular Face on the prim. Returns an + integer that is a STATUS_* flag which details the success/failure of the + operation(s).\nMediaParameters is a set of name/value pairs in no + particular order. Parameters not specified are unchanged, or if new media + is added then set to the default specified. + llSetPrimURL: + arguments: + - URL: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 305 + return: void + sleep: 20 + tooltip: 'Deprecated: Use llSetPrimMediaParams instead.' + llSetPrimitiveParams: + arguments: + - Parameters: + tooltip: A list of changes. + type: list + deprecated: true + energy: 10 + func-id: 259 + return: void + sleep: 0.2 + tooltip: 'Deprecated: Use llSetLinkPrimitiveParamsFast instead.' + llSetRegionPos: + arguments: + - Position: + tooltip: 'Vector. The location to move to, in region coordinates.' + type: vector + energy: 10 + func-id: 397 + return: integer + bool-semantics: true + sleep: 0 + tooltip: >- + Attempts to move the object so that the root prim is within 0.1m of + Position.\nReturns an integer boolean, TRUE if the object is successfully + placed within 0.1 m of Position, FALSE otherwise.\nPosition may be any + location within the region or up to 10m across a region border.\nIf the + position is below ground, it will be set to the ground level at that x,y + location. + llSetRemoteScriptAccessPin: + arguments: + - PIN: + tooltip: '' + type: integer + energy: 10 + func-id: 252 + return: void + sleep: 0.2 + tooltip: >- + If PIN is set to a non-zero number, the task will accept remote script + loads via llRemoteLoadScriptPin() if it passes in the correct PIN. + Othersise, llRemoteLoadScriptPin() is ignored. + llSetRenderMaterial: + arguments: + - Material: + tooltip: '' + type: string + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 761 + return: void + sleep: 0.2 + tooltip: >- + Applies Render Material to Face of prim.\nRender Material may be a UUID or + name of a material in prim inventory.\nIf Face is ALL_SIDES, set the + render material on all faces. + llSetRot: + arguments: + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 61 + return: void + sleep: 0.2 + tooltip: >- + If the object is not physical, this function sets the rotation of the + prim.\nIf the script is in a child prim, Rotation is treated as root + relative and the link-set is adjusted.\nIf the prim is the root prim, the + entire object is rotated to Rotation in the global reference frame. + llSetScale: + arguments: + - Scale: + tooltip: '' + type: vector + energy: 10 + func-id: 47 + return: void + sleep: 0 + tooltip: Sets the prim's scale (size) to Scale. + llSetScriptState: + arguments: + - ScriptName: + tooltip: '' + type: string + - Running: + tooltip: '' + type: integer + energy: 10 + func-id: 148 + return: void + sleep: 0 + tooltip: Enable or disable the script Running state of Script in the prim. + llSetSitText: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 242 + return: void + sleep: 0 + tooltip: Displays Text rather than 'Sit' in the viewer's context menu. + llSetSoundQueueing: + arguments: + - QueueEnable: + tooltip: 'Boolean, sound queuing: TRUE enables, FALSE disables (default).' + type: integer + energy: 10 + func-id: 208 + return: void + sleep: 0 + tooltip: >- + Sets whether successive calls to llPlaySound, llLoopSound, etc., (attached + sounds) interrupt the currently playing sound.\nThe default for objects is + FALSE. Setting this value to TRUE will make the sound wait until the + current playing sound reaches its end. The queue is one level deep. + llSetSoundRadius: + arguments: + - Radius: + tooltip: Maximum distance that sounds can be heard. + type: float + energy: 10 + func-id: 209 + return: void + sleep: 0 + tooltip: >- + Limits radius for audibility of scripted sounds (both attached and + triggered) to distance Radius. + llSetStatus: + arguments: + - Status: + tooltip: '' + type: integer + - Value: + tooltip: '' + type: integer + energy: 10 + func-id: 45 + return: void + sleep: 0 + tooltip: >- + Sets object status specified in Status bitmask (e.g. + STATUS_PHYSICS|STATUS_PHANTOM) to boolean Value.\nFor a full list of + STATUS_* constants, see wiki documentation. + llSetText: + arguments: + - Text: + tooltip: '' + type: string + - Color: + tooltip: '' + type: vector + - Opacity: + tooltip: '' + type: float + energy: 10 + func-id: 152 + return: void + sleep: 0 + tooltip: >- + Causes Text to float above the prim, using the specified Color and + Opacity. + llSetTexture: + arguments: + - Texture: + tooltip: '' + type: string + - Face: + tooltip: '' + type: integer + energy: 10 + func-id: 53 + return: void + sleep: 0.2 + tooltip: >- + Applies Texture to Face of prim.\nTexture may be a UUID or name of a + texture in prim inventory.\nIf Face is ALL_SIDES, set the texture on all + faces. + llSetTextureAnim: + arguments: + - Mode: + tooltip: Mask of Mode flags. + type: integer + - Face: + tooltip: Face number or ALL_SIDES. + type: integer + - SizeX: + tooltip: Horizontal frames (ignored for ROTATE and SCALE). + type: integer + - SizeY: + tooltip: Vertical frames (ignored for ROTATE and SCALE). + type: integer + - Start: + tooltip: Start position/frame number (or radians for ROTATE). + type: float + - Length: + tooltip: number of frames to display (or radians for ROTATE). + type: float + - Rate: + tooltip: Frames per second (must not greater than zero). + type: float + energy: 10 + func-id: 211 + return: void + sleep: 0 + tooltip: >- + Animates a texture by setting the texture scale and offset.\nMode is a + bitmask of animation options.\nFace specifies which object face to + animate.\nSizeX and SizeY specify the number of horizontal and vertical + frames.Start specifes the animation start point.\nLength specifies the + animation duration.\nRate specifies the animation playback rate. + llSetTimerEvent: + arguments: + - Rate: + tooltip: '' + type: float + energy: 10 + func-id: 107 + return: void + sleep: 0 + tooltip: >- + Causes the timer event to be triggered every Rate seconds.\n Passing in + 0.0 stops further timer events. + llSetTorque: + arguments: + - Torque: + tooltip: Torque force. + type: vector + - Local: + tooltip: 'Boolean, if TRUE uses local axis, if FALSE uses region axis.' + type: integer + energy: 10 + func-id: 74 + return: void + sleep: 0 + tooltip: >- + Sets the Torque acting on the script's object, in object-local coordinates + if Local == TRUE (otherwise, the region reference frame is used).\nOnly + works on physical objects. + llSetTouchText: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 241 + return: void + sleep: 0 + tooltip: Displays Text in the viewer context menu that acts on a touch. + llSetVehicleFlags: + arguments: + - Flags: + tooltip: '' + type: integer + energy: 10 + func-id: 236 + return: void + sleep: 0 + tooltip: >- + Enables the vehicle flags specified in the Flags bitmask.\nValid + parameters can be found in the wiki documentation. + llSetVehicleFloatParam: + arguments: + - ParameterName: + tooltip: '' + type: integer + - ParameterValue: + tooltip: '' + type: float + energy: 10 + func-id: 233 + return: void + sleep: 0 + tooltip: >- + Sets a vehicle float parameter.\nValid parameters can be found in the wiki + documentation. + llSetVehicleRotationParam: + arguments: + - ParameterName: + tooltip: '' + type: integer + - ParameterValue: + tooltip: '' + type: rotation + energy: 10 + func-id: 235 + return: void + sleep: 0 + tooltip: >- + Sets a vehicle rotation parameter.\nValid parameters can be found in the + wiki documentation. + llSetVehicleType: + arguments: + - Type: + tooltip: '' + type: integer + energy: 10 + func-id: 232 + return: void + sleep: 0 + tooltip: >- + Activates the vehicle action on the object with vehicle preset + Type.\nValid Types and an explanation of their characteristics can be + found in wiki documentation. + llSetVehicleVectorParam: + arguments: + - ParameterName: + tooltip: '' + type: integer + - ParameterValue: + tooltip: '' + type: vector + energy: 10 + func-id: 234 + return: void + sleep: 0 + tooltip: >- + Sets a vehicle vector parameter.\nValid parameters can be found in the + wiki documentation. + llSetVelocity: + arguments: + - Velocity: + tooltip: The velocity to apply. + type: vector + - Local: + tooltip: >- + If TRUE, the Velocity is treated as a local directional vector + instead of a regional directional vector. + type: integer + energy: 10 + func-id: 378 + return: void + sleep: 0 + tooltip: >- + If the object is physics-enabled, sets the object's linear velocity to + Velocity.\nIf Local==TRUE, Velocity is treated as a local directional + vector; otherwise, Velocity is treated as a global directional vector. + llShout: + arguments: + - Channel: + tooltip: '' + type: integer + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 24 + return: void + sleep: 0 + tooltip: >- + Shouts Text on Channel.\nThis chat method has a range of 100m + radius.\nPUBLIC_CHANNEL is the public chat channel that all avatars see as + chat text. DEBUG_CHANNEL is the script debug channel, and is also visible + to nearby avatars. All other channels are are not sent to avatars, but may + be used to communicate with scripts. + llSignRSA: + arguments: + - PrivateKey: + tooltip: The PEM-formatted private key + type: string + - Message: + tooltip: The message contents to sign + type: string + - Algorithm: + tooltip: 'The digest algorithnm to use: sha1, sha224, sha256, sha384, sha512' + type: string + energy: 10 + func-id: 539 + return: string + sleep: 0 + tooltip: >- + Returns the base64-encoded RSA signature of Message using PEM-formatted + PrivateKey and digest Algorithm (sha1, sha224, sha256, sha384, sha512). + llSin: + arguments: + - Theta: + tooltip: '' + type: float + energy: 10 + func-id: 0 + native: true + pure: true + return: float + sleep: 0 + tooltip: Returns the sine of Theta (Theta in radians). + llSitOnLink: + arguments: + - AvatarID: + tooltip: '' + type: key + - LinkID: + tooltip: '' + type: integer + energy: 10 + func-id: 503 + return: integer + sleep: 0 + tooltip: >- + If agent identified by AvatarID is participating in the experience, sit + them on the specified link's sit target. + llSitTarget: + arguments: + - Offset: + tooltip: '' + type: vector + - Rotation: + tooltip: '' + type: rotation + energy: 10 + func-id: 238 + return: void + sleep: 0 + tooltip: >- + Set the sit location for this object. If offset == ZERO_VECTOR, clears the + sit target. + llSleep: + arguments: + - Time: + tooltip: '' + type: float + energy: 0 + func-id: 108 + return: void + sleep: 0 + tooltip: Put script to sleep for Time seconds. + llSound: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + - Queue: + tooltip: '' + type: integer + - Loop: + tooltip: '' + type: integer + deprecated: true + energy: 10 + func-id: 85 + return: void + sleep: 0 + tooltip: >- + Deprecated: Use llPlaySound instead.\nPlays Sound at Volume and specifies + whether the sound should loop and/or be enqueued. + llSoundPreload: + arguments: + - Sound: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 126 + return: void + sleep: 0 + tooltip: >- + Deprecated: Use llPreloadSound instead.\nPreloads a sound on viewers + within range. + llSqrt: + arguments: + - Value: + tooltip: '' + type: float + energy: 10 + func-id: 4 + native: true + pure: true + return: float + sleep: 0 + tooltip: >- + Returns the square root of Value.\nTriggers a math runtime error for + imaginary results (if Value < 0.0). + llStartAnimation: + arguments: + - Animation: + tooltip: '' + type: string + energy: 10 + func-id: 129 + return: void + sleep: 0 + tooltip: >- + This function plays the specified animation from playing on the avatar who + received the script's most recent permissions request.\nAnimation may be + an animation in task inventory or a built-in animation.\nRequires + PERMISSION_TRIGGER_ANIMATION. + llStartObjectAnimation: + arguments: + - Animation: + tooltip: '' + type: string + energy: 10 + func-id: 504 + return: void + sleep: 0 + tooltip: >- + This function plays the specified animation on the rigged mesh object + associated with the current script.\nAnimation may be an animation in task + inventory or a built-in animation.\n + llStopAnimation: + arguments: + - Animation: + tooltip: '' + type: string + energy: 10 + func-id: 130 + return: void + sleep: 0 + tooltip: >- + This function stops the specified animation on the avatar who received the + script's most recent permissions request.\nAnimation may be an animation + in task inventory, a built-in animation, or the uuid of an + animation.\nRequires PERMISSION_TRIGGER_ANIMATION. + llStopHover: + arguments: [] + energy: 10 + func-id: 124 + return: void + sleep: 0 + tooltip: Stop hovering to a height (due to llSetHoverHeight()). + llStopLookAt: + arguments: [] + energy: 10 + func-id: 106 + return: void + sleep: 0 + tooltip: >- + Stop causing object to point at a target (due to llLookAt() or + llRotLookAt()). + llStopMoveToTarget: + arguments: [] + energy: 10 + func-id: 71 + return: void + sleep: 0 + tooltip: Stops critically damped motion (due to llMoveToTarget()). + llStopObjectAnimation: + arguments: + - Animation: + tooltip: '' + type: string + energy: 10 + func-id: 505 + return: void + sleep: 0 + tooltip: >- + This function stops the specified animation on the rigged mesh object + associated with the current script.\nAnimation may be an animation in task + inventory, a built-in animation, or the uuid of an animation.\n + llStopPointAt: + arguments: [] + deprecated: true + energy: 10 + func-id: 132 + private: true + return: void + sleep: 0 + tooltip: '' + llStopSound: + arguments: [] + energy: 10 + func-id: 92 + return: void + sleep: 0 + tooltip: Stops playback of the currently attached sound. + llStringLength: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 128 + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns an integer that is the number of characters in Text (not counting + the null). + llStringToBase64: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 260 + pure: true + return: string + sleep: 0 + tooltip: Returns the string Base64 representation of the input string. + llStringTrim: + arguments: + - Text: + tooltip: String to trim + type: string + - TrimType: + tooltip: 'STRING_TRIM_HEAD, STRING_TRIM_TAIL, or STRING_TRIM.' + type: integer + energy: 10 + func-id: 330 + pure: true + return: string + sleep: 0 + tooltip: >- + Outputs a string, eliminating white-space from the start and/or end of the + input string Text.\nValid options for TrimType:\nSTRING_TRIM_HEAD: trim + all leading spaces in Text\nSTRING_TRIM_TAIL: trim all trailing spaces in + Text\nSTRING_TRIM: trim all leading and trailing spaces in Text. + llSubStringIndex: + arguments: + - Text: + tooltip: '' + type: string + - Sequence: + tooltip: '' + type: string + energy: 10 + func-id: 181 + index-semantics: true + pure: true + return: integer + sleep: 0 + tooltip: >- + Returns an integer that is the index in Text where string pattern Sequence + first appears. Returns -1 if not found. + llTakeCamera: + arguments: + - AvatarID: + tooltip: '' + type: key + deprecated: true + energy: 10 + func-id: 115 + return: void + sleep: 0 + tooltip: 'Deprecated: Use llSetCameraParams instead.' + llTakeControls: + arguments: + - Controls: + tooltip: Bit-field of CONTROL_* flags. + type: integer + - Accept: + tooltip: 'Boolean, determines whether control events are generated.' + type: integer + - PassOn: + tooltip: 'Boolean, determines whether controls are disabled.' + type: integer + energy: 10 + func-id: 111 + return: void + sleep: 0 + tooltip: >- + Take controls from the agent the script has permissions for.\nIf (Accept + == (Controls & input)), send input to the script. PassOn determines + whether Controls also perform their normal functions.\nRequires the + PERMISSION_TAKE_CONTROLS permission to run. + llTan: + arguments: + - Theta: + tooltip: '' + type: float + energy: 10 + func-id: 2 + native: true + pure: true + return: float + sleep: 0 + tooltip: Returns the tangent of Theta (Theta in radians). + llTarget: + arguments: + - Position: + tooltip: '' + type: vector + - Range: + tooltip: '' + type: float + energy: 10 + func-id: 66 + return: integer + sleep: 0 + tooltip: >- + This function is to have the script know when it has reached a + position.\nIt registers a Position with a Range that triggers at_target + and not_at_target events continuously until unregistered. + llTargetOmega: + arguments: + - Axis: + tooltip: '' + type: vector + - SpinRate: + tooltip: '' + type: float + - Gain: + tooltip: '' + type: float + energy: 10 + func-id: 133 + return: void + sleep: 0 + tooltip: >- + Attempt to spin at SpinRate with strength Gain on Axis.\nA spin rate of + 0.0 cancels the spin. This function always works in object-local + coordinates. + llTargetRemove: + arguments: + - Target: + tooltip: '' + type: integer + energy: 10 + func-id: 67 + return: void + sleep: 0 + tooltip: Removes positional target Handle registered with llTarget. + llTargetedEmail: + arguments: + - Target: + tooltip: '' + type: integer + - Subject: + tooltip: '' + type: string + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 750 + return: void + sleep: 20 + tooltip: >- + Sends an email with Subject and Message to the owner or creator of an + object. + llTeleportAgent: + arguments: + - AvatarID: + tooltip: UUID of avatar. + type: key + - LandmarkName: + tooltip: 'Name of landmark (in object contents), or empty string, to use.' + type: string + - Position: + tooltip: >- + If no landmark was provided, the position within the current region + to teleport the avatar to. + type: vector + - LookAtPoint: + tooltip: >- + The position within the target region that the avatar should be + turned to face upon arrival. + type: vector + energy: 10 + func-id: 368 + return: void + sleep: 0 + tooltip: >- + Requests a teleport of avatar to a landmark stored in the object's + inventory. If no landmark is provided (an empty string), the avatar is + teleported to the location position in the current region. In either case, + the avatar is turned to face the position given by look_at in local + coordinates.\nRequires the PERMISSION_TELEPORT permission. This function + can only teleport the owner of the object. + llTeleportAgentGlobalCoords: + arguments: + - AvatarID: + tooltip: UUID of avatar. + type: key + - GlobalPosition: + tooltip: >- + Global coordinates of the destination region. Can be retrieved by + using llRequestSimulatorData(region_name, DATA_SIM_POS). + type: vector + - RegionPosition: + tooltip: >- + The position within the target region to teleport the avatar to, if + no landmark was provided. + type: vector + - LookAtPoint: + tooltip: >- + The position within the target region that the avatar should be + turned to face upon arrival. + type: vector + energy: 10 + func-id: 414 + return: void + sleep: 0 + tooltip: >- + Teleports an agent to the RegionPosition local coordinates within a region + which is specified by the GlobalPosition global coordinates. The agent + lands facing the position defined by LookAtPoint local + coordinates.\nRequires the PERMISSION_TELEPORT permission. This function + can only teleport the owner of the object. + llTeleportAgentHome: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 100 + func-id: 158 + return: void + sleep: 5 + tooltip: Teleport agent over the owner's land to agent's home location. + llTextBox: + arguments: + - AvatarID: + tooltip: '' + type: key + - Text: + tooltip: '' + type: string + - Channel: + tooltip: '' + type: integer + energy: 10 + func-id: 335 + mono-sleep: 0 + return: void + sleep: 1 + tooltip: >- + Opens a dialog for the specified avatar with message Text, which contains + a text box for input. Any text that is entered is said on the specified + Channel (as if by the avatar) when the "OK" button is clicked. + llToLower: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 98 + native: true + pure: true + return: string + sleep: 0 + tooltip: Returns a string that is Text with all lower-case characters. + llToUpper: + arguments: + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 97 + native: true + pure: true + return: string + sleep: 0 + tooltip: Returns a string that is Text with all upper-case characters. + llTransferLindenDollars: + arguments: + - AvatarID: + tooltip: '' + type: key + - Amount: + tooltip: '' + type: integer + energy: 10 + func-id: 395 + return: key + sleep: 0 + tooltip: >- + Transfer Amount of linden dollars (L$) from script owner to AvatarID. + Returns a key to a corresponding transaction_result event for the success + of the transfer.\nAttempts to send the amount of money to the specified + avatar, and trigger a transaction_result event identified by the returned + key. + llTransferOwnership: + arguments: + - AgentID: + tooltip: An agent in the region. + type: key + - Flags: + tooltip: Flags to control type of inventory transfer. + type: integer + - Params: + tooltip: >- + Extra parameters to llTransferOwnership. None are defined at this + time. + type: list + energy: 10 + func-id: 519 + return: integer + sleep: 0 + tooltip: 'Transfers ownership of an object, or a copy of the object to a new agent.' + llTriggerSound: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + energy: 10 + func-id: 91 + return: void + sleep: 0 + tooltip: >- + Plays Sound at Volume (0.0 - 1.0), centered at but not attached to + object.\nThere is no limit to the number of triggered sounds which can be + generated by an object, and calling llTriggerSound does not affect the + attached sounds created by llPlaySound and llLoopSound. This is very + useful for things like collision noises, explosions, etc. There is no way + to stop or alter the volume of a sound triggered by this function. + llTriggerSoundLimited: + arguments: + - Sound: + tooltip: '' + type: string + - Volume: + tooltip: '' + type: float + - TNE: + tooltip: '' + type: vector + - BSW: + tooltip: '' + type: vector + energy: 10 + func-id: 212 + return: void + sleep: 0 + tooltip: >- + Plays Sound at Volume (0.0 - 1.0), centered at but not attached to object, + limited to axis-aligned bounding box defined by vectors top-north-east + (TNE) and bottom-south-west (BSW).\nThere is no limit to the number of + triggered sounds which can be generated by an object, and calling + llTriggerSound does not affect the attached sounds created by llPlaySound + and llLoopSound. This is very useful for things like collision noises, + explosions, etc. There is no way to stop or alter the volume of a sound + triggered by this function. + llUnSit: + arguments: + - AvatarID: + tooltip: '' + type: key + energy: 10 + func-id: 220 + return: void + sleep: 0 + tooltip: >- + If agent identified by AvatarID is sitting on the object the script is + attached to or is over land owned by the object's owner, the agent is + forced to stand up. + llUnescapeURL: + arguments: + - URL: + tooltip: '' + type: string + energy: 10 + func-id: 308 + pure: true + return: string + sleep: 0 + tooltip: >- + Returns the string that is the URL unescaped, replacing "%20" with spaces, + etc., version of URL.\nThis function can output raw UTF-8 strings. + llUpdateCharacter: + arguments: + - Options: + tooltip: >- + Character configuration options. Takes the same constants as + llCreateCharacter(). + type: list + energy: 10 + func-id: 406 + return: void + sleep: 0 + tooltip: Updates settings for a pathfinding character. + llUpdateKeyValue: + arguments: + - Key: + tooltip: '' + type: string + - Value: + tooltip: '' + type: string + - Checked: + tooltip: '' + type: integer + - OriginalValue: + tooltip: '' + type: string + energy: 10 + experience: true + func-id: 389 + return: key + sleep: 0 + tooltip: |2- + + Starts an asychronous transaction to update the value associated with the key given. The dataserver callback will be executed with the key returned from this call and a string describing the result. The result is a two element commma-delimited list. The first item is an integer specifying if the transaction succeeded (1) or not (0). In the failure case, the second item will be an integer corresponding to one of the XP_ERROR_... constants. In the success case the second item will be the value associated with the key. If Checked is 1 the existing value in the data store must match the OriginalValue passed or XP_ERROR_RETRY_UPDATE will be returned. If Checked is 0 the key will be created if necessary. + + llVecDist: + arguments: + - Location1: + tooltip: '' + type: vector + - Location2: + tooltip: '' + type: vector + energy: 10 + func-id: 14 + pure: true + return: float + sleep: 0 + tooltip: Returns the distance between Location1 and Location2. + llVecMag: + arguments: + - Vector: + tooltip: '' + type: vector + energy: 10 + func-id: 12 + pure: true + return: float + sleep: 0 + tooltip: Returns the magnitude of the vector. + llVecNorm: + arguments: + - Vector: + tooltip: '' + type: vector + energy: 10 + func-id: 13 + pure: true + return: vector + sleep: 0 + tooltip: Returns normalized vector. + llVerifyRSA: + arguments: + - PublicKey: + tooltip: The PEM-formatted public key for signature verifiation. + type: string + - Message: + tooltip: The message that was signed. + type: string + - Signature: + tooltip: The base64-formatted signature of the message. + type: string + - Algorithm: + tooltip: 'The digest algorithm: sha1, sha224, sha256, sha384, sha512.' + type: string + bool-semantics: true + energy: 10 + func-id: 540 + return: integer + sleep: 0 + tooltip: >- + Returns TRUE if PublicKey, Message, and Algorithm produce the same + base64-formatted Signature. + llVolumeDetect: + arguments: + - DetectEnabled: + tooltip: 'TRUE enables, FALSE disables.' + type: integer + energy: 10 + func-id: 248 + return: void + sleep: 0 + tooltip: >- + If DetectEnabled = TRUE, object becomes phantom but triggers + collision_start and collision_end events when other objects start and stop + interpenetrating.\nIf another object (including avatars) interpenetrates + it, it will get a collision_start event.\nWhen an object stops + interpenetrating, a collision_end event is generated. While the other is + inter-penetrating, collision events are NOT generated. + llWanderWithin: + arguments: + - Origin: + tooltip: Central point to wander about. + type: vector + - Area: + tooltip: >- + Half-extents of an area the character may wander within. (i.e., it + can wander from the specified origin by up to +/-Distance.x in x, + +/-Distance.y in y, etc.) + type: vector + - Options: + tooltip: No options available at this time. + type: list + energy: 10 + func-id: 401 + return: void + sleep: 0 + tooltip: >- + Wander within a specified volume.\nSets a character to wander about a + central spot within a specified area. + llWater: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 153 + return: float + sleep: 0 + tooltip: Returns the water height below the object position + Offset. + llWhisper: + arguments: + - Channel: + tooltip: '' + type: integer + - Text: + tooltip: '' + type: string + energy: 10 + func-id: 22 + return: void + sleep: 0 + tooltip: >- + Whispers Text on Channel.\nThis chat method has a range of 10m + radius.\nPUBLIC_CHANNEL is the public chat channel that all avatars see as + chat text. DEBUG_CHANNEL is the script debug channel, and is also visible + to nearby avatars. All other channels are are not sent to avatars, but may + be used to communicate with scripts. + llWind: + arguments: + - Offset: + tooltip: '' + type: vector + energy: 10 + func-id: 44 + return: vector + sleep: 0 + tooltip: Returns the wind velocity at the object position + Offset. + llWorldPosToHUD: + arguments: + - world_pos: + tooltip: The world-frame position to project into HUD space + type: vector + energy: 10 + func-id: 547 + return: vector + sleep: 0 + tooltip: >- + Returns the local position that would put the origin of a HUD object + directly over world_pos as viewed by the current camera. + llXorBase64: + arguments: + - Text1: + tooltip: '' + type: string + - Text2: + tooltip: '' + type: string + energy: 10 + func-id: 522 + pure: true + return: string + sleep: 0 + tooltip: >- + Performs an exclusive OR on two Base64 strings and returns a Base64 + string. Text2 repeats if it is shorter than Text1. + llXorBase64Strings: + arguments: + - Text1: + tooltip: '' + type: string + - Text2: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 262 + pure: true + return: string + sleep: 0.3 + tooltip: >- + Deprecated: Please use llXorBase64 instead.\nIncorrectly performs an + exclusive OR on two Base64 strings and returns a Base64 string. Text2 + repeats if it is shorter than Text1.\nRetained for backwards + compatibility. + llXorBase64StringsCorrect: + arguments: + - Text1: + tooltip: '' + type: string + - Text2: + tooltip: '' + type: string + deprecated: true + energy: 10 + func-id: 319 + pure: true + return: string + sleep: 0 + tooltip: >- + Deprecated: Please use llXorBase64 instead.\nCorrectly (unless nulls are + present) performs an exclusive OR on two Base64 strings and returns a + Base64 string.\nText2 repeats if it is shorter than Text1. + llsRGB2Linear: + arguments: + - srgb: + tooltip: A color in the sRGB colorspace. + type: vector + energy: 10 + func-id: 716 + return: vector + sleep: 0 + tooltip: Converts a color from the sRGB to the linear colorspace. +types: + float: + tooltip: >- + 32 bit floating point value.\nThe range is 1.175494351E-38 to + 3.402823466E+38. + integer: + tooltip: >- + 32 bit integer value.\n−2,147,483,648 and +2,147,483,647 (that is + 0x80000000 to 0x7FFFFFFF in hex). + key: + tooltip: >- + A 128 bit unique identifier (UUID).\nThe key is represented as hexidecimal + characters (A-F and 0-9), grouped into sections (8,4,4,4,12 characters) + and separated by hyphens (for a total of 36 characters). e.g. + "A822FF2B-FF02-461D-B45D-DCD10A2DE0C2". + list: + tooltip: >- + A collection of other data types.\nLists are signified by square brackets + surrounding their elements; the elements inside are separated by commas. + e.g. [0, 1, 2, 3, 4] or ["Yes", "No", "Perhaps"]. + quaternion: + private: true + tooltip: >- + The quaternion type is a left over from way back when LSL was created. It + was later renamed to to make it more user friendly, but it + appears someone forgot to remove it ;-) + rotation: + tooltip: >- + The rotation type is one of several ways to represent an orientation in + 3D.\nIt is a mathematical object called a quaternion. You can think of a + quaternion as four numbers (x, y, z, w), three of which represent the + direction an object is facing and a fourth that represents the object's + banking left or right around that direction. + string: + tooltip: Text data.\nThe editor accepts UTF-8 encoded text. + vector: + tooltip: >- + A vector is a data type that contains a set of three float + values.\nVectors are used to represent colors (RGB), positions, and + directions/velocities. +controls: + do: + tooltip: 'do / while loop\ndo {\n...\n} while ();' + else: + tooltip: >- + if / else block\nif () {\n...\n[} else [if () + {\n...]]\n} + for: + tooltip: >- + for loop\nfor (; ; )\n{ + ...\n} + if: + tooltip: >- + if / else block\nif () {\n...\n[} else [if () + {\n...]]\n} + jump: + tooltip: jump statement\njump