LSL-PyOptimizer/fndata.txt
2024-05-24 22:52:58 +02:00

1962 lines
42 KiB
Text

# Function properties table
#
# Copyright © 2015-2024 Sei Lisa. All rights reserved.
#
# This file is part of LSL PyOptimizer.
#
# LSL PyOptimizer is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# LSL PyOptimizer is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LSL PyOptimizer. If not, see <http://www.gnu.org/licenses/>.
# This file provides information to the optimizer about the behaviour of
# functions and events. This knowledge can help perform a better job at
# optimizing. All functions and events present in builtins.txt must be here
# and vice versa.
# Flags are entered with a dash at the beginning of the line, then a space,
# then the flag. Flags apply to the function they are under. There can be none
# before the first function.
#
# Available flags:
#
# stable:
# Two successive calls with the same parameters are assumed to return
# the same results in most reasonable cases. When it's stable and SEF
# it's posible to simplify two identical calls into one. Example:
# llGetPermissions(). Counterexample: llFrand(). This is the default;
# unstable functions must be marked as such. Does not apply to void
# functions. This flag is not implemented; 'unstable' is.
#
# unstable:
# Not stable. This flag IS implemented.
#
# strlen:
# Marks the function as accepting one unique parameter of type string,
# and returning 0 is equivalent to the parameter being an empty string.
#
# detect:
# Marks the function/event as being a detection one.
#
# touch:
# Marks the event as being a touch event.
#
# grab:
# Marks the event as enabling grab detection.
#
# delay <value>:
# Function has a delay.
#
# SEF [if <condition>]:
# Side-effect free. The function has no side effects when executed,
# which means that when used in a situation where it does nothing,
# it can be removed without affecting execution. Example:
# llGetNumberOfPrims(). All functions with delay have a side effect
# (the delay itself).
#
# With if <condition>, the function is SEF if the parameters are
# found to meet the condition. Syntax of <condition> is explained below.
#
# min:
# Applied to functions that return integer or float. Specifies the
# minimum value it may return. If not present, assume the minimum
# possible (-inf for floats, -2147483648 for integers). Use like this:
#
# - min <min value>
#
# max:
# Like min, but for the maximum value.
#
# listto:
# Identifies the function as a list-extracting function, for use with
# lazy lists. It needs an LSL type as a parameter.
#
# return <value> [if <condition>]:
# Self-explanatory. There can be several; they are evaluated in order.
# <value> can be a parameter or a LSL constant. <condition> is explaned
# below.
#
# <condition>
# Subset of LSL expressions using only (, ), ==, !=, <, <=, >, >=,
# &&, ||, constants, function parameters and one function. As an extension,
# Python-like operator chaining works, e.g. a < b < c or a == b == c.
# && has more priority than ||.
# The type of comparisons is bool and can't be used as integer.
# Lists are compared for equal. Elements in lists, vectors and
# rotations must be constants.
#
# ['<' and '>' need spaces around them when they are comparisons;
# vectors need to have no space after '<' or before '>'.] -> Let's not,
# and see what happens.
#
# Strings are automatically type cast to key when necessary, and integers
# to floats, but not vice versa. Function bool nulluuid(key k) is allowed.
#
# There's a pseudo-parameter of type string that is always available:
# event (the event where the function is called, if known; else "")
# A comment like this:
#
# physics caveat
#
# means that tests show it's apparently stable because physics are
# recomputed every frame, and the frame doesn't change that often.
integer llAbs(integer val)
- SEF
- min 0
float llAcos(float val)
- SEF
- min -3.1415927
- max 3.1415927
void llAddToLandBanList(key avatar, float hours)
- delay 0.1
void llAddToLandPassList(key avatar, float hours)
- delay 0.1
void llAdjustSoundVolume(float volume)
- delay 0.1
integer llAgentInExperience(key agent)
- SEF
- min 0
- max 1
void llAllowInventoryDrop(integer add)
float llAngleBetween(rotation a, rotation b)
- SEF
- min 0
- max 3.1415927
void llApplyImpulse(vector force, integer local)
void llApplyRotationalImpulse(vector force, integer local)
float llAsin(float val)
- SEF
- min -1.5707964
- max 1.5707964
float llAtan2(float y, float x)
- SEF
- min -3.1415927
- max 3.1415927
void llAttachToAvatar(integer attach_point)
void llAttachToAvatarTemp(integer attach_point)
key llAvatarOnLinkSitTarget(integer link)
- SEF
- return "00000000-0000-0000-0000-000000000000" if link < -2147483647 || link > 256
key llAvatarOnSitTarget()
- SEF
rotation llAxes2Rot(vector fwd, vector left, vector up)
- SEF
rotation llAxisAngle2Rot(vector axis, float angle)
- SEF
integer llBase64ToInteger(string str)
# While it's unstable for some strings, we ignore that part.
- SEF
string llBase64ToString(string str)
- SEF
void llBreakAllLinks()
void llBreakLink(integer linknum)
- SEF if linknum > 256
list llCSV2List(string src)
- SEF
list llCastRay(vector start, vector end, list params)
- SEF
integer llCeil(float val)
- SEF
void llClearCameraParams()
void llClearExperiencePermissions(key agent)
integer llClearLinkMedia(integer link, integer face)
- min 0
- max 2001
- SEF if link > 256 || link < -2147483647
- return 0 if link < -2147483647 || link > 256
integer llClearPrimMedia(integer face)
- delay 1.0
- min 0
- max 2001
void llCloseRemoteDataChannel(key channel)
- delay 1.0
float llCloud(vector offset)
- SEF
- min 0
- max 0
- return 0
void llCollisionFilter(string name, key id, integer accept)
void llCollisionSound(string impact_sound, float impact_volume)
void llCollisionSprite(string impact_sprite)
- SEF
float llCos(float theta)
- SEF
- min -1
- max 1
void llCreateCharacter(list options)
key llCreateKeyValue(string k, string v)
- unstable
void llCreateLink(key target, integer parent)
- delay 1.0
key llDataSizeKeyValue()
- unstable
void llDeleteCharacter()
key llDeleteKeyValue(string k)
- unstable
list llDeleteSubList(list src, integer start, integer end)
- SEF
string llDeleteSubString(string src, integer start, integer end)
- SEF
void llDetachFromAvatar()
vector llDetectedGrab(integer number)
- detect
- SEF
# llDetectedGrab() only works for touch(), not for touch_start() etc.
- return <0,0,0> if event != "" && event != "touch" || number < 0 || number > 15
integer llDetectedGroup(integer number)
- detect
- SEF
- min 0
- max 1
- return 0 if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
key llDetectedKey(integer number)
- detect
- SEF
- return "00000000-0000-0000-0000-000000000000" if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
integer llDetectedLinkNumber(integer number)
- detect
- SEF
- min 0
- max 256
- return 0 if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
string llDetectedName(integer number)
- detect
- SEF
- return "00000000-0000-0000-0000-000000000000" if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
key llDetectedOwner(integer number)
- detect
- SEF
- return "00000000-0000-0000-0000-000000000000" if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
vector llDetectedPos(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
rotation llDetectedRot(integer number)
- detect
- SEF
- return <0,0,0,1> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
vector llDetectedTouchBinormal(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" || number < 0 || number > 15
integer llDetectedTouchFace(integer number)
- detect
- SEF
- min -1
- max 8
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" || number < 0 || number > 15
vector llDetectedTouchNormal(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" || number < 0 || number > 15
vector llDetectedTouchPos(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" || number < 0 || number > 15
vector llDetectedTouchST(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
- return <-1,-1,0> if (event == "collision" || event == "collision_start" || event == "collision_end" || event == "sensor") && number == 0
vector llDetectedTouchUV(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
- return <-1,-1,0> if (event == "collision" || event == "collision_start" || event == "collision_end" || event == "sensor") && number == 0
integer llDetectedType(integer number)
- detect
- SEF
- min 0
- max 15
- return 0 if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
vector llDetectedVel(integer number)
- detect
- SEF
- return <0,0,0> if event != "" && event != "touch" && event != "touch_start" && event != "touch_end" && event != "collision" && event != "collision_start" && event != "collision_end" && event != "sensor" || number < 0 || number > 15
void llDialog(key avatar, string message, list buttons, integer chat_channel)
- delay 1.0
void llDie()
string llDumpList2String(list src, string separator)
- SEF
integer llEdgeOfWorld(vector pos, vector dir)
- SEF
- min 0
- max 1
void llEjectFromLand(key avatar)
void llEmail(string address, string subject, string message)
- delay 20.0
string llEscapeURL(string url)
- SEF
rotation llEuler2Rot(vector v)
- SEF
void llEvade(key target, list options)
void llExecCharacterCmd(integer cmd, list options)
float llFabs(float val)
- SEF
- min 0
void llFleeFrom(vector source, float radius, list options)
integer llFloor(float val)
- SEF
void llForceMouselook(integer mouselook)
float llFrand(float mag)
- unstable
- SEF
# It's not really SEF, in that it supposedly updates the internal state,
# but assuming it's actually SEF is safe because the seed is unknown.
key llGenerateKey()
- unstable
- SEF
vector llGetAccel()
# physics caveat
#- unstable
- SEF
integer llGetAgentInfo(key id)
- SEF
- min 0
- return 0 if nulluuid(id)
string llGetAgentLanguage(key avatar)
- SEF
- return "" if nulluuid(id)
list llGetAgentList(integer scope, list options)
- SEF
- return "INVALID_SCOPE" if scope != 1 && scope != 2 && scope != 4
vector llGetAgentSize(key id)
- SEF
- return <0,0,0> if nulluuid(id)
float llGetAlpha(integer face)
- SEF
- min 0
- max 1
- return 1 if face > 8
float llGetAndResetTime()
- unstable
- min 0
string llGetAnimation(key id)
- SEF
- return "" if nulluuid(id)
list llGetAnimationList(key id)
- SEF
- return "" if nulluuid(id)
string llGetAnimationOverride(string anim_state)
# may err, therefore not SEF
integer llGetAttached()
- SEF
- min 0
- max 55
list llGetAttachedList(key agent)
- SEF
- return ["NOT FOUND"] if nulluuid(agent)
list llGetBoundingBox(key object)
- SEF
- return [] if nulluuid(object)
vector llGetCameraPos()
# it errs therefore not SEF
rotation llGetCameraRot()
# it errs therefore not SEF
vector llGetCenterOfMass()
- SEF
list llGetClosestNavPoint(vector point, list options)
# Claimed to have a delay, but such delay is 1 frame (?)
- SEF
vector llGetColor(integer face)
- SEF
- return <1,1,1> if face > 8
key llGetCreator()
- SEF
string llGetDate()
- SEF
integer llGetDayLength()
- SEF
- min 0
integer llGetDayOffset()
- SEF
string llGetDisplayName(key id)
- SEF
- return "" if nulluuid(id)
float llGetEnergy()
# physics caveat
#- unstable
- SEF
- min 0
- max 1
string llGetEnv(string name)
- SEF
- return "" if name == ""
list llGetEnvironment(vector pos, list params)
# presumed:
- SEF
# TODO: not used yet, check if it has more properties.
# Possibly a candidate for lslfuncopt.py (check).
list llGetExperienceDetails(key experience_id)
- SEF
string llGetExperienceErrorMessage(integer value)
- SEF
- return "no error" if value == 0
- return "exceeded throttle" if value == 1
- return "experiences are disabled" if value == 2
- return "invalid parameters" if value == 3
- return "operation not permitted" if value == 4
- return "script not associated with an experience" if value == 5
- return "not found" if value == 6
- return "invalid experience" if value == 7
- return "experience is disabled" if value == 8
- return "experience is suspended" if value == 9
- return "unknown error" if value == 10
- return "experience data quota exceeded" if value == 11
- return "key-value store is disabled" if value == 12
- return "key-value store communication failed" if value == 13
- return "key doesn't exist" if value == 14
- return "retry update" if value == 15
- return "experience content rating too high" if value == 16
- return "not allowed to run in current location" if value == 17
- return "experience permissions request timed out" if value == 18
- return "unknown error id"
list llGetExperienceList(key agent)
- SEF
- return []
vector llGetForce()
- SEF
integer llGetFreeMemory()
- SEF
- min 0
- max 65536
integer llGetFreeURLs()
- SEF
- min 0
- max 65536
float llGetGMTclock()
- SEF
- min 0
- max 86399
vector llGetGeometricCenter()
- SEF
string llGetHTTPHeader(key request_id, string header)
- SEF
- return "" if nulluuid(request_id)
key llGetInventoryCreator(string item)
- SEF
key llGetInventoryKey(string name)
- SEF
- return "00000000-0000-0000-0000-000000000000" if name == ""
string llGetInventoryName(integer type, integer number)
- SEF
- return "" if type != -1 && type != 0 && type != 1 && type != 3 && type != 5 && type != 6 && type != 7 && type != 10 && type != 13 && type != 20 && type != 21 || number < 0
integer llGetInventoryNumber(integer type)
- SEF
- min 0
- return 0 if type != -1 && type != 0 && type != 1 && type != 3 && type != 5 && type != 6 && type != 7 && type != 10 && type != 13 && type != 20 && type != 21
integer llGetInventoryPermMask(string item, integer mask)
- SEF
- min 0
- return 0 if mask < 0 || mask > 4 || item == ""
# we've completed up to here
integer llGetInventoryType(string name)
- SEF
- min -1
- max 57
key llGetKey()
- SEF
key llGetLandOwnerAt(vector pos)
- SEF
key llGetLinkKey(integer linknumber)
- SEF
list llGetLinkMedia(integer link, integer face, list params)
- SEF
string llGetLinkName(integer linknumber)
- SEF
integer llGetLinkNumber()
- SEF
- min 0
- max 256
integer llGetLinkNumberOfSides(integer link)
- SEF
- min 1
- max 9
list llGetLinkPrimitiveParams(integer linknumber, list rules)
- SEF
integer llGetListEntryType(list src, integer index)
- SEF
- min 0
- max 6
integer llGetListLength(list src)
- SEF
- min 0
vector llGetLocalPos()
# physics caveat
#- unstable
- SEF
rotation llGetLocalRot()
# physics caveat
#- unstable
- SEF
float llGetMass()
- SEF
- min 0
float llGetMassMKS()
- SEF
- min 0
float llGetMaxScaleFactor()
- SEF
- min 0
integer llGetMemoryLimit()
- SEF
- min 0
float llGetMinScaleFactor()
- SEF
- min 0
vector llGetMoonDirection()
- SEF
rotation llGetMoonRotation()
- SEF
void llGetNextEmail(string address, string subject)
key llGetNotecardLine(string name, integer line)
- unstable
- delay 0.1
key llGetNumberOfNotecardLines(string name)
- unstable
- delay 0.1
integer llGetNumberOfPrims()
- SEF
- min 1
integer llGetNumberOfSides()
- SEF
- min 1
- max 9
list llGetObjectAnimationNames()
- SEF
string llGetObjectDesc()
- SEF
list llGetObjectDetails(key id, list params)
# physics caveat
#- unstable
- SEF
key llGetObjectLinkKey(key id, integer link)
- SEF
float llGetObjectMass(key id)
- SEF
- min 0
string llGetObjectName()
- SEF
integer llGetObjectPermMask(integer mask)
- SEF
- min 0
integer llGetObjectPrimCount(key object_id)
- SEF
- min 0
- max 256
- return 0 if nulluuid(object_id)
vector llGetOmega()
# physics caveat
#- unstable
- SEF
key llGetOwner()
- SEF
key llGetOwnerKey(key id)
- SEF
- return "00000000-0000-0000-0000-000000000000" if nulluuid(id)
list llGetParcelDetails(vector pos, list params)
- SEF
integer llGetParcelFlags(vector pos)
- SEF
# bit 31 can be set hence no limits
integer llGetParcelMaxPrims(vector pos, integer sim_wide)
- SEF
- min 0
string llGetParcelMusicURL()
- SEF
integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
- SEF
- min 0
list llGetParcelPrimOwners(vector pos)
- delay 2.0
integer llGetPermissions()
- SEF
- min 0
key llGetPermissionsKey()
- SEF
list llGetPhysicsMaterial()
- SEF
vector llGetPos()
# physics caveat
#- unstable
- SEF
list llGetPrimMediaParams(integer face, list params)
- delay 1.0
list llGetPrimitiveParams(list params)
- delay 0.2
integer llGetRegionAgentCount()
- SEF
- min 0
vector llGetRegionCorner()
- SEF
integer llGetRegionDayLength()
- SEF
- min 0
integer llGetRegionDayOffset()
- SEF
float llGetRegionFPS()
- SEF
- min 0
- max 45
integer llGetRegionFlags()
- SEF
# bit 31 can be set hence no limits
vector llGetRegionMoonDirection()
- SEF
rotation llGetRegionMoonRotation()
- SEF
string llGetRegionName()
- SEF
vector llGetRegionSunDirection()
- SEF
rotation llGetRegionSunRotation()
- SEF
float llGetRegionTimeDilation()
- SEF
- min 0
- max 1
vector llGetRootPosition()
# physics caveat
#- unstable
- SEF
rotation llGetRootRotation()
# physics caveat
#- unstable
- SEF
rotation llGetRot()
# physics caveat
#- unstable
- SEF
integer llGetSPMaxMemory()
- SEF
- min 0
vector llGetScale()
- SEF
string llGetScriptName()
- SEF
integer llGetScriptState(string name)
- SEF
- min 0
- max 1
float llGetSimStats(integer stat_type)
- SEF
- min 0
string llGetSimulatorHostname()
- delay 10.0
integer llGetStartParameter()
- SEF
list llGetStaticPath(vector start, vector end, float radius, list params)
# believed to be side-effect free
- SEF
integer llGetStatus(integer status)
- SEF
- min 0
- max 1
string llGetSubString(string src, integer start, integer end)
- SEF
vector llGetSunDirection()
- SEF
rotation llGetSunRotation()
- SEF
string llGetTexture(integer face)
- SEF
- return "00000000-0000-0000-0000-000000000000" if face > 8
vector llGetTextureOffset(integer face)
- SEF
- return <0,0,0> if face > 8
float llGetTextureRot(integer side)
- SEF
- return 0 if side > 8
vector llGetTextureScale(integer side)
- SEF
- return <0,0,0> if side > 8
float llGetTime()
- SEF
# It's stable within the same frame.
- min 0
float llGetTimeOfDay()
- unstable
- SEF
- min 0
- max 86399.9921875
string llGetTimestamp()
- unstable
- SEF
vector llGetTorque()
- SEF
integer llGetUnixTime()
- unstable
- SEF
integer llGetUsedMemory()
- unstable
- SEF
- min 0
string llGetUsername(key id)
- SEF
vector llGetVel()
# physics caveat
#- unstable
- SEF
list llGetVisualParams(key id, list params)
- SEF
float llGetWallclock()
- SEF
- min 0
- max 86399
void llGiveInventory(key destination, string inventory)
# delay only applies if giving to avatars
# (delay is not important because it's not applied when SEF)
#- delay 2.0
- SEF if nulluuid(destination)
void llGiveInventoryList(key target, string folder, list inventory)
- delay 3.0
integer llGiveMoney(key destination, integer amount)
- min 0
- max 0
void llGodLikeRezObject(key inventory, vector pos)
float llGround(vector offset)
- SEF
- min 0
- max 65536
vector llGroundContour(vector offset)
- SEF
vector llGroundNormal(vector offset)
- SEF
void llGroundRepel(float height, integer water, float tau)
vector llGroundSlope(vector offset)
- SEF
key llHTTPRequest(string url, list parameters, string body)
- unstable
void llHTTPResponse(key request_id, integer status, string body)
string llInsertString(string dst, integer position, string src)
- SEF
void llInstantMessage(key user, string message)
- delay 2.0
string llIntegerToBase64(integer number)
- SEF
list llJson2List(string json)
- SEF
string llJsonGetValue(string json, list specifiers)
- SEF
string llJsonSetValue(string json, list specifiers, string value)
- SEF
string llJsonValueType(string json, list specifiers)
- SEF
string llKey2Name(key id)
- SEF
key llKeyCountKeyValue()
- unstable
key llKeysKeyValue(integer start, integer count)
- unstable
vector llLinear2sRGB(vector color)
- SEF
void llLinkParticleSystem(integer linknumber, list rules)
- SEF if linknumber > 256
void llLinkSitTarget(integer link, vector offset, rotation rot)
- SEF if link > 256
integer llLinksetDataAvailable()
- SEF
- min 0
integer llLinksetDataCountKeys()
- SEF
- min 0
integer llLinksetDataDelete(string key)
- min 0
- max 5
integer llLinksetDataDeleteProtected(string key, string password)
- min 0
- max 5
list llLinksetDataFindKeys(string pattern, integer start, integer count)
- SEF
list llLinksetDataListKeys(integer start, integer count)
- SEF
string llLinksetDataRead(string key)
- SEF
string llLinksetDataReadProtected(string key, string password)
- SEF
void llLinksetDataReset()
integer llLinksetDataWrite(string key, string value)
- min 0
- max 5
integer llLinksetDataWriteProtected(string key, string value, string password)
- min 0
- max 5
string llList2CSV(list src)
- SEF
float llList2Float(list src, integer index)
- SEF
- listto float
integer llList2Integer(list src, integer index)
- SEF
- listto integer
string llList2Json(string type, list values)
- SEF
key llList2Key(list src, integer index)
- SEF
- listto key
list llList2List(list src, integer start, integer end)
- SEF
- listto list
list llList2ListStrided(list src, integer start, integer end, integer stride)
- SEF
rotation llList2Rot(list src, integer index)
- SEF
- listto rotation
string llList2String(list src, integer index)
- SEF
- listto string
vector llList2Vector(list src, integer index)
- SEF
- listto vector
integer llListFindList(list src, list test)
- SEF
- min -1
list llListInsertList(list dest, list src, integer start)
- SEF
list llListRandomize(list src, integer stride)
- unstable
- SEF
list llListReplaceList(list dest, list src, integer start, integer end)
- SEF
list llListSort(list src, integer stride, integer ascending)
- SEF
float llListStatistics(integer operation, list src)
- SEF
integer llListen(integer channel, string name, key id, string msg)
- unstable
void llListenControl(integer number, integer active)
- SEF if number == 0
void llListenRemove(integer number)
- SEF if number == 0
void llLoadURL(key avatar, string message, string url)
- delay 0.1
float llLog(float val)
- SEF
float llLog10(float val)
- SEF
void llLookAt(vector target, float strength, float damping)
void llLoopSound(string sound, float volume)
void llLoopSoundMaster(string sound, float volume)
void llLoopSoundSlave(string sound, float volume)
string llMD5String(string src, integer nonce)
- SEF
void llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
- delay 0.1
void llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
- delay 0.1
void llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset)
- delay 0.1
void llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
- delay 0.1
integer llManageEstateAccess(integer action, key id)
# not SEF (generates errors on invalid action or key)
- min 0
- max 1
void llMapDestination(string simname, vector pos, vector look_at)
- delay 1.0
void llMessageLinked(integer linknum, integer num, string str, key id)
- SEF if linknum > 256
void llMinEventDelay(float delay)
integer llModPow(integer a, integer b, integer c)
- delay 1.0
void llModifyLand(integer action, integer brush)
void llMoveToTarget(vector target, float tau)
key llName2Key(string name)
- SEF
- return "00000000-0000-0000-0000-000000000000" if name == ""
void llNavigateTo(vector point, list options)
void llOffsetTexture(float u, float v, integer face)
- delay 0.2
void llOpenRemoteDataChannel()
- delay 1.0
integer llOverMyLand(key id)
- SEF
- min 0
- max 1
# assumed:
- return 0 if nulluuid(id)
void llOwnerSay(string msg)
void llParcelMediaCommandList(list command)
- delay 2.0
list llParcelMediaQuery(list query)
- delay 2.0
list llParseString2List(string src, list separators, list spacers)
- SEF
list llParseStringKeepNulls(string src, list separators, list spacers)
- SEF
void llParticleSystem(list rules)
void llPassCollisions(integer pass)
void llPassTouches(integer pass)
void llPatrolPoints(list points, list options)
void llPlaySound(string sound, float volume)
void llPlaySoundSlave(string sound, float volume)
void llPointAt(vector pos)
- SEF
float llPow(float base, float exponent)
- SEF
# note: can generate negative numbers, e.g. llPow(-2, 3)
void llPreloadSound(string sound)
- delay 1.0
void llPursue(key target, list options)
void llPushObject(key id, vector impulse, vector ang_impulse, integer local)
key llReadKeyValue(string k)
- unstable
void llRefreshPrimURL()
# emits an error -> has side effects
- delay 20.0
void llRegionSay(integer channel, string msg)
# channel 0 emits an error -> not SEF
void llRegionSayTo(key target, integer channel, string msg)
void llReleaseCamera(key avatar)
- SEF
void llReleaseControls()
void llReleaseURL(string url)
- SEF if url == ""
void llRemoteDataReply(key channel, key message_id, string sdata, integer idata)
- delay 3.0
void llRemoteDataSetRegion()
void llRemoteLoadScript(key target, string name, integer running, integer start_param)
# emits an error -> has side effects
- delay 3.0
void llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)
- delay 3.0
void llRemoveFromLandBanList(key avatar)
- delay 0.1
void llRemoveFromLandPassList(key avatar)
- delay 0.1
void llRemoveInventory(string item)
void llRemoveVehicleFlags(integer flags)
integer llSetEnvironment(vector position, list params)
# not sure but we better choose the safest setting
- unstable
- min -9
- max 1
integer llReplaceEnvironment(vector position, string environment, integer track_no, integer day_length, integer day_offset)
# not sure but we better choose the safest setting
- unstable
- min -9
- max 1
key llRequestAgentData(key id, integer data)
- unstable
- delay 0.1
key llRequestDisplayName(key id)
- unstable
- SEF if nulluuid(id)
void llRequestExperiencePermissions(key agent, string name)
key llRequestInventoryData(string name)
- unstable
- delay 1.0
void llRequestPermissions(key agent, integer perm)
# if agent does not exist, it errs, so this is not true:
#- SEF if perm == 0
key llRequestSecureURL()
- unstable
key llRequestSimulatorData(string simulator, integer data)
- unstable
- delay 1.0
key llRequestURL()
- unstable
key llRequestUsername(key id)
- unstable
key llRequestUserKey(string name)
- unstable
void llResetAnimationOverride(string anim_state)
void llResetLandBanList()
- delay 0.1
void llResetLandPassList()
- delay 0.1
void llResetOtherScript(string name)
void llResetScript()
- stop
void llResetTime()
integer llReturnObjectsByID(list objects)
- min -5
- max 65536
integer llReturnObjectsByOwner(key owner, integer scope)
# assumed unstable
- unstable
- min -5
- max 65536
void llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param)
- delay 0.1
void llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param)
- delay 0.1
float llRot2Angle(rotation rot)
- SEF
- min 0
- max 3.1415927
vector llRot2Axis(rotation rot)
- SEF
vector llRot2Euler(rotation q)
- SEF
vector llRot2Fwd(rotation q)
- SEF
vector llRot2Left(rotation q)
- SEF
vector llRot2Up(rotation q)
- SEF
rotation llRotBetween(vector v1, vector v2)
- SEF
void llRotLookAt(rotation target, float strength, float damping)
integer llRotTarget(rotation rot, float error)
- unstable
void llRotTargetRemove(integer number)
void llRotateTexture(float angle, integer face)
- delay 0.2
integer llRound(float val)
- SEF
string llSHA1String(string src)
- SEF
string llSHA256String(string src)
- SEF
integer llSameGroup(key id)
- SEF
- min 0
- max 1
void llSay(integer channel, string msg)
integer llScaleByFactor(float scaling_factor)
- unstable
- min 0
- max 1
void llScaleTexture(float u, float v, integer face)
- delay 0.2
integer llScriptDanger(vector pos)
- SEF
- min 0
- max 1
void llScriptProfiler(integer flags)
key llSendRemoteData(key channel, string dest, integer idata, string sdata)
- unstable
- delay 3.0
void llSensor(string name, key id, integer type, float range, float arc)
# type == 0 || range == 0 cancels a sensor in this frame.
void llSensorRemove()
void llSensorRepeat(string name, key id, integer type, float range, float arc, float rate)
void llSetAlpha(float alpha, integer face)
- SEF if face > 8
void llSetAngularVelocity(vector angular_velocity, integer local)
void llSetAnimationOverride(string anim_state, string anim)
void llSetBuoyancy(float buoyancy)
void llSetCameraAtOffset(vector offset)
void llSetCameraEyeOffset(vector offset)
void llSetCameraParams(list rules)
void llSetClickAction(integer action)
void llSetColor(vector color, integer face)
- SEF if face > 8
void llSetContentType(key request_id, integer content_type)
- SEF if nulluuid(request_id)
void llSetDamage(float damage)
void llSetForce(vector force, integer local)
void llSetForceAndTorque(vector force, vector torque, integer local)
void llSetHoverHeight(float height, integer water, float tau)
void llSetInventoryPermMask(string item, integer mask, integer value)
void llSetKeyframedMotion(list keyframes, list options)
void llSetLinkAlpha(integer linknumber, float alpha, integer face)
- SEF if linknumber > 256 || face > 8
void llSetLinkCamera(integer link, vector eye, vector at)
- SEF if link > 256
void llSetLinkColor(integer linknumber, vector color, integer face)
- SEF if linknumber > 256 || face > 8
integer llSetLinkMedia(integer link, integer face, list params)
- SEF if link > 256
- min 0
- max 2001
void llSetLinkPrimitiveParams(integer linknumber, list rules)
- delay 0.2
void llSetLinkPrimitiveParamsFast(integer linknumber, list rules)
- SEF if linknumber > 256
void llSetLinkTexture(integer linknumber, string texture, integer face)
- delay 0.2
void llSetLinkTextureAnim(integer link, integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)
- SEF if linknumber > 256
void llSetLocalRot(rotation rot)
- delay 0.2
integer llSetMemoryLimit(integer limit)
- SEF if limit <= 0
- min 0
- max 1
void llSetObjectDesc(string desc)
void llSetObjectName(string name)
void llSetObjectPermMask(integer mask, integer value)
void llSetParcelMusicURL(string url)
- delay 2.0
void llSetPayPrice(integer price, list quick_pay_buttons)
void llSetPhysicsMaterial(integer flags, float gravity_multiplier, float restitution, float friction, float density)
- SEF if flags == 0
void llSetPos(vector pos)
- delay 0.2
integer llSetPrimMediaParams(integer face, list params)
- delay 1.0
- min 0
- max 2001
void llSetPrimURL(string url)
# emits an error -> has side effects
- delay 20.0
void llSetPrimitiveParams(list rules)
- delay 0.2
integer llSetRegionPos(vector pos)
# unstable because it may fail when becoming more accurate and positioning
# over an invalid parcel
- unstable
- min 0
- max 1
void llSetRemoteScriptAccessPin(integer pin)
- delay 0.2
void llSetRot(rotation rot)
- delay 0.2
void llSetScale(vector scale)
void llSetScriptState(string name, integer run)
void llSetSitText(string text)
void llSetSoundQueueing(integer queue)
void llSetSoundRadius(float radius)
void llSetStatus(integer status, integer value)
void llSetText(string text, vector color, float alpha)
void llSetTexture(string texture, integer face)
- delay 0.2
void llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)
void llSetTimerEvent(float sec)
void llSetTorque(vector torque, integer local)
void llSetTouchText(string text)
void llSetVehicleFlags(integer flags)
void llSetVehicleFloatParam(integer param, float value)
void llSetVehicleRotationParam(integer param, rotation rot)
void llSetVehicleType(integer type)
void llSetVehicleVectorParam(integer param, vector vec)
void llSetVelocity(vector velocity, integer local)
void llShout(integer channel, string msg)
float llSin(float theta)
- SEF
- min -1
- max 1
integer llSitOnLink(key agent_id, integer link)
- min -7
- max 1
void llSitTarget(vector offset, rotation rot)
void llSleep(float sec)
void llSound(string sound, float volume, integer queue, integer loop)
void llSoundPreload(string sound)
float llSqrt(float val)
- SEF
- min 0
vector llsRGB2Linear(vector srgb)
- SEF
void llStartAnimation(string anim)
void llStartObjectAnimation(string anim)
void llStopAnimation(string anim)
void llStopObjectAnimation(string anim)
void llStopHover()
void llStopLookAt()
void llStopMoveToTarget()
void llStopPointAt()
void llStopSound()
integer llStringLength(string str)
- SEF
- min 0
- strlen
string llStringToBase64(string str)
- SEF
string llStringTrim(string src, integer trim_type)
- SEF
integer llSubStringIndex(string source, string pattern)
- SEF
- min -1
void llTakeCamera(key avatar)
- SEF
void llTakeControls(integer controls, integer accept, integer pass_on)
float llTan(float theta)
- SEF
integer llTarget(vector position, float range)
- unstable
void llTargetedEmail(integer target, string subject, string body)
- delay 20.0
void llTargetOmega(vector axis, float spinrate, float gain)
void llTargetRemove(integer number)
- SEF if number == 0
void llTeleportAgent(key avatar, string landmark, vector position, vector look_at)
void llTeleportAgentGlobalCoords(key agent, vector global_coordinates, vector region_coordinates, vector look_at)
void llTeleportAgentHome(key id)
- delay 5.0
void llTextBox(key avatar, string message, integer chat_channel)
- delay 1.0
string llToLower(string src)
- SEF
string llToUpper(string src)
- SEF
key llTransferLindenDollars(key destination, integer amount)
- unstable
void llTriggerSound(string sound, float volume)
void llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west)
void llUnSit(key id)
string llUnescapeURL(string url)
- SEF
void llUpdateCharacter(list options)
key llUpdateKeyValue(string k, string v, integer checked, string original_value)
- unstable
float llVecDist(vector v1, vector v2)
- SEF
- min 0
float llVecMag(vector v)
- SEF
- min 0
vector llVecNorm(vector v)
- SEF
void llVolumeDetect(integer detect)
void llWanderWithin(vector center, vector radius, list options)
float llWater(vector offset)
- SEF
- min 0
void llWhisper(integer channel, string msg)
vector llWind(vector offset)
- SEF
string llXorBase64(string str1, string str2)
- SEF
string llXorBase64Strings(string str1, string str2)
- delay 0.3
string llXorBase64StringsCorrect(string str1, string str2)
- SEF
integer llReplaceAgentEnvironment(key agent_id, float transition, string environment)
- unstable
- min -8
- max 1
integer llSetAgentEnvironment(key agent_id, float transition, list params)
- unstable
- min -8
- max 1
float llGetRegionTimeOfDay()
- SEF
- unstable
- min 0
- max 86399.9921875
string llChar(integer code)
- SEF
integer llHash(string val)
- SEF
integer llOrd(string val, integer index)
- SEF
- min 0
- max 1114111
integer llOpenFloater(string title, string url, list params)
- unstable
# (may fail if invoked a second time, e.g. if throttled)
- min -4
- max 0
string llGetInventoryAcquireTime(string item)
- SEF
void llLinkPlaySound(integer link, string sound, float volume, integer flags)
void llLinkStopSound(integer link)
void llLinkAdjustSoundVolume(integer link, float volume)
- delay 0.1
void llLinkSetSoundQueueing(integer link, integer queue)
void llLinkSetSoundRadius(integer link, float radius)
string llHMAC(string authkey, string message, string alg)
- SEF if alg == "md5" || alg == "sha1" || alg == "sha224" || alg == "sha256" || alg == "sha384" || alg == "sha512"
# otherwise error
string llSignRSA(string privkey, string message, string alg)
- SEF if alg == "md5" || alg == "sha1" || alg == "sha224" || alg == "sha256" || alg == "sha384" || alg == "sha512"
# otherwise error
integer llVerifyRSA(string pubkey, string message, string signature, string alg)
- SEF if alg == "md5" || alg == "sha1" || alg == "sha224" || alg == "sha256" || alg == "sha384" || alg == "sha512"
# otherwise error
- min 0
- max 1
string llReplaceSubString(string source, string search, string replace, integer count)
- SEF
list llList2ListSlice(list src, integer start, integer end, integer stride, integer slice_index)
- SEF
integer llListFindStrided(list src, list test, integer start, integer end, integer stride)
- SEF
- min 0
list llListSortStrided(list src, integer stride, integer stride_index, integer ascending)
- SEF
integer llLinksetDataCountFound(string pattern)
- SEF
- min 0
list llLinksetDataDeleteFound(string pattern, string pass)
string llGetRenderMaterial(integer face)
- SEF
void llSetRenderMaterial(string material, integer face)
void llSetLinkRenderMaterial(integer link, string material, integer face)
string llComputeHash(string data, string algorithm)
- SEF if alg == "md5" || alg == "md5_sha1" || alg == "sha1" || alg == "sha224" || alg == "sha256" || alg == "sha384" || alg == "sha512"
# otherwise error
float llGetCameraAspect()
# No error if PERMISSION_TRACK_CAMERA not granted, hence SEF
- SEF
- min 0
float llGetCameraFOV()
# No error if PERMISSION_TRACK_CAMERA not granted, hence SEF
- SEF
- min 0
string llGetInventoryDesc(string itemname)
# May produce error (if item doesn't exist), hence not SEF
integer llGetLinkSitFlags(integer link)
- SEF
- min 0
string llGetNotecardLineSync(string name, integer line)
# May produce error (if notecard doesn't exist), hence not SEF
integer llIsFriend(key agent)
- SEF
- min 0
- max 1
integer llListFindListNext(list src, list test, integer n)
- SEF
- min 0
void llRezObjectWithParams(string itemname, list params)
- delay 0.1
void llSetLinkSitFlags(integer link, integer flags)
vector llWorldPosToHUD(vector pos)
- SEF
###################################################################
# Events are SEF if a script with an empty event can't be
# distinguished from a script without that event except for the
# extra CPU and memory consumption.
event at_rot_target(integer tnum, rotation targetrot, rotation ourrot)
- SEF
event at_target(integer tnum, vector targetpos, vector ourpos)
- SEF
event attach(key id)
- SEF
event changed(integer change)
- SEF
event collision(integer num_detected)
- detect
# Prevents events in the parent from triggering, depending on llPassCollisions,
# therefore not SEF.
event collision_end(integer num_detected)
- detect
# Not SEF; see collision().
event collision_start(integer num_detected)
- detect
# Not SEF; see collision().
event control(key id, integer level, integer edge)
- SEF
event dataserver(key queryid, string data)
- SEF
event email(string time, string address, string subj, string message, integer num_left)
- SEF
event experience_permissions(key agent)
- SEF
event experience_permissions_denied(key agent, integer reason)
- SEF
event http_request(key id, string method, string body)
# Since you can't see the URL, you can't notice the difference.
- SEF
event http_response(key request_id, integer status, list metadata, string body)
- SEF
event land_collision(vector pos)
# Same as with collision().
event land_collision_end(vector pos)
# Same as with collision().
event land_collision_start(vector pos)
# Same as with collision().
event link_message(integer sender_num, integer num, string str, key id)
- SEF
event linkset_data(integer action, string key, string value)
- SEF
event listen(integer channel, string name, key id, string message)
- SEF
event money(key id, integer amount)
# Adds Pay menu option, therefore not SEF.
event moving_end()
- SEF
event moving_start()
- SEF
event no_sensor()
- SEF
event not_at_rot_target()
- SEF
event not_at_target()
- SEF
event object_rez(key id)
- SEF
event on_rez(integer start_param)
- SEF
event path_update(integer type, list reserved)
- SEF
event remote_data(integer event_type, key channel, key message_id, string sender, integer idata, string sdata)
- SEF
event run_time_permissions(integer perm)
- SEF
event sensor(integer num_detected)
- detect
# There was a time when this was necessary for no_sensor() to trigger, but
# that's no longer the case and it is SEF now.
- SEF
event state_entry()
- SEF
event state_exit()
- SEF
event timer()
- SEF
event touch(integer num_detected)
- touch
- detect
- grab
# Not SEF for the same reasons as collision(); also it adds a hand cursor.
event touch_end(integer num_detected)
- touch
- detect
# Not SEF; see touch().
event touch_start(integer num_detected)
- touch
- detect
# Not SEF; see touch().
event transaction_result(key id, integer success, string data)
- SEF