diff options
-rw-r--r-- | indra/llcommon/CMakeLists.txt | 2 | ||||
-rw-r--r-- | indra/llcommon/llapp.h | 5 | ||||
-rw-r--r-- | indra/llcommon/llerror.cpp | 17 | ||||
-rw-r--r-- | indra/llcommon/llerrorcontrol.h | 15 | ||||
-rw-r--r-- | indra/llcommon/llfixedbuffer.cpp | 13 | ||||
-rw-r--r-- | indra/llcommon/llfixedbuffer.h | 22 | ||||
-rw-r--r-- | indra/llcommon/lloptioninterface.cpp | 39 | ||||
-rw-r--r-- | indra/llcommon/lloptioninterface.h | 46 | ||||
-rw-r--r-- | indra/llcommon/llstring.h | 20 | ||||
-rw-r--r-- | indra/llvfs/lldir.cpp | 2 | ||||
-rw-r--r-- | indra/lscript/lscript_compile/lscript_tree.cpp | 18 | ||||
-rw-r--r-- | indra/lscript/lscript_execute/lscript_execute.cpp | 44 | ||||
-rw-r--r-- | indra/lscript/lscript_execute/lscript_readlso.cpp | 4 | ||||
-rw-r--r-- | indra/lscript/lscript_library.h | 8 | ||||
-rw-r--r-- | indra/lscript/lscript_library/lscript_library.cpp | 782 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llpreviewscript.cpp | 75 | ||||
-rw-r--r-- | indra/newview/llviewerprecompiledheaders.h | 1 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 356 |
19 files changed, 976 insertions, 501 deletions
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 9f1b0b48d8..a93623d24e 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -52,6 +52,7 @@ set(llcommon_SOURCE_FILES llmemtype.cpp llmetrics.cpp llmortician.cpp + lloptioninterface.cpp llptrto.cpp llprocesslauncher.cpp llprocessor.cpp @@ -157,6 +158,7 @@ set(llcommon_HEADER_FILES llmetrics.h llmortician.h llnametable.h + lloptioninterface.h llpointer.h llpreprocessor.h llpriqueuemap.h diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index cc60ba0b80..e32a293f1c 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -37,6 +37,7 @@ #include "llapr.h" #include "llrun.h" #include "llsd.h" +#include "lloptioninterface.h" // Forward declarations class LLErrorThread; @@ -61,7 +62,7 @@ public: }; #endif -class LLApp +class LLApp : public LLOptionInterface { friend class LLErrorThread; public: @@ -110,7 +111,7 @@ public: * @param name The name of the option. * @return Returns the option data. */ - LLSD getOption(const std::string& name) const; + virtual LLSD getOption(const std::string& name) const; /** * @brief Parse command line options and insert them into diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 8102eddb18..77c0c2294a 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -53,12 +53,11 @@ #include "llapp.h" #include "llapr.h" #include "llfile.h" -#include "llfixedbuffer.h" #include "lllivefile.h" #include "llsd.h" #include "llsdserialize.h" #include "llstl.h" - +#include "lltimer.h" namespace { #if !LL_WINDOWS @@ -192,16 +191,16 @@ namespace { class RecordToFixedBuffer : public LLError::Recorder { public: - RecordToFixedBuffer(LLFixedBuffer& buffer) : mBuffer(buffer) { } + RecordToFixedBuffer(LLLineBuffer* buffer) : mBuffer(buffer) { } virtual void recordMessage(LLError::ELevel level, - const std::string& message) + const std::string& message) { - mBuffer.addLine(message); + mBuffer->addLine(message); } private: - LLFixedBuffer& mBuffer; + LLLineBuffer* mBuffer; }; #if LL_WINDOWS @@ -209,7 +208,7 @@ namespace { { public: virtual void recordMessage(LLError::ELevel level, - const std::string& message) + const std::string& message) { llutf16string utf16str = wstring_to_utf16str(utf8str_to_wstring(message)); @@ -792,7 +791,7 @@ namespace LLError addRecorder(f); } - void logToFixedBuffer(LLFixedBuffer* fixedBuffer) + void logToFixedBuffer(LLLineBuffer* fixedBuffer) { LLError::Settings& s = LLError::Settings::get(); @@ -805,7 +804,7 @@ namespace LLError return; } - s.fixedBufferRecorder = new RecordToFixedBuffer(*fixedBuffer); + s.fixedBufferRecorder = new RecordToFixedBuffer(fixedBuffer); addRecorder(s.fixedBufferRecorder); } diff --git a/indra/llcommon/llerrorcontrol.h b/indra/llcommon/llerrorcontrol.h index a14bcd2ae2..fab0a1ef9f 100644 --- a/indra/llcommon/llerrorcontrol.h +++ b/indra/llcommon/llerrorcontrol.h @@ -38,7 +38,6 @@ #include "boost/function.hpp" #include <string> -class LLFixedBuffer; class LLSD; /* @@ -49,6 +48,18 @@ class LLSD; These implementations are in llerror.cpp. */ +// Line buffer interface +class LLLineBuffer +{ +public: + LLLineBuffer() {}; + virtual ~LLLineBuffer() {}; + + virtual void clear() = 0; // Clear the buffer, and reset it. + + virtual void addLine(const std::string& utf8line) = 0; +}; + namespace LLError { @@ -144,7 +155,7 @@ namespace LLError // each error message is passed to each recorder via recordMessage() void logToFile(const std::string& filename); - void logToFixedBuffer(LLFixedBuffer*); + void logToFixedBuffer(LLLineBuffer*); // Utilities to add recorders for logging to a file or a fixed buffer // A second call to the same function will remove the logger added // with the first. diff --git a/indra/llcommon/llfixedbuffer.cpp b/indra/llcommon/llfixedbuffer.cpp index e9d6029378..1f6a06c247 100644 --- a/indra/llcommon/llfixedbuffer.cpp +++ b/indra/llcommon/llfixedbuffer.cpp @@ -32,20 +32,21 @@ #include "llfixedbuffer.h" +//////////////////////////////////////////////////////////////////////////// + LLFixedBuffer::LLFixedBuffer(const U32 max_lines) - : mMutex(NULL) + : LLLineBuffer(), + mMaxLines(max_lines), + mMutex(NULL) { - mMaxLines = max_lines; mTimer.reset(); } - LLFixedBuffer::~LLFixedBuffer() { clear(); } - void LLFixedBuffer::clear() { mMutex.lock() ; @@ -61,10 +62,10 @@ void LLFixedBuffer::clear() void LLFixedBuffer::addLine(const std::string& utf8line) { LLWString wstring = utf8str_to_wstring(utf8line); - LLFixedBuffer::addLine(wstring); + addWLine(wstring); } -void LLFixedBuffer::addLine(const LLWString& line) +void LLFixedBuffer::addWLine(const LLWString& line) { if (line.empty()) { diff --git a/indra/llcommon/llfixedbuffer.h b/indra/llcommon/llfixedbuffer.h index 992a024df1..01b46d327a 100644 --- a/indra/llcommon/llfixedbuffer.h +++ b/indra/llcommon/llfixedbuffer.h @@ -38,14 +38,14 @@ #include <string> #include "llstring.h" #include "llthread.h" +#include "llerrorcontrol.h" -// Fixed size buffer for console output and other things. - -class LLFixedBuffer +// fixed buffer implementation +class LLFixedBuffer : public LLLineBuffer { public: LLFixedBuffer(const U32 max_lines = 20); - virtual ~LLFixedBuffer(); + ~LLFixedBuffer(); LLTimer mTimer; U32 mMaxLines; @@ -53,22 +53,18 @@ public: std::deque<F32> mAddTimes; std::deque<S32> mLineLengths; - void clear(); // Clear the buffer, and reset it. + /*virtual*/ void clear(); // Clear the buffer, and reset it. - //do not make these two "virtual" - void addLine(const std::string& utf8line); - void addLine(const LLWString& line); + /*virtual*/ void addLine(const std::string& utf8line); - // Get lines currently in the buffer, up to max_size chars, max_length lines - char *getLines(U32 max_size = 0, U32 max_length = 0); void setMaxLines(S32 max_lines); + protected: - virtual void removeExtraLines(); + void removeExtraLines(); + void addWLine(const LLWString& line); protected: LLMutex mMutex ; }; -const U32 FIXED_BUF_MAX_LINE_LEN = 255; // Not including termnating 0 - #endif //LL_FIXED_BUFFER_H diff --git a/indra/llcommon/lloptioninterface.cpp b/indra/llcommon/lloptioninterface.cpp new file mode 100644 index 0000000000..68c1ff1c41 --- /dev/null +++ b/indra/llcommon/lloptioninterface.cpp @@ -0,0 +1,39 @@ +/** + * @file lloptioninterface.cpp + * @brief + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "lloptioninterface.h" + + +LLOptionInterface::~LLOptionInterface() +{ + +} diff --git a/indra/llcommon/lloptioninterface.h b/indra/llcommon/lloptioninterface.h new file mode 100644 index 0000000000..4faf95f5e1 --- /dev/null +++ b/indra/llcommon/lloptioninterface.h @@ -0,0 +1,46 @@ +/** + * @file lloptioninterface.h + * @brief + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLOPTIONINTERFACE_H +#define LL_LLOPTIONINTERFACE_H + +#include "linden_common.h" + +class LLSD; +class LLOptionInterface +{ +public: + virtual ~LLOptionInterface() = 0; + virtual LLSD getOption(const std::string& name) const = 0; +}; + +#endif diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index a15d6a9a14..c6dcdd6d12 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -281,7 +281,8 @@ public: static void replaceTabsWithSpaces( std::basic_string<T>& string, size_type spaces_per_tab ); static void replaceNonstandardASCII( std::basic_string<T>& string, T replacement ); static void replaceChar( std::basic_string<T>& string, T target, T replacement ); - + static void replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement ); + static BOOL containsNonprintable(const std::basic_string<T>& string); static void stripNonprintable(std::basic_string<T>& string); @@ -1189,11 +1190,22 @@ template<class T> void LLStringUtilBase<T>::replaceChar( std::basic_string<T>& string, T target, T replacement ) { size_type found_pos = 0; - for (found_pos = string.find(target, found_pos); - found_pos != std::basic_string<T>::npos; - found_pos = string.find(target, found_pos)) + while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos ) { string[found_pos] = replacement; + found_pos++; // avoid infinite defeat if target == replacement + } +} + +//static +template<class T> +void LLStringUtilBase<T>::replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement ) +{ + size_type found_pos = 0; + while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos ) + { + string.replace( found_pos, target.length(), replacement ); + found_pos += replacement.length(); // avoid infinite defeat if replacement contains target } } diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 52ef1baabf..745e53c980 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -475,6 +475,8 @@ std::string LLDir::getDirName(const std::string& filepath) const std::string LLDir::getExtension(const std::string& filepath) const { + if (filepath.empty()) + return std::string(); std::string basename = getBaseFileName(filepath, false); std::size_t offset = basename.find_last_of('.'); std::string exten = (offset == std::string::npos || offset == 0) ? "" : basename.substr(offset+1); diff --git a/indra/lscript/lscript_compile/lscript_tree.cpp b/indra/lscript/lscript_compile/lscript_tree.cpp index e291d4c6f8..98146d6f2b 100644 --- a/indra/lscript/lscript_compile/lscript_tree.cpp +++ b/indra/lscript/lscript_compile/lscript_tree.cpp @@ -10673,20 +10673,21 @@ void LLScriptScript::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePa { mGlobalScope = new LLScriptScope(gScopeStringTable); // zeroth, add library functions to global scope - S32 i; + U16 function_index = 0; const char *arg; LLScriptScopeEntry *sentry; - for (i = 0; i < gScriptLibrary.mNextNumber; i++) + for (std::vector<LLScriptLibraryFunction>::const_iterator i = gScriptLibrary.mFunctions.begin(); + i != gScriptLibrary.mFunctions.end(); ++i) { // First, check to make sure this isn't a god only function, or that the viewer's agent is a god. - if (!gScriptLibrary.mFunctions[i]->mGodOnly || mGodLike) + if (!i->mGodOnly || mGodLike) { - if (gScriptLibrary.mFunctions[i]->mReturnType) - sentry = mGlobalScope->addEntry(gScriptLibrary.mFunctions[i]->mName, LIT_LIBRARY_FUNCTION, char2type(*gScriptLibrary.mFunctions[i]->mReturnType)); + if (i->mReturnType) + sentry = mGlobalScope->addEntry(i->mName, LIT_LIBRARY_FUNCTION, char2type(*i->mReturnType)); else - sentry = mGlobalScope->addEntry(gScriptLibrary.mFunctions[i]->mName, LIT_LIBRARY_FUNCTION, LST_NULL); - sentry->mLibraryNumber = i; - arg = gScriptLibrary.mFunctions[i]->mArgs; + sentry = mGlobalScope->addEntry(i->mName, LIT_LIBRARY_FUNCTION, LST_NULL); + sentry->mLibraryNumber = function_index; + arg = i->mArgs; if (arg) { while (*arg) @@ -10698,6 +10699,7 @@ void LLScriptScript::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePa } } } + function_index++; } // first go and collect all the global variables if (mGlobals) diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp index d7f445d3d8..2fd81210c0 100644 --- a/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/indra/lscript/lscript_execute/lscript_execute.cpp @@ -4240,13 +4240,13 @@ BOOL run_calllib(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id) printf("[0x%X]\tCALLLIB ", offset); offset++; U8 arg = safe_instruction_bytestream2byte(buffer, offset); - if (arg >= gScriptLibrary.mNextNumber) + if (arg >= (U8)gScriptLibrary.mFunctions.size()) { set_fault(buffer, LSRF_BOUND_CHECK_ERROR); return FALSE; } if (b_print) - printf("%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg]->mName); + printf("%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg].mName); // pull out the arguments and the return values LLScriptLibData *arguments = NULL; @@ -4254,14 +4254,14 @@ BOOL run_calllib(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id) S32 i, number; - if (gScriptLibrary.mFunctions[arg]->mReturnType) + if (gScriptLibrary.mFunctions[arg].mReturnType) { returnvalue = new LLScriptLibData; } - if (gScriptLibrary.mFunctions[arg]->mArgs) + if (gScriptLibrary.mFunctions[arg].mArgs) { - number = (S32)strlen(gScriptLibrary.mFunctions[arg]->mArgs); /*Flawfinder: ignore*/ + number = (S32)strlen(gScriptLibrary.mFunctions[arg].mArgs); /*Flawfinder: ignore*/ arguments = new LLScriptLibData[number]; } else @@ -4271,23 +4271,23 @@ BOOL run_calllib(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id) for (i = number - 1; i >= 0; i--) { - lscript_pop_variable(&arguments[i], buffer, gScriptLibrary.mFunctions[arg]->mArgs[i]); + lscript_pop_variable(&arguments[i], buffer, gScriptLibrary.mFunctions[arg].mArgs[i]); } if (b_print) { - printf("%s\n", gScriptLibrary.mFunctions[arg]->mDesc); + printf("See LSLTipText_%s in strings.xml for usage\n", gScriptLibrary.mFunctions[arg].mName); } { - gScriptLibrary.mFunctions[arg]->mExecFunc(returnvalue, arguments, id); + gScriptLibrary.mFunctions[arg].mExecFunc(returnvalue, arguments, id); } - add_register_fp(buffer, LREG_ESR, -gScriptLibrary.mFunctions[arg]->mEnergyUse); - add_register_fp(buffer, LREG_SLR, gScriptLibrary.mFunctions[arg]->mSleepTime); + add_register_fp(buffer, LREG_ESR, -gScriptLibrary.mFunctions[arg].mEnergyUse); + add_register_fp(buffer, LREG_SLR, gScriptLibrary.mFunctions[arg].mSleepTime); if (returnvalue) { - returnvalue->mType = char2type(*gScriptLibrary.mFunctions[arg]->mReturnType); + returnvalue->mType = char2type(*gScriptLibrary.mFunctions[arg].mReturnType); lscript_push_return_variable(returnvalue, buffer); } @@ -4310,13 +4310,13 @@ BOOL run_calllib_two_byte(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &i printf("[0x%X]\tCALLLIB ", offset); offset++; U16 arg = safe_instruction_bytestream2u16(buffer, offset); - if (arg >= gScriptLibrary.mNextNumber) + if (arg >= (U16)gScriptLibrary.mFunctions.size()) { set_fault(buffer, LSRF_BOUND_CHECK_ERROR); return FALSE; } if (b_print) - printf("%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg]->mName); + printf("%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg].mName); // pull out the arguments and the return values LLScriptLibData *arguments = NULL; @@ -4324,14 +4324,14 @@ BOOL run_calllib_two_byte(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &i S32 i, number; - if (gScriptLibrary.mFunctions[arg]->mReturnType) + if (gScriptLibrary.mFunctions[arg].mReturnType) { returnvalue = new LLScriptLibData; } - if (gScriptLibrary.mFunctions[arg]->mArgs) + if (gScriptLibrary.mFunctions[arg].mArgs) { - number = (S32)strlen(gScriptLibrary.mFunctions[arg]->mArgs); /*Flawfinder: ignore*/ + number = (S32)strlen(gScriptLibrary.mFunctions[arg].mArgs); /*Flawfinder: ignore*/ arguments = new LLScriptLibData[number]; } else @@ -4341,23 +4341,23 @@ BOOL run_calllib_two_byte(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &i for (i = number - 1; i >= 0; i--) { - lscript_pop_variable(&arguments[i], buffer, gScriptLibrary.mFunctions[arg]->mArgs[i]); + lscript_pop_variable(&arguments[i], buffer, gScriptLibrary.mFunctions[arg].mArgs[i]); } if (b_print) { - printf("%s\n", gScriptLibrary.mFunctions[arg]->mDesc); + printf("See LSLTipText_%s in strings.xml for usage\n", gScriptLibrary.mFunctions[arg].mName); } { - gScriptLibrary.mFunctions[arg]->mExecFunc(returnvalue, arguments, id); + gScriptLibrary.mFunctions[arg].mExecFunc(returnvalue, arguments, id); } - add_register_fp(buffer, LREG_ESR, -gScriptLibrary.mFunctions[arg]->mEnergyUse); - add_register_fp(buffer, LREG_SLR, gScriptLibrary.mFunctions[arg]->mSleepTime); + add_register_fp(buffer, LREG_ESR, -gScriptLibrary.mFunctions[arg].mEnergyUse); + add_register_fp(buffer, LREG_SLR, gScriptLibrary.mFunctions[arg].mSleepTime); if (returnvalue) { - returnvalue->mType = char2type(*gScriptLibrary.mFunctions[arg]->mReturnType); + returnvalue->mType = char2type(*gScriptLibrary.mFunctions[arg].mReturnType); lscript_push_return_variable(returnvalue, buffer); } diff --git a/indra/lscript/lscript_execute/lscript_readlso.cpp b/indra/lscript/lscript_execute/lscript_readlso.cpp index faf4fba0e0..2948ebca63 100644 --- a/indra/lscript/lscript_execute/lscript_readlso.cpp +++ b/indra/lscript/lscript_execute/lscript_readlso.cpp @@ -1579,7 +1579,7 @@ void print_calllib(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs) lso_print_tabs(fp, tabs); fprintf(fp, "[0x%X]\tCALLLIB ", offset++); arg = *(buffer + offset++); - fprintf(fp, "%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg]->mName); + fprintf(fp, "%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg].mName); } @@ -1589,6 +1589,6 @@ void print_calllib_two_byte(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs) lso_print_tabs(fp, tabs); fprintf(fp, "[0x%X]\tCALLLIB_TWO_BYTE ", offset++); arg = bytestream2u16(buffer, offset); - fprintf(fp, "%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg]->mName); + fprintf(fp, "%d (%s)\n", (U32)arg, gScriptLibrary.mFunctions[arg].mName); } diff --git a/indra/lscript/lscript_library.h b/indra/lscript/lscript_library.h index fa3b06b7d9..6728d70d0a 100644 --- a/indra/lscript/lscript_library.h +++ b/indra/lscript/lscript_library.h @@ -44,7 +44,7 @@ class LLScriptLibData; class LLScriptLibraryFunction { public: - LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, const char *desc, BOOL god_only = FALSE); + LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only = FALSE); ~LLScriptLibraryFunction(); F32 mEnergyUse; @@ -53,7 +53,6 @@ public: const char *mName; const char *mReturnType; const char *mArgs; - const char *mDesc; BOOL mGodOnly; }; @@ -65,11 +64,10 @@ public: void init(); - void addFunction(LLScriptLibraryFunction *func); + void addFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only = FALSE); void assignExec(const char *name, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &)); - S32 mNextNumber; - LLScriptLibraryFunction **mFunctions; + std::vector<LLScriptLibraryFunction> mFunctions; }; extern LLScriptLibrary gScriptLibrary; diff --git a/indra/lscript/lscript_library/lscript_library.cpp b/indra/lscript/lscript_library/lscript_library.cpp index 0342c97429..0d51c27c92 100644 --- a/indra/lscript/lscript_library/lscript_library.cpp +++ b/indra/lscript/lscript_library/lscript_library.cpp @@ -49,20 +49,12 @@ #include "lscript_library.h" LLScriptLibrary::LLScriptLibrary() -: mNextNumber(0), mFunctions(NULL) { init(); } LLScriptLibrary::~LLScriptLibrary() { - S32 i; - for (i = 0; i < mNextNumber; i++) - { - delete mFunctions[i]; - mFunctions[i] = NULL; - } - delete [] mFunctions; } void dummy_func(LLScriptLibData *retval, LLScriptLibData *args, const LLUUID &id) @@ -75,448 +67,424 @@ void LLScriptLibrary::init() // Otherwise the bytecode numbers for each call will be wrong, and all // existing scripts will crash. - // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSin", "f", "f", "float llSin(float theta)\ntheta in radians")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCos", "f", "f", "float llCos(float theta)\ntheta in radians")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTan", "f", "f", "float llTan(float theta)\ntheta radians")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAtan2", "f", "ff", "float llAtan2(float y, float x)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSqrt", "f", "f", "float llSqrt(float val)\nreturns 0 and triggers a Math Error for imaginary results")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPow", "f", "ff", "float llPow(float base, float exponent)\nreturns 0 and triggers Math Error for imaginary results")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAbs", "i", "i", "integer llAbs(integer val)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llFabs", "f", "f", "float llFabs(float val)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llFrand", "f", "f", "float llFrand(float mag)\nreturns random number in range [0,mag)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llFloor", "i", "f", "integer llFloor(float val)\nreturns largest integer value <= val")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCeil", "i", "f", "integer llCeil(float val)\nreturns smallest integer value >= val")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRound", "i", "f", "integer llRound(float val)\nreturns val rounded to the nearest integer")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llVecMag", "f", "v", "float llVecMag(vector v)\nreturns the magnitude of v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llVecNorm", "v", "v", "vector llVecNorm(vector v)\nreturns the v normalized")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llVecDist", "f", "vv", "float llVecDist(vector v1, vector v2)\nreturns the 3D distance between v1 and v2")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Euler", "v", "q", "vector llRot2Euler(rotation q)\nreturns the Euler representation (roll, pitch, yaw) of q")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEuler2Rot", "q", "v", "rotation llEuler2Rot(vector v)\nreturns the rotation representation of Euler Angles v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAxes2Rot", "q", "vvv", "rotation llAxes2Rot(vector fwd, vector left, vector up)\nreturns the rotation defined by the coordinate axes")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Fwd", "v", "q", "vector llRot2Fwd(rotation q)\nreturns the forward vector defined by q")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Left", "v", "q", "vector llRot2Left(rotation q)\nreturns the left vector defined by q")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Up", "v", "q", "vector llRot2Up(rotation q)\nreturns the up vector defined by q")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRotBetween", "q", "vv", "rotation llRotBetween(vector v1, vector v2)\nreturns the rotation to rotate v1 to v2")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llWhisper", NULL, "is", "llWhisper(integer channel, string msg)\nwhispers msg on channel")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSay", NULL, "is", "llSay(integer channel, string msg)\nsays msg on channel")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llShout", NULL, "is", "llShout(integer channel, string msg)\nshouts msg on channel")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListen", "i", "isks", "integer llListen(integer channel, string name, key id, string msg)\nsets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListenControl", NULL, "ii", "llListenControl(integer number, integer active)\nmakes a listen event callback active or inactive")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListenRemove", NULL, "i", "llListenRemove(integer number)\nremoves listen event callback number")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSensor", NULL, "skiff", "llSensor(string name, key id, integer type, float range, float arc)\nPerforms a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSensorRepeat", NULL, "skifff", "llSensorRepeat(string name, key id, integer type, float range, float arc, float rate)\nsets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSensorRemove", NULL, NULL, "llSensorRemove()\nremoves sensor")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedName", "s", "i", "string llDetectedName(integer number)\nreturns the name of detected object number (returns empty string if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedKey", "k", "i", "key llDetectedKey(integer number)\nreturns the key of detected object number (returns empty key if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedOwner", "k", "i", "key llDetectedOwner(integer number)\nreturns the key of detected object's owner (returns empty key if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedType", "i", "i", "integer llDetectedType(integer number)\nreturns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedPos", "v", "i", "vector llDetectedPos(integer number)\nreturns the position of detected object number (returns <0,0,0> if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedVel", "v", "i", "vector llDetectedVel(integer number)\nreturns the velocity of detected object number (returns <0,0,0> if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedGrab", "v", "i", "vector llDetectedGrab(integer number)\nreturns the grab offset of the user touching object (returns <0,0,0> if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedRot", "q", "i", "rotation llDetectedRot(integer number)\nreturns the rotation of detected object number (returns <0,0,0,1> if number is not valid sensed object)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedGroup", "i", "i", "integer llDetectedGroup(integer number)\nReturns TRUE if detected object is part of same group as owner")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedLinkNumber", "i", "i", "integer llDetectedLinkNumber(integer number)\nreturns the link position of the triggered event for touches and collisions only")); - addFunction(new LLScriptLibraryFunction(0.f, 0.f, dummy_func, "llDie", NULL, NULL, "llDie()\ndeletes the object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGround", "f", "v", "float llGround(vector v)\nreturns the ground height below the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCloud", "f", "v", "float llCloud(vector v)\nreturns the cloud density at the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llWind", "v", "v", "vector llWind(vector v)\nreturns the wind velocity at the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetStatus", NULL, "ii", "llSetStatus(integer status, integer value)\nsets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB,\nSTATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetStatus", "i", "i", "integer llGetStatus(integer status)\ngets value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB,\nSTATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetScale", NULL, "v", "llSetScale(vector scale)\nsets the scale")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetScale", "v", NULL, "vector llGetScale()\ngets the scale")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetColor", NULL, "vi", "llSetColor(vector color, integer face)\nsets the color")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAlpha", "f", "i", "float llGetAlpha(integer face)\ngets the alpha")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetAlpha", NULL, "fi", "llSetAlpha(float alpha, integer face)\nsets the alpha")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetColor", "v", "i", "vector llGetColor(integer face)\ngets the color")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetTexture", NULL, "si", "llSetTexture(string texture, integer face)\nsets the texture of face")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llScaleTexture", NULL, "ffi", "llScaleTexture(float scales, float scalet, integer face)\nsets the texture s, t scales for the chosen face")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llOffsetTexture", NULL, "ffi", "llOffsetTexture(float offsets, float offsett, integer face)\nsets the texture s, t offsets for the chosen face")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llRotateTexture", NULL, "fi", "llRotateTexture(float rotation, integer face)\nsets the texture rotation for the chosen face")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTexture", "s", "i", "string llGetTexture(integer face)\ngets the texture of face (if it's a texture in the object inventory, otherwise the key in a string)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetPos", NULL, "v", "llSetPos(vector pos)\nsets the position (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetPos", "v", NULL, "vector llGetPos()\ngets the position (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLocalPos", "v", NULL, "vector llGetLocalPos()\ngets the position relative to the root (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetRot", NULL, "q", "llSetRot(rotation rot)\nsets the rotation (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRot", "q", NULL, "rotation llGetRot()\ngets the rotation (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLocalRot", "q", NULL, "rotation llGetLocalRot()\ngets the rotation local to the root (if the script isn't physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetForce", NULL, "vi", "llSetForce(vector force, integer local)\nsets force on object, in local coords if local == TRUE (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetForce", "v", NULL, "vector llGetForce()\ngets the force (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTarget", "i", "vf", "integer llTarget(vector position, float range)\nset positions within range of position as a target and return an ID for the target")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTargetRemove", NULL, "i", "llTargetRemove(integer number)\nremoves target number")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRotTarget", "i", "qf", "integer llRotTarget(rotation rot, float error)\nset rotations with error of rot as a rotational target and return an ID for the rotational target")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRotTargetRemove", NULL, "i", "llRotTargetRemove(integer number)\nremoves rotational target number")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMoveToTarget", NULL, "vf", "llMoveToTarget(vector target, float tau)\ncritically damp to target in tau seconds (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopMoveToTarget", NULL, NULL, "llStopMoveToTarget()\nStops critically damped motion")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llApplyImpulse", NULL, "vi", "llApplyImpulse(vector force, integer local)\napplies impulse to object, in local coords if local == TRUE (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llApplyRotationalImpulse", NULL, "vi", "llApplyRotationalImpulse(vector force, integer local)\napplies rotational impulse to object, in local coords if local == TRUE (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetTorque", NULL, "vi", "llSetTorque(vector torque, integer local)\nsets the torque of object, in local coords if local == TRUE (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTorque", "v", NULL, "vector llGetTorque()\ngets the torque (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetForceAndTorque", NULL, "vvi", "llSetForceAndTorque(vector force, vector torque, integer local)\nsets the force and torque of object, in local coords if local == TRUE (if the script is physical)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetVel", "v", NULL, "vector llGetVel()\ngets the velocity")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAccel", "v", NULL, "vector llGetAccel()\ngets the acceleration")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetOmega", "v", NULL, "vector llGetOmega()\ngets the omega")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTimeOfDay", "f", "", "float llGetTimeOfDay()\ngets the time in seconds since Second Life server midnight (or since server up-time; whichever is smaller)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetWallclock", "f", "", "float llGetWallclock()\ngets the time in seconds since midnight")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTime", "f", NULL, "float llGetTime()\ngets the time in seconds since creation")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llResetTime", NULL, NULL, "llResetTime()\nsets the time to zero")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAndResetTime", "f", NULL, "float llGetAndResetTime()\ngets the time in seconds since creation and sets the time to zero")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSound", NULL, "sfii", "llSound(string sound, float volume, integer queue, integer loop)\nplays sound at volume and whether it should loop or not")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPlaySound", NULL, "sf", "llPlaySound(string sound, float volume)\nplays attached sound once at volume (0.0 - 1.0)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLoopSound", NULL, "sf", "llLoopSound(string sound, float volume)\nplays attached sound looping indefinitely at volume (0.0 - 1.0)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLoopSoundMaster", NULL, "sf", "llLoopSoundMaster(string sound, float volume)\nplays attached sound looping at volume (0.0 - 1.0), declares it a sync master")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLoopSoundSlave", NULL, "sf", "llLoopSoundSlave(string sound, float volume)\nplays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPlaySoundSlave", NULL, "sf", "llPlaySoundSlave(string sound, float volume)\nplays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTriggerSound", NULL, "sf", "llTriggerSound(string sound, float volume)\nplays sound at volume (0.0 - 1.0), centered at but not attached to object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopSound", NULL, "", "llStopSound()\nStops currently attached sound")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llPreloadSound", NULL, "s", "llPreloadSound(string sound)\npreloads a sound on viewers within range")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetSubString", "s", "sii", "string llGetSubString(string src, integer start, integer end)\nreturns the indicated substring")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDeleteSubString", "s", "sii", "string llDeleteSubString(string src, integer start, integer end)\nremoves the indicated substring and returns the result")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llInsertString", "s", "sis", "string llInsertString(string dst, integer position, string src)\ninserts src into dst at position and returns the result")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llToUpper", "s", "s", "string llToUpper(string src)\nconvert src to all upper case and returns the result")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llToLower", "s", "s", "string llToLower(string src)\nconvert src to all lower case and returns the result")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGiveMoney", "i", "ki", "llGiveMoney(key destination, integer amount)\ntransfer amount of money from script owner to destination")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llMakeExplosion", NULL, "iffffsv", "llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake a round explosion of particles")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llMakeFountain", NULL, "iffffisvf", "llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset)\nMake a fountain of particles")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llMakeSmoke", NULL, "iffffsv", "llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake smoke like particles")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llMakeFire", NULL, "iffffsv", "llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake fire like particles")); - addFunction(new LLScriptLibraryFunction(200.f, 0.1f, dummy_func, "llRezObject", NULL, "svvqi", "llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param)\nInstanciate owners inventory object at pos with velocity vel and rotation rot with start parameter param")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLookAt", NULL, "vff", "llLookAt(vector target, F32 strength, F32 damping)\nCause object name to point it's forward axis towards target")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopLookAt", NULL, NULL, "llStopLookAt()\nStop causing object name to point at a target")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetTimerEvent", NULL, "f", "llSetTimerEvent(float sec)\nCause the timer event to be triggered every sec seconds")); - addFunction(new LLScriptLibraryFunction(0.f, 0.f, dummy_func, "llSleep", NULL, "f", "llSleep(float sec)\nPut script to sleep for sec seconds")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetMass", "f", NULL, "float llGetMass()\nGet the mass of task name that script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCollisionFilter", NULL, "ski", "llCollisionFilter(string name, key id, integer accept)\nif accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTakeControls", NULL, "iii", "llTakeControls(integer controls, integer accept, integer pass_on)\nTake controls from agent task has permissions for. If (accept == (controls & input)), send input to task. If pass_on send to agent also.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llReleaseControls", NULL, NULL, "llReleaseControls()\nStop taking inputs")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAttachToAvatar", NULL, "i", "llAttachToAvatar(integer attachment)\nAttach to avatar task has permissions for at point attachment")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetachFromAvatar", NULL, NULL, "llDetachFromAvatar()\nDrop off of avatar")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTakeCamera", NULL, "k", "llTakeCamera(key avatar)\nMove avatar's viewpoint to task")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llReleaseCamera", NULL, "k", "llReleaseCamera(key avatar)\nReturn camera to agent")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetOwner", "k", NULL, "key llGetOwner()\nReturns the owner of the task")); - addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llInstantMessage", NULL, "ks", "llInstantMessage(key user, string message)\nIMs message to the user")); - addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llEmail", NULL, "sss", "llEmail(string address, string subject, string message)\nSends email to address with subject and message")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetNextEmail", NULL, "ss", "llGetNextEmail(string address, string subject)\nGet the next waiting email with appropriate address and/or subject (if blank they are ignored)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetKey", "k", NULL, "key llGetKey()\nGet the key for the task the script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetBuoyancy", NULL, "f", "llSetBuoyancy(float buoyancy)\nSet the tasks buoyancy (0 is none, < 1.0 sinks, 1.0 floats, > 1.0 rises)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetHoverHeight", NULL, "fif", "llSetHoverHeight(float height, integer water, float tau)\nCritically damps to a height (either above ground level or above the higher of land and water if water == TRUE)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopHover", NULL, NULL, "llStopHover()\nStop hovering to a height")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMinEventDelay", NULL, "f", "llMinEventDelay(float delay)\nSet the minimum time between events being handled")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSoundPreload", NULL, "s", "llSoundPreload(string sound)\npreloads a sound on viewers within range")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRotLookAt", NULL, "qff", "llRotLookAt(rotation target, F32 strength, F32 damping)\nCause object name to point it's forward axis towards target")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringLength", "i", "s", "integer llStringLength(string str)\nReturns the length of string")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStartAnimation", NULL, "s", "llStartAnimation(string anim)\nStart animation anim for agent that owns object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopAnimation", NULL, "s", "llStopAnimation(string anim)\nStop animation anim for agent that owns object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPointAt", NULL, "v", "llPointAt(vector pos)\nMake agent that owns object point at pos")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStopPointAt", NULL, NULL, "llStopPointAt()\nStop agent that owns object pointing")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTargetOmega", NULL, "vff", "llTargetOmega(vector axis, float spinrate, float gain)\nAttempt to spin at spinrate with strength gain")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetStartParameter", "i", NULL, "integer llGetStartParameter()\nGet's the start paramter passed to llRezObject")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGodLikeRezObject", NULL, "kv", "llGodLikeRezObject(key inventory, vector pos)\nrez directly off of a UUID if owner has dog-bit set", TRUE)); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRequestPermissions", NULL, "ki", "llRequestPermissions(key agent, integer perm)\nask agent to allow the script to do perm (NB: Debit, ownership, link, joint, and permission requests can only go to the task's owner)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetPermissionsKey", "k", NULL, "key llGetPermissionsKey()\nReturn agent that permissions are enabled for. NULL_KEY if not enabled")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetPermissions", "i", NULL, "integer llGetPermissions()\nreturn what permissions have been enabled")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLinkNumber", "i", NULL, "integer llGetLinkNumber()\nReturns what number in a link set the script is attached to (0 means no link, 1 the root, 2 for first child, &c)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetLinkColor", NULL, "ivi", "llSetLinkColor(integer linknumber, vector color, integer face)\nIf a task exists in the link chain at linknumber, set face to color")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llCreateLink", NULL, "ki", "llCreateLink(key target, integer parent)\nAttempt to link task script is attached to and target (requires permission PERMISSION_CHANGE_LINKS be set). If parent == TRUE, task script is attached to is the root")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llBreakLink", NULL, "i", "llBreakLink(integer linknum)\nDelinks the task with the given link number (requires permission PERMISSION_CHANGE_LINKS be set)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llBreakAllLinks", NULL, NULL, "llBreakAllLinks()\nDelinks all tasks in the link set (requires permission PERMISSION_CHANGE_LINKS be set)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLinkKey", "k", "i", "key llGetLinkKey(integer linknum)\nGet the key of linknumber in link set")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLinkName", "s", "i", "string llGetLinkName(integer linknum)\nGet the name of linknumber in link set")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryNumber", "i", "i", "integer llGetInventoryNumber(integer type)\nGet the number of items of a given type in the task's inventory.\nValid types: INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_OBJECT, INVENTORY_SCRIPT, INVENTORY_CLOTHING, INVENTORY_BODYPART, INVENTORY_NOTECARD, INVENTORY_LANDMARK, INVENTORY_ALL")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryName", "s", "ii", "string llGetInventoryName(integer type, integer number)\nGet the name of the inventory item number of type")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetScriptState", NULL, "si", "llSetScriptState(string name, integer run)\nControl the state of a script name.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetEnergy", "f", NULL, "float llGetEnergy()\nReturns how much energy is in the object as a percentage of maximum")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGiveInventory", NULL, "ks", "llGiveInventory(key destination, string inventory)\nGive inventory to destination")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRemoveInventory", NULL, "s", "llRemoveInventory(string inventory)\nRemove the named inventory item")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetText", NULL, "svf", "llSetText(string text, vector color, float alpha)\nSet text floating over object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llWater", "f", "v", "float llWater(vector v)\nreturns the water height below the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPassTouches", NULL, "i", "llPassTouches(integer pass)\nif pass == TRUE, touches are passed from children on to parents (default is FALSE)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llRequestAgentData", "k", "ki", "key llRequestAgentData(key id, integer data)\nRequests data about agent id. When data is available the dataserver event will be raised")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llRequestInventoryData", "k", "s", "key llRequestInventoryData(string name)\nRequests data from object's inventory object. When data is available the dataserver event will be raised")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetDamage", NULL, "f", "llSetDamage(float damage)\nSets the amount of damage that will be done to an object that this task hits. Task will be killed.")); - addFunction(new LLScriptLibraryFunction(100.f, 5.f, dummy_func, "llTeleportAgentHome", NULL, "k", "llTeleportAgentHome(key id)\nTeleports agent on owner's land to agent's home location")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llModifyLand", NULL, "ii", "llModifyLand(integer action, integer size)\nModify land with action (LAND_LEVEL, LAND_RAISE, LAND_LOWER, LAND_SMOOTH, LAND_NOISE, LAND_REVERT)\non size (LAND_SMALL_BRUSH, LAND_MEDIUM_BRUSH, LAND_LARGE_BRUSH)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCollisionSound", NULL, "sf", "llCollisionSound(string impact_sound, float impact_volume)\nSuppress default collision sounds, replace default impact sounds with impact_sound (empty string to just suppress)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCollisionSprite", NULL, "s", "llCollisionSprite(string impact_sprite)\nSuppress default collision sprites, replace default impact sprite with impact_sprite (empty string to just suppress)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAnimation", "s", "k", "string llGetAnimation(key id)\nGet the currently playing locomotion animation for avatar id")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llResetScript", NULL, NULL, "llResetScript()\nResets the script")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMessageLinked", NULL, "iisk", "llMessageLinked(integer linknum, integer num, string str, key id)\nSends num, str, and id to members of the link set (LINK_ROOT sends to root task in a linked set,\nLINK_SET sends to all tasks,\nLINK_ALL_OTHERS to all other tasks,\nLINK_ALL_CHILDREN to all children,\nLINK_THIS to the task the script it is in)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPushObject", NULL, "kvvi", "llPushObject(key id, vector impulse, vector ang_impulse, integer local)\nApplies impulse and ang_impulse to object id")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPassCollisions", NULL, "i", "llPassCollisions(integer pass)\nif pass == TRUE, collisions are passed from children on to parents (default is FALSE)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetScriptName", "s", NULL, "llGetScriptName()\nReturns the script name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetNumberOfSides", "i", NULL, "integer llGetNumberOfSides()\nReturns the number of sides")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAxisAngle2Rot", "q", "vf", "rotation llAxisAngle2Rot(vector axis, float angle)\nReturns the rotation generated angle about axis")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Axis", "v", "q", "vector llRot2Axis(rotation rot)\nReturns the rotation axis represented by rot")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRot2Angle", "f", "q", "float llRot2Angle(rotation rot)\nReturns the rotation angle represented by rot")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAcos", "f", "f", "float llAcos(float val)\nReturns the arccosine in radians of val")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAsin", "f", "f", "float llAsin(float val)\nReturns the arcsine in radians of val")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAngleBetween", "f", "qq", "float llAngleBetween(rotation a, rotation b)\nReturns angle between rotation a and b")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryKey", "k", "s", "key llGetInventoryKey(string name)\nReturns the key of the inventory name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAllowInventoryDrop", NULL, "i", "llAllowInventoryDrop(integer add)\nIf add == TRUE, users without permissions can still drop inventory items onto task")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetSunDirection", "v", NULL, "vector llGetSunDirection()\nReturns the sun direction on the simulator")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTextureOffset", "v", "i", "vector llGetTextureOffset(integer side)\nReturns the texture offset of side in the x and y components of a vector")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTextureScale", "v", "i", "vector llGetTextureScale(integer side)\nReturns the texture scale of side in the x and y components of a vector")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTextureRot", "f", "i", "float llGetTextureRot(integer side)\nReturns the texture rotation of side")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSubStringIndex", "i", "ss", "integer llSubStringIndex(string source, string pattern)\nFinds index in source where pattern first appears (returns -1 if not found)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetOwnerKey", "k", "k", "key llGetOwnerKey(key id)\nFind the owner of id")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCenterOfMass", "v", NULL, "vector llGetCenterOfMass()\nGet the object's center of mass")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListSort", "l", "lii", "list llListSort(list src, integer stride, integer ascending)\nSort the list into blocks of stride in ascending order if ascending == TRUE. Note that sort only works between same types.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetListLength", "i", "l", "integer llGetListLength(list src)\nGet the number of elements in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2Integer", "i", "li", "integer llList2Integer(list src, integer index)\nCopy the integer at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2Float", "f", "li", "float llList2Float(list src, integer index)\nCopy the float at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2String", "s", "li", "string llList2String(list src, integer index)\nCopy the string at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2Key", "k", "li", "key llList2Key(list src, integer index)\nCopy the key at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2Vector", "v", "li", "vector llList2Vector(list src, integer index)\nCopy the vector at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2Rot", "q", "li", "rotation llList2Rot(list src, integer index)\nCopy the rotation at index in the list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2List", "l", "lii", "list llList2List(list src, integer start, integer end)\nCopy the slice of the list from start to end")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDeleteSubList", "l", "lii", "list llDeleteSubList(list src, integer start, integer end)\nRemove the slice from the list and return the remainder")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetListEntryType", "i", "li", "integer llGetListEntryType(list src, integer index)\nReturns the type of the index entry in the list\n(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2CSV", "s", "l", "string llList2CSV(list src)\nCreate a string of comma separated values from list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCSV2List", "l", "s", "list llCSV2List(string src)\nCreate a list from a string of comma separated values")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListRandomize", "l", "li", "list llListRandomize(list src, integer stride)\nReturns a randomized list of blocks of size stride")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llList2ListStrided", "l", "liii", "list llList2ListStrided(list src, integer start, integer end, integer stride)\nCopy the strided slice of the list from start to end")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionCorner", "v", NULL, "vector llGetRegionCorner()\nReturns a vector with the south west corner x,y position of the region the object is in")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListInsertList", "l", "lli", "list llListInsertList(list dest, list src, integer start)\nInserts src into dest at position start")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListFindList", "i", "ll", "integer llListFindList(list src, list test)\nReturns the start of the first instance of test in src, -1 if not found")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectName", "s", NULL, "string llGetObjectName()\nReturns the name of the object script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetObjectName", NULL, "s", "llSetObjectName(string name)\nSets the objects name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetDate", "s", NULL, "string llGetDate()\nGets the date as YYYY-MM-DD")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEdgeOfWorld", "i", "vv", "integer llEdgeOfWorld(vector pos, vector dir)\nChecks to see whether the border hit by dir from pos is the edge of the world (has no neighboring simulator)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAgentInfo", "i", "k", "integer llGetAgentInfo(key id)\nGets information about agent ID.\nReturns 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 and/or AGENT_IN_AIR.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llAdjustSoundVolume", NULL, "f", "llAdjustSoundVolume(float volume)\nadjusts volume of attached sound (0.0 - 1.0)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetSoundQueueing", NULL, "i", "llSetSoundQueueing(integer queue)\ndetermines whether attached sound calls wait for the current sound to finish (0 = no [default], nonzero = yes)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetSoundRadius", NULL, "f", "llSetSoundRadius(float radius)\nestablishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llKey2Name", "s", "k", "string llKey2Name(key id)\nReturns the name of the object key, iff the object is in the current simulator, otherwise the empty string")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetTextureAnim", NULL, "iiiifff", "llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)\nAnimate the texture on the specified face/faces")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llTriggerSoundLimited", NULL, "sfvv", "llTriggerSoundLimited(string sound, float volume, vector tne, vector bsw)\nplays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to AABB defined by vectors top-north-east and bottom-south-west")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEjectFromLand", NULL, "k", "llEjectFromLand(key pest)\nEjects pest from land that you own")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llParseString2List", "l", "sll", "list llParseString2List(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llOverMyLand", "i", "k", "integer llOverMyLand(key id)\nReturns TRUE if id is over land owner of object owns, FALSE otherwise")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLandOwnerAt", "k", "v", "key llGetLandOwnerAt(vector pos)\nReturns the key of the land owner, NULL_KEY if public")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llGetNotecardLine", "k", "si", "key llGetNotecardLine(string name, integer line)\nReturns line line of notecard name via the dataserver event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAgentSize", "v", "k", "vector llGetAgentSize(key id)\nIf the agent is in the same sim as the object, returns the size of the avatar")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSameGroup", "i", "k", "integer llSameGroup(key id)\nReturns TRUE if ID is in the same sim and has the same active group, otherwise FALSE")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llUnSit", NULL, "k", "key llUnSit(key id)\nIf agent identified by id is sitting on the object the script is attached to or is over land owned by the objects owner, the agent is forced to stand up")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGroundSlope", "v", "v", "vector llGroundSlope(vector v)\nreturns the ground slope below the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGroundNormal", "v", "v", "vector llGroundNormal(vector v)\nreturns the ground normal below the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGroundContour", "v", "v", "vector llGroundCountour(vector v)\nreturns the ground contour below the object position + v")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAttached", "i", NULL, "integer llGetAttached()\nreturns the object attachment point or 0 if not attached")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetFreeMemory", "i", NULL, "integer llGetFreeMemory()\nreturns the available heap space for the current script")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionName", "s", NULL, "string llGetRegionName()\nreturns the current region name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionTimeDilation", "f", NULL, "float llGetRegionTimeDilation()\nreturns the current time dilation as a float between 0 and 1")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionFPS", "f", NULL, "float llGetRegionFPS()\nreturns the mean region frames per second")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llParticleSystem", NULL, "l", "llParticleSystem(list rules)\nCreates a particle system based on rules. Empty list removes particle system from object.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGroundRepel", NULL, "fif", "llGroundRepel(float height, integer water, float tau)\nCritically 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)")); - addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llGiveInventoryList", NULL, "ksl", "llGiveInventoryList(key destination, string category, list inventory)\nGive inventory to destination in a new category")); + // energy, sleep, dummy_func, name, return type, parameters, gods-only + addFunction(10.f, 0.f, dummy_func, "llSin", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llCos", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llTan", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llAtan2", "f", "ff"); + addFunction(10.f, 0.f, dummy_func, "llSqrt", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llPow", "f", "ff"); + addFunction(10.f, 0.f, dummy_func, "llAbs", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llFabs", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llFrand", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llFloor", "i", "f"); + addFunction(10.f, 0.f, dummy_func, "llCeil", "i", "f"); + addFunction(10.f, 0.f, dummy_func, "llRound", "i", "f"); + addFunction(10.f, 0.f, dummy_func, "llVecMag", "f", "v"); + addFunction(10.f, 0.f, dummy_func, "llVecNorm", "v", "v"); + addFunction(10.f, 0.f, dummy_func, "llVecDist", "f", "vv"); + addFunction(10.f, 0.f, dummy_func, "llRot2Euler", "v", "q"); + addFunction(10.f, 0.f, dummy_func, "llEuler2Rot", "q", "v"); + addFunction(10.f, 0.f, dummy_func, "llAxes2Rot", "q", "vvv"); + addFunction(10.f, 0.f, dummy_func, "llRot2Fwd", "v", "q"); + addFunction(10.f, 0.f, dummy_func, "llRot2Left", "v", "q"); + addFunction(10.f, 0.f, dummy_func, "llRot2Up", "v", "q"); + addFunction(10.f, 0.f, dummy_func, "llRotBetween", "q", "vv"); + addFunction(10.f, 0.f, dummy_func, "llWhisper", NULL, "is"); + addFunction(10.f, 0.f, dummy_func, "llSay", NULL, "is"); + addFunction(10.f, 0.f, dummy_func, "llShout", NULL, "is"); + addFunction(10.f, 0.f, dummy_func, "llListen", "i", "isks"); + addFunction(10.f, 0.f, dummy_func, "llListenControl", NULL, "ii"); + addFunction(10.f, 0.f, dummy_func, "llListenRemove", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llSensor", NULL, "skiff"); + addFunction(10.f, 0.f, dummy_func, "llSensorRepeat", NULL, "skifff"); + addFunction(10.f, 0.f, dummy_func, "llSensorRemove", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llDetectedName", "s", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedKey", "k", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedOwner", "k", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedType", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedPos", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedVel", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedGrab", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedRot", "q", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedGroup", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedLinkNumber", "i", "i"); + addFunction(0.f, 0.f, dummy_func, "llDie", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llGround", "f", "v"); + addFunction(10.f, 0.f, dummy_func, "llCloud", "f", "v"); + addFunction(10.f, 0.f, dummy_func, "llWind", "v", "v"); + addFunction(10.f, 0.f, dummy_func, "llSetStatus", NULL, "ii"); + addFunction(10.f, 0.f, dummy_func, "llGetStatus", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llSetScale", NULL, "v"); + addFunction(10.f, 0.f, dummy_func, "llGetScale", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetColor", NULL, "vi"); + addFunction(10.f, 0.f, dummy_func, "llGetAlpha", "f", "i"); + addFunction(10.f, 0.f, dummy_func, "llSetAlpha", NULL, "fi"); + addFunction(10.f, 0.f, dummy_func, "llGetColor", "v", "i"); + addFunction(10.f, 0.2f, dummy_func, "llSetTexture", NULL, "si"); + addFunction(10.f, 0.2f, dummy_func, "llScaleTexture", NULL, "ffi"); + addFunction(10.f, 0.2f, dummy_func, "llOffsetTexture", NULL, "ffi"); + addFunction(10.f, 0.2f, dummy_func, "llRotateTexture", NULL, "fi"); + addFunction(10.f, 0.f, dummy_func, "llGetTexture", "s", "i"); + addFunction(10.f, 0.2f, dummy_func, "llSetPos", NULL, "v"); + addFunction(10.f, 0.f, dummy_func, "llGetPos", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetLocalPos", "v", NULL); + addFunction(10.f, 0.2f, dummy_func, "llSetRot", NULL, "q"); + addFunction(10.f, 0.f, dummy_func, "llGetRot", "q", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetLocalRot", "q", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetForce", NULL, "vi"); + addFunction(10.f, 0.f, dummy_func, "llGetForce", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llTarget", "i", "vf"); + addFunction(10.f, 0.f, dummy_func, "llTargetRemove", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llRotTarget", "i", "qf"); + addFunction(10.f, 0.f, dummy_func, "llRotTargetRemove", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llMoveToTarget", NULL, "vf"); + addFunction(10.f, 0.f, dummy_func, "llStopMoveToTarget", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llApplyImpulse", NULL, "vi"); + addFunction(10.f, 0.f, dummy_func, "llApplyRotationalImpulse", NULL, "vi"); + addFunction(10.f, 0.f, dummy_func, "llSetTorque", NULL, "vi"); + addFunction(10.f, 0.f, dummy_func, "llGetTorque", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetForceAndTorque", NULL, "vvi"); + addFunction(10.f, 0.f, dummy_func, "llGetVel", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetAccel", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetOmega", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetTimeOfDay", "f", ""); + addFunction(10.f, 0.f, dummy_func, "llGetWallclock", "f", ""); + addFunction(10.f, 0.f, dummy_func, "llGetTime", "f", NULL); + addFunction(10.f, 0.f, dummy_func, "llResetTime", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llGetAndResetTime", "f", NULL); + addFunction(10.f, 0.f, dummy_func, "llSound", NULL, "sfii"); + addFunction(10.f, 0.f, dummy_func, "llPlaySound", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llLoopSound", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llLoopSoundMaster", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llLoopSoundSlave", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llPlaySoundSlave", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llTriggerSound", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llStopSound", NULL, ""); + addFunction(10.f, 1.f, dummy_func, "llPreloadSound", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llGetSubString", "s", "sii"); + addFunction(10.f, 0.f, dummy_func, "llDeleteSubString", "s", "sii"); + addFunction(10.f, 0.f, dummy_func, "llInsertString", "s", "sis"); + addFunction(10.f, 0.f, dummy_func, "llToUpper", "s", "s"); + addFunction(10.f, 0.f, dummy_func, "llToLower", "s", "s"); + addFunction(10.f, 0.f, dummy_func, "llGiveMoney", "i", "ki"); + addFunction(10.f, 0.1f, dummy_func, "llMakeExplosion", NULL, "iffffsv"); + addFunction(10.f, 0.1f, dummy_func, "llMakeFountain", NULL, "iffffisvf"); + addFunction(10.f, 0.1f, dummy_func, "llMakeSmoke", NULL, "iffffsv"); + addFunction(10.f, 0.1f, dummy_func, "llMakeFire", NULL, "iffffsv"); + addFunction(200.f, 0.1f, dummy_func, "llRezObject", NULL, "svvqi"); + addFunction(10.f, 0.f, dummy_func, "llLookAt", NULL, "vff"); + addFunction(10.f, 0.f, dummy_func, "llStopLookAt", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llSetTimerEvent", NULL, "f"); + addFunction(0.f, 0.f, dummy_func, "llSleep", NULL, "f"); + addFunction(10.f, 0.f, dummy_func, "llGetMass", "f", NULL); + addFunction(10.f, 0.f, dummy_func, "llCollisionFilter", NULL, "ski"); + addFunction(10.f, 0.f, dummy_func, "llTakeControls", NULL, "iii"); + addFunction(10.f, 0.f, dummy_func, "llReleaseControls", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llAttachToAvatar", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llDetachFromAvatar", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llTakeCamera", NULL, "k"); + addFunction(10.f, 0.f, dummy_func, "llReleaseCamera", NULL, "k"); + addFunction(10.f, 0.f, dummy_func, "llGetOwner", "k", NULL); + addFunction(10.f, 2.f, dummy_func, "llInstantMessage", NULL, "ks"); + addFunction(10.f, 20.f, dummy_func, "llEmail", NULL, "sss"); + addFunction(10.f, 0.f, dummy_func, "llGetNextEmail", NULL, "ss"); + addFunction(10.f, 0.f, dummy_func, "llGetKey", "k", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetBuoyancy", NULL, "f"); + addFunction(10.f, 0.f, dummy_func, "llSetHoverHeight", NULL, "fif"); + addFunction(10.f, 0.f, dummy_func, "llStopHover", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llMinEventDelay", NULL, "f"); + addFunction(10.f, 0.f, dummy_func, "llSoundPreload", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llRotLookAt", NULL, "qff"); + addFunction(10.f, 0.f, dummy_func, "llStringLength", "i", "s"); + addFunction(10.f, 0.f, dummy_func, "llStartAnimation", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llStopAnimation", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llPointAt", NULL, "v"); + addFunction(10.f, 0.f, dummy_func, "llStopPointAt", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llTargetOmega", NULL, "vff"); + addFunction(10.f, 0.f, dummy_func, "llGetStartParameter", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGodLikeRezObject", NULL, "kv", TRUE); + addFunction(10.f, 0.f, dummy_func, "llRequestPermissions", NULL, "ki"); + addFunction(10.f, 0.f, dummy_func, "llGetPermissionsKey", "k", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetPermissions", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetLinkNumber", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetLinkColor", NULL, "ivi"); + addFunction(10.f, 1.f, dummy_func, "llCreateLink", NULL, "ki"); + addFunction(10.f, 0.f, dummy_func, "llBreakLink", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llBreakAllLinks", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llGetLinkKey", "k", "i"); + addFunction(10.f, 0.f, dummy_func, "llGetLinkName", "s", "i"); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryNumber", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryName", "s", "ii"); + addFunction(10.f, 0.f, dummy_func, "llSetScriptState", NULL, "si"); + addFunction(10.f, 0.f, dummy_func, "llGetEnergy", "f", NULL); + addFunction(10.f, 0.f, dummy_func, "llGiveInventory", NULL, "ks"); + addFunction(10.f, 0.f, dummy_func, "llRemoveInventory", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llSetText", NULL, "svf"); + addFunction(10.f, 0.f, dummy_func, "llWater", "f", "v"); + addFunction(10.f, 0.f, dummy_func, "llPassTouches", NULL, "i"); + addFunction(10.f, 0.1f, dummy_func, "llRequestAgentData", "k", "ki"); + addFunction(10.f, 1.f, dummy_func, "llRequestInventoryData", "k", "s"); + addFunction(10.f, 0.f, dummy_func, "llSetDamage", NULL, "f"); + addFunction(100.f, 5.f, dummy_func, "llTeleportAgentHome", NULL, "k"); + addFunction(10.f, 0.f, dummy_func, "llModifyLand", NULL, "ii"); + addFunction(10.f, 0.f, dummy_func, "llCollisionSound", NULL, "sf"); + addFunction(10.f, 0.f, dummy_func, "llCollisionSprite", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llGetAnimation", "s", "k"); + addFunction(10.f, 0.f, dummy_func, "llResetScript", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llMessageLinked", NULL, "iisk"); + addFunction(10.f, 0.f, dummy_func, "llPushObject", NULL, "kvvi"); + addFunction(10.f, 0.f, dummy_func, "llPassCollisions", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llGetScriptName", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetNumberOfSides", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llAxisAngle2Rot", "q", "vf"); + addFunction(10.f, 0.f, dummy_func, "llRot2Axis", "v", "q"); + addFunction(10.f, 0.f, dummy_func, "llRot2Angle", "f", "q"); + addFunction(10.f, 0.f, dummy_func, "llAcos", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llAsin", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llAngleBetween", "f", "qq"); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryKey", "k", "s"); + addFunction(10.f, 0.f, dummy_func, "llAllowInventoryDrop", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llGetSunDirection", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetTextureOffset", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llGetTextureScale", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llGetTextureRot", "f", "i"); + addFunction(10.f, 0.f, dummy_func, "llSubStringIndex", "i", "ss"); + addFunction(10.f, 0.f, dummy_func, "llGetOwnerKey", "k", "k"); + addFunction(10.f, 0.f, dummy_func, "llGetCenterOfMass", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llListSort", "l", "lii"); + addFunction(10.f, 0.f, dummy_func, "llGetListLength", "i", "l"); + addFunction(10.f, 0.f, dummy_func, "llList2Integer", "i", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2Float", "f", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2String", "s", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2Key", "k", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2Vector", "v", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2Rot", "q", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2List", "l", "lii"); + addFunction(10.f, 0.f, dummy_func, "llDeleteSubList", "l", "lii"); + addFunction(10.f, 0.f, dummy_func, "llGetListEntryType", "i", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2CSV", "s", "l"); + addFunction(10.f, 0.f, dummy_func, "llCSV2List", "l", "s"); + addFunction(10.f, 0.f, dummy_func, "llListRandomize", "l", "li"); + addFunction(10.f, 0.f, dummy_func, "llList2ListStrided", "l", "liii"); + addFunction(10.f, 0.f, dummy_func, "llGetRegionCorner", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llListInsertList", "l", "lli"); + addFunction(10.f, 0.f, dummy_func, "llListFindList", "i", "ll"); + addFunction(10.f, 0.f, dummy_func, "llGetObjectName", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetObjectName", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llGetDate", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llEdgeOfWorld", "i", "vv"); + addFunction(10.f, 0.f, dummy_func, "llGetAgentInfo", "i", "k"); + addFunction(10.f, 0.1f, dummy_func, "llAdjustSoundVolume", NULL, "f"); + addFunction(10.f, 0.f, dummy_func, "llSetSoundQueueing", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llSetSoundRadius", NULL, "f"); + addFunction(10.f, 0.f, dummy_func, "llKey2Name", "s", "k"); + addFunction(10.f, 0.f, dummy_func, "llSetTextureAnim", NULL, "iiiifff"); + addFunction(10.f, 0.f, dummy_func, "llTriggerSoundLimited", NULL, "sfvv"); + addFunction(10.f, 0.f, dummy_func, "llEjectFromLand", NULL, "k"); + addFunction(10.f, 0.f, dummy_func, "llParseString2List", "l", "sll"); + addFunction(10.f, 0.f, dummy_func, "llOverMyLand", "i", "k"); + addFunction(10.f, 0.f, dummy_func, "llGetLandOwnerAt", "k", "v"); + addFunction(10.f, 0.1f, dummy_func, "llGetNotecardLine", "k", "si"); + addFunction(10.f, 0.f, dummy_func, "llGetAgentSize", "v", "k"); + addFunction(10.f, 0.f, dummy_func, "llSameGroup", "i", "k"); + addFunction(10.f, 0.f, dummy_func, "llUnSit", NULL, "k"); + addFunction(10.f, 0.f, dummy_func, "llGroundSlope", "v", "v"); + addFunction(10.f, 0.f, dummy_func, "llGroundNormal", "v", "v"); + addFunction(10.f, 0.f, dummy_func, "llGroundContour", "v", "v"); + addFunction(10.f, 0.f, dummy_func, "llGetAttached", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetFreeMemory", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetRegionName", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetRegionTimeDilation", "f", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetRegionFPS", "f", NULL); + + addFunction(10.f, 0.f, dummy_func, "llParticleSystem", NULL, "l"); + addFunction(10.f, 0.f, dummy_func, "llGroundRepel", NULL, "fif"); + addFunction(10.f, 3.f, dummy_func, "llGiveInventoryList", NULL, "ksl"); // script calls for vehicle action - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetVehicleType", NULL, "i", "llSetVehicleType(integer type)\nsets vehicle to one of the default types")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetVehicleFloatParam", NULL, "if", "llSetVehicleFloatParam(integer param, float value)\nsets the specified vehicle float parameter")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetVehicleVectorParam", NULL, "iv", "llSetVehicleVectorParam(integer param, vector vec)\nsets the specified vehicle vector parameter")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetVehicleRotationParam", NULL, "iq", "llSetVehicleVectorParam(integer param, rotation rot)\nsets the specified vehicle rotation parameter")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetVehicleFlags", NULL, "i", "llSetVehicleFlags(integer flags)\nsets the enabled bits in 'flags'")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRemoveVehicleFlags", NULL, "i", "llRemoveVehicleFlags(integer flags)\nremoves the enabled bits in 'flags'")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSitTarget", NULL, "vq", "llSitTarget(vector offset, rotation rot)\nSet the sit location for this object (if offset == <0,0,0> clear it)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llAvatarOnSitTarget", "k", NULL, "key llAvatarOnSitTarget()\nIf an avatar is sitting on the sit target, return the avatar's key, NULL_KEY otherwise")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llAddToLandPassList", NULL, "kf", "llAddToLandPassList(key avatar, float hours)\nAdd avatar to the land pass list for hours")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetTouchText", NULL, "s", "llSetTouchText(string text)\nDisplays text in pie menu that acts as a touch")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetSitText", NULL, "s", "llSetSitText(string text)\nDisplays text rather than sit in pie menu")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCameraEyeOffset", NULL, "v", "llSetCameraEyeOffset(vector offset)\nSets the camera eye offset used in this object if an avatar sits on it")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCameraAtOffset", NULL, "v", "llSetCameraAtOffset(vector offset)\nSets the camera at offset used in this object if an avatar sits on it")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDumpList2String", "s", "ls", "string llDumpList2String(list src, string separator)\nWrite the list out in a single string using separator between values")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llScriptDanger", "i", "v", "integer llScriptDanger(vector pos)\nReturns true if pos is over public land, sandbox land, land that doesn't allow everyone to edit and build, or land that doesn't allow outside scripts")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llDialog", NULL, "ksli", "llDialog(key avatar, string message, list buttons, integer chat_channel\nShows a dialog box on the avatar's screen with the message.\nUp to 12 strings in the list form buttons.\nIf a button is clicked, the name is chatted on chat_channel.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llVolumeDetect", NULL, "i", "llVolumeDetect(integer detect)\nIf detect = TRUE, object becomes phantom but triggers collision_start and collision_end events\nwhen other objects start and stop interpenetrating.\nMust be applied to the root object.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llResetOtherScript", NULL, "s", "llResetOtherScript(string name)\nResets script name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetScriptState", "i", "s", "integer llGetScriptState(string name)\nResets TRUE if script name is running")); - addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteLoadScript", NULL, "ksii", "Deprecated. Please use llRemoteLoadScriptPin instead.")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetRemoteScriptAccessPin", NULL, "i", "llSetRemoteScriptAccessPin(integer pin)\nIf pin is set to a non-zero number, the task will accept remote script\nloads via llRemoteLoadScriptPin if it passes in the correct pin.\nOthersise, llRemoteLoadScriptPin is ignored.")); - addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteLoadScriptPin", NULL, "ksiii", "llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)\nIf the owner of the object this script is attached can modify target,\nthey are in the same region,\nand the matching pin is used,\ncopy script name onto target,\nif running == TRUE, start the script with param.")); + addFunction(10.f, 0.f, dummy_func, "llSetVehicleType", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llSetVehicleFloatParam", NULL, "if"); + addFunction(10.f, 0.f, dummy_func, "llSetVehicleVectorParam", NULL, "iv"); + addFunction(10.f, 0.f, dummy_func, "llSetVehicleRotationParam", NULL, "iq"); + addFunction(10.f, 0.f, dummy_func, "llSetVehicleFlags", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llRemoveVehicleFlags", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llSitTarget", NULL, "vq"); + addFunction(10.f, 0.f, dummy_func, "llAvatarOnSitTarget", "k", NULL); + addFunction(10.f, 0.1f, dummy_func, "llAddToLandPassList", NULL, "kf"); + addFunction(10.f, 0.f, dummy_func, "llSetTouchText", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llSetSitText", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llSetCameraEyeOffset", NULL, "v"); + addFunction(10.f, 0.f, dummy_func, "llSetCameraAtOffset", NULL, "v"); + + addFunction(10.f, 0.f, dummy_func, "llDumpList2String", "s", "ls"); + addFunction(10.f, 0.f, dummy_func, "llScriptDanger", "i", "v"); + addFunction(10.f, 1.f, dummy_func, "llDialog", NULL, "ksli"); + addFunction(10.f, 0.f, dummy_func, "llVolumeDetect", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llResetOtherScript", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llGetScriptState", "i", "s"); + addFunction(10.f, 3.f, dummy_func, "llRemoteLoadScript", NULL, "ksii"); + + addFunction(10.f, 0.2f, dummy_func, "llSetRemoteScriptAccessPin", NULL, "i"); + addFunction(10.f, 3.f, dummy_func, "llRemoteLoadScriptPin", NULL, "ksiii"); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llOpenRemoteDataChannel", NULL, NULL, "llOpenRemoteDataChannel()\nCreates a channel to listen for XML-RPC calls. Will trigger a remote_data event with channel id once it is available.")); - addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llSendRemoteData", "k", "ksis", "key llSendRemoteData(key channel, string dest, integer idata, string sdata)\nSend an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.\nA message identifier key is returned.\nAn XML-RPC reply will trigger a remote_data event and reference the message id.\nThe message_id is returned.")); - addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteDataReply", NULL, "kksi", "llRemoteDataReply(key channel, key message_id, string sdata, integer idata)\nSend an XML-RPC reply to message_id on channel with payload of string sdata and integer idata")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llCloseRemoteDataChannel", NULL, "k", "llCloseRemoteDataChannel(key channel)\nCloses XML-RPC channel.")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMD5String", "s", "si", "string llMD5String(string src, integer nonce)\nPerforms a RSA Data Security, Inc. MD5 Message-Digest Algorithm on string with nonce. Returns a 32 character hex string.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetPrimitiveParams", NULL, "l", "llSetPrimitiveParams(list rules)\nSet primitive parameters based on rules.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringToBase64", "s", "s", "string llStringToBase64(string str)\nConverts a string to the Base 64 representation of the string.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llBase64ToString", "s", "s", "string llBase64ToString(string str)\nConverts a Base 64 string to a conventional string. If the conversion creates any unprintable characters, they are converted to spaces.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.3f, dummy_func, "llXorBase64Strings", "s", "ss", "string llXorBase64Strings(string s1, string s2)\nDEPRECATED! Please use llXorBase64StringsCorrect instead!! Incorrectly performs an exclusive or on two Base 64 strings and returns a Base 64 string. s2 repeats if it is shorter than s1. Retained for backwards compatability.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRemoteDataSetRegion", NULL, NULL, "llRemoteDataSetRegion()\nIf an object using remote data channels changes regions, you must call this function to reregister the remote data channels.\nYou do not need to make this call if you don't change regions.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLog10", "f", "f", "float llLog10(float val)\nReturns the base 10 log of val if val > 0, otherwise returns 0.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLog", "f", "f", "float llLog(float val)\nReturns the base e log of val if val > 0, otherwise returns 0.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAnimationList", "l", "k", "list llGetAnimationList(key id)\nGets a list of all playing animations for avatar id")); - addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llSetParcelMusicURL", NULL, "s", "llSetParcelMusicURL(string url)\nSets the streaming audio URL for the parcel object is on")); + addFunction(10.f, 1.f, dummy_func, "llOpenRemoteDataChannel", NULL, NULL); + addFunction(10.f, 3.f, dummy_func, "llSendRemoteData", "k", "ksis"); + addFunction(10.f, 3.f, dummy_func, "llRemoteDataReply", NULL, "kksi"); + addFunction(10.f, 1.f, dummy_func, "llCloseRemoteDataChannel", NULL, "k"); + + addFunction(10.f, 0.f, dummy_func, "llMD5String", "s", "si"); + addFunction(10.f, 0.2f, dummy_func, "llSetPrimitiveParams", NULL, "l"); + addFunction(10.f, 0.f, dummy_func, "llStringToBase64", "s", "s"); + addFunction(10.f, 0.f, dummy_func, "llBase64ToString", "s", "s"); + addFunction(10.f, 0.3f, dummy_func, "llXorBase64Strings", "s", "ss"); + addFunction(10.f, 0.f, dummy_func, "llRemoteDataSetRegion", NULL, NULL); + addFunction(10.f, 0.f, dummy_func, "llLog10", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llLog", "f", "f"); + addFunction(10.f, 0.f, dummy_func, "llGetAnimationList", "l", "k"); + addFunction(10.f, 2.f, dummy_func, "llSetParcelMusicURL", NULL, "s"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootPosition", "v", NULL, "vector llGetRootPosition()\nGets the global position of the root object of the object script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootRotation", "q", NULL, "rotation llGetRootRotation()\nGets the global rotation of the root object of the object script is attached to")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectDesc", "s", NULL, "string llGetObjectDesc()\nReturns the description of the object the script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetObjectDesc", NULL, "s", "llSetObjectDesc(string name)\nSets the object's description")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCreator", "k", NULL, "key llGetCreator()\nReturns the creator of the object")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetTimestamp", "s", NULL, "string llGetTimestamp()\nGets the timestamp in the format: YYYY-MM-DDThh:mm:ss.ff..fZ")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetLinkAlpha", NULL, "ifi", "llSetLinkAlpha(integer linknumber, float alpha, integer face)\nIf a prim exists in the link chain at linknumber, set face to alpha")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetNumberOfPrims", "i", NULL, "integer llGetNumberOfPrims()\nReturns the number of prims in a link set the script is attached to")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llGetNumberOfNotecardLines", "k", "s", "key llGetNumberOfNotecardLines(string name)\nReturns number of lines in notecard 'name' via the dataserver event (cast return value to integer)")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetBoundingBox", "l", "k", "list llGetBoundingBox(key object)\nReturns the bounding box around an object (including any linked prims) relative to the root prim, in a list: [ (vector) min_corner, (vector) max_corner ]")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetGeometricCenter", "v", NULL, "vector llGetGeometricCenter()\nReturns the geometric center of the linked set the script is attached to.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llGetPrimitiveParams", "l", "l", "list llGetPrimitiveParams(list params)\nGets primitive parameters specified in the params list.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.0f, dummy_func, "llIntegerToBase64", "s", "i", "string llIntegerToBase64(integer number)\nBig endian encode of of integer as a Base64 string.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.0f, dummy_func, "llBase64ToInteger", "i", "s", "integer llBase64ToInteger(string str)\nBig endian decode of a Base64 string into an integer.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetGMTclock", "f", "", "float llGetGMTclock()\nGets the time in seconds since midnight in GMT")); - addFunction(new LLScriptLibraryFunction(10.f, 10.f, dummy_func, "llGetSimulatorHostname", "s", "", "string llGetSimulatorHostname()\nGets the hostname of the machine script is running on (same as string in viewer Help dialog)")); + addFunction(10.f, 0.f, dummy_func, "llGetRootPosition", "v", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetRootRotation", "q", NULL); + + addFunction(10.f, 0.f, dummy_func, "llGetObjectDesc", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetObjectDesc", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llGetCreator", "k", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetTimestamp", "s", NULL); + addFunction(10.f, 0.f, dummy_func, "llSetLinkAlpha", NULL, "ifi"); + addFunction(10.f, 0.f, dummy_func, "llGetNumberOfPrims", "i", NULL); + addFunction(10.f, 0.1f, dummy_func, "llGetNumberOfNotecardLines", "k", "s"); + + addFunction(10.f, 0.f, dummy_func, "llGetBoundingBox", "l", "k"); + addFunction(10.f, 0.f, dummy_func, "llGetGeometricCenter", "v", NULL); + addFunction(10.f, 0.2f, dummy_func, "llGetPrimitiveParams", "l", "l"); + addFunction(10.f, 0.0f, dummy_func, "llIntegerToBase64", "s", "i"); + addFunction(10.f, 0.0f, dummy_func, "llBase64ToInteger", "i", "s"); + addFunction(10.f, 0.f, dummy_func, "llGetGMTclock", "f", ""); + addFunction(10.f, 10.f, dummy_func, "llGetSimulatorHostname", "s", ""); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLocalRot", NULL, "q", "llSetLocalRot(rotation rot)\nsets the rotation of a child prim relative to the root prim")); + addFunction(10.f, 0.2f, dummy_func, "llSetLocalRot", NULL, "q"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llParseStringKeepNulls", "l", "sll", "list llParseStringKeepNulls(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each), keeping any null values generated.")); - addFunction(new LLScriptLibraryFunction(200.f, 0.1f, dummy_func, "llRezAtRoot", NULL, "svvqi", "llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param)\nInstantiate owner's inventory object at pos with velocity vel and rotation rot with start parameter param.\nThe last selected root object's location will be set to pos")); + addFunction(10.f, 0.f, dummy_func, "llParseStringKeepNulls", "l", "sll"); + addFunction(200.f, 0.1f, dummy_func, "llRezAtRoot", NULL, "svvqi"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectPermMask", "i", "i", "integer llGetObjectPermMask(integer mask)\nReturns the requested permission mask for the root object the task is attached to.", FALSE)); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetObjectPermMask", NULL, "ii", "llSetObjectPermMask(integer mask, integer value)\nSets the given permission mask to the new value on the root object the task is attached to.", TRUE)); + addFunction(10.f, 0.f, dummy_func, "llGetObjectPermMask", "i", "i", FALSE); + addFunction(10.f, 0.f, dummy_func, "llSetObjectPermMask", NULL, "ii", TRUE); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryPermMask", "i", "si", "integer llGetInventoryPermMask(string item, integer mask)\nReturns the requested permission mask for the inventory item.", FALSE)); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetInventoryPermMask", NULL, "sii", "llSetInventoryPermMask(string item, integer mask, integer value)\nSets the given permission mask to the new value on the inventory item.", TRUE)); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryCreator", "k", "s", "key llGetInventoryCreator(string item)\nReturns the key for the creator of the inventory item.", FALSE)); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llOwnerSay", NULL, "s", "llOwnerSay(string msg)\nsays msg to owner only (if owner in sim)")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llRequestSimulatorData", "k", "si", "key llRequestSimulatorData(string simulator, integer data)\nRequests data about simulator. When data is available the dataserver event will be raised")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llForceMouselook", NULL, "i", "llForceMouselook(integer mouselook)\nIf mouselook is TRUE any avatar that sits on this object is forced into mouselook mode")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectMass", "f", "k", "float llGetObjectMass(key id)\nGet the mass of the object with key id")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListReplaceList", "l", "llii", "list llListReplaceList(list dest, list src, integer start, integer end)\nReplaces start through end of dest with src.")); - addFunction(new LLScriptLibraryFunction(10.f, 10.f, dummy_func, "llLoadURL", NULL, "kss", "llLoadURL(key avatar_id, string message, string url)\nShows dialog to avatar avatar_id offering to load web page at URL. If user clicks yes, launches their web browser.")); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryPermMask", "i", "si", FALSE); + addFunction(10.f, 0.f, dummy_func, "llSetInventoryPermMask", NULL, "sii", TRUE); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryCreator", "k", "s", FALSE); + addFunction(10.f, 0.f, dummy_func, "llOwnerSay", NULL, "s"); + addFunction(10.f, 1.f, dummy_func, "llRequestSimulatorData", "k", "si"); + addFunction(10.f, 0.f, dummy_func, "llForceMouselook", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llGetObjectMass", "f", "k"); + addFunction(10.f, 0.f, dummy_func, "llListReplaceList", "l", "llii"); + addFunction(10.f, 10.f, dummy_func, "llLoadURL", NULL, "kss"); - addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llParcelMediaCommandList", NULL, "l", "llParcelMediaCommandList(list command)\nSends a list of commands, some with arguments, to a parcel.")); - addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llParcelMediaQuery", "l", "l", "list llParcelMediaQuery(list query)\nSends a list of queries, returns a list of results.")); + addFunction(10.f, 2.f, dummy_func, "llParcelMediaCommandList", NULL, "l"); + addFunction(10.f, 2.f, dummy_func, "llParcelMediaQuery", "l", "l"); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llModPow", "i", "iii", "integer llModPow(integer a, integer b, integer c)\nReturns a raised to the b power, mod c. ( (a**b)%c ). b is capped at 0xFFFF (16 bits).")); + addFunction(10.f, 1.f, dummy_func, "llModPow", "i", "iii"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryType", "i", "s", "integer llGetInventoryType(string name)\nReturns the type of the inventory name")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetPayPrice", NULL, "il", "llSetPayPrice(integer price, list quick_pay_buttons)\nSets the default amount when someone chooses to pay this object.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraPos", "v", "", "vector llGetCameraPos()\nGets current camera position for agent task has permissions for.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraRot", "q", "", "rotation llGetCameraRot()\nGets current camera orientation for agent task has permissions for.")); + addFunction(10.f, 0.f, dummy_func, "llGetInventoryType", "i", "s"); + addFunction(10.f, 0.f, dummy_func, "llSetPayPrice", NULL, "il"); + addFunction(10.f, 0.f, dummy_func, "llGetCameraPos", "v", ""); + addFunction(10.f, 0.f, dummy_func, "llGetCameraRot", "q", ""); - addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llSetPrimURL", NULL, "s", "llSetPrimURL(string url)\nUpdates the URL for the web page shown on the sides of the object.")); - addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llRefreshPrimURL", NULL, "", "llRefreshPrimURL()\nReloads the web page shown on the sides of the object.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEscapeURL", "s", "s", "string llEscapeURL(string url)\nReturns and escaped/encoded version of url, replacing spaces with %20 etc.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llUnescapeURL", "s", "s", "string llUnescapeURL(string url)\nReturns and unescaped/unencoded version of url, replacing %20 with spaces etc.")); - - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llMapDestination", NULL, "svv", "llMapDestination(string simname, vector pos, vector look_at)\nOpens world map centered on region with pos highlighted.\nOnly works for scripts attached to avatar, or during touch events.\n(NOTE: look_at currently does nothing)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llAddToLandBanList", NULL, "kf", "llAddToLandBanList(key avatar, float hours)\nAdd avatar to the land ban list for hours")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandPassList", NULL, "k", "llRemoveFromLandPassList(key avatar)\nRemove avatar from the land pass list")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandBanList", NULL, "k", "llRemoveFromLandBanList(key avatar)\nRemove avatar from the land ban list")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCameraParams", NULL, "l", "llSetCameraParams(list rules)\nSets multiple camera parameters at once.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llClearCameraParams", NULL, NULL, "llClearCameraParams()\nResets all camera parameters to default values and turns off scripted camera control.")); + addFunction(10.f, 20.f, dummy_func, "llSetPrimURL", NULL, "s"); + addFunction(10.f, 20.f, dummy_func, "llRefreshPrimURL", NULL, ""); + addFunction(10.f, 0.f, dummy_func, "llEscapeURL", "s", "s"); + addFunction(10.f, 0.f, dummy_func, "llUnescapeURL", "s", "s"); + + addFunction(10.f, 1.f, dummy_func, "llMapDestination", NULL, "svv"); + addFunction(10.f, 0.1f, dummy_func, "llAddToLandBanList", NULL, "kf"); + addFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandPassList", NULL, "k"); + addFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandBanList", NULL, "k"); + + addFunction(10.f, 0.f, dummy_func, "llSetCameraParams", NULL, "l"); + addFunction(10.f, 0.f, dummy_func, "llClearCameraParams", NULL, NULL); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListStatistics", "f", "il", "float llListStatistics(integer operation, list l)\nPerform statistical aggregate functions on list l using LIST_STAT_* operations.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetUnixTime", "i", NULL, "integer llGetUnixTime()\nGet the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelFlags", "i", "v", "integer llGetParcelFlags(vector pos)\nGet the parcel flags (PARCEL_FLAG_*) for the parcel including the point pos.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionFlags", "i", NULL, "integer llGetRegionFlags()\nGet the region flags (REGION_FLAG_*) for the region the object is in.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llXorBase64StringsCorrect", "s", "ss", "string llXorBase64StringsCorrect(string s1, string s2)\nCorrectly performs an exclusive or on two Base 64 strings and returns a Base 64 string. s2 repeats if it is shorter than s1.")); + addFunction(10.f, 0.f, dummy_func, "llListStatistics", "f", "il"); + addFunction(10.f, 0.f, dummy_func, "llGetUnixTime", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetParcelFlags", "i", "v"); + addFunction(10.f, 0.f, dummy_func, "llGetRegionFlags", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llXorBase64StringsCorrect", "s", "ss"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llHTTPRequest", "k", "sls", "llHTTPRequest(string url, list parameters, string body)\nSend an HTTP request.")); + addFunction(10.f, 0.f, dummy_func, "llHTTPRequest", "k", "sls"); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llResetLandBanList", NULL, NULL, "llResetLandBanList()\nRemoves all residents from the land ban list.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.1f, dummy_func, "llResetLandPassList", NULL, NULL, "llResetLandPassList()\nRemoves all residents from the land access/pass list.")); + addFunction(10.f, 0.1f, dummy_func, "llResetLandBanList", NULL, NULL); + addFunction(10.f, 0.1f, dummy_func, "llResetLandPassList", NULL, NULL); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectPrimCount", "i", "k", "integer llGetObjectPrimCount(key object_id)\nReturns the total number of prims for an object.")); - addFunction(new LLScriptLibraryFunction(10.f, 2.0f, dummy_func, "llGetParcelPrimOwners", "l", "v", "list llGetParcelPrimOwners(vector pos)\nReturns a list of all residents who own objects on the parcel and the number of objects they own.\nRequires owner-like permissions for the parcel.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelPrimCount", "i", "vii","integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)\nGets the number of prims on the parcel of the given category.\nCategories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelMaxPrims", "i", "vi","integer llGetParcelMaxPrims(vector pos, integer sim_wide)\nGets the maximum number of prims allowed on the parcel at pos.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelDetails", "l", "vl","list llGetParcelDetails(vector pos, list params)\nGets the parcel details specified in params for the parcel at pos.\nParams is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA")); + addFunction(10.f, 0.f, dummy_func, "llGetObjectPrimCount", "i", "k"); + addFunction(10.f, 2.0f, dummy_func, "llGetParcelPrimOwners", "l", "v"); + addFunction(10.f, 0.f, dummy_func, "llGetParcelPrimCount", "i", "vii"); + addFunction(10.f, 0.f, dummy_func, "llGetParcelMaxPrims", "i", "vi"); + addFunction(10.f, 0.f, dummy_func, "llGetParcelDetails", "l", "vl"); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il", "llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi", "llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos")); + addFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il"); + addFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi"); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si", "string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is", "llRegionSay(integer channel, string msg)\nbroadcasts msg to entire region on channel (not 0.)")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectDetails", "l", "kl", "list llGetObjectDetails(key id, list params)\nGets the object details specified in params for the object with key id.\nDetails are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetClickAction", NULL, "i", "llSetClickAction(integer action)\nSets the action performed when a prim is clicked upon.")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRegionAgentCount", "i", NULL, "int llGetRegionAgentCount()\nreturns the number of agents in a region")); - addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llTextBox", NULL, "ksi", "llTextBox(key avatar, string message, integer chat_channel\nShows a dialog box on the avatar's screen with the message.\nA text box asks for input, and if entered the text is chatted on chat_channel.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAgentLanguage", "s", "k", "string llGetAgentLanguage(key id)\nGets the agents preferred language..")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchUV", "v", "i", "vector llDetectedTouchUV(integer number)\nreturns the u and v coordinates in the first two components of a vector, for a triggered touch event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchFace", "i", "i", "integer llDetectedTouchFace(integer number)\nreturns the index of the face on the object for a triggered touch event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchPos", "v", "i", "vector llDetectedTouchPos(integer number)\nreturns the position touched for a triggered touch event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchNormal", "v", "i", "vector llDetectedTouchNormal(integer number)\nreturns the surface normal for a triggered touch event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchBinormal", "v", "i", "vector llDetectedTouchBinormal(integer number)\nreturns the surface binormal for a triggered touch event")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llDetectedTouchST", "v", "i", "vector llDetectedTouchST(integer number)\nreturns the s and t coordinates in the first two components of a vector, for a triggered touch event")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSHA1String", "s", "s", "string llSHA1String(string sr)\nPerforms a SHA1 security Hash. Returns a 40 character hex string.")); - - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetFreeURLs", "i", NULL, "integer llGetFreeURLs()\nreturns the available urls for the current script")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRequestURL", "k", NULL, "key llRequestURL()\nRequests one HTTP:// url for use by this object\nTriggers an http_server event with results.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRequestSecureURL", "k", NULL, "key llRequestSecureURL()\nRequests one HTTPS:// (SSL) url for use by this object\nTriggers an http_server event with results.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llReleaseURL", NULL, "s", "llReleaseURL(string url)\nReleases the specified URL, it will no longer be usable.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llHTTPResponse", NULL, "kis", "llHTTPResponse(key id, integer status, string body)\nResponds to request id with status and body.")); - addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetHTTPHeader", "s", "ks", "string llGetHTTPHeader(key id, string header)\nGet the value for header for request id.")); - - // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only + addFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si"); + addFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is"); + addFunction(10.f, 0.f, dummy_func, "llGetObjectDetails", "l", "kl"); + addFunction(10.f, 0.f, dummy_func, "llSetClickAction", NULL, "i"); + + addFunction(10.f, 0.f, dummy_func, "llGetRegionAgentCount", "i", NULL); + addFunction(10.f, 1.f, dummy_func, "llTextBox", NULL, "ksi"); + addFunction(10.f, 0.f, dummy_func, "llGetAgentLanguage", "s", "k"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchUV", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchFace", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchPos", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchNormal", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchBinormal", "v", "i"); + addFunction(10.f, 0.f, dummy_func, "llDetectedTouchST", "v", "i"); + + addFunction(10.f, 0.f, dummy_func, "llSHA1String", "s", "s"); + + addFunction(10.f, 0.f, dummy_func, "llGetFreeURLs", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llRequestURL", "k", NULL); + addFunction(10.f, 0.f, dummy_func, "llRequestSecureURL", "k", NULL); + addFunction(10.f, 0.f, dummy_func, "llReleaseURL", NULL, "s"); + addFunction(10.f, 0.f, dummy_func, "llHTTPResponse", NULL, "kis"); + addFunction(10.f, 0.f, dummy_func, "llGetHTTPHeader", "s", "ks"); + + // energy, sleep, dummy_func, name, return type, parameters, gods-only // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST. // Otherwise the bytecode numbers for each call will be wrong, and all // existing scripts will crash. } -LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, const char *desc, BOOL god_only) +LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only) : mEnergyUse(eu), mSleepTime(st), mExecFunc(exec_func), mName(name), mReturnType(ret_type), mArgs(args), mGodOnly(god_only) { - char *mDesc_ = new char[512]; - if (mSleepTime) - { - snprintf( /* Flawfinder: ignore */ - mDesc_, - 512, - "%s\nSleeps script for %.1f seconds.", - desc, - mSleepTime); - } - else - { - strncpy(mDesc_, desc, 512); /* Flawfinder: ignore */ - mDesc_[511] = '\0'; // just in case. - } - mDesc = mDesc_; } LLScriptLibraryFunction::~LLScriptLibraryFunction() { - delete [] mDesc; } -void LLScriptLibrary::addFunction(LLScriptLibraryFunction *func) +void LLScriptLibrary::addFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only) { - LLScriptLibraryFunction **temp = new LLScriptLibraryFunction*[mNextNumber + 1]; - if (mNextNumber) - { - memcpy( /* Flawfinder: ignore */ - temp, - mFunctions, - sizeof(LLScriptLibraryFunction*)*mNextNumber); - delete [] mFunctions; - } - mFunctions = temp; - mFunctions[mNextNumber] = func; - mNextNumber++; + LLScriptLibraryFunction func(eu, st, exec_func, name, ret_type, args, god_only); + mFunctions.push_back(func); } void LLScriptLibrary::assignExec(const char *name, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &)) { - S32 i; - for (i = 0; i < mNextNumber; i++) + for (std::vector<LLScriptLibraryFunction>::iterator i = mFunctions.begin(); + i != mFunctions.end(); ++i) { - if (!strcmp(name, mFunctions[i]->mName)) + if (!strcmp(name, i->mName)) { - mFunctions[i]->mExecFunc = exec_func; + i->mExecFunc = exec_func; + return; } } + + llerrs << "Unknown LSL function in assignExec: " << name << llendl; } void LLScriptLibData::print(std::ostream &s, BOOL b_prepend_comma) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 76c1d699f6..de4f7ab091 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1379,10 +1379,6 @@ bool LLAppViewer::cleanup() std::string warnings_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Warnings")); gWarningSettings.saveToFile(warnings_settings_filename, TRUE); - gSavedSettings.cleanup(); - LLUIColorTable::instance().clear(); - gCrashSettings.cleanup(); - // Save URL history file LLURLHistory::saveFile("url_history.xml"); @@ -1485,6 +1481,10 @@ bool LLAppViewer::cleanup() gStaticVFS = NULL; delete gVFS; gVFS = NULL; + + gSavedSettings.cleanup(); + LLUIColorTable::instance().clear(); + gCrashSettings.cleanup(); LLWatchdog::getInstance()->cleanup(); diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 6c73638475..b256914d29 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -85,12 +85,10 @@ #include "lluictrlfactory.h" #include "llmediactrl.h" #include "lluictrlfactory.h" - +#include "lltrans.h" #include "llviewercontrol.h" #include "llappviewer.h" - #include "llpanelinventory.h" -#include "lltrans.h" const std::string HELLO_LSL = "default\n" @@ -250,10 +248,20 @@ void LLFloaterScriptSearch::handleBtnReplaceAll() mEditorCore->mEditor->replaceTextAll(childGetText("search_text"), childGetText("replace_text"), caseChk->get()); } + + /// --------------------------------------------------------------------------- /// LLScriptEdCore /// --------------------------------------------------------------------------- +struct LLSECKeywordCompare +{ + bool operator()(const std::string& lhs, const std::string& rhs) + { + return (LLStringUtil::compareDictInsensitive( lhs, rhs ) < 0 ); + } +}; + LLScriptEdCore::LLScriptEdCore( const std::string& sample, const std::string& help_url, @@ -286,34 +294,71 @@ LLScriptEdCore::LLScriptEdCore( std::vector<std::string> funcs; std::vector<std::string> tooltips; - for (S32 i = 0; i < gScriptLibrary.mNextNumber; i++) + for (std::vector<LLScriptLibraryFunction>::const_iterator i = gScriptLibrary.mFunctions.begin(); + i != gScriptLibrary.mFunctions.end(); ++i) { // Make sure this isn't a god only function, or the agent is a god. - if (!gScriptLibrary.mFunctions[i]->mGodOnly || gAgent.isGodlike()) + if (!i->mGodOnly || gAgent.isGodlike()) { - funcs.push_back(ll_safe_string(gScriptLibrary.mFunctions[i]->mName)); - tooltips.push_back(ll_safe_string(gScriptLibrary.mFunctions[i]->mDesc)); + std::string name = i->mName; + funcs.push_back(name); + + std::string desc_name = "LSLTipText_"; + desc_name += name; + std::string desc = LLTrans::getString(desc_name); + + F32 sleep_time = i->mSleepTime; + if( sleep_time ) + { + desc += "\n"; + + LLStringUtil::format_map_t args; + args["[SLEEP_TIME]"] = llformat("%.1f", sleep_time ); + desc += LLTrans::getString("LSLTipSleepTime", args); + } + + // A \n linefeed is not part of xml. Let's add one to keep all + // the tips one-per-line in strings.xml + LLStringUtil::replaceString( desc, "\\n", "\n" ); + + tooltips.push_back(desc); } } + LLColor3 color(0.5f, 0.0f, 0.15f); - mEditor->loadKeywords(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"keywords.ini"), funcs, tooltips, color); - + std::vector<std::string> primary_keywords; + std::vector<std::string> secondary_keywords; LLKeywordToken *token; LLKeywords::keyword_iterator_t token_it; for (token_it = mEditor->keywordsBegin(); token_it != mEditor->keywordsEnd(); ++token_it) { token = token_it->second; - if (token->getColor() == color) - mFunctions->add(wstring_to_utf8str(token->getToken())); + if (token->getColor() == color) // Wow, what a disgusting hack. + { + primary_keywords.push_back( wstring_to_utf8str(token->getToken()) ); + } + else + { + secondary_keywords.push_back( wstring_to_utf8str(token->getToken()) ); + } } - for (token_it = mEditor->keywordsBegin(); token_it != mEditor->keywordsEnd(); ++token_it) + // Case-insensitive dictionary sort for primary keywords. We don't sort the secondary + // keywords. They're intelligently grouped in keywords.ini. + std::stable_sort( primary_keywords.begin(), primary_keywords.end(), LLSECKeywordCompare() ); + + for (std::vector<std::string>::const_iterator iter= primary_keywords.begin(); + iter!= primary_keywords.end(); ++iter) { - token = token_it->second; - if (token->getColor() != color) - mFunctions->add(wstring_to_utf8str(token->getToken())); + mFunctions->add(*iter); + } + + for (std::vector<std::string>::const_iterator iter= secondary_keywords.begin(); + iter!= secondary_keywords.end(); ++iter) + { + mFunctions->add(*iter); } } diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 0296327378..8bf7364714 100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -86,7 +86,6 @@ #include "llendianswizzle.h" #include "llerror.h" #include "llfasttimer.h" -#include "llfixedbuffer.h" #include "llframetimer.h" #include "llhash.h" #include "lllocalidhashmap.h" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 27b34d16a8..4c9b1897d5 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -286,7 +286,361 @@ <string name="compressed_image_files">Compressed Images</string> <string name="load_files">Load Files</string> <string name="choose_the_directory">Choose Directory</string> - + + <!-- LSL Usage Hover Tips --> + <string name="LSLTipSleepTime">Sleeps script for [SLEEP_TIME] seconds.</string> + + <string name="LSLTipText_llSin">float llSin(float theta)\ntheta in radians</string> + <string name="LSLTipText_llCos">float llCos(float theta)\ntheta in radians</string> + <string name="LSLTipText_llTan">float llTan(float theta)\ntheta radians</string> + <string name="LSLTipText_llAtan2">float llAtan2(float y, float x)</string> + <string name="LSLTipText_llSqrt">float llSqrt(float val)\nreturns 0 and triggers a Math Error for imaginary results</string> + <string name="LSLTipText_llPow">float llPow(float base, float exponent)\nreturns 0 and triggers Math Error for imaginary results</string> + <string name="LSLTipText_llAbs">integer llAbs(integer val)</string> + <string name="LSLTipText_llFabs">float llFabs(float val)</string> + <string name="LSLTipText_llFrand">float llFrand(float mag)\nreturns random number in range [0,mag)</string> + <string name="LSLTipText_llFloor">integer llFloor(float val)\nreturns largest integer value <= val</string> + <string name="LSLTipText_llCeil">integer llCeil(float val)\nreturns smallest integer value >= val</string> + <string name="LSLTipText_llRound">integer llRound(float val)\nreturns val rounded to the nearest integer</string> + <string name="LSLTipText_llVecMag">float llVecMag(vector v)\nreturns the magnitude of v</string> + <string name="LSLTipText_llVecNorm">vector llVecNorm(vector v)\nreturns the v normalized</string> + <string name="LSLTipText_llVecDist">float llVecDist(vector v1, vector v2)\nreturns the 3D distance between v1 and v2</string> + <string name="LSLTipText_llRot2Euler">vector llRot2Euler(rotation q)\nreturns the Euler representation (roll, pitch, yaw) of q</string> + <string name="LSLTipText_llEuler2Rot">rotation llEuler2Rot(vector v)\nreturns the rotation representation of Euler Angles v</string> + <string name="LSLTipText_llAxes2Rot">rotation llAxes2Rot(vector fwd, vector left, vector up)\nreturns the rotation defined by the coordinate axes</string> + <string name="LSLTipText_llRot2Fwd">vector llRot2Fwd(rotation q)\nreturns the forward vector defined by q</string> + <string name="LSLTipText_llRot2Left">vector llRot2Left(rotation q)\nreturns the left vector defined by q</string> + <string name="LSLTipText_llRot2Up">vector llRot2Up(rotation q)\nreturns the up vector defined by q</string> + <string name="LSLTipText_llRotBetween">rotation llRotBetween(vector v1, vector v2)\nreturns the rotation to rotate v1 to v2</string> + <string name="LSLTipText_llWhisper">llWhisper(integer channel, string msg)\nwhispers msg on channel</string> + <string name="LSLTipText_llSay">llSay(integer channel, string msg)\nsays msg on channel</string> + <string name="LSLTipText_llShout">llShout(integer channel, string msg)\nshouts msg on channel</string> + <string name="LSLTipText_llListen">integer llListen(integer channel, string name, key id, string msg)\nsets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen</string> + <string name="LSLTipText_llListenControl">llListenControl(integer number, integer active)\nmakes a listen event callback active or inactive</string> + <string name="LSLTipText_llListenRemove">llListenRemove(integer number)\nremoves listen event callback number</string> + <string name="LSLTipText_llSensor">llSensor(string name, key id, integer type, float range, float arc)\nPerforms a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0)</string> + <string name="LSLTipText_llSensorRepeat">llSensorRepeat(string name, key id, integer type, float range, float arc, float rate)\nsets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds</string> + <string name="LSLTipText_llSensorRemove">llSensorRemove()\nremoves sensor</string> + <string name="LSLTipText_llDetectedName">string llDetectedName(integer number)\nreturns the name of detected object number (returns empty string if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedKey">key llDetectedKey(integer number)\nreturns the key of detected object number (returns empty key if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedOwner">key llDetectedOwner(integer number)\nreturns the key of detected object's owner (returns empty key if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedType">integer llDetectedType(integer number)\nreturns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedPos">vector llDetectedPos(integer number)\nreturns the position of detected object number (returns <0,0,0> if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedVel">vector llDetectedVel(integer number)\nreturns the velocity of detected object number (returns <0,0,0> if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedGrab">vector llDetectedGrab(integer number)\nreturns the grab offset of the user touching object (returns <0,0,0> if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedRot">rotation llDetectedRot(integer number)\nreturns the rotation of detected object number (returns <0,0,0,1> if number is not valid sensed object)</string> + <string name="LSLTipText_llDetectedGroup">integer llDetectedGroup(integer number)\nReturns TRUE if detected object is part of same group as owner</string> + <string name="LSLTipText_llDetectedLinkNumber">integer llDetectedLinkNumber(integer number)\nreturns the link position of the triggered event for touches and collisions only</string> + <string name="LSLTipText_llDie">llDie()\ndeletes the object</string> + <string name="LSLTipText_llGround">float llGround(vector v)\nreturns the ground height below the object position + v</string> + <string name="LSLTipText_llCloud">float llCloud(vector v)\nreturns the cloud density at the object position + v</string> + <string name="LSLTipText_llWind">vector llWind(vector v)\nreturns the wind velocity at the object position + v</string> + <string name="LSLTipText_llSetStatus">llSetStatus(integer status, integer value)\nsets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB,\nSTATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value</string> + <string name="LSLTipText_llGetStatus">integer llGetStatus(integer status)\ngets value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB,\nSTATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z)</string> + <string name="LSLTipText_llSetScale">llSetScale(vector scale)\nsets the scale</string> + <string name="LSLTipText_llGetScale">vector llGetScale()\ngets the scale</string> + <string name="LSLTipText_llSetColor">llSetColor(vector color, integer face)\nsets the color</string> + <string name="LSLTipText_llGetAlpha">float llGetAlpha(integer face)\ngets the alpha</string> + <string name="LSLTipText_llSetAlpha">llSetAlpha(float alpha, integer face)\nsets the alpha</string> + <string name="LSLTipText_llGetColor">vector llGetColor(integer face)\ngets the color</string> + <string name="LSLTipText_llSetTexture">llSetTexture(string texture, integer face)\nsets the texture of face</string> + <string name="LSLTipText_llScaleTexture">llScaleTexture(float scales, float scalet, integer face)\nsets the texture s, t scales for the chosen face</string> + <string name="LSLTipText_llOffsetTexture">llOffsetTexture(float offsets, float offsett, integer face)\nsets the texture s, t offsets for the chosen face</string> + <string name="LSLTipText_llRotateTexture">llRotateTexture(float rotation, integer face)\nsets the texture rotation for the chosen face</string> + <string name="LSLTipText_llGetTexture">string llGetTexture(integer face)\ngets the texture of face (if it's a texture in the object inventory, otherwise the key in a string)</string> + <string name="LSLTipText_llSetPos">llSetPos(vector pos)\nsets the position (if the script isn't physical)</string> + <string name="LSLTipText_llGetPos">vector llGetPos()\ngets the position (if the script isn't physical)</string> + <string name="LSLTipText_llGetLocalPos">vector llGetLocalPos()\ngets the position relative to the root (if the script isn't physical)</string> + <string name="LSLTipText_llSetRot">llSetRot(rotation rot)\nsets the rotation (if the script isn't physical)</string> + <string name="LSLTipText_llGetRot">rotation llGetRot()\ngets the rotation (if the script isn't physical)</string> + <string name="LSLTipText_llGetLocalRot">rotation llGetLocalRot()\ngets the rotation local to the root (if the script isn't physical)</string> + <string name="LSLTipText_llSetForce">llSetForce(vector force, integer local)\nsets force on object, in local coords if local == TRUE (if the script is physical)</string> + <string name="LSLTipText_llGetForce">vector llGetForce()\ngets the force (if the script is physical)</string> + <string name="LSLTipText_llTarget">integer llTarget(vector position, float range)\nset positions within range of position as a target and return an ID for the target</string> + <string name="LSLTipText_llTargetRemove">llTargetRemove(integer number)\nremoves target number</string> + <string name="LSLTipText_llRotTarget">integer llRotTarget(rotation rot, float error)\nset rotations with error of rot as a rotational target and return an ID for the rotational target</string> + <string name="LSLTipText_llRotTargetRemove">llRotTargetRemove(integer number)\nremoves rotational target number</string> + <string name="LSLTipText_llMoveToTarget">llMoveToTarget(vector target, float tau)\ncritically damp to target in tau seconds (if the script is physical)</string> + <string name="LSLTipText_llStopMoveToTarget">llStopMoveToTarget()\nStops critically damped motion</string> + <string name="LSLTipText_llApplyImpulse">llApplyImpulse(vector force, integer local)\napplies impulse to object, in local coords if local == TRUE (if the script is physical)</string> + <string name="LSLTipText_llApplyRotationalImpulse">llApplyRotationalImpulse(vector force, integer local)\napplies rotational impulse to object, in local coords if local == TRUE (if the script is physical)</string> + <string name="LSLTipText_llSetTorque">llSetTorque(vector torque, integer local)\nsets the torque of object, in local coords if local == TRUE (if the script is physical)</string> + <string name="LSLTipText_llGetTorque">vector llGetTorque()\ngets the torque (if the script is physical)</string> + <string name="LSLTipText_llSetForceAndTorque">llSetForceAndTorque(vector force, vector torque, integer local)\nsets the force and torque of object, in local coords if local == TRUE (if the script is physical)</string> + <string name="LSLTipText_llGetVel">vector llGetVel()\ngets the velocity</string> + <string name="LSLTipText_llGetAccel">vector llGetAccel()\ngets the acceleration</string> + <string name="LSLTipText_llGetOmega">vector llGetOmega()\ngets the omega</string> + <string name="LSLTipText_llGetTimeOfDay">float llGetTimeOfDay()\ngets the time in seconds since Second Life server midnight (or since server up-time; whichever is smaller)</string> + <string name="LSLTipText_llGetWallclock">float llGetWallclock()\ngets the time in seconds since midnight</string> + <string name="LSLTipText_llGetTime">float llGetTime()\ngets the time in seconds since creation</string> + <string name="LSLTipText_llResetTime">llResetTime()\nsets the time to zero</string> + <string name="LSLTipText_llGetAndResetTime">float llGetAndResetTime()\ngets the time in seconds since creation and sets the time to zero</string> + <string name="LSLTipText_llSound">llSound(string sound, float volume, integer queue, integer loop)\nplays sound at volume and whether it should loop or not</string> + <string name="LSLTipText_llPlaySound">llPlaySound(string sound, float volume)\nplays attached sound once at volume (0.0 - 1.0)</string> + <string name="LSLTipText_llLoopSound">llLoopSound(string sound, float volume)\nplays attached sound looping indefinitely at volume (0.0 - 1.0)</string> + <string name="LSLTipText_llLoopSoundMaster">llLoopSoundMaster(string sound, float volume)\nplays attached sound looping at volume (0.0 - 1.0), declares it a sync master</string> + <string name="LSLTipText_llLoopSoundSlave">llLoopSoundSlave(string sound, float volume)\nplays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master</string> + <string name="LSLTipText_llPlaySoundSlave">llPlaySoundSlave(string sound, float volume)\nplays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master</string> + <string name="LSLTipText_llTriggerSound">llTriggerSound(string sound, float volume)\nplays sound at volume (0.0 - 1.0), centered at but not attached to object</string> + <string name="LSLTipText_llStopSound">llStopSound()\nStops currently attached sound</string> + <string name="LSLTipText_llPreloadSound">llPreloadSound(string sound)\npreloads a sound on viewers within range</string> + <string name="LSLTipText_llGetSubString">string llGetSubString(string src, integer start, integer end)\nreturns the indicated substring</string> + <string name="LSLTipText_llDeleteSubString">string llDeleteSubString(string src, integer start, integer end)\nremoves the indicated substring and returns the result</string> + <string name="LSLTipText_llInsertString">string llInsertString(string dst, integer position, string src)\ninserts src into dst at position and returns the result</string> + <string name="LSLTipText_llToUpper">string llToUpper(string src)\nconvert src to all upper case and returns the result</string> + <string name="LSLTipText_llToLower">string llToLower(string src)\nconvert src to all lower case and returns the result</string> + <string name="LSLTipText_llGiveMoney">llGiveMoney(key destination, integer amount)\ntransfer amount of money from script owner to destination</string> + <string name="LSLTipText_llMakeExplosion">llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake a round explosion of particles</string> + <string name="LSLTipText_llMakeFountain">llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset)\nMake a fountain of particles</string> + <string name="LSLTipText_llMakeSmoke">llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake smoke like particles</string> + <string name="LSLTipText_llMakeFire">llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)\nMake fire like particles</string> + <string name="LSLTipText_llRezObject">llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param)\nInstanciate owners inventory object at pos with velocity vel and rotation rot with start parameter param</string> + <string name="LSLTipText_llLookAt">llLookAt(vector target, F32 strength, F32 damping)\nCause object name to point it's forward axis towards target</string> + <string name="LSLTipText_llStopLookAt">llStopLookAt()\nStop causing object name to point at a target</string> + <string name="LSLTipText_llSetTimerEvent">llSetTimerEvent(float sec)\nCause the timer event to be triggered every sec seconds</string> + <string name="LSLTipText_llSleep">llSleep(float sec)\nPut script to sleep for sec seconds</string> + <string name="LSLTipText_llGetMass">float llGetMass()\nGet the mass of task name that script is attached to</string> + <string name="LSLTipText_llCollisionFilter">llCollisionFilter(string name, key id, integer accept)\nif accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id</string> + <string name="LSLTipText_llTakeControls">llTakeControls(integer controls, integer accept, integer pass_on)\nTake controls from agent task has permissions for. If (accept == (controls & input)), send input to task. If pass_on send to agent also.</string> + <string name="LSLTipText_llReleaseControls">llReleaseControls()\nStop taking inputs</string> + <string name="LSLTipText_llAttachToAvatar">llAttachToAvatar(integer attachment)\nAttach to avatar task has permissions for at point attachment</string> + <string name="LSLTipText_llDetachFromAvatar">llDetachFromAvatar()\nDrop off of avatar</string> + <string name="LSLTipText_llTakeCamera">llTakeCamera(key avatar)\nMove avatar's viewpoint to task</string> + <string name="LSLTipText_llReleaseCamera">llReleaseCamera(key avatar)\nReturn camera to agent</string> + <string name="LSLTipText_llGetOwner">key llGetOwner()\nReturns the owner of the task</string> + <string name="LSLTipText_llInstantMessage">llInstantMessage(key user, string message)\nIMs message to the user</string> + <string name="LSLTipText_llEmail">llEmail(string address, string subject, string message)\nSends email to address with subject and message</string> + <string name="LSLTipText_llGetNextEmail">llGetNextEmail(string address, string subject)\nGet the next waiting email with appropriate address and/or subject (if blank they are ignored)</string> + <string name="LSLTipText_llGetKey">key llGetKey()\nGet the key for the task the script is attached to</string> + <string name="LSLTipText_llSetBuoyancy">llSetBuoyancy(float buoyancy)\nSet the tasks buoyancy (0 is none, < 1.0 sinks, 1.0 floats, > 1.0 rises)</string> + <string name="LSLTipText_llSetHoverHeight">llSetHoverHeight(float height, integer water, float tau)\nCritically damps to a height (either above ground level or above the higher of land and water if water == TRUE)</string> + <string name="LSLTipText_llStopHover">llStopHover()\nStop hovering to a height</string> + <string name="LSLTipText_llMinEventDelay">llMinEventDelay(float delay)\nSet the minimum time between events being handled</string> + <string name="LSLTipText_llSoundPreload">llSoundPreload(string sound)\npreloads a sound on viewers within range</string> + <string name="LSLTipText_llRotLookAt">llRotLookAt(rotation target, F32 strength, F32 damping)\nCause object name to point it's forward axis towards target</string> + <string name="LSLTipText_llStringLength">integer llStringLength(string str)\nReturns the length of string</string> + <string name="LSLTipText_llStartAnimation">llStartAnimation(string anim)\nStart animation anim for agent that owns object</string> + <string name="LSLTipText_llStopAnimation">llStopAnimation(string anim)\nStop animation anim for agent that owns object</string> + <string name="LSLTipText_llPointAt">llPointAt(vector pos)\nMake agent that owns object point at pos</string> + <string name="LSLTipText_llStopPointAt">llStopPointAt()\nStop agent that owns object pointing</string> + <string name="LSLTipText_llTargetOmega">llTargetOmega(vector axis, float spinrate, float gain)\nAttempt to spin at spinrate with strength gain</string> + <string name="LSLTipText_llGetStartParameter">integer llGetStartParameter()\nGet's the start paramter passed to llRezObject</string> + <string name="LSLTipText_llGodLikeRezObject">llGodLikeRezObject(key inventory, vector pos)\nrez directly off of a UUID if owner has dog-bit set</string> + <string name="LSLTipText_llRequestPermissions">llRequestPermissions(key agent, integer perm)\nask agent to allow the script to do perm (NB: Debit, ownership, link, joint, and permission requests can only go to the task's owner)</string> + <string name="LSLTipText_llGetPermissionsKey">key llGetPermissionsKey()\nReturn agent that permissions are enabled for. NULL_KEY if not enabled</string> + <string name="LSLTipText_llGetPermissions">integer llGetPermissions()\nreturn what permissions have been enabled</string> + <string name="LSLTipText_llGetLinkNumber">integer llGetLinkNumber()\nReturns what number in a link set the script is attached to (0 means no link, 1 the root, 2 for first child, etc)</string> + <string name="LSLTipText_llSetLinkColor">llSetLinkColor(integer linknumber, vector color, integer face)\nIf a task exists in the link chain at linknumber, set face to color</string> + <string name="LSLTipText_llCreateLink">llCreateLink(key target, integer parent)\nAttempt to link task script is attached to and target (requires permission PERMISSION_CHANGE_LINKS be set). If parent == TRUE, task script is attached to is the root</string> + <string name="LSLTipText_llBreakLink">llBreakLink(integer linknum)\nDelinks the task with the given link number (requires permission PERMISSION_CHANGE_LINKS be set)</string> + <string name="LSLTipText_llBreakAllLinks">llBreakAllLinks()\nDelinks all tasks in the link set (requires permission PERMISSION_CHANGE_LINKS be set)</string> + <string name="LSLTipText_llGetLinkKey">key llGetLinkKey(integer linknum)\nGet the key of linknumber in link set</string> + <string name="LSLTipText_llGetLinkName">string llGetLinkName(integer linknum)\nGet the name of linknumber in link set</string> + <string name="LSLTipText_llGetInventoryNumber">integer llGetInventoryNumber(integer type)\nGet the number of items of a given type in the task's inventory.\nValid types: INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_OBJECT, INVENTORY_SCRIPT, INVENTORY_CLOTHING, INVENTORY_BODYPART, INVENTORY_NOTECARD, INVENTORY_LANDMARK, INVENTORY_ALL</string> + <string name="LSLTipText_llGetInventoryName">string llGetInventoryName(integer type, integer number)\nGet the name of the inventory item number of type</string> + <string name="LSLTipText_llSetScriptState">llSetScriptState(string name, integer run)\nControl the state of a script name.</string> + <string name="LSLTipText_llGetEnergy">float llGetEnergy()\nReturns how much energy is in the object as a percentage of maximum</string> + <string name="LSLTipText_llGiveInventory">llGiveInventory(key destination, string inventory)\nGive inventory to destination</string> + <string name="LSLTipText_llRemoveInventory">llRemoveInventory(string inventory)\nRemove the named inventory item</string> + <string name="LSLTipText_llSetText">llSetText(string text, vector color, float alpha)\nSet text floating over object</string> + <string name="LSLTipText_llWater">float llWater(vector v)\nreturns the water height below the object position + v</string> + <string name="LSLTipText_llPassTouches">llPassTouches(integer pass)\nif pass == TRUE, touches are passed from children on to parents (default is FALSE)</string> + <string name="LSLTipText_llRequestAgentData">key llRequestAgentData(key id, integer data)\nRequests data about agent id. When data is available the dataserver event will be raised</string> + <string name="LSLTipText_llRequestInventoryData">key llRequestInventoryData(string name)\nRequests data from object's inventory object. When data is available the dataserver event will be raised</string> + <string name="LSLTipText_llSetDamage">llSetDamage(float damage)\nSets the amount of damage that will be done to an object that this task hits. Task will be killed.</string> + <string name="LSLTipText_llTeleportAgentHome">llTeleportAgentHome(key id)\nTeleports agent on owner's land to agent's home location</string> + <string name="LSLTipText_llModifyLand">llModifyLand(integer action, integer size)\nModify land with action (LAND_LEVEL, LAND_RAISE, LAND_LOWER, LAND_SMOOTH, LAND_NOISE, LAND_REVERT)\non size (LAND_SMALL_BRUSH, LAND_MEDIUM_BRUSH, LAND_LARGE_BRUSH)</string> + <string name="LSLTipText_llCollisionSound">llCollisionSound(string impact_sound, float impact_volume)\nSuppress default collision sounds, replace default impact sounds with impact_sound (empty string to just suppress)</string> + <string name="LSLTipText_llCollisionSprite">llCollisionSprite(string impact_sprite)\nSuppress default collision sprites, replace default impact sprite with impact_sprite (empty string to just suppress)</string> + <string name="LSLTipText_llGetAnimation">string llGetAnimation(key id)\nGet the currently playing locomotion animation for avatar id</string> + <string name="LSLTipText_llResetScript">llResetScript()\nResets the script</string> + <string name="LSLTipText_llMessageLinked">llMessageLinked(integer linknum, integer num, string str, key id)\nSends num, str, and id to members of the link set (LINK_ROOT sends to root task in a linked set,\nLINK_SET sends to all tasks,\nLINK_ALL_OTHERS to all other tasks,\nLINK_ALL_CHILDREN to all children,\nLINK_THIS to the task the script it is in)</string> + <string name="LSLTipText_llPushObject">llPushObject(key id, vector impulse, vector ang_impulse, integer local)\nApplies impulse and ang_impulse to object id</string> + <string name="LSLTipText_llPassCollisions">llPassCollisions(integer pass)\nif pass == TRUE, collisions are passed from children on to parents (default is FALSE)</string> + <string name="LSLTipText_llGetScriptName">llGetScriptName()\nReturns the script name</string> + <string name="LSLTipText_llGetNumberOfSides">integer llGetNumberOfSides()\nReturns the number of sides</string> + <string name="LSLTipText_llAxisAngle2Rot">rotation llAxisAngle2Rot(vector axis, float angle)\nReturns the rotation generated angle about axis</string> + <string name="LSLTipText_llRot2Axis">vector llRot2Axis(rotation rot)\nReturns the rotation axis represented by rot</string> + <string name="LSLTipText_llRot2Angle">float llRot2Angle(rotation rot)\nReturns the rotation angle represented by rot</string> + <string name="LSLTipText_llAcos">float llAcos(float val)\nReturns the arccosine in radians of val</string> + <string name="LSLTipText_llAsin">float llAsin(float val)\nReturns the arcsine in radians of val</string> + <string name="LSLTipText_llAngleBetween">float llAngleBetween(rotation a, rotation b)\nReturns angle between rotation a and b</string> + <string name="LSLTipText_llGetInventoryKey">key llGetInventoryKey(string name)\nReturns the key of the inventory name</string> + <string name="LSLTipText_llAllowInventoryDrop">llAllowInventoryDrop(integer add)\nIf add == TRUE, users without permissions can still drop inventory items onto task</string> + <string name="LSLTipText_llGetSunDirection">vector llGetSunDirection()\nReturns the sun direction on the simulator</string> + <string name="LSLTipText_llGetTextureOffset">vector llGetTextureOffset(integer side)\nReturns the texture offset of side in the x and y components of a vector</string> + <string name="LSLTipText_llGetTextureScale">vector llGetTextureScale(integer side)\nReturns the texture scale of side in the x and y components of a vector</string> + <string name="LSLTipText_llGetTextureRot">float llGetTextureRot(integer side)\nReturns the texture rotation of side</string> + <string name="LSLTipText_llSubStringIndex">integer llSubStringIndex(string source, string pattern)\nFinds index in source where pattern first appears (returns -1 if not found)</string> + <string name="LSLTipText_llGetOwnerKey">key llGetOwnerKey(key id)\nFind the owner of id</string> + <string name="LSLTipText_llGetCenterOfMass">vector llGetCenterOfMass()\nGet the object's center of mass</string> + <string name="LSLTipText_llListSort">list llListSort(list src, integer stride, integer ascending)\nSort the list into blocks of stride in ascending order if ascending == TRUE. Note that sort only works between same types.</string> + <string name="LSLTipText_llGetListLength">integer llGetListLength(list src)\nGet the number of elements in the list</string> + <string name="LSLTipText_llList2Integer">integer llList2Integer(list src, integer index)\nCopy the integer at index in the list</string> + <string name="LSLTipText_llList2Float">float llList2Float(list src, integer index)\nCopy the float at index in the list</string> + <string name="LSLTipText_llList2String">string llList2String(list src, integer index)\nCopy the string at index in the list</string> + <string name="LSLTipText_llList2Key">key llList2Key(list src, integer index)\nCopy the key at index in the list</string> + <string name="LSLTipText_llList2Vector">vector llList2Vector(list src, integer index)\nCopy the vector at index in the list</string> + <string name="LSLTipText_llList2Rot">rotation llList2Rot(list src, integer index)\nCopy the rotation at index in the list</string> + <string name="LSLTipText_llList2List">list llList2List(list src, integer start, integer end)\nCopy the slice of the list from start to end</string> + <string name="LSLTipText_llDeleteSubList">list llDeleteSubList(list src, integer start, integer end)\nRemove the slice from the list and return the remainder</string> + <string name="LSLTipText_llGetListEntryType">integer llGetListEntryType(list src, integer index)\nReturns the type of the index entry in the list\n(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list)</string> + <string name="LSLTipText_llList2CSV">string llList2CSV(list src)\nCreate a string of comma separated values from list</string> + <string name="LSLTipText_llCSV2List">list llCSV2List(string src)\nCreate a list from a string of comma separated values</string> + <string name="LSLTipText_llListRandomize">list llListRandomize(list src, integer stride)\nReturns a randomized list of blocks of size stride</string> + <string name="LSLTipText_llList2ListStrided">list llList2ListStrided(list src, integer start, integer end, integer stride)\nCopy the strided slice of the list from start to end</string> + <string name="LSLTipText_llGetRegionCorner">vector llGetRegionCorner()\nReturns a vector with the south west corner x,y position of the region the object is in</string> + <string name="LSLTipText_llListInsertList">list llListInsertList(list dest, list src, integer start)\nInserts src into dest at position start</string> + <string name="LSLTipText_llListFindList">integer llListFindList(list src, list test)\nReturns the start of the first instance of test in src, -1 if not found</string> + <string name="LSLTipText_llGetObjectName">string llGetObjectName()\nReturns the name of the object script is attached to</string> + <string name="LSLTipText_llSetObjectName">llSetObjectName(string name)\nSets the objects name</string> + <string name="LSLTipText_llGetDate">string llGetDate()\nGets the date as YYYY-MM-DD</string> + <string name="LSLTipText_llEdgeOfWorld">integer llEdgeOfWorld(vector pos, vector dir)\nChecks to see whether the border hit by dir from pos is the edge of the world (has no neighboring simulator)</string> + <string name="LSLTipText_llGetAgentInfo">integer llGetAgentInfo(key id)\nGets information about agent ID.\nReturns 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 and/or AGENT_IN_AIR.</string> + <string name="LSLTipText_llAdjustSoundVolume">llAdjustSoundVolume(float volume)\nadjusts volume of attached sound (0.0 - 1.0)</string> + <string name="LSLTipText_llSetSoundQueueing">llSetSoundQueueing(integer queue)\ndetermines whether attached sound calls wait for the current sound to finish (0 = no [default], nonzero = yes)</string> + <string name="LSLTipText_llSetSoundRadius">llSetSoundRadius(float radius)\nestablishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered)</string> + <string name="LSLTipText_llKey2Name">string llKey2Name(key id)\nReturns the name of the object key, iff the object is in the current simulator, otherwise the empty string</string> + <string name="LSLTipText_llSetTextureAnim">llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)\nAnimate the texture on the specified face/faces</string> + <string name="LSLTipText_llTriggerSoundLimited">llTriggerSoundLimited(string sound, float volume, vector tne, vector bsw)\nplays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to AABB defined by vectors top-north-east and bottom-south-west</string> + <string name="LSLTipText_llEjectFromLand">llEjectFromLand(key pest)\nEjects pest from land that you own</string> + <string name="LSLTipText_llParseString2List">list llParseString2List(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each)</string> + <string name="LSLTipText_llOverMyLand">integer llOverMyLand(key id)\nReturns TRUE if id is over land owner of object owns, FALSE otherwise</string> + <string name="LSLTipText_llGetLandOwnerAt">key llGetLandOwnerAt(vector pos)\nReturns the key of the land owner, NULL_KEY if public</string> + <string name="LSLTipText_llGetNotecardLine">key llGetNotecardLine(string name, integer line)\nReturns line line of notecard name via the dataserver event</string> + <string name="LSLTipText_llGetAgentSize">vector llGetAgentSize(key id)\nIf the agent is in the same sim as the object, returns the size of the avatar</string> + <string name="LSLTipText_llSameGroup">integer llSameGroup(key id)\nReturns TRUE if ID is in the same sim and has the same active group, otherwise FALSE</string> + <string name="LSLTipText_llUnSit">key llUnSit(key id)\nIf agent identified by id is sitting on the object the script is attached to or is over land owned by the objects owner, the agent is forced to stand up</string> + <string name="LSLTipText_llGroundSlope">vector llGroundSlope(vector v)\nreturns the ground slope below the object position + v</string> + <string name="LSLTipText_llGroundNormal">vector llGroundNormal(vector v)\nreturns the ground normal below the object position + v</string> + <string name="LSLTipText_llGroundContour">vector llGroundCountour(vector v)\nreturns the ground contour below the object position + v</string> + <string name="LSLTipText_llGetAttached">integer llGetAttached()\nreturns the object attachment point or 0 if not attached</string> + <string name="LSLTipText_llGetFreeMemory">integer llGetFreeMemory()\nreturns the available heap space for the current script</string> + <string name="LSLTipText_llGetRegionName">string llGetRegionName()\nreturns the current region name</string> + <string name="LSLTipText_llGetRegionTimeDilation">float llGetRegionTimeDilation()\nreturns the current time dilation as a float between 0 and 1</string> + <string name="LSLTipText_llGetRegionFPS">float llGetRegionFPS()\nreturns the mean region frames per second</string> + <string name="LSLTipText_llParticleSystem">llParticleSystem(list rules)\nCreates a particle system based on rules. Empty list removes particle system from object.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]</string> + <string name="LSLTipText_llGroundRepel">llGroundRepel(float height, integer water, float tau)\nCritically 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)</string> + <string name="LSLTipText_llGiveInventoryList">llGiveInventoryList(key destination, string category, list inventory)\nGive inventory to destination in a new category</string> + <string name="LSLTipText_llSetVehicleType">llSetVehicleType(integer type)\nsets vehicle to one of the default types</string> + <string name="LSLTipText_llSetVehicleFloatParam">llSetVehicleFloatParam(integer param, float value)\nsets the specified vehicle float parameter</string> + <string name="LSLTipText_llSetVehicleVectorParam">llSetVehicleVectorParam(integer param, vector vec)\nsets the specified vehicle vector parameter</string> + <string name="LSLTipText_llSetVehicleRotationParam">llSetVehicleVectorParam(integer param, rotation rot)\nsets the specified vehicle rotation parameter</string> + <string name="LSLTipText_llSetVehicleFlags">llSetVehicleFlags(integer flags)\nsets the enabled bits in 'flags'</string> + <string name="LSLTipText_llRemoveVehicleFlags">llRemoveVehicleFlags(integer flags)\nremoves the enabled bits in 'flags'</string> + <string name="LSLTipText_llSitTarget">llSitTarget(vector offset, rotation rot)\nSet the sit location for this object (if offset == <0,0,0> clear it)</string> + <string name="LSLTipText_llAvatarOnSitTarget">key llAvatarOnSitTarget()\nIf an avatar is sitting on the sit target, return the avatar's key, NULL_KEY otherwise</string> + <string name="LSLTipText_llAddToLandPassList">llAddToLandPassList(key avatar, float hours)\nAdd avatar to the land pass list for hours</string> + <string name="LSLTipText_llSetTouchText">llSetTouchText(string text)\nDisplays text in pie menu that acts as a touch</string> + <string name="LSLTipText_llSetSitText">llSetSitText(string text)\nDisplays text rather than sit in pie menu</string> + <string name="LSLTipText_llSetCameraEyeOffset">llSetCameraEyeOffset(vector offset)\nSets the camera eye offset used in this object if an avatar sits on it</string> + <string name="LSLTipText_llSetCameraAtOffset">llSetCameraAtOffset(vector offset)\nSets the camera at offset used in this object if an avatar sits on it</string> + <string name="LSLTipText_llDumpList2String">string llDumpList2String(list src, string separator)\nWrite the list out in a single string using separator between values</string> + <string name="LSLTipText_llScriptDanger">integer llScriptDanger(vector pos)\nReturns true if pos is over public land, sandbox land, land that doesn't allow everyone to edit and build, or land that doesn't allow outside scripts</string> + <string name="LSLTipText_llDialog">llDialog(key avatar, string message, list buttons, integer chat_channel\nShows a dialog box on the avatar's screen with the message.\nUp to 12 strings in the list form buttons.\nIf a button is clicked, the name is chatted on chat_channel.</string> + <string name="LSLTipText_llVolumeDetect">llVolumeDetect(integer detect)\nIf detect = TRUE, object becomes phantom but triggers collision_start and collision_end events\nwhen other objects start and stop interpenetrating.\nMust be applied to the root object.</string> + <string name="LSLTipText_llResetOtherScript">llResetOtherScript(string name)\nResets script name</string> + <string name="LSLTipText_llGetScriptState">integer llGetScriptState(string name)\nResets TRUE if script name is running</string> + <string name="LSLTipText_llRemoteLoadScript">Deprecated. Please use llRemoteLoadScriptPin instead.</string> + <string name="LSLTipText_llSetRemoteScriptAccessPin">llSetRemoteScriptAccessPin(integer pin)\nIf pin is set to a non-zero number, the task will accept remote script\nloads via llRemoteLoadScriptPin if it passes in the correct pin.\nOthersise, llRemoteLoadScriptPin is ignored.</string> + <string name="LSLTipText_llRemoteLoadScriptPin">llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)\nIf the owner of the object this script is attached can modify target,\nthey are in the same region,\nand the matching pin is used,\ncopy script name onto target,\nif running == TRUE, start the script with param.</string> + <string name="LSLTipText_llOpenRemoteDataChannel">llOpenRemoteDataChannel()\nCreates a channel to listen for XML-RPC calls. Will trigger a remote_data event with channel id once it is available.</string> + <string name="LSLTipText_llSendRemoteData">key llSendRemoteData(key channel, string dest, integer idata, string sdata)\nSend an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.\nA message identifier key is returned.\nAn XML-RPC reply will trigger a remote_data event and reference the message id.\nThe message_id is returned.</string> + <string name="LSLTipText_llRemoteDataReply">llRemoteDataReply(key channel, key message_id, string sdata, integer idata)\nSend an XML-RPC reply to message_id on channel with payload of string sdata and integer idata</string> + <string name="LSLTipText_llCloseRemoteDataChannel">llCloseRemoteDataChannel(key channel)\nCloses XML-RPC channel.</string> + <string name="LSLTipText_llMD5String">string llMD5String(string src, integer nonce)\nPerforms a RSA Data Security, Inc. MD5 Message-Digest Algorithm on string with nonce. Returns a 32 character hex string.</string> + <string name="LSLTipText_llSetPrimitiveParams">llSetPrimitiveParams(list rules)\nSet primitive parameters based on rules.</string> + <string name="LSLTipText_llStringToBase64">string llStringToBase64(string str)\nConverts a string to the Base 64 representation of the string.</string> + <string name="LSLTipText_llBase64ToString">string llBase64ToString(string str)\nConverts a Base 64 string to a conventional string. If the conversion creates any unprintable characters, they are converted to spaces.</string> + <string name="LSLTipText_llXorBase64Strings">string llXorBase64Strings(string s1, string s2)\nDEPRECATED! Please use llXorBase64StringsCorrect instead!! Incorrectly performs an exclusive or on two Base 64 strings and returns a Base 64 string. s2 repeats if it is shorter than s1. Retained for backwards compatability.</string> + <string name="LSLTipText_llRemoteDataSetRegion">llRemoteDataSetRegion()\nIf an object using remote data channels changes regions, you must call this function to reregister the remote data channels.\nYou do not need to make this call if you don't change regions.</string> + <string name="LSLTipText_llLog10">float llLog10(float val)\nReturns the base 10 log of val if val > 0, otherwise returns 0.</string> + <string name="LSLTipText_llLog">float llLog(float val)\nReturns the base e log of val if val > 0, otherwise returns 0.</string> + <string name="LSLTipText_llGetAnimationList">list llGetAnimationList(key id)\nGets a list of all playing animations for avatar id</string> + <string name="LSLTipText_llSetParcelMusicURL">llSetParcelMusicURL(string url)\nSets the streaming audio URL for the parcel object is on</string> + <string name="LSLTipText_llGetRootPosition">vector llGetRootPosition()\nGets the global position of the root object of the object script is attached to</string> + <string name="LSLTipText_llGetRootRotation">rotation llGetRootRotation()\nGets the global rotation of the root object of the object script is attached to</string> + <string name="LSLTipText_llGetObjectDesc">string llGetObjectDesc()\nReturns the description of the object the script is attached to</string> + <string name="LSLTipText_llSetObjectDesc">llSetObjectDesc(string name)\nSets the object's description</string> + <string name="LSLTipText_llGetCreator">key llGetCreator()\nReturns the creator of the object</string> + <string name="LSLTipText_llGetTimestamp">string llGetTimestamp()\nGets the timestamp in the format: YYYY-MM-DDThh:mm:ss.ff..fZ</string> + <string name="LSLTipText_llSetLinkAlpha">llSetLinkAlpha(integer linknumber, float alpha, integer face)\nIf a prim exists in the link chain at linknumber, set face to alpha</string> + <string name="LSLTipText_llGetNumberOfPrims">integer llGetNumberOfPrims()\nReturns the number of prims in a link set the script is attached to</string> + <string name="LSLTipText_llGetNumberOfNotecardLines">key llGetNumberOfNotecardLines(string name)\nReturns number of lines in notecard 'name' via the dataserver event (cast return value to integer)</string> + <string name="LSLTipText_llGetBoundingBox">list llGetBoundingBox(key object)\nReturns the bounding box around an object (including any linked prims) relative to the root prim, in a list: [ (vector) min_corner, (vector) max_corner ]</string> + <string name="LSLTipText_llGetGeometricCenter">vector llGetGeometricCenter()\nReturns the geometric center of the linked set the script is attached to.</string> + <string name="LSLTipText_llGetPrimitiveParams">list llGetPrimitiveParams(list params)\nGets primitive parameters specified in the params list.</string> + <string name="LSLTipText_llIntegerToBase64">string llIntegerToBase64(integer number)\nBig endian encode of of integer as a Base64 string.</string> + <string name="LSLTipText_llBase64ToInteger">integer llBase64ToInteger(string str)\nBig endian decode of a Base64 string into an integer.</string> + <string name="LSLTipText_llGetGMTclock">float llGetGMTclock()\nGets the time in seconds since midnight in GMT</string> + <string name="LSLTipText_llGetSimulatorHostname">string llGetSimulatorHostname()\nGets the hostname of the machine script is running on (same as string in viewer Help dialog)</string> + <string name="LSLTipText_llSetLocalRot">llSetLocalRot(rotation rot)\nsets the rotation of a child prim relative to the root prim</string> + <string name="LSLTipText_llParseStringKeepNulls">list llParseStringKeepNulls(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each), keeping any null values generated.</string> + <string name="LSLTipText_llRezAtRoot">llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param)\nInstantiate owner's inventory object at pos with velocity vel and rotation rot with start parameter param.\nThe last selected root object's location will be set to pos</string> + <string name="LSLTipText_llGetObjectPermMask">integer llGetObjectPermMask(integer mask)\nReturns the requested permission mask for the root object the task is attached to.</string> + <string name="LSLTipText_llSetObjectPermMask">llSetObjectPermMask(integer mask, integer value)\nSets the given permission mask to the new value on the root object the task is attached to.</string> + <string name="LSLTipText_llGetInventoryPermMask">integer llGetInventoryPermMask(string item, integer mask)\nReturns the requested permission mask for the inventory item.</string> + <string name="LSLTipText_llSetInventoryPermMask">llSetInventoryPermMask(string item, integer mask, integer value)\nSets the given permission mask to the new value on the inventory item.</string> + <string name="LSLTipText_llGetInventoryCreator">key llGetInventoryCreator(string item)\nReturns the key for the creator of the inventory item.</string> + <string name="LSLTipText_llOwnerSay">llOwnerSay(string msg)\nsays msg to owner only (if owner in sim)</string> + <string name="LSLTipText_llRequestSimulatorData">key llRequestSimulatorData(string simulator, integer data)\nRequests data about simulator. When data is available the dataserver event will be raised</string> + <string name="LSLTipText_llForceMouselook">llForceMouselook(integer mouselook)\nIf mouselook is TRUE any avatar that sits on this object is forced into mouselook mode</string> + <string name="LSLTipText_llGetObjectMass">float llGetObjectMass(key id)\nGet the mass of the object with key id</string> + <string name="LSLTipText_llListReplaceList">list llListReplaceList(list dest, list src, integer start, integer end)\nReplaces start through end of dest with src.</string> + <string name="LSLTipText_llLoadURL">llLoadURL(key avatar_id, string message, string url)\nShows dialog to avatar avatar_id offering to load web page at URL. If user clicks yes, launches their web browser.</string> + <string name="LSLTipText_llParcelMediaCommandList">llParcelMediaCommandList(list command)\nSends a list of commands, some with arguments, to a parcel.</string> + <string name="LSLTipText_llParcelMediaQuery">list llParcelMediaQuery(list query)\nSends a list of queries, returns a list of results.</string> + <string name="LSLTipText_llModPow">integer llModPow(integer a, integer b, integer c)\nReturns a raised to the b power, mod c. ( (a**b)%c ). b is capped at 0xFFFF (16 bits).</string> + <string name="LSLTipText_llGetInventoryType">integer llGetInventoryType(string name)\nReturns the type of the inventory name</string> + <string name="LSLTipText_llSetPayPrice">llSetPayPrice(integer price, list quick_pay_buttons)\nSets the default amount when someone chooses to pay this object.</string> + <string name="LSLTipText_llGetCameraPos">vector llGetCameraPos()\nGets current camera position for agent task has permissions for.</string> + <string name="LSLTipText_llGetCameraRot">rotation llGetCameraRot()\nGets current camera orientation for agent task has permissions for.</string> + <string name="LSLTipText_llSetPrimURL">llSetPrimURL(string url)\nUpdates the URL for the web page shown on the sides of the object.</string> + <string name="LSLTipText_llRefreshPrimURL">llRefreshPrimURL()\nReloads the web page shown on the sides of the object.</string> + <string name="LSLTipText_llEscapeURL">string llEscapeURL(string url)\nReturns and escaped/encoded version of url, replacing spaces with %20 etc.</string> + <string name="LSLTipText_llUnescapeURL">string llUnescapeURL(string url)\nReturns and unescaped/unencoded version of url, replacing %20 with spaces etc.</string> + <string name="LSLTipText_llMapDestination">llMapDestination(string simname, vector pos, vector look_at)\nOpens world map centered on region with pos highlighted.\nOnly works for scripts attached to avatar, or during touch events.\n(NOTE: look_at currently does nothing)</string> + <string name="LSLTipText_llAddToLandBanList">llAddToLandBanList(key avatar, float hours)\nAdd avatar to the land ban list for hours</string> + <string name="LSLTipText_llRemoveFromLandPassList">llRemoveFromLandPassList(key avatar)\nRemove avatar from the land pass list</string> + <string name="LSLTipText_llRemoveFromLandBanList">llRemoveFromLandBanList(key avatar)\nRemove avatar from the land ban list</string> + <string name="LSLTipText_llSetCameraParams">llSetCameraParams(list rules)\nSets multiple camera parameters at once.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]</string> + <string name="LSLTipText_llClearCameraParams">llClearCameraParams()\nResets all camera parameters to default values and turns off scripted camera control.</string> + <string name="LSLTipText_llListStatistics">float llListStatistics(integer operation, list l)\nPerform statistical aggregate functions on list l using LIST_STAT_* operations.</string> + <string name="LSLTipText_llGetUnixTime">integer llGetUnixTime()\nGet the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock.</string> + <string name="LSLTipText_llGetParcelFlags">integer llGetParcelFlags(vector pos)\nGet the parcel flags (PARCEL_FLAG_*) for the parcel including the point pos.</string> + <string name="LSLTipText_llGetRegionFlags">integer llGetRegionFlags()\nGet the region flags (REGION_FLAG_*) for the region the object is in.</string> + <string name="LSLTipText_llXorBase64StringsCorrect">string llXorBase64StringsCorrect(string s1, string s2)\nCorrectly performs an exclusive or on two Base 64 strings and returns a Base 64 string. s2 repeats if it is shorter than s1.</string> + <string name="LSLTipText_llHTTPRequest">llHTTPRequest(string url, list parameters, string body)\nSend an HTTP request.</string> + <string name="LSLTipText_llResetLandBanList">llResetLandBanList()\nRemoves all residents from the land ban list.</string> + <string name="LSLTipText_llResetLandPassList">llResetLandPassList()\nRemoves all residents from the land access/pass list.</string> + <string name="LSLTipText_llGetObjectPrimCount">integer llGetObjectPrimCount(key object_id)\nReturns the total number of prims for an object.</string> + <string name="LSLTipText_llGetParcelPrimOwners">list llGetParcelPrimOwners(vector pos)\nReturns a list of all residents who own objects on the parcel and the number of objects they own.\nRequires owner-like permissions for the parcel.</string> + <string name="LSLTipText_llGetParcelPrimCount">integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)\nGets the number of prims on the parcel of the given category.\nCategories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP.</string> + <string name="LSLTipText_llGetParcelMaxPrims">integer llGetParcelMaxPrims(vector pos, integer sim_wide)\nGets the maximum number of prims allowed on the parcel at pos.</string> + <string name="LSLTipText_llGetParcelDetails">list llGetParcelDetails(vector pos, list params)\nGets the parcel details specified in params for the parcel at pos.\nParams is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA</string> + <string name="LSLTipText_llSetLinkPrimitiveParams">llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules.</string> + <string name="LSLTipText_llSetLinkTexture">llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos</string> + <string name="LSLTipText_llStringTrim">string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.</string> + <string name="LSLTipText_llRegionSay">llRegionSay(integer channel, string msg)\nbroadcasts msg to entire region on channel (not 0.)</string> + <string name="LSLTipText_llGetObjectDetails">list llGetObjectDetails(key id, list params)\nGets the object details specified in params for the object with key id.\nDetails are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR.</string> + <string name="LSLTipText_llSetClickAction">llSetClickAction(integer action)\nSets the action performed when a prim is clicked upon.</string> + <string name="LSLTipText_llGetRegionAgentCount">int llGetRegionAgentCount()\nreturns the number of agents in a region</string> + <string name="LSLTipText_llTextBox">llTextBox(key avatar, string message, integer chat_channel\nShows a dialog box on the avatar's screen with the message.\nA text box asks for input, and if entered the text is chatted on chat_channel.</string> + <string name="LSLTipText_llGetAgentLanguage">string llGetAgentLanguage(key id)\nGets the agents preferred language..</string> + <string name="LSLTipText_llDetectedTouchUV">vector llDetectedTouchUV(integer number)\nreturns the u and v coordinates in the first two components of a vector, for a triggered touch event</string> + <string name="LSLTipText_llDetectedTouchFace">integer llDetectedTouchFace(integer number)\nreturns the index of the face on the object for a triggered touch event</string> + <string name="LSLTipText_llDetectedTouchPos">vector llDetectedTouchPos(integer number)\nreturns the position touched for a triggered touch event</string> + <string name="LSLTipText_llDetectedTouchNormal">vector llDetectedTouchNormal(integer number)\nreturns the surface normal for a triggered touch event</string> + <string name="LSLTipText_llDetectedTouchBinormal">vector llDetectedTouchBinormal(integer number)\nreturns the surface binormal for a triggered touch event</string> + <string name="LSLTipText_llDetectedTouchST">vector llDetectedTouchST(integer number)\nreturns the s and t coordinates in the first two components of a vector, for a triggered touch event</string> + <string name="LSLTipText_llSHA1String">string llSHA1String(string sr)\nPerforms a SHA1 security Hash. Returns a 40 character hex string.</string> + <string name="LSLTipText_llGetFreeURLs">integer llGetFreeURLs()\nreturns the available urls for the current script</string> + <string name="LSLTipText_llRequestURL">key llRequestURL()\nRequests one HTTP:// url for use by this object\nTriggers an http_server event with results.</string> + <string name="LSLTipText_llRequestSecureURL">key llRequestSecureURL()\nRequests one HTTPS:// (SSL) url for use by this object\nTriggers an http_server event with results.</string> + <string name="LSLTipText_llReleaseURL">llReleaseURL(string url)\nReleases the specified URL, it will no longer be usable.</string> + <string name="LSLTipText_llHTTPResponse">llHTTPResponse(key id, integer status, string body)\nResponds to request id with status and body.</string> + <string name="LSLTipText_llGetHTTPHeader">string llGetHTTPHeader(key id, string header)\nGet the value for header for request id.</string> + <!-- Avatar busy/away mode --> <string name="AvatarSetNotAway">Set Not Away</string> <string name="AvatarSetAway">Set Away</string> |