From 1b6e9089ee1b04917162c75123c79b217b86bad5 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:22:11 +0000 Subject: [PATCH 01/26] Updated functions in highlighting file. Sorted functions to make finding/adding easier. Functions added: llCastRay llClearLinkMedia llGetDisplayName llGetLinkMedia llGetMassMKS llGetMemoryLimit llGetPhysicsMaterial llLinkSitTarget llManageEstateAccess llScriptProfiler llSetAngularVelocity llSetKeyframedMotion llSetLinkMedia llSetMemoryLimit llSetPhysicsMaterial llSetVelocity llTransferLindenDollars git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@37 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ConfLSL.xml | 4729 ++++++++++++++++++++---------------- 1 file changed, 2611 insertions(+), 2118 deletions(-) diff --git a/trunk/Resource/ConfLSL.xml b/trunk/Resource/ConfLSL.xml index b02f9e4..0db433a 100644 --- a/trunk/Resource/ConfLSL.xml +++ b/trunk/Resource/ConfLSL.xml @@ -1,4 +1,4 @@ - + + + integer llManageEstateAccess(integer Action, key AvatarID); + + Use to add or remove agents from the estate's agent access or ban lists or groups from the estate's group access list. + Returns an integer representing a boolean, TRUE if the call was successful; FALSE if throttled, invalid action, invalid or null id or object owner is not allowed to manage the estate. + One of the ESTATE_ACCESS_ALLOWED_* actions. + UUID of the avatar or group to act upon. + + + + llMapDestination(string simname, vector position, vector lookat); + + Shows a given location on the map. + Works in attachments, or during touch events. + Currently the function will open the map window whenever it is called. + There is no way to simply set the map position without + opening the window. + + llMessageLinked(integer linknum, integer num, string str, key id); @@ -1131,11 +1821,20 @@ The linknum parameter is either the linked number available through llGetLinkNumber or a link constant. + llMinEventDelay(float delay); Set the minimum time between events being handled. + + + integer llModPow(integer a, integer b, integer c); + + Returns a raised to the b power, mod c. ( (a ^ b)%c ). + b is capped at 0xFFFF (16 bits). + + llModifyLand(integer action, integer size); @@ -1148,1124 +1847,27 @@ LAND_SMALL_BRUSH, LAND_MEDIUM_BRUSH or LAND_LARGE_BRUSH + llMoveToTarget(vector target, float tau); Critically damp to position target in tau-seconds if the - script is physical. Good tau-values are greater than 0.2. + script is physical. Good tau-values are greater than 0.2. A tau of 0.0 stops the critical damping. + llOffsetTexture(float offset_s, float offset_t, integer face); - Sets the texture s and t offsets of face. - If face is ALL_SIDES this function sets the texture offsets for + Sets the texture s and t offsets of face. + If face is ALL_SIDES this function sets the texture offsets for all faces. - - integer llOverMyLand(key id); - Returns TRUE if id is over land owned by the object owner, - FALSE otherwise. - - - list llParseString2List(string src, list separators, list spacers); - - Breaks src into a list, discarding anything in separators, - keeping any entry in spacers. The - separators and spacers must be lists of strings with a maximum - of 8 entries each. So, if you had made the - call: - llParseString2List("Parsethisnow! I dare:you to.", ["this", "!", " "], [":"]); - You would get the list: - ["Parse", "now", "I", "dare", ":", "you", "to"] - - - llParticleSystem(list parameters); - - Makes a particle system based on the parameter list. - The parametersare specified as an ordered list of - parameter and value. Valid parameters and their expected - values can be found in the particle system constants. - Here is a simple example: - llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_WIND_MASK, - PSYS_PART_START_COLOR, <1,0,0>, - PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE]); - - - llPassCollisions(integer pass); - - If pass is TRUE, land and object collisions are passed from - children on to parents. - The default is FALSE if there is no script to handle the collision events. - - boolean, if TRUE, collisions are passed from children on to parents - - - - llPassTouches(integer pass); - - If pass is TRUE, touches are passed from children on to parents. - The default is TRUE if there is no script to handle the touch events. - - boolean, if TRUE, touches are passed from children on to parents - - - - llPlaySound(string sound, float volume); - - Plays a sound once. The sound will be attached to an object and - follow object movement. Only one sound may - be attached to an object at a time, and attaching a new sound or - calling llStopSound will stop the previously - attached sound. A second call to llPlaySound with the same sound - will not restart the sound, but the new - volume will be used, which allows control over the volume - of already playing sounds. To restart the sound from - the beginning, call llStopSound before calling llPlaySound again. - - - llPlaySoundSlave(string sound, float volume); - - Behavior is identical to llPlaySound, unless there is - a "Sync Master" present. If a Sync Master is already - playing the Slave sound will not be played until the Master - hits its loop point and returns to the beginning. - llPlaySoundSlave will play the sound exactly once; if it is - desired to have the sound play every time the Master - loops, either use llLoopSoundSlave with extra silence padded - on the end of the sound or ensure that - llPlaySoundSlave is called at least once per loop of the Master. - - - - llPow(float base, float exp); - - Returns base raised to the exp. - - - llPreloadSound(string sound); - - Preloads sound from object inventory on nearby viewers. - - - llPushObject(key id, vector impulse, vector angular_impulse, integer local); - - Applies impulse and angular_impulse to object id. - - - llReleaseControls(key avatar); - - Stop taking inputs from avatar. - - - - llRemoveInventory(string inventory); - - Remove the named inventory item from the object inventory. - - - llRemoveVehicleFlags(integer flags); - - Sets the vehicle flags to FALSE. Valid parameters can be found in the vehicle flags constants section. - - - key llRequestAgentData(key id, integer data); - - This function requests data about agent id. If and when the information - is collected, the dataserver event is - called with the returned key returned from this function passed in - the requested parameter. See the agent data - constants for details about valid values of data and what each will - return in the dataserver event. - - - key llRequestInventoryData(string name); - - Requests data from object inventory item name. When data is available - the dataserver event will be raised with - the key returned from this function in the requested parameter. - The only request currently implemented is to - request data from landmarks, where the data returned is in the - form "<float, float, float>" which can be cast to a - vector. This position is in region local coordinates. - - - llRequestPermissions(key avatar, integer perm); - - Ask avatar to allow the script to do perm. The perm parameter should - be a permission constant. Multiple - permissions can be requested simultaneously by ORing the - constants together. Many of the permissions requests - can only go to object owner. This call will not stop script - execution -if the specified avatar grants the requested - permissions, the run_time_permissions event will be called. - - - llResetScript(void); - - Resets this script. - - - llResetOtherScript(string name); - - Resets the script name. - - - llResetTime(void); - - Sets the internal timer to zero. - - - llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param); - - Creates object's inventory object at position pos with velocity - vel and rotation rot. The param value - will be available to the newly created object in the on_rez - event or through the llGetStartParameter library - function. The vel parameter is ignored if the rezzed object - is not physical. - - - float llRot2Angle(rotation rot); - - Returns the rotation angle represented by rot. - - - vector llRot2Axis(rotation rot); - - Returns the rotation axis represented by rot. - - - vector llRot2Euler(rotation rot); - - Returns the Euler Angle representation of rot. - - - vector llRot2Fwd(rotation rot); - - Returns the forward axis represented by rot. - - - vector llRot2Left(rotation rot); - - Returns the left axis represented by rot. - - - vector llRot2Up(rotation rot); - - Returns the up axis represented by rot. - - - rotation llRotBetween(vector a, vector b); - - Returns the rotation needed to rotate ato b. - - - llRotLookAt(rotation rot, float strength, float damping); - - Cause object to rotate to rot. Good strength values are around - half the mass of the object and good - damping values are less than 1/10th of the strength. - Asymmetrical shapes require smaller damping.A - strengthof 0.0 cancels the look at. - - - integer llRotTarget(rotation rot, float error); - - Set object rotation within error of rotation as a rotational - target and return an integer number for the - target. The number can be used in llRotTargetRemove. - - - llRotTargetRemove(integer number); - - Remove rotational target number. - - - llRotateTexture(float radians, integer face); - - Sets the texture rotation of face to radians. - If face ALL_SIDES, rotate the texture of all faces. - - - integer llRound(float val); - - returns val rounded to the nearest integer. - - - integer llSameGroup(key id); - - Returns TRUE if the object or agen id is in the same simulator - and has the same active group as this object. - Otherwise, returns FALSE. - - - llRegionSay(integer channel, string text); - - Says the string text on channel number channel that can be heard - anywhere in the region by a script listening on channel. - - Any integer value other than zero - - - Message to be transmitted - - - - llSay(integer channel, string text); - Say text on channel. - Channel 0 is the public chat channel that all - avatars see as chat text. Channels 1 to 2,147,483,648 are private - channels that are not sent to avatars but other scripts can listen - for through the llListen api. - - Channel to use to say text on - - Text to say - - - llScaleTexture(float horizontal, float vertical, integer side); - - Sets the horizontal and vertical repeats per face on side. - If side == ALL_SIDES, all sides are set in one call. - Negative values for horizontal and vertical will flip the texture. - - - integer llScriptDanger(vector pos); - - Returns true if pos is over public land, land that doesn't allow everyone - to edit and build, or land that doesn't allow outside scripts. - - - llSensor(string name, key id, integer type, float range, float arc); - - Performs a single scan for name and id with type within - range meters and arc radians of forward vector. - Specifying a blank name or NULL_KEY id will not filter - results for any particular name or id A range of 0.0 - does not perform a scan. The type parameter should be an - object type constant vlaue. - - - llSensorRemove(void); - - Removes the sensor. - - - llSensorRepeat(string name, key id, integer type, float range, float arc, float rate); - - Performs a repeating sensor scan for name and id with type - (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc - radians of forward vector (name and/or id can be empty or 0). - A range of 0.0m does perform a scan. The parameters have the same - function as llSensor, except rate, which defines the number of - seconds between repeated sensor or no_sensor event calls. - - - llSetAlpha(float alpha, integer face); - - Sets the alpha value for face. If face is ALL_SIDES, - set the alpha to all faces. The alpha value is interpreted - as an opacity percentage -1.0 is fully opaque, and 0.2 is - mostly transparent. This api will clamp alpha values - less 0.1 to .1 and greater than 1.0 to 1. - - - llSetBuoyancy(float buoyancy); - - Set the object buoyancy. A value of 0 is none, - less than 1.0 sinks, 1.0 floats, and greater than 1.0 rises. - - - llSetCameraAtOffset(vector offset); - - Sets the camera at offset used in this object - if an avatar sits on it. - - - llSetCameraEyeOffset(vector offset); - - Sets the camera eye offset used in this object if an avatar sits on it. - - - llSetColor(vector color, integer face); - - Sets the color of face. If face is ALL_SIDES, set the color to all faces. - - - llSetDamage(float damage); - - Sets the amount of damage that will be done to an object - that this object hits. This object will be destoyed on - damaging another object. - - - llSetForce(vector force, integer local); - - If the object is physical, this function sets the force. - The vector is in local coordinates if local is TRUE, global if - FALSE. - - directional force - - - boolean, if TRUE uses local axis, if FALSE uses region axis. - - - - llSetForceAndTorque(vector force, vector torque, integer local); - - If the object is physical, this function sets the force and - torque. The vectors are in loal coordinates if local is - TRUE, global if FALSE. - - directional force - - - torque force - - - boolean, if TRUE uses local axis, if FALSE uses region axis. - - - - llSetHoverHeight(float height, float water, float tau); - - Critically damps to a height. The height is above ground - and water if water is TRUE. Only works with physics-enabled objects. - Do not use with vehicles. Use llStopHover to stop hovering. - - Distance above the ground - - - boolean, if TRUE then hover above water too. - - - seconds to critically damp in - - - - llSetLinkColor(integer linknumber, vector color, integer face); - - Sets the color of the linked child specified by linknumber. - A value of 0 means no link, 1 the root, 2 for first - child, etc. If linknumber is ALL_SIDES, set the color - of all objects in the linked set. If face is - ALL_SIDES, set the color of all faces. - - - llSetObjectName(string name); - - Sets the object name to name. - - - llSetPos(vector pos); - - If the object is not physical, this function sets the position - in region coordinates. If the object is a child, the - position is treated as root relative and the linked set is adjusted. - - - llSetRot(rotation rot); - - If the object is not physical, this function sets the rotation. - If the object is a child, the position is treated as root - relative and the linked set is adjusted. - - - llSetScale(vector scale); - - Sets the object scale. - - - llSetScriptState(string name, integer run); - - Control the state of a script on the object. - - - llSetSitText(string text); - - Displays text rather than sit in viewer pie menu. - - - llSetSoundQueueing(integer queue); - - Sets whether successive calls to llPlaySound, llLoopSound, - etc., (attached sounds) interrupt the playing sound. - The default for objects is FALSE. Setting this value to - TRUE will make the sound wait until the current playing - sound reaches its end. The queue is one level deep. - - boolean, sound queuing: TRUE enables, FALSE disables (default) - - - - llSetStatus(integer status, integer value); - - Sets the status to value. Use status constants for the values of status. - - - llSetText(string text, vector color, float alpha); - - Sets text that floats above object to text, - using the specified color and alpha. - - - llSetTexture(string texture, integer face); - - Sets the texture from object inventory of face. - If face is ALL_SIDES, set the texture to all faces. - - - llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate); - - Animates a texture by setting the texture scale and offset. - mask of Mode flags - face number or ALL_SIDES - horizontal frames (ignored for ROTATE and SCALE) - vertical frames (ignored for ROTATE and SCALE) - Start position/frame number (or radians for ROTATE) - number of frames to display (or radians for ROTATE) - frames per second (must not be zero) - - - llSetTimerEvent(float sec); - - Sets the timer event to be triggered every sec seconds. - Passing in 0.0 stops further timer events. - - - llSetTorque(vector torque, integer local); - - If the object is physical, this function sets the torque. - The vector is in local coordinates if local is TRUE, global - if FALSE. - - torque force - - - boolean, if TRUE uses local axis, if FALSE uses region axis. - - - - llSetTouchText(string text); - - Displays text in viewer pie menu that acts as a touch. - - - llSetVehicleFlags(integer flags); - - Sets the vehicle flags to TRUE. - Valid parameters can be found in the vehicle flags constants section. - - - llSetVehicleFloatParam(integer param_name, float param_value); - - Sets the vehicle floating point parameter param_name to param_value. - Valid parameters and their expected - values can be found in the vehicle parameter constants section. - - - llSetVehicleType(integer type); - - Activates the vehicle action and choose vehicle type. - Valid types and an explination of their characteristeics - can be found in the vehicle type constants section. - - - llSetVehicleRotationParam(integer param_name, rotation param_value); - - Sets the vehicle rotation parameter param_name to param_value. - Valid parameters can be found in the - vehicle parameter constants section. - - - llSetVehicleVectorParam(integer param_name, vector param_value); - - Sets the vehicle vector parameter param_name to param_value. - Valid parameters can be found in the - vehicle parameter constants section. - - - llShout(integer channel, string text); - - Shout text on channel. Channel 0 is the public chat channel that - all avatars see as chat text. Channels 1 to - 2,147,483,648 are private channels that are not sent to - avatars but other scripts can listen for through the llListen api. - - - float llSin(float theta); - - Returns the sine of theta in radians. - - - llSitTarget(vector offset, rotation rot); - - Set the sit location for this object. If offset == ZERO_VECTOR - clear the sit target. - - - llSleep(float sec); - - Puts the script to sleep for sec seconds. - - - float llSqrt(float val); - - Returns the square root of val. If val is less than 0.0, - this function returns 0.0 and raises a math runtime error. - - - llStartAnimation(string anim); - - This function starts animation anim for the avatar that owns the object. - - - llStopAnimation(string anim); - - Stop animation animfor avatar that owns object. - - - llStopHover(void); - - Stop hover to a height. - - - llStopLookAt(void); - - Stop causing object to look at target. - - - llStopMoveToTarget(void); - - Stops critically damped motion. - - - - llStopSound(void); - - Stops a currently playing attached sound started with - llPlaySound or llLoopSound. Has no effect on sounds - started with llTriggerSound. - - - integer llStringLength(string src); - - Returns the number of characters in src. - - - integer llSubStringIndex(string source, string pattern); - - Finds index in source where pattern first appears. - Returns -1 if no match is found found. - - - llTakeControls(integer controls, integer accept, integer pass_on); - - If ( accept == (controls and input) ), send input to object. - If the boolean pass_on is TRUE, also send input - to avatar. Requires the PERMISSION_TAKE_CONTROLS permission to run. - - bitfield of CONTROL_* flags - - - boolean, determines whether control events are generated - - - boolean, determines whether controls are disabled - - - - float llTan(float theta); - - Returns the tangent of theta radians. - - - integer llTarget(vector position, float range); - - Set object position within range of position as a target - and returns an integer ID for the target. - - - llTargetOmega(vector axis, float spinrate, float gain); - - Attempt to spin at spinrate with strength gain on axis. - A spinrate of 0.0 cancels the spin. This - function always works in object local coordinates. - - - llTargetRemove(integer tnumber); - - Remove target number tnumber. - - - llTeleportAgentHome(key id); - - Teleport agent on the owner's land to agent's home location. - - - string llToLower(string src); - - Returns src in all lower case. - - - string llToUpper(string src); - - Returns src in all upper case. - - - llTriggerSound(string sound, float volume); - - Plays a transient sound NOT attached to an object. - The sound plays from a stationary position located at the - center of the object at the time of the trigger. - There is no limit to the number of triggered sounds which can be - generated by an object, and calling llTriggerSound does not affect - the attached sounds created by llPlaySound - and llLoopSound. This is very useful for things like collision noises, - explosions, etc. There is no way to stop or - alter the volume of a sound triggered by this function. - - - llTriggerSoundLimited(string sound, float volume, vector tne, vector bsw); - - Plays a transient sound NOT attached to an object with its - audible range limited by the axis aligned bounding - box define by tne(top-north-eash) and bsw (bottom-south-west). - The sound plays from a stationary position - located at the center of the object at the time of the trigger. - There is no limit to the number of triggered sounds - which can be generated by an object, and calling llTriggerSound - does not affect the attached sounds created by - llPlaySound and llLoopSound. This is very useful for things - like collision noises, explosions, etc. There is no - way to stop or alter the volume of a sound triggered by this function. - - - llUnSit(key id); - - If 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. - - - float llVecDist(vector a, vector b); - - Returns the distance from ato b - - - float llVecMag(vector vec); - - Returns the magnitude of vec. - - - vector llVecNorm(vector vec); - - Returns normalized vec. - - - llVolumeDetect(integer detect); - - When detect = TRUE, this makes the entire link set the script - is attached to phantom but if another object - interpenetrates it, it will get a collision_start event. - When an object stops interpenetrating, a collision_end event - is generated. While the other is interpenetrating, - collision events are NOT generated. The script must be applied - to the root object of the link set to get the collision events. - Collision filters work normally. - - TRUE enables, FALSE disables - - - - float llWater(vector offset); - - Returns the water height at the object position + offset. - - - llWhisper(integer channel, string text); - - Whisper text on channel. Channel 0 is the public chat channel that - all avatars see as chat text. Channels 1 to 2,147,483,648 are - private channels that are not sent to avatars but other scripts - can listen for through the llListen api. - - - vector llWind(vector offset); - - Returns the wind velocity below the object position + offset. - - - llAddToLandBanList(key agent, float hours); - - Adds agent to the parcel ban list for the specified number of hours. - A value of 0 for hours will add agent indefinitely. - The smallest value hours will accept is 0.01; - anything smaller will be seen as 0. - When values that small are used, it seems the function bans - in 30 second increments (Probably 36 second increments, - as 0.01 of an hour is 36 seconds). - Residents teleporting to a parcel where they are banned - will be redirected to a neighboring parcel. - - - integer llBase64ToInteger(string str); - - Little endian decode the 8 character Base64 string str into an integer. - - - string llBase64ToString(string str); - - Converts a Base 64 string to a conventional string. - If the conversion creates any unprintable characters, they are converted to question marks (this behavior is different then llUnescapeURL). - - - llClearCameraParams(); - - Resets all camera parameters to default values and turns - off scripted camera control. - - - integer llClearPrimMedia( integer face ); - - Clears (deletes) the media and all params from the given face. - - Returns an integer that is a STATUS_* flag which details the success/failure of the operation. - face number - - - llCloseRemoteDataChannel(key channel); - - Closes XML-RPC channel. - - - integer llDetectedGroup(integer number); - - Returns TRUE if detected object or agent number has the same - user group active as this object. - It will return FALSE if the object or agent is in the group, - but the group is not active. - - - string llEscapeURL(string url); - - Returns the string that is the URL-escaped version of url - (replacing spaces with %20, etc). - This function returns the UTF-8 encoded escape codes - for selected characters. - - - llForceMouselook(integer mouselook); - - After calling this function with mouselook set to TRUE, - any agent sitting down on the prim will be forced into mouselook. - Just like llSitTarget, this changes a permanent property - of the prim (not the object) and needs to be reset by calling - this function with mouselook set to FALSE in order to disable it. - - boolean, if TRUE when an avatar sits on the prim, - the avatar will be forced into mouselook mode. - FALSE is the default setting and will undo - a previously set TRUE or do nothing. - - - - list llGetAnimationList(key id); - - Returns a list of keys of all playing animations for avatar id. - - - list llGetBoundingBox(key object); - - Returns the bounding box around the object or avatar with - the key object (including any linked prims) relative to the - root prim, in a list: [ (vector) min_corner, (vector) max_corner ] - - - vector llGetCameraPos(); - Returns the position of the camera of the user that granted the - script PERMISSION_TRACK_CAMERA. If no user has granted the permission, - it returns ZERO_VECTOR. - - - rotation llGetCameraRot(); - - Returns the rotation of the camera of the user who's granted - this script PERMISSION_TRACK_CAMERA. If no user has granted the - permission, it returns ZERO_ROTATION. The key of the user whose - camera is being tracked can be obtained using llGetPermissionsKey. - - - key llGetCreator(); - - Returns the key of the object's original creator. Similar to llGetOwner. - - - string llGetDisplayName( key id ); - - Returns a string that is the non-unique display name of the avatar specified by id. - • key id – avatar UUID that is in the same region or is otherwise known to the region - - id must specify a valid avatar key, present in or otherwise known to the sim in which the script is running, otherwise an empty - string is returned. This function will still return a valid display name if the avatar is a child agent of the sim - (i.e., in an adjacent sim, but presently able to see into the one the script is in), or for a short period after the avatar - leaves the sim (specifically, when the client completely disconnects from the sim, either as a main or child agent). - - - vector llGetGeometricCenter(); - - Returns the geometric center of the linked set the - script is in relative to the object's position - (the position of the root prim of a linked set). - To get the object's position, use llGetPos. - - - float llGetGMTclock(); - - Gets the time in seconds since midnight in GMT/UTC. - - - key llGetInventoryCreator(string item); - - This function returns the UUID of the creator of item. - If item is not found in inventory, - the object says "No item named 'name' ". - - - integer llGetInventoryPermMask(string item, integer mask); - - Returns the requested permission mask for the inventory - item defined by item. If item is not in the object's inventory, - llGetInventoryPermMask returns 0 and causes the object to - say "No item named '<item>'", where "<item>" is item. - If this is used to determine whether or not an inventory item - exists within the object, it will have the side effect of spamming chat. - inventory item - - MASK_BASE, MASK_OWNER,MASK_GROUP, MASK_EVERYONE or MASK_NEXT - - - - integer llGetInventoryType(string name); - - Returns the type of the inventory item name. - Remember, like the other inventory functions, llGetInventoryType - is case-sensitive. - - - integer llGetLinkNumberOfSides( integer link ); - - Returns an integer that is the number of faces (or sides) of the prim link. - • integer link – Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag - - - float llGetMass(); - - Returns the scripted object's mass. When called from a script - in a linkset, the parent will return the sum of the linkset weights, - while a child will return just its own mass. When called from - a script inside an attachment, this function will return the mass - of the avatar it's attached to, not its own. - - - key llGetNumberOfNotecardLines(string name); - - Returns number of lines in the notecard name via the dataserver event. - (Cast the value returned by the dataserver to an integer.) - The key returned is a query id for identifying the dataserver reply. - - - integer llGetNumberOfPrims(); - - Returns the number of prims in (and avatars seated on) - the object the script is in. - - - string llGetObjectDesc(); - - Returns the description of the scripted object/prim. - You can set the description using llSetObjectDesc. - - - float llGetObjectMass(key id); - - Gets the mass of the object or avatar corresponding to id. - - - integer llGetObjectPermMask(integer mask); - - Returns the requested permission mask for the root object - the task is attached to. - - - - integer llGetParcelFlags(vector pos); - - Returns a bitfield specifying the parcel flags - (PARCEL_FLAG_*) for the parcel under the position pos. - - - list llGetPrimitiveParams(list params); - - Returns primitive parameters specified in the params list. - - - list llGetPrimMediaParams( integer face, list params ); - - Get the media params for a particular face on an object, given the desired list of names. - - Returns a list of values in the order requested. - face number - a set of names (in no particular order) - - Returns an empty list if no media exists on the face. - - - vector llGetRegionCorner(); - - Returns the RegionCorner of the simulator containing the task. - - - integer llGetRegionFlags(); - - Returns a bitfield specifying the region flags - (REGION_FLAG_*) for the region the object is in. - - - vector llGetRootPosition(); - - Gets the position (in region coordinates) - of the root/parent prim of the object containing the script. - This is used to allow a child prim to determine where the root is. - - - rotation llGetRootRotation(); - - Gets the global rotation of the root object of the - object script is attached to. - - - string llGetSimulatorHostname(); - - Returns the host name (server) of the sim - in which the scripted object is located. - For example, "sim225.agni.lindenlab.com". - - - string llGetTimestamp(); - - Returns the current time-and-date (a timestamp) - in the format YYYY-MM-DDThh:mm:ss.ff..fZ, - for example: 2004-08-27T00:56:21.785886Z - The letter Z stands for Zulu, - the military time zone name for UTC. T is just - a separator between date and time. - - - integer llGetUnixTime(); - - Returns the number of seconds elapsed since 00:00 hours, - Jan 1, 1970 UTC from the system clock. - In UNIX terms, time_t. This is great for a monotonic - source of time that ticks once a second. - - - key llHTTPRequest(string url, list parameters, string body); - - Sends HTTP request to url with the specified body and parameters. - - url must always be a valid HTTP or HTTPS URL, pointing to a - location outside the Linden Lab and Second Life servers. - - - string llIntegerToBase64(integer number); - - Encodes number as an 8-character Base64 string. - - - list llListReplaceList(list dest, list src, integer start, integer end); - - Returns a list replacing the slice of the list dest from - start to end with the list src. start and end are inclusive, - so 0, 1 would replace the first two entries - and 0, 0 would replace only the first list entry. - - - float llListStatistics(integer operation, list input); - - This function allows a script to perform a statistical - operation as defined by operation on a list composed - of integers and floats. - - One of LIST_STAT_* values - - - - llLoadURL(key avatar_id, string message, string url); - - llLoadURL displays a dialog box to the user offering - to load a web page using the default web browser. - - - float llLog(float val); - - Returns the base e (natural) logarithm of val (value). - - - float llLog10(float val); - - Returns the base 10 (common) logarithm of val (value). - - - llMapDestination(string simname, vector position, vector lookat); - - Shows a given location on the map. - Works in attachments, or during touch events. - Currently the function will open the map window whenever it is called. - There is no way to simply set the map position without - opening the window. - - - string llMD5String(string src, integer nonce); - - Performs a RSA Data Security, Inc. MD5 Message-Digest - Algorithm on string with nonce (also known as salt). - Returns a 32-character hex string. (128-bit in binary.) - - - integer llModPow(integer a, integer b, integer c); - - Returns a raised to the b power, mod c. ( (a ^ b)%c ). - b is capped at 0xFFFF (16 bits). - llOpenRemoteDataChannel(); - Creates a channel to listen for XML-RPC calls. + Creates a channel to listen for XML-RPC calls. Will trigger a remote_data event with type = REMOTE_DATA_CHANNEL and a channel ID (key) once it is available. This channel ID must be referenced in the XML-RPC call @@ -2273,6 +1875,14 @@ so the key must somehow get to the scripter's XML-RPC client, most often via llEmail, llHttpRequest or llLoadUrl. + + + integer llOverMyLand(key id); + + Returns TRUE if id is over land owned by the object owner, + FALSE otherwise. + + llOwnerSay(string message); @@ -2280,11 +1890,13 @@ if the owner has been within the object's simulator since logging into Second Life, regardless of where they may be are in-world. + llParcelMediaCommandList(list command_list); Playing QuickTime movies (you have to own the land). + list llParcelMediaQuery(list query_list); @@ -2297,6 +1909,20 @@ object owner is a member of the group. The object actually has to be owned by the group. + + + list llParseString2List(string src, list separators, list spacers); + + Breaks src into a list, discarding anything in separators, + keeping any entry in spacers. The + separators and spacers must be lists of strings with a maximum + of 8 entries each. So, if you had made the + call: + llParseString2List("Parsethisnow! I dare:you to.", ["this", "!", " "], [":"]); + You would get the list: + ["Parse", "now", "I", "dare", ":", "you", "to"] + + list llParseStringKeepNulls(string src, list separators, list spacers); @@ -2305,16 +1931,141 @@ it will add a null string instead of discarding it like llParseString2List does. + + + llParticleSystem(list parameters); + + Makes a particle system based on the parameter list. + The parametersare specified as an ordered list of + parameter and value. Valid parameters and their expected + values can be found in the particle system constants. + Here is a simple example: + llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_WIND_MASK, + PSYS_PART_START_COLOR, <1,0,0>, + PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE]); + + + + llPassCollisions(integer pass); + + If pass is TRUE, land and object collisions are passed from + children on to parents. + The default is FALSE if there is no script to handle the collision events. + + boolean, if TRUE, collisions are passed from children on to parents + + + + + llPassTouches(integer pass); + + If pass is TRUE, touches are passed from children on to parents. + The default is TRUE if there is no script to handle the touch events. + + boolean, if TRUE, touches are passed from children on to parents + + + + + llPlaySound(string sound, float volume); + + Plays a sound once. The sound will be attached to an object and + follow object movement. Only one sound may + be attached to an object at a time, and attaching a new sound or + calling llStopSound will stop the previously + attached sound. A second call to llPlaySound with the same sound + will not restart the sound, but the new + volume will be used, which allows control over the volume + of already playing sounds. To restart the sound from + the beginning, call llStopSound before calling llPlaySound again. + + + + llPlaySoundSlave(string sound, float volume); + + Behavior is identical to llPlaySound, unless there is + a "Sync Master" present. If a Sync Master is already + playing the Slave sound will not be played until the Master + hits its loop point and returns to the beginning. + llPlaySoundSlave will play the sound exactly once; if it is + desired to have the sound play every time the Master + loops, either use llLoopSoundSlave with extra silence padded + on the end of the sound or ensure that + llPlaySoundSlave is called at least once per loop of the Master. + + + + + llPow(float base, float exp); + + Returns base raised to the exp. + + + + llPreloadSound(string sound); + + Preloads sound from object inventory on nearby viewers. + + + + llPushObject(key id, vector impulse, vector angular_impulse, integer local); + + Applies impulse and angular_impulse to object id. + + + + llRegionSay(integer channel, string text); + + Says the string text on channel number channel that can be heard + anywhere in the region by a script listening on channel. + + Any integer value other than zero + + + Message to be transmitted + + + + + llRegionSayTo( key target, integer channel, string msg ); + + Says the text supplied in string msg on channel supplied in integer channel to the object or avatar specified by target + • key target + • integer channel – output channel, any integer value + • string msg – message to be transmitted + + + + + + llReleaseControls(key avatar); + + Stop taking inputs from avatar. + + + + llReleaseURL( string url ); + + Releases the specified URL, it will no longer be usable. + URL to release + + llRemoteDataReply(key channel, key message_id, string sdata, integer idata); @@ -2322,13 +2073,18 @@ on channel with payload of string sdata and integer idata. The size of sdata is limited to 254 characters. - + llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param); @@ -2337,17 +2093,111 @@ the PIN previously set using llSetRemoteScriptAccessPin (on the target prim), then the script name will be copied into target. + llRemoveFromLandBanList(key avatar); Remove avatar from the land parcel ban list. + llRemoveFromLandPassList(key avatar); Remove avatar from the land parcel pass list. + + llRemoveInventory(string inventory); + + Remove the named inventory item from the object inventory. + + + + llRemoveVehicleFlags(integer flags); + + Sets the vehicle flags to FALSE. Valid parameters can be found in the vehicle flags constants section. + + + + key llRequestAgentData(key id, integer data); + + This function requests data about agent id. If and when the information + is collected, the dataserver event is + called with the returned key returned from this function passed in + the requested parameter. See the agent data + constants for details about valid values of data and what each will + return in the dataserver event. + + + + key llRequestDisplayName( key id ); + + Requests the Display Name of the agent identified by id. When the Display Name is available the dataserver event will be raised. + The agent identified by id does not need to be in the same region or online at the time of the request. + Returns the key that is used to identify the dataserver event when it is raised. + • key id – avatar UUID + + + + key llRequestInventoryData(string name); + + Requests data from object inventory item name. When data is available + the dataserver event will be raised with + the key returned from this function in the requested parameter. + The only request currently implemented is to + request data from landmarks, where the data returned is in the + form "<float, float, float>" which can be cast to a + vector. This position is in region local coordinates. + + + + llRequestPermissions(key avatar, integer perm); + + Ask avatar to allow the script to do perm. The perm parameter should + be a permission constant. Multiple + permissions can be requested simultaneously by ORing the + constants together. Many of the permissions requests + can only go to object owner. This call will not stop script + execution -if the specified avatar grants the requested + permissions, the run_time_permissions event will be called. + + + + key llRequestSecureURL( ); + + Requests one HTTPS:// (SSL) url for use by this object. The http_request event is tiggered with results. + + Returns a key that is the handle used for identifying the request in the http_request event. + + + + key llRequestSimulatorData(string simulator, integer data); + + Requests data about the sim with the name simulator. + simulator is case-insensitive. + Returns a dataserver query ID and triggers the dataserver + event when data is found. The sim name is usually not case-sensitive, + but sometimes will return data for a similarly-named sim + if the supplied case doesn't match the intended sim's actual name. + + + + key llRequestURL( ); + + Requests one HTTP:// url for use by this script. The http_request event is triggered with the result of the request. + + Returns a key that is the handle used for identifying the result in the http_request event. + + + + key llRequestUsername( key id ); + + Requests the Username of the agent identified by id. When Username is available the dataserver event will be raised. + The agent identified by id does not need to be in the same region or online at the time of the request. + Returns a key that is used to identify the dataserver event when it is raised. + • key id – avatar UUID + + llResetLandBanList(void) @@ -2360,22 +2210,164 @@ Removes all residents from the land access/pass list. - - key llRequestSimulatorData(string simulator, integer data); + + llResetScript(void); - Requests data about the sim with the name simulator. - simulator is case-insensitive. - Returns a dataserver query ID and triggers the dataserver - event when data is found. The sim name is usually not case-sensitive, - but sometimes will return data for a similarly-named sim - if the supplied case doesn't match the intended sim's actual name. + Resets this script. + + + llResetOtherScript(string name); + + Resets the script name. + + + + llResetTime(void); + + Sets the internal timer to zero. + + llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param); Rezzes object's inventory item named inventory at pos with velocity vel and rotation rot with start parameter param. + + + llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param); + + Creates object's inventory object at position pos with velocity + vel and rotation rot. The param value + will be available to the newly created object in the on_rez + event or through the llGetStartParameter library + function. The vel parameter is ignored if the rezzed object + is not physical. + + + + float llRot2Angle(rotation rot); + + Returns the rotation angle represented by rot. + + + + vector llRot2Axis(rotation rot); + + Returns the rotation axis represented by rot. + + + + vector llRot2Euler(rotation rot); + + Returns the Euler Angle representation of rot. + + + + vector llRot2Fwd(rotation rot); + + Returns the forward axis represented by rot. + + + + vector llRot2Left(rotation rot); + + Returns the left axis represented by rot. + + + + vector llRot2Up(rotation rot); + + Returns the up axis represented by rot. + + + + rotation llRotBetween(vector a, vector b); + + Returns the rotation needed to rotate ato b. + + + + llRotLookAt(rotation rot, float strength, float damping); + + Cause object to rotate to rot. Good strength values are around + half the mass of the object and good + damping values are less than 1/10th of the strength. + Asymmetrical shapes require smaller damping.A + strengthof 0.0 cancels the look at. + + + + integer llRotTarget(rotation rot, float error); + + Set object rotation within error of rotation as a rotational + target and return an integer number for the + target. The number can be used in llRotTargetRemove. + + + + llRotTargetRemove(integer number); + + Remove rotational target number. + + + + llRotateTexture(float radians, integer face); + + Sets the texture rotation of face to radians. + If face ALL_SIDES, rotate the texture of all faces. + + + + integer llRound(float val); + + returns val rounded to the nearest integer. + + + + integer llSameGroup(key id); + + Returns TRUE if the object or agen id is in the same simulator + and has the same active group as this object. + Otherwise, returns FALSE. + + + + llSay(integer channel, string text); + Say text on channel. + Channel 0 is the public chat channel that all + avatars see as chat text. Channels 1 to 2,147,483,648 are private + channels that are not sent to avatars but other scripts can listen + for through the llListen api. + + Channel to use to say text on + + Text to say + + + + llScaleTexture(float horizontal, float vertical, integer side); + + Sets the horizontal and vertical repeats per face on side. + If side == ALL_SIDES, all sides are set in one call. + Negative values for horizontal and vertical will flip the texture. + + + + integer llScriptDanger(vector pos); + + Returns true if pos is over public land, land that doesn't allow everyone + to edit and build, or land that doesn't allow outside scripts. + + + + void llScriptProfiler(integer iState); + + Enables or disables the scripts profiling state. + PROFILE_NONE or PROFILE_SCRIPT_MEMORY flags to control the state. + + key llSendRemoteData(key channel, string dest, integer idata, string sdata); @@ -2383,131 +2375,79 @@ through channel with payload of channel (in a string), integer idata and string sdata. + + + llSensor(string name, key id, integer type, float range, float arc); + + Performs a single scan for name and id with type within + range meters and arc radians of forward vector. + Specifying a blank name or NULL_KEY id will not filter + results for any particular name or id A range of 0.0 + does not perform a scan. The type parameter should be an + object type constant vlaue. + + + + llSensorRemove(void); + + Removes the sensor. + + + + llSensorRepeat(string name, key id, integer type, float range, float arc, float rate); + + Performs a repeating sensor scan for name and id with type + (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc + radians of forward vector (name and/or id can be empty or 0). + A range of 0.0m does perform a scan. The parameters have the same + function as llSensor, except rate, which defines the number of + seconds between repeated sensor or no_sensor event calls. + + + + llSetAlpha(float alpha, integer face); + + Sets the alpha value for face. If face is ALL_SIDES, + set the alpha to all faces. The alpha value is interpreted + as an opacity percentage -1.0 is fully opaque, and 0.2 is + mostly transparent. This api will clamp alpha values + less 0.1 to .1 and greater than 1.0 to 1. + + + + void llSetAngularVelocity(vector vForce, integer iLocal); + + Applies angular (rotational) velocity to a physical object. + The force to apply. + If TRUE, the vForce is treated as a local directional vector instead of a regional directional vector. + + + + llSetBuoyancy(float buoyancy); + + Set the object buoyancy. A value of 0 is none, + less than 1.0 sinks, 1.0 floats, and greater than 1.0 rises. + + + + llSetCameraAtOffset(vector offset); + + Sets the camera at offset used in this object + if an avatar sits on it. + + + + llSetCameraEyeOffset(vector offset); + + Sets the camera eye offset used in this object if an avatar sits on it. + + llSetCameraParams(list rules); Sets multiple camera parameters at once. List format is [rule1, value1, rule2, value2 . . . ruleN, valueN] - - llSetLinkAlpha(integer linknumber, float alpha, integer face); - - Sets the side number face on the linked child linknumber - to the transparency alpha. - - - llSetLocalRot(rotation rot); - - Sets the rotation of a child prim relative to the root prim. - - - - integer llSetPrimMediaParams( integer face, list params ); - - Set the media params for a particular face. - - Returns an integer that is a STATUS_* flag which details the success/failure of the operation(s). - face number - a set of name/value pairs (in no particular order) - - - - llSetObjectDesc(string name); - - Sets the description of the scripted prim to name. - You can get the description using llGetObjectDesc. - The description is limited to 127 characters. - - - llSetParcelMusicURL(string url) - - Sets the streaming audio URL for the parcel the - scripted object is on (the object must be owned - by the owner of the parcel, if the parcel is group - owned the object must be owned by that group). - - - llSetPayPrice(integer price, list quick_pay_buttons); - - Sets the values of the buttons and the text box default - for the Pay dialog -- when a user right-clicks on - the object and selects "Pay", llSetPayPrice will affect - what buttons exist, what their values are, and whether - or not there is a manual payment text entry box. - - - llSetPrimitiveParams(list rule); - - This function changes the many properties (or "parameters") - of a prim in one operation. The parameter is a list of changes. - (Don't confuse prim parameters with function parameters.) - - - llSetRemoteScriptAccessPin(integer pin); - - If pin is set to a non-zero number, the task will accept - remote script loads via llRemoteLoadScriptPin - if passed the matching PIN. - Otherwise llRemoteLoadScriptPin is ignored - - - string llStringToBase64(string str); - - Converts a string to the Base 64 representation of the string. - - - string llUnescapeURL(string url); - - Returns the string that is the URL unescaped version - of url, replacing "%20" with spaces, etc. - The function can output raw UTF-8 strings. - - - string llXorBase64StringsCorrect(string s1, string s2) - - Performs an xor on two Base64 strings and returns a Base64 string. - s2 repeats if it is shorter than s1. - This function is for encrypting data. Put your data in s1 and - your key in s2 to encrypt or put the encrypted data into s1 - with the same key in s2 to decrypt again. - - - - llSetSoundRadius(float radius); - - Establishes a hard cut-off radius for audibility of scripted - sounds (both attached and triggered) - - - - list llGetObjectDetails(key id, list params); - - Returns a list of the details specified in params for the object with key id. - - prim or avatar UUID that is in the same region - - - list of OBJECT_* flags - - llSetClickAction(integer action); @@ -2518,10 +2458,569 @@ - - integer llGetRegionAgentCount(); + + llSetColor(vector color, integer face); - Returns an integer that is the number of avatars in the region. + Sets the color of face. If face is ALL_SIDES, set the color to all faces. + + + + llSetDamage(float damage); + + Sets the amount of damage that will be done to an object + that this object hits. This object will be destoyed on + damaging another object. + + + + llSetForce(vector force, integer local); + + If the object is physical, this function sets the force. + The vector is in local coordinates if local is TRUE, global if + FALSE. + + directional force + + + boolean, if TRUE uses local axis, if FALSE uses region axis. + + + + + llSetForceAndTorque(vector force, vector torque, integer local); + + If the object is physical, this function sets the force and + torque. The vectors are in loal coordinates if local is + TRUE, global if FALSE. + + directional force + + + torque force + + + boolean, if TRUE uses local axis, if FALSE uses region axis. + + + + + llSetHoverHeight(float height, float water, float tau); + + Critically damps to a height. The height is above ground + and water if water is TRUE. Only works with physics-enabled objects. + Do not use with vehicles. Use llStopHover to stop hovering. + + Distance above the ground + + + boolean, if TRUE then hover above water too. + + + seconds to critically damp in + + + + + llSetKeyframedMotion(list lKeyframes, list lOptions); + + Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between key-frames by the simulator. Collisions with other nonphysical or keyframed objects will be ignored (no script events will fire and collision processing will not occur). Collisions with physical objects will be computed and reported, but the keyframed object will be unaffected by those collisions. + Strided keyframe list of the form: position, orientation, time. Each keyframe is interpreted relative to the previous transform of the object. + + + + + + + llSetLinkAlpha(integer linknumber, float alpha, integer face); + + Sets the side number face on the linked child linknumber + to the transparency alpha. + + + + llSetLinkColor(integer linknumber, vector color, integer face); + + Sets the color of the linked child specified by linknumber. + A value of 0 means no link, 1 the root, 2 for first + child, etc. If linknumber is ALL_SIDES, set the color + of all objects in the linked set. If face is + ALL_SIDES, set the color of all faces. + + + + integer llSetLinkMedia(integer iLink, integer iFace, list lParameters); + + Set the media parameters for a particular face on the linked prim(s) without a delay. + Link number (0: unlinked, 1: root prim, >1: child prims). + Face number. + A set of name/value pairs (in no particular order) + Returns an integer that is a STATUS_* flag which details the success/failure of the operation(s). + + + + void llSetLinkPrimitiveParams(integer linknumber, list rules); + + Sets the parameters (or properties) of any linked prim in none step + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag + + + + + llSetLinkPrimitiveParamsFast( integer linknumber, list rules ); + + Set primitive parameters for linknumber based on rules with no built-in script sleep. This function is identical to llSetLinkPrimitiveParams except without the delay. + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag + + + + + void llSetLinkTexture(integer linknumber, string texture, integer face); + + Sets the texture of linked prims + + + + llSetLinkTextureAnim( integer link, integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate ); + + Animate the texture on the specified face/faces of the + specified prim/prims by setting the texture scale and offset. + Identical to llSetTextureAnim except able to modify any prim in the link set. + + Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag to effect + mask of Mode flags + face number or ALL_SIDES + horizontal frames (ignored for ROTATE and SCALE) + vertical frames (ignored for ROTATE and SCALE) + Start position/frame number (or radians for ROTATE) + number of frames to display (or radians for ROTATE) + frames per second (must not be zero) + + + + llSetLocalRot(rotation rot); + + Sets the rotation of a child prim relative to the root prim. + + + + integer llSetMemoryLimit(integer iLimit); + + Request iLimit bytes to be reserved for this script. This function has no effect if the script is running in the LSO VM. + Return TRUE or FALSE indicating whether the limit was set successfully. + The amount to reserve, which must be less than the allowed maximum (currently 64KB) and not already have been exceeded. + + + + llSetObjectDesc(string name); + + Sets the description of the scripted prim to name. + You can get the description using llGetObjectDesc. + The description is limited to 127 characters. + + + + llSetObjectName(string name); + + Sets the object name to name. + + + + llSetParcelMusicURL(string url) + + Sets the streaming audio URL for the parcel the + scripted object is on (the object must be owned + by the owner of the parcel, if the parcel is group + owned the object must be owned by that group). + + + + llSetPayPrice(integer price, list quick_pay_buttons); + + Sets the values of the buttons and the text box default + for the Pay dialog -- when a user right-clicks on + the object and selects "Pay", llSetPayPrice will affect + what buttons exist, what their values are, and whether + or not there is a manual payment text entry box. + + + + void llSetPhysicsMaterial(integer MaterialBits, float GravityMultiplier, float Restitution, float Friction, float Density); + + No description available. + + + + llSetPos(vector pos); + + If the object is not physical, this function sets the position + in region coordinates. If the object is a child, the + position is treated as root relative and the linked set is adjusted. + + + + integer llSetPrimMediaParams( integer face, list params ); + + Set the media params for a particular face. + + Returns an integer that is a STATUS_* flag which details the success/failure of the operation(s). + face number + a set of name/value pairs (in no particular order) + + + + llSetPrimitiveParams(list rule); + + This function changes the many properties (or "parameters") + of a prim in one operation. The parameter is a list of changes. + (Don't confuse prim parameters with function parameters.) + + + + llSetRemoteScriptAccessPin(integer pin); + + If pin is set to a non-zero number, the task will accept + remote script loads via llRemoteLoadScriptPin + if passed the matching PIN. + Otherwise llRemoteLoadScriptPin is ignored + + + + llSetRot(rotation rot); + + If the object is not physical, this function sets the rotation. + If the object is a child, the position is treated as root + relative and the linked set is adjusted. + + + + llSetScale(vector scale); + + Sets the object scale. + + + + llSetScriptState(string name, integer run); + + Control the state of a script on the object. + + + + llSetSitText(string text); + + Displays text rather than sit in viewer pie menu. + + + + llSetSoundQueueing(integer queue); + + Sets whether successive calls to llPlaySound, llLoopSound, + etc., (attached sounds) interrupt the playing sound. + The default for objects is FALSE. Setting this value to + TRUE will make the sound wait until the current playing + sound reaches its end. The queue is one level deep. + + boolean, sound queuing: TRUE enables, FALSE disables (default) + + + + + llSetSoundRadius(float radius); + + Establishes a hard cut-off radius for audibility of scripted + sounds (both attached and triggered) + + + + llSetStatus(integer status, integer value); + + Sets the status to value. Use status constants for the values of status. + + + + llSetText(string text, vector color, float alpha); + + Sets text that floats above object to text, + using the specified color and alpha. + + + + llSetTexture(string texture, integer face); + + Sets the texture from object inventory of face. + If face is ALL_SIDES, set the texture to all faces. + + + + llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate); + + Animates a texture by setting the texture scale and offset. + mask of Mode flags + face number or ALL_SIDES + horizontal frames (ignored for ROTATE and SCALE) + vertical frames (ignored for ROTATE and SCALE) + Start position/frame number (or radians for ROTATE) + number of frames to display (or radians for ROTATE) + frames per second (must not be zero) + + + + llSetTimerEvent(float sec); + + Sets the timer event to be triggered every sec seconds. + Passing in 0.0 stops further timer events. + + + + llSetTorque(vector torque, integer local); + + If the object is physical, this function sets the torque. + The vector is in local coordinates if local is TRUE, global + if FALSE. + + torque force + + + boolean, if TRUE uses local axis, if FALSE uses region axis. + + + + + llSetTouchText(string text); + + Displays text in viewer pie menu that acts as a touch. + + + + llSetVehicleFlags(integer flags); + + Sets the vehicle flags to TRUE. + Valid parameters can be found in the vehicle flags constants section. + + + + llSetVehicleFloatParam(integer param_name, float param_value); + + Sets the vehicle floating point parameter param_name to param_value. + Valid parameters and their expected + values can be found in the vehicle parameter constants section. + + + + llSetVehicleType(integer type); + + Activates the vehicle action and choose vehicle type. + Valid types and an explination of their characteristeics + can be found in the vehicle type constants section. + + + + llSetVehicleRotationParam(integer param_name, rotation param_value); + + Sets the vehicle rotation parameter param_name to param_value. + Valid parameters can be found in the + vehicle parameter constants section. + + + + llSetVehicleVectorParam(integer param_name, vector param_value); + + Sets the vehicle vector parameter param_name to param_value. + Valid parameters can be found in the + vehicle parameter constants section. + + + + void llSetVelocity(vector vForce, integer iLocal); + + Applies velocity to a physical object. + The force to apply. + If TRUE, the vForce is treated as a local directional vector instead of a regional directional vector. + + + + string llSHA1String( string src ); + + *** Pre-release Documentation Warning *** + Returns a string of 40 hex characters that is the SHA1 security hash of src. + + + + llShout(integer channel, string text); + + Shout text on channel. Channel 0 is the public chat channel that + all avatars see as chat text. Channels 1 to + 2,147,483,648 are private channels that are not sent to + avatars but other scripts can listen for through the llListen api. + + + + float llSin(float theta); + + Returns the sine of theta in radians. + + + + llSitTarget(vector offset, rotation rot); + + Set the sit location for this object. If offset == ZERO_VECTOR + clear the sit target. + + + + llSleep(float sec); + + Puts the script to sleep for sec seconds. + + + + float llSqrt(float val); + + Returns the square root of val. If val is less than 0.0, + this function returns 0.0 and raises a math runtime error. + + + + llStartAnimation(string anim); + + This function starts animation anim for the avatar that owns the object. + + + + llStopAnimation(string anim); + + Stop animation animfor avatar that owns object. + + + + llStopHover(void); + + Stop hover to a height. + + + + llStopLookAt(void); + + Stop causing object to look at target. + + + + llStopMoveToTarget(void); + + Stops critically damped motion. + + + + + + llStopSound(void); + + Stops a currently playing attached sound started with + llPlaySound or llLoopSound. Has no effect on sounds + started with llTriggerSound. + + + + integer llStringLength(string src); + + Returns the number of characters in src. + + + + string llStringToBase64(string str); + + Converts a string to the Base 64 representation of the string. + + + + string llStringTrim(string text, integer trim_type); + + Outputs a string eliminating whitespace from the start and/or end of the specified string. + + Constants for trim_type: + STRING_TRIM_HEAD: trim all leading spaces in text + STRING_TRIM_TAIL: trim all trailing spaces in text + STRING_TRIM: trim all leading and trailing spaces in text + string to trim + + STRING_TRIM_HEAD,STRING_TRIM_TAIL or STRING_TRIM + + + + + integer llSubStringIndex(string source, string pattern); + + Finds index in source where pattern first appears. + Returns -1 if no match is found found. + + + + llTakeControls(integer controls, integer accept, integer pass_on); + + If ( accept == (controls and input) ), send input to object. + If the boolean pass_on is TRUE, also send input + to avatar. Requires the PERMISSION_TAKE_CONTROLS permission to run. + + bitfield of CONTROL_* flags + + + boolean, determines whether control events are generated + + + boolean, determines whether controls are disabled + + + + + float llTan(float theta); + + Returns the tangent of theta radians. + + + + + + integer llTarget(vector position, float range); + + Set object position within range of position as a target + and returns an integer ID for the target. + + + + llTargetOmega(vector axis, float spinrate, float gain); + + Attempt to spin at spinrate with strength gain on axis. + A spinrate of 0.0 cancels the spin. This + function always works in object local coordinates. + + + + llTargetRemove(integer tnumber); + + Remove target number tnumber. + + + + llTeleportAgentHome(key id); + + Teleport agent on the owner's land to agent's home location. @@ -2533,185 +3032,144 @@ is said on chat_channel when the "OK" button is clicked. - - string llGetAgentLanguage( key avatar ); + + string llToLower(string src); - Returns a string that is the language code of the preferred - interface language of the user avatar. + Returns src in all lower case. - - vector llDetectedTouchUV( integer index ); + + string llToUpper(string src); - Returns a vector that is the texture coordinates for where - the prim was touched. The x and y vector positions contain - the u and v face coordinates respectively. + Returns src in all upper case. + - TOUCH_INVALID_TEXCOORD is returned - when the touch UV coordinates cannot be determined. - - Index of detection information + + key llTransferLindenDollars(key AvatarID, integer Amount); + + Attempts to send the amount of money to the specified avatar, and trigger a transaction_result event identified by the returned key. + + + + llTriggerSound(string sound, float volume); + + Plays a transient sound NOT attached to an object. + The sound plays from a stationary position located at the + center of the object at the time of the trigger. + There is no limit to the number of triggered sounds which can be + generated by an object, and calling llTriggerSound does not affect + the attached sounds created by llPlaySound + and llLoopSound. This is very useful for things like collision noises, + explosions, etc. There is no way to stop or + alter the volume of a sound triggered by this function. + + + + llTriggerSoundLimited(string sound, float volume, vector tne, vector bsw); + + Plays a transient sound NOT attached to an object with its + audible range limited by the axis aligned bounding + box define by tne(top-north-eash) and bsw (bottom-south-west). + The sound plays from a stationary position + located at the center of the object at the time of the trigger. + There is no limit to the number of triggered sounds + which can be generated by an object, and calling llTriggerSound + does not affect the attached sounds created by + llPlaySound and llLoopSound. This is very useful for things + like collision noises, explosions, etc. There is no + way to stop or alter the volume of a sound triggered by this function. + + + + string llUnescapeURL(string url); + + Returns the string that is the URL unescaped version + of url, replacing "%20" with spaces, etc. + The function can output raw UTF-8 strings. + + + + llUnSit(key id); + + If 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. + + + + float llVecDist(vector a, vector b); + + Returns the distance from ato b + + + + float llVecMag(vector vec); + + Returns the magnitude of vec. + + + + vector llVecNorm(vector vec); + + Returns normalized vec. + + + + llVolumeDetect(integer detect); + + When detect = TRUE, this makes the entire link set the script + is attached to phantom but if another object + interpenetrates it, it will get a collision_start event. + When an object stops interpenetrating, a collision_end event + is generated. While the other is interpenetrating, + collision events are NOT generated. The script must be applied + to the root object of the link set to get the collision events. + Collision filters work normally. + + TRUE enables, FALSE disables - - integer llDetectedTouchFace( integer index ); + + float llWater(vector offset); - Returns an integer that is the index of the face the avatar clicked on. - - Index of detection information - + Returns the water height at the object position + offset. - - vector llDetectedTouchPos( integer index ); + + llWhisper(integer channel, string text); - Returns a vector that is the position where the object - was touched in region coordinates, unless it is attached to - the HUD, in which case it returns the position relative - to the attach point. - - Index of detection information - + Whisper text on channel. Channel 0 is the public chat channel that + all avatars see as chat text. Channels 1 to 2,147,483,648 are + private channels that are not sent to avatars but other scripts + can listen for through the llListen api. - - vector llDetectedTouchNormal( integer index ); + + vector llWind(vector offset); - Returns a vector that is the surface normal - (perpendicular to the surface) where the touch event was triggered. - - Index of detection information - + Returns the wind velocity below the object position + offset. - - vector llDetectedTouchBinormal( integer index ); + + string llXorBase64StringsCorrect(string s1, string s2) - Returns a vector that is the surface binormal - (tangent to the surface) where the touch event was triggered. - - Index of detection information - + Performs an xor on two Base64 strings and returns a Base64 string. + s2 repeats if it is shorter than s1. + This function is for encrypting data. Put your data in s1 and + your key in s2 to encrypt or put the encrypted data into s1 + with the same key in s2 to decrypt again. - - vector llDetectedTouchST( integer index ); + + llSetObjectPermMask(integer mask, integer value); - Returns a vector that is the surface coordinates for where the prim was touched. - The x and y vector positions contain the horizontal (s) and vertical (t) face - coordinates respectively. - Each component is in the interval [0.0, 1.0]. - - TOUCH_INVALID_TEXCOORD is returned when the surface coordinates cannot be determined. - - Index of detection information - - - - - string llSHA1String( string src ); - - *** Pre-release Documentation Warning *** - Returns a string of 40 hex characters that is the SHA1 security hash of src. - - - - integer llGetFreeURLs( ); - - Returns an integer that is the number of available URLs. - - - key llRequestURL( ); - - Requests one HTTP:// url for use by this script. The http_request event is triggered with the result of the request. - - Returns a key that is the handle used for identifying the result in the http_request event. - - - key llRequestSecureURL( ); - - Requests one HTTPS:// (SSL) url for use by this object. The http_request event is tiggered with results. - - Returns a key that is the handle used for identifying the request in the http_request event. - - - llReleaseURL( string url ); - - Releases the specified URL, it will no longer be usable. - URL to release - - - void llHTTPResponse( key request_id, integer status, string body ); - - Responds to request_id with status and body. - A valid HTTP request key - HTTP Status (200, 400, 404, etc) - Contents of the response - - - string llGetHTTPHeader( key request_id, string header ); - - Returns a string that is the value for header for request_id. - A valid HTTP request key - Header value name - - - integer LlGetSPMaxMemory( ); - - Returns the integer of the most bytes used while llScriptProfiler was last active. - - - string llGetEnv( string name ); - - Returns a string with the requested data about the region. - • string name – The name of the data to request - Table of valid name values. Name ↓ Description - "sim_channel" Get the current region's channel string, for example "Second Life Server" - "sim_version" Get the current region's version number string, for example "10.11.30.215699" - - - integer llGetUsedMemory( ); - - Returns the integer of the number of bytes of memory currently in use by the script. - - - string llGetUsername( key id ); - - Returns a string that is the unique username of the avatar specified by id. - • key id – avatar UUID that is in the same region or is otherwise known to the region - - id must specify a valid avatar key, present in or otherwise known to the sim in which the script is running, - otherwise an empty string is returned. This function will still return a valid username if the avatar is a child agent - of the sim (i.e., in an adjacent sim, but presently able to see into the one the script is in), or for a short period - after the avatar leaves the sim (specifically, when the client completely disconnects from the sim, either as a main - or child agent). - - - llRegionSayTo( key target, integer channel, string msg ); - - Says the text supplied in string msg on channel supplied in integer channel to the object or avatar specified by target - • key target - • integer channel – output channel, any integer value - • string msg – message to be transmitted - - - key llRequestDisplayName( key id ); - - Requests the Display Name of the agent identified by id. When the Display Name is available the dataserver event will be raised. - The agent identified by id does not need to be in the same region or online at the time of the request. - Returns the key that is used to identify the dataserver event when it is raised. - • key id – avatar UUID - - - key llRequestUsername( key id ); - - Requests the Username of the agent identified by id. When Username is available the dataserver event will be raised. - The agent identified by id does not need to be in the same region or online at the time of the request. - Returns a key that is used to identify the dataserver event when it is raised. - • key id – avatar UUID + Sets the given permission mask to the new value on the root object + the task is attached to. + + Every state must have at least one handler. You can choose to handle an event by defining one of the the reserved @@ -2727,7 +3185,7 @@ at_rot_target(integer number, rotation target_rotation, rotation our_rotation); - This event is triggered when a script comes within a defined + This event is triggered when a script comes within a defined angle of a target rotation. The range is set by a call to llRotTarget. @@ -2745,203 +3203,229 @@ When a target is set via the llTarget library call, but the script is outside the specified range this event is raised. + attach(key attached); - This event is triggered whenever a object with this script is + This event is triggered whenever a object with this script is attached or detached from an avatar. If it is attached, - attached is the key of the avatar it is attached to, otherwise + attached is the key of the avatar it is attached to, otherwise attached is NULL_KEY. + changed(integer change); - Triggered when various events change the object. The change + Triggered when various events change the object. The change argument will be a bitfield of change constants. + collision(integer total_number); - This event is raised while another object is colliding with + This event is raised while another object is colliding with the object the script is attached to. The number of - detected objects is passed to the script. Information on + detected objects is passed to the script. Information on those objects may be gathered via the llDetected* library - functions. + functions. (Collisions are also generated if a user walks into an object.) + collision_end(integer total_number); - This event is raised when another object stops colliding with + This event is raised when another object stops colliding with the object the script is attached to. The number of - detected objects is passed to the script. Information on those + detected objects is passed to the script. Information on those objects may be gathered via the llDetected* library - functions. + functions. (Collisions are also generated if a user walks into an object.) + collision_start(integer total_number); - This event is raised when another object begins to collide with + This event is raised when another object begins to collide with the object the script is attached to. The number of - detected objects is passed to the script. Information on + detected objects is passed to the script. Information on those objects may be gathered via the llDetected* library - functions. + functions. (Collisions are also generated if a user walks into an object.) + control(key name, integer levels, integer edges); - Once a script has the ability to grab control inputs from the avatar, + Once a script has the ability to grab control inputs from the avatar, this event will be used to pass the commands - into the script. The levelsand edgesare bitfields + into the script. The levelsand edgesare bitfields of control constsants. + dataserver(key requested, string data); - This event is triggered when the requested data is returned + This event is triggered when the requested data is returned to the script. Data may be requested by the - llRequestAgentData, the llRequestInventoryData, + llRequestAgentData, the llRequestInventoryData, and the llGetNotecardLine function calls. + email(string time, string address, string subject, string body, integer remaining); - This event is triggered when an email sent to this script arrives. + This event is triggered when an email sent to this script arrives. The remaining tells how many more emails are known as still pending. + land_collision(vector position); - This event is raised when the object the script is attached + This event is raised when the object the script is attached to is colliding with the ground. + land_collision_end(vector position); - This event is raised when the object the script is attached + This event is raised when the object the script is attached to stops colliding with the ground. + land_collision_start(vector position); - This event is raised when the object the script is attached + This event is raised when the object the script is attached to begins to collide with the ground. + link_message(integer sender_number, integer number, string message, key id); Triggered when object receives a link message via llMessageLinked library function call. + listen(integer channel, string name, key id, string message); - This event is raised whenever a chat message matching the + This event is raised whenever a chat message matching the constraints passed in the llListen command is heard. - The nameand id of the speaker as well as the messageare passed + The nameand id of the speaker as well as the messageare passed in as parameters. Channel 0 is the public - chat channel that all avatars see as chat text. + chat channel that all avatars see as chat text. Channels 1 through 2,147,483,648 are private channels that are not sent to avatars but other scripts can listen on those channels. + money(key giver, integer amount); - This event is triggered when user giver has given an amount + This event is triggered when user giver has given an amount of Linden dollars to the object. + moving_end(void); Triggered whenever a object with this script stops moving. + moving_start(void); Triggered whenever a object with this script starts moving. + no_sensor(void); - This event is raised when sensors are active + This event is raised when sensors are active (via the llSensor library call) but are not sensing anything. object_rez(key id); - Triggered when object rez-es in another object from its + Triggered when object rez-es in another object from its inventory via the llRezObject api. The id is the globally unique key for the object. + on_rez(integer start_param); - Triggered whenever a object is rez-ed from inventory + Triggered whenever a object is rez-ed from inventory or by another object. The start_paramis the parameter passed in from the call to llRezObject. + run_time_permissions(integer permissions); - Scripts need permission from either the owner or the avatar + Scripts need permission from either the owner or the avatar they wish to act on before they perform certain - functions, such as debiting money from their owners account, + functions, such as debiting money from their owners account, triggering an animation on an avatar, or capturing - control inputs. The llRequestPermissions library + control inputs. The llRequestPermissions library function is used to request these permissions and the various - permissions integer constants can be supplied. + permissions integer constants can be supplied. The integer returned to this event handler contains the current set of permissions flags, so if permissionseqal 0 then no permissions are set. + sensor(integer total_number); - This event is raised whenever objects matching the constraints - of the llSensor command are detected. - The number of detected objects is passed to the script + This event is raised whenever objects matching the constraints + of the llSensor command are detected. + The number of detected objects is passed to the script in the total_number parameter. Information on those objects may be gathered via the llDetected* library functions. + state_entry(void); The state_entry event occurs whenever a new state is entered, including program start, and is always the first event handled. + state_exit(void); - The state_exit event occurs whenever the state command + The state_exit event occurs whenever the state command is used to transition to another state. It is handled before the new states state_entry event. + timer(void); - This event is raised at regular intervals set by the + This event is raised at regular intervals set by the llSetTimerEvent library function. + touch(integer total_number); - This event is raised while a user is touching the object + This event is raised while a user is touching the object the script is attached to. The number of touching objects is - passed to the script in the total_number parameter. + passed to the script in the total_number parameter. Information on those objects may be gathered via the llDetected* library functions. + touch_end(integer total_number); - This event is raised when a user stops touching the object + This event is raised when a user stops touching the object the script is attached to. The number of touching - objects is passed to the script in the total_number parameter. + objects is passed to the script in the total_number parameter. Information on those objects may be gathered via the llDetected* library functions. + touch_start(integer total_number); @@ -2950,6 +3434,7 @@ the total_number parameter. Information on those objects may be gathered via the llDetected() library functions. + http_request(key request_id, string method, string body); @@ -2958,24 +3443,28 @@ GET, POST, PUT Contents of the request. + http_response(key request_id, integer status, list metadata, string body); - This event handler is invoked when an HTTP response is received for + This event handler is invoked when an HTTP response is received for a pending llHTTPRequest request or if a pending request fails or times out. + remote_data(integer event_type, key channel, key message_id, string sender, integer idata, string sdata); Triggered by various XML-RPC calls with event_type specifying the type of data. + + To ease scripting, many useful constants are defined by LSL. - The boolean constants represent the values for TRUE and FALSE. + The boolean constants represent the values for TRUE and FALSE. LSL represents booleans as integer values 1 - and 0 respectively. Since there is no boolean type these + and 0 respectively. Since there is no boolean type these constants act as a scripting aid usually employed for testing variables which conceptually represent boolean values. @@ -2986,64 +3475,64 @@ - The status constants are used in the llSetStatus and llGetStatus + The status constants are used in the llSetStatus and llGetStatus library calls. These constants can be bitwise ORed - together when calling the library functions to set the same + together when calling the library functions to set the same value to more than one status flag Status Constants - Controls whether the object moves physically. + Controls whether the object moves physically. This controls the same flag that the ui checkbox for Physical controls. The default is FALSE. - Controls whether the object collides or not. + Controls whether the object collides or not. Setting the value to TRUE makes the object non-colliding with - all objects. It is a good idea to use this for most objects + all objects. It is a good idea to use this for most objects that move or rotate, but are non-physical. It is also useful for simulating volumetric lighting. The default is FALSE. - Controls whether the object can physically rotate around + Controls whether the object can physically rotate around the specific axis or not. This flag has no meaning - for non-physical objects. Set the value to FALSE + for non-physical objects. Set the value to FALSE if you want to disable rotation around that axis. The default is TRUE for a physical object. - A useful example to think about when visualizing + A useful example to think about when visualizing the effect is a sit-and-spin device. They spin around the Z axis (up) but not around the X or Y axis. - Controls whether the object can be grabbed. + Controls whether the object can be grabbed. A grab is the default action when in third person, and is - available as the hand tool in build mode. + available as the hand tool in build mode. This is useful for physical objects that you dont want other - people to be able to trivially disturb. + people to be able to trivially disturb. The default if FALSE - Controls whether the object can cross region boundaries + Controls whether the object can cross region boundaries and move more than 20 meters from its creation point. The default if FALSE. - Controls whether the object is returned to the owners + Controls whether the object is returned to the owners inventory if it wanders off the edge of the world. It is - useful to set this status TRUE for things like bullets + useful to set this status TRUE for things like bullets or rockets. The default is TRUE - These constants can be combined using the binary | operator + These constants can be combined using the binary | operator and are used in the llSensor and related calls. Object Type Constants Objects in world that are agents. - Objects in world that are running a script or + Objects in world that are running a script or currently pysically moving. @@ -3054,40 +3543,40 @@ - The permission constants are used for passing values + The permission constants are used for passing values to llRequestPermissions, determing the value of - llGetPermissions, and explicitly passed to the + llGetPermissions, and explicitly passed to the run_time_permissions event. For many of the basic library - functions to work, a specific permission must be enabled. + functions to work, a specific permission must be enabled. The permission constants can be ored together to be used in conjunction. Permission Constants - If this permission is enabled, the object can successfully + If this permission is enabled, the object can successfully call llGiveMoney to debit the owners account. - If this permission enabled, the object can successfully + If this permission enabled, the object can successfully call the llTakeControls libray call. (not yet implemented) - If this permission is enabled, the object can successfully + If this permission is enabled, the object can successfully call llStartAnimation for the avatar that owns this object. - If this permission is enabled, the object can successfully + If this permission is enabled, the object can successfully call llAttachToAvatar to attach to the given avatar. (not yet implemented) - If this permission is enabled, the object can successfully + If this permission is enabled, the object can successfully call llCreateLink, llBreakLink, and llBreakAllLinks to change links to other objects. @@ -3099,7 +3588,7 @@ - These constants can be used to refer to a specific inventory + These constants can be used to refer to a specific inventory type in calls to llGetInventoryNumber andllGetInventoryName. Inventory Constants @@ -3115,7 +3604,7 @@ - These constants are used to refer to attachment points + These constants are used to refer to attachment points in calls to llAttachToAvatar. Attachment Constants @@ -3243,7 +3732,7 @@ - These constants are used in calls to llSetLinkColor and + These constants are used in calls to llSetLinkColor and llMessageLinked. Link Constants @@ -3254,7 +3743,7 @@ This targets the root of the linked set. - This targets every object in the linked set except + This targets every object in the linked set except the object with the script. @@ -3262,7 +3751,7 @@ - These constants are used in llTakeControls as well + These constants are used in llTakeControls as well as the control event handler. Control Constants @@ -3303,7 +3792,7 @@ The object inventory has changed. - The object inventory has changed because an item was + The object inventory has changed because an item was added through the llAllowInventoryDrop interface. @@ -3316,7 +3805,7 @@ The object scale has changed. - The texture offset, scale rotation, or simply the object + The texture offset, scale rotation, or simply the object texture has changed. @@ -3324,9 +3813,9 @@ - These constants are used to determine the variable type + These constants are used to determine the variable type stored in a heterogenous list. The value returned from - llGetListEntryType can be used for comparison against + llGetListEntryType can be used for comparison against these constants. Type Constants @@ -3352,9 +3841,9 @@ - Each of these constants represents a bit in the integer + Each of these constants represents a bit in the integer returned from the llGetAgentInfo function and can be used - in an expression to determine the specified information + in an expression to determine the specified information about an agent. Agent Info Constants @@ -3368,7 +3857,7 @@ - These constants are used in the llSetTextureAnim api to + These constants are used in the llSetTextureAnim api to control the animation mode. Texture Animation Constants @@ -3394,21 +3883,21 @@ - These constants are used in calls to the llParticleSystem + These constants are used in calls to the llParticleSystem api to specify parameters. Particle System Parameters - Each particle that is emitted by the particle system is + Each particle that is emitted by the particle system is simulated based on the following flags. To use multiple flags, bitwise or (|) them together. PSYS_PART_FLAGS Values - Interpolate both the color and alpha from the start + Interpolate both the color and alpha from the start value to the end value. - Interpolate the particle scale from the start value + Interpolate the particle scale from the start value to the end value. @@ -3421,11 +3910,11 @@ The particle position is relative to the source objects position. - The particle orientation is rotated so the vertical + The particle orientation is rotated so the vertical axis faces towards the particle velocity. - The particle heads towards the location of the target + The particle heads towards the location of the target object as defined by PSYS_SRC_TARGET_KEY. @@ -3441,7 +3930,7 @@ (not implemented) - The pattern which is used to generate particles. + The pattern which is used to generate particles. Use one of the following values: PSYS_SRC_PATTERN Values @@ -3449,49 +3938,49 @@ Drop particles at the source position. - Shoot particles out in all directions, + Shoot particles out in all directions, using the burst parameters. - Shoot particles across a 2 dimensional area defined + Shoot particles across a 2 dimensional area defined by the arc created from - PSYS_SRC_OUTERANGLE. + PSYS_SRC_OUTERANGLE. There will be an open area defined by PSYS_SRC_INNERANGLE within the larger arc. - Shoot particles out in a 3 dimensional cone with + Shoot particles out in a 3 dimensional cone with an outer arc of PSYS_SRC_OUTERANGLE and an inner open area defined by PSYS_SRC_INNERANGLE. - a vector <r,g,b> which determines the starting + a vector <r,g,b> which determines the starting color of the object. a float which determines the starting alpha of the object. - a vector <r, g, b> which determines the ending + a vector <r, g, b> which determines the ending color of the object. a float which determines the ending alpha of the object. - a vector <sx, sy, z>, - which is the starting size of the particle billboard + a vector <sx, sy, z>, + which is the starting size of the particle billboard in meters (z is ignored). - a vector <sx, sy, z>, which is the ending + a vector <sx, sy, z>, which is the ending size of the particle billboard in meters (z is ignored). age in seconds of a particle at which it dies. - a vector <x, y, z> which is the acceleration + a vector <x, y, z> which is the acceleration to apply on particles. @@ -3501,16 +3990,16 @@ how often to release a particle burst (float seconds). - specifies the inner angle of the arc created + specifies the inner angle of the arc created by the PSYS_PART_SRC_PATTERN_ANGLE or - PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. + PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. The area specified will not have particles in it.. - specifies the outer angle of the arc created + specifies the outer angle of the arc created by the PSYS_PART_SRC_PATTERN_ANGLE or - PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. + PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. The area between the outer and inner angle will be filled with particles.. @@ -3518,7 +4007,7 @@ how many particles to release in a burst. - what distance from the center of the object + what distance from the center of the object to create the particles. @@ -3528,22 +4017,22 @@ maximum speed that a particle should be moving. - how long this particle system should last, + how long this particle system should last, 0.0 menas forever. - the key of a target object to move towards + the key of a target object to move towards if PSYS_PART_TARGET_POS_MASK is enabled. - Sets the angular velocity to rotate the axis + Sets the angular velocity to rotate the axis that SRC_PATTERN_ANGLE and SRC_PATTERN_ANGLE_CONE use.. - These constants are used in calls to the - llRequestAgentData api to collect information about + These constants are used in calls to the + llRequestAgentData api to collect information about an agent which will be provided in the dataserver event. Texture Animation Constants @@ -3557,7 +4046,7 @@ The date the agent was born returned in ISO 8601 format of YYYY-MM-DD. - Returns the agent ratings as a comma separated string + Returns the agent ratings as a comma separated string of six integers. They are: 1. Positive rated behavior @@ -3569,10 +4058,10 @@ - LSL provides a small collection of floating point - constants for use in float arithmetic. + LSL provides a small collection of floating point + constants for use in float arithmetic. These constants are usually - employed while performing trigonometric calculations, + employed while performing trigonometric calculations, but are sometimes useful for other applications such as specifying arc radians to sensor or particle system functions. Float Constants @@ -3586,12 +4075,12 @@ 1.57079633 - The radians of a quarter circle. - 0.01745329 - Number of radians per degree. + 0.01745329 - Number of radians per degree. You can use this to convert degrees to radians by multiplying the degrees by this number. - 57.2957795 - Number of degrees per radian. + 57.2957795 - Number of degrees per radian. You can use this number to convert radians to degrees by multiplying the radians by this number. @@ -3603,39 +4092,39 @@ There is only one key constant which acts as an invalid key: NULL_KEY. - There is one uncategorized integer constant + There is one uncategorized integer constant which is used in some of the texturing and coloring api: ALL_SIDES - There is one uncategorized string constant + There is one uncategorized string constant which is used in the dataserver event: EOF - There is only one vector constant which + There is only one vector constant which acts as a zero vector: ZERO_VECTOR = <0,0,0>. - There is only one rotation constant + There is only one rotation constant which acts as a zero rotation: ZERO_ROTATION = <0,0,0,1>. Parameters - A vector of timescales for exponential + A vector of timescales for exponential decay of the vehicles linear velocity along its preferred axes of - motion (at, left, up). + motion (at, left, up). Range = [0.07, inf) seconds for each element of the vector. - A vector of timescales for exponential + A vector of timescales for exponential decay of the vehicles angular velocity about its preferred axes of - motion (at, left, up). + motion (at, left, up). Range = [0.07, inf) seconds for each element of the vector. - The direction and magnitude (in preferred frame) + The direction and magnitude (in preferred frame) of the vehicles linear motor. The vehicle will accelerate - (or decelerate if necessary) to match its velocity to its motor. + (or decelerate if necessary) to match its velocity to its motor. Range of magnitude = [0, 30] meters/second. @@ -3645,7 +4134,7 @@ The timescale for exponential decay of the linear motors magnitude. - The direction and magnitude (in preferred frame) + The direction and magnitude (in preferred frame) of the vehicles angular motor.The vehicle will accelerate (or decelerate if necessary) to match its velocity to its motor. @@ -3656,16 +4145,16 @@ The timescale for exponential decay of the angular motors magnitude. - The height (above the terrain or water, or global) + The height (above the terrain or water, or global) at which the vehicle will try to hover. - A slider between minimum (0.0 = bouncy) + A slider between minimum (0.0 = bouncy) and maximum (1.0 = fast as possible) damped motion of the hover behavior. - The period of bounce (or timescale of exponential approach, + The period of bounce (or timescale of exponential approach, depending on the hover efficiency) for the vehicle to hover to the proper height. @@ -3673,59 +4162,59 @@ A slider between minimum (0.0) and maximum anti-gravity (1.0). - A slider between minimum (0.0) and maximum (1.0) + A slider between minimum (0.0) and maximum (1.0) deflection of linear velocity. That is, its a simple scalar for modulating the strength of linear deflection. - The timescale for exponential success of linear + The timescale for exponential success of linear deflection deflection. It is another way to specify how much - time it takes for the vehicles linear velocity + time it takes for the vehicles linear velocity to be redirected to its preferred axis of motion. - A slider between minimum (0.0) and maximum (1.0) + A slider between minimum (0.0) and maximum (1.0) deflection of angular orientation. That is, its a simple - scalar for modulating the strength of angular + scalar for modulating the strength of angular deflection such that the vehicles preferred axis of motion points toward its real velocity. - The timescale for exponential success of linear + The timescale for exponential success of linear deflection deflection. Its another way to specify the strength - of the vehicles tendency to reorient itself so + of the vehicles tendency to reorient itself so that its preferred axis of motion agrees with its true velocity. - A slider between minimum (0.0 = wobbly) and + A slider between minimum (0.0 = wobbly) and maximum (1.0 = firm as possible) stability of the vehicle to keep itself upright. - The period of wobble, or timescale for + The period of wobble, or timescale for exponential approach, of the vehicle to rotate such that its preferred "up" axis is oriented along the worlds "up" axis. - A slider between anti (-1.0), none (0.0), + A slider between anti (-1.0), none (0.0), and maxmum (1.0) banking strength. - A slider between static (0.0) and dynamic (1.0) + A slider between static (0.0) and dynamic (1.0) banking. "Static" means the banking scales only with the - angle of roll, whereas "dynamic" is a term + angle of roll, whereas "dynamic" is a term that also scales with the vehicles linear speed. - The timescale for banking to exponentially + The timescale for banking to exponentially approach its maximum effect. This is another way to scale the - strength of the banking effect, however it affects the + strength of the banking effect, however it affects the term that is proportional to the difference between what - the banking behavior is trying to do, and what the + the banking behavior is trying to do, and what the vehicle is actually doing. - A rotation of the vehicles preferred axes of + A rotation of the vehicles preferred axes of motion and orientation (at, left, up) with respect to the vehicles local frame (x, y, z). @@ -3736,14 +4225,14 @@ Old, changed to VEHICLE_FLAG_NO_DEFLECTION_UP - This flag prevents linear deflection parallel to world z-axis. + This flag prevents linear deflection parallel to world z-axis. This is useful for preventing ground vehicles - with large linear deflection, like bumper cars, + with large linear deflection, like bumper cars, from climbing their linear deflection into the sky. - For vehicles with vertical attractor - that want to be able to climb/dive, for instance, + For vehicles with vertical attractor + that want to be able to climb/dive, for instance, airplanes that want to use the banking feature. @@ -3756,7 +4245,7 @@ Hover at global height. - Hover doesnt push down. Use this flag for hovering vehicles + Hover doesnt push down. Use this flag for hovering vehicles that should be able to jump above their hover height. @@ -3767,7 +4256,7 @@ Types - Simple vehicle that bumps along the ground, + Simple vehicle that bumps along the ground, and likes to move along its local x-axis. // most friction for left-right, least for up-down llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <30, 1, 1000> ); @@ -3813,7 +4302,7 @@ | VEHICLE_FLAG_LIMIT_MOTOR_UP ); - Another vehicle that bounces along the ground but needs + Another vehicle that bounces along the ground but needs the motors to be driven from external controls or timer events. // most friction for left-right, least for up-down @@ -4022,7 +4511,7 @@ - DEBUG_CHANNEL is an integer constant that, when passed to + DEBUG_CHANNEL is an integer constant that, when passed to llSay, llWhisper, or llShout as a channel parameter, will print text to the Script Warning/Error Window. It has the value '2147483647'. @@ -4217,9 +4706,9 @@ will NOT be created (for ANGLE patterns) - Area in radians filled with particles + Area in radians filled with particles (for ANGLE patterns) (if lower than PSYS_SRC_ANGLE_BEGIN, - acts as PSYS_SRC_ANGLE_BEGIN itself, + acts as PSYS_SRC_ANGLE_BEGIN itself, and PSYS_SRC_ANGLE_BEGIN acts as PSYS_SRC_ANGLE_END) @@ -4229,7 +4718,7 @@ PUBLIC_CHANNEL is an integer constant that, when passed to - llSay, llWhisper, or llShout as a channel parameter, + llSay, llWhisper, or llShout as a channel parameter, will print text to the publicly heard chat channel. Has the value '0'. @@ -4314,6 +4803,8 @@ + + @@ -4332,12 +4823,14 @@ + + From 73115a27d2b4abce5febf6355179f3f832f2b553 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:22:51 +0000 Subject: [PATCH 02/26] Updated events in syntax highlighting. Sorted them because I did the functions and I'm pedantic ;-) Event added: transaction_result. git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@38 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ConfLSL.xml | 75 +++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/trunk/Resource/ConfLSL.xml b/trunk/Resource/ConfLSL.xml index 0db433a..856a983 100644 --- a/trunk/Resource/ConfLSL.xml +++ b/trunk/Resource/ConfLSL.xml @@ -3190,20 +3190,6 @@ to llRotTarget. - - not_at_rot_target(void); - - When a target is set via the llRotTarget library call, - but the script is outside the specified angle this event is raised. - - - - not_at_target(void); - - When a target is set via the llTarget library call, - but the script is outside the specified range this event is raised. - - attach(key attached); @@ -3278,6 +3264,22 @@ The remaining tells how many more emails are known as still pending. + + http_request(key request_id, string method, string body); + + Triggered when task receives an HTTP request. + HTTP request id for response use, and function response identification. + GET, POST, PUT + Contents of the request. + + + + http_response(key request_id, integer status, list metadata, string body); + + This event handler is invoked when an HTTP response is received for + a pending llHTTPRequest request or if a pending request fails or times out. + + land_collision(vector position); @@ -3344,6 +3346,20 @@ (via the llSensor library call) but are not sensing anything. + + not_at_rot_target(void); + + When a target is set via the llRotTarget library call, + but the script is outside the specified angle this event is raised. + + + + not_at_target(void); + + When a target is set via the llTarget library call, + but the script is outside the specified range this event is raised. + + object_rez(key id); @@ -3360,6 +3376,12 @@ passed in from the call to llRezObject. + + remote_data(integer event_type, key channel, key message_id, string sender, integer idata, string sdata); + + Triggered by various XML-RPC calls with event_type specifying the type of data. + + run_time_permissions(integer permissions); @@ -3435,26 +3457,13 @@ via the llDetected() library functions. - - http_request(key request_id, string method, string body); + + transaction_result(key RequestID, integer Success, string Text) - Triggered when task receives an HTTP request. - HTTP request id for response use, and function response identification. - GET, POST, PUT - Contents of the request. - - - - http_response(key request_id, integer status, list metadata, string body); - - This event handler is invoked when an HTTP response is received for - a pending llHTTPRequest request or if a pending request fails or times out. - - - - remote_data(integer event_type, key channel, key message_id, string sender, integer idata, string sdata); - - Triggered by various XML-RPC calls with event_type specifying the type of data. + Triggered by llTransferMoney() function. + The key returned by an llTransferMoney call to identify the specific request. + Boolean value, indicating success of the transfer + Message which depends on the result of the transaction. If iSuccess is true, this will contain <destination_id>,<amount> From ac1295059b1356493c5e5afbc594129c501340f0 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:23:31 +0000 Subject: [PATCH 03/26] Added new constants, event, and functions to syntax checking code. Sorted the entries to make adding/finding easier. Signed-off-by: unknown git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@39 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/SecondLife/SecondLifeMain.cs | 7526 ++++++++++++++-------------- 1 file changed, 3891 insertions(+), 3635 deletions(-) diff --git a/trunk/SecondLife/SecondLifeMain.cs b/trunk/SecondLife/SecondLifeMain.cs index 5939b10..9941dc3 100644 --- a/trunk/SecondLife/SecondLifeMain.cs +++ b/trunk/SecondLife/SecondLifeMain.cs @@ -20,7 +20,7 @@ // ******** // * LSLEditor, a External editor for the LSL Language. // * Copyright (C) 2010 The LSLEditor Group. -// +// // * This program 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 2 @@ -36,7 +36,7 @@ // * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // ******** // * -// * The above copyright notice and this permission notice shall be included in all +// * The above copyright notice and this permission notice shall be included in all // * copies or substantial portions of the Software. // * // ******** @@ -56,3059 +56,1817 @@ namespace LSLEditor { public enum CommunicationType { - Whisper, Say, Shout, OwnerSay, RegionSay + Whisper, Say, Shout, OwnerSay, RegionSay, RegionSayTo } - public partial class SecondLife - { - // Make friends with my host - public SecondLifeHost host; + public partial class SecondLife + { + // Make friends with my host + public SecondLifeHost host; - #region members - // Random generator - private Random m_random; + #region members + // Random generator + private Random m_random; - private DateTime m_DateTimeScriptStarted; + private DateTime m_DateTimeScriptStarted; - private Hashtable m_LandPassList; + private Hashtable m_LandPassList; - private Hashtable m_LandBanList; + private Hashtable m_LandBanList; - private Float m_Volume; + private Float m_Volume; - private String m_ObjectName; - private vector m_pos; - private rotation m_rot; - private rotation m_rotlocal; - private vector m_scale; - private String m_SitText; - private Float m_SoundRadius; + private String m_ObjectName; + private vector m_pos; + private rotation m_rot; + private rotation m_rotlocal; + private vector m_scale; + private String m_SitText; + private Float m_SoundRadius; - private vector m_RegionCorner; + private vector m_RegionCorner; - private integer m_start_parameter; + private integer m_start_parameter; - #endregion + #endregion - #region constructor - public SecondLife() - { - host = null; - m_random = new Random(); - m_DateTimeScriptStarted = DateTime.Now.ToUniversalTime(); - m_LandPassList = new Hashtable(); - m_LandBanList = new Hashtable(); - m_Volume = 0.0; - m_ObjectName = null; - m_pos = new vector(127, 128, 20); - m_rot = rotation.ZERO_ROTATION; - m_rotlocal = rotation.ZERO_ROTATION; - m_scale = vector.ZERO_VECTOR; - m_SitText = "sittext"; - m_SoundRadius = 1.0; - m_start_parameter = 0; + #region constructor + public SecondLife() + { + host = null; + m_random = new Random(); + m_DateTimeScriptStarted = DateTime.Now.ToUniversalTime(); + m_LandPassList = new Hashtable(); + m_LandBanList = new Hashtable(); + m_Volume = 0.0; + m_ObjectName = null; + m_pos = new vector(127, 128, 20); + m_rot = rotation.ZERO_ROTATION; + m_rotlocal = rotation.ZERO_ROTATION; + m_scale = vector.ZERO_VECTOR; + m_SitText = "sittext"; + m_SoundRadius = 1.0; + m_start_parameter = 0; - m_RegionCorner = vector.ZERO_VECTOR; - } - #endregion + m_RegionCorner = vector.ZERO_VECTOR; + } + #endregion - #region internal routines - private void Verbose(string strLine, params object[] parameters) - { - if(parameters.Length == 0) - host.VerboseMessage(strLine); - else - host.VerboseMessage(string.Format(strLine, parameters)); - } + #region internal routines + private void Verbose(string strLine, params object[] parameters) + { + if (parameters.Length == 0) + host.VerboseMessage(strLine); + else + host.VerboseMessage(string.Format(strLine, parameters)); + } - private void Chat(integer channel, string message, CommunicationType how) - { - host.Chat(host, channel, host.GetObjectName(), host.GetKey(), message, how); - } + private void Chat(integer channel, string message, CommunicationType how) + { + host.Chat(host, channel, host.GetObjectName(), host.GetKey(), message, how); + } - public void state(string strStateName) - { - Verbose("state->" + strStateName); - host.State(strStateName,false); - System.Threading.Thread.Sleep(1000); - System.Windows.Forms.MessageBox.Show("If you see this, something is wrong", "Oops..."); - } - #endregion + public void state(string strStateName) + { + Verbose("state->" + strStateName); + host.State(strStateName, false); + System.Threading.Thread.Sleep(1000); + System.Windows.Forms.MessageBox.Show("If you see this, something is wrong", "Oops..."); + } + #endregion - #region events as virtuals, if one is used, use override - virtual public void at_rot_target(integer number, rotation target_rotation, rotation our_rotation) { } - virtual public void attach(key attached) { } - virtual public void changed(integer changed) { } - virtual public void collision(integer total_number) { } - virtual public void collision_end(integer total_number) { } - virtual public void collision_start(integer total_number) { } - virtual public void control(key name, integer levels, integer edges) { } - virtual public void dataserver(key requested, String data) { } - virtual public void email(String time, String address, String subject, String body, integer remaining) { } - virtual public void land_collision(vector position) { } - virtual public void land_collision_end(vector position) { } - virtual public void land_collision_start(vector position) { } - virtual public void link_message(integer sender_number, integer number, String message, key id) { } - virtual public void listen(integer channel, String name, key id, String message) { } - virtual public void money(key giver, integer amount) { } - virtual public void moving_end() { } - virtual public void moving_start() { } - virtual public void no_sensor() { } - virtual public void not_at_rot_target() { } - virtual public void not_at_target() { } - virtual public void at_target(integer tnum, vector targetpos, vector ourpos) { } - virtual public void object_rez(key id) { } - virtual public void on_rez(integer start_param) { } - virtual public void run_time_permissions(integer permissions) { } - virtual public void sensor(integer total_number) { } - virtual public void state_entry() { } - virtual public void state_exit() { } - virtual public void timer() { } - virtual public void touch(integer total_number) { } - virtual public void touch_end(integer total_number) { } - virtual public void touch_start(integer total_number) { } - virtual public void remote_data(integer event_type, key channel, key message_id, String sender, integer idata, String sdata) { } - virtual public void http_response(key request_id, integer status, list metadata, String body) { } + #region events as virtuals, if one is used, use override + virtual public void at_rot_target(integer number, rotation target_rotation, rotation our_rotation) { } + virtual public void at_target(integer tnum, vector targetpos, vector ourpos) { } + virtual public void attach(key attached) { } + virtual public void changed(integer changed) { } + virtual public void collision(integer total_number) { } + virtual public void collision_end(integer total_number) { } + virtual public void collision_start(integer total_number) { } + virtual public void control(key name, integer levels, integer edges) { } + virtual public void dataserver(key requested, String data) { } + virtual public void email(String time, String address, String subject, String body, integer remaining) { } + virtual public void http_response(key request_id, integer status, list metadata, String body) { } virtual public void http_request(key request_id, String method, String body) { } - #endregion + virtual public void land_collision(vector position) { } + virtual public void land_collision_end(vector position) { } + virtual public void land_collision_start(vector position) { } + virtual public void link_message(integer sender_number, integer number, String message, key id) { } + virtual public void listen(integer channel, String name, key id, String message) { } + virtual public void money(key giver, integer amount) { } + virtual public void moving_end() { } + virtual public void moving_start() { } + virtual public void no_sensor() { } + virtual public void not_at_rot_target() { } + virtual public void not_at_target() { } + virtual public void object_rez(key id) { } + virtual public void on_rez(integer start_param) { } + virtual public void remote_data(integer event_type, key channel, key message_id, String sender, integer idata, String sdata) { } + virtual public void run_time_permissions(integer permissions) { } + virtual public void sensor(integer total_number) { } + virtual public void state_entry() { } + virtual public void state_exit() { } + virtual public void timer() { } + virtual public void touch(integer total_number) { } + virtual public void touch_end(integer total_number) { } + virtual public void touch_start(integer total_number) { } + virtual public void transaction_result(key kID, integer iSuccess, String sMessage) { } + #endregion - #region all constants - public static readonly integer TRUE = 1; - public static readonly integer FALSE = 0; + #region all constants + public static readonly integer TRUE = 1; + public static readonly integer FALSE = 0; - public static readonly integer STATUS_PHYSICS = 1; - public static readonly integer STATUS_ROTATE_X = 2; - public static readonly integer STATUS_ROTATE_Y = 4; - public static readonly integer STATUS_ROTATE_Z = 8; - public static readonly integer STATUS_PHANTOM = 16; - public static readonly integer STATUS_SANDBOX = 32; - public static readonly integer STATUS_BLOCK_GRAB = 64; - public static readonly integer STATUS_DIE_AT_EDGE = 128; - public static readonly integer STATUS_RETURN_AT_EDGE = 256; - public static readonly integer STATUS_CAST_SHADOWS = 512; + public static readonly integer DENSITY = 1; + public static readonly integer FRICTION = 2; + public static readonly integer GRAVITY_MULTIPLIER = 8; + public static readonly integer RESTITUTION = 4; + public static readonly integer AGENT = 1; + public static readonly integer ACTIVE = 2; + public static readonly integer PASSIVE = 4; + public static readonly integer SCRIPTED = 8; - public static readonly integer AGENT = 1; - public static readonly integer ACTIVE = 2; - public static readonly integer PASSIVE = 4; - public static readonly integer SCRIPTED = 8; + public static readonly integer ANIM_ON = 1; + public static readonly integer LOOP = 2; + public static readonly integer REVERSE = 4; + public static readonly integer PING_PONG = 8; + public static readonly integer SMOOTH = 16; + public static readonly integer ROTATE = 32; + public static readonly integer SCALE = 64; - public static readonly integer PERMISSION_DEBIT = 2; - public static readonly integer PERMISSION_TAKE_CONTROLS = 4; - public static readonly integer PERMISSION_REMAP_CONTROLS = 8; - public static readonly integer PERMISSION_TRIGGER_ANIMATION = 16; - public static readonly integer PERMISSION_ATTACH = 32; - public static readonly integer PERMISSION_RELEASE_OWNERSHIP = 64; - public static readonly integer PERMISSION_CHANGE_LINKS = 128; - public static readonly integer PERMISSION_CHANGE_JOINTS = 256; - public static readonly integer PERMISSION_CHANGE_PERMISSIONS = 512; - public static readonly integer PERMISSION_TRACK_CAMERA = 1024; - public static readonly integer PERMISSION_CONTROL_CAMERA = 2048; + public static readonly Float PI = 3.1415926535897932384626; + public static readonly Float TWO_PI = 2.0 * PI; + public static readonly Float PI_BY_TWO = 1.570796; + public static readonly Float DEG_TO_RAD = 0.017453; + public static readonly Float RAD_TO_DEG = 57.295780; + public static readonly Float SQRT2 = 1.414214; - public static readonly integer INVENTORY_ALL = -1; - public static readonly integer INVENTORY_NONE = -1; - public static readonly integer INVENTORY_TEXTURE = 0; - public static readonly integer INVENTORY_SOUND = 1; - public static readonly integer INVENTORY_LANDMARK = 3; - public static readonly integer INVENTORY_CLOTHING = 5; - public static readonly integer INVENTORY_OBJECT = 6; - public static readonly integer INVENTORY_NOTECARD = 7; - public static readonly integer INVENTORY_SCRIPT = 10; - public static readonly integer INVENTORY_BODYPART = 13; - public static readonly integer INVENTORY_ANIMATION = 20; - public static readonly integer INVENTORY_GESTURE = 21; + public static readonly key NULL_KEY = key.NULL_KEY; + public static readonly rotation ZERO_ROTATION = rotation.ZERO_ROTATION; + public static readonly vector ZERO_VECTOR = vector.ZERO_VECTOR; - public static readonly integer ATTACH_CHEST = 1; - public static readonly integer ATTACH_HEAD = 2; - public static readonly integer ATTACH_LSHOULDER = 3; - public static readonly integer ATTACH_RSHOULDER = 4; - public static readonly integer ATTACH_LHAND = 5; - public static readonly integer ATTACH_RHAND = 6; - public static readonly integer ATTACH_LFOOT = 7; - public static readonly integer ATTACH_RFOOT = 8; - public static readonly integer ATTACH_BACK = 9; - public static readonly integer ATTACH_PELVIS = 10; - public static readonly integer ATTACH_MOUTH = 11; - public static readonly integer ATTACH_CHIN = 12; - public static readonly integer ATTACH_LEAR = 13; - public static readonly integer ATTACH_REAR = 14; - public static readonly integer ATTACH_LEYE = 15; - public static readonly integer ATTACH_REYE = 16; - public static readonly integer ATTACH_NOSE = 17; - public static readonly integer ATTACH_RUARM = 18; - public static readonly integer ATTACH_RLARM = 19; - public static readonly integer ATTACH_LUARM = 20; - public static readonly integer ATTACH_LLARM = 21; - public static readonly integer ATTACH_RHIP = 22; - public static readonly integer ATTACH_RULEG = 23; - public static readonly integer ATTACH_RLLEG = 24; - public static readonly integer ATTACH_LHIP = 25; - public static readonly integer ATTACH_LULEG = 26; - public static readonly integer ATTACH_LLLEG = 27; - public static readonly integer ATTACH_BELLY = 28; - public static readonly integer ATTACH_RPEC = 29; - public static readonly integer ATTACH_LPEC = 30; + public static readonly integer ALL_SIDES = -1; - public static readonly integer ATTACH_HUD_CENTER_2 = 31; - public static readonly integer ATTACH_HUD_TOP_RIGHT = 32; - public static readonly integer ATTACH_HUD_TOP_CENTER = 33; - public static readonly integer ATTACH_HUD_TOP_LEFT = 34; - public static readonly integer ATTACH_HUD_CENTER_1 = 35; - public static readonly integer ATTACH_HUD_BOTTOM_LEFT = 36; - public static readonly integer ATTACH_HUD_BOTTOM = 37; - public static readonly integer ATTACH_HUD_BOTTOM_RIGHT = 38; + public static readonly integer DEBUG_CHANNEL = 2147483647; + public const string EOF = "\n\n\n"; - public static readonly integer LAND_LEVEL = 0; - public static readonly integer LAND_RAISE = 1; - public static readonly integer LAND_LOWER = 2; - public static readonly integer LAND_SMOOTH = 3; - public static readonly integer LAND_NOISE = 4; - public static readonly integer LAND_REVERT = 5; + public static readonly integer AGENT_FLYING = 1; + public static readonly integer AGENT_ATTACHMENTS = 2; + public static readonly integer AGENT_SCRIPTED = 4; + public static readonly integer AGENT_MOUSELOOK = 8; + public static readonly integer AGENT_SITTING = 16; + public static readonly integer AGENT_ON_OBJECT = 32; + public static readonly integer AGENT_AWAY = 64; + public static readonly integer AGENT_WALKING = 128; + public static readonly integer AGENT_IN_AIR = 256; + public static readonly integer AGENT_TYPING = 512; + public static readonly integer AGENT_CROUCHING = 1024; + public static readonly integer AGENT_BUSY = 2048; + public static readonly integer AGENT_ALWAYS_RUN = 4096; - public static readonly integer LAND_SMALL_BRUSH = 1; - public static readonly integer LAND_MEDIUM_BRUSH = 2; - public static readonly integer LAND_LARGE_BRUSH = 3; + public static readonly integer ATTACH_CHEST = 1; + public static readonly integer ATTACH_HEAD = 2; + public static readonly integer ATTACH_LSHOULDER = 3; + public static readonly integer ATTACH_RSHOULDER = 4; + public static readonly integer ATTACH_LHAND = 5; + public static readonly integer ATTACH_RHAND = 6; + public static readonly integer ATTACH_LFOOT = 7; + public static readonly integer ATTACH_RFOOT = 8; + public static readonly integer ATTACH_BACK = 9; + public static readonly integer ATTACH_PELVIS = 10; + public static readonly integer ATTACH_MOUTH = 11; + public static readonly integer ATTACH_CHIN = 12; + public static readonly integer ATTACH_LEAR = 13; + public static readonly integer ATTACH_REAR = 14; + public static readonly integer ATTACH_LEYE = 15; + public static readonly integer ATTACH_REYE = 16; + public static readonly integer ATTACH_NOSE = 17; + public static readonly integer ATTACH_RUARM = 18; + public static readonly integer ATTACH_RLARM = 19; + public static readonly integer ATTACH_LUARM = 20; + public static readonly integer ATTACH_LLARM = 21; + public static readonly integer ATTACH_RHIP = 22; + public static readonly integer ATTACH_RULEG = 23; + public static readonly integer ATTACH_RLLEG = 24; + public static readonly integer ATTACH_LHIP = 25; + public static readonly integer ATTACH_LULEG = 26; + public static readonly integer ATTACH_LLLEG = 27; + public static readonly integer ATTACH_BELLY = 28; + public static readonly integer ATTACH_RPEC = 29; + public static readonly integer ATTACH_LPEC = 30; - public static readonly integer LINK_ROOT = 1; - public static readonly integer LINK_SET = -1; - public static readonly integer LINK_ALL_OTHERS = -2; - public static readonly integer LINK_ALL_CHILDREN = -3; - public static readonly integer LINK_THIS = -4; + public static readonly integer ATTACH_HUD_CENTER_2 = 31; + public static readonly integer ATTACH_HUD_TOP_RIGHT = 32; + public static readonly integer ATTACH_HUD_TOP_CENTER = 33; + public static readonly integer ATTACH_HUD_TOP_LEFT = 34; + public static readonly integer ATTACH_HUD_CENTER_1 = 35; + public static readonly integer ATTACH_HUD_BOTTOM_LEFT = 36; + public static readonly integer ATTACH_HUD_BOTTOM = 37; + public static readonly integer ATTACH_HUD_BOTTOM_RIGHT = 38; - public static readonly integer CONTROL_FWD = 1; - public static readonly integer CONTROL_BACK = 2; - public static readonly integer CONTROL_LEFT = 4; - public static readonly integer CONTROL_RIGHT = 8; - public static readonly integer CONTROL_ROT_LEFT = 256; - public static readonly integer CONTROL_ROT_RIGHT = 512; - public static readonly integer CONTROL_UP = 16; - public static readonly integer CONTROL_DOWN = 32; - public static readonly integer CONTROL_LBUTTON = 268435456; - public static readonly integer CONTROL_ML_LBUTTON = 1073741824; + public static readonly integer CAMERA_PITCH = 0; + public static readonly integer CAMERA_FOCUS_OFFSET = 1; + public static readonly integer CAMERA_POSITION_LAG = 5; + public static readonly integer CAMERA_FOCUS_LAG = 6; + public static readonly integer CAMERA_DISTANCE = 7; + public static readonly integer CAMERA_BEHINDNESS_ANGLE = 8; + public static readonly integer CAMERA_BEHINDNESS_LAG = 9; + public static readonly integer CAMERA_POSITION_THRESHOLD = 10; + public static readonly integer CAMERA_FOCUS_THRESHOLD = 11; + public static readonly integer CAMERA_ACTIVE = 12; + public static readonly integer CAMERA_POSITION = 13; + public static readonly integer CAMERA_FOCUS = 17; + public static readonly integer CAMERA_FOCUS_LOCKED = 22; + public static readonly integer CAMERA_POSITION_LOCKED = 21; - public static readonly integer CHANGED_INVENTORY = 1; - public static readonly integer CHANGED_COLOR = 2; - public static readonly integer CHANGED_SHAPE = 4; - public static readonly integer CHANGED_SCALE = 8; - public static readonly integer CHANGED_TEXTURE = 16; - public static readonly integer CHANGED_LINK = 32; - public static readonly integer CHANGED_ALLOWED_DROP = 64; - public static readonly integer CHANGED_OWNER = 128; - public static readonly integer CHANGED_REGION = 256; - public static readonly integer CHANGED_TELEPORT = 512; + public static readonly integer CHANGED_INVENTORY = 1; + public static readonly integer CHANGED_COLOR = 2; + public static readonly integer CHANGED_SHAPE = 4; + public static readonly integer CHANGED_SCALE = 8; + public static readonly integer CHANGED_TEXTURE = 16; + public static readonly integer CHANGED_LINK = 32; + public static readonly integer CHANGED_ALLOWED_DROP = 64; + public static readonly integer CHANGED_OWNER = 128; + public static readonly integer CHANGED_REGION = 256; + public static readonly integer CHANGED_TELEPORT = 512; public static readonly integer CHANGED_REGION_START = 1024; - public static readonly integer TYPE_INTEGER = 1; - public static readonly integer TYPE_FLOAT = 2; - public static readonly integer TYPE_STRING = 3; - public static readonly integer TYPE_KEY = 4; - public static readonly integer TYPE_VECTOR = 5; - public static readonly integer TYPE_ROTATION = 6; - public static readonly integer TYPE_INVALID = 0; + public static readonly integer CLICK_ACTION_NONE = 0; + public static readonly integer CLICK_ACTION_TOUCH = 0; + public static readonly integer CLICK_ACTION_SIT = 1; + public static readonly integer CLICK_ACTION_BUY = 2; + public static readonly integer CLICK_ACTION_PAY = 3; + public static readonly integer CLICK_ACTION_OPEN = 4; + public static readonly integer CLICK_ACTION_PLAY = 5; + public static readonly integer CLICK_ACTION_OPEN_MEDIA = 6; - public static readonly integer AGENT_FLYING = 1; - public static readonly integer AGENT_ATTACHMENTS = 2; - public static readonly integer AGENT_SCRIPTED = 4; - public static readonly integer AGENT_MOUSELOOK = 8; - public static readonly integer AGENT_SITTING = 16; - public static readonly integer AGENT_ON_OBJECT = 32; - public static readonly integer AGENT_AWAY = 64; - public static readonly integer AGENT_WALKING = 128; - public static readonly integer AGENT_IN_AIR = 256; - public static readonly integer AGENT_TYPING = 512; - public static readonly integer AGENT_CROUCHING = 1024; - public static readonly integer AGENT_BUSY = 2048; - public static readonly integer AGENT_ALWAYS_RUN = 4096; + public static readonly integer CONTROL_FWD = 1; + public static readonly integer CONTROL_BACK = 2; + public static readonly integer CONTROL_LEFT = 4; + public static readonly integer CONTROL_RIGHT = 8; + public static readonly integer CONTROL_ROT_LEFT = 256; + public static readonly integer CONTROL_ROT_RIGHT = 512; + public static readonly integer CONTROL_UP = 16; + public static readonly integer CONTROL_DOWN = 32; + public static readonly integer CONTROL_LBUTTON = 268435456; + public static readonly integer CONTROL_ML_LBUTTON = 1073741824; - public static readonly integer ANIM_ON = 1; - public static readonly integer LOOP = 2; - public static readonly integer REVERSE = 4; - public static readonly integer PING_PONG = 8; - public static readonly integer SMOOTH = 16; - public static readonly integer ROTATE = 32; - public static readonly integer SCALE = 64; + public static readonly integer DATA_ONLINE = 1; + public static readonly integer DATA_NAME = 2; + public static readonly integer DATA_BORN = 3; + public static readonly integer DATA_RATING = 4; - public static readonly integer PSYS_PART_START_COLOR = 1; - public static readonly integer PSYS_PART_START_ALPHA = 2; - public static readonly integer PSYS_PART_END_COLOR = 3; - public static readonly integer PSYS_PART_END_ALPHA = 4; - public static readonly integer PSYS_PART_START_SCALE = 5; - public static readonly integer PSYS_PART_END_SCALE = 6; - public static readonly integer PSYS_PART_MAX_AGE = 7; + public static readonly integer DATA_SIM_POS = 5; + public static readonly integer DATA_SIM_STATUS = 6; + public static readonly integer DATA_SIM_RATING = 7; - public static readonly integer PSYS_SRC_ACCEL = 8; - public static readonly integer PSYS_SRC_PATTERN = 9; - public static readonly integer PSYS_SRC_INNERANGLE = 10; - public static readonly integer PSYS_SRC_OUTERANGLE = 11; - public static readonly integer PSYS_SRC_TEXTURE = 12; - public static readonly integer PSYS_SRC_BURST_RATE = 13; - public static readonly integer PSYS_SRC_BURST_PART_COUNT = 15; - public static readonly integer PSYS_SRC_BURST_RADIUS = 16; - public static readonly integer PSYS_SRC_BURST_SPEED_MIN = 17; - public static readonly integer PSYS_SRC_BURST_SPEED_MAX = 18; - public static readonly integer PSYS_SRC_MAX_AGE = 19; - public static readonly integer PSYS_SRC_TARGET_KEY = 20; - public static readonly integer PSYS_SRC_OMEGA = 21; - public static readonly integer PSYS_SRC_ANGLE_BEGIN = 22; - public static readonly integer PSYS_SRC_ANGLE_END = 23; + public static readonly integer DATA_PAYINFO = 8; - public static readonly integer PSYS_PART_FLAGS = 0; - public static readonly integer PSYS_PART_INTERP_COLOR_MASK = 1; - public static readonly integer PSYS_PART_INTERP_SCALE_MASK = 2; - public static readonly integer PSYS_PART_BOUNCE_MASK = 4; - public static readonly integer PSYS_PART_WIND_MASK = 8; - public static readonly integer PSYS_PART_FOLLOW_SRC_MASK = 16; - public static readonly integer PSYS_PART_FOLLOW_VELOCITY_MASK = 32; - public static readonly integer PSYS_PART_TARGET_POS_MASK = 64; - public static readonly integer PSYS_PART_TARGET_LINEAR_MASK = 128; - public static readonly integer PSYS_PART_EMISSIVE_MASK = 256; + public static readonly integer ESTATE_ACCESS_ALLOWED_AGENT_ADD = 4; + public static readonly integer ESTATE_ACCESS_ALLOWED_AGENT_REMOVE = 8; + public static readonly integer ESTATE_ACCESS_ALLOWED_GROUP_ADD = 16; + public static readonly integer ESTATE_ACCESS_ALLOWED_GROUP_REMOVE = 32; + public static readonly integer ESTATE_ACCESS_BANNED_AGENT_ADD = 64; + public static readonly integer ESTATE_ACCESS_BANNED_AGENT_REMOVE = 128; - public static readonly integer PSYS_SRC_PATTERN_DROP = 1; - public static readonly integer PSYS_SRC_PATTERN_EXPLODE = 2; - public static readonly integer PSYS_SRC_PATTERN_ANGLE = 4; - public static readonly integer PSYS_SRC_PATTERN_ANGLE_CONE = 8; - public static readonly integer PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY = 16; + public static readonly integer HTTP_BODY_MAXLENGTH = 2; + public static readonly integer HTTP_BODY_TRUNCATED = 0; + public static readonly integer HTTP_METHOD = 0; + public static readonly integer HTTP_MIMETYPE = 1; + public static readonly integer HTTP_VERBOSE_THROTTLE = 4; + public static readonly integer HTTP_VERIFY_CERT = 3; - public static readonly integer DATA_ONLINE = 1; - public static readonly integer DATA_NAME = 2; - public static readonly integer DATA_BORN = 3; - public static readonly integer DATA_RATING = 4; + public static readonly integer INVENTORY_ALL = -1; + public static readonly integer INVENTORY_NONE = -1; + public static readonly integer INVENTORY_TEXTURE = 0; + public static readonly integer INVENTORY_SOUND = 1; + public static readonly integer INVENTORY_LANDMARK = 3; + public static readonly integer INVENTORY_CLOTHING = 5; + public static readonly integer INVENTORY_OBJECT = 6; + public static readonly integer INVENTORY_NOTECARD = 7; + public static readonly integer INVENTORY_SCRIPT = 10; + public static readonly integer INVENTORY_BODYPART = 13; + public static readonly integer INVENTORY_ANIMATION = 20; + public static readonly integer INVENTORY_GESTURE = 21; - public static readonly integer DATA_SIM_POS = 5; - public static readonly integer DATA_SIM_STATUS = 6; - public static readonly integer DATA_SIM_RATING = 7; + public static readonly integer LAND_LEVEL = 0; + public static readonly integer LAND_RAISE = 1; + public static readonly integer LAND_LOWER = 2; + public static readonly integer LAND_SMOOTH = 3; + public static readonly integer LAND_NOISE = 4; + public static readonly integer LAND_REVERT = 5; - public static readonly integer DATA_PAYINFO = 8; + public static readonly integer LAND_SMALL_BRUSH = 1; + public static readonly integer LAND_MEDIUM_BRUSH = 2; + public static readonly integer LAND_LARGE_BRUSH = 3; - public static readonly Float PI = 3.1415926535897932384626; - public static readonly Float TWO_PI = 2.0 * PI; - public static readonly Float PI_BY_TWO = 1.570796; - public static readonly Float DEG_TO_RAD = 0.017453; - public static readonly Float RAD_TO_DEG = 57.295780; - public static readonly Float SQRT2 = 1.414214; + public static readonly integer LINK_ROOT = 1; + public static readonly integer LINK_SET = -1; + public static readonly integer LINK_ALL_OTHERS = -2; + public static readonly integer LINK_ALL_CHILDREN = -3; + public static readonly integer LINK_THIS = -4; - public static readonly integer VEHICLE_TYPE_NONE = 0; + public static readonly integer LIST_STAT_RANGE = 0; + public static readonly integer LIST_STAT_MIN = 1; + public static readonly integer LIST_STAT_MAX = 2; + public static readonly integer LIST_STAT_MEAN = 3; + public static readonly integer LIST_STAT_MEDIAN = 4; + public static readonly integer LIST_STAT_STD_DEV = 5; + public static readonly integer LIST_STAT_SUM = 6; + public static readonly integer LIST_STAT_SUM_SQUARES = 7; + public static readonly integer LIST_STAT_NUM_COUNT = 8; + public static readonly integer LIST_STAT_GEOMETRIC_MEAN = 9; - public static readonly integer VEHICLE_LINEAR_FRICTION_TIMESCALE = 16; - public static readonly integer VEHICLE_ANGULAR_FRICTION_TIMESCALE = 17; - public static readonly integer VEHICLE_LINEAR_MOTOR_DIRECTION = 18; - public static readonly integer VEHICLE_ANGULAR_MOTOR_DIRECTION = 19; - public static readonly integer VEHICLE_LINEAR_MOTOR_OFFSET = 20; - public static readonly integer VEHICLE_HOVER_HEIGHT = 24; - public static readonly integer VEHICLE_HOVER_EFFICIENCY = 25; - public static readonly integer VEHICLE_HOVER_TIMESCALE = 26; - public static readonly integer VEHICLE_BUOYANCY = 27; - public static readonly integer VEHICLE_LINEAR_DEFLECTION_EFFICIENCY = 28; - public static readonly integer VEHICLE_LINEAR_DEFLECTION_TIMESCALE = 29; - public static readonly integer VEHICLE_LINEAR_MOTOR_TIMESCALE = 30; - public static readonly integer VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE = 31; - public static readonly integer VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY = 32; - public static readonly integer VEHICLE_ANGULAR_DEFLECTION_TIMESCALE = 33; - public static readonly integer VEHICLE_ANGULAR_MOTOR_TIMESCALE = 34; - public static readonly integer VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE = 35; - public static readonly integer VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY = 36; - public static readonly integer VEHICLE_VERTICAL_ATTRACTION_TIMESCALE = 37; - public static readonly integer VEHICLE_BANKING_EFFICIENCY = 38; - public static readonly integer VEHICLE_BANKING_MIX = 39; - public static readonly integer VEHICLE_BANKING_TIMESCALE = 40; - public static readonly integer VEHICLE_REFERENCE_FRAME = 44; + public static readonly integer MASK_BASE = 0; + public static readonly integer MASK_EVERYONE = 3; + public static readonly integer MASK_GROUP = 2; + public static readonly integer MASK_NEXT = 4; + public static readonly integer MASK_OWNER = 1; - // depricaded - public static readonly integer VEHICLE_FLAG_NO_FLY_UP = 1; + public static readonly integer OBJECT_NAME = 1; + public static readonly integer OBJECT_DESC = 2; + public static readonly integer OBJECT_POS = 3; + public static readonly integer OBJECT_ROT = 4; + public static readonly integer OBJECT_VELOCITY = 5; + public static readonly integer OBJECT_OWNER = 6; + public static readonly integer OBJECT_GROUP = 7; + public static readonly integer OBJECT_CREATOR = 8; - public static readonly integer VEHICLE_FLAG_NO_DEFLECTION_UP = 1; - public static readonly integer VEHICLE_FLAG_LIMIT_ROLL_ONLY = 2; - public static readonly integer VEHICLE_FLAG_HOVER_WATER_ONLY = 4; - public static readonly integer VEHICLE_FLAG_HOVER_TERRAIN_ONLY = 8; - public static readonly integer VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT = 16; - public static readonly integer VEHICLE_FLAG_HOVER_UP_ONLY = 32; - public static readonly integer VEHICLE_FLAG_LIMIT_MOTOR_UP = 64; - public static readonly integer VEHICLE_FLAG_MOUSELOOK_STEER = 128; - public static readonly integer VEHICLE_FLAG_MOUSELOOK_BANK = 256; - public static readonly integer VEHICLE_FLAG_CAMERA_DECOUPLED = 512; + public static readonly integer OBJECT_STREAMING_COST = 15; + public static readonly integer OBJECT_PHYSICS_COST = 16; + public static readonly integer OBJECT_SERVER_COST = 14; + public static readonly integer OBJECT_PRIM_EQUIVALENCE = 13; - public static readonly integer VEHICLE_TYPE_SLED = 1; - public static readonly integer VEHICLE_TYPE_CAR = 2; - public static readonly integer VEHICLE_TYPE_BOAT = 3; - public static readonly integer VEHICLE_TYPE_AIRPLANE = 4; - public static readonly integer VEHICLE_TYPE_BALLOON = 5; + public static readonly integer PARCEL_COUNT_TOTAL = 0; + public static readonly integer PARCEL_COUNT_OWNER = 1; + public static readonly integer PARCEL_COUNT_GROUP = 2; + public static readonly integer PARCEL_COUNT_OTHER = 3; + public static readonly integer PARCEL_COUNT_SELECTED = 4; + public static readonly integer PARCEL_COUNT_TEMP = 5; - public static readonly integer ALL_SIDES = -1; - - public static readonly integer CAMERA_PITCH = 0; - public static readonly integer CAMERA_FOCUS_OFFSET = 1; - public static readonly integer CAMERA_POSITION_LAG = 5; - public static readonly integer CAMERA_FOCUS_LAG = 6; - public static readonly integer CAMERA_DISTANCE = 7; - public static readonly integer CAMERA_BEHINDNESS_ANGLE = 8; - public static readonly integer CAMERA_BEHINDNESS_LAG = 9; - public static readonly integer CAMERA_POSITION_THRESHOLD = 10; - public static readonly integer CAMERA_FOCUS_THRESHOLD = 11; - public static readonly integer CAMERA_ACTIVE = 12; - public static readonly integer CAMERA_POSITION = 13; - public static readonly integer CAMERA_FOCUS = 17; - public static readonly integer CAMERA_FOCUS_LOCKED = 22; - public static readonly integer CAMERA_POSITION_LOCKED = 21; - - public static readonly integer DEBUG_CHANNEL = 2147483647; - public const string EOF = "\n\n\n"; - - public static readonly integer HTTP_METHOD = 0; - public static readonly integer HTTP_MIMETYPE = 1; - public static readonly integer HTTP_BODY_MAXLENGTH = 2; - - public static readonly integer HTTP_BODY_TRUNCATED = 0; - - public static readonly integer LIST_STAT_RANGE = 0; - public static readonly integer LIST_STAT_MIN = 1; - public static readonly integer LIST_STAT_MAX = 2; - public static readonly integer LIST_STAT_MEAN = 3; - public static readonly integer LIST_STAT_MEDIAN = 4; - public static readonly integer LIST_STAT_STD_DEV = 5; - public static readonly integer LIST_STAT_SUM = 6; - public static readonly integer LIST_STAT_SUM_SQUARES = 7; - public static readonly integer LIST_STAT_NUM_COUNT = 8; - public static readonly integer LIST_STAT_GEOMETRIC_MEAN = 9; - - public static readonly integer MASK_BASE = 0; - public static readonly integer MASK_EVERYONE = 3; - public static readonly integer MASK_GROUP = 2; - public static readonly integer MASK_NEXT = 4; - public static readonly integer MASK_OWNER = 1; - - public static readonly integer PARCEL_FLAG_ALLOW_FLY = 0x0000001; - public static readonly integer PARCEL_FLAG_ALLOW_SCRIPTS = 0x0000002; - public static readonly integer PARCEL_FLAG_ALLOW_LANDMARK = 0x0000008; - public static readonly integer PARCEL_FLAG_ALLOW_TERRAFORM = 0x0000010; - public static readonly integer PARCEL_FLAG_ALLOW_DAMAGE = 0x0000020; - public static readonly integer PARCEL_FLAG_ALLOW_CREATE_OBJECTS = 0x0000040; - public static readonly integer PARCEL_FLAG_USE_ACCESS_GROUP = 0x0000100; - public static readonly integer PARCEL_FLAG_USE_ACCESS_LIST = 0x0000200; - public static readonly integer PARCEL_FLAG_USE_BAN_LIST = 0x0000400; - public static readonly integer PARCEL_FLAG_USE_LAND_PASS_LIST = 0x0000800; - public static readonly integer PARCEL_FLAG_LOCAL_SOUND_ONLY = 0x0008000; - public static readonly integer PARCEL_FLAG_RESTRICT_PUSHOBJECT = 0x0200000; - public static readonly integer PARCEL_FLAG_ALLOW_GROUP_SCRIPTS = 0x2000000; - - public static readonly integer PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS = 0x4000000; - public static readonly integer PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY = 0x8000000; - public static readonly integer PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY = 0x10000000; - - //added 4 mei 2007 - //public static readonly integer DATA_PAYINFO=8; - public static readonly integer HTTP_VERIFY_CERT = 3; - - public static readonly integer PARCEL_COUNT_TOTAL = 0; - public static readonly integer PARCEL_COUNT_OWNER = 1; - public static readonly integer PARCEL_COUNT_GROUP = 2; - public static readonly integer PARCEL_COUNT_OTHER = 3; - public static readonly integer PARCEL_COUNT_SELECTED = 4; - public static readonly integer PARCEL_COUNT_TEMP = 5; - - public static readonly integer PARCEL_DETAILS_NAME = 0; - public static readonly integer PARCEL_DETAILS_DESC = 1; - public static readonly integer PARCEL_DETAILS_OWNER = 2; - public static readonly integer PARCEL_DETAILS_GROUP = 3; - public static readonly integer PARCEL_DETAILS_AREA = 4; + public static readonly integer PARCEL_DETAILS_AREA = 4; + public static readonly integer PARCEL_DETAILS_DESC = 1; + public static readonly integer PARCEL_DETAILS_GROUP = 3; public static readonly integer PARCEL_DETAILS_ID = 5; + public static readonly integer PARCEL_DETAILS_NAME = 0; + public static readonly integer PARCEL_DETAILS_OWNER = 2; + public static readonly integer PARCEL_DETAILS_SEE_AVATARS = 6; - public static readonly integer PAYMENT_INFO_ON_FILE = 1; - public static readonly integer PAYMENT_INFO_USED = 2; - //public static readonly integer REGION_FLAG_RESTRICT_PUSHOBJECT=4194304; + public static readonly integer PARCEL_FLAG_ALLOW_FLY = 0x0000001; + public static readonly integer PARCEL_FLAG_ALLOW_SCRIPTS = 0x0000002; + public static readonly integer PARCEL_FLAG_ALLOW_LANDMARK = 0x0000008; + public static readonly integer PARCEL_FLAG_ALLOW_TERRAFORM = 0x0000010; + public static readonly integer PARCEL_FLAG_ALLOW_DAMAGE = 0x0000020; + public static readonly integer PARCEL_FLAG_ALLOW_CREATE_OBJECTS = 0x0000040; + public static readonly integer PARCEL_FLAG_USE_ACCESS_GROUP = 0x0000100; + public static readonly integer PARCEL_FLAG_USE_ACCESS_LIST = 0x0000200; + public static readonly integer PARCEL_FLAG_USE_BAN_LIST = 0x0000400; + public static readonly integer PARCEL_FLAG_USE_LAND_PASS_LIST = 0x0000800; + public static readonly integer PARCEL_FLAG_LOCAL_SOUND_ONLY = 0x0008000; + public static readonly integer PARCEL_FLAG_RESTRICT_PUSHOBJECT = 0x0200000; + public static readonly integer PARCEL_FLAG_ALLOW_GROUP_SCRIPTS = 0x2000000; + public static readonly integer PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS = 0x4000000; + public static readonly integer PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY = 0x8000000; + public static readonly integer PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY = 0x10000000; - public static readonly integer PARCEL_MEDIA_COMMAND_STOP = 0; - public static readonly integer PARCEL_MEDIA_COMMAND_PAUSE = 1; - public static readonly integer PARCEL_MEDIA_COMMAND_PLAY = 2; - public static readonly integer PARCEL_MEDIA_COMMAND_LOOP = 3; - public static readonly integer PARCEL_MEDIA_COMMAND_TEXTURE = 4; - public static readonly integer PARCEL_MEDIA_COMMAND_URL = 5; - public static readonly integer PARCEL_MEDIA_COMMAND_TIME = 6; - public static readonly integer PARCEL_MEDIA_COMMAND_AGENT = 7; - public static readonly integer PARCEL_MEDIA_COMMAND_UNLOAD = 8; - public static readonly integer PARCEL_MEDIA_COMMAND_AUTO_ALIGN = 9; + public static readonly integer PARCEL_MEDIA_COMMAND_STOP = 0; + public static readonly integer PARCEL_MEDIA_COMMAND_PAUSE = 1; + public static readonly integer PARCEL_MEDIA_COMMAND_PLAY = 2; + public static readonly integer PARCEL_MEDIA_COMMAND_LOOP = 3; + public static readonly integer PARCEL_MEDIA_COMMAND_TEXTURE = 4; + public static readonly integer PARCEL_MEDIA_COMMAND_URL = 5; + public static readonly integer PARCEL_MEDIA_COMMAND_TIME = 6; + public static readonly integer PARCEL_MEDIA_COMMAND_AGENT = 7; + public static readonly integer PARCEL_MEDIA_COMMAND_UNLOAD = 8; + public static readonly integer PARCEL_MEDIA_COMMAND_AUTO_ALIGN = 9; - public static readonly integer PARCEL_MEDIA_COMMAND_TYPE=10; - public static readonly integer PARCEL_MEDIA_COMMAND_SIZE=11; - public static readonly integer PARCEL_MEDIA_COMMAND_DESC=12; - public static readonly integer PARCEL_MEDIA_COMMAND_LOOP_SET = 13; + public static readonly integer PARCEL_MEDIA_COMMAND_TYPE = 10; + public static readonly integer PARCEL_MEDIA_COMMAND_SIZE = 11; + public static readonly integer PARCEL_MEDIA_COMMAND_DESC = 12; + public static readonly integer PARCEL_MEDIA_COMMAND_LOOP_SET = 13; - public static readonly integer PAY_DEFAULT = -2; - public static readonly integer PAY_HIDE = -1; + public static readonly integer PAY_DEFAULT = -2; + public static readonly integer PAY_HIDE = -1; - public static readonly integer PERM_ALL = 2147483647; - public static readonly integer PERM_COPY = 32768; - public static readonly integer PERM_MODIFY = 16384; - public static readonly integer PERM_MOVE = 524288; - public static readonly integer PERM_TRANSFER = 8192; - public static readonly integer PRIM_BUMP_BARK = 4; - public static readonly integer PRIM_BUMP_BLOBS = 12; + public static readonly integer PAYMENT_INFO_ON_FILE = 1; + public static readonly integer PAYMENT_INFO_USED = 2; - public static readonly integer PRIM_BUMP_BRICKS = 5; - public static readonly integer PRIM_BUMP_BRIGHT = 1; - public static readonly integer PRIM_BUMP_CHECKER = 6; - public static readonly integer PRIM_BUMP_CONCRETE = 7; - public static readonly integer PRIM_BUMP_DARK = 2; - public static readonly integer PRIM_BUMP_DISKS = 10; - public static readonly integer PRIM_BUMP_GRAVEL = 11; - public static readonly integer PRIM_BUMP_LARGETILE = 14; - public static readonly integer PRIM_BUMP_NONE = 0; - public static readonly integer PRIM_BUMP_SHINY = 19; - public static readonly integer PRIM_BUMP_SIDING = 13; - public static readonly integer PRIM_BUMP_STONE = 9; - public static readonly integer PRIM_BUMP_STUCCO = 15; - public static readonly integer PRIM_BUMP_SUCTION = 16; - public static readonly integer PRIM_BUMP_TILE = 8; - public static readonly integer PRIM_BUMP_WEAVE = 17; - public static readonly integer PRIM_BUMP_WOOD = 3; + public static readonly integer PERM_ALL = 2147483647; + public static readonly integer PERM_COPY = 32768; + public static readonly integer PERM_MODIFY = 16384; + public static readonly integer PERM_MOVE = 524288; + public static readonly integer PERM_TRANSFER = 8192; + public static readonly integer PRIM_BUMP_BARK = 4; + public static readonly integer PRIM_BUMP_BLOBS = 12; - public static readonly integer PRIM_CAST_SHADOWS = 24; - public static readonly integer PRIM_COLOR = 18; + public static readonly integer PERMISSION_DEBIT = 2; + public static readonly integer PERMISSION_TAKE_CONTROLS = 4; + public static readonly integer PERMISSION_REMAP_CONTROLS = 8; + public static readonly integer PERMISSION_TRIGGER_ANIMATION = 16; + public static readonly integer PERMISSION_ATTACH = 32; + public static readonly integer PERMISSION_RELEASE_OWNERSHIP = 64; + public static readonly integer PERMISSION_CHANGE_LINKS = 128; + public static readonly integer PERMISSION_CHANGE_JOINTS = 256; + public static readonly integer PERMISSION_CHANGE_PERMISSIONS = 512; + public static readonly integer PERMISSION_TRACK_CAMERA = 1024; + public static readonly integer PERMISSION_CONTROL_CAMERA = 2048; + + public static readonly integer PRIM_BUMP_BRICKS = 5; + public static readonly integer PRIM_BUMP_BRIGHT = 1; + public static readonly integer PRIM_BUMP_CHECKER = 6; + public static readonly integer PRIM_BUMP_CONCRETE = 7; + public static readonly integer PRIM_BUMP_DARK = 2; + public static readonly integer PRIM_BUMP_DISKS = 10; + public static readonly integer PRIM_BUMP_GRAVEL = 11; + public static readonly integer PRIM_BUMP_LARGETILE = 14; + public static readonly integer PRIM_BUMP_NONE = 0; + public static readonly integer PRIM_BUMP_SHINY = 19; + public static readonly integer PRIM_BUMP_SIDING = 13; + public static readonly integer PRIM_BUMP_STONE = 9; + public static readonly integer PRIM_BUMP_STUCCO = 15; + public static readonly integer PRIM_BUMP_SUCTION = 16; + public static readonly integer PRIM_BUMP_TILE = 8; + public static readonly integer PRIM_BUMP_WEAVE = 17; + public static readonly integer PRIM_BUMP_WOOD = 3; + + public static readonly integer PRIM_CAST_SHADOWS = 24; + public static readonly integer PRIM_COLOR = 18; public static readonly integer PRIM_DESC = 28; - public static readonly integer PRIM_FLEXIBLE = 21; - public static readonly integer PRIM_FULLBRIGHT = 20; - public static readonly integer PRIM_HOLE_CIRCLE = 16; - public static readonly integer PRIM_HOLE_DEFAULT = 0; - public static readonly integer PRIM_HOLE_SQUARE = 32; - public static readonly integer PRIM_HOLE_TRIANGLE = 48; - public static readonly integer PRIM_MATERIAL = 2; - public static readonly integer PRIM_MATERIAL_FLESH = 4; - public static readonly integer PRIM_MATERIAL_GLASS = 2; - public static readonly integer PRIM_MATERIAL_LIGHT = 7; - public static readonly integer PRIM_MATERIAL_METAL = 1; - public static readonly integer PRIM_MATERIAL_PLASTIC = 5; - public static readonly integer PRIM_MATERIAL_RUBBER = 6; - public static readonly integer PRIM_MATERIAL_STONE = 0; - public static readonly integer PRIM_MATERIAL_WOOD = 3; + public static readonly integer PRIM_FLEXIBLE = 21; + public static readonly integer PRIM_FULLBRIGHT = 20; + public static readonly integer PRIM_HOLE_CIRCLE = 16; + public static readonly integer PRIM_HOLE_DEFAULT = 0; + public static readonly integer PRIM_HOLE_SQUARE = 32; + public static readonly integer PRIM_HOLE_TRIANGLE = 48; + public static readonly integer PRIM_MATERIAL = 2; + public static readonly integer PRIM_MATERIAL_FLESH = 4; + public static readonly integer PRIM_MATERIAL_GLASS = 2; + public static readonly integer PRIM_MATERIAL_LIGHT = 7; + public static readonly integer PRIM_MATERIAL_METAL = 1; + public static readonly integer PRIM_MATERIAL_PLASTIC = 5; + public static readonly integer PRIM_MATERIAL_RUBBER = 6; + public static readonly integer PRIM_MATERIAL_STONE = 0; + public static readonly integer PRIM_MATERIAL_WOOD = 3; + + public static readonly integer PRIM_MEDIA_ALT_IMAGE_ENABLE = 0; + public static readonly integer PRIM_MEDIA_AUTO_LOOP = 4; + public static readonly integer PRIM_MEDIA_AUTO_PLAY = 5; + public static readonly integer PRIM_MEDIA_AUTO_SCALE = 6; + public static readonly integer PRIM_MEDIA_AUTO_ZOOM = 7; + public static readonly integer PRIM_MEDIA_CONTROLS = 1; + public static readonly integer PRIM_MEDIA_CONTROLS_MINI = 1; + public static readonly integer PRIM_MEDIA_CONTROLS_STANDARD = 0; + public static readonly integer PRIM_MEDIA_CURRENT_URL = 2; + public static readonly integer PRIM_MEDIA_FIRST_CLICK_INTERACT = 8; + public static readonly integer PRIM_MEDIA_HEIGHT_PIXELS = 10; + public static readonly integer PRIM_MEDIA_HOME_URL = 3; + public static readonly integer PRIM_MEDIA_PERM_ANYONE = 4; + public static readonly integer PRIM_MEDIA_PERM_GROUP = 2; + public static readonly integer PRIM_MEDIA_PERM_NONE = 0; + public static readonly integer PRIM_MEDIA_PERM_OWNER = 1; + public static readonly integer PRIM_MEDIA_PERMS_CONTROL = 14; + public static readonly integer PRIM_MEDIA_PERMS_INTERACT = 13; + public static readonly integer PRIM_MEDIA_WHITELIST = 12; + public static readonly integer PRIM_MEDIA_WHITELIST_ENABLE = 11; + public static readonly integer PRIM_MEDIA_WIDTH_PIXELS = 9; public static readonly integer PRIM_NAME = 27; - public static readonly integer PRIM_PHANTOM = 5; - public static readonly integer PRIM_PHYSICS = 3; - public static readonly integer PRIM_POINT_LIGHT = 23; - public static readonly integer PRIM_POSITION = 6; - public static readonly integer PRIM_ROTATION = 8; - public static readonly integer PRIM_SHINY_HIGH = 3; - public static readonly integer PRIM_SHINY_LOW = 1; - public static readonly integer PRIM_SHINY_MEDIUM = 2; - public static readonly integer PRIM_SHINY_NONE = 0; - public static readonly integer PRIM_SIZE = 7; - public static readonly integer PRIM_TEMP_ON_REZ = 4; - public static readonly integer PRIM_TEXGEN = 22; - public static readonly integer PRIM_TEXGEN_DEFAULT = 0; - public static readonly integer PRIM_TEXGEN_PLANAR = 1; + public static readonly integer PRIM_OMEGA = 32; + public static readonly integer PRIM_PHANTOM = 5; + public static readonly integer PRIM_PHYSICS = 3; + public static readonly integer PRIM_PHYSICS_MATERIAL = 31; + public static readonly integer PRIM_PHYSICS_SHAPE_CONVEX = 2; + public static readonly integer PRIM_PHYSICS_SHAPE_NONE = 1; + public static readonly integer PRIM_PHYSICS_SHAPE_PRIM = 0; + public static readonly integer PRIM_PHYSICS_SHAPE_TYPE = 30; + public static readonly integer PRIM_POINT_LIGHT = 23; + public static readonly integer PRIM_POSITION = 6; + public static readonly integer PRIM_POS_LOCAL = 33; + public static readonly integer PRIM_ROTATION = 8; + public static readonly integer PRIM_ROT_LOCAL = 29; + public static readonly integer PRIM_SCULPT_FLAG_INVERT = 64; + public static readonly integer PRIM_SCULPT_FLAG_MIRROR = 128; + public static readonly integer PRIM_SHINY_HIGH = 3; + public static readonly integer PRIM_SHINY_LOW = 1; + public static readonly integer PRIM_SHINY_MEDIUM = 2; + public static readonly integer PRIM_SHINY_NONE = 0; + public static readonly integer PRIM_SIZE = 7; + public static readonly integer PRIM_TEMP_ON_REZ = 4; + public static readonly integer PRIM_TEXGEN = 22; + public static readonly integer PRIM_TEXGEN_DEFAULT = 0; + public static readonly integer PRIM_TEXGEN_PLANAR = 1; public static readonly integer PRIM_TEXT = 26; - public static readonly integer PRIM_TEXTURE = 17; - public static readonly integer PRIM_TYPE = 9; - - public static readonly integer PRIM_TYPE_BOX = 0; - public static readonly integer PRIM_TYPE_CYLINDER = 1; - public static readonly integer PRIM_TYPE_PRISM = 2; - public static readonly integer PRIM_TYPE_SPHERE = 3; - public static readonly integer PRIM_TYPE_TORUS = 4; - public static readonly integer PRIM_TYPE_TUBE = 5; - public static readonly integer PRIM_TYPE_RING = 6; - public static readonly integer PRIM_TYPE_SCULPT = 7; - - public static readonly integer PRIM_GLOW = 25; - - - public static readonly integer PRIM_SCULPT_TYPE_SPHERE = 1; - public static readonly integer PRIM_SCULPT_TYPE_TORUS = 2; - public static readonly integer PRIM_SCULPT_TYPE_PLANE = 3; - public static readonly integer PRIM_SCULPT_TYPE_CYLINDER = 4; - - - public static readonly integer PUBLIC_CHANNEL = 0; - - public static readonly integer REGION_FLAG_ALLOW_DAMAGE = 1; - public static readonly integer REGION_FLAG_FIXED_SUN = 16; - public static readonly integer REGION_FLAG_BLOCK_TERRAFORM = 64; - public static readonly integer REGION_FLAG_SANDBOX = 256; - public static readonly integer REGION_FLAG_DISABLE_COLLISIONS = 4096; - public static readonly integer REGION_FLAG_DISABLE_PHYSICS = 16384; - public static readonly integer REGION_FLAG_BLOCK_FLY = 524288; - public static readonly integer REGION_FLAG_ALLOW_DIRECT_TELEPORT = 1048576; - public static readonly integer REGION_FLAG_RESTRICT_PUSHOBJECT = 4194304; - - public static readonly integer REMOTE_DATA_CHANNEL = 1; - public static readonly integer REMOTE_DATA_REQUEST = 2; - public static readonly integer REMOTE_DATA_REPLY = 3; - - public static readonly integer STRING_TRIM_HEAD = 1; - public static readonly integer STRING_TRIM_TAIL = 2; - public static readonly integer STRING_TRIM = 3; - - public static readonly integer OBJECT_NAME = 1; - public static readonly integer OBJECT_DESC = 2; - public static readonly integer OBJECT_POS = 3; - public static readonly integer OBJECT_ROT = 4; - public static readonly integer OBJECT_VELOCITY = 5; - public static readonly integer OBJECT_OWNER = 6; - public static readonly integer OBJECT_GROUP = 7; - public static readonly integer OBJECT_CREATOR = 8; - - public static readonly key NULL_KEY = key.NULL_KEY; - public static readonly rotation ZERO_ROTATION = rotation.ZERO_ROTATION; - public static readonly vector ZERO_VECTOR = vector.ZERO_VECTOR; - - public static readonly integer CLICK_ACTION_NONE = 0; - public static readonly integer CLICK_ACTION_TOUCH = 0; - public static readonly integer CLICK_ACTION_SIT = 1; - public static readonly integer CLICK_ACTION_BUY = 2; - public static readonly integer CLICK_ACTION_PAY = 3; - public static readonly integer CLICK_ACTION_OPEN = 4; - public static readonly integer CLICK_ACTION_PLAY = 5; - public static readonly integer CLICK_ACTION_OPEN_MEDIA = 6; - - public static readonly String URL_REQUEST_GRANTED = "URL_REQUEST_GRANTED"; - public static readonly String URL_REQUEST_DENIED = "URL_REQUEST_DENIED"; - #endregion - - #region llFunctions - - #region List Functions - - public String llDumpList2String(list src, String separator) - { - StringBuilder result = new StringBuilder(); - for (int intI = 0; intI < src.Count; intI++) - { - if (intI > 0) - result.Append(separator.ToString()); - result.Append(src[intI].ToString()); - } - Verbose(@"DumpList2String({0},""{1}"")=""{2}""", src.ToVerboseString(), separator, result.ToString()); - return result.ToString(); - } - - public integer llGetListLength(list src) - { - integer result = src.Count; - Verbose("GetListLength({0})={1}", src.ToVerboseString(), result); - return result; - } - - public String llList2CSV(list src) - { - StringBuilder result = new StringBuilder(); - for (int intI = 0; intI < src.Count; intI++) - { - if (intI > 0) - result.Append(", "); - result.Append(src[intI].ToString()); - } - Verbose(@"List2CSV({0})=""{1}""", src.ToVerboseString(), result.ToString()); - return result.ToString(); - } - - public list llCSV2List(String _src) - { - string src = _src; - list result = new list(); - StringBuilder sb = new StringBuilder(); - int WithinAngelBracket = 0; - for (int intI = 0; intI < src.Length; intI++) - { - char chrC = src[intI]; - if (chrC == '<') - WithinAngelBracket++; - else if (chrC == '>') - WithinAngelBracket--; - - if (WithinAngelBracket == 0 && chrC == ',') - { - result.Add(sb.ToString()); - sb = new StringBuilder(); - } - else - { - sb.Append(src[intI]); - } - } - // dont forget the last one - result.Add(sb.ToString()); - - // remove the first space, if any - for (int intI = 0; intI < result.Count; intI++) - { - string strValue = result[intI].ToString(); - if (strValue == "") - continue; - if (strValue[0] == ' ') - result[intI] = strValue.Substring(1); - } - - Verbose(@"CSV2List(""{0}"")={1}", src,result.ToVerboseString()); - - return result; - } - - public integer llGetListEntryType(list src, integer index) - { - integer intReturn; - - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - intReturn = 0; - else - { - switch (src[index].GetType().ToString().Replace("LSLEditor.SecondLife+", "")) - { - case "System.Double": - case "Float": - intReturn = TYPE_FLOAT; - break; - case "System.String": - case "String": - intReturn = TYPE_STRING; - break; - case "System.Int32": - case "integer": - intReturn = TYPE_INTEGER; - break; - case "key": - intReturn = TYPE_KEY; - break; - case "vector": - intReturn = TYPE_VECTOR; - break; - case "rotation": - intReturn = TYPE_ROTATION; - break; - default: - intReturn = TYPE_INVALID; - break; - } - } - Verbose("GetListEntryType({0},{1})={2}",src.ToVerboseString(),index,intReturn); - return intReturn; - } - - public String llList2String(list src, integer index) - { - String result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = ""; - else - result = (String)src[index].ToString(); - Verbose("List2String({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - public rotation llList2Rot(list src, integer index) - { - rotation result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = ZERO_ROTATION; - else - { - if (src[index] is rotation) - result = (rotation)src[index]; - else - result = ZERO_ROTATION; - } - Verbose("List2Rot({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - public vector llList2Vector(list src, integer index) - { - vector result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = ZERO_VECTOR; - else - { - if (src[index] is vector) - result = (vector)src[index]; - else - result = ZERO_VECTOR; - } - Verbose("List2Vector({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - public Float llList2Float(list src, integer index) - { - Float result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = 0.0; - else - result = (Float)src[index].ToString(); - Verbose("List2Float({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - public integer llList2Integer(list src, integer index) - { - integer result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = 0; - else - result = (integer)src[index].ToString(); - Verbose("List2Integer({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - public key llList2Key(list src, integer index) - { - key result; - if (index < 0) - index = src.Count + index; - if (index >= src.Count || index < 0) - result = NULL_KEY; - else - result = (key)src[index].ToString(); - Verbose("List2Key({0},{1})={2}", src.ToVerboseString(), index, result); - return result; - } - - private bool CorrectIt(int length, ref int start, ref int end) - { - if (start < 0) - start = length + start; - - if (end < 0) - end = length + end; - - if (start <= end) - { - if (start >= length) - return false; - if (end < 0) - return false; - } - - start = Math.Max(0, start); - end = Math.Min(length-1, end); - - return true; - } - - // ok - public list llList2List(list src, integer _start, integer _end) - { - int intLength = src.Count; - - int start = _start; - int end = _end; - - list result = new list(); - - if (CorrectIt(intLength, ref start, ref end)) - { - if (start <= end) - { - for (int intI = start; intI <= end; intI++) - result.Add(src[intI]); - } - else // excluding - { - for (int intI = 0; intI <= end; intI++) - result.Add(src[intI]); - for (int intI = start; intI < intLength; intI++) - result.Add(src[intI]); - } - } - - Verbose(string.Format(@"List2List(""{0}"",{1},{2})=""{3}""", src, _start, _end, result)); - return result; - } - - // ok - public list llList2ListStrided(list src, integer _start, integer _end, integer stride) - { - int intLength = src.Count; - - int start = _start; - int end = _end; - - list temp = new list(); - - if (CorrectIt(intLength, ref start, ref end)) - { - if (start <= end) - { - for (int intI = start; intI <= end; intI++) - temp.Add(src[intI]); - } - else // excluding - { - for (int intI = 0; intI <= end; intI++) - temp.Add(src[intI]); - for (int intI = start; intI < intLength; intI++) - temp.Add(src[intI]); - } - } - list result = new list(); - string remark = ""; - if (stride <= 0) - { - remark = " ** stride must be > 0 **"; - } - else - { - if (start == 0) - for (int intI = 0; intI < temp.Count; intI += stride) - result.Add(temp[intI]); - else - for (int intI = stride - 1; intI < temp.Count; intI += stride) - result.Add(temp[intI]); - } - Verbose(@"List2ListStrided({0},{1},{2},{3})={4}{5}",src.ToVerboseString(),start,end,stride,result.ToVerboseString(),remark); - return result; - } - - public list llDeleteSubList(list _src, integer _start, integer _end) - { - int intLength = _src.Count; - - int start = _start; - int end = _end; - - list src = new list(_src); - - if (CorrectIt(intLength, ref start, ref end)) - { - if (start <= end) - { - for (int intI = start; intI <= end; intI++) - src[intI] = null; - } - else // excluding - { - for (int intI = 0; intI <= end; intI++) - src[intI] = null; - for (int intI = start; intI < intLength; intI++) - src[intI] = null; - } - } - list result = new list(); - for(int intI=0;intI src.Count) - return -1; - - int intReturn = -1; - for (int intI = 0; intI <= (src.Count - test.Count); intI++) - { - if (test[0].Equals(src[intI])) - { - bool blnOkay = true; - for (int intJ = 1; intJ < test.Count; intJ++) - { - if (!test[intJ].Equals(src[intI + intJ])) - { - blnOkay = false; - break; - } - } - if (blnOkay) - { - intReturn = intI; - break; - } - } - } - Verbose("ListFindList({0},{1}={2}",src.ToVerboseString(),test.ToVerboseString(),intReturn); - return intReturn; - } - - // ok - public list llListInsertList(list dest, list src, int pos) - { - int intLength = dest.Count; - list result = new list(); - if (pos < 0) - pos = dest.Count + pos; - - for (int intI = 0; intI < Math.Min(pos, intLength); intI++) - result.Add(dest[intI]); - - result.AddRange(src); - - for (int intI = Math.Max(0, pos); intI < intLength; intI++) - result.Add(dest[intI]); - - Verbose("ListInsertList({0},{1},{2})={3}",dest.ToVerboseString(),src.ToVerboseString(),pos,result.ToVerboseString()); - return result; - } - - public ArrayList RandomShuffle(ArrayList collection) - { - // We have to copy all items anyway, and there isn't a way to produce the items - // on the fly that is linear. So copying to an array and shuffling it is an efficient as we can get. - - if (collection == null) - throw new ArgumentNullException("collection"); - - int count = collection.Count; - for (int i = count - 1; i >= 1; --i) - { - // Pick an random number 0 through i inclusive. - int j = m_random.Next(i + 1); - - // Swap array[i] and array[j] - object temp = collection[i]; - collection[i] = collection[j]; - collection[j] = temp; - } - return collection; - } - - private ArrayList List2Buckets(list src, int stride) - { - ArrayList buckets = null; - if ((src.Count % stride) == 0 && stride <= src.Count) - { - buckets = new ArrayList(); - for (int intI = 0; intI < src.Count; intI += stride) - { - object[] bucket = new object[stride]; - for (int intJ = 0; intJ < stride; intJ++) - bucket[intJ] = src[intI + intJ]; - buckets.Add(bucket); - } - } - return buckets; - } - - private list Buckets2List(ArrayList buckets, int stride) - { - object[] items = new object[buckets.Count * stride]; - for (int intI = 0; intI < buckets.Count; intI++) - { - for (int intJ = 0; intJ < stride; intJ++) - items[intI * stride + intJ] = ((object[])buckets[intI])[intJ]; - } - return new list(items); - } - - - // ok - public list llListRandomize(list src, int stride) - { - list l; - ArrayList buckets = List2Buckets(src, stride); - if (buckets == null) - l = new list(src); - else - l = Buckets2List(RandomShuffle(buckets), stride); - Verbose("ListRandomize({0},{1})={2}",src.ToVerboseString(),stride,l.ToVerboseString()); - return l; - } - - private class BucketComparer : IComparer - { - private integer ascending; - public BucketComparer(integer ascending) - { - this.ascending = ascending; - } - public int Compare(object x, object y) - { - object[] xx = x as object[]; - object[] yy = y as object[]; - - object A,B; - - if (ascending == TRUE) - { - A = xx[0]; - B = yy[0]; - } - else - { - B = xx[0]; - A = yy[0]; - } - - string strType = A.GetType().ToString(); - - if(((A is string) && (B is string)) || - ((A is SecondLife.String) && (B is SecondLife.String))) - return string.Compare(A.ToString(), B.ToString()); - - if ((A is SecondLife.integer) && (B is SecondLife.integer)) - return SecondLife.integer.Compare((SecondLife.integer)A, (SecondLife.integer)B); - - if ((A is SecondLife.Float) && (B is SecondLife.Float)) - return SecondLife.Float.Compare((SecondLife.Float)A, (SecondLife.Float)B); - - return 0; - } - } - - - // ok - public list llListSort(list src, int stride, int ascending) - { - list result; - ArrayList buckets = List2Buckets(src, stride); - if (buckets == null) - result = new list(src); - else - { - buckets.Sort(new BucketComparer(ascending)); - result = Buckets2List(buckets, stride); - } - Verbose("ListSort({0},{1},{2})={3}", src.ToVerboseString(), stride, ascending, result.ToVerboseString()); - return result; - } - - // TODO check this!!! - public list llListReplaceList(list dest, list src, int start, int end) - { - int intLength = dest.Count; - - CorrectIt(intLength, ref start, ref end); - - list result = new list(); - if (start <= end) - { - for (int intI = 0; intI < start; intI++) - result.Add(dest[intI]); - result.AddRange(src); - for (int intI = end + 1; intI < intLength; intI++) - result.Add(dest[intI]); - } - else - { - // where to add src????? - for (int intI = end; intI <= start; intI++) - result.Add(dest[intI]); - } - Verbose("ListReplaceList({0},{1},{2},{3}={4}",dest.ToVerboseString(),src.ToVerboseString(),start,end,result.ToVerboseString()); - return result; - } - - // 21 sep 2007, check this - public list llParseString2List(String src, list separators, list spacers) - { - list result = ParseString(src, separators, spacers, false); - Verbose("llParseString2List({0},{1},{2})={3}",src,separators.ToVerboseString(),spacers.ToVerboseString(),result.ToVerboseString()); - return result; - } - - // 21 sep 2007, check this, first check 3 oct 2007, last element=="" is added also - public list llParseStringKeepNulls(String src, list separators, list spacers) - { - list result = ParseString(src, separators, spacers, true); - Verbose("llParseStringKeepNulls({0},{1},{2})={3}", src, separators.ToVerboseString(), spacers.ToVerboseString(), result.ToVerboseString()); - return result; - } - - private list ParseString(String src, list separators, list spacers, bool blnKeepNulls) - { - list result = new list(); - int intFrom = 0; - string s = src; - for (int intI = 0; intI < s.Length; intI++) - { - string strTmp = s.Substring(intI); - bool blnFound = false; - for (int intJ = 0; intJ < separators.Count; intJ++) - { - string strSeparator = separators[intJ].ToString(); - if (strSeparator.Length == 0) - continue; // check this - if (strTmp.IndexOf(strSeparator) == 0) - { - string strBefore = s.Substring(intFrom, intI - intFrom); - if (strBefore != "" || blnKeepNulls) - result.Add(strBefore); - intI += strSeparator.Length - 1; - intFrom = intI + 1; - blnFound = true; - break; - } - } - - if (blnFound) - continue; - - for (int intJ = 0; intJ < spacers.Count; intJ++) - { - string strSpacer = spacers[intJ].ToString(); - if (strSpacer.Length == 0) - continue; // check this - if (strTmp.IndexOf(strSpacer) == 0) - { - string strBefore = s.Substring(intFrom, intI - intFrom); - if (strBefore != "" || blnKeepNulls) - result.Add(strBefore); - result.Add(strSpacer); - intI += strSpacer.Length - 1; - intFrom = intI + 1; - break; - } - } - } - string strLast = s.Substring(intFrom); - if (strLast != "" || blnKeepNulls) - result.Add(strLast); - return result; - } - - #endregion - - #region Time Functions - - public void llResetTime() - { - Verbose("ResetTime()"); - m_DateTimeScriptStarted = DateTime.Now.ToUniversalTime(); - } - - public Float llGetAndResetTime() - { - // get time - double time = llGetTime(); - Verbose("GetAndResetTime()=" + time); - // reset time - llResetTime(); - return time; - } - - public string llGetTimestamp() - { - string strTimestamp = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.ffffffZ", System.Globalization.DateTimeFormatInfo.InvariantInfo); - Verbose("GetTimestamp()=" + strTimestamp); - return strTimestamp; - } - public integer llGetUnixTime() - { - DateTime date_time_base = new DateTime(1970, 1, 1, 0, 0, 0, 0); - TimeSpan span = DateTime.Now.ToUniversalTime() - date_time_base; - Verbose("GetUnixTime()=" + span.TotalSeconds); - return (int)span.TotalSeconds; - } - - public Float llGetTime() - { - TimeSpan span = DateTime.Now.ToUniversalTime() - m_DateTimeScriptStarted; - Verbose("GetTime()=" + span.TotalSeconds); - return span.TotalSeconds; - } - - public Float llGetTimeOfDay() - { - Verbose("GetTimeOfDay()"); - // dummy - return llGetTime(); - } - #endregion - - #region RemoteData Functions - public key llSendRemoteData(key channel, String dest, integer idata, String sdata) - { - key k = host.llSendRemoteData(channel, dest, idata, sdata); - Verbose("SendRemoteData({0},{1},{2},{3})={4}",channel,dest,idata,sdata,k); - return k; - } - - public void llRemoteDataReply(key channel, key message_id, String sdata, integer idata) - { - host.llRemoteDataReply(channel, message_id, sdata, idata); - Verbose("RemoteDataReply({0},{1},{2},{3})",channel,message_id,sdata,idata); - } - - public void llCloseRemoteDataChannel(key channel) - { - host.llCloseRemoteDataChannel(channel); - Verbose("CloseRemoteDataChannel({0})",channel); - } - - public void llOpenRemoteDataChannel() - { - host.llOpenRemoteDataChannel(); - Verbose("OpenRemoteDataChannel()"); - } - #endregion RemoteData Functions - - #region Math Functions - public rotation llEuler2Rot(vector v) - { - v /= 2.0; - double ax = Math.Sin(v.x); - double aw = Math.Cos(v.x); - double by = Math.Sin(v.y); - double bw = Math.Cos(v.y); - double cz = Math.Sin(v.z); - double cw = Math.Cos(v.z); - rotation rot = new rotation(aw * by * cz + ax * bw * cw, - aw * by * cw - ax * bw * cz, - aw * bw * cz + ax * by * cw, - aw * bw * cw - ax * by * cz); - Verbose("Euler2Rot(" + v + ")=" + rot); - return rot; - } - - public Float llTan(Float theta) - { - double dblA = Math.Tan(theta); - Verbose("Tan(" + theta + ")=" + dblA); - return dblA; - } - - public Float llSin(Float theta) - { - double dblA = Math.Sin(theta); - Verbose("Sin(" + theta + ")=" + dblA); - return dblA; - } - - public Float llCos(Float theta) - { - double dblA = Math.Cos(theta); - Verbose("Cos(" + theta + ")=" + dblA); - return dblA; - } - - public Float llSqrt(Float val) - { - double dblA = Math.Sqrt(val); - Verbose("Sqrt(" + val + ")=" + dblA); - return dblA; - } - - public Float llAsin(Float val) - { - double dblA = Math.Asin(val); - Verbose("Asin(" + val + ")=" + dblA); - return dblA; - } - - public Float llAtan2(Float y, Float x) - { - double dblA = Math.Atan2(y, x); - Verbose("Atan2(" + y + "," + x + ")=" + dblA); - return dblA; - } - - public Float llAcos(Float val) - { - double dblA = Math.Acos(val); - Verbose("Acos(" + val + ")=" + dblA); - return dblA; - } - - public Float llPow(Float baze, Float exp) - { - double dblA = Math.Pow(baze, exp); - Verbose("Pow(" + baze + "," + exp + ")=" + dblA); - return dblA; - } - - - private integer ModPow1(integer a, integer b, integer c) - { - return (int)Math.Pow((int)a, (int)b & (int)0xffff) % (int)c; - } - - private integer ModPow2(integer x, integer y, integer m) - { - if (!x) return 0; - integer k = 1 + (int)Math.Ceiling(Math.Log(Math.Abs(x)) / 0.69314718055994530941723212145818);//ceil(log2(x)) - integer w = 32; - integer p = w / k; - integer r = y / p; - integer f = y % p; - integer z = 1; - if (r) z = ModPow2(ModPow1(x, p, m), r, m); - if (f) z = (z * ModPow1(x, f, m)) % m; - return z; - } - - public integer llModPow(integer x, integer y, integer m) - { - integer result = ModPow2(x, y, m); - Verbose("llModPow({0},{1},{2})={3}", x, y, m, result); - return result; - } - - public Float llLog(Float val) - { - double dblA = 0.0; - if(val>0.0) - dblA = Math.Log(val); - Verbose("llLog({0})={1}", val, dblA); - return dblA; - } - - public Float llLog10(Float val) - { - double dblA = 0.0; - if(val>0.0) - dblA = Math.Log10(val); - Verbose("llLog10({0})={1}",val,dblA); - return dblA; - } - - public integer llRound(Float val) - { - int intA = (int)Math.Round(val); - Verbose("Round(" + val + ")=" + intA); - return intA; - } - - public integer llCeil(Float val) - { - int intA = (int)Math.Ceiling(val); - Verbose("Ceiling(" + val + ")=" + intA); - return intA; - } - - public integer llAbs(integer val) - { - int intA = (int)Math.Abs((long)val); - Verbose("Abs(" + val + ")=" + intA); - return intA; - } - - public Float llFabs(Float val) - { - double dblA = Math.Abs(val); - Verbose("Fabs(" + val + ")=" + dblA); - return dblA; - } - - public integer llFloor(Float val) - { - int intA = (int)Math.Floor(val); - Verbose("Floor(" + val + ")=" + intA); - return intA; - } - - public Float llFrand(Float max) - { - double dblValue = max * m_random.NextDouble(); - Verbose("Frand(" + max + ")=" + dblValue); - return dblValue; - } - - #endregion Math Functions - - #region Sound - public void llPreloadSound(String sound) - { - Verbose("PreloadSound(" + sound + ")"); - } - - public void llSetSoundQueueing(integer queue) - { - Verbose("SetSoundQueueing(" + queue + ")"); - } - - public void llStopSound() - { - Verbose("StopSound()"); - } - - public void llTriggerSound(String sound, Float volume) - { - Verbose("TriggerSound(" + sound + "," + volume + ")"); - } - - public void llTriggerSoundLimited(String sound, Float volume, vector tne, vector bsw) - { - Verbose("TriggerSoundLimited(" + sound + "," + volume + "," + tne + "," + bsw + ")"); - } - - public void llSetSoundRadius(Float radius) - { - m_SoundRadius = radius; - Verbose("SetSoundRadius(" + m_SoundRadius + ")"); - } - - public void llAdjustSoundVolume(Float volume) - { - Verbose("AdjustSoundVolume(" + volume + ")"); - m_Volume = volume; - } - - public void llPlaySound(String sound, Float volume) - { - try - { - System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); - sp.Play(); - Verbose("PlaySound(" + sound + "," + volume + ")"); - } - catch(Exception exception) - { - Verbose("PlaySound(" + sound + "," + volume + ") **"+exception.Message); - } - } - - public void llPlaySoundSlave(String sound, Float volume) - { - try - { - System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); - sp.Play(); - } - catch - { - } - Verbose("PlaySoundSlave(" + sound + "," + volume + ")"); - } - - public void llLoopSound(String sound, Float volume) - { - try - { - System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); - sp.PlayLooping(); - } - catch - { - } - Verbose("LoopSound(" + sound + "," + volume + ")"); - } - - public void llLoopSoundMaster(String sound, Float volume) - { - try - { - System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); - sp.PlayLooping(); - } - catch - { - } - Verbose("LoopSoundMaster(" + sound + "," + volume + ")"); - } - - public void llLoopSoundSlave(String sound, Float volume) - { - try - { - System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); - sp.PlayLooping(); - } - catch - { - } - Verbose("LoopSoundSlave(" + sound + "," + volume + ")"); - } - #endregion Sound - - public void llAddToLandPassList(key avatar, Float hours) - { - Verbose("AddToLandPassList(" + avatar + "," + hours + ")"); - if (m_LandPassList.ContainsKey(avatar)) - m_LandPassList.Remove(avatar); - m_LandPassList.Add(avatar, hours); - } - public void llRemoveFromLandPassList(key avatar) - { - Verbose("RemoveFromLandPassList(" + avatar + ")"); - if (m_LandPassList.ContainsKey(avatar)) - m_LandPassList.Remove(avatar); - } - - public void llResetLandPassList() - { - m_LandPassList = new Hashtable(); - Verbose("llResetLandPassList()"); - } - - public void llAddToLandBanList(key agent, Float hours) - { - Verbose("AddToLandBanList(" + agent + "," + hours + ")"); - if (m_LandBanList.ContainsKey(agent)) - m_LandBanList.Remove(agent); - m_LandBanList.Add(agent, hours); - } - public void llRemoveFromLandBanList(key avatar) - { - Verbose("RemoveFromLandBanList(" + avatar + ")"); - if (m_LandBanList.ContainsKey(avatar)) - m_LandBanList.Remove(avatar); - } - - public void llResetLandBanList() - { - m_LandBanList = new Hashtable(); - Verbose("llResetLandBanList()"); - } - - public void llAllowInventoryDrop(integer add) - { - Verbose("AllowInventoryDrop(" + add + ")"); - } - - public Float llAngleBetween(rotation a, rotation b) - { - double Angle = 2 * Math.Acos((a.x * b.x + a.y * b.y + a.z * b.z + a.s * b.s) - / Math.Sqrt((a.x * a.x + a.y * a.y + a.z * a.z + a.s * a.s) * - (b.x * b.x + b.y * b.y + b.z * b.z + b.s * b.s))); - Verbose("AngleBetween(" + a + "," + b + ")=" + Angle); - return Angle; - } - - public void llApplyImpulse(vector force, integer local) - { - Verbose("ApplyImpulse(" + force + "," + local + ")"); - } - - public void llApplyRotationalImpulse(vector force, integer local) - { - Verbose("ApplyRotationalImpulse(" + force + "," + local + ")"); - } - - public void llAttachToAvatar(integer attachment) - { - Verbose("AttachToAvatar(" + attachment + ")"); - } - - public void llAttachToAvatar(key avatar, integer attachment) - { - Verbose("AttachToAvatar(" + avatar + "," + attachment + ")"); - } - - public key llAvatarOnSitTarget() - { - Verbose("AvatarOnSitTarget()"); - return new key(Guid.NewGuid()); - } - - public rotation llAxes2Rot(vector fwd, vector left, vector up) - { - Verbose("Axes2Rot(" + fwd + "," + left + "," + up + ")"); - return rotation.ZERO_ROTATION; - } - - public rotation llAxisAngle2Rot(vector axis, Float angle) - { - vector unit_axis = llVecNorm(axis); - double sine_half_angle = Math.Sin(angle / 2); - double cosine_half_angle = Math.Cos(angle / 2); - - rotation result = new rotation( - sine_half_angle * unit_axis.x, - sine_half_angle * unit_axis.y, - sine_half_angle * unit_axis.z, - cosine_half_angle); - - Verbose("AxisAngle2Rot({0},{1})={2}",axis,angle,result); - return result; - } - - public void llBreakAllLinks() - { - host.llBreakAllLinks(); - Verbose("BreakAllLinks()"); - } - - public void llBreakLink(integer linknum) - { - host.llBreakLink(linknum); - Verbose("BreakLink({0})",linknum); - } - - public Float llCloud(vector offset) - { - Verbose("Cloud({0})",offset); - return 0.0; - } - - public void llCollisionFilter(String name, key id, integer accept) - { - Verbose("CollisionFilter(" + name + "," + id + "," + accept + ")"); - } - - public void llCollisionSound(String impact_sound, Float impact_volume) - { - Verbose("CollisionSound(" + impact_sound + "," + impact_volume + ")"); - } - - public void llCollisionSprite(String impact_sprite) - { - Verbose("CollisionSprite(" + impact_sprite + ")"); - } - - public void llCreateLink(key target, integer simulator) - { - Verbose("CreateLink(" + target + "," + simulator + ")"); - } - - public void llDetachFromAvatar() - { - Verbose("DetachFromAvatar()"); - } - - public void llDetachFromAvatar(key avatar) - { - Verbose("DetachFromAvatar({0})",avatar); - } - - public vector llDetectedGrab(integer number) - { - Verbose("DetectedGrab(" + number + ")"); - return vector.ZERO_VECTOR; - } - - public key llDetectedKey(integer number) - { - key k = new key(Properties.Settings.Default.AvatarKey); - Verbose("DetectedKey({0})={1}",number,k); - return k; - } - - public integer llDetectedLinkNumber(integer number) - { - integer result = 0; - Verbose("DetectedLinkNumber({0})={1}",number,result); - return result; - } - - public String llDetectedName(integer number) - { - string result = Properties.Settings.Default.AvatarName; - Verbose("DetectedName({0})={1}", number, result); - return result; - } - - public key llDetectedOwner(integer number) - { - key result = new key(Properties.Settings.Default.AvatarKey); - Verbose("DetectedOwner({0})={1}",number,result); - return result; - } - - public vector llDetectedPos(integer number) - { - Verbose("DetectedPos(" + number + ")"); - return vector.ZERO_VECTOR; - } - - public rotation llDetectedRot(integer number) - { - Verbose("DetectedRot(" + number + ")"); - return rotation.ZERO_ROTATION; - } - - public integer llDetectedType(integer number) - { - integer result = AGENT; - Verbose("DetectedType({0})={1}",number,result); - return result; - } - - public vector llDetectedVel(integer number) - { - Verbose("DetectedVel(" + number + ")"); - return vector.ZERO_VECTOR; - } - - public void llDialog(key avatar, String message, list buttons, integer channel) - { - Verbose("Dialog({0},{1},{2},{3})",avatar,message,buttons.ToString(),channel); - host.llDialog(avatar, message, buttons, channel); - } - - public void llDie() - { - Verbose("llDie()"); - host.Die(); - } - - public integer llEdgeOfWorld(vector pos, vector dir) - { - Verbose("EdgeOfWorld(" + pos + "," + dir + ")"); - return 0; - } - - public void llEjectFromLand(key pest) - { - Verbose("EjectFromLand(" + pest + ")"); - } - - public void llEmail(String address, String subject, String message) - { - Verbose("Email(" + address + "," + subject + "," + message + ")"); - host.Email(address, subject, message); - } - - public vector llGetAccel() - { - Verbose("GetAccel()"); - return vector.ZERO_VECTOR; - } - - public integer llGetAttached() - { - Verbose("GetAttached()"); - return 0; - } - - public integer llGetAgentInfo(key id) - { - Verbose("GetAgentInfo(" + id + ")"); - return 0; - } - - public vector llGetAgentSize(key id) - { - Verbose("GetAgentSize(" + id + ")"); - return vector.ZERO_VECTOR; - } - - public Float llGetAlpha(integer face) - { - Verbose("GetAlpha(" + face + ")"); - return 0F; - } - - public String llGetAnimation(key id) - { - Verbose("GetAnimation(" + id + ")"); - return ""; - } - - public vector llGetCenterOfMass() - { - Verbose("GetCenterOfMass()"); - return vector.ZERO_VECTOR; - } - - public vector llGetColor(integer face) - { - Verbose("GetColor(" + face + ")"); - return vector.ZERO_VECTOR; - } - - public String llGetDate() - { - string result = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd"); - Verbose("GetDate()=" + result); - return result; - } - - public Float llGetEnergy() - { - Float result = 1.23; - Verbose("GetEnergy()={0}", result); - return result; - } - - public vector llGetForce() - { - Verbose("GetForce()"); - return vector.ZERO_VECTOR; - } - - public integer llGetFreeMemory() - { - Verbose("GetFreeMemory()"); - return 16000; - } - - public key llGetInventoryKey(String name) - { - key result = host.GetInventoryKey(name); - Verbose("GetInventoryKey({0})={1}",name,result); - return result; - } - - public String llGetInventoryName(integer type, integer number) - { - string result = host.GetInventoryName(type, number); - Verbose("GetInventoryName({0},{1})={2}", type, number, result); - return result; - } - - public integer llGetInventoryNumber(integer type) - { - int result = host.GetInventoryNumber(type); - Verbose("GetInventoryNumber({0})={1}",type,result); - return result; - } - - public key llGetInventoryCreator(String item) - { - key result = Properties.Settings.Default.AvatarKey; - Verbose(@"GetInventoryCreator(""{0}"")={1}", item, result); - return result; - } - public integer llGetInventoryType(String name) - { - integer result = host.GetInventoryType(name); - Verbose("GetInventoryType({0})={1}", name, result); - return result; - } - public integer llGetInventoryPermMask(String item, integer mask) - { - Verbose("GetInventoryPermMask(" + item + "," + mask + ")"); - return 0; - } - - - public key llGetKey() - { - key result = host.GetKey(); - Verbose("GetKey()="+result.ToString()); - return result; - } - - public key llGetLandOwnerAt(vector pos) - { - Verbose("GetLandOwnerAt(" + pos + ")"); - return new key(Guid.NewGuid()); - } - - public key llGetLinkKey(integer linknum) - { - Verbose("GetLinkKey(" + linknum + ")"); - return new key(Guid.NewGuid()); - } - - public String llGetLinkName(integer linknum) - { - Verbose("GetLinkName(" + linknum + ")"); - return ""; - } - - public integer llGetLinkNumber() - { - Verbose("GetLinkNumber()"); - return 0; - } - - public vector GetLocalPos() - { - // no verbose - return m_pos; - } - public vector llGetLocalPos() - { - Verbose("GetLocalPos()={0}",m_pos); - return m_pos; - } - - public rotation llGetLocalRot() - { - Verbose("GetLocalRot()={0}",m_rotlocal); - return m_rotlocal; - } - - public void llGetNextEmail(String address, String subject) - { - Verbose("GetNextEmail(" + address + "," + subject + ")"); - } - - public key llGetNumberOfNotecardLines(String name) - { - key k = host.GetNumberOfNotecardLines(name); - Verbose(@"GetNumberOfNotecardLines(""{0}"")={1}",name,k); - return k; - } - - public key llGetNotecardLine(String name, integer line) - { - key k = host.GetNotecardLine(name, line); - Verbose(@"GetNotecardLine(""{0}"",{1})={2}",name,line,k); - return k; - } - - public integer llGetNumberOfSides() - { - integer result = 6; - Verbose("GetNumberOfSides()={0}",result); - return result; - } - - public String llGetObjectName() - { - string result = host.GetObjectName(); - Verbose("llGetObjectName()={0}", result); - return result; - } - - public void llSetObjectName(String name) - { - Verbose("llSetObjectName({0})", name); - host.SetObjectName(name); - } - - public String llGetObjectDesc() - { - string result = host.GetObjectDescription(); - Verbose("llGetObjectDesc()={0}", result); - return result; - } - - public void llSetObjectDesc(String description) - { - Verbose("llSetObjectDesc({0})", description); - host.SetObjectDescription(description); - } - - - public vector llGetOmega() - { - Verbose("GetOmega()"); - return vector.ZERO_VECTOR; - } - - public key llGetOwner() - { - key k = new key(Properties.Settings.Default.AvatarKey); - Verbose("GetOwner()=" + k); - return k; - } - - public key llGetOwnerKey(key id) - { - key k = llGetOwner(); - Verbose("GetOwnerKey(" + id + ")=" + k); - return k; - } - - public integer llGetPermissions() - { - integer perm = - PERMISSION_DEBIT - | PERMISSION_TAKE_CONTROLS - | PERMISSION_TRIGGER_ANIMATION - | PERMISSION_ATTACH - | PERMISSION_CHANGE_LINKS - | PERMISSION_TRACK_CAMERA - | PERMISSION_CONTROL_CAMERA; - - Verbose("GetPermissions()=" + perm); - return perm; - } - - public key llGetPermissionsKey() - { - Verbose("GetPermissionsKey()"); - return new key(Guid.NewGuid()); - } - - public vector llGetPos() - { - Verbose("GetPos()=" + m_pos); - return m_pos; - } - - public Float llGetRegionFPS() - { - Verbose("GetRegionFPS()=" + Properties.Settings.Default.RegionFPS); - return Properties.Settings.Default.RegionFPS; - } - - public String llGetRegionName() - { - Verbose("GetRegionName()=" + Properties.Settings.Default.RegionName); - return Properties.Settings.Default.RegionName; - } - - public vector llGetRegionCorner() - { - System.Drawing.Point point = Properties.Settings.Default.RegionCorner; - vector RegionCorner = new vector(point.X, point.Y, 0); - Verbose("GetRegionCorner()" + RegionCorner); - return RegionCorner; - } - public integer llGetRegionFlags() - { - Verbose("GetRegionFlags()"); - return 0; - } - - - public Float llGetRegionTimeDilation() - { - Verbose("GetRegionTimeDilation()"); - return 0.9; - } - - public rotation llGetRot() - { - Verbose("GetRot()=" + m_rot); - return m_rot; - } - - public vector llGetScale() - { - Verbose("GetScale()=" + m_scale); - return m_scale; - } - - public String llGetScriptName() - { - string result = host.GetScriptName(); - Verbose("GetScriptName()=" + result); - return result; - } - - public integer llGetStartParameter() - { - Verbose("GetStartParameter()=" + m_start_parameter); - return m_start_parameter; - } - - public integer llGetScriptState(String name) - { - Verbose("GetScriptState(" + name + ")"); - return 0; - } - - public integer llGetStatus(integer status) - { - Verbose("GetStatus(" + status + ")"); - return 0; - } - - public String llGetSubString(String _src, integer _start, integer _end) - { - string src = _src; - int start = _start; - int end = _end; - - StringBuilder result = new StringBuilder(); - - int intLength = src.Length; - - if (CorrectIt(intLength, ref start, ref end)) - { - if (start <= end) - { - for (int intI = start; intI <= end; intI++) - result.Append(src[intI]); - } - else // excluding - { - for (int intI = 0; intI <= end; intI++) - result.Append(src[intI]); - for (int intI = start; intI < intLength; intI++) - result.Append(src[intI]); - } - } - Verbose(string.Format(@"GetSubString(""{0}"",{1},{2})=""{3}""", _src, _start, _end, result)); - return result.ToString(); - } - - public String llDeleteSubString(String _src, integer _start, integer _end) - { - char[] src = _src.ToString().ToCharArray(); - int start = _start; - int end = _end; - - int intLength = src.Length; - - if (CorrectIt(intLength, ref start, ref end)) - { - if (start <= end) - { - for (int intI = start; intI <= end; intI++) - src[intI] = '\0'; - } - else // excluding - { - for (int intI = 0; intI <= end; intI++) - src[intI] = '\0'; - for (int intI = start; intI < intLength; intI++) - src[intI] = '\0'; - } - } - StringBuilder result = new StringBuilder(); - for (int intI = 0; intI < src.Length; intI++) - { - if (src[intI] != '\0') - result.Append(src[intI]); - } - - Verbose(string.Format(@"DeleteSubString(""{0}"",{1},{2})=""{3}""",_src,_start,_end,result)); - return result.ToString(); - } - - public vector llGetSunDirection() - { - Verbose("GetSunDirection()"); - return vector.ZERO_VECTOR; - } - - public String llGetTexture(integer face) - { - Verbose("GetTexture(" + face + ")"); - return ""; - } - - public vector llGetTextureOffset(integer side) - { - Verbose("GetTextureOffset(" + side + ")"); - return vector.ZERO_VECTOR; - } - - public Float llGetTextureRot(integer side) - { - Verbose("GetTextureRot(" + side + ")"); - return 0.0; - } - - public vector llGetTextureScale(integer side) - { - Verbose("GetTextureScale(" + side + ")"); - return vector.ZERO_VECTOR; - } - - public vector llGetTorque() - { - Verbose("GetTorque()"); - return vector.ZERO_VECTOR; - } - - public vector llGetVel() - { - Verbose("GetVel()"); - return vector.ZERO_VECTOR; - } - public void llGiveInventory(key destination, String inventory) - { - Verbose("GiveInventory(" + destination + "," + inventory + ")"); - } - - public void llGiveInventoryList(key destination, String category, list inventory) - { - Verbose("GiveInventoryList(" + destination + "," + category + "," + inventory.ToString() + ")"); - } - - public integer llGiveMoney(key destination, integer amount) - { - Verbose("GiveMoney(" + destination + "," + amount + ")"); - return 0; - } - - public Float llGround(vector offset) - { - Float ground = 25.0; - Verbose("Ground(" + offset + ")=" + ground); - return ground; - } - - public vector llGroundContour(vector offset) - { - Verbose("GroundContour(" + offset + ")"); - return vector.ZERO_VECTOR; - } - - public vector llGroundNormal(vector offset) - { - vector GroundNormal = new vector(0, 0, 1); - Verbose("GroundNormal(" + offset + ")=" + GroundNormal); - return GroundNormal; - } - - public void llGroundRepel(Float height, integer water, Float tau) - { - Verbose("GroundRepel(" + height + "," + water + "," + tau + ")"); - } - - public vector llGroundSlope(vector offset) - { - Verbose("GroundSlope:" + offset); - return vector.ZERO_VECTOR; - } - - public String llInsertString(String _dst, integer _position, String _src) - { - string dst = _dst; - string src = _src; - int position = _position; - string result; - - if (position < 0) - position = 0; - - if (position < dst.Length) - result = dst.Substring(0, position) + src + dst.Substring(position); - else - result = dst + src; - Verbose(@"InsertString(""{0}"",{1},""{2}"")=""{3}""",dst,position,src,result); - return result; - } - - public void llInstantMessage(key user, String message) - { - Verbose("InstantMessage(" + user + "," + message + ")"); - } - - public String llKey2Name(key id) - { - string strName = "*unknown*"; - if (Properties.Settings.Default.AvatarKey == id) - strName = Properties.Settings.Default.AvatarName; - Verbose("Key2Name(" + id + ")=" + strName); - return strName; - } - - public integer llListen(integer channel, String name, key id, String msg) - { - int intHandle = host.llListen(channel, name, id, msg); - Verbose(@"Listen(" + channel + @",""" + name + @"""," + id + @",""" + msg + @""")=" + intHandle); - return intHandle; - } - - public void llListenControl(integer number, integer active) - { - Verbose("ListenControl(" + number + "," + active + ")"); - host.llListenControl(number, active); - } - - public void llListenRemove(integer number) - { - Verbose("ListenRemove(" + number + ")"); - host.llListenRemove(number); - } - - public void llLookAt(vector target, Float strength, Float damping) - { - Verbose("LookAt(" + target + "," + strength + "," + damping + ")"); - } - - public void llMakeExplosion(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) - { - Verbose("MakeExplosion(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); - } - - public void llMakeFire(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) - { - Verbose("MakeFire(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); - } - - public void llMakeFountain(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) - { - Verbose("MakeFountain(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); - } - - public void llMakeSmoke(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) - { - Verbose("MakeSmoke(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); - } - - public void llMessageLinked(integer linknum, integer num, String str, key id) - { - Verbose("MessageLinked(" + linknum + "," + num + "," + str + "," + id + ")"); - host.MessageLinked(linknum, num, str, id); - } - - public void llMinEventDelay(Float delay) - { - Verbose("MinEventDelay(" + delay + ")"); - } - - public void llModifyLand(integer action, integer size) - { - Verbose("ModifyLand(" + action + "," + size + ")"); - } - - public void llMoveToTarget(vector target, Float tau) - { - Verbose("MoveToTarget(" + target + "," + tau + ")"); - } - - public void llOffsetTexture(Float offset_s, Float offset_t, integer face) - { - Verbose("OffsetTexture(" + offset_s + "," + offset_t + "," + face + ")"); - } - - public integer llOverMyLand(key id) - { - Verbose("OverMyLand(" + id + ")"); - return integer.TRUE; - } - - public void llParticleSystem(list parameters) - { - Verbose("ParticleSystem(" + parameters.ToString() + ")"); - } - - public void llLinkParticleSystem(integer link, list parameters) + public static readonly integer PRIM_TEXTURE = 17; + public static readonly integer PRIM_TYPE = 9; + + public static readonly integer PRIM_TYPE_BOX = 0; + public static readonly integer PRIM_TYPE_CYLINDER = 1; + public static readonly integer PRIM_TYPE_PRISM = 2; + public static readonly integer PRIM_TYPE_SPHERE = 3; + public static readonly integer PRIM_TYPE_TORUS = 4; + public static readonly integer PRIM_TYPE_TUBE = 5; + public static readonly integer PRIM_TYPE_RING = 6; + public static readonly integer PRIM_TYPE_SCULPT = 7; + + public static readonly integer PRIM_GLOW = 25; + + public static readonly integer PRIM_SCULPT_TYPE_SPHERE = 1; + public static readonly integer PRIM_SCULPT_TYPE_TORUS = 2; + public static readonly integer PRIM_SCULPT_TYPE_PLANE = 3; + public static readonly integer PRIM_SCULPT_TYPE_CYLINDER = 4; + + public static readonly integer PROFILE_NONE = 0; + public static readonly integer PROFILE_SCRIPT_MEMORY = 1; + + public static readonly integer PSYS_PART_FLAGS = 0; + public static readonly integer PSYS_PART_INTERP_COLOR_MASK = 1; + public static readonly integer PSYS_PART_INTERP_SCALE_MASK = 2; + public static readonly integer PSYS_PART_BOUNCE_MASK = 4; + public static readonly integer PSYS_PART_WIND_MASK = 8; + public static readonly integer PSYS_PART_FOLLOW_SRC_MASK = 16; + public static readonly integer PSYS_PART_FOLLOW_VELOCITY_MASK = 32; + public static readonly integer PSYS_PART_TARGET_POS_MASK = 64; + public static readonly integer PSYS_PART_TARGET_LINEAR_MASK = 128; + public static readonly integer PSYS_PART_EMISSIVE_MASK = 256; + + public static readonly integer PSYS_PART_START_COLOR = 1; + public static readonly integer PSYS_PART_START_ALPHA = 2; + public static readonly integer PSYS_PART_END_COLOR = 3; + public static readonly integer PSYS_PART_END_ALPHA = 4; + public static readonly integer PSYS_PART_START_SCALE = 5; + public static readonly integer PSYS_PART_END_SCALE = 6; + public static readonly integer PSYS_PART_MAX_AGE = 7; + + public static readonly integer PSYS_SRC_ACCEL = 8; + public static readonly integer PSYS_SRC_PATTERN = 9; + public static readonly integer PSYS_SRC_INNERANGLE = 10; + public static readonly integer PSYS_SRC_OUTERANGLE = 11; + public static readonly integer PSYS_SRC_TEXTURE = 12; + public static readonly integer PSYS_SRC_BURST_RATE = 13; + public static readonly integer PSYS_SRC_BURST_PART_COUNT = 15; + public static readonly integer PSYS_SRC_BURST_RADIUS = 16; + public static readonly integer PSYS_SRC_BURST_SPEED_MIN = 17; + public static readonly integer PSYS_SRC_BURST_SPEED_MAX = 18; + public static readonly integer PSYS_SRC_MAX_AGE = 19; + public static readonly integer PSYS_SRC_TARGET_KEY = 20; + public static readonly integer PSYS_SRC_OMEGA = 21; + public static readonly integer PSYS_SRC_ANGLE_BEGIN = 22; + public static readonly integer PSYS_SRC_ANGLE_END = 23; + + public static readonly integer PSYS_SRC_PATTERN_DROP = 1; + public static readonly integer PSYS_SRC_PATTERN_EXPLODE = 2; + public static readonly integer PSYS_SRC_PATTERN_ANGLE = 4; + public static readonly integer PSYS_SRC_PATTERN_ANGLE_CONE = 8; + public static readonly integer PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY = 16; + + public static readonly integer PUBLIC_CHANNEL = 0; + + public static readonly integer REGION_FLAG_ALLOW_DAMAGE = 1; + public static readonly integer REGION_FLAG_FIXED_SUN = 16; + public static readonly integer REGION_FLAG_BLOCK_TERRAFORM = 64; + public static readonly integer REGION_FLAG_SANDBOX = 256; + public static readonly integer REGION_FLAG_DISABLE_COLLISIONS = 4096; + public static readonly integer REGION_FLAG_DISABLE_PHYSICS = 16384; + public static readonly integer REGION_FLAG_BLOCK_FLY = 524288; + public static readonly integer REGION_FLAG_ALLOW_DIRECT_TELEPORT = 1048576; + public static readonly integer REGION_FLAG_RESTRICT_PUSHOBJECT = 4194304; + + public static readonly integer REMOTE_DATA_CHANNEL = 1; + public static readonly integer REMOTE_DATA_REQUEST = 2; + public static readonly integer REMOTE_DATA_REPLY = 3; + + public static readonly integer STATUS_PHYSICS = 1; + public static readonly integer STATUS_ROTATE_X = 2; + public static readonly integer STATUS_ROTATE_Y = 4; + public static readonly integer STATUS_ROTATE_Z = 8; + public static readonly integer STATUS_PHANTOM = 16; + public static readonly integer STATUS_SANDBOX = 32; + public static readonly integer STATUS_BLOCK_GRAB = 64; + public static readonly integer STATUS_BLOCK_GRAB_OBJECT = 1024; + public static readonly integer STATUS_DIE_AT_EDGE = 128; + public static readonly integer STATUS_RETURN_AT_EDGE = 256; + public static readonly integer STATUS_CAST_SHADOWS = 512; + public static readonly integer STATUS_BOUNDS_ERROR = 1002; + public static readonly integer STATUS_INTERNAL_ERROR = 1999; + public static readonly integer STATUS_MALFORMED_PARAMS = 1000; + public static readonly integer STATUS_NOT_FOUND = 1003; + public static readonly integer STATUS_NOT_SUPPORTED = 1004; + public static readonly integer STATUS_OK = 0; + public static readonly integer STATUS_TYPE_MISMATCH = 1001; + public static readonly integer STATUS_WHITELIST_FAILED = 2001; + + public static readonly integer STRING_TRIM_HEAD = 1; + public static readonly integer STRING_TRIM_TAIL = 2; + public static readonly integer STRING_TRIM = 3; + + public static readonly key TEXTURE_BLANK = "5748decc-f629-461c-9a36-a35a221fe21f"; + public static readonly key TEXTURE_DEFAULT = "89556747-24cb-43ed-920b-47caed15465f"; + public static readonly key TEXTURE_PLYWOOD = "89556747-24cb-43ed-920b-47caed15465f"; + public static readonly key TEXTURE_TRANSPARENT = "8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"; + public static readonly key TEXTURE_MEDIA = "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"; + + public static readonly vector TOUCH_INVALID_TEXCOORD = new vector(-1.0, -1.0, 0.0); + + public static readonly integer TYPE_INTEGER = 1; + public static readonly integer TYPE_FLOAT = 2; + public static readonly integer TYPE_STRING = 3; + public static readonly integer TYPE_KEY = 4; + public static readonly integer TYPE_VECTOR = 5; + public static readonly integer TYPE_ROTATION = 6; + public static readonly integer TYPE_INVALID = 0; + + public static readonly String URL_REQUEST_GRANTED = "URL_REQUEST_GRANTED"; + public static readonly String URL_REQUEST_DENIED = "URL_REQUEST_DENIED"; + + public static readonly integer VEHICLE_TYPE_NONE = 0; + + public static readonly integer VEHICLE_LINEAR_FRICTION_TIMESCALE = 16; + public static readonly integer VEHICLE_ANGULAR_FRICTION_TIMESCALE = 17; + public static readonly integer VEHICLE_LINEAR_MOTOR_DIRECTION = 18; + public static readonly integer VEHICLE_ANGULAR_MOTOR_DIRECTION = 19; + public static readonly integer VEHICLE_LINEAR_MOTOR_OFFSET = 20; + public static readonly integer VEHICLE_HOVER_HEIGHT = 24; + public static readonly integer VEHICLE_HOVER_EFFICIENCY = 25; + public static readonly integer VEHICLE_HOVER_TIMESCALE = 26; + public static readonly integer VEHICLE_BUOYANCY = 27; + public static readonly integer VEHICLE_LINEAR_DEFLECTION_EFFICIENCY = 28; + public static readonly integer VEHICLE_LINEAR_DEFLECTION_TIMESCALE = 29; + public static readonly integer VEHICLE_LINEAR_MOTOR_TIMESCALE = 30; + public static readonly integer VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE = 31; + public static readonly integer VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY = 32; + public static readonly integer VEHICLE_ANGULAR_DEFLECTION_TIMESCALE = 33; + public static readonly integer VEHICLE_ANGULAR_MOTOR_TIMESCALE = 34; + public static readonly integer VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE = 35; + public static readonly integer VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY = 36; + public static readonly integer VEHICLE_VERTICAL_ATTRACTION_TIMESCALE = 37; + public static readonly integer VEHICLE_BANKING_EFFICIENCY = 38; + public static readonly integer VEHICLE_BANKING_MIX = 39; + public static readonly integer VEHICLE_BANKING_TIMESCALE = 40; + public static readonly integer VEHICLE_REFERENCE_FRAME = 44; + + // depricaded + public static readonly integer VEHICLE_FLAG_NO_FLY_UP = 1; + + public static readonly integer VEHICLE_FLAG_NO_DEFLECTION_UP = 1; + public static readonly integer VEHICLE_FLAG_LIMIT_ROLL_ONLY = 2; + public static readonly integer VEHICLE_FLAG_HOVER_WATER_ONLY = 4; + public static readonly integer VEHICLE_FLAG_HOVER_TERRAIN_ONLY = 8; + public static readonly integer VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT = 16; + public static readonly integer VEHICLE_FLAG_HOVER_UP_ONLY = 32; + public static readonly integer VEHICLE_FLAG_LIMIT_MOTOR_UP = 64; + public static readonly integer VEHICLE_FLAG_MOUSELOOK_STEER = 128; + public static readonly integer VEHICLE_FLAG_MOUSELOOK_BANK = 256; + public static readonly integer VEHICLE_FLAG_CAMERA_DECOUPLED = 512; + + public static readonly integer VEHICLE_TYPE_SLED = 1; + public static readonly integer VEHICLE_TYPE_CAR = 2; + public static readonly integer VEHICLE_TYPE_BOAT = 3; + public static readonly integer VEHICLE_TYPE_AIRPLANE = 4; + public static readonly integer VEHICLE_TYPE_BALLOON = 5; + + //public static readonly integer REGION_FLAG_RESTRICT_PUSHOBJECT=4194304; + + #endregion + + #region Helper Functions + + #region List Functions + + private bool CorrectIt(int length, ref int start, ref int end) { - Verbose("LinkParticleSystem(" + link + "," + parameters.ToString() + ")"); + if (start < 0) + start = length + start; + + if (end < 0) + end = length + end; + + if (start <= end) + { + if (start >= length) + return false; + if (end < 0) + return false; + } + + start = Math.Max(0, start); + end = Math.Min(length - 1, end); + + return true; } - public void llPassCollisions(integer pass) - { - Verbose("PassCollisions(" + pass + ")"); - } - - public void llPassTouches(integer pass) - { - Verbose("PassTouches(" + pass + ")"); - } - - public void llPointAt(vector pos) - { - Verbose("PointAt(" + pos + ")"); - } - - public void llPushObject(key id, vector impulse, vector angular_impulse, integer local) - { - Verbose("PushObject(" + id + "," + impulse + "," + angular_impulse + "," + local + ")"); - } - - public void llReleaseControls() - { - Verbose("ReleaseControls()"); - this.host.ReleaseControls(); - } - - public void llReleaseControls(key avatar) - { - Verbose("ReleaseControls(" + avatar + ")"); - } - - public void llRemoteLoadScript(key target, String name, integer running, integer param) - { - Verbose("RemoteLoadScript(" + target + "," + name + "," + running + "," + param + ")"); - } - - public void llRemoveInventory(String inventory) + public ArrayList RandomShuffle(ArrayList collection) { - host.RemoveInventory(inventory); - Verbose("RemoveInventory(" + inventory + ")"); - } + // We have to copy all items anyway, and there isn't a way to produce the items + // on the fly that is linear. So copying to an array and shuffling it is an efficient as we can get. - public void llRemoveVehicleFlags(integer flags) - { - Verbose("RemoveVehicleFlags(" + flags + ")"); - } + if (collection == null) + throw new ArgumentNullException("collection"); - public key llRequestAgentData(key id, integer data) - { - key k = new key(Guid.NewGuid()); + int count = collection.Count; + for (int i = count - 1; i >= 1; --i) + { + // Pick an random number 0 through i inclusive. + int j = m_random.Next(i + 1); - string strData = "***"; - switch ((int)data) - { - case 1: // DATA_ONLINE - break; - case 2: // DATA_NAME - strData = Properties.Settings.Default.AvatarName; - break; - case 3: // DATA_BORN - strData = DateTime.Now.ToString("yyyy-MM-dd"); - break; - case 4: // DATA_RATING - break; - case 8: // DATA_PAYINFO - break; - default: - break; - } - host.ExecuteSecondLife("dataserver", k, (SecondLife.String)strData); - return k; - } - - public key llRequestInventoryData(String name) - { - Verbose("RequestInventoryData(" + name + ")"); - return new key(Guid.NewGuid()); - } - - public void llRequestPermissions(key avatar, integer perm) - { - Verbose("RequestPermissions(" + avatar + "," + perm + ")"); - this.host.llRequestPermissions(avatar, perm); - } - - public void llResetScript() - { - Verbose("ResetScript()"); - host.Reset(); - System.Threading.Thread.Sleep(1000); - System.Windows.Forms.MessageBox.Show("If you see this, something wrong in llResetScript()", "Oops..."); - } - - public void llResetOtherScript(String name) - { - Verbose("ResetOtherScript(" + name + ")"); - } - - public void llRezObject(String inventory, vector pos, vector vel, rotation rot, integer param) - { - Verbose("RezObject(" + inventory + "," + pos + "," + vel + "," + rot + "," + param + ")"); - object_rez(new key(Guid.NewGuid())); - on_rez(param); - } - - public Float llRot2Angle(rotation rot) - { - Verbose("Rot2Angle(" + rot + ")"); - return 0F; - } - - public vector llRot2Axis(rotation rot) - { - Verbose("Rot2Axis(" + rot + ")"); - return ZERO_VECTOR; - } - - public vector llRot2Euler(rotation r) - { - // http://rpgstats.com/wiki/index.php?title=LibraryRotationFunctions - rotation t = new rotation(r.x * r.x, r.y * r.y, r.z * r.z, r.s * r.s); - double m = (t.x + t.y + t.z + t.s); - vector v = new vector(0, 0, 0); - if (m != 0) - { - double n = 2 * (r.y * r.s + r.x * r.z); - double p = m * m - n * n; - if (p > 0) - v = new vector(Math.Atan2(2.0 * (r.x * r.s - r.y * r.z), (-t.x - t.y + t.z + t.s)), - Math.Atan2(n, Math.Sqrt(p)), Math.Atan2(2.0 * (r.z * r.s - r.x * r.y), (t.x - t.y - t.z + t.s))); - else if (n > 0) - v = new vector(0, PI_BY_TWO, Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z)); - else - v = new vector(0, -PI_BY_TWO, Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z)); - } - Verbose("Rot2Euler(" + r + ")=" + v); - return v; - } - - public vector llRot2Fwd(rotation rot) - { - vector v = new vector(1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s) , 0 , 0); - vector result = v * rot; - Verbose("Rot2Fwd({0})={1}",rot,result); - return result; - } - - public vector llRot2Left(rotation rot) - { - vector v = new vector(0 , 1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s ) , 0); - vector result = v * rot; - Verbose("llRot2Left({0})={1}",rot,result); - return result; - } - - public vector llRot2Up(rotation rot) - { - vector v = new vector(0 , 0 , 1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s)); - vector result = v * rot; - Verbose("llRot2Left({0})={1}",rot,result); - return result; - } - - public rotation llRotBetween(vector a, vector b) - { - Verbose("RotBetween(" + a + "," + b + ")"); - return ZERO_ROTATION; - } - - public void llRotLookAt(rotation rot, Float strength, Float damping) - { - Verbose("RotLookAt(" + rot + "," + strength + "," + damping + ")"); - } - - public integer llRotTarget(rotation rot, Float error) - { - Verbose("RotTarget(" + rot + "," + error + ")"); - return 0; - } - - public void llRotTargetRemove(integer number) - { - Verbose("RotTargetRemove(" + number + ")"); - } - - public void llRotateTexture(Float radians, integer face) - { - Verbose("RotateTexture(" + radians + "," + face + ")"); - } - - public integer llSameGroup(key id) - { - Verbose("SameGroup(" + id + ")"); - return 0; - } - - public void llSay(integer channel, String text) - { - Chat(channel, text, CommunicationType.Say); - } - - public void llOwnerSay(String message) - { - Chat(0, message, CommunicationType.OwnerSay); - } - - public void llWhisper(integer channel, String text) - { - Chat(channel, text, CommunicationType.Whisper); - } - - public void llShout(integer channel, String text) - { - Chat(channel, text, CommunicationType.Shout); - } - - public void llRegionSay(integer channel, String text) - { - if (channel != 0) - Chat(channel, text, CommunicationType.RegionSay); - } - - - public void llScaleTexture(Float scale_s, Float scale_t, integer face) - { - Verbose("ScaleTexture(" + scale_s + "," + scale_t + "," + face + ")"); - } - - public integer llScriptDanger(vector pos) - { - Verbose("ScriptDanger(" + pos + ")"); - return 0; - } - - public void llSensor(String name, key id, integer type, Float range, Float arc) - { - Verbose("llSensor()"); - host.sensor_timer.Stop(); - integer total_number = 1; - host.ExecuteSecondLife("sensor", total_number); - } - - public void llSensorRemove() - { - Verbose("SensorRemove()"); - host.sensor_timer.Stop(); - } - - public void llSensorRepeat(String name, key id, integer type, Float range, Float arc, Float rate) - { - Verbose("SensorRepeat(" + name + "," + id + "," + type + "," + range + "," + arc + "," + rate + ")"); - host.sensor_timer.Stop(); - if (rate > 0) - { - host.sensor_timer.Interval = (int)Math.Round(rate * 1000); - host.sensor_timer.Start(); - } - } - - public void llSetAlpha(Float alpha, integer face) - { - Verbose("SetAlpha(" + alpha + "," + face + ")"); - } - - public void llSetBuoyancy(Float buoyancy) - { - Verbose("SetBuoyancy(" + buoyancy + ")"); - } - - public void llSetCameraAtOffset(vector offset) - { - Verbose("SetCameraAtOffset(" + offset + ")"); - } - - public void llSetCameraEyeOffset(vector offset) - { - Verbose("SetCameraEyeOffset(" + offset + ")"); - } - - public void llSetColor(vector color, integer face) - { - Verbose("SetColor(" + color + "," + face + ")"); - } - - public void llSetDamage(Float damage) - { - Verbose("SetDamage(" + damage + ")"); - } - - public void llSetForce(vector force, integer local) - { - Verbose("SetForce(" + force + "," + local + ")"); - } - - public void llSetForceAndTorque(vector force, vector torque, integer local) - { - Verbose("SetForceAndTorque(" + force + "," + torque + "," + local + ")"); - } - - public void llSetHoverHeight(Float height, Float water, Float tau) - { - Verbose("SetHoverHeight(" + height + "," + water + "," + tau + ")"); - } - - public void llSetLinkColor(integer linknumber, vector color, integer face) - { - Verbose("SetLinkColor(" + linknumber + "," + color + "," + face + ")"); - } - - public void llSetPos(vector pos) - { - Verbose("SetPos(" + pos + ")"); - m_pos = pos; - } - - public void llSetRot(rotation rot) - { - Verbose("SetRot(" + rot + ")"); - m_rot = rot; - } - - public void llSetScale(vector scale) - { - Verbose("SetScale(" + scale + ")"); - m_scale = scale; - } - - public void llSetScriptState(String name, integer run) - { - Verbose("SetScriptState(" + name + "," + run + ")"); - } - - public void llSetSitText(String text) - { - Verbose("SetSitText(" + text + ")"); - m_SitText = text; - } - - public void llSetStatus(integer status, integer value) - { - Verbose("SetStatus(" + status + "," + value + ")"); - } - - public void llSetText(String text, vector color, Float alpha) - { - Verbose("SetText(" + text + "," + color + "," + alpha + ")"); - } - - public void llSetTexture(String texture, integer face) - { - Verbose("SetTexture(" + texture + "," + face + ")"); - } - - public void llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, Float start, Float length, Float rate) - { - Verbose("SetTextureAnim(" + mode + "," + face + "," + sizex + "," + sizey + "," + start + "," + length + "," + rate + ")"); - } - - public void llSetLinkTextureAnim(integer link, integer mode, integer face, integer sizex, integer sizey, Float start, Float length, Float rate) - { - Verbose("SetLinkTextureAnim(" + link + "," + mode + "," + face + "," + sizex + "," + sizey + "," + start + "," + length + "," + rate + ")"); + // Swap array[i] and array[j] + object temp = collection[i]; + collection[i] = collection[j]; + collection[j] = temp; + } + return collection; } - public void llSetTimerEvent(Float sec) - { - Verbose("SetTimerEvent(" + sec + ")"); - host.timer.Stop(); - if (sec > 0) - { - host.timer.Interval = (int)Math.Round(sec * 1000); - host.timer.Start(); - } - } - - public void llSetTorque(vector torque, integer local) - { - Verbose("SetTorque(" + torque + "," + local + ")"); - } - - public void llSetTouchText(String text) - { - Verbose("SetTouchText(" + text + ")"); - } - - public void llSetVehicleFlags(integer flags) - { - Verbose("SetVehicleFlags(" + flags + ")"); - } - - public void llSetVehicleFloatParam(integer param_name, Float param_value) - { - Verbose("SetVehicledoubleParam(" + param_name + "," + param_value + ")"); - } - - public void llSetVehicleType(integer type) - { - Verbose("SetVehicleType(" + type + ")"); - } - - public void llSetVehicleRotationParam(integer param_name, rotation param_value) - { - Verbose("SetVehicleRotationParam(" + param_name + "," + param_value + ")"); - } - - public void llSetVehicleVectorParam(integer param_name, vector param_value) - { - Verbose("SetVehicleVectorParam(" + param_name + "," + param_value + ")"); - } - - public void llSitTarget(vector offset, rotation rot) - { - Verbose("SitTarget(" + offset + "," + rot + ")"); - } - - public void llSleep(Float sec) - { - Verbose("Sleep(" + sec + ")"); - System.Threading.Thread.Sleep((int)Math.Round(sec * 1000)); - } - - public void llStartAnimation(String anim) - { - Verbose("StartAnimation(" + anim + ")"); - } - - public void llStopAnimation(String anim) - { - Verbose("StopAnimation(" + anim + ")"); - } - - public void llStopHover() - { - Verbose("StopHover()"); - } - - public void llStopLookAt() - { - Verbose("StopLookAt()"); - } - - public void llStopMoveToTarget() - { - Verbose("StopMoveToTarget()"); - } - - public void llStopPointAt() - { - Verbose("StopPointAt()"); - } - - public integer llStringLength(String src) - { - int intLength = ((string)src).Length; - Verbose(@"StringLength(""{0}"")={1}",src,intLength); - return intLength; - } - - public integer llSubStringIndex(String source, String pattern) - { - int intIndexOf = ((string)source).IndexOf((string)pattern); - Verbose("SubStringIndex({0},{1})={2}",source,pattern,intIndexOf); - return intIndexOf; - } - - public void llTakeControls(integer controls, integer accept, integer pass_on) - { - Verbose("TakeControls(" + controls + "," + accept + "," + pass_on + ")"); - this.host.TakeControls(controls, accept, pass_on); - } - - public integer llTarget(vector position, Float range) - { - Verbose("Target(" + position + "," + range + ")"); - return 0; - } - - public void llTargetOmega(vector axis, Float spinrate, Float gain) - { - Verbose("TargetOmega(" + axis + "," + spinrate + "," + gain + ")"); - } - - public void llTargetRemove(integer tnumber) - { - Verbose("TargetRemove(" + tnumber + ")"); - } - - public void llTeleportAgentHome(key id) - { - Verbose("TeleportAgentHome(" + id + ")"); - } - - public String llToLower(String src) - { - string strTemp = ((string)src).ToLower(); - Verbose("ToLower(" + src + ")=" + strTemp); - return strTemp; - } - - public String llToUpper(String src) - { - string strTemp = ((string)src).ToUpper(); - Verbose("ToUpper(" + src + ")=" + strTemp); - return strTemp; - } - - public void llUnSit(key id) - { - Verbose("UnSit(" + id + ")"); - } - - public Float llVecDist(vector a, vector b) - { - vector vecValue = new vector(a.x - b.x, a.y - b.y, a.z - b.z); - double dblMag = llVecMag(vecValue); - Verbose("VecDist(" + a + "," + b + ")=" + dblMag); - return dblMag; - } - - public Float llVecMag(vector vec) - { - double dblValue = Math.Sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z); - Verbose("VecMag(" + vec + ")=" + dblValue); - return dblValue; - } - - public vector llVecNorm(vector vec) - { - double dblMag = llVecMag(vec); - vector vecValue = new vector(vec.x / dblMag, vec.y / dblMag, vec.z / dblMag); - Verbose("VecNorm(" + vec + ")=" + vecValue); - return vecValue; - } - - public void llVolumeDetect(integer detect) - { - Verbose("VolumeDetect(" + detect + ")"); - } - - public Float llWater(vector offset) - { - Verbose("Water(" + offset + ")"); - return 0F; - } - - public vector llWind(vector offset) - { - Verbose("Wind(" + offset + ")"); - return vector.ZERO_VECTOR; - } - public void llSetPrimitiveParams(list rule) - { - Verbose("SetPrimitiveParams(" + rule.ToString() + ")"); - } - public void llClearCameraParams() - { - Verbose("ClearCameraParams()"); - } - public integer llDetectedGroup(integer number) - { - Verbose("DetectedGroup(" + number + ")"); - return 0; - } - public void llForceMouselook(integer mouselook) - { - Verbose("ForceMouselook(" + mouselook + ")"); - } - public list llGetAnimationList(key id) - { - Verbose("GetAnimationList(" + id + ")"); - return new list(); - } - public list llGetBoundingBox(key mobject) - { - Verbose("GetBoundingBox(" + mobject + ")"); - return new list(); - } - public vector llGetCameraPos() - { - Verbose("GetCameraPos()"); - return vector.ZERO_VECTOR; - } - public rotation llGetCameraRot() - { - Verbose("GetCameraRot()"); - return rotation.ZERO_ROTATION; - } - public key llGetCreator() - { - key result = Properties.Settings.Default.AvatarKey; - Verbose("GetCreator()={0}",result); - return result; - } - public vector llGetGeometricCenter() - { - vector result = ZERO_VECTOR; - Verbose("GetGeometricCenter()={0}",result); - return result; - } - - public Float llGetWallclock() - { - Float result = (int)DateTime.Now.AddHours(-9.0).TimeOfDay.TotalSeconds; - Verbose("GetWallclock()={0}", result); - return result; - } - - public Float llGetGMTclock() - { - Float result = DateTime.Now.ToUniversalTime().TimeOfDay.TotalSeconds; - Verbose("GetGMTclock()={0}", result); - return result; - } - - public Float llGetMass() - { - Float result = 1.23; - Verbose("GetMass()={0}", result); - return result; - } - - public integer llGetNumberOfPrims() - { - integer result = 10; - Verbose("GetNumberOfPrims()={0}", result); - return result; - } - - public Float llGetObjectMass(key id) - { - Verbose("GetObjectMass(" + id + ")"); - return 0.0F; - } - public integer llGetObjectPermMask(integer mask) - { - Verbose("GetObjectPermMask(" + mask + ")"); - return 0; - } - public integer llGetParcelFlags(vector pos) - { - Verbose("GetParcelFlags(" + pos + ")"); - return 0; - } - public list llGetPrimitiveParams(list myparams) - { - Verbose("GetPrimitiveParams(" + myparams.ToString() + ")"); - return new list(); - } - public list llGetLinkPrimitiveParams(integer link, list myparams) + private ArrayList List2Buckets(list src, int stride) { - Verbose("GetLinkPrimitiveParams(" + link + "," + myparams.ToString() + ")"); + ArrayList buckets = null; + if ((src.Count % stride) == 0 && stride <= src.Count) + { + buckets = new ArrayList(); + for (int intI = 0; intI < src.Count; intI += stride) + { + object[] bucket = new object[stride]; + for (int intJ = 0; intJ < stride; intJ++) + bucket[intJ] = src[intI + intJ]; + buckets.Add(bucket); + } + } + return buckets; + } + + private list Buckets2List(ArrayList buckets, int stride) + { + object[] items = new object[buckets.Count * stride]; + for (int intI = 0; intI < buckets.Count; intI++) + { + for (int intJ = 0; intJ < stride; intJ++) + items[intI * stride + intJ] = ((object[])buckets[intI])[intJ]; + } + return new list(items); + } + + private class BucketComparer : IComparer + { + private integer ascending; + public BucketComparer(integer ascending) + { + this.ascending = ascending; + } + public int Compare(object x, object y) + { + object[] xx = x as object[]; + object[] yy = y as object[]; + + object A, B; + + if (ascending == TRUE) + { + A = xx[0]; + B = yy[0]; + } + else + { + B = xx[0]; + A = yy[0]; + } + + string strType = A.GetType().ToString(); + + if (((A is string) && (B is string)) || + ((A is SecondLife.String) && (B is SecondLife.String))) + return string.Compare(A.ToString(), B.ToString()); + + if ((A is SecondLife.integer) && (B is SecondLife.integer)) + return SecondLife.integer.Compare((SecondLife.integer)A, (SecondLife.integer)B); + + if ((A is SecondLife.Float) && (B is SecondLife.Float)) + return SecondLife.Float.Compare((SecondLife.Float)A, (SecondLife.Float)B); + + return 0; + } + } + #endregion + + #region String Functions + private list ParseString(String src, list separators, list spacers, bool blnKeepNulls) + { + list result = new list(); + int intFrom = 0; + string s = src; + for (int intI = 0; intI < s.Length; intI++) + { + string strTmp = s.Substring(intI); + bool blnFound = false; + for (int intJ = 0; intJ < separators.Count; intJ++) + { + string strSeparator = separators[intJ].ToString(); + if (strSeparator.Length == 0) + continue; // check this + if (strTmp.IndexOf(strSeparator) == 0) + { + string strBefore = s.Substring(intFrom, intI - intFrom); + if (strBefore != "" || blnKeepNulls) + result.Add(strBefore); + intI += strSeparator.Length - 1; + intFrom = intI + 1; + blnFound = true; + break; + } + } + + if (blnFound) + continue; + + for (int intJ = 0; intJ < spacers.Count; intJ++) + { + string strSpacer = spacers[intJ].ToString(); + if (strSpacer.Length == 0) + continue; // check this + if (strTmp.IndexOf(strSpacer) == 0) + { + string strBefore = s.Substring(intFrom, intI - intFrom); + if (strBefore != "" || blnKeepNulls) + result.Add(strBefore); + result.Add(strSpacer); + intI += strSpacer.Length - 1; + intFrom = intI + 1; + break; + } + } + } + string strLast = s.Substring(intFrom); + if (strLast != "" || blnKeepNulls) + result.Add(strLast); + return result; + } + + private string StringToBase64(string str) + { + byte[] data = Encoding.UTF8.GetBytes(str); + return Convert.ToBase64String(data); + } + + private string Base64ToString(string str) + { + byte[] data = Convert.FromBase64String(str); + int intLen = Array.IndexOf(data, (byte)0x00); + if (intLen < 0) + intLen = data.Length; + return Encoding.UTF8.GetString(data, 0, intLen); + } + + private int LookupBase64(string s, int intIndex) + { + if (intIndex < s.Length) + { + int intReturn = FastLookupBase64[s[intIndex]]; + if (intReturn == 0) + if (s[intIndex] != 'A') + throw new Exception(); + return intReturn; + } + else + return 0; + } + + #endregion + + #region Math Functions + + + private integer ModPow1(integer a, integer b, integer c) + { + return (int)Math.Pow((int)a, (int)b & (int)0xffff) % (int)c; + } + + private integer ModPow2(integer x, integer y, integer m) + { + if (!x) return 0; + integer k = 1 + (int)Math.Ceiling(Math.Log(Math.Abs(x)) / 0.69314718055994530941723212145818);//ceil(log2(x)) + integer w = 32; + integer p = w / k; + integer r = y / p; + integer f = y % p; + integer z = 1; + if (r) z = ModPow2(ModPow1(x, p, m), r, m); + if (f) z = (z * ModPow1(x, f, m)) % m; + return z; + } + + #endregion Math Functions + + private List GetListOfNumbers(list input) + { + List result = new List(); + for (int intI = 0; intI < input.Count; intI++) + { + object objI = input[intI]; + string strType = objI.GetType().ToString().Replace("LSLEditor.SecondLife+", ""); + switch (strType) + { + case "Float": + result.Add(Convert.ToDouble((Float)objI)); + break; + case "System.Int32": + result.Add(Convert.ToDouble((int)objI)); + break; + case "System.Double": + result.Add(Convert.ToDouble((double)objI)); + break; + case "integer": + result.Add(Convert.ToDouble((integer)objI)); + break; + default: + break; + } + } + return result; + } + + private double GetAverage(double[] data) + { + try + { + double DataTotal = 0; + for (int i = 0; i < data.Length; i++) + { + DataTotal += data[i]; + } + return SafeDivide(DataTotal, data.Length); + } + catch (Exception) { throw; } + } + + public double GetStandardDeviation(double[] num) + { + double Sum = 0.0, SumOfSqrs = 0.0; + for (int i = 0; i < num.Length; i++) + { + Sum += num[i]; + SumOfSqrs += Math.Pow(num[i], 2); + } + double topSum = (num.Length * SumOfSqrs) - (Math.Pow(Sum, 2)); + double n = (double)num.Length; + return Math.Sqrt(topSum / (n * (n - 1))); + } + + + private double SafeDivide(double value1, double value2) + { + double ret = 0; + try + { + if ((value1 == 0) || (value2 == 0)) { return ret; } + ret = value1 / value2; + } + catch { } + return ret; + } + + private byte HexToInt(byte b) + { + if (b >= '0' && b <= '9') + return (byte)(b - '0'); + else if ((b >= 'a' && b <= 'f') || (b >= 'A' && b <= 'F')) + return (byte)((b & 0x5f) - 0x37); + else + return 0; // error + } + + #endregion + + #region llFunctions + + public integer llAbs(integer val) + { + int intA = (int)Math.Abs((long)val); + Verbose("Abs(" + val + ")=" + intA); + return intA; + } + + public Float llAcos(Float val) + { + double dblA = Math.Acos(val); + Verbose("Acos(" + val + ")=" + dblA); + return dblA; + } + + public void llAddToLandBanList(key agent, Float hours) + { + Verbose("AddToLandBanList(" + agent + "," + hours + ")"); + if (m_LandBanList.ContainsKey(agent)) + m_LandBanList.Remove(agent); + m_LandBanList.Add(agent, hours); + } + + public void llAddToLandPassList(key avatar, Float hours) + { + Verbose("AddToLandPassList(" + avatar + "," + hours + ")"); + if (m_LandPassList.ContainsKey(avatar)) + m_LandPassList.Remove(avatar); + m_LandPassList.Add(avatar, hours); + } + + public void llAdjustSoundVolume(Float volume) + { + Verbose("AdjustSoundVolume(" + volume + ")"); + m_Volume = volume; + } + + public void llAllowInventoryDrop(integer add) + { + Verbose("AllowInventoryDrop(" + add + ")"); + } + + public Float llAngleBetween(rotation a, rotation b) + { + double Angle = 2 * Math.Acos((a.x * b.x + a.y * b.y + a.z * b.z + a.s * b.s) + / Math.Sqrt((a.x * a.x + a.y * a.y + a.z * a.z + a.s * a.s) * + (b.x * b.x + b.y * b.y + b.z * b.z + b.s * b.s))); + Verbose("AngleBetween(" + a + "," + b + ")=" + Angle); + return Angle; + } + + public void llApplyImpulse(vector force, integer local) + { + Verbose("ApplyImpulse(" + force + "," + local + ")"); + } + + public void llApplyRotationalImpulse(vector force, integer local) + { + Verbose("ApplyRotationalImpulse(" + force + "," + local + ")"); + } + + public Float llAsin(Float val) + { + double dblA = Math.Asin(val); + Verbose("Asin(" + val + ")=" + dblA); + return dblA; + } + + public Float llAtan2(Float y, Float x) + { + double dblA = Math.Atan2(y, x); + Verbose("Atan2(" + y + "," + x + ")=" + dblA); + return dblA; + } + + public void llAttachToAvatar(integer attachment) + { + Verbose("AttachToAvatar(" + attachment + ")"); + } + + public void llAttachToAvatar(key avatar, integer attachment) + { + Verbose("AttachToAvatar(" + avatar + "," + attachment + ")"); + } + + public key llAvatarOnSitTarget() + { + Verbose("AvatarOnSitTarget()"); + return new key(Guid.NewGuid()); + } + + public rotation llAxes2Rot(vector fwd, vector left, vector up) + { + Verbose("Axes2Rot(" + fwd + "," + left + "," + up + ")"); + return rotation.ZERO_ROTATION; + } + + public rotation llAxisAngle2Rot(vector axis, Float angle) + { + vector unit_axis = llVecNorm(axis); + double sine_half_angle = Math.Sin(angle / 2); + double cosine_half_angle = Math.Cos(angle / 2); + + rotation result = new rotation( + sine_half_angle * unit_axis.x, + sine_half_angle * unit_axis.y, + sine_half_angle * unit_axis.z, + cosine_half_angle); + + Verbose("AxisAngle2Rot({0},{1})={2}", axis, angle, result); + return result; + } + + public integer llBase64ToInteger(String _str) + { + int result; + + try + { + string s = _str; + byte[] data = new byte[4]; + + if (s.Length > 1) + { + data[3] = (byte)(LookupBase64(s, 0) << 2); + data[3] |= (byte)(LookupBase64(s, 1) >> 4); + } + + if (s.Length > 2) + { + data[2] = (byte)((LookupBase64(s, 1) & 0xf) << 4); + data[2] |= (byte)(LookupBase64(s, 2) >> 2); + } + + if (s.Length > 3) + { + data[1] = (byte)((LookupBase64(s, 2) & 0x7) << 6); + data[1] |= (byte)(LookupBase64(s, 3)); + } + + if (s.Length > 5) + { + data[0] = (byte)(LookupBase64(s, 4) << 2); + data[0] |= (byte)(LookupBase64(s, 5) >> 4); + } + + result = BitConverter.ToInt32(data, 0); + + //0 12 34 56 + //1 78 12 34 + //2 56 78 12 + //3 34 56 78 + + //4 12 34 56 + //5 78 12 34 + //6 56 78 12 + //7 34 56 78 + } + catch + { + result = (new Random()).Next(); + } + Verbose(@"Base64ToInteger(""{0}"")={1}", _str, result); + return result; + } + + public String llBase64ToString(String str) + { + string result = Base64ToString(str.ToString()); + Verbose(@"Base64ToString(""{0}"")=""{1}""", str, result); + return result; + } + + public void llBreakAllLinks() + { + host.llBreakAllLinks(); + Verbose("BreakAllLinks()"); + } + + public void llBreakLink(integer linknum) + { + host.llBreakLink(linknum); + Verbose("BreakLink({0})", linknum); + } + + public list llCSV2List(String _src) + { + string src = _src; + list result = new list(); + StringBuilder sb = new StringBuilder(); + int WithinAngelBracket = 0; + for (int intI = 0; intI < src.Length; intI++) + { + char chrC = src[intI]; + if (chrC == '<') + WithinAngelBracket++; + else if (chrC == '>') + WithinAngelBracket--; + + if (WithinAngelBracket == 0 && chrC == ',') + { + result.Add(sb.ToString()); + sb = new StringBuilder(); + } + else + { + sb.Append(src[intI]); + } + } + // dont forget the last one + result.Add(sb.ToString()); + + // remove the first space, if any + for (int intI = 0; intI < result.Count; intI++) + { + string strValue = result[intI].ToString(); + if (strValue == "") + continue; + if (strValue[0] == ' ') + result[intI] = strValue.Substring(1); + } + + Verbose(@"CSV2List(""{0}"")={1}", src, result.ToVerboseString()); + + return result; + } + + public list llCastRay(vector vStart, vector vEnd, list lOptions) + { + list result = new list(); + Verbose("CastRay({0}, {1}, {2})={3}", vStart, vEnd, lOptions.ToString(), result); + return result; + } + + public integer llCeil(Float val) + { + int intA = (int)Math.Ceiling(val); + Verbose("Ceiling(" + val + ")=" + intA); + return intA; + } + + public void llClearCameraParams() + { + Verbose("ClearCameraParams()"); + } + + public integer llClearLinkMedia(integer iFace) + { + Verbose("ClearLinkMedia({0})={1}", iFace, true); + return true; + } + + public integer llClearPrimMedia(integer face) + { + Verbose("ClearPrimMedia(" + face + ")"); + return 0; + } + + public void llCloseRemoteDataChannel(key channel) + { + host.llCloseRemoteDataChannel(channel); + Verbose("CloseRemoteDataChannel({0})", channel); + } + + public Float llCloud(vector offset) + { + Verbose("Cloud({0})", offset); + return 0.0; + } + + public void llCollisionFilter(String name, key id, integer accept) + { + Verbose("CollisionFilter(" + name + "," + id + "," + accept + ")"); + } + + public void llCollisionSound(String impact_sound, Float impact_volume) + { + Verbose("CollisionSound(" + impact_sound + "," + impact_volume + ")"); + } + + public void llCollisionSprite(String impact_sprite) + { + Verbose("CollisionSprite(" + impact_sprite + ")"); + } + + public Float llCos(Float theta) + { + double dblA = Math.Cos(theta); + Verbose("Cos(" + theta + ")=" + dblA); + return dblA; + } + + public void llCreateLink(key target, integer simulator) + { + Verbose("CreateLink(" + target + "," + simulator + ")"); + } + + public list llDeleteSubList(list _src, integer _start, integer _end) + { + int intLength = _src.Count; + + int start = _start; + int end = _end; + + list src = new list(_src); + + if (CorrectIt(intLength, ref start, ref end)) + { + if (start <= end) + { + for (int intI = start; intI <= end; intI++) + src[intI] = null; + } + else // excluding + { + for (int intI = 0; intI <= end; intI++) + src[intI] = null; + for (int intI = start; intI < intLength; intI++) + src[intI] = null; + } + } + list result = new list(); + for (int intI = 0; intI < src.Count; intI++) + { + if (src[intI] != null) + result.Add(src[intI]); + } + Verbose(string.Format("DeleteSubList({0},{1},{2})={3}", _src.ToVerboseString(), _start, _end, result.ToVerboseString())); + return result; + } + + public String llDeleteSubString(String _src, integer _start, integer _end) + { + char[] src = _src.ToString().ToCharArray(); + int start = _start; + int end = _end; + + int intLength = src.Length; + + if (CorrectIt(intLength, ref start, ref end)) + { + if (start <= end) + { + for (int intI = start; intI <= end; intI++) + src[intI] = '\0'; + } + else // excluding + { + for (int intI = 0; intI <= end; intI++) + src[intI] = '\0'; + for (int intI = start; intI < intLength; intI++) + src[intI] = '\0'; + } + } + StringBuilder result = new StringBuilder(); + for (int intI = 0; intI < src.Length; intI++) + { + if (src[intI] != '\0') + result.Append(src[intI]); + } + + Verbose(string.Format(@"DeleteSubString(""{0}"",{1},{2})=""{3}""", _src, _start, _end, result)); + return result.ToString(); + } + + public void llDetachFromAvatar() + { + Verbose("DetachFromAvatar()"); + } + + public void llDetachFromAvatar(key avatar) + { + Verbose("DetachFromAvatar({0})", avatar); + } + + public vector llDetectedGrab(integer number) + { + Verbose("DetectedGrab(" + number + ")"); + return vector.ZERO_VECTOR; + } + + public integer llDetectedGroup(integer number) + { + Verbose("DetectedGroup(" + number + ")"); + return 0; + } + + public key llDetectedKey(integer number) + { + key k = new key(Properties.Settings.Default.AvatarKey); + Verbose("DetectedKey({0})={1}", number, k); + return k; + } + + public integer llDetectedLinkNumber(integer number) + { + integer result = 0; + Verbose("DetectedLinkNumber({0})={1}", number, result); + return result; + } + + public String llDetectedName(integer number) + { + string result = Properties.Settings.Default.AvatarName; + Verbose("DetectedName({0})={1}", number, result); + return result; + } + + public key llDetectedOwner(integer number) + { + key result = new key(Properties.Settings.Default.AvatarKey); + Verbose("DetectedOwner({0})={1}", number, result); + return result; + } + + public vector llDetectedPos(integer number) + { + Verbose("DetectedPos(" + number + ")"); + return vector.ZERO_VECTOR; + } + + public rotation llDetectedRot(integer number) + { + Verbose("DetectedRot(" + number + ")"); + return rotation.ZERO_ROTATION; + } + + public vector llDetectedTouchBinormal(integer index) + { + Verbose("llDetectedTouchBinormal({0})", index); + return new vector(); + } + + public integer llDetectedTouchFace(integer index) + { + Verbose("llDetectedTouchFace({0})", index); + return 0; + } + + public vector llDetectedTouchNormal(integer index) + { + Verbose("llDetectedTouchNormal({0})", index); + return new vector(); + } + + public vector llDetectedTouchPos(integer index) + { + Verbose("llDetectedTouchPos({0})", index); + return new vector(); + } + + public vector llDetectedTouchST(integer index) + { + Verbose("llDetectedTouchST({0})", index); + return new vector(); + } + + public vector llDetectedTouchUV(integer index) + { + Verbose("llDetectedTouchUV({0})", index); + return new vector(); + } + + public integer llDetectedType(integer number) + { + integer result = AGENT; + Verbose("DetectedType({0})={1}", number, result); + return result; + } + + public vector llDetectedVel(integer number) + { + Verbose("DetectedVel(" + number + ")"); + return vector.ZERO_VECTOR; + } + + public void llDialog(key avatar, String message, list buttons, integer channel) + { + Verbose("Dialog({0},{1},{2},{3})", avatar, message, buttons.ToString(), channel); + host.llDialog(avatar, message, buttons, channel); + } + + public void llDie() + { + Verbose("llDie()"); + host.Die(); + } + + public String llDumpList2String(list src, String separator) + { + StringBuilder result = new StringBuilder(); + for (int intI = 0; intI < src.Count; intI++) + { + if (intI > 0) + result.Append(separator.ToString()); + result.Append(src[intI].ToString()); + } + Verbose(@"DumpList2String({0},""{1}"")=""{2}""", src.ToVerboseString(), separator, result.ToString()); + return result.ToString(); + } + + public integer llEdgeOfWorld(vector pos, vector dir) + { + Verbose("EdgeOfWorld(" + pos + "," + dir + ")"); + return 0; + } + + public void llEjectFromLand(key pest) + { + Verbose("EjectFromLand(" + pest + ")"); + } + + public void llEmail(String address, String subject, String message) + { + Verbose("Email(" + address + "," + subject + "," + message + ")"); + host.Email(address, subject, message); + } + + public String llEscapeURL(String url) + { + StringBuilder sb = new StringBuilder(); + byte[] data = Encoding.UTF8.GetBytes(url.ToString()); + for (int intI = 0; intI < data.Length; intI++) + { + byte chrC = data[intI]; + if ((chrC >= 'a' && chrC <= 'z') || + (chrC >= 'A' && chrC <= 'Z') || + (chrC >= '0' && chrC <= '9')) + sb.Append((char)chrC); + else + sb.AppendFormat("%{0:X2}", (int)chrC); + } + Verbose(string.Format(@"EscapeURL(""{0}"")=""{1}""", url, sb.ToString())); + return sb.ToString(); + } + + public rotation llEuler2Rot(vector v) + { + v /= 2.0; + double ax = Math.Sin(v.x); + double aw = Math.Cos(v.x); + double by = Math.Sin(v.y); + double bw = Math.Cos(v.y); + double cz = Math.Sin(v.z); + double cw = Math.Cos(v.z); + rotation rot = new rotation(aw * by * cz + ax * bw * cw, + aw * by * cw - ax * bw * cz, + aw * bw * cz + ax * by * cw, + aw * bw * cw - ax * by * cz); + Verbose("Euler2Rot(" + v + ")=" + rot); + return rot; + } + + public Float llFabs(Float val) + { + double dblA = Math.Abs(val); + Verbose("Fabs(" + val + ")=" + dblA); + return dblA; + } + + public integer llFloor(Float val) + { + int intA = (int)Math.Floor(val); + Verbose("Floor(" + val + ")=" + intA); + return intA; + } + + public void llForceMouselook(integer mouselook) + { + Verbose("ForceMouselook(" + mouselook + ")"); + } + + public Float llFrand(Float max) + { + double dblValue = max * m_random.NextDouble(); + Verbose("Frand(" + max + ")=" + dblValue); + return dblValue; + } + + public vector llGetAccel() + { + Verbose("GetAccel()"); + return vector.ZERO_VECTOR; + } + + public integer llGetAgentInfo(key id) + { + Verbose("GetAgentInfo(" + id + ")"); + return 0; + } + + public String llGetAgentLanguage(key avatar) + { + string strLan = "en-us"; + Verbose("llGetAgentLanguage({0})=\"{1}\"", avatar, strLan); + return strLan; + } + + public vector llGetAgentSize(key id) + { + Verbose("GetAgentSize(" + id + ")"); + return vector.ZERO_VECTOR; + } + + public Float llGetAlpha(integer face) + { + Verbose("GetAlpha(" + face + ")"); + return 0F; + } + + public Float llGetAndResetTime() + { + // get time + double time = llGetTime(); + Verbose("GetAndResetTime()=" + time); + // reset time + llResetTime(); + return time; + } + + public String llGetAnimation(key id) + { + Verbose("GetAnimation(" + id + ")"); + return ""; + } + + public list llGetAnimationList(key id) + { + Verbose("GetAnimationList(" + id + ")"); return new list(); } + public integer llGetAttached() + { + Verbose("GetAttached()"); + return 0; + } + + public list llGetBoundingBox(key mobject) + { + Verbose("GetBoundingBox(" + mobject + ")"); + return new list(); + } + + public vector llGetCameraPos() + { + Verbose("GetCameraPos()"); + return vector.ZERO_VECTOR; + } + + public rotation llGetCameraRot() + { + Verbose("GetCameraRot()"); + return rotation.ZERO_ROTATION; + } + + public vector llGetCenterOfMass() + { + Verbose("GetCenterOfMass()"); + return vector.ZERO_VECTOR; + } + + public vector llGetColor(integer face) + { + Verbose("GetColor(" + face + ")"); + return vector.ZERO_VECTOR; + } + + public key llGetCreator() + { + key result = Properties.Settings.Default.AvatarKey; + Verbose("GetCreator()={0}", result); + return result; + } + + public String llGetDate() + { + string result = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd"); + Verbose("GetDate()=" + result); + return result; + } + + public string llGetDisplayName(key kAvatarID) + { + string result = ""; + Verbose("GetDisplayName({0})={1}", kAvatarID, result); + return result; + } + + public Float llGetEnergy() + { + Float result = 1.23; + Verbose("GetEnergy()={0}", result); + return result; + } + + public string llGetEnv(string sDataRequest) + { + string result; + switch (sDataRequest) + { + case "sim_channel": + result = "Second Life Server"; + break; + case "sim_version": + result = "11.11.09.244706"; + break; + default: + result = ""; + break; + } + Verbose("GetEnv({0})={1}", sDataRequest, result); + return result; + } + + public vector llGetForce() + { + Verbose("GetForce()"); + return vector.ZERO_VECTOR; + } + + public integer llGetFreeMemory() + { + Verbose("GetFreeMemory()"); + return 16000; + } + + public integer llGetFreeURLs() + { + return 0; + } + + public Float llGetGMTclock() + { + Float result = DateTime.Now.ToUniversalTime().TimeOfDay.TotalSeconds; + Verbose("GetGMTclock()={0}", result); + return result; + } + + public vector llGetGeometricCenter() + { + vector result = ZERO_VECTOR; + Verbose("GetGeometricCenter()={0}", result); + return result; + } + + public String llGetHTTPHeader(key request_id, String header) + { + return "not-implemented"; + } + + public key llGetInventoryCreator(String item) + { + key result = Properties.Settings.Default.AvatarKey; + Verbose(@"GetInventoryCreator(""{0}"")={1}", item, result); + return result; + } + + public key llGetInventoryKey(String name) + { + key result = host.GetInventoryKey(name); + Verbose("GetInventoryKey({0})={1}", name, result); + return result; + } + + public String llGetInventoryName(integer type, integer number) + { + string result = host.GetInventoryName(type, number); + Verbose("GetInventoryName({0},{1})={2}", type, number, result); + return result; + } + + public integer llGetInventoryNumber(integer type) + { + int result = host.GetInventoryNumber(type); + Verbose("GetInventoryNumber({0})={1}", type, result); + return result; + } + + public integer llGetInventoryPermMask(String item, integer mask) + { + Verbose("GetInventoryPermMask(" + item + "," + mask + ")"); + return 0; + } + + public integer llGetInventoryType(String name) + { + integer result = host.GetInventoryType(name); + Verbose("GetInventoryType({0})={1}", name, result); + return result; + } + + public key llGetKey() + { + key result = host.GetKey(); + Verbose("GetKey()=" + result.ToString()); + return result; + } + + public key llGetLandOwnerAt(vector pos) + { + Verbose("GetLandOwnerAt(" + pos + ")"); + return new key(Guid.NewGuid()); + } + + public key llGetLinkKey(integer linknum) + { + Verbose("GetLinkKey(" + linknum + ")"); + return new key(Guid.NewGuid()); + } + + public list llGetLinkMedia(integer iLinkNumber, integer iFace, list lParameters) + { + list result = new list(); + Verbose("GetLinkMedia({0}, {1}, {2})={3}", iLinkNumber, iFace, lParameters.ToString(), result); + return result; + } + + public String llGetLinkName(integer linknum) + { + Verbose("GetLinkName(" + linknum + ")"); + return ""; + } + + public integer llGetLinkNumber() + { + Verbose("GetLinkNumber()"); + return 0; + } + public integer llGetLinkNumberOfSides(integer link) { integer result = 6; @@ -3116,89 +1874,643 @@ namespace LSLEditor return result; } - public vector llGetRootPosition() - { - Verbose("GetRootPosition()"); - return vector.ZERO_VECTOR; - } - public rotation llGetRootRotation() - { - Verbose("GetRootRotation()"); - return rotation.ZERO_ROTATION; - } - public String llGetSimulatorHostname() - { - Verbose("GetSimulatorHostname()"); - return ""; - } - public key llHTTPRequest(String url, list parameters, String body) - { - key result = host.Http(url, parameters, body); - Verbose(@"HTTPRequest(""{0}"",{1},""{2}"")=""{3}""",url,parameters.ToVerboseString(),body,result); - return result; - } + public list llGetLinkPrimitiveParams(integer link, list myparams) + { + Verbose("GetLinkPrimitiveParams(" + link + "," + myparams.ToString() + ")"); + return new list(); + } - public String llXorBase64StringsCorrect(String s1, String s2) - { - string S1 = Base64ToString(s1.ToString()); - string S2 = Base64ToString(s2.ToString()); - int intLength = S1.Length; - if (S2.Length == 0) - S2 = " "; - while(S2.Length < intLength) - S2 += S2; - S2 = S2.Substring(0, intLength); - StringBuilder sb = new StringBuilder(); - for (int intI = 0; intI < intLength; intI++) - sb.Append((char)(S1[intI] ^ S2[intI])); - string result = StringToBase64(sb.ToString()); - Verbose(@"XorBase64StringsCorrect(""{0}"",""{1}"")=""{2}""",s1,s2,result); - return result; - } + public integer llGetListEntryType(list src, integer index) + { + integer intReturn; - private string StringToBase64(string str) - { - byte[] data = Encoding.UTF8.GetBytes(str); - return Convert.ToBase64String(data); - } + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + intReturn = 0; + else + { + switch (src[index].GetType().ToString().Replace("LSLEditor.SecondLife+", "")) + { + case "System.Double": + case "Float": + intReturn = TYPE_FLOAT; + break; + case "System.String": + case "String": + intReturn = TYPE_STRING; + break; + case "System.Int32": + case "integer": + intReturn = TYPE_INTEGER; + break; + case "key": + intReturn = TYPE_KEY; + break; + case "vector": + intReturn = TYPE_VECTOR; + break; + case "rotation": + intReturn = TYPE_ROTATION; + break; + default: + intReturn = TYPE_INVALID; + break; + } + } + Verbose("GetListEntryType({0},{1})={2}", src.ToVerboseString(), index, intReturn); + return intReturn; + } - public String llStringToBase64(String str) - { - string result = StringToBase64(str.ToString()); - Verbose(@"StringToBase64(""{0}"")=""{1}""", str, result); - return result; - } + public integer llGetListLength(list src) + { + integer result = src.Count; + Verbose("GetListLength({0})={1}", src.ToVerboseString(), result); + return result; + } - private string Base64ToString(string str) - { - byte[] data = Convert.FromBase64String(str); - int intLen = Array.IndexOf(data, (byte)0x00); - if (intLen < 0) - intLen = data.Length; - return Encoding.UTF8.GetString(data,0,intLen); - } + public vector GetLocalPos() + { + // no verbose + return m_pos; + } - public String llBase64ToString(String str) - { - string result = Base64ToString(str.ToString()); - Verbose(@"Base64ToString(""{0}"")=""{1}""",str,result); - return result; - } + public vector llGetLocalPos() + { + Verbose("GetLocalPos()={0}", m_pos); + return m_pos; + } - public String llIntegerToBase64(integer number) - { - byte[] data = new byte[4]; - data[3] = (byte)(number & 0xff); - data[2] = (byte)((number >> 8) & 0xff); - data[1] = (byte)((number >> 16) & 0xff); - data[0] = (byte)((number >> 24) & 0xff); - string result = Convert.ToBase64String(data); - Verbose(@"IntegerToBase64({0})=""{1}""", number, result); - return result; - } + public rotation llGetLocalRot() + { + Verbose("GetLocalRot()={0}", m_rotlocal); + return m_rotlocal; + } + public Float llGetMass() + { + Float result = 1.23; + Verbose("GetMass()={0}", result); + return result; + } - static readonly int[] FastLookupBase64 = + public Float llGetMassMKS() + { + Float result = 1.23; + Verbose("llGetMassMKS()={0}", result); + return result; + } + + public integer llGetMemoryLimit() + { + return 65536; + } + + public void llGetNextEmail(String address, String subject) + { + Verbose("GetNextEmail(" + address + "," + subject + ")"); + } + + public key llGetNotecardLine(String name, integer line) + { + key k = host.GetNotecardLine(name, line); + Verbose(@"GetNotecardLine(""{0}"",{1})={2}", name, line, k); + return k; + } + + public key llGetNumberOfNotecardLines(String name) + { + key k = host.GetNumberOfNotecardLines(name); + Verbose(@"GetNumberOfNotecardLines(""{0}"")={1}", name, k); + return k; + } + + public integer llGetNumberOfPrims() + { + integer result = 10; + Verbose("GetNumberOfPrims()={0}", result); + return result; + } + + public integer llGetNumberOfSides() + { + integer result = 6; + Verbose("GetNumberOfSides()={0}", result); + return result; + } + + public String llGetObjectDesc() + { + string result = host.GetObjectDescription(); + Verbose("llGetObjectDesc()={0}", result); + return result; + } + + public list llGetObjectDetails(key id, list _params) + { + list result = new list(); + for (int intI = 0; intI < _params.Count; intI++) + { + if (!(_params[intI] is integer)) + continue; + switch ((int)(integer)_params[intI]) + { + case 1: //OBJECT_NAME: + result.Add((SecondLife.String)host.GetObjectName(new Guid(id.guid))); + break; + case 2: //OBJECT_DESC: + result.Add((SecondLife.String)host.GetObjectDescription(new Guid(id.guid))); + break; + case 3://OBJECT_POS: + break; + case 4://OBJECT_ROT: + break; + case 5://OBJECT_VELOCITY: + break; + case 6://OBJECT_OWNER: + break; + case 7://OBJECT_GROUP: + break; + case 8://OBJECT_CREATOR: + break; + default: + break; + } + } + Verbose(@"llGetObjectDetails({0},{1})={2}", id, _params, result); + return result; + } + + public Float llGetObjectMass(key id) + { + Verbose("GetObjectMass(" + id + ")"); + return 0.0F; + } + + public String llGetObjectName() + { + string result = host.GetObjectName(); + Verbose("llGetObjectName()={0}", result); + return result; + } + + public integer llGetObjectPermMask(integer mask) + { + Verbose("GetObjectPermMask(" + mask + ")"); + return 0; + } + + // added 4 mei 2007 + public integer llGetObjectPrimCount(key id) + { + Verbose("llGetObjectPrimCount(" + id + ")"); + return 0; + } + + public vector llGetOmega() + { + Verbose("GetOmega()"); + return vector.ZERO_VECTOR; + } + + public key llGetOwner() + { + key k = new key(Properties.Settings.Default.AvatarKey); + Verbose("GetOwner()=" + k); + return k; + } + + public key llGetOwnerKey(key id) + { + key k = llGetOwner(); + Verbose("GetOwnerKey(" + id + ")=" + k); + return k; + } + + /* + PARCEL_DETAILS_NAME 0 The name of the parcel. 63 Characters string + PARCEL_DETAILS_DESC 1 The description of the parcel. 127 Characters string + PARCEL_DETAILS_OWNER 2 The parcel owner's key. (36 Characters) key + PARCEL_DETAILS_GROUP 3 The parcel group's key. (36 Characters) key + PARCEL_DETAILS_AREA 4 The parcel's area, in sqm. (5 Characters) integer + */ + public list llGetParcelDetails(vector pos, list details) + { + list result = new list(); + for (int intI = 0; intI < details.Count; intI++) + { + if (details[intI] is integer) + { + switch ((int)(integer)details[intI]) + { + case 0: // PARCEL_DETAILS_NAME: + result.Add(Properties.Settings.Default.ParcelName); + break; + case 1: // PARCEL_DETAILS_DESC: + result.Add(Properties.Settings.Default.ParcelDescription); + break; + case 2: //PARCEL_DETAILS_OWNER: + result.Add(new key(Properties.Settings.Default.ParcelOwner)); + break; + case 3: //PARCEL_DETAILS_GROUP: + result.Add(new key(Properties.Settings.Default.ParcelGroup)); + break; + case 4: // PARCEL_DETAILS_AREA: + result.Add(new integer(Properties.Settings.Default.ParcelArea)); + break; + default: + break; + } + } + } + Verbose("llGetParcelDetails({0},{1})={2}", pos, details.ToVerboseString(), result.ToVerboseString()); + return result; + } + + public integer llGetParcelFlags(vector pos) + { + Verbose("GetParcelFlags(" + pos + ")"); + return 0; + } + + public integer llGetParcelMaxPrims(vector pos, integer sim_wide) + { + Verbose("llGetParcelMaxPrims(" + pos + "," + sim_wide + ")"); + return 0; + } + + public integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) + { + Verbose("llGetParcelPrimCount(" + pos + "," + category + "," + sim_wide + ")"); + return 0; + } + + public list llGetParcelPrimOwners(vector pos) + { + list result = new list(new object[] { Properties.Settings.Default.AvatarKey, 10 }); + Verbose("llGetParcelPrimOwners({0})={1}", pos, result); + return result; + } + + public integer llGetPermissions() + { + integer perm = + PERMISSION_DEBIT + | PERMISSION_TAKE_CONTROLS + | PERMISSION_TRIGGER_ANIMATION + | PERMISSION_ATTACH + | PERMISSION_CHANGE_LINKS + | PERMISSION_TRACK_CAMERA + | PERMISSION_CONTROL_CAMERA; + + Verbose("GetPermissions()=" + perm); + return perm; + } + + public key llGetPermissionsKey() + { + Verbose("GetPermissionsKey()"); + return new key(Guid.NewGuid()); + } + + public list llGetPhysicsMaterial() + { + Verbose("GetPhysicalMaterial()"); + return new list(); + } + + public vector llGetPos() + { + Verbose("GetPos()=" + m_pos); + return m_pos; + } + + public list llGetPrimMediaParams(integer face, list myparams) + { + Verbose("GetPrimMediaParams(" + face + "," + myparams.ToString() + ")"); + return new list(); + } + + public list llGetPrimitiveParams(list myparams) + { + Verbose("GetPrimitiveParams(" + myparams.ToString() + ")"); + return new list(); + } + + // 334 + public integer llGetRegionAgentCount() + { + Verbose("llGetRegionAgentCount()"); + return 0; + } + + public vector llGetRegionCorner() + { + System.Drawing.Point point = Properties.Settings.Default.RegionCorner; + vector RegionCorner = new vector(point.X, point.Y, 0); + Verbose("GetRegionCorner()" + RegionCorner); + return RegionCorner; + } + + public Float llGetRegionFPS() + { + Verbose("GetRegionFPS()=" + Properties.Settings.Default.RegionFPS); + return Properties.Settings.Default.RegionFPS; + } + + public integer llGetRegionFlags() + { + Verbose("GetRegionFlags()"); + return 0; + } + + public String llGetRegionName() + { + Verbose("GetRegionName()=" + Properties.Settings.Default.RegionName); + return Properties.Settings.Default.RegionName; + } + + public Float llGetRegionTimeDilation() + { + Verbose("GetRegionTimeDilation()"); + return 0.9; + } + + public vector llGetRootPosition() + { + Verbose("GetRootPosition()"); + return vector.ZERO_VECTOR; + } + + public rotation llGetRootRotation() + { + Verbose("GetRootRotation()"); + return rotation.ZERO_ROTATION; + } + + public rotation llGetRot() + { + Verbose("GetRot()=" + m_rot); + return m_rot; + } + + public integer llGetSPMaxMemory() + { + return 65536; + } + + public vector llGetScale() + { + Verbose("GetScale()=" + m_scale); + return m_scale; + } + + public String llGetScriptName() + { + string result = host.GetScriptName(); + Verbose("GetScriptName()=" + result); + return result; + } + + public integer llGetScriptState(String name) + { + Verbose("GetScriptState(" + name + ")"); + return 0; + } + + public String llGetSimulatorHostname() + { + Verbose("GetSimulatorHostname()"); + return ""; + } + + public integer llGetStartParameter() + { + Verbose("GetStartParameter()=" + m_start_parameter); + return m_start_parameter; + } + + public integer llGetStatus(integer status) + { + Verbose("GetStatus(" + status + ")"); + return 0; + } + + public String llGetSubString(String _src, integer _start, integer _end) + { + string src = _src; + int start = _start; + int end = _end; + + StringBuilder result = new StringBuilder(); + + int intLength = src.Length; + + if (CorrectIt(intLength, ref start, ref end)) + { + if (start <= end) + { + for (int intI = start; intI <= end; intI++) + result.Append(src[intI]); + } + else // excluding + { + for (int intI = 0; intI <= end; intI++) + result.Append(src[intI]); + for (int intI = start; intI < intLength; intI++) + result.Append(src[intI]); + } + } + Verbose(string.Format(@"GetSubString(""{0}"",{1},{2})=""{3}""", _src, _start, _end, result)); + return result.ToString(); + } + + public vector llGetSunDirection() + { + Verbose("GetSunDirection()"); + return vector.ZERO_VECTOR; + } + + public String llGetTexture(integer face) + { + Verbose("GetTexture(" + face + ")"); + return ""; + } + + public vector llGetTextureOffset(integer side) + { + Verbose("GetTextureOffset(" + side + ")"); + return vector.ZERO_VECTOR; + } + + public Float llGetTextureRot(integer side) + { + Verbose("GetTextureRot(" + side + ")"); + return 0.0; + } + + public vector llGetTextureScale(integer side) + { + Verbose("GetTextureScale(" + side + ")"); + return vector.ZERO_VECTOR; + } + + public Float llGetTime() + { + TimeSpan span = DateTime.Now.ToUniversalTime() - m_DateTimeScriptStarted; + Verbose("GetTime()=" + span.TotalSeconds); + return span.TotalSeconds; + } + + public Float llGetTimeOfDay() + { + Verbose("GetTimeOfDay()"); + // dummy + return llGetTime(); + } + + public string llGetTimestamp() + { + string strTimestamp = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.ffffffZ", System.Globalization.DateTimeFormatInfo.InvariantInfo); + Verbose("GetTimestamp()=" + strTimestamp); + return strTimestamp; + } + + public vector llGetTorque() + { + Verbose("GetTorque()"); + return vector.ZERO_VECTOR; + } + + public integer llGetUnixTime() + { + DateTime date_time_base = new DateTime(1970, 1, 1, 0, 0, 0, 0); + TimeSpan span = DateTime.Now.ToUniversalTime() - date_time_base; + Verbose("GetUnixTime()=" + span.TotalSeconds); + return (int)span.TotalSeconds; + } + + public integer llGetUsedMemory() + { + return 65536; + } + + public string llGetUsername(key kAvatarID) + { + //TODO Find a dummy username. + string result = ""; + Verbose("GetUsername({0})={1}", kAvatarID, result); + return result; + } + + public vector llGetVel() + { + Verbose("GetVel()"); + return vector.ZERO_VECTOR; + } + + public Float llGetWallclock() + { + Float result = (int)DateTime.Now.AddHours(-9.0).TimeOfDay.TotalSeconds; + Verbose("GetWallclock()={0}", result); + return result; + } + + public void llGiveInventory(key destination, String inventory) + { + Verbose("GiveInventory(" + destination + "," + inventory + ")"); + } + + public void llGiveInventoryList(key destination, String category, list inventory) + { + Verbose("GiveInventoryList(" + destination + "," + category + "," + inventory.ToString() + ")"); + } + + public integer llGiveMoney(key destination, integer amount) + { + Verbose("GiveMoney(" + destination + "," + amount + ")"); + return 0; + } + + public Float llGround(vector offset) + { + Float ground = 25.0; + Verbose("Ground(" + offset + ")=" + ground); + return ground; + } + + public vector llGroundContour(vector offset) + { + Verbose("GroundContour(" + offset + ")"); + return vector.ZERO_VECTOR; + } + + public vector llGroundNormal(vector offset) + { + vector GroundNormal = new vector(0, 0, 1); + Verbose("GroundNormal(" + offset + ")=" + GroundNormal); + return GroundNormal; + } + + public void llGroundRepel(Float height, integer water, Float tau) + { + Verbose("GroundRepel(" + height + "," + water + "," + tau + ")"); + } + + public vector llGroundSlope(vector offset) + { + Verbose("GroundSlope:" + offset); + return vector.ZERO_VECTOR; + } + + public key llHTTPRequest(String url, list parameters, String body) + { + key result = host.Http(url, parameters, body); + Verbose(@"HTTPRequest(""{0}"",{1},""{2}"")=""{3}""", url, parameters.ToVerboseString(), body, result); + return result; + } + + //348 + public void llHTTPResponse(key request_id, integer status, String body) + { + } + + public String llInsertString(String _dst, integer _position, String _src) + { + string dst = _dst; + string src = _src; + int position = _position; + string result; + + if (position < 0) + position = 0; + + if (position < dst.Length) + result = dst.Substring(0, position) + src + dst.Substring(position); + else + result = dst + src; + Verbose(@"InsertString(""{0}"",{1},""{2}"")=""{3}""", dst, position, src, result); + return result; + } + + public void llInstantMessage(key user, String message) + { + Verbose("InstantMessage(" + user + "," + message + ")"); + } + + public String llIntegerToBase64(integer number) + { + byte[] data = new byte[4]; + data[3] = (byte)(number & 0xff); + data[2] = (byte)((number >> 8) & 0xff); + data[1] = (byte)((number >> 16) & 0xff); + data[0] = (byte)((number >> 24) & 0xff); + string result = Convert.ToBase64String(data); + Verbose(@"IntegerToBase64({0})=""{1}""", number, result); + return result; + } + + static readonly int[] FastLookupBase64 = {// 0 1 2 3 4 5 6 7 8 9 A B C D E F 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 @@ -3217,634 +2529,1578 @@ namespace LSLEditor 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // F0 - private int LookupBase64(string s, int intIndex) - { - if (intIndex < s.Length) - { - int intReturn = FastLookupBase64[s[intIndex]]; - if (intReturn == 0) - if (s[intIndex] != 'A') - throw new Exception(); - return intReturn; - } - else - return 0; - } + public String llKey2Name(key id) + { + string strName = "*unknown*"; + if (Properties.Settings.Default.AvatarKey == id) + strName = Properties.Settings.Default.AvatarName; + Verbose("Key2Name(" + id + ")=" + strName); + return strName; + } - public integer llBase64ToInteger(String _str) - { - int result; + public void llLinkParticleSystem(integer link, list parameters) + { + Verbose("LinkParticleSystem(" + link + "," + parameters.ToString() + ")"); + } - try - { - string s = _str; - byte[] data = new byte[4]; + public void llLinkSitTarget(integer iLinkNumber, vector vOffset, rotation rRotation) + { + Verbose("LinkSitTarget({0}, {1}, {2})", iLinkNumber, vOffset, rRotation); + } - if (s.Length > 1) - { - data[3] = (byte)( LookupBase64(s, 0) << 2); - data[3] |= (byte)( LookupBase64(s, 1) >> 4); - } + public String llList2CSV(list src) + { + StringBuilder result = new StringBuilder(); + for (int intI = 0; intI < src.Count; intI++) + { + if (intI > 0) + result.Append(", "); + result.Append(src[intI].ToString()); + } + Verbose(@"List2CSV({0})=""{1}""", src.ToVerboseString(), result.ToString()); + return result.ToString(); + } - if (s.Length > 2) - { - data[2] = (byte)((LookupBase64(s, 1) & 0xf) << 4); - data[2] |= (byte)( LookupBase64(s, 2) >> 2); - } + public Float llList2Float(list src, integer index) + { + Float result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = 0.0; + else + result = (Float)src[index].ToString(); + Verbose("List2Float({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - if (s.Length > 3) - { - data[1] = (byte)((LookupBase64(s, 2) & 0x7) << 6); - data[1] |= (byte)( LookupBase64(s, 3)); - } + public integer llList2Integer(list src, integer index) + { + integer result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = 0; + else + result = (integer)src[index].ToString(); + Verbose("List2Integer({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - if (s.Length > 5) - { - data[0] = (byte)( LookupBase64(s, 4) << 2); - data[0] |= (byte)( LookupBase64(s, 5) >> 4); - } + public key llList2Key(list src, integer index) + { + key result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = NULL_KEY; + else + result = (key)src[index].ToString(); + Verbose("List2Key({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - result = BitConverter.ToInt32(data, 0); + // ok + public list llList2List(list src, integer _start, integer _end) + { + int intLength = src.Count; - //0 12 34 56 - //1 78 12 34 - //2 56 78 12 - //3 34 56 78 + int start = _start; + int end = _end; - //4 12 34 56 - //5 78 12 34 - //6 56 78 12 - //7 34 56 78 - } - catch - { - result = (new Random()).Next(); - } - Verbose(@"Base64ToInteger(""{0}"")={1}", _str, result); - return result; - } + list result = new list(); - /* -0 LIST_STAT_RANGE Returns the range. -1 LIST_STAT_MIN Retrieves the smallest number. -2 LIST_STAT_MAX Retrieves the largest number. -3 LIST_STAT_MEAN Retrieves the mean (average). -4 LIST_STAT_MEDIAN Retrieves the median number. -5 LIST_STAT_STD_DEV Calculates the standard deviation. -6 LIST_STAT_SUM Calculates the sum. -7 LIST_STAT_SUM_SQUARES Calculates the sum of the squares. -8 LIST_STAT_NUM_COUNT Retrieves the amount of float and integer elements. Theoretically similar to llGetListLength, except LL states that this function ignores all non-integer and non-float elements. Therefore, this is a useful tool for mixed lists of numbers and non-numbers. -9 LIST_STAT_GEOMETRIC_MEAN Calculates the geometric mean. All numbers must be greater than zero for this to work, according to LL. - */ + if (CorrectIt(intLength, ref start, ref end)) + { + if (start <= end) + { + for (int intI = start; intI <= end; intI++) + result.Add(src[intI]); + } + else // excluding + { + for (int intI = 0; intI <= end; intI++) + result.Add(src[intI]); + for (int intI = start; intI < intLength; intI++) + result.Add(src[intI]); + } + } - private List GetListOfNumbers(list input) - { - List result = new List(); - for (int intI = 0; intI < input.Count; intI++) - { - object objI = input[intI]; - string strType = objI.GetType().ToString().Replace("LSLEditor.SecondLife+", ""); - switch (strType) - { - case "Float": - result.Add(Convert.ToDouble((Float)objI)); - break; - case "System.Int32": - result.Add(Convert.ToDouble((int)objI)); - break; - case "System.Double": - result.Add(Convert.ToDouble((double)objI)); - break; - case "integer": - result.Add(Convert.ToDouble((integer)objI)); - break; - default: - break; - } - } - return result; - } + Verbose(string.Format(@"List2List(""{0}"",{1},{2})=""{3}""", src, _start, _end, result)); + return result; + } - private double GetAverage(double[] data) - { - try - { - double DataTotal = 0; - for (int i = 0; i < data.Length; i++) - { - DataTotal += data[i]; - } - return SafeDivide(DataTotal, data.Length); - } - catch (Exception) { throw; } - } + // ok + public list llList2ListStrided(list src, integer _start, integer _end, integer stride) + { + int intLength = src.Count; - public double GetStandardDeviation(double[] num) - { - double Sum = 0.0, SumOfSqrs = 0.0; - for (int i = 0; i < num.Length; i++) - { - Sum += num[i]; - SumOfSqrs += Math.Pow(num[i], 2); - } - double topSum = (num.Length * SumOfSqrs) - (Math.Pow(Sum, 2)); - double n = (double)num.Length; - return Math.Sqrt(topSum / (n * (n - 1))); - } + int start = _start; + int end = _end; + list temp = new list(); - private double SafeDivide(double value1, double value2) - { - double ret = 0; - try - { - if ((value1 == 0) || (value2 == 0)) { return ret; } - ret = value1 / value2; - } - catch { } - return ret; - } + if (CorrectIt(intLength, ref start, ref end)) + { + if (start <= end) + { + for (int intI = start; intI <= end; intI++) + temp.Add(src[intI]); + } + else // excluding + { + for (int intI = 0; intI <= end; intI++) + temp.Add(src[intI]); + for (int intI = start; intI < intLength; intI++) + temp.Add(src[intI]); + } + } + list result = new list(); + string remark = ""; + if (stride <= 0) + { + remark = " ** stride must be > 0 **"; + } + else + { + if (start == 0) + for (int intI = 0; intI < temp.Count; intI += stride) + result.Add(temp[intI]); + else + for (int intI = stride - 1; intI < temp.Count; intI += stride) + result.Add(temp[intI]); + } + Verbose(@"List2ListStrided({0},{1},{2},{3})={4}{5}", src.ToVerboseString(), start, end, stride, result.ToVerboseString(), remark); + return result; + } - public Float llListStatistics(integer _operation, list _input) - { - double result = 0.0; - double rmin, rmax; - int operation = _operation; - List input = GetListOfNumbers(_input); - if (input.Count > 0) - { - switch (operation) - { - case 0: // LIST_STAT_RANGE: - rmin = double.MaxValue; - rmax = double.MinValue; - for (int intI = 0; intI < input.Count; intI++) - { - if (input[intI] < rmin) - rmin = input[intI]; - if (input[intI] > rmax) - rmax = input[intI]; - } - result = rmax - rmin; - break; - case 1: //LIST_STAT_MIN: - result = double.MaxValue; - for (int intI = 0; intI < input.Count; intI++) - if (input[intI] < result) - result = input[intI]; - break; - case 2: //LIST_STAT_MAX: - result = double.MinValue; - for (int intI = 0; intI < input.Count; intI++) - if (input[intI] > result) - result = input[intI]; - break; - case 3: //LIST_STAT_MEAN: - for (int intI = 0; intI < input.Count; intI++) - result += input[intI]; - result = result / input.Count; - break; - case 4: //LIST_STAT_MEDIAN: - input.Sort(); - if (Math.Ceiling(input.Count * 0.5) == input.Count * 0.5) - result = (input[(int)(input.Count * 0.5 - 1)] + input[(int)(input.Count * 0.5)]) / 2; - else - result = input[((int)(Math.Ceiling(input.Count * 0.5))) - 1]; - break; - case 5: //LIST_STAT_STD_DEV: - result = GetStandardDeviation(input.ToArray()); - break; - case 6: //LIST_STAT_SUM: - for (int intI = 0; intI < input.Count; intI++) - result += input[intI]; - break; - case 7: //LIST_STAT_SUM_SQUARES: - for (int intI = 0; intI < input.Count; intI++) - result += input[intI] * input[intI]; - //double av = GetAverage(input.ToArray()); - //for (int intI = 0; intI < input.Count; intI++) - // result += (av - input[intI]) * (av - input[intI]); - break; - case 8: //LIST_STAT_NUM_COUNT: - result = input.Count; - break; - case 9: //LIST_STAT_GEOMETRIC_MEAN: - for (int intI = 0; intI < input.Count; intI++) - input[intI] = Math.Log(input[intI]); - result = Math.Exp(GetAverage(input.ToArray())); - break; - default: - break; - } - } - Verbose("ListStatistics({0},{1})={2}",_operation,_input.ToString(),result); - return result; - } - public void llLoadURL(key avatar_id, String message, String url) - { - Verbose("LoadURL(" + avatar_id + "," + message + "," + url + ")"); - string strUrl = url.ToString(); - if(strUrl.StartsWith("http://")) - System.Diagnostics.Process.Start(strUrl); - } + public rotation llList2Rot(list src, integer index) + { + rotation result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = ZERO_ROTATION; + else + { + if (src[index] is rotation) + result = (rotation)src[index]; + else + result = ZERO_ROTATION; + } + Verbose("List2Rot({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - public void llMapDestination(String simname, vector position, vector lookat) - { - Verbose("MapDestination(" + simname + "," + position + "," + lookat + ")"); - } + public String llList2String(list src, integer index) + { + String result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = ""; + else + result = (String)src[index].ToString(); + Verbose("List2String({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - // ok - public String llMD5String(String src, integer nonce) - { - System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); - byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(src + ":" + nonce.ToString())); - StringBuilder sb = new StringBuilder(); - foreach (byte hex in hash) - sb.Append(hex.ToString("x2")); //convert to standard MD5 form - Verbose("MD5String({0},{1})={2}",src,nonce,sb); - return sb.ToString(); - } + public vector llList2Vector(list src, integer index) + { + vector result; + if (index < 0) + index = src.Count + index; + if (index >= src.Count || index < 0) + result = ZERO_VECTOR; + else + { + if (src[index] is vector) + result = (vector)src[index]; + else + result = ZERO_VECTOR; + } + Verbose("List2Vector({0},{1})={2}", src.ToVerboseString(), index, result); + return result; + } - public void llParcelMediaCommandList(list command_list) - { - Verbose("ParcelMediaCommandList(" + command_list.ToString() + ")"); - } - public list llParcelMediaQuery(list query_list) - { - Verbose("ParcelMediaQuery(" + query_list.ToString() + ")"); - return new list(); - } - public void llReleaseCamera(key agent) - { - Verbose("ReleaseCamera(" + agent + ")"); - } - public void llRemoteDataSetRegion() - { - Verbose("RemoteDataSetRegion()"); - } - public void llRemoteLoadScriptPin(key target, String name, integer pin, integer running, integer start_param) - { - Verbose("RemoteLoadScriptPin(" + target + "," + name + "," + pin + "," + running + "," + start_param + ")"); - } - public key llRequestSimulatorData(String simulator, integer data) - { - Verbose("RequestSimulatorData(" + simulator + "," + data + ")"); - return NULL_KEY; - } - public void llRezAtRoot(String inventory, vector pos, vector vel, rotation rot, integer param) - { - Verbose("RezAtRoot(" + inventory + "," + pos + "," + vel + "," + rot + "," + param + ")"); - } - public void llSetCameraParams(list rules) - { - Verbose("SetCameraParams(" + rules.ToString() + ")"); - } - public void llSetLinkAlpha(integer linknumber, Float alpha, integer face) - { - Verbose("SetLinkAlpha(" + linknumber + "," + alpha + "," + face + ")"); - } - public void llSetLocalRot(rotation rot) - { - this.m_rotlocal = rot; - Verbose("SetLocalRot(" + rot + ")"); - } + // ok, 27 mei 2007 + public integer llListFindList(list src, list test) + { + if (src.Count == 0) + return -1; + if (test.Count == 0) + return 0; + if (test.Count > src.Count) + return -1; - public void llSetParcelMusicURL(String url) - { - Verbose("SetParcelMusicURL(" + url + ")"); - } + int intReturn = -1; + for (int intI = 0; intI <= (src.Count - test.Count); intI++) + { + if (test[0].Equals(src[intI])) + { + bool blnOkay = true; + for (int intJ = 1; intJ < test.Count; intJ++) + { + if (!test[intJ].Equals(src[intI + intJ])) + { + blnOkay = false; + break; + } + } + if (blnOkay) + { + intReturn = intI; + break; + } + } + } + Verbose("ListFindList({0},{1}={2}", src.ToVerboseString(), test.ToVerboseString(), intReturn); + return intReturn; + } - public void llSetPayPrice(integer price, list quick_pay_buttons) - { - Verbose("SetPayPrice(" + price + "," + quick_pay_buttons.ToString() + ")"); - } + // ok + public list llListInsertList(list dest, list src, int pos) + { + int intLength = dest.Count; + list result = new list(); + if (pos < 0) + pos = dest.Count + pos; - public void llSetRemoteScriptAccessPin(integer pin) - { - Verbose("SetRemoteScriptAccessPin(" + pin + ")"); - } + for (int intI = 0; intI < Math.Min(pos, intLength); intI++) + result.Add(dest[intI]); - public String llStringTrim(String text, integer trim_type) - { - string strResult = text.ToString(); + result.AddRange(src); - if ((trim_type & STRING_TRIM_HEAD) != 0) - strResult = strResult.TrimStart(); + for (int intI = Math.Max(0, pos); intI < intLength; intI++) + result.Add(dest[intI]); - if ((trim_type & STRING_TRIM_TAIL) != 0) - strResult = strResult.TrimEnd(); + Verbose("ListInsertList({0},{1},{2})={3}", dest.ToVerboseString(), src.ToVerboseString(), pos, result.ToVerboseString()); + return result; + } - Verbose(@"llStringTrim(""{0}"",{1})=""{2}""", text, trim_type, strResult); - return strResult; - } + // ok + public list llListRandomize(list src, int stride) + { + list l; + ArrayList buckets = List2Buckets(src, stride); + if (buckets == null) + l = new list(src); + else + l = Buckets2List(RandomShuffle(buckets), stride); + Verbose("ListRandomize({0},{1})={2}", src.ToVerboseString(), stride, l.ToVerboseString()); + return l; + } - public String llEscapeURL(String url) - { - StringBuilder sb = new StringBuilder(); - byte[] data = Encoding.UTF8.GetBytes(url.ToString()); - for (int intI = 0; intI < data.Length; intI++) - { - byte chrC = data[intI]; - if( (chrC>='a' && chrC<='z') || - (chrC>='A' && chrC<='Z') || - (chrC>='0' && chrC<='9')) - sb.Append((char)chrC); - else - sb.AppendFormat("%{0:X2}", (int)chrC); - } - Verbose(string.Format(@"EscapeURL(""{0}"")=""{1}""", url, sb.ToString())); - return sb.ToString(); - } + // TODO check this!!! + public list llListReplaceList(list dest, list src, int start, int end) + { + int intLength = dest.Count; - private byte HexToInt(byte b) - { - if (b >= '0' && b <= '9') - return (byte)(b - '0'); - else if ((b >= 'a' && b <= 'f') || (b >= 'A' && b <= 'F')) - return (byte)((b & 0x5f) - 0x37); - else - return 0; // error - } + CorrectIt(intLength, ref start, ref end); - public String llUnescapeURL(String url) - { - byte[] data = Encoding.UTF8.GetBytes(url.ToString()); - List list = new List(); - for (int intI = 0; intI < data.Length; intI++) - { - byte chrC = data[intI]; - if (chrC == (byte)'%') - { - if(intI<(data.Length-2)) - list.Add((byte) - ( HexToInt(data[intI + 1])<<4 - | HexToInt(data[intI + 2]))); - intI += 2; - } - else - { - list.Add(chrC); - } - } - data = list.ToArray(); - int intLen = Array.IndexOf(data, (byte)0x0); - if (intLen < 0) - intLen = data.Length; - string strTmp = Encoding.UTF8.GetString(data,0,intLen); - Verbose(string.Format(@"llUnescapeURL(""{0}"")=""{1}""", url, strTmp)); - return strTmp; - } + list result = new list(); + if (start <= end) + { + for (int intI = 0; intI < start; intI++) + result.Add(dest[intI]); + result.AddRange(src); + for (int intI = end + 1; intI < intLength; intI++) + result.Add(dest[intI]); + } + else + { + // where to add src????? + for (int intI = end; intI <= start; intI++) + result.Add(dest[intI]); + } + Verbose("ListReplaceList({0},{1},{2},{3}={4}", dest.ToVerboseString(), src.ToVerboseString(), start, end, result.ToVerboseString()); + return result; + } - public void llSetInventoryPermMask(String item, integer mask, integer value) - { - Verbose("SetInventoryPermMask(" + item + "," + mask + "," + value + ")"); - } + // ok + public list llListSort(list src, int stride, int ascending) + { + list result; + ArrayList buckets = List2Buckets(src, stride); + if (buckets == null) + result = new list(src); + else + { + buckets.Sort(new BucketComparer(ascending)); + result = Buckets2List(buckets, stride); + } + Verbose("ListSort({0},{1},{2})={3}", src.ToVerboseString(), stride, ascending, result.ToVerboseString()); + return result; + } - public void llSetObjectPermMask(integer mask, integer value) - { - Verbose("SetObjectPermMask(" + mask + "," + value + ")"); - } + /* +0 LIST_STAT_RANGE Returns the range. +1 LIST_STAT_MIN Retrieves the smallest number. +2 LIST_STAT_MAX Retrieves the largest number. +3 LIST_STAT_MEAN Retrieves the mean (average). +4 LIST_STAT_MEDIAN Retrieves the median number. +5 LIST_STAT_STD_DEV Calculates the standard deviation. +6 LIST_STAT_SUM Calculates the sum. +7 LIST_STAT_SUM_SQUARES Calculates the sum of the squares. +8 LIST_STAT_NUM_COUNT Retrieves the amount of float and integer elements. Theoretically similar to llGetListLength, except LL states that this function ignores all non-integer and non-float elements. Therefore, this is a useful tool for mixed lists of numbers and non-numbers. +9 LIST_STAT_GEOMETRIC_MEAN Calculates the geometric mean. All numbers must be greater than zero for this to work, according to LL. + */ + public Float llListStatistics(integer _operation, list _input) + { + double result = 0.0; + double rmin, rmax; + int operation = _operation; + List input = GetListOfNumbers(_input); + if (input.Count > 0) + { + switch (operation) + { + case 0: // LIST_STAT_RANGE: + rmin = double.MaxValue; + rmax = double.MinValue; + for (int intI = 0; intI < input.Count; intI++) + { + if (input[intI] < rmin) + rmin = input[intI]; + if (input[intI] > rmax) + rmax = input[intI]; + } + result = rmax - rmin; + break; + case 1: //LIST_STAT_MIN: + result = double.MaxValue; + for (int intI = 0; intI < input.Count; intI++) + if (input[intI] < result) + result = input[intI]; + break; + case 2: //LIST_STAT_MAX: + result = double.MinValue; + for (int intI = 0; intI < input.Count; intI++) + if (input[intI] > result) + result = input[intI]; + break; + case 3: //LIST_STAT_MEAN: + for (int intI = 0; intI < input.Count; intI++) + result += input[intI]; + result = result / input.Count; + break; + case 4: //LIST_STAT_MEDIAN: + input.Sort(); + if (Math.Ceiling(input.Count * 0.5) == input.Count * 0.5) + result = (input[(int)(input.Count * 0.5 - 1)] + input[(int)(input.Count * 0.5)]) / 2; + else + result = input[((int)(Math.Ceiling(input.Count * 0.5))) - 1]; + break; + case 5: //LIST_STAT_STD_DEV: + result = GetStandardDeviation(input.ToArray()); + break; + case 6: //LIST_STAT_SUM: + for (int intI = 0; intI < input.Count; intI++) + result += input[intI]; + break; + case 7: //LIST_STAT_SUM_SQUARES: + for (int intI = 0; intI < input.Count; intI++) + result += input[intI] * input[intI]; + //double av = GetAverage(input.ToArray()); + //for (int intI = 0; intI < input.Count; intI++) + // result += (av - input[intI]) * (av - input[intI]); + break; + case 8: //LIST_STAT_NUM_COUNT: + result = input.Count; + break; + case 9: //LIST_STAT_GEOMETRIC_MEAN: + for (int intI = 0; intI < input.Count; intI++) + input[intI] = Math.Log(input[intI]); + result = Math.Exp(GetAverage(input.ToArray())); + break; + default: + break; + } + } + Verbose("ListStatistics({0},{1})={2}", _operation, _input.ToString(), result); + return result; + } - public void llTakeCamera(key avatar) - { - Verbose("TakeCamera(" + avatar + ")"); - } + public integer llListen(integer channel, String name, key id, String msg) + { + int intHandle = host.llListen(channel, name, id, msg); + Verbose(@"Listen(" + channel + @",""" + name + @"""," + id + @",""" + msg + @""")=" + intHandle); + return intHandle; + } + public void llListenControl(integer number, integer active) + { + Verbose("ListenControl(" + number + "," + active + ")"); + host.llListenControl(number, active); + } - // added 4 mei 2007 - public integer llGetObjectPrimCount(key id) - { - Verbose("llGetObjectPrimCount(" + id + ")"); - return 0; - } -/* -PARCEL_DETAILS_NAME 0 The name of the parcel. 63 Characters string -PARCEL_DETAILS_DESC 1 The description of the parcel. 127 Characters string -PARCEL_DETAILS_OWNER 2 The parcel owner's key. (36 Characters) key -PARCEL_DETAILS_GROUP 3 The parcel group's key. (36 Characters) key -PARCEL_DETAILS_AREA 4 The parcel's area, in sqm. (5 Characters) integer -*/ - public list llGetParcelDetails(vector pos, list details) - { - list result = new list(); - for (int intI = 0; intI < details.Count; intI++) - { - if (details[intI] is integer) - { - switch ((int)(integer)details[intI]) - { - case 0: // PARCEL_DETAILS_NAME: - result.Add(Properties.Settings.Default.ParcelName); - break; - case 1: // PARCEL_DETAILS_DESC: - result.Add(Properties.Settings.Default.ParcelDescription); - break; - case 2: //PARCEL_DETAILS_OWNER: - result.Add(new key(Properties.Settings.Default.ParcelOwner)); - break; - case 3: //PARCEL_DETAILS_GROUP: - result.Add(new key(Properties.Settings.Default.ParcelGroup)); - break; - case 4: // PARCEL_DETAILS_AREA: - result.Add(new integer(Properties.Settings.Default.ParcelArea)); - break; - default: - break; - } - } - } - Verbose("llGetParcelDetails({0},{1})={2}", pos, details.ToVerboseString(), result.ToVerboseString()); - return result; - } - public integer llGetParcelMaxPrims(vector pos, integer sim_wide) - { - Verbose("llGetParcelMaxPrims(" + pos + "," + sim_wide + ")"); - return 0; - } - public integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) - { - Verbose("llGetParcelPrimCount(" + pos + "," + category + "," + sim_wide + ")"); - return 0; - } - public list llGetParcelPrimOwners(vector pos) - { - list result = new list(new object[] { Properties.Settings.Default.AvatarKey, 10 }); - Verbose("llGetParcelPrimOwners({0})={1}", pos, result); - return result; - } + public void llListenRemove(integer number) + { + Verbose("ListenRemove(" + number + ")"); + host.llListenRemove(number); + } + + public void llLoadURL(key avatar_id, String message, String url) + { + Verbose("LoadURL(" + avatar_id + "," + message + "," + url + ")"); + string strUrl = url.ToString(); + if (strUrl.StartsWith("http://")) + System.Diagnostics.Process.Start(strUrl); + } + + public Float llLog(Float val) + { + double dblA = 0.0; + if (val > 0.0) + dblA = Math.Log(val); + Verbose("llLog({0})={1}", val, dblA); + return dblA; + } + + public Float llLog10(Float val) + { + double dblA = 0.0; + if (val > 0.0) + dblA = Math.Log10(val); + Verbose("llLog10({0})={1}", val, dblA); + return dblA; + } + + public void llLookAt(vector target, Float strength, Float damping) + { + Verbose("LookAt(" + target + "," + strength + "," + damping + ")"); + } + + public void llLoopSound(String sound, Float volume) + { + try + { + System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); + sp.PlayLooping(); + } + catch + { + } + Verbose("LoopSound(" + sound + "," + volume + ")"); + } + + public void llLoopSoundMaster(String sound, Float volume) + { + try + { + System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); + sp.PlayLooping(); + } + catch + { + } + Verbose("LoopSoundMaster(" + sound + "," + volume + ")"); + } + + public void llLoopSoundSlave(String sound, Float volume) + { + try + { + System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); + sp.PlayLooping(); + } + catch + { + } + Verbose("LoopSoundSlave(" + sound + "," + volume + ")"); + } + + // ok + public String llMD5String(String src, integer nonce) + { + System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); + byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(src + ":" + nonce.ToString())); + StringBuilder sb = new StringBuilder(); + foreach (byte hex in hash) + sb.Append(hex.ToString("x2")); //convert to standard MD5 form + Verbose("MD5String({0},{1})={2}", src, nonce, sb); + return sb.ToString(); + } + + public void llMakeExplosion(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) + { + Verbose("MakeExplosion(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); + } + + public void llMakeFire(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) + { + Verbose("MakeFire(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); + } + + public void llMakeFountain(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) + { + Verbose("MakeFountain(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); + } + + public void llMakeSmoke(integer particles, Float scale, Float velocity, Float lifetime, Float arc, String texture, vector offset) + { + Verbose("MakeSmoke(" + particles + "," + scale + "," + velocity + "," + lifetime + "," + arc + "," + texture + "," + offset + ")"); + } + + public void llManageEstateAccess(integer iAction, key kID) + { + Verbose("llManageEstateAccess({0}, {1}", iAction, kID); + } + + public void llMapDestination(String simname, vector position, vector lookat) + { + Verbose("MapDestination(" + simname + "," + position + "," + lookat + ")"); + } + + public void llMessageLinked(integer linknum, integer num, String str, key id) + { + Verbose("MessageLinked(" + linknum + "," + num + "," + str + "," + id + ")"); + host.MessageLinked(linknum, num, str, id); + } + + public void llMinEventDelay(Float delay) + { + Verbose("MinEventDelay(" + delay + ")"); + } + + public integer llModPow(integer x, integer y, integer m) + { + integer result = ModPow2(x, y, m); + Verbose("llModPow({0},{1},{2})={3}", x, y, m, result); + return result; + } + + public void llModifyLand(integer action, integer size) + { + Verbose("ModifyLand(" + action + "," + size + ")"); + } + + public void llMoveToTarget(vector target, Float tau) + { + Verbose("MoveToTarget(" + target + "," + tau + ")"); + } + + public void llOffsetTexture(Float offset_s, Float offset_t, integer face) + { + Verbose("OffsetTexture(" + offset_s + "," + offset_t + "," + face + ")"); + } + + public void llOpenRemoteDataChannel() + { + host.llOpenRemoteDataChannel(); + Verbose("OpenRemoteDataChannel()"); + } + + public integer llOverMyLand(key id) + { + Verbose("OverMyLand(" + id + ")"); + return integer.TRUE; + } + + public void llOwnerSay(String message) + { + Chat(0, message, CommunicationType.OwnerSay); + } + + public void llParcelMediaCommandList(list command_list) + { + Verbose("ParcelMediaCommandList(" + command_list.ToString() + ")"); + } + + public list llParcelMediaQuery(list query_list) + { + Verbose("ParcelMediaQuery(" + query_list.ToString() + ")"); + return new list(); + } + + // 21 sep 2007, check this + public list llParseString2List(String src, list separators, list spacers) + { + list result = ParseString(src, separators, spacers, false); + Verbose("llParseString2List({0},{1},{2})={3}", src, separators.ToVerboseString(), spacers.ToVerboseString(), result.ToVerboseString()); + return result; + } + + // 21 sep 2007, check this, first check 3 oct 2007, last element=="" is added also + public list llParseStringKeepNulls(String src, list separators, list spacers) + { + list result = ParseString(src, separators, spacers, true); + Verbose("llParseStringKeepNulls({0},{1},{2})={3}", src, separators.ToVerboseString(), spacers.ToVerboseString(), result.ToVerboseString()); + return result; + } + + public void llParticleSystem(list parameters) + { + Verbose("ParticleSystem(" + parameters.ToString() + ")"); + } + + public void llPassCollisions(integer pass) + { + Verbose("PassCollisions(" + pass + ")"); + } + + public void llPassTouches(integer pass) + { + Verbose("PassTouches(" + pass + ")"); + } + + public void llPlaySound(String sound, Float volume) + { + try + { + System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); + sp.Play(); + Verbose("PlaySound(" + sound + "," + volume + ")"); + } + catch (Exception exception) + { + Verbose("PlaySound(" + sound + "," + volume + ") **" + exception.Message); + } + } + + public void llPlaySoundSlave(String sound, Float volume) + { + try + { + System.Media.SoundPlayer sp = host.GetSoundPlayer(sound); + sp.Play(); + } + catch + { + } + Verbose("PlaySoundSlave(" + sound + "," + volume + ")"); + } + + public void llPointAt(vector pos) + { + Verbose("PointAt(" + pos + ")"); + } + + public Float llPow(Float baze, Float exp) + { + double dblA = Math.Pow(baze, exp); + Verbose("Pow(" + baze + "," + exp + ")=" + dblA); + return dblA; + } + + public void llPreloadSound(String sound) + { + Verbose("PreloadSound(" + sound + ")"); + } + + public void llPushObject(key id, vector impulse, vector angular_impulse, integer local) + { + Verbose("PushObject(" + id + "," + impulse + "," + angular_impulse + "," + local + ")"); + } + + public void llRegionSay(integer channel, String text) + { + if (channel != 0) + Chat(channel, text, CommunicationType.RegionSay); + } + + public void llRegionSayTo(key kTargetID, integer iChannel, string iText) + { + Verbose("RegionSayTo({0}, {1}, {2})", kTargetID, iChannel, iText); + } + + public void llReleaseCamera(key agent) + { + Verbose("ReleaseCamera(" + agent + ")"); + } + + public void llReleaseControls() + { + Verbose("ReleaseControls()"); + this.host.ReleaseControls(); + } + + public void llReleaseControls(key avatar) + { + Verbose("ReleaseControls(" + avatar + ")"); + } + + //347 + public void llReleaseURL(string url) + { + } + + public void llRemoteDataReply(key channel, key message_id, String sdata, integer idata) + { + host.llRemoteDataReply(channel, message_id, sdata, idata); + Verbose("RemoteDataReply({0},{1},{2},{3})", channel, message_id, sdata, idata); + } + + public void llRemoteDataSetRegion() + { + Verbose("RemoteDataSetRegion()"); + } + + public void llRemoteLoadScript(key target, String name, integer running, integer param) + { + Verbose("RemoteLoadScript(" + target + "," + name + "," + running + "," + param + ")"); + } + + public void llRemoteLoadScriptPin(key target, String name, integer pin, integer running, integer start_param) + { + Verbose("RemoteLoadScriptPin(" + target + "," + name + "," + pin + "," + running + "," + start_param + ")"); + } + + public void llRemoveFromLandBanList(key avatar) + { + Verbose("RemoveFromLandBanList(" + avatar + ")"); + if (m_LandBanList.ContainsKey(avatar)) + m_LandBanList.Remove(avatar); + } + + public void llRemoveFromLandPassList(key avatar) + { + Verbose("RemoveFromLandPassList(" + avatar + ")"); + if (m_LandPassList.ContainsKey(avatar)) + m_LandPassList.Remove(avatar); + } + + public void llRemoveInventory(String inventory) + { + host.RemoveInventory(inventory); + Verbose("RemoveInventory(" + inventory + ")"); + } + + public void llRemoveVehicleFlags(integer flags) + { + Verbose("RemoveVehicleFlags(" + flags + ")"); + } + + public key llRequestAgentData(key id, integer data) + { + key k = new key(Guid.NewGuid()); + + string strData = "***"; + switch ((int)data) + { + case 1: // DATA_ONLINE + break; + case 2: // DATA_NAME + strData = Properties.Settings.Default.AvatarName; + break; + case 3: // DATA_BORN + strData = DateTime.Now.ToString("yyyy-MM-dd"); + break; + case 4: // DATA_RATING + break; + case 8: // DATA_PAYINFO + break; + default: + break; + } + host.ExecuteSecondLife("dataserver", k, (SecondLife.String)strData); + return k; + } + + public key llRequestDisplayName(key kAvatarID) + { + key kID = new key(Guid.NewGuid()); + string strData = "dummyDisplay Name"; + Verbose("RequestDisplayName({0})={1}", kAvatarID, kID); + host.ExecuteSecondLife("dataserver", kID, (SecondLife.String)strData); + return kID; + } + + public key llRequestInventoryData(String name) + { + Verbose("RequestInventoryData(" + name + ")"); + return new key(Guid.NewGuid()); + } + + public void llRequestPermissions(key avatar, integer perm) + { + Verbose("RequestPermissions(" + avatar + "," + perm + ")"); + this.host.llRequestPermissions(avatar, perm); + } + + //346 + public key llRequestSecureURL() + { + return new key(); + } + + public key llRequestSimulatorData(String simulator, integer data) + { + Verbose("RequestSimulatorData(" + simulator + "," + data + ")"); + return NULL_KEY; + } + + //345 + public key llRequestURL() + { + return new key(); + } + + public key llRequestUsername(key kAvatarID) + { + key kID = new key(Guid.NewGuid()); + string strData = "dummyUser Name"; + Verbose("RequestDisplayName({0})={1}", kAvatarID, kID); + host.ExecuteSecondLife("dataserver", kID, (SecondLife.String)strData); + return kID; + } + + public void llResetLandBanList() + { + m_LandBanList = new Hashtable(); + Verbose("llResetLandBanList()"); + } + + public void llResetLandPassList() + { + m_LandPassList = new Hashtable(); + Verbose("llResetLandPassList()"); + } + + public void llResetOtherScript(String name) + { + Verbose("ResetOtherScript(" + name + ")"); + } + + public void llResetScript() + { + Verbose("ResetScript()"); + host.Reset(); + System.Threading.Thread.Sleep(1000); + System.Windows.Forms.MessageBox.Show("If you see this, something wrong in llResetScript()", "Oops..."); + } + + public void llResetTime() + { + Verbose("ResetTime()"); + m_DateTimeScriptStarted = DateTime.Now.ToUniversalTime(); + } + + public void llRezAtRoot(String inventory, vector pos, vector vel, rotation rot, integer param) + { + Verbose("RezAtRoot(" + inventory + "," + pos + "," + vel + "," + rot + "," + param + ")"); + } + + public void llRezObject(String inventory, vector pos, vector vel, rotation rot, integer param) + { + Verbose("RezObject(" + inventory + "," + pos + "," + vel + "," + rot + "," + param + ")"); + object_rez(new key(Guid.NewGuid())); + on_rez(param); + } + + public Float llRot2Angle(rotation rot) + { + Verbose("Rot2Angle(" + rot + ")"); + return 0F; + } + + public vector llRot2Axis(rotation rot) + { + Verbose("Rot2Axis(" + rot + ")"); + return ZERO_VECTOR; + } + + public vector llRot2Euler(rotation r) + { + // http://rpgstats.com/wiki/index.php?title=LibraryRotationFunctions + rotation t = new rotation(r.x * r.x, r.y * r.y, r.z * r.z, r.s * r.s); + double m = (t.x + t.y + t.z + t.s); + vector v = new vector(0, 0, 0); + if (m != 0) + { + double n = 2 * (r.y * r.s + r.x * r.z); + double p = m * m - n * n; + if (p > 0) + v = new vector(Math.Atan2(2.0 * (r.x * r.s - r.y * r.z), (-t.x - t.y + t.z + t.s)), + Math.Atan2(n, Math.Sqrt(p)), Math.Atan2(2.0 * (r.z * r.s - r.x * r.y), (t.x - t.y - t.z + t.s))); + else if (n > 0) + v = new vector(0, PI_BY_TWO, Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z)); + else + v = new vector(0, -PI_BY_TWO, Math.Atan2((r.z * r.s + r.x * r.y), 0.5 - t.x - t.z)); + } + Verbose("Rot2Euler(" + r + ")=" + v); + return v; + } + + public vector llRot2Fwd(rotation rot) + { + vector v = new vector(1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s), 0, 0); + vector result = v * rot; + Verbose("Rot2Fwd({0})={1}", rot, result); + return result; + } + + public vector llRot2Left(rotation rot) + { + vector v = new vector(0, 1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s), 0); + vector result = v * rot; + Verbose("llRot2Left({0})={1}", rot, result); + return result; + } + + public vector llRot2Up(rotation rot) + { + vector v = new vector(0, 0, 1.0 / (rot.x * rot.x + rot.y * rot.y + rot.z * rot.z + rot.s * rot.s)); + vector result = v * rot; + Verbose("llRot2Left({0})={1}", rot, result); + return result; + } + + public void llRotateTexture(Float radians, integer face) + { + Verbose("RotateTexture(" + radians + "," + face + ")"); + } + + public rotation llRotBetween(vector a, vector b) + { + Verbose("RotBetween(" + a + "," + b + ")"); + return ZERO_ROTATION; + } + + public void llRotLookAt(rotation rot, Float strength, Float damping) + { + Verbose("RotLookAt(" + rot + "," + strength + "," + damping + ")"); + } + + public integer llRotTarget(rotation rot, Float error) + { + Verbose("RotTarget(" + rot + "," + error + ")"); + return 0; + } + + public void llRotTargetRemove(integer number) + { + Verbose("RotTargetRemove(" + number + ")"); + } + + public integer llRound(Float val) + { + int intA = (int)Math.Round(val); + Verbose("Round(" + val + ")=" + intA); + return intA; + } + + public integer llSameGroup(key id) + { + Verbose("SameGroup(" + id + ")"); + return 0; + } + + public void llSay(integer channel, String text) + { + Chat(channel, text, CommunicationType.Say); + } + + public void llScaleTexture(Float scale_s, Float scale_t, integer face) + { + Verbose("ScaleTexture(" + scale_s + "," + scale_t + "," + face + ")"); + } + + public integer llScriptDanger(vector pos) + { + Verbose("ScriptDanger(" + pos + ")"); + return 0; + } + + public void llScriptProfiler(integer iState) + { + Verbose("ScriptProfiler(" + iState + ")"); + } + + public key llSendRemoteData(key channel, String dest, integer idata, String sdata) + { + key k = host.llSendRemoteData(channel, dest, idata, sdata); + Verbose("SendRemoteData({0},{1},{2},{3})={4}", channel, dest, idata, sdata, k); + return k; + } + + public void llSensor(String name, key id, integer type, Float range, Float arc) + { + Verbose("llSensor()"); + host.sensor_timer.Stop(); + integer total_number = 1; + host.ExecuteSecondLife("sensor", total_number); + } + + public void llSensorRemove() + { + Verbose("SensorRemove()"); + host.sensor_timer.Stop(); + } + + public void llSensorRepeat(String name, key id, integer type, Float range, Float arc, Float rate) + { + Verbose("SensorRepeat(" + name + "," + id + "," + type + "," + range + "," + arc + "," + rate + ")"); + host.sensor_timer.Stop(); + if (rate > 0) + { + host.sensor_timer.Interval = (int)Math.Round(rate * 1000); + host.sensor_timer.Start(); + } + } + + public void llSetAlpha(Float alpha, integer face) + { + Verbose("SetAlpha(" + alpha + "," + face + ")"); + } + + public void llSetAngularVelocity(vector vForce, integer iLocal) + { + Verbose("llSetAngularVelocity(" + vForce + "," + iLocal + ")"); + } + + public void llSetBuoyancy(Float buoyancy) + { + Verbose("SetBuoyancy(" + buoyancy + ")"); + } + + public void llSetCameraAtOffset(vector offset) + { + Verbose("SetCameraAtOffset(" + offset + ")"); + } + + public void llSetCameraEyeOffset(vector offset) + { + Verbose("SetCameraEyeOffset(" + offset + ")"); + } + + public void llSetCameraParams(list rules) + { + Verbose("SetCameraParams(" + rules.ToString() + ")"); + } + + public void llSetClickAction(integer action) + { + Verbose("llSetClickAction({0})", action); + } + + public void llSetColor(vector color, integer face) + { + Verbose("SetColor(" + color + "," + face + ")"); + } + + public void llSetDamage(Float damage) + { + Verbose("SetDamage(" + damage + ")"); + } + + public void llSetForce(vector force, integer local) + { + Verbose("SetForce(" + force + "," + local + ")"); + } + + public void llSetForceAndTorque(vector force, vector torque, integer local) + { + Verbose("SetForceAndTorque(" + force + "," + torque + "," + local + ")"); + } + + public void llSetHoverHeight(Float height, Float water, Float tau) + { + Verbose("SetHoverHeight(" + height + "," + water + "," + tau + ")"); + } + + public void llSetInventoryPermMask(String item, integer mask, integer value) + { + Verbose("SetInventoryPermMask(" + item + "," + mask + "," + value + ")"); + } + + public void llSetKeyframedMotion(list lKeyframes, list lOptions) + { + Verbose("SetKeyframedMotion({0}, {1})", lKeyframes, lOptions.ToString()); + } + + public void llSetLinkAlpha(integer linknumber, Float alpha, integer face) + { + Verbose("SetLinkAlpha(" + linknumber + "," + alpha + "," + face + ")"); + } + + public void llSetLinkColor(integer linknumber, vector color, integer face) + { + Verbose("SetLinkColor(" + linknumber + "," + color + "," + face + ")"); + } + + public integer llSetLinkMedia(integer iLink, integer iFace, list lParams) + { + Verbose("SetLinkMedia(" + iLink + "," + iFace + "," + lParams.ToString() + ")"); + return STATUS_OK; + } public void llSetLinkPrimitiveParams(integer linknumber, list rules) { Verbose("llSetLinkPrimitiveParams({0},[{1}])", linknumber, rules); } - public void llSetLinkPrimitiveParamsFast(integer linknumber, list rules) - { - Verbose("llSetLinkPrimitiveParamsFast({0},[{1}])", linknumber, rules); - } - - public void llSetLinkTexture(integer linknumber, String texture, integer face) - { - Verbose(@"llSetLinkTexture({0},""{1}"",{2})",linknumber,texture,face); - } - - public list llGetObjectDetails(key id, list _params) - { - list result = new list(); - for (int intI = 0; intI < _params.Count; intI++) - { - if (!(_params[intI] is integer)) - continue; - switch ((int)(integer)_params[intI]) - { - case 1: //OBJECT_NAME: - result.Add((SecondLife.String)host.GetObjectName(new Guid(id.guid))); - break; - case 2: //OBJECT_DESC: - result.Add((SecondLife.String)host.GetObjectDescription(new Guid(id.guid))); - break; - case 3://OBJECT_POS: - break; - case 4://OBJECT_ROT: - break; - case 5://OBJECT_VELOCITY: - break; - case 6://OBJECT_OWNER: - break; - case 7://OBJECT_GROUP: - break; - case 8://OBJECT_CREATOR: - break; - default: - break; - } - } - Verbose(@"llGetObjectDetails({0},{1})={2}", id, _params, result); - return result; - } - - public void llSetClickAction(integer action) - { - Verbose("llSetClickAction({0})", action); - } - #endregion - - // 334 - public integer llGetRegionAgentCount() - { - Verbose("llGetRegionAgentCount()"); - return 0; - } - - // 335 - public void llTextBox(key avatar, String message, integer chat_channel) - { - Verbose("llTextBox({0},\"{1}\",{2})",avatar,message,chat_channel); - host.llTextBox(avatar, message, chat_channel); - } - - // 336 - public String llGetAgentLanguage(key avatar) - { - string strLan = "en-us"; - Verbose("llGetAgentLanguage({0})=\"{1}\"", avatar, strLan); - return strLan; - } - - // 337 - public vector llDetectedTouchUV(integer index) - { - Verbose("llDetectedTouchUV({0})", index); - return new vector(); - } - - // 338 - public integer llDetectedTouchFace(integer index) - { - Verbose("llDetectedTouchFace({0})", index); - return 0; - } - - // 339 - public vector llDetectedTouchPos(integer index) - { - Verbose("llDetectedTouchPos({0})", index); - return new vector(); - } - - // 340 - public vector llDetectedTouchNormal(integer index) - { - Verbose("llDetectedTouchNormal({0})", index); - return new vector(); - } - - // 341 - public vector llDetectedTouchBinormal(integer index) - { - Verbose("llDetectedTouchBinormal({0})", index); - return new vector(); - } - - // 342 - public vector llDetectedTouchST(integer index) - { - Verbose("llDetectedTouchST({0})", index); - return new vector(); - } - - // 343 - public String llSHA1String(String src) - { - byte[] buffer = System.Text.Encoding.UTF8.GetBytes(src.ToString()); - System.Security.Cryptography.SHA1CryptoServiceProvider cryptoTransformSHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider(); - string hash = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", ""); - Verbose("llSHA1String(\"{0}\")=\"{1}\"", src, hash); - return hash; - } - //344 - public integer llGetFreeURLs() - { - return 0; - } - //345 - public key llRequestURL() - { - return new key(); - } - //346 - public key llRequestSecureURL( ) - { - return new key(); - } - //347 - public void llReleaseURL( string url ) - { - } - //348 - public void llHTTPResponse( key request_id, integer status, String body ) - { - } - //349 - public String llGetHTTPHeader(key request_id, String header) - { - return "not-implemented"; - } - - public list llGetPrimMediaParams(integer face, list myparams) + public void llSetLinkPrimitiveParamsFast(integer linknumber, list rules) { - Verbose("GetPrimMediaParams(" + face + "," + myparams.ToString() + ")"); - return new list(); + Verbose("llSetLinkPrimitiveParamsFast({0},[{1}])", linknumber, rules); } + + public void llSetLinkTexture(integer linknumber, String texture, integer face) + { + Verbose(@"llSetLinkTexture({0},""{1}"",{2})", linknumber, texture, face); + } + + public void llSetLinkTextureAnim(integer link, integer mode, integer face, integer sizex, integer sizey, Float start, Float length, Float rate) + { + Verbose("SetLinkTextureAnim(" + link + "," + mode + "," + face + "," + sizex + "," + sizey + "," + start + "," + length + "," + rate + ")"); + } + + public void llSetLocalRot(rotation rot) + { + this.m_rotlocal = rot; + Verbose("SetLocalRot(" + rot + ")"); + } + + public integer llSetMemoryLimit(integer iLimit) + { + Verbose("SetMemoryLimit(" + iLimit + ")"); + return true; + } + + public void llSetObjectDesc(String description) + { + Verbose("llSetObjectDesc({0})", description); + host.SetObjectDescription(description); + } + + public void llSetObjectName(String name) + { + Verbose("llSetObjectName({0})", name); + host.SetObjectName(name); + } + + public void llSetObjectPermMask(integer mask, integer value) + { + Verbose("SetObjectPermMask(" + mask + "," + value + ")"); + } + + public void llSetParcelMusicURL(String url) + { + Verbose("SetParcelMusicURL(" + url + ")"); + } + + public void llSetPayPrice(integer price, list quick_pay_buttons) + { + Verbose("SetPayPrice(" + price + "," + quick_pay_buttons.ToString() + ")"); + } + + public void llSetPhysicsMaterial(integer material_bits, Float gravity_multiplier, Float restitution, Float friction, Float density) + { + Verbose("SetPhysicsMaterial(" + material_bits + "," + gravity_multiplier + "," + restitution + "," + friction + "," + density + ")"); + } + + public void llSetPos(vector pos) + { + Verbose("SetPos(" + pos + ")"); + m_pos = pos; + } + public integer llSetPrimMediaParams(integer face, list myparams) { Verbose("SetPrimMediaParams(" + face + "," + myparams.ToString() + ")"); return 0; } - public integer llClearPrimMedia(integer face) + + public void llSetPrimitiveParams(list rule) { - Verbose("ClearPrimMedia(" + face + ")"); + Verbose("SetPrimitiveParams(" + rule.ToString() + ")"); + } + + public void llSetRemoteScriptAccessPin(integer pin) + { + Verbose("SetRemoteScriptAccessPin(" + pin + ")"); + } + + public void llSetRot(rotation rot) + { + Verbose("SetRot(" + rot + ")"); + m_rot = rot; + } + + public void llSetScale(vector scale) + { + Verbose("SetScale(" + scale + ")"); + m_scale = scale; + } + + public void llSetScriptState(String name, integer run) + { + Verbose("SetScriptState(" + name + "," + run + ")"); + } + + public void llSetSitText(String text) + { + Verbose("SetSitText(" + text + ")"); + m_SitText = text; + } + + public void llSetSoundQueueing(integer queue) + { + Verbose("SetSoundQueueing(" + queue + ")"); + } + + public void llSetSoundRadius(Float radius) + { + m_SoundRadius = radius; + Verbose("SetSoundRadius(" + m_SoundRadius + ")"); + } + + public void llSetStatus(integer status, integer value) + { + Verbose("SetStatus(" + status + "," + value + ")"); + } + + public void llSetText(String text, vector color, Float alpha) + { + Verbose("SetText(" + text + "," + color + "," + alpha + ")"); + } + + public void llSetTexture(String texture, integer face) + { + Verbose("SetTexture(" + texture + "," + face + ")"); + } + + public void llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, Float start, Float length, Float rate) + { + Verbose("SetTextureAnim(" + mode + "," + face + "," + sizex + "," + sizey + "," + start + "," + length + "," + rate + ")"); + } + + public void llSetTimerEvent(Float sec) + { + Verbose("SetTimerEvent(" + sec + ")"); + host.timer.Stop(); + if (sec > 0) + { + host.timer.Interval = (int)Math.Round(sec * 1000); + host.timer.Start(); + } + } + + public void llSetTorque(vector torque, integer local) + { + Verbose("SetTorque(" + torque + "," + local + ")"); + } + + public void llSetTouchText(String text) + { + Verbose("SetTouchText(" + text + ")"); + } + + public void llSetVehicleFlags(integer flags) + { + Verbose("SetVehicleFlags(" + flags + ")"); + } + + public void llSetVehicleFloatParam(integer param_name, Float param_value) + { + Verbose("SetVehicledoubleParam(" + param_name + "," + param_value + ")"); + } + + public void llSetVehicleRotationParam(integer param_name, rotation param_value) + { + Verbose("SetVehicleRotationParam(" + param_name + "," + param_value + ")"); + } + + public void llSetVehicleType(integer type) + { + Verbose("SetVehicleType(" + type + ")"); + } + + public void llSetVehicleVectorParam(integer param_name, vector param_value) + { + Verbose("SetVehicleVectorParam(" + param_name + "," + param_value + ")"); + } + + public void llSetVelocity(vector vForce, integer iLocal) + { + Verbose("SetVelocity({0}, {1})", vForce, iLocal); + } + + // 343 + public String llSHA1String(String src) + { + byte[] buffer = System.Text.Encoding.UTF8.GetBytes(src.ToString()); + System.Security.Cryptography.SHA1CryptoServiceProvider cryptoTransformSHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider(); + string hash = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", ""); + Verbose("llSHA1String(\"{0}\")=\"{1}\"", src, hash); + return hash; + } + + public void llShout(integer channel, String text) + { + Chat(channel, text, CommunicationType.Shout); + } + + public Float llSin(Float theta) + { + double dblA = Math.Sin(theta); + Verbose("Sin(" + theta + ")=" + dblA); + return dblA; + } + + public void llSitTarget(vector offset, rotation rot) + { + Verbose("SitTarget(" + offset + "," + rot + ")"); + } + + public void llSleep(Float sec) + { + Verbose("Sleep(" + sec + ")"); + System.Threading.Thread.Sleep((int)Math.Round(sec * 1000)); + } + + public Float llSqrt(Float val) + { + double dblA = Math.Sqrt(val); + Verbose("Sqrt(" + val + ")=" + dblA); + return dblA; + } + + public void llStartAnimation(String anim) + { + Verbose("StartAnimation(" + anim + ")"); + } + + public void llStopAnimation(String anim) + { + Verbose("StopAnimation(" + anim + ")"); + } + + public void llStopHover() + { + Verbose("StopHover()"); + } + + public void llStopLookAt() + { + Verbose("StopLookAt()"); + } + + public void llStopMoveToTarget() + { + Verbose("StopMoveToTarget()"); + } + + public void llStopPointAt() + { + Verbose("StopPointAt()"); + } + + public void llStopSound() + { + Verbose("StopSound()"); + } + + public integer llStringLength(String src) + { + int intLength = ((string)src).Length; + Verbose(@"StringLength(""{0}"")={1}", src, intLength); + return intLength; + } + + public String llStringToBase64(String str) + { + string result = StringToBase64(str.ToString()); + Verbose(@"StringToBase64(""{0}"")=""{1}""", str, result); + return result; + } + + public String llStringTrim(String text, integer trim_type) + { + string strResult = text.ToString(); + + if ((trim_type & STRING_TRIM_HEAD) != 0) + strResult = strResult.TrimStart(); + + if ((trim_type & STRING_TRIM_TAIL) != 0) + strResult = strResult.TrimEnd(); + + Verbose(@"llStringTrim(""{0}"",{1})=""{2}""", text, trim_type, strResult); + return strResult; + } + + public integer llSubStringIndex(String source, String pattern) + { + int intIndexOf = ((string)source).IndexOf((string)pattern); + Verbose("SubStringIndex({0},{1})={2}", source, pattern, intIndexOf); + return intIndexOf; + } + + public void llTakeCamera(key avatar) + { + Verbose("TakeCamera(" + avatar + ")"); + } + + public void llTakeControls(integer controls, integer accept, integer pass_on) + { + Verbose("TakeControls(" + controls + "," + accept + "," + pass_on + ")"); + this.host.TakeControls(controls, accept, pass_on); + } + + public Float llTan(Float theta) + { + double dblA = Math.Tan(theta); + Verbose("Tan(" + theta + ")=" + dblA); + return dblA; + } + + public integer llTarget(vector position, Float range) + { + Verbose("Target(" + position + "," + range + ")"); return 0; } - } + + public void llTargetOmega(vector axis, Float spinrate, Float gain) + { + Verbose("TargetOmega(" + axis + "," + spinrate + "," + gain + ")"); + } + + public void llTargetRemove(integer tnumber) + { + Verbose("TargetRemove(" + tnumber + ")"); + } + + public void llTeleportAgentHome(key id) + { + Verbose("TeleportAgentHome(" + id + ")"); + } + + // 335 + public void llTextBox(key avatar, String message, integer chat_channel) + { + Verbose("llTextBox({0},\"{1}\",{2})", avatar, message, chat_channel); + host.llTextBox(avatar, message, chat_channel); + } + + public String llToLower(String src) + { + string strTemp = ((string)src).ToLower(); + Verbose("ToLower(" + src + ")=" + strTemp); + return strTemp; + } + + public String llToUpper(String src) + { + string strTemp = ((string)src).ToUpper(); + Verbose("ToUpper(" + src + ")=" + strTemp); + return strTemp; + } + + public key llTransferLindenDollars(key kPayee, integer iAmount) + { + key kID = new key(Guid.NewGuid()); + string strData = kPayee.ToString() + "," + iAmount.ToString(); + Verbose("TransferLindenDollars(" + kPayee + "," + iAmount + ")"); + host.ExecuteSecondLife("transaction_result", kID, true, (SecondLife.String)strData); + return kID; + } + + public void llTriggerSound(String sound, Float volume) + { + Verbose("TriggerSound(" + sound + "," + volume + ")"); + } + + public void llTriggerSoundLimited(String sound, Float volume, vector tne, vector bsw) + { + Verbose("TriggerSoundLimited(" + sound + "," + volume + "," + tne + "," + bsw + ")"); + } + + public String llUnescapeURL(String url) + { + byte[] data = Encoding.UTF8.GetBytes(url.ToString()); + List list = new List(); + for (int intI = 0; intI < data.Length; intI++) + { + byte chrC = data[intI]; + if (chrC == (byte)'%') + { + if (intI < (data.Length - 2)) + list.Add((byte) + (HexToInt(data[intI + 1]) << 4 + | HexToInt(data[intI + 2]))); + intI += 2; + } + else + { + list.Add(chrC); + } + } + data = list.ToArray(); + int intLen = Array.IndexOf(data, (byte)0x0); + if (intLen < 0) + intLen = data.Length; + string strTmp = Encoding.UTF8.GetString(data, 0, intLen); + Verbose(string.Format(@"llUnescapeURL(""{0}"")=""{1}""", url, strTmp)); + return strTmp; + } + + public void llUnSit(key id) + { + Verbose("UnSit(" + id + ")"); + } + + public Float llVecDist(vector a, vector b) + { + vector vecValue = new vector(a.x - b.x, a.y - b.y, a.z - b.z); + double dblMag = llVecMag(vecValue); + Verbose("VecDist(" + a + "," + b + ")=" + dblMag); + return dblMag; + } + + public Float llVecMag(vector vec) + { + double dblValue = Math.Sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z); + Verbose("VecMag(" + vec + ")=" + dblValue); + return dblValue; + } + + public vector llVecNorm(vector vec) + { + double dblMag = llVecMag(vec); + vector vecValue = new vector(vec.x / dblMag, vec.y / dblMag, vec.z / dblMag); + Verbose("VecNorm(" + vec + ")=" + vecValue); + return vecValue; + } + + public void llVolumeDetect(integer detect) + { + Verbose("VolumeDetect(" + detect + ")"); + } + + public Float llWater(vector offset) + { + Verbose("Water(" + offset + ")"); + return 0F; + } + + public void llWhisper(integer channel, String text) + { + Chat(channel, text, CommunicationType.Whisper); + } + + public vector llWind(vector offset) + { + Verbose("Wind(" + offset + ")"); + return vector.ZERO_VECTOR; + } + + public String llXorBase64StringsCorrect(String s1, String s2) + { + string S1 = Base64ToString(s1.ToString()); + string S2 = Base64ToString(s2.ToString()); + int intLength = S1.Length; + if (S2.Length == 0) + S2 = " "; + while (S2.Length < intLength) + S2 += S2; + S2 = S2.Substring(0, intLength); + StringBuilder sb = new StringBuilder(); + for (int intI = 0; intI < intLength; intI++) + sb.Append((char)(S1[intI] ^ S2[intI])); + string result = StringToBase64(sb.ToString()); + Verbose(@"XorBase64StringsCorrect(""{0}"",""{1}"")=""{2}""", s1, s2, result); + return result; + } + #endregion + } } From 1dd1517089e0d84fdbd220f3905c72d0c45cf89d Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:24:12 +0000 Subject: [PATCH 04/26] Removed duplicate llSetObjectPermMask entry from ConfLSL.xml git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@40 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ConfLSL.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/trunk/Resource/ConfLSL.xml b/trunk/Resource/ConfLSL.xml index 856a983..ec73ae9 100644 --- a/trunk/Resource/ConfLSL.xml +++ b/trunk/Resource/ConfLSL.xml @@ -3160,13 +3160,6 @@ your key in s2 to encrypt or put the encrypted data into s1 with the same key in s2 to decrypt again. - - - llSetObjectPermMask(integer mask, integer value); - - Sets the given permission mask to the new value on the root object - the task is attached to. - From afd285f1e8f91163821beb2d1dc34de617a14085 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:25:15 +0000 Subject: [PATCH 05/26] Updated version number. git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@41 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/LSLEditor.RES | Bin 68820 -> 69608 bytes trunk/Properties/Settings.Designer.cs | 238 +++++++++++++------------- trunk/Properties/Settings.settings | 6 +- trunk/Resource/AssemblyInfo.cs | 2 +- trunk/app.config | 6 +- 5 files changed, 126 insertions(+), 126 deletions(-) diff --git a/trunk/LSLEditor.RES b/trunk/LSLEditor.RES index 6205b44ff91f52f88885c0d2810a522e3bbf9514..26017d1c8ef85a8d1745eb7667818a722edd9c50 100644 GIT binary patch delta 828 zcmaJ<%SyvQ6t$(RV!>@K%HY1H4_6Wb#fpnIQrhB5kTJP!2d7DxnTT2CAFK$v@fVbS zfg8WTt$P=Kgg3R1NJp~@_nvd^opaCoL+f^~ zcOgKAT$u)zXW-35aRHyaly-5UWZa_kqrmwQm8wgl6){1f2zGFD(PrM24KAY^zzL`( zlL4pEDIJ3zu;Rzd)s_=bz@}2#t)8B2!`K&5n~hoOVQF?}6iMbtn<@~Da*awdzsFRc zig*Y*6`Oi=2**;PM#FJHN{vd-5iC$0;SU%Gp#y+wc*BrWaR%IXm|8b9=DY{01<^pD zTdwUVXVXiqOk4L1HU75+0a{z)S>6`MMbw|0a^6pZHGt&$E_h9! // This code was generated by a tool. -// Runtime Version:4.0.30319.225 +// Runtime Version:4.0.30319.239 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -9,20 +9,20 @@ //------------------------------------------------------------------------------ namespace LSLEditor.Properties { - - + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - + public static Settings Default { get { return defaultInstance; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("SecondLife Name")] @@ -34,16 +34,7 @@ namespace LSLEditor.Properties { this["AvatarName"] = value; } } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2.42")] - public string Version { - get { - return ((string)(this["Version"])); - } - } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -55,7 +46,7 @@ namespace LSLEditor.Properties { this["BrowserInWindow"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -67,7 +58,7 @@ namespace LSLEditor.Properties { this["AvatarKey"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("LSLEditor Island")] @@ -79,7 +70,7 @@ namespace LSLEditor.Properties { this["RegionName"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("smtp.emailserver.ext")] @@ -91,7 +82,7 @@ namespace LSLEditor.Properties { this["EmailServer"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("youraddress@yourdomain.ext")] @@ -103,7 +94,7 @@ namespace LSLEditor.Properties { this["EmailAddress"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -115,7 +106,7 @@ namespace LSLEditor.Properties { this["ProxyServer"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -127,7 +118,7 @@ namespace LSLEditor.Properties { this["ProxyUserid"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -139,7 +130,7 @@ namespace LSLEditor.Properties { this["ProxyPassword"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -151,7 +142,7 @@ namespace LSLEditor.Properties { this["BrowserLocation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -163,7 +154,7 @@ namespace LSLEditor.Properties { this["FindLocation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -175,7 +166,7 @@ namespace LSLEditor.Properties { this["BrowserSize"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://www.lslwiki.net/lslwiki/wakka.php?wakka=")] @@ -187,7 +178,7 @@ namespace LSLEditor.Properties { this["Help"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Resource.ConfLSL.xml")] @@ -196,7 +187,7 @@ namespace LSLEditor.Properties { return ((string)(this["ConfLSL"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -208,7 +199,7 @@ namespace LSLEditor.Properties { this["LSLEditorLocation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -220,7 +211,7 @@ namespace LSLEditor.Properties { this["LSLEditorSize"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("25")] @@ -232,7 +223,7 @@ namespace LSLEditor.Properties { this["RegionFPS"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 175")] @@ -244,7 +235,7 @@ namespace LSLEditor.Properties { this["SimulatorSize"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -256,7 +247,7 @@ namespace LSLEditor.Properties { this["SimulatorLocation"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("new.lsl")] @@ -265,7 +256,7 @@ namespace LSLEditor.Properties { return ((string)(this["ExampleName"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("ReleaseNotes.htm")] @@ -274,7 +265,7 @@ namespace LSLEditor.Properties { return ((string)(this["ReleaseNotes"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("254464, 255232")] @@ -286,7 +277,7 @@ namespace LSLEditor.Properties { this["RegionCorner"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -298,7 +289,7 @@ namespace LSLEditor.Properties { this["TabbedDocument"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -310,7 +301,7 @@ namespace LSLEditor.Properties { this["SLColorScheme"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -322,7 +313,7 @@ namespace LSLEditor.Properties { this["SL4SpacesIndent"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -334,7 +325,7 @@ namespace LSLEditor.Properties { this["AutoWordSelection"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] @@ -346,7 +337,7 @@ namespace LSLEditor.Properties { this["GotoLocation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -358,7 +349,7 @@ namespace LSLEditor.Properties { this["WikiSeperateBrowser"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("About.htm")] @@ -367,7 +358,7 @@ namespace LSLEditor.Properties { return ((string)(this["About"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("224, 224, 224")] @@ -379,7 +370,7 @@ namespace LSLEditor.Properties { this["BracketHighlight"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("175, 0")] @@ -391,7 +382,7 @@ namespace LSLEditor.Properties { this["SolutionSize"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("4")] @@ -400,7 +391,7 @@ namespace LSLEditor.Properties { return ((int)(this["TabStops"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("100")] @@ -409,7 +400,7 @@ namespace LSLEditor.Properties { return ((int)(this["ToolTipDelay"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -421,7 +412,7 @@ namespace LSLEditor.Properties { this["CallUpgrade"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("15")] @@ -433,7 +424,7 @@ namespace LSLEditor.Properties { this["RecentFileMax"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -445,7 +436,7 @@ namespace LSLEditor.Properties { this["CheckForUpdates"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -457,7 +448,7 @@ namespace LSLEditor.Properties { this["CheckEveryDay"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -469,7 +460,7 @@ namespace LSLEditor.Properties { this["CheckEveryWeek"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("2010-01-01")] @@ -481,7 +472,7 @@ namespace LSLEditor.Properties { this["CheckDate"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Collections.Specialized.StringCollection RecentProjectList { @@ -492,7 +483,7 @@ namespace LSLEditor.Properties { this["RecentProjectList"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("15")] @@ -504,7 +495,7 @@ namespace LSLEditor.Properties { this["RecentProjectMax"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Collections.Specialized.StringCollection RecentFileList { @@ -515,7 +506,7 @@ namespace LSLEditor.Properties { this["RecentFileList"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -527,7 +518,7 @@ namespace LSLEditor.Properties { this["IndentCursorPlacement"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -539,7 +530,7 @@ namespace LSLEditor.Properties { this["IndentFullAuto"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -551,7 +542,7 @@ namespace LSLEditor.Properties { this["Indent"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Drawing.Font FontEditor { @@ -562,7 +553,7 @@ namespace LSLEditor.Properties { this["FontEditor"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Drawing.Font FontTooltips { @@ -573,7 +564,7 @@ namespace LSLEditor.Properties { this["FontTooltips"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Collections.Specialized.StringCollection Bugreports { @@ -584,7 +575,7 @@ namespace LSLEditor.Properties { this["Bugreports"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("60")] @@ -593,7 +584,7 @@ namespace LSLEditor.Properties { return ((int)(this["PathClipLength"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -605,7 +596,7 @@ namespace LSLEditor.Properties { this["SmtpUserid"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -617,7 +608,7 @@ namespace LSLEditor.Properties { this["SmtpPassword"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("PLAIN")] @@ -629,7 +620,7 @@ namespace LSLEditor.Properties { this["SmtpAuth"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("default.lsl")] @@ -638,7 +629,7 @@ namespace LSLEditor.Properties { return ((string)(this["ExampleTemplate"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -650,7 +641,7 @@ namespace LSLEditor.Properties { this["HelpOnline"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -662,7 +653,7 @@ namespace LSLEditor.Properties { this["HelpOffline"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("LSLEditorHelp.chm")] @@ -671,7 +662,7 @@ namespace LSLEditor.Properties { return ((string)(this["HelpOfflineFile"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -683,7 +674,7 @@ namespace LSLEditor.Properties { this["CVSEXE"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -695,7 +686,7 @@ namespace LSLEditor.Properties { this["CVSROOT"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -707,7 +698,7 @@ namespace LSLEditor.Properties { this["ProjectLocation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -719,7 +710,7 @@ namespace LSLEditor.Properties { this["DeleteOldFiles"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -731,7 +722,7 @@ namespace LSLEditor.Properties { this["CodeCompletionUserVar"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -743,7 +734,7 @@ namespace LSLEditor.Properties { this["CodeCompletion"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -755,7 +746,7 @@ namespace LSLEditor.Properties { this["CommentCStyle"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -767,7 +758,7 @@ namespace LSLEditor.Properties { this["SkipWarnings"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -779,7 +770,7 @@ namespace LSLEditor.Properties { this["SingleQuote"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -791,7 +782,7 @@ namespace LSLEditor.Properties { this["QuotesListVerbose"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Collections.Specialized.StringCollection Plugins { @@ -802,7 +793,7 @@ namespace LSLEditor.Properties { this["Plugins"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -814,7 +805,7 @@ namespace LSLEditor.Properties { this["CodeCompletionArguments"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -826,7 +817,7 @@ namespace LSLEditor.Properties { this["IndentWarning"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -838,7 +829,7 @@ namespace LSLEditor.Properties { this["IndentAutoCorrect"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -850,7 +841,7 @@ namespace LSLEditor.Properties { this["SvnExe"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -862,7 +853,7 @@ namespace LSLEditor.Properties { this["SvnUserid"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -874,7 +865,7 @@ namespace LSLEditor.Properties { this["SvnPassword"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("ANSI")] @@ -886,7 +877,7 @@ namespace LSLEditor.Properties { this["OutputFormat"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -898,7 +889,7 @@ namespace LSLEditor.Properties { this["ShowSolutionExplorer"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -910,7 +901,7 @@ namespace LSLEditor.Properties { this["WorkingDirectory"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Production")] @@ -922,7 +913,7 @@ namespace LSLEditor.Properties { this["XSecondLifeShard"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -934,7 +925,7 @@ namespace LSLEditor.Properties { this["AutoSaveOnDebug"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -946,7 +937,7 @@ namespace LSLEditor.Properties { this["ToolTip"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -958,7 +949,7 @@ namespace LSLEditor.Properties { this["HelpNewTab"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -970,7 +961,7 @@ namespace LSLEditor.Properties { this["CodeCompletionAnimation"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("NoteCard.txt")] @@ -982,7 +973,7 @@ namespace LSLEditor.Properties { this["ExampleNameNotecard"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -994,7 +985,7 @@ namespace LSLEditor.Properties { this["llGetScriptName"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -1006,7 +997,7 @@ namespace LSLEditor.Properties { this["StatesInGlobalFunctions"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("LSLEditor parcel")] @@ -1018,7 +1009,7 @@ namespace LSLEditor.Properties { this["ParcelName"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Description of LSLEditor parcel")] @@ -1030,7 +1021,7 @@ namespace LSLEditor.Properties { this["ParcelDescription"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("00000000-0000-0000-0000-000000000000")] @@ -1042,7 +1033,7 @@ namespace LSLEditor.Properties { this["ParcelOwner"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("00000000-0000-0000-0000-000000000000")] @@ -1054,7 +1045,7 @@ namespace LSLEditor.Properties { this["ParcelGroup"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("512")] @@ -1066,7 +1057,7 @@ namespace LSLEditor.Properties { this["ParcelArea"] = value; } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute(@" @@ -1087,7 +1078,7 @@ namespace LSLEditor.Properties { return ((string)(this["Example"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://lsleditor.sourceforge.net/check4update.php?")] @@ -1096,7 +1087,7 @@ namespace LSLEditor.Properties { return ((string)(this["Update"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://www.lsleditor.org/examples/")] @@ -1105,7 +1096,7 @@ namespace LSLEditor.Properties { return ((string)(this["Examples"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://www.lsleditor.org/uploadscript/")] @@ -1114,7 +1105,7 @@ namespace LSLEditor.Properties { return ((string)(this["Upload"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Resource.ConfCSharp.xml")] @@ -1123,7 +1114,7 @@ namespace LSLEditor.Properties { return ((string)(this["ConfCSharp"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://lsleditor.sourceforge.net/update.php")] @@ -1132,7 +1123,7 @@ namespace LSLEditor.Properties { return ((string)(this["UpdateManifest"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("Resource.ToolsOptions.xml")] @@ -1141,7 +1132,7 @@ namespace LSLEditor.Properties { return ((string)(this["ToolsOptions"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("https://sourceforge.net/tracker/?group_id=319248")] @@ -1150,7 +1141,7 @@ namespace LSLEditor.Properties { return ((string)(this["ContactUrl"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://www.lsleditor.org/donate.htm")] @@ -1159,7 +1150,7 @@ namespace LSLEditor.Properties { return ((string)(this["DonateUrl"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://wiki.secondlife.com/wiki/Special:Search?go=Go&search=")] @@ -1168,7 +1159,7 @@ namespace LSLEditor.Properties { return ((string)(this["Help2"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://www.lslwiki.net/lslwiki/wakka.php?wakka=")] @@ -1177,7 +1168,7 @@ namespace LSLEditor.Properties { return ((string)(this["Help1"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("https://sourceforge.net/projects/lsleditor/forums")] @@ -1186,7 +1177,7 @@ namespace LSLEditor.Properties { return ((string)(this["ForumLSLEditor"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("http://metaversegames.net/questions/lsl")] @@ -1195,7 +1186,7 @@ namespace LSLEditor.Properties { return ((string)(this["qasite"])); } } - + [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -1204,7 +1195,7 @@ namespace LSLEditor.Properties { return ((string)(this["svnloc"])); } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -1216,7 +1207,7 @@ namespace LSLEditor.Properties { this["VersionControl"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] @@ -1228,5 +1219,14 @@ namespace LSLEditor.Properties { this["VersionControlSVN"] = value; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("2.43")] + public string Version { + get { + return ((string)(this["Version"])); + } + } } } diff --git a/trunk/Properties/Settings.settings b/trunk/Properties/Settings.settings index e0bb926..7b586d2 100644 --- a/trunk/Properties/Settings.settings +++ b/trunk/Properties/Settings.settings @@ -5,9 +5,6 @@ SecondLife Name - - 2.42 - False @@ -332,5 +329,8 @@ True + + 2.43 + \ No newline at end of file diff --git a/trunk/Resource/AssemblyInfo.cs b/trunk/Resource/AssemblyInfo.cs index 2742e59..8b54935 100644 --- a/trunk/Resource/AssemblyInfo.cs +++ b/trunk/Resource/AssemblyInfo.cs @@ -69,7 +69,7 @@ using System.Runtime.CompilerServices; // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("2.42.*")] +[assembly: AssemblyVersion("2.43.*")] // // In order to sign your assembly you must specify a key to use. Refer to the diff --git a/trunk/app.config b/trunk/app.config index 5bdcaa3..57fa0ea 100644 --- a/trunk/app.config +++ b/trunk/app.config @@ -243,9 +243,6 @@ - - 2.42 - Resource.ConfLSL.xml @@ -327,6 +324,9 @@ + + 2.43 + \ No newline at end of file From 2dbe24cc4279b946d28de1ea66477e02f36231fc Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:25:56 +0000 Subject: [PATCH 06/26] Fixed file output where UTF-8 would have a BOM prefixed. git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@42 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Editor/SyntaxRichTextBox.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/trunk/Editor/SyntaxRichTextBox.cs b/trunk/Editor/SyntaxRichTextBox.cs index 1e20091..ddb55d9 100644 --- a/trunk/Editor/SyntaxRichTextBox.cs +++ b/trunk/Editor/SyntaxRichTextBox.cs @@ -2182,7 +2182,15 @@ namespace LSLEditor enc = Encoding.Default; break; } - StreamWriter sw = new StreamWriter(strPath,false, enc); + StreamWriter sw; + if (enc != Encoding.UTF8) + { + sw = new StreamWriter(strPath, false, enc); + } + else + { + sw = new StreamWriter(strPath); + } sw.Write(this.Text); sw.Close(); //this.SaveFile(strPath, RichTextBoxStreamType.PlainText); From 305bd34203ae6aaa03bf5147a6046fe35b04fbcb Mon Sep 17 00:00:00 2001 From: niel-archer Date: Tue, 29 Nov 2011 13:26:42 +0000 Subject: [PATCH 07/26] Updated ReleaseNotes.htm and build locations git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@43 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ReleaseNotes.htm | 36 +++++++++++++++++++++++++++++++-- trunk/lsleditor.csproj | 8 +++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 14a0184..3698e07 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -1,6 +1,38 @@
-

Release 2.40

+

Release 2.43

+ +

+ 2011-
+ - Added: event +

    +
  • transaction_result
  • +
+ - Added: stub functions for: +
    +
  • llCastRay
  • +
  • llClearLinkMedia
  • +
  • llGetDisplayName
  • +
  • llGetLinkMedia
  • +
  • llGetMassMKS
  • +
  • llGetMemoryLimit
  • +
  • llGetPhysicsMaterial
  • +
  • llLinkSitTarget
  • +
  • llManageEstateAccess
  • +
  • llScriptProfiler
  • +
  • llSetAngularVelocity
  • +
  • llSetKeyframedMotion
  • +
  • llSetLinkMedia
  • +
  • llSetMemoryLimit
  • +
  • llSetPhysicsMaterial
  • +
  • llSetVelocity
  • +
  • llTransferLindenDollars
  • +
+ - Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps. +
+

+ +

Release 2.40

April 17 2010 14:51 (local time)
- Added: stub functions for: @@ -12,7 +44,7 @@

  • llHTTPResponse
  • llGetHTTPHeader
  • -
    +

    Release 2.39

    diff --git a/trunk/lsleditor.csproj b/trunk/lsleditor.csproj index 32de471..56aaf45 100644 --- a/trunk/lsleditor.csproj +++ b/trunk/lsleditor.csproj @@ -47,7 +47,7 @@ v2.0 - bin\Debug\ + ..\bin\Debug\ false 285212672 false @@ -71,7 +71,7 @@ AllRules.ruleset - bin\Release\ + ..\bin\Release\ false 285212672 false @@ -721,7 +721,9 @@ - + + Designer + Designer SimulatorConsole.cs From 6ad822587a56bd216697f15a8597211a089e9d15 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 16 Dec 2011 22:41:00 +0000 Subject: [PATCH 08/26] Added 78 constants, reorganised a bit. git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@44 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ConfLSL.xml | 1198 +++++++++++++++------------- trunk/Resource/ReleaseNotes.htm | 289 ++++--- trunk/SecondLife/SecondLifeMain.cs | 24 +- 3 files changed, 855 insertions(+), 656 deletions(-) diff --git a/trunk/Resource/ConfLSL.xml b/trunk/Resource/ConfLSL.xml index ec73ae9..f8a97c7 100644 --- a/trunk/Resource/ConfLSL.xml +++ b/trunk/Resource/ConfLSL.xml @@ -3482,21 +3482,47 @@ together when calling the library functions to set the same value to more than one status flag Status Constants - + + Controls whether the object can be grabbed. + A grab is the default action when in third person, and is + available as the hand tool in build mode. + This is useful for physical objects that you don't want other + people to be able to trivially disturb. + The default if FALSE + + Prevent click-and-drag movement on all prims in the object. + Argument(s) passed to function had a bounds error. + + + Controls whether the object is returned to the owners + inventory if it wanders off the edge of the world. It is + useful to set this status TRUE for things like bullets + or rockets. The default is TRUE + + .An internal error occurred. + Function was called with malformed parameters. + .Object or other item was not found. + Feature not supported. + + + Result of function call was success + + Controls whether the object moves physically. This controls the same flag that the ui checkbox for Physical controls. The default is FALSE. - + Controls whether the object collides or not. Setting the value to TRUE makes the object non-colliding with all objects. It is a good idea to use this for most objects that move or rotate, but are non-physical. It is also useful for simulating volumetric lighting. The default is FALSE. - - - + + + + Controls whether the object can physically rotate around the specific axis or not. This flag has no meaning for non-physical objects. Set the value to FALSE @@ -3506,37 +3532,25 @@ the effect is a sit-and-spin device. They spin around the Z axis (up) but not around the X or Y axis. - - Controls whether the object can be grabbed. - A grab is the default action when in third person, and is - available as the hand tool in build mode. - This is useful for physical objects that you dont want other - people to be able to trivially disturb. - The default if FALSE - - + Controls whether the object can cross region boundaries and move more than 20 meters from its creation point. The default if FALSE. - - Controls whether the object is returned to the owners - inventory if it wanders off the edge of the world. It is - useful to set this status TRUE for things like bullets - or rockets. The default is TRUE - + Argument(s) passed to function had a type mismatch. + Whitelist Failed. These constants can be combined using the binary | operator and are used in the llSensor and related calls. Object Type Constants - - Objects in world that are agents. - Objects in world that are running a script or currently pysically moving. + + Objects in world that are agents. + Static in-world objects. @@ -3554,112 +3568,122 @@ used in conjunction. Permission Constants - - If this permission is enabled, the object can successfully - call llGiveMoney to debit the owners account. - - - If this permission enabled, the object can successfully - call the llTakeControls libray call. - - - (not yet implemented) - - - If this permission is enabled, the object can successfully - call llStartAnimation for the avatar that owns this - object. - - + If this permission is enabled, the object can successfully call llAttachToAvatar to attach to the given avatar. - - (not yet implemented) - - + If this permission is enabled, the object can successfully call llCreateLink, llBreakLink, and llBreakAllLinks to change links to other objects. - + + + If this permission is enabled, the object can successfully + call llGiveMoney to debit the owners account. + + (not yet implemented) - + (not yet implemented) + + (not yet implemented) + + + (not yet implemented) + + + If this permission enabled, the object can successfully + call the llTakeControls libray call. + + + + If this permission is enabled, the object can successfully + call llStartAnimation for the avatar that owns this + object. + These constants can be used to refer to a specific inventory type in calls to llGetInventoryNumber andllGetInventoryName. Inventory Constants - - - - - - - - - Each constant refers to the named type of inventory. - + + + + + + + + + + + + These constants are used to refer to attachment points in calls to llAttachToAvatar. Attachment Constants - - Attach to the avatar chest. - - - Attach to the avatar head. - - - Attach to the avatar left shoulder. - - - Attach to the avatar right shoulder. - - - Attach to the avatar left hand. - - - Attach to the avatar right hand. - - - Attach to the avatar left foot. - - - Attach to the avatar right foot. - Attach to the avatar back. - - Attach to the avatar pelvis. + + Attach to the avatar belly. - - Attach to the avatar mouth. + + Attach to the avatar chest. Attach to the avatar chin. + + Attach to the avatar head. + + Attach to the avatar left ear. - - Attach to the avatar right ear. - Attach to the avatar left eye. - - Attach to the avatar right eye. + + Attach to the avatar left foot. + + + Attach to the avatar left hand. + + + Attach to the avatar left hip. + + + Attach to the avatar left lower arm. + + + Attach to the avatar lower left leg. + + + Attach to the avatar left pectoral. (depreciated) + + + Attach to the avatar left shoulder. + + + Attach to the avatar lower upper leg. + + + + Attach to the avatar mouth. Attach to the avatar nose. + + Attach to the avatar pelvis. + + Attach to the avatar right upper arm. @@ -3669,88 +3693,89 @@ Attach to the avatar left upper arm. - - Attach to the avatar left lower arm. + + Attach to the avatar right ear. + + + Attach to the avatar right eye. + + + Attach to the avatar right foot. + + + Attach to the avatar right hand. Attach to the avatar right hip. - - Attach to the avatar right upper leg. - Attach to the avatar right lower leg. - - Attach to the avatar left hip. - - - Attach to the avatar lower upper leg. - - - Attach to the avatar lower left leg. - - - Attach to the avatar belly. - Attach to the avatar right pectoral. (depreciated) - - Attach to the avatar left pectoral. (depreciated) + + Attach to the avatar right shoulder. + + + Attach to the avatar right upper leg. + + + + - - - - - + These constants are only used in calls to llModifyLand. The constants are equivalent to the similarly labelled user interface elements for editing land in the viewer. Land Constants + + Use a large brush size. + Action to level the land. - - Action to raise the land. - Action to lower the land. - - Use a small brush size. - Use a medium brush size. - - Use a large brush size. + + + Action to raise the land. + + + Use a small brush size. + + These constants are used in calls to llSetLinkColor and llMessageLinked. Link Constants - - This targets every object in the linked set. - - - This targets the root of the linked set. + + This targets every object except the root in the linked set. This targets every object in the linked set except the object with the script. - - This targets every object except the root in the linked set. + + This targets the root of the linked set. + + This targets every object in the linked set. + + These constants are used in llTakeControls as well @@ -3790,9 +3815,6 @@ These constants are used in the changed event handler. Change Constants - - The object inventory has changed. - The object inventory has changed because an item was added through the llAllowInventoryDrop interface. @@ -3800,19 +3822,26 @@ The object color has changed. - - The object shape has changed, eg, a box to a cylinder - - - The object scale has changed. - - - The texture offset, scale rotation, or simply the object - texture has changed. + + The object inventory has changed. The object has linked or its links were broken. + + + + + The object scale has changed. + + + The object shape has changed, eg, a box to a cylinder + + + + The texture offset, scale rotation, or simply the object + texture has changed. + These constants are used to determine the variable type @@ -3848,15 +3877,25 @@ in an expression to determine the specified information about an agent. Agent Info Constants - - The agent is flying. - - + + The agent has attachments. - + + + + + The agent is flying. + + + + + + The agent has scripted attachments. + + These constants are used in the llSetTextureAnim api to @@ -3868,14 +3907,11 @@ Loop the texture animation. - - Play animation in reverse direction. - play animation going forwards, then backwards. - - slide in the X direction, instead of playing separate frames. + + Play animation in reverse direction. Animate texture rotation. @@ -3883,153 +3919,163 @@ Animate the texture scale. + + slide in the X direction, instead of playing separate frames. + These constants are used in calls to the llParticleSystem api to specify parameters. Particle System Parameters - + + Particles bounce off of a plane at the objects Z height. + + + The particle glows. + + + a float which determines the ending alpha of the object. + + + a vector <r, g, b> which determines the ending + color of the object. + + + a vector <sx, sy, z>, which is the ending + size of the particle billboard in meters (z is ignored). + + Each particle that is emitted by the particle system is simulated based on the following flags. To use multiple flags, bitwise or (|) them together. PSYS_PART_FLAGS Values - - Interpolate both the color and alpha from the start - value to the end value. - - - Interpolate the particle scale from the start value - to the end value. - - - Particles have their velocity damped towards the wind velocity. - - - Particles bounce off of a plane at the objects Z height. - - + The particle position is relative to the source objects position. - + The particle orientation is rotated so the vertical axis faces towards the particle velocity. - - The particle heads towards the location of the target - object as defined by PSYS_SRC_TARGET_KEY. + + Interpolate both the color and alpha from the start + value to the end value. - - The particle glows. + + Interpolate the particle scale from the start value + to the end value. - - (not implemented) + + age in seconds of a particle at which it dies. - - (not implemented) - - - (not implemented) - - - The pattern which is used to generate particles. - Use one of the following values: - PSYS_SRC_PATTERN Values - - + Drop particles at the source position. - + Shoot particles out in all directions, using the burst parameters. - + Shoot particles across a 2 dimensional area defined by the arc created from PSYS_SRC_OUTERANGLE. There will be an open area defined by PSYS_SRC_INNERANGLE within the larger arc. - + Shoot particles out in a 3 dimensional cone with an outer arc of PSYS_SRC_OUTERANGLE and an inner open area defined by PSYS_SRC_INNERANGLE. - - a vector <r,g,b> which determines the starting - color of the object. - - + a float which determines the starting alpha of the object. - - a vector <r, g, b> which determines the ending - color of the object. + + a vector <r, g, b> which determines the starting colour of the object. - - a float which determines the ending alpha of the object. - - + a vector <sx, sy, z>, which is the starting size of the particle billboard in meters (z is ignored). - - a vector <sx, sy, z>, which is the ending - size of the particle billboard in meters (z is ignored). + + + The particle heads towards the location of the target + object as defined by PSYS_SRC_TARGET_KEY. - - age in seconds of a particle at which it dies. + + Particles have their velocity damped towards the wind velocity. - + + a vector <x, y, z> which is the acceleration to apply on particles. - - an asset name for the texture to use for the particles. - - + how often to release a particle burst (float seconds). - + + Area in radians specifying where particles + will NOT be created (for ANGLE patterns) + + + Area in radians filled with particles + (for ANGLE patterns) (if lower than PSYS_SRC_ANGLE_BEGIN, + acts as PSYS_SRC_ANGLE_BEGIN itself, + and PSYS_SRC_ANGLE_BEGIN acts as PSYS_SRC_ANGLE_END) + + specifies the inner angle of the arc created by the PSYS_PART_SRC_PATTERN_ANGLE or PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. The area specified will not have particles in it.. - + + how many particles to release in a burst. + + + what distance from the center of the object + to create the particles. + + + minimum speed that a particle should be moving. + + + maximum speed that a particle should be moving. + + + how long this particle system should last, + 0.0 menas forever. + + + Sets the angular velocity to rotate the axis + that SRC_PATTERN_ANGLE and + SRC_PATTERN_ANGLE_CONE use.. + + specifies the outer angle of the arc created by the PSYS_PART_SRC_PATTERN_ANGLE or PSYS_PART_SRC_PATTERN_ANGLE_CONE source pattern. The area between the outer and inner angle will be filled with particles.. - - how many particles to release in a burst. + + The pattern which is used to generate particles. + Use one of the following values: + PSYS_SRC_PATTERN Values - - what distance from the center of the object - to create the particles. - - - minimum speed that a particle should be moving. - - - maximum speed that a particle should be moving. - - - how long this particle system should last, - 0.0 menas forever. - - + + + + + + the key of a target object to move towards if PSYS_PART_TARGET_POS_MASK is enabled. - - Sets the angular velocity to rotate the axis - that SRC_PATTERN_ANGLE and - SRC_PATTERN_ANGLE_CONE use.. + + an asset name for the texture to use for the particles. @@ -4037,16 +4083,16 @@ llRequestAgentData api to collect information about an agent which will be provided in the dataserver event. - Texture Animation Constants - - "1" for online "0" for offline. + + The date the agent was born returned in ISO 8601 format of YYYY-MM-DD. The name of the agent. - - The date the agent was born returned in ISO 8601 format of YYYY-MM-DD. + + "1" for online "0" for offline. + Returns the agent ratings as a comma separated string of six integers. They are: @@ -4058,6 +4104,10 @@ 5. Positive rated building 6. Negative rated building + + + + LSL provides a small collection of floating point @@ -4067,20 +4117,17 @@ but are sometimes useful for other applications such as specifying arc radians to sensor or particle system functions. Float Constants - - 3.14159265 - The radians of a hemicircle. - - - 6.28318530 - The radians of a circle. - - - 1.57079633 - The radians of a quarter circle. - 0.01745329 - Number of radians per degree. You can use this to convert degrees to radians by multiplying the degrees by this number. + + 3.14159265 - The radians of a hemicircle. + + + 1.57079633 - The radians of a quarter circle. + 57.2957795 - Number of degrees per radian. You can use this number to convert radians to degrees by @@ -4089,28 +4136,46 @@ 1.41421356 - The square root of 2. + + 6.28318530 - The radians of a circle. + There is only one key constant which acts as an invalid key: NULL_KEY. + + + + + + + There is one uncategorized integer constant which is used in some of the texturing and coloring api: ALL_SIDES + There is one uncategorized string constant which is used in the dataserver event: EOF + There is only one vector constant which acts as a zero vector: ZERO_VECTOR = <0,0,0>. + + There is only one rotation constant which acts as a zero rotation: ZERO_ROTATION = <0,0,0,1>. + Parameters + + + A vector of timescales for exponential decay of the vehicles linear velocity along its preferred axes of @@ -4150,16 +4215,6 @@ The height (above the terrain or water, or global) at which the vehicle will try to hover. - - A slider between minimum (0.0 = bouncy) - and maximum (1.0 = fast as possible) damped motion of the - hover behavior. - - - The period of bounce (or timescale of exponential approach, - depending on the hover efficiency) for the - vehicle to hover to the proper height. - A slider between minimum (0.0) and maximum anti-gravity (1.0). @@ -4223,6 +4278,9 @@ Flags + + + Old, changed to VEHICLE_FLAG_NO_DEFLECTION_UP @@ -4257,142 +4315,6 @@ Types - - Simple vehicle that bumps along the ground, - and likes to move along its local x-axis. - // most friction for left-right, least for up-down - llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <30, 1, 1000> ); - // no angular friction - llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000, 1000, 1000> ); - // no linear motor - llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1000 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 120 ); - // no angular motor - llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1000 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 120 ); - // no hover (but with timescale of 10 sec if enabled) - llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); - llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 10 ); - llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 ); - llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 ); - // maximum linear deflection with timescale of 1 second - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1 ); - // no angular deflection - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 ); - // no vertical attractor (doesnt mind flipping over) - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 ); - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 ); - // no banking - llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 ); - llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 ); - llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 10 ); - // default rotation of local frame - llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); - // remove these flags - llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY - | VEHICLE_FLAG_HOVER_TERRAIN_ONLY - | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT - | VEHICLE_FLAG_HOVER_UP_ONLY ); - // set these flags (the limit_roll flag will have no effect - // until banking is enabled, if ever) - llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP - | VEHICLE_FLAG_LIMIT_ROLL_ONLY - | VEHICLE_FLAG_LIMIT_MOTOR_UP ); - - - Another vehicle that bounces along the ground but needs - the motors to be driven from external controls or - timer events. - // most friction for left-right, least for up-down - llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <100, 2, 1000> ); - // no angular friction - llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000, 1000, 1000> ); - // linear motor wins after about a second, decays after about a minute - llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 ); - // angular motor wins after a second, decays in less time than that - llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.8 ); - // no hover - llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); - llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0 ); - llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 ); - llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 ); - // maximum linear deflection with timescale of 2 seconds - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 2 ); - // no angular deflection - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 ); - // critically damped vertical attractor - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 ); - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10 ); - // weak negative critically damped banking - llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.2 ); - llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 ); - llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 ); - // default rotation of local frame - llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); - // remove these flags - llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY - | VEHICLE_FLAG_HOVER_TERRAIN_ONLY - | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT); - // set these flags - llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP - | VEHICLE_FLAG_LIMIT_ROLL_ONLY - | VEHICLE_FLAG_HOVER_UP_ONLY - | VEHICLE_FLAG_LIMIT_MOTOR_UP ); - - - Hovers over water with lots of friction and some anglar deflection. - // least for forward-back, most friction for up-down - llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <10, 3, 2> ); - // uniform angular friction (setting it as a scalar rather than a vector) - llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 ); - // linear motor wins after about five seconds, decays after about a minute - llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 ); - // angular motor wins after four seconds, decays in same amount of time - llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 4 ); - // hover - llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); - llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 ); - llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 2.0 ); - llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 ); - // halfway linear deflection with timescale of 3 seconds - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 ); - llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3 ); - // angular deflection - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5 ); - llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 ); - // somewhat bounscy vertical attractor - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5 ); - llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 5 ); - // weak negative damped banking - llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.3 ); - llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.8 ); - llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 ); - // default rotation of local frame - llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); - // remove these flags - llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_TERRAIN_ONLY - | VEHICLE_FLAG_LIMIT_ROLL_ONLY - | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT); - // set these flags - llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP - | VEHICLE_FLAG_HOVER_WATER_ONLY - | VEHICLE_FLAG_HOVER_UP_ONLY - | VEHICLE_FLAG_LIMIT_MOTOR_UP ); - Uses linear deflection for lift, no hover, and banking to turn. // very little friction along forward-back axis @@ -4480,17 +4402,147 @@ | VEHICLE_FLAG_HOVER_UP_ONLY | VEHICLE_FLAG_LIMIT_MOTOR_UP ); - - - - - - - - - - - + + Hovers over water with lots of friction and some anglar deflection. + // least for forward-back, most friction for up-down + llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <10, 3, 2> ); + // uniform angular friction (setting it as a scalar rather than a vector) + llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 10 ); + // linear motor wins after about five seconds, decays after about a minute + llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 5 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 ); + // angular motor wins after four seconds, decays in same amount of time + llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 4 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 4 ); + // hover + llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); + llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0.5 ); + llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 2.0 ); + llSetVehicleFloatParam( VEHICLE_BUOYANCY, 1 ); + // halfway linear deflection with timescale of 3 seconds + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3 ); + // angular deflection + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 5 ); + // somewhat bounscy vertical attractor + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5 ); + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 5 ); + // weak negative damped banking + llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.3 ); + llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.8 ); + llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 ); + // default rotation of local frame + llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); + // remove these flags + llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_TERRAIN_ONLY + | VEHICLE_FLAG_LIMIT_ROLL_ONLY + | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT); + // set these flags + llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP + | VEHICLE_FLAG_HOVER_WATER_ONLY + | VEHICLE_FLAG_HOVER_UP_ONLY + | VEHICLE_FLAG_LIMIT_MOTOR_UP ); + + + Another vehicle that bounces along the ground but needs + the motors to be driven from external controls or + timer events. + // most friction for left-right, least for up-down + llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <100, 2, 1000> ); + // no angular friction + llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000, 1000, 1000> ); + // linear motor wins after about a second, decays after about a minute + llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 ); + // angular motor wins after a second, decays in less time than that + llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.8 ); + // no hover + llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); + llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0 ); + llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 ); + llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 ); + // maximum linear deflection with timescale of 2 seconds + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 2 ); + // no angular deflection + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 ); + // critically damped vertical attractor + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 ); + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10 ); + // weak negative critically damped banking + llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.2 ); + llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 ); + llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 1 ); + // default rotation of local frame + llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); + // remove these flags + llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY + | VEHICLE_FLAG_HOVER_TERRAIN_ONLY + | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT); + // set these flags + llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP + | VEHICLE_FLAG_LIMIT_ROLL_ONLY + | VEHICLE_FLAG_HOVER_UP_ONLY + | VEHICLE_FLAG_LIMIT_MOTOR_UP ); + + + + Simple vehicle that bumps along the ground, + and likes to move along its local x-axis. + // most friction for left-right, least for up-down + llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <30, 1, 1000> ); + // no angular friction + llSetVehicleVectorParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000, 1000, 1000> ); + // no linear motor + llSetVehicleVectorParam( VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1000 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 120 ); + // no angular motor + llSetVehicleVectorParam( VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0> ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1000 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 120 ); + // no hover (but with timescale of 10 sec if enabled) + llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 ); + llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 10 ); + llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 10 ); + llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 ); + // maximum linear deflection with timescale of 1 second + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1 ); + llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1 ); + // no angular deflection + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0 ); + llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10 ); + // no vertical attractor (doesnt mind flipping over) + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1 ); + llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 1000 ); + // no banking + llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 0 ); + llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 1 ); + llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 10 ); + // default rotation of local frame + llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> ); + // remove these flags + llRemoveVehicleFlags( VEHICLE_FLAG_HOVER_WATER_ONLY + | VEHICLE_FLAG_HOVER_TERRAIN_ONLY + | VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT + | VEHICLE_FLAG_HOVER_UP_ONLY ); + // set these flags (the limit_roll flag will have no effect + // until banking is enabled, if ever) + llSetVehicleFlags( VEHICLE_FLAG_NO_DEFLECTION_UP + | VEHICLE_FLAG_LIMIT_ROLL_ONLY + | VEHICLE_FLAG_LIMIT_MOTOR_UP ); + + + + + Constants that do not fit into any of the previously defined categories. @@ -4505,32 +4557,72 @@ - - - - - - - + + + When the prim is touched, the buy dialog is opened + + + When the prim is touched, the web media dialog is opened" + + + Performs the default action: when the prim is touched, touch events are triggered" + + + When the prim is touched, the object inventory dialog is opened + + + When the prim is touched, the pay dialog is opened + + + When the prim is touched, html-on-a-prim is enabled? + + + When the prim is touched, the avatar sits upon it + + + When the prim is touched, touch events are triggered" + + + "text/html", only valid for embedded browsers on content owned by the person viewing. Falls back to "text/plain" otherwise. DEBUG_CHANNEL is an integer constant that, when passed to llSay, llWhisper, or llShout as a channel parameter, will print text to the Script Warning/Error Window. It has the value '2147483647'. - + Used with llSetPhysicsMaterial to enable the density value. Must be between 1.0 and 22587.0 (in Kg/m^3 -- see if you can figure out what 22587 represents) + + Add the agent to this estate's Allowed Residents list. + Remove the agent from this estate's Allowed Residents list. + Add the group to this estate's Allowed groups list. + Remove the group from this estate's Allowed groups list. + Add the agent to this estate's Banned residents list. + Remove the agent from this estate's Banned residents list. + + Used with llSetPhysicsMaterial to enable the friction value. Must be between 0.0 and 255.0 + Used with llSetPhysicsMaterial to enable the gravity multiplier value. Must be between -1.0 and +28.0 + + - - - - - - - - + + + + For use with KFM_COMMAND. + For use with KFM_COMMAND. + For use with KFM_COMMAND. + + + For use with KFM_MODE. + For use with KFM_MODE. + + For use with KFM_MODE. + For use with KFM_MODE. + For use with KFM_DATA. + For use with KFM_DATA. + @@ -4541,12 +4633,61 @@ + + + Gets the object's creator key. + If id is an avatar, a NULL_KEY is returned. + + + Gets the object's description. + If id is an avatar, an empty string is returned. + + + Gets the prims's group key. + If id is an avatar, a NULL_KEY is returned. + + + Gets the object's name. + + + Gets an object's owner's key. + If id is group owned, a NULL_KEY is returned. + + + Gets the object's position in region coordinates. + + + Gets the object's rotation. + + + Gets the object's velocity. + + + + + + + - + + + + + + + + + + + + + + + The parcel's avatar visibility setting. (1 char.). @@ -4554,7 +4695,9 @@ + + @@ -4563,65 +4706,44 @@ + + - - - - - - - - - - - - - Use this to get or set the parcel media MIME type (e.g. "text/html"). - - - Use this to get or set the parcel media pixel resolution. - Use this to get or set the parcel media description. Used to get or set the parcel's media looping variable. - - - - - - - - - - - - - - - - - - - - - - + + + + + Use this to get or set the parcel media pixel resolution. + + + + + + Use this to get or set the parcel media MIME type (e.g. "text/html"). + + + + + + + - - @@ -4645,7 +4767,10 @@ - + + + PRIM_GLOW is used to get or set the glow status of the face. + @@ -4663,12 +4788,50 @@ - + + Boolean. Gets/Sets the default image state (the image that the user sees before a piece of media is active) for the chosen face. The default image is specified by Second Life's server for that media type. + Boolean. Gets/Sets whether auto-looping is enabled. + Boolean. Gets/Sets whether the media auto-plays when a Resident can view it. + Boolean. Gets/Sets whether auto-scaling is enabled. Auto-scaling forces the media to the full size of the texture. + Boolean. Gets/Sets whether clicking the media triggers auto-zoom and auto-focus on the media. + Integer. Gets/Sets the style of controls. Can be either PRIM_MEDIA_CONTROLS_STANDARD or PRIM_MEDIA_CONTROLS_MINI. + Mini web navigation controls; does not include an address bar. + Standard web navigation controls. + String. Gets/Sets the current url displayed on the chosen face. Changing this URL causes navigation. 1024 characters Maximum. + Boolean. Gets/Sets whether the first click interaction is enabled. + Integer. Gets/Sets the height of the media in pixels. + String. Gets/Sets the home URL for the chosen face. 1024 characters maximum. + + + + + Integer. Gets/Sets the permissions mask that control who can see the media control bar above the object:: PRIM_MEDIA_PERM_ANYONE, PRIM_MEDIA_PERM_GROUP, PRIM_MEDIA_PERM_NONE, PRIM_MEDIA_PERM_OWNER + Integer. Gets/Sets the permissions mask that control who can interact with the object: PRIM_MEDIA_PERM_ANYONE, PRIM_MEDIA_PERM_GROUP, PRIM_MEDIA_PERM_NONE, PRIM_MEDIA_PERM_OWNER + String. Gets/Sets the whitelist as a string of escaped, comma-separated URLs. This string can hold up to 64 URLs or 1024 characters, whichever comes first. + Boolean. Gets/Sets whether navigation is restricted to URLs in PRIM_MEDIA_WHITELIST. + Integer. Gets/Sets the width of the media in pixels. + + + + + + Use the convex hull of the prim shape for physics (this is the default for mesh objects). + Ignore this prim in the physics shape. NB: This cannot be applied to the root prim. + Use the normal prim shape for physics (this is the default for all non-mesh objects). + Allows you to set the physics shape type of a prim via lsl. Permitted values are: + PRIM_PHYSICS_SHAPE_NONE, PRIM_PHYSICS_SHAPE_PRIM, PRIM_PHYSICS_SHAPE_CONVEX + + - - + + + + + + Render inside out (inverts the normals). + Render an X axis mirror of the sculpty. @@ -4677,13 +4840,15 @@ + - - - + + + + @@ -4698,31 +4863,15 @@ - - PRIM_GLOW is used to get or set the glow status of the face. - + Disables profiling + Enables memory profiling - - - Area in radians specifying where particles - will NOT be created (for ANGLE patterns) - - - Area in radians filled with particles - (for ANGLE patterns) (if lower than PSYS_SRC_ANGLE_BEGIN, - acts as PSYS_SRC_ANGLE_BEGIN itself, - and PSYS_SRC_ANGLE_BEGIN acts as PSYS_SRC_ANGLE_END) - - - - - - PUBLIC_CHANNEL is an integer constant that, when passed to llSay, llWhisper, or llShout as a channel parameter, will print text to the publicly heard chat channel. Has the value '0'. + @@ -4730,78 +4879,21 @@ + + - - - - - - - - - - - - - Gets the object's name. - - - Gets the object's description. - If id is an avatar, an empty string is returned. - - - Gets the object's position in region coordinates. - - - Gets the object's rotation. - - - Gets the object's velocity. - - - Gets an object's owner's key. - If id is group owned, a NULL_KEY is returned. - - - Gets the prims's group key. - If id is an avatar, a NULL_KEY is returned. - - - Gets the object's creator key. - If id is an avatar, a NULL_KEY is returned. - + Used with llSetPhysicsMaterial to enable the density value. Must be between 0.0 and 1.0 - - Performs the default action: when the prim is touched, touch events are triggered" - - - When the prim is touched, touch events are triggered" - - - When the prim is touched, the avatar sits upon it - - - When the prim is touched, the buy dialog is opened - - - When the prim is touched, the pay dialog is opened - - - When the prim is touched, the object inventory dialog is opened - - - When the prim is touched, html-on-a-prim is enabled? - - - When the prim is touched, the web media dialog is opened" - + + + - + diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 3698e07..a8aefa2 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -1,14 +1,102 @@
    -

    Release 2.43

    +
    +

    Release 2.43.1

    -

    - 2011-
    - - Added: event + 2011-12-09
    + * Added: constants +

      +
    • CONTENT_TYPE_HTML
    • +
    • DENSITY
    • +
    • ESTATE_ACCESS_ALLOWED_AGENT_ADD
    • +
    • ESTATE_ACCESS_ALLOWED_AGENT_REMOVE
    • +
    • ESTATE_ACCESS_ALLOWED_GROUP_ADD
    • +
    • ESTATE_ACCESS_ALLOWED_GROUP_REMOVE
    • +
    • ESTATE_ACCESS_BANNED_AGENT_ADD
    • +
    • ESTATE_ACCESS_BANNED_AGENT_REMOVE
    • +
    • FRICTION
    • +
    • GRAVITY_MULTIPLIER
    • +
    • HTTP_VERBOSE_THROTTLE
    • +
    • KFM_CMD_PAUSE
    • +
    • KFM_CMD_PLAY
    • +
    • KFM_CMD_STOP
    • +
    • KFM_COMMAND
    • +
    • KFM_DATA
    • +
    • KFM_FORWARD
    • +
    • KFM_LOOP
    • +
    • KFM_MODE
    • +
    • KFM_PING_PONG
    • +
    • KFM_REVERSE
    • +
    • KFM_ROTATION
    • +
    • KFM_TRANSLATION
    • +
    • OBJECT_PHYSICS_COST
    • +
    • OBJECT_PRIM_EQUIVALENCE
    • +
    • OBJECT_SERVER_COST
    • +
    • OBJECT_STREAMING_COST
    • +
    • PARCEL_DETAILS_SEE_AVATARS
    • +
    • PRIM_MATERIAL
    • +
    • PRIM_MEDIA_ALT_IMAGE_ENABLE
    • +
    • PRIM_MEDIA_AUTO_LOOP
    • +
    • PRIM_MEDIA_AUTO_PLAY
    • +
    • PRIM_MEDIA_AUTO_SCALE
    • +
    • PRIM_MEDIA_AUTO_ZOOM
    • +
    • PRIM_MEDIA_CONTROLS
    • +
    • PRIM_MEDIA_CONTROLS_MINI
    • +
    • PRIM_MEDIA_CONTROLS_STANDARD
    • +
    • PRIM_MEDIA_CURRENT_URL
    • +
    • PRIM_MEDIA_FIRST_CLICK_INTERACT
    • +
    • PRIM_MEDIA_HEIGHT_PIXELS
    • +
    • PRIM_MEDIA_HOME_URL
    • +
    • PRIM_MEDIA_PERMS_CONTROL
    • +
    • PRIM_MEDIA_PERMS_INTERACT
    • +
    • PRIM_MEDIA_PERM_ANYONE
    • +
    • PRIM_MEDIA_PERM_GROUP
    • +
    • PRIM_MEDIA_PERM_NONE
    • +
    • PRIM_MEDIA_PERM_OWNER
    • +
    • PRIM_MEDIA_WHITELIST
    • +
    • PRIM_MEDIA_WHITELIST_ENABLE
    • +
    • PRIM_MEDIA_WIDTH_PIXELS
    • +
    • PRIM_OMEGA
    • +
    • PRIM_PHYSICS_MATERIAL
    • +
    • PRIM_PHYSICS_SHAPE_CONVEX
    • +
    • PRIM_PHYSICS_SHAPE_NONE
    • +
    • PRIM_PHYSICS_SHAPE_PRIM
    • +
    • PRIM_PHYSICS_SHAPE_TYPE
    • +
    • PRIM_POS_LOCAL
    • +
    • PRIM_ROT_LOCAL
    • +
    • PRIM_SCULPT_FLAG_INVERT
    • +
    • PRIM_SCULPT_FLAG_MIRROR
    • +
    • PROFILE_NONE
    • +
    • PROFILE_SCRIPT_MEMORY
    • +
    • RESTITUTION
    • +
    • STATUS_BLOCK_GRAB_OBJECT
    • +
    • STATUS_BOUNDS_ERROR
    • +
    • STATUS_INTERNAL_ERROR
    • +
    • STATUS_MALFORMED_PARAMS
    • +
    • STATUS_NOT_FOUND
    • +
    • STATUS_NOT_SUPPORTED
    • +
    • STATUS_OK
    • +
    • STATUS_TYPE_MISMATCH
    • +
    • STATUS_WHITELIST_FAILED
    • +
    • TEXTURE_BLANK
    • +
    • TEXTURE_DEFAULT
    • +
    • TEXTURE_MEDIA
    • +
    • TEXTURE_PLYWOOD
    • +
    • TEXTURE_TRANSPARENT
    • +
    • TOUCH_INVALID_TEXCOORD
    • +
    + * other changes: Cleaned up parts of the highlighting XML file generally, and reordered some entries. +
    + +
    +

    Release 2.43

    + + 2011-11-30
    + * Added: event
    • transaction_result
    - - Added: stub functions for: + * Added: stub functions for:
    • llCastRay
    • llClearLinkMedia
    • @@ -28,9 +116,10 @@
    • llSetVelocity
    • llTransferLindenDollars
    - - Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps. + * Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps.
    -

    +
    +

    Release 2.40

    @@ -44,7 +133,7 @@
  • llHTTPResponse
  • llGetHTTPHeader
  • -
    +

    Release 2.39

    @@ -62,19 +151,19 @@
  • llDetectedTouchST
  • llSHA1String
  • -
    +

    Release 2.38

    July 28 2008 14:10 (local time)

    - - Changed: Key cache file changed, so did lsleditor (??? who made the xml file, it uses siblings, not parent-child relations????)
    + - Changed: Key cache file changed, so did lsleditor (??? who made the xml file, it uses siblings, not parent-child relations????)

    Summer break ;-)

    May 18 2008 18:37 (local time)

    - - Changed: Ctrl-Shft-A uses 4-spaces intdent when (auto)pasting in SL
    + - Changed: Ctrl-Shft-A uses 4-spaces intdent when (auto)pasting in SL

    May 13 2008 13:21 (local time)

    @@ -82,24 +171,24 @@ - Fixed: focus when switching tabs
    - Fixed: Save All (Ctrl Shft S), does not save Solution

    - +

    Release 2.37

    May 2 2008 19:00 (local time)

    - Added: PRIM_GLOW
    - Added: llSetClickAction (and constants)
    - Fixed: & in dialogue box
    - - Fixed: Permission dialogue box text messed up when the script name is too long
    + - Fixed: Permission dialogue box text messed up when the script name is too long

    Release 2.36

    Apr 3 2008 12:47 (local time)

    - - Fixed: llAbs throws error on large numbers
    + - Fixed: llAbs throws error on large numbers

    Mar 28 2008 12:47 (local time)

    - - Fixed: llListen should also listen when using "" keys
    + - Fixed: llListen should also listen when using "" keys
    - Added: Basic authentication to llHTTPRequest, eg. http: //userid:password@domain.name/path
    - Added: llEmail shows error responses from smtp server when in error

    @@ -109,20 +198,20 @@

    Mar 21 2008 12:12 (local time)

    - - Fixed: Shift Home crashes editor when nothing is selected
    + - Fixed: Shift Home crashes editor when nothing is selected

    - +

    Release 2.35

    Mar 16 2008 15:22 (local time)

    - - Added: llGetParcelDetails (see also menu - tools - options - debugging internal)
    + - Added: llGetParcelDetails (see also menu - tools - options - debugging internal)
    - Added: Alt-Backspace alternative for Ctrl-Z
    - Fixed: Some focus issue on the find window
    - Added: PARCEL_MEDIA_COMMAND_TYPE, PARCEL_MEDIA_COMMAND_SIZE, PARCEL_MEDIA_COMMAND_DESC, PARCEL_MEDIA_COMMAND_LOOP_SET
    - Added: Contact item on menu Help
    - Removed: some compression code

    - +

    Feb 29 2008 12:40 (local time)

    - Fixed: NULL_KEY was no key

    @@ -132,14 +221,14 @@

    Feb 23 2008 19:45 (local time)

    - Added: First generic plugin support
    - - Added: integer multiply operator for float operand
    + - Added: integer multiply operator for float operand
    - Added: minus operator to rotation
    - - Fixed: Internals to pass more language tests, e.g. bool on ZERO_ROTATION and NULL_KEY, adding items to list
    + - Fixed: Internals to pass more language tests, e.g. bool on ZERO_ROTATION and NULL_KEY, adding items to list

    - +

    Feb 22 2008 23:38 (local time)

    - - Fixed: Browser status hides bottom scrollbar
    + - Fixed: Browser status hides bottom scrollbar
    - Fixed: Switching between Tabbed document and Windowed document, browser disappears
    - Fixed: (key)"" == False
    - Added: state changes allowed in global functions (when set in Debugging - General menu)
    @@ -159,30 +248,30 @@

    - Fixed: llLog and llLog10

    - +

    Feb 04 2008 16:30 (local time)

    - Added: Shortcut key for lslint, F7 ;-)
    - - Fixed: llMessageLinked using LINK_THIS works also when NOT using solution explorer
    - - Fixed: default value of key type is wrong
    + - Fixed: llMessageLinked using LINK_THIS works also when NOT using solution explorer
    + - Fixed: default value of key type is wrong
    - Added: All animation / expression names are added to the autocompletion function (as strings)
    - - Added: Autocompletion of animation names can be switched on/off by menu Tools - Options - Text Editor - Code completion
    - - Fixed: crash of lsleditor on llHTTPRequest when errors occur
    + - Added: Autocompletion of animation names can be switched on/off by menu Tools - Options - Text Editor - Code completion
    + - Fixed: crash of lsleditor on llHTTPRequest when errors occur
    - Changed: Information on llSensorRepeat()
    - - Added: llResetLandPassList()
    + - Added: llResetLandPassList()

    - +

    Release 2.32

    Jan 27 2008 14:00 (local time)

    - - Added: open multiple files from menu 'File - Open - File...' or Ctrl-O
    - - Fixed: global functions do not parse when using multiple brackets on 1 line
    + - Added: open multiple files from menu 'File - Open - File...' or Ctrl-O
    + - Fixed: global functions do not parse when using multiple brackets on 1 line
    - Fixed: renaming files and directories in solution explorer sometimes crashes lsleditor
    - Changed: 'Recent Projects' in 'Recent Solutions'
    - Changed: 'Add new Project' changed into 'Add new Solution'

    - +

    Release 2.31

    Jan 14 2008 16:28 (local time)

    @@ -217,12 +306,12 @@

    Release 2.30

    - +

    Dec 29 2007 12:27 (local time)

    - Fixed: llParseString2List loops when using empty strings on spacers

    - +

    Dec 27 2007 22:57 (local time)

    - Added: Disable tooltip user-setting, menu Tools - Options - Help
    @@ -230,7 +319,7 @@ - Added: Auto save on menu Tools - Options - Debugging - General - Auto save
    - Fixed: sending/retrieving bugreports crashes lsleditor when internet connection is not available
    - Fixed: turning off autoindent errors on braces
    - - Fixed: line number issue on scrolling
    + - Fixed: line number issue on scrolling
    - Fixed: cast error using llList2Vector for strings

    @@ -248,7 +337,7 @@

    - Fixed: Unchecking Check-For-Updates, does check for updates, thats wrong

    - +

    Release 2.28

    Dec 14 2007 00:40 (local time)

    @@ -268,14 +357,14 @@

    - Fixed: certain conditions the tab-stops at 4 chars goes to 6 chars wide

    - +

    Dec 08 2007 15:55 (local time)

    - Changed: Some Internals to pass more tests from http://wiki.secondlife.com/wiki/LSL_Language_Test
    - Some tests fail due to known issues. http://www.lsleditor.org/help/knownissues.htm
    + Some tests fail due to known issues. http://www.lsleditor.org/help/knownissues.htm
    - Fixed: shift-home and shift-end selects from 'start' cq. 'end' of selection (only forward selection supported)

    - +

    Dec 07 2007 02:44 (local time)

    - Fixed: lsleditor crashes when using lslint plugin
    @@ -309,19 +398,19 @@ - Changed: paint line numbers only when they are changed
    - Changed: doubleclick selects whole words (including '_')

    - +

    Nov 26 2007 13:33 (local time)

    - Added: random return when failing to parse string in llBase64ToInteger
    - Fixed: list constructor and large signed/unsigned integer problem

    - +

    Nov 24 2007 19:16 (local time)

    - Fixed: llListenRemove does not work
    - Fixed: llMessageLinked adds 1 extra event when compiling

    - +

    Release 2.25

    Nov 22 2007 23:59 (local time)

    @@ -335,7 +424,7 @@

    - Fixed: typo on llRemoveSensor

    - +

    Nov 19 2007 10:09 (local time)

    - Fixed: llGetWallclock gives also fraction of seconds
    @@ -394,14 +483,14 @@

    - Fixed: Some menu items use online wiki (if available), others use offline wiki

    - +

    Oct 24 2007 14:53 (local time)

    - Fixed: clicking Errors located on last line looses control on edit window
    - Added: Shortcut keys to solution explorer
    - Fixed: New script in solution explorer does not use indent user setting

    - +

    Oct 23 2007 20:13 (local time)

    - Changed: Shift-End, does not select the newline char
    @@ -424,7 +513,7 @@

    - Changed: vars don't have to be initialised before usage

    - +

    Oct 21 2007 20:18 (local time)

    - Changed: Solution explorer, files are opened only once at a time
    @@ -442,29 +531,29 @@ - Fixed: the dialog is missing several buttons when using long text
    - Changed: llDialog and llRequestPermissions removed topmost property

    - +

    Oct 20 2007 12:09 (local time)

    - Added: Contextmenu on error list, Copy or Copy Description only
    - Fixed: plugin, lslint, possible crash on multiple line error output

    - +

    Oct 18 2007 11:46 (local time)

    - Fixed: possible crash on not initialized string
    - Fixed: reading notecards outside solution explorer was broken
    - Added: llGetObjectDetails (supported OBJECT_NAME, OBJECT_DESC)
    - Added: llSensor / llSensorRepeat / llSensorRemove() / sensor (event)
    - (only simple event trigger, num_detected is always 1)
    + (only simple event trigger, num_detected is always 1)
    - Fixed: llRequestPermissions is broken

    - +

    Oct 16 2007 23:29 (local time)

    - Fixed: Old bug on multiple changed scripts saving using Ctrl-S shortcut only saves first script
    - Fixed: Rename objects do not set object-name correctly

    - +

    Release 2.21

    Oct 16 2007 13:46 (local time)

    @@ -485,7 +574,7 @@
  • UTF-8
  • - Fixed: Save on new.lsl file crashes LSLEditor
    - - Changed: bugreport, Highlight entry in left pane (also when lost focus)
    + - Changed: bugreport, Highlight entry in left pane (also when lost focus)
    - Fixed: bugreport, 'check all / uncheck all' button has wrong initial state
    - Changed: autocompletion on ll-functions having zero arguments (or single void argument) completes with ')' char
    - Added: double-clicking on an error message after compile, line in edit window is highlighted
    @@ -509,13 +598,13 @@ - Added: Plugin support
    - Fixed: llList2Key crash

    - +

    Oct 08 2007 23:55 (local time)

    - Changed: Opened files in solution explorer are asked to save when closed
    - Changed: bugreport, files to be included are unchecked by default

    - +

    Oct 03 2007 19:22 (local time)

    - Added: bool operators on list
    @@ -548,7 +637,7 @@ - Fixed: Syntax errors on scripts having same name are clickable
    - Fixed: Copy / Paste gives wrong colors in editor

    - +

    Sep 29 2007 21:35 (local time)

    - Added: Changing Guid of any item in solution explorer
    @@ -605,14 +694,14 @@

    - Added: Tools - Options - Debugging - General - Single Quote char allowed outside strings

    - +

    Sep 16 2007 14:41 (local time)

    - Fixed: Typing many '}' on same lines, gives weird autoformatting
    - Fixed: Bracket highlighting when typing braces (curly brackets)
    - Fixed: Rotation '/' operator

    - +

    Sep 15 2007 17:45 (local time)

    - Added: Update application supports 'gzip','zip' and 'bzip2'
    @@ -629,7 +718,7 @@

    - Fixed: llOwnerSay talks only to the owner, preventing possible loops

    - +

    Sep 13 2007 16:39 (local time)

    - Added: Date/time on printed output
    @@ -643,26 +732,26 @@ - Added: Experimental Code Completion (ECC) on user defined variable names, menu - tools - options - Text Editor - Code Completion
    - Changed: Escape toggles on/off autocompletion and tooltips

    - +

    Sep 12 2007 16:28 (local time)

    - Added: Pagesetup margins on printed documents
    - Added: header and footer on printed documents
    - Added: Print selection
    - Fixed: llList2ListStrided crashed for nonsense (<=0) strides
    -

    - +

    +

    Sep 11 2007 17:07 (local time)

    - Added: Ctrl-Del removes whitespace/word
    - Fixed: llToUpper / llToLower gives wrong hint

    - +

    Sep 06 2007 13:35 (local time)

    - Fixed: First users see only a small window

    - +

    Release 2.15

    Sep 03 2007 17:00 (local time)

    @@ -681,7 +770,7 @@ - Fixed: Recent projects menu blocks when dirty script has to be saved
    - Added: Menu - Tools - Options - Environment - General - delete old files after update

    - +

    Release 2.14

    Aug 27 2007 12:07 (local time)

    @@ -690,7 +779,7 @@ - Fixed: Find / Replace broken
    - Fixed: Labels are broken

    - +

    Aug 24 2007 15:30 (local time)

    - Added: Menu - Project - Add New File , add new file to active Prim in SolutionExplorer (if Any)
    @@ -736,25 +825,25 @@ - Added: llListStatistics (needs more testing)
    - fixed: llCSV2List escapes angle brackets

    - +

    Aug 20 2007 23:48 (local time)

    - Fixed: Find / Find and Replace window mixes up settings
    - Fixed: Sending bugreport crashes editor when offline

    - +

    Aug 18 2007 21:19 (local time)

    - Changed: new Tools Options menu
    - Fixed: Single quotation char in comment breaks parsing

    - +

    Aug 17 2007 19:22 (local time)

    - Fixed: Quad and Vector parsing breaks at certain conditions
    - Fixed: some changes to text do not set dirty flag

    - +

    Aug 16 2007 23:57 (local time)

    - Fixed: changing state into same state goes into loop
    @@ -765,7 +854,7 @@ - Changed: Position and Size of editor window are only restored when in workingarea of Primary screen
    - Fixed: Script error on download HTML Help file

    - +

    Aug 15 2007 17:51 (local time)

    - Fixed: Don't compile nor syntax check notecards using solution explorer
    @@ -777,7 +866,7 @@ - Changed: Sending bugreports can be canceled
    - Changed: implicit float to integer operator to explicit

    - +

    Release 2.12

    Aug 10 2007 13:13 (local time)

    @@ -806,7 +895,7 @@

    - Added: Smtp Authentication for llEmail (Tools, Runtime Properties, External, Email)

    - +

    Release 2.11

    Jul 30 2007 16:19 (local time)

    @@ -821,14 +910,14 @@ - Fixed: Richtext label inserts spaces after color change
    - Added: Sound support (simple) use llPlaySound and .wav file in solution explorer

    - +

    Jul 26 2007 13:29 (local time)

    - Added: PageUp and PageDown on intellisense dropdown menu
    - Fixed: Editor crash when closing project having browser window open
    - Added: llGetLocalPos()

    - +

    Release 2.10

    Jul 25 2007 14:30 (local time)

    @@ -847,7 +936,7 @@ - Added: Reset option on Editor properties
    - Added: mod operator (%) on integer

    - +

    Jul 24 2007 11:55 (local time)

    - Changed: Recent file list is clipped (showing ...)
    @@ -877,7 +966,7 @@ - Changed: Autocompletion images scale on changing fonts
    - Changed: Tab alignement on changing fonts

    - +

    Jul 15 2007 23:51 (local time)

    - Added: Editor Properties, Font selector for editor and tooltips
    @@ -905,7 +994,7 @@

    - Fixed: Runtime properties, incorrect key from cache (xor)

    - +

    Jul 9 2007 14:51 (local time)

    - Added: Editor properties: Auto update frequency
    @@ -917,7 +1006,7 @@ - Changed: Tooltip font is SystemFonts.MessageBoxFont
    - Fixed: llRot2Up returns void....

    - +

    Jul 6 2007 13:13 (local time)

    - Fixed: MD5 checksum on update function breaks
    @@ -952,9 +1041,9 @@ - Added: Smart indenting on closing parenthesis (experimental)
    - Revised: (Needs testing!!)

      -
    • llGetSubString
    • -
    • llDeleteSubString
    • -
    • llList2List
    • +
    • llGetSubString
    • +
    • llDeleteSubString
    • +
    • llList2List
    • llDeleteSubList
    - Added: @@ -972,14 +1061,14 @@ - Fixed: Can't close tabs when in Windows Classic mode
    - Changed: Internal, state / event has its own TaskQueue (needs testing)

    - +

    Jun 29 2007 16:38 (local time)

    - Fixed: Integer '~' operator works only on TRUE/FALSE
    - Added: Syntax checker button F6 (no compile / execute)
    - - Changed: Internal, Simulator / Compiler as usercontrols
    + - Changed: Internal, Simulator / Compiler as usercontrols

    - +

    Jun 28 2007 12:18 (local time)

    - Added: Ctr-Shft-S to Save as...
    @@ -1123,7 +1212,7 @@

    Release 2.3

    - +

    Jun 06 2007 17:01 (local time)

    - Fixed: Editor does not show on taskbar
    @@ -1154,7 +1243,7 @@ - Added: Showing Line / Character position of cursor on statusbar

    Jun 03 2007 20:54 (local time)

    -

    +

    - Fixed: AutoWordSelection off, and stay off
    - Fixed: indent whitespace can be a mix of tab and spaces
    - Added: default / state to autocompletion ;-)
    @@ -1163,7 +1252,7 @@ - Added: operators multiplication and division of rotation / rotation

    Jun 02 2007 18:58 (local time)

    -

    +

    - Added: llAxisAngle2Rot
    - Added: some vector operators
    - Fixed: codecompletion tooltip disappears when hitting arrow keys
    @@ -1210,21 +1299,21 @@ - Fixed: autoformatting on selected text
    - Fixed: incorrect old argument list on non-functions

    - +

    May 27 2007 13:15 (local time)

    - llListFindList bug fixed
    - added comparison operators for list,key,float,integer,vector and rotation
    - when opening an existing document, the untouched 'new.lsl' example is destroyed

    - +

    Release 2.2

    May 26 2007 18:00 (local time)

    - Tooltipping / Codecompletion hitting the boundaries of parent window

    - +

    May 25 2007 11:28 (local time)

    - Explicit cast 'list' implemented for string,integer,key,float,vector and rotation
    @@ -1250,7 +1339,7 @@ - Fixed: Operator '+=' cannot be applied to operands of type 'LSLEditor.SecondLife.list' and 'LSLEditor.SecondLife.key'
    - Copy from the debug window enabled

    - +

    May 22 2007 23:46 (local time)

    - Bug fix on empty key in Sim properties
    @@ -1262,7 +1351,7 @@

    - Simulator docks at bottom

    - +

    Release 2.1

    May 14 2007 22:47 (local time)

    @@ -1280,7 +1369,7 @@ - llParseString2List (todo spacers)
    - llParseStringKeepNulls (todo spacers)

    - +

    May 07 2007 19:53 (local time)

    - llMD5String implemented @@ -1345,10 +1434,10 @@

    Mar 30 2007 12:54 (local time)

    - changed wiki adres

    - +

    Jan 2007 - Mar 2007

    - Sabbatical :-), doing nothing....

    - +

    Dec 26 2006 12:54 (local time)

    - first implementation of printing

    Nov 21 2006 23:22 (local time)

    @@ -1364,7 +1453,7 @@

    Oct 28 2006 02:00 (local time)

    - Float2Hex example compiles (thanx to Strife Onizuka)

    Oct 27 2006 21:59 (local time)

    -

    - Global class compiles correctly on vars (static) and user defined +

    - Global class compiles correctly on vars (static) and user defined functions (void and non void)

    Oct 26 2006 01:07 (local time)

    - code completion, tab/return and contains icons for different types
    @@ -1391,20 +1480,20 @@

    - Improvement parsing script, vector,rotation, simple list (one line)
    - Global vars, wrapped in global class
    - Checkupdate function in the program
    - - First attempt multiple state (only default state executes, have patients + - First attempt multiple state (only default state executes, have patients my friends...)

    Oct 14 2006 18:36 (local time)

    - User argument input for events like touch_start (see picture above)

    Oct 8, 2006 18:36 (local time)

    - Code highlighting
    - Code completion
    - - Code info, took the old LSLguide, and used Appendix, i can do better i + - Code info, took the old LSLguide, and used Appendix, i can do better i know
    - F1 , on a keyword, does show up the LSLWiki page on the keyword
    - Compile, the hello world example should work on state_entry event
    - Open/Save and edit lsl script files

    Oct 2, 2006 (local time)

    - +

    Release 1.0

    First idea and prototype

    diff --git a/trunk/SecondLife/SecondLifeMain.cs b/trunk/SecondLife/SecondLifeMain.cs index 9941dc3..fe36462 100644 --- a/trunk/SecondLife/SecondLifeMain.cs +++ b/trunk/SecondLife/SecondLifeMain.cs @@ -300,7 +300,7 @@ namespace LSLEditor public static readonly integer CLICK_ACTION_OPEN = 4; public static readonly integer CLICK_ACTION_PLAY = 5; public static readonly integer CLICK_ACTION_OPEN_MEDIA = 6; - + public static readonly string CONTENT_TYPE_HTML = "text/html"; public static readonly integer CONTROL_FWD = 1; public static readonly integer CONTROL_BACK = 2; public static readonly integer CONTROL_LEFT = 4; @@ -350,6 +350,19 @@ namespace LSLEditor public static readonly integer INVENTORY_ANIMATION = 20; public static readonly integer INVENTORY_GESTURE = 21; + public static readonly integer KFM_CMD_PAUSE = 2; + public static readonly integer KFM_CMD_PLAY = 0; + public static readonly integer KFM_CMD_STOP = 1; + public static readonly integer KFM_COMMAND = 0; + public static readonly integer KFM_DATA = 2; + public static readonly integer KFM_FORWARD = 0; + public static readonly integer KFM_LOOP = 1; + public static readonly integer KFM_MODE = 1; + public static readonly integer KFM_PING_PONG = 2; + public static readonly integer KFM_REVERSE = 2; + public static readonly integer KFM_ROTATION = 1; + public static readonly integer KFM_TRANSLATION = 2; + public static readonly integer LAND_LEVEL = 0; public static readonly integer LAND_RAISE = 1; public static readonly integer LAND_LOWER = 2; @@ -357,9 +370,9 @@ namespace LSLEditor public static readonly integer LAND_NOISE = 4; public static readonly integer LAND_REVERT = 5; - public static readonly integer LAND_SMALL_BRUSH = 1; - public static readonly integer LAND_MEDIUM_BRUSH = 2; public static readonly integer LAND_LARGE_BRUSH = 3; + public static readonly integer LAND_MEDIUM_BRUSH = 2; + public static readonly integer LAND_SMALL_BRUSH = 1; public static readonly integer LINK_ROOT = 1; public static readonly integer LINK_SET = -1; @@ -591,6 +604,11 @@ namespace LSLEditor public static readonly integer PSYS_PART_TARGET_LINEAR_MASK = 128; public static readonly integer PSYS_PART_EMISSIVE_MASK = 256; + public static readonly integer PSYS_PART_SRC_PATTERN_ANGLE = 0x04; + public static readonly integer PSYS_PART_SRC_PATTERN_ANGLE_CONE = 0x08; + public static readonly integer PSYS_PART_SRC_PATTERN_DROP = 0x01; + public static readonly integer PSYS_PART_SRC_PATTERN_EXPLODE = 0x02; + public static readonly integer PSYS_PART_START_COLOR = 1; public static readonly integer PSYS_PART_START_ALPHA = 2; public static readonly integer PSYS_PART_END_COLOR = 3; From d705c2f37af3b535d2fc5f27ad752932516d57d7 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 16 Dec 2011 22:41:37 +0000 Subject: [PATCH 09/26] Fixing incorrect type initial for transaction_result argument. git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@45 3f4676ac-adda-40fd-8265-58d1435b1672 --- trunk/Resource/ConfLSL.xml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/trunk/Resource/ConfLSL.xml b/trunk/Resource/ConfLSL.xml index f8a97c7..3119dfd 100644 --- a/trunk/Resource/ConfLSL.xml +++ b/trunk/Resource/ConfLSL.xml @@ -3450,7 +3450,7 @@ via the llDetected() library functions. - + transaction_result(key RequestID, integer Success, string Text) Triggered by llTransferMoney() function. @@ -3476,6 +3476,7 @@ An integer constant for boolean comparisons. Has the value '0'. + The status constants are used in the llSetStatus and llGetStatus library calls. These constants can be bitwise ORed @@ -3540,6 +3541,7 @@ Argument(s) passed to function had a type mismatch. Whitelist Failed. + These constants can be combined using the binary | operator and are used in the llSensor and related calls. @@ -3558,6 +3560,7 @@ Scripted in-world objects. + The permission constants are used for passing values to llRequestPermissions, determing the value of @@ -3605,6 +3608,7 @@ object. + These constants can be used to refer to a specific inventory type in calls to llGetInventoryNumber @@ -3623,6 +3627,7 @@ + These constants are used to refer to attachment points in calls to llAttachToAvatar. @@ -3730,6 +3735,7 @@ + These constants are only used in calls to llModifyLand. The constants are equivalent to the similarly labelled @@ -3757,6 +3763,7 @@ + These constants are used in calls to llSetLinkColor and llMessageLinked. @@ -3777,6 +3784,7 @@ + These constants are used in llTakeControls as well as the control event handler. @@ -3812,6 +3820,7 @@ Test for the avatar left button control while in mouse look. + These constants are used in the changed event handler. Change Constants @@ -3843,6 +3852,7 @@ texture has changed. + These constants are used to determine the variable type stored in a heterogenous list. The value returned from @@ -3871,6 +3881,7 @@ The list entry is invalid. + Each of these constants represents a bit in the integer returned from the llGetAgentInfo function and can be used @@ -3897,6 +3908,7 @@ + These constants are used in the llSetTextureAnim api to control the animation mode. @@ -3923,6 +3935,7 @@ slide in the X direction, instead of playing separate frames. + These constants are used in calls to the llParticleSystem api to specify parameters. @@ -4078,6 +4091,7 @@ an asset name for the texture to use for the particles. + These constants are used in calls to the llRequestAgentData api to collect information about @@ -4109,6 +4123,7 @@ + LSL provides a small collection of floating point constants for use in float arithmetic. @@ -4140,6 +4155,7 @@ 6.28318530 - The radians of a circle. + There is only one key constant which acts as an invalid key: NULL_KEY. @@ -4150,27 +4166,32 @@ + There is one uncategorized integer constant which is used in some of the texturing and coloring api: ALL_SIDES + There is one uncategorized string constant which is used in the dataserver event: EOF - + + There is only one vector constant which acts as a zero vector: ZERO_VECTOR = <0,0,0>. + There is only one rotation constant which acts as a zero rotation: ZERO_ROTATION = <0,0,0,1>. + Parameters @@ -4276,6 +4297,7 @@ local frame (x, y, z). + Flags @@ -4313,6 +4335,7 @@ Prevents ground vehicles from motoring into the sky. + Types From 1ed749bf85c17ba135bd4a57f11b4d14e071a1d5 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 12:15:38 +0000 Subject: [PATCH 10/26] Bug 2995296 fix --- trunk/Editor/SyntaxRichTextBox.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/trunk/Editor/SyntaxRichTextBox.cs b/trunk/Editor/SyntaxRichTextBox.cs index ddb55d9..61e622f 100644 --- a/trunk/Editor/SyntaxRichTextBox.cs +++ b/trunk/Editor/SyntaxRichTextBox.cs @@ -1748,14 +1748,18 @@ namespace LSLEditor string strW = GetNewWhiteSpace(-1); int intTabs = (int)(strW.Length / AutoFormatter.GetTab().Length); - if (this.SelectionLength == 0) + int intLastLine = this.GetLineFromCharIndex(this.SelectionStart + this.SelectionLength); + + int intLine = this.GetLineFromCharIndex(this.SelectionStart); + this.SelectionStart = this.GetFirstCharIndexFromLine(intLine); + int intLength = 0; + do { - int intLine = this.GetLineFromCharIndex(this.SelectionStart); - int intStart = this.GetFirstCharIndexFromLine(intLine); - int intLength = this.Lines[intLine].Length + 1; - this.SelectionStart = intStart; - this.SelectionLength = intLength; - } + intLength += this.Lines[intLine].Length + 1; + intLine++; + } while (intLine <= intLastLine); + this.SelectionLength = intLength; + string strSelectedText = AutoFormatter.MultiLineComment(blnAdd, intTabs, this.SelectedText); int intBackup = this.SelectionStart; From 4dab3beb0bd155c0a3d5ffbd0b6f5b76f35cd73d Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 21:20:16 +0000 Subject: [PATCH 11/26] Updating ReleaseNotes.htm --- trunk/Resource/ReleaseNotes.htm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index a8aefa2..6221399 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -1,5 +1,17 @@
    +
    +

    Release 2.4x.x

    + +
    + + + Bugs Fixed: +
      +
    • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
    • +
    +
    +

    Release 2.43.1

    From 198d4ec5a05ffb6ca58b1f349371dac44bc086fe Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 21:24:02 +0000 Subject: [PATCH 12/26] Updating ReleaseNotes.htm --- trunk/Resource/ReleaseNotes.htm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index a8aefa2..cbe6cab 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -1,5 +1,17 @@
    +
    +

    Release 2.x.x

    + +
    + + + Bugs Fixed: +
      +
    • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
    • +
    +
    +

    Release 2.43.1

    From dd11201200ed03e8cbbfc59645a02f3eecbc84cd Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 22:43:31 +0000 Subject: [PATCH 13/26] Adding Release Notes to Help menu. --- trunk/LSLEditorForm.Designer.cs | 44 +- trunk/LSLEditorForm.cs | 2 +- trunk/Resource/ReleaseNotes.htm | 3044 ++++++++++++++++--------------- 3 files changed, 1557 insertions(+), 1533 deletions(-) diff --git a/trunk/LSLEditorForm.Designer.cs b/trunk/LSLEditorForm.Designer.cs index f900448..dd2a98c 100644 --- a/trunk/LSLEditorForm.Designer.cs +++ b/trunk/LSLEditorForm.Designer.cs @@ -127,8 +127,8 @@ namespace LSLEditor this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); this.makeBugReporttoolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); @@ -140,6 +140,7 @@ namespace LSLEditor this.openFileDialog2 = new System.Windows.Forms.OpenFileDialog(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.dockPanel = new LSLEditor.Docking.DockPanel(); + this.releaseNotesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.contextMenuStrip1.SuspendLayout(); @@ -207,8 +208,8 @@ namespace LSLEditor // newProjectToolStripMenuItem // this.newProjectToolStripMenuItem.Name = "newProjectToolStripMenuItem"; - this.newProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.N))); + this.newProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.N))); this.newProjectToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.newProjectToolStripMenuItem.Text = "Solution..."; this.newProjectToolStripMenuItem.Click += new System.EventHandler(this.newProjectToolStripMenuItem_Click); @@ -241,8 +242,8 @@ namespace LSLEditor // openProjectSolutionToolStripMenuItem // this.openProjectSolutionToolStripMenuItem.Name = "openProjectSolutionToolStripMenuItem"; - this.openProjectSolutionToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.O))); + this.openProjectSolutionToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.O))); this.openProjectSolutionToolStripMenuItem.Size = new System.Drawing.Size(244, 22); this.openProjectSolutionToolStripMenuItem.Text = "Project/Solution..."; this.openProjectSolutionToolStripMenuItem.Click += new System.EventHandler(this.openProjectSolutionToolStripMenuItem_Click); @@ -350,8 +351,8 @@ namespace LSLEditor // this.SaveAllToolStripMenuItem.Image = global::LSLEditor.Properties.Resources.SAVEAS; this.SaveAllToolStripMenuItem.Name = "SaveAllToolStripMenuItem"; - this.SaveAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.S))); + this.SaveAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.S))); this.SaveAllToolStripMenuItem.Size = new System.Drawing.Size(187, 22); this.SaveAllToolStripMenuItem.Text = "Save All"; this.SaveAllToolStripMenuItem.Click += new System.EventHandler(this.SaveAllToolStripMenuItem_Click); @@ -524,8 +525,8 @@ namespace LSLEditor // toolStripMenuItem8 // this.toolStripMenuItem8.Name = "toolStripMenuItem8"; - this.toolStripMenuItem8.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.A))); + this.toolStripMenuItem8.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.A))); this.toolStripMenuItem8.Size = new System.Drawing.Size(225, 22); this.toolStripMenuItem8.Text = "Select All to SL"; this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click); @@ -665,8 +666,8 @@ namespace LSLEditor // this.addNewObjecttoolStripMenuItem.Enabled = false; this.addNewObjecttoolStripMenuItem.Name = "addNewObjecttoolStripMenuItem"; - this.addNewObjecttoolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.A))); + this.addNewObjecttoolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.A))); this.addNewObjecttoolStripMenuItem.Size = new System.Drawing.Size(235, 22); this.addNewObjecttoolStripMenuItem.Text = "Add New Object"; this.addNewObjecttoolStripMenuItem.Click += new System.EventHandler(this.addNewObjecttoolStripMenuItem_Click); @@ -732,7 +733,7 @@ namespace LSLEditor // optionsToolStripMenuItem // this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; - this.optionsToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.optionsToolStripMenuItem.Size = new System.Drawing.Size(125, 22); this.optionsToolStripMenuItem.Text = "Options..."; this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click); // @@ -785,6 +786,7 @@ namespace LSLEditor this.toolStripSeparator9, this.makeBugReporttoolStripMenuItem, this.toolStripSeparator12, + this.releaseNotesToolStripMenuItem, this.aboutToolStripMenuItem}); this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); @@ -830,11 +832,6 @@ namespace LSLEditor this.toolStripSeparator9.Name = "toolStripSeparator9"; this.toolStripSeparator9.Size = new System.Drawing.Size(207, 6); // - // toolStripSeparator12 - // - this.toolStripSeparator12.Name = "toolStripSeparator12"; - this.toolStripSeparator12.Size = new System.Drawing.Size(207, 6); - // // makeBugReporttoolStripMenuItem // this.makeBugReporttoolStripMenuItem.Name = "makeBugReporttoolStripMenuItem"; @@ -842,6 +839,11 @@ namespace LSLEditor this.makeBugReporttoolStripMenuItem.Text = "Bug report..."; this.makeBugReporttoolStripMenuItem.Click += new System.EventHandler(this.makeBugReporttoolStripMenuItem_Click); // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + this.toolStripSeparator12.Size = new System.Drawing.Size(207, 6); + // // aboutToolStripMenuItem // this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; @@ -940,6 +942,13 @@ namespace LSLEditor this.dockPanel.Skin = dockPanelSkin1; this.dockPanel.TabIndex = 10; // + // releaseNotesToolStripMenuItem + // + this.releaseNotesToolStripMenuItem.Name = "releaseNotesToolStripMenuItem"; + this.releaseNotesToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.releaseNotesToolStripMenuItem.Text = "Release Notes..."; + this.releaseNotesToolStripMenuItem.Click += new System.EventHandler(this.releaseNotesToolStripMenuItem_Click); + // // LSLEditorForm // this.AllowDrop = true; @@ -1066,5 +1075,6 @@ namespace LSLEditor private System.Windows.Forms.ToolStripSeparator toolStripSeparator16; private System.Windows.Forms.ToolStripMenuItem closeActiveWindowToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9; + private System.Windows.Forms.ToolStripMenuItem releaseNotesToolStripMenuItem; } } \ No newline at end of file diff --git a/trunk/LSLEditorForm.cs b/trunk/LSLEditorForm.cs index 6dc24f3..c833657 100644 --- a/trunk/LSLEditorForm.cs +++ b/trunk/LSLEditorForm.cs @@ -1245,7 +1245,7 @@ namespace LSLEditor } } - private void ReleaseNotesToolStripMenuItem_Click(object sender, EventArgs e) + private void releaseNotesToolStripMenuItem_Click(object sender, EventArgs e) { Browser browser = GetBrowser(); string strExeFileName = Path.GetFileName(Assembly.GetExecutingAssembly().CodeBase); diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index cbe6cab..b9742b8 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -1,1515 +1,1529 @@ -
    - -
    -

    Release 2.x.x

    - -
    - - - Bugs Fixed: -
      -
    • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
    • -
    -
    - -
    -

    Release 2.43.1

    - - 2011-12-09
    - * Added: constants -
      -
    • CONTENT_TYPE_HTML
    • -
    • DENSITY
    • -
    • ESTATE_ACCESS_ALLOWED_AGENT_ADD
    • -
    • ESTATE_ACCESS_ALLOWED_AGENT_REMOVE
    • -
    • ESTATE_ACCESS_ALLOWED_GROUP_ADD
    • -
    • ESTATE_ACCESS_ALLOWED_GROUP_REMOVE
    • -
    • ESTATE_ACCESS_BANNED_AGENT_ADD
    • -
    • ESTATE_ACCESS_BANNED_AGENT_REMOVE
    • -
    • FRICTION
    • -
    • GRAVITY_MULTIPLIER
    • -
    • HTTP_VERBOSE_THROTTLE
    • -
    • KFM_CMD_PAUSE
    • -
    • KFM_CMD_PLAY
    • -
    • KFM_CMD_STOP
    • -
    • KFM_COMMAND
    • -
    • KFM_DATA
    • -
    • KFM_FORWARD
    • -
    • KFM_LOOP
    • -
    • KFM_MODE
    • -
    • KFM_PING_PONG
    • -
    • KFM_REVERSE
    • -
    • KFM_ROTATION
    • -
    • KFM_TRANSLATION
    • -
    • OBJECT_PHYSICS_COST
    • -
    • OBJECT_PRIM_EQUIVALENCE
    • -
    • OBJECT_SERVER_COST
    • -
    • OBJECT_STREAMING_COST
    • -
    • PARCEL_DETAILS_SEE_AVATARS
    • -
    • PRIM_MATERIAL
    • -
    • PRIM_MEDIA_ALT_IMAGE_ENABLE
    • -
    • PRIM_MEDIA_AUTO_LOOP
    • -
    • PRIM_MEDIA_AUTO_PLAY
    • -
    • PRIM_MEDIA_AUTO_SCALE
    • -
    • PRIM_MEDIA_AUTO_ZOOM
    • -
    • PRIM_MEDIA_CONTROLS
    • -
    • PRIM_MEDIA_CONTROLS_MINI
    • -
    • PRIM_MEDIA_CONTROLS_STANDARD
    • -
    • PRIM_MEDIA_CURRENT_URL
    • -
    • PRIM_MEDIA_FIRST_CLICK_INTERACT
    • -
    • PRIM_MEDIA_HEIGHT_PIXELS
    • -
    • PRIM_MEDIA_HOME_URL
    • -
    • PRIM_MEDIA_PERMS_CONTROL
    • -
    • PRIM_MEDIA_PERMS_INTERACT
    • -
    • PRIM_MEDIA_PERM_ANYONE
    • -
    • PRIM_MEDIA_PERM_GROUP
    • -
    • PRIM_MEDIA_PERM_NONE
    • -
    • PRIM_MEDIA_PERM_OWNER
    • -
    • PRIM_MEDIA_WHITELIST
    • -
    • PRIM_MEDIA_WHITELIST_ENABLE
    • -
    • PRIM_MEDIA_WIDTH_PIXELS
    • -
    • PRIM_OMEGA
    • -
    • PRIM_PHYSICS_MATERIAL
    • -
    • PRIM_PHYSICS_SHAPE_CONVEX
    • -
    • PRIM_PHYSICS_SHAPE_NONE
    • -
    • PRIM_PHYSICS_SHAPE_PRIM
    • -
    • PRIM_PHYSICS_SHAPE_TYPE
    • -
    • PRIM_POS_LOCAL
    • -
    • PRIM_ROT_LOCAL
    • -
    • PRIM_SCULPT_FLAG_INVERT
    • -
    • PRIM_SCULPT_FLAG_MIRROR
    • -
    • PROFILE_NONE
    • -
    • PROFILE_SCRIPT_MEMORY
    • -
    • RESTITUTION
    • -
    • STATUS_BLOCK_GRAB_OBJECT
    • -
    • STATUS_BOUNDS_ERROR
    • -
    • STATUS_INTERNAL_ERROR
    • -
    • STATUS_MALFORMED_PARAMS
    • -
    • STATUS_NOT_FOUND
    • -
    • STATUS_NOT_SUPPORTED
    • -
    • STATUS_OK
    • -
    • STATUS_TYPE_MISMATCH
    • -
    • STATUS_WHITELIST_FAILED
    • -
    • TEXTURE_BLANK
    • -
    • TEXTURE_DEFAULT
    • -
    • TEXTURE_MEDIA
    • -
    • TEXTURE_PLYWOOD
    • -
    • TEXTURE_TRANSPARENT
    • -
    • TOUCH_INVALID_TEXCOORD
    • -
    - * other changes: Cleaned up parts of the highlighting XML file generally, and reordered some entries. -
    - -
    -

    Release 2.43

    - - 2011-11-30
    - * Added: event -
      -
    • transaction_result
    • -
    - * Added: stub functions for: -
      -
    • llCastRay
    • -
    • llClearLinkMedia
    • -
    • llGetDisplayName
    • -
    • llGetLinkMedia
    • -
    • llGetMassMKS
    • -
    • llGetMemoryLimit
    • -
    • llGetPhysicsMaterial
    • -
    • llLinkSitTarget
    • -
    • llManageEstateAccess
    • -
    • llScriptProfiler
    • -
    • llSetAngularVelocity
    • -
    • llSetKeyframedMotion
    • -
    • llSetLinkMedia
    • -
    • llSetMemoryLimit
    • -
    • llSetPhysicsMaterial
    • -
    • llSetVelocity
    • -
    • llTransferLindenDollars
    • -
    - * Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps. -
    -
    - - -

    Release 2.40

    - -

    April 17 2010 14:51 (local time)
    - - Added: stub functions for: -

      -
    • llGetFreeURLs
    • -
    • llRequestURL
    • -
    • llRequestSecureURL
    • -
    • llReleaseURL
    • -
    • llHTTPResponse
    • -
    • llGetHTTPHeader
    • -
    -
    -

    - -

    Release 2.39

    - -

    October 28 2008 11:28 (local time)
    - - Added: stub functions for: -

      -
    • llTextBox
    • -
    • llGetAgentLanguage
    • -
    • llDetectedTouchUV
    • -
    • llDetectedTouchFace
    • -
    • llDetectedTouchPos
    • -
    • llDetectedTouchNormal
    • -
    • llDetectedTouchBinormal
    • -
    • llDetectedTouchST
    • -
    • llSHA1String
    • -
    -
    -

    - -

    Release 2.38

    - -

    July 28 2008 14:10 (local time)

    - - Changed: Key cache file changed, so did lsleditor (??? who made the xml file, it uses siblings, not parent-child relations????)
    -

    - -

    Summer break ;-)

    - -

    May 18 2008 18:37 (local time)

    - - Changed: Ctrl-Shft-A uses 4-spaces intdent when (auto)pasting in SL
    -

    - -

    May 13 2008 13:21 (local time)

    - - Changed: Adding duplicate items in solution explorer starts numbering at 1
    - - Fixed: focus when switching tabs
    - - Fixed: Save All (Ctrl Shft S), does not save Solution
    -

    - -

    Release 2.37

    - -

    May 2 2008 19:00 (local time)

    - - Added: PRIM_GLOW
    - - Added: llSetClickAction (and constants)
    - - Fixed: & in dialogue box
    - - Fixed: Permission dialogue box text messed up when the script name is too long
    -

    - -

    Release 2.36

    - -

    Apr 3 2008 12:47 (local time)

    - - Fixed: llAbs throws error on large numbers
    -

    - -

    Mar 28 2008 12:47 (local time)

    - - Fixed: llListen should also listen when using "" keys
    - - Added: Basic authentication to llHTTPRequest, eg. http: //userid:password@domain.name/path
    - - Added: llEmail shows error responses from smtp server when in error
    -

    - -

    Mar 27 2008 13:33 (local time)

    - - Added (experimental): 'Ctrl Shift A' pastes active LSLEditor script to SecondLife (has to open script editor in SL first)
    -

    - -

    Mar 21 2008 12:12 (local time)

    - - Fixed: Shift Home crashes editor when nothing is selected
    -

    - -

    Release 2.35

    - -

    Mar 16 2008 15:22 (local time)

    - - Added: llGetParcelDetails (see also menu - tools - options - debugging internal)
    - - Added: Alt-Backspace alternative for Ctrl-Z
    - - Fixed: Some focus issue on the find window
    - - Added: PARCEL_MEDIA_COMMAND_TYPE, PARCEL_MEDIA_COMMAND_SIZE, PARCEL_MEDIA_COMMAND_DESC, PARCEL_MEDIA_COMMAND_LOOP_SET
    - - Added: Contact item on menu Help
    - - Removed: some compression code
    -

    - -

    Feb 29 2008 12:40 (local time)

    - - Fixed: NULL_KEY was no key
    -

    - -

    Release 2.34

    - -

    Feb 23 2008 19:45 (local time)

    -

    - - Added: First generic plugin support
    - - Added: integer multiply operator for float operand
    - - Added: minus operator to rotation
    - - Fixed: Internals to pass more language tests, e.g. bool on ZERO_ROTATION and NULL_KEY, adding items to list
    -

    - -

    Feb 22 2008 23:38 (local time)

    -

    - - Fixed: Browser status hides bottom scrollbar
    - - Fixed: Switching between Tabbed document and Windowed document, browser disappears
    - - Fixed: (key)"" == False
    - - Added: state changes allowed in global functions (when set in Debugging - General menu)
    - - Fixed: info on llInsertString was missing a few spaces
    - - Added: Debug windows have context menu, Copy, Select All and Clear
    - - Added: File - New - New notecard
    - - Changed: llGetScriptName returns scriptname without extension (when set in Debugging - General menu)
    - - Fixed: Don't send empty bugreports
    - - Fixed: tabs are presented in SL as 4 spaces, for example llStringLength("\t") == 4
    - - Fixed: remove old files after Autoupdate
    - - Fixed: autoupdate menu was readonly
    -

    - -

    Release 2.33

    - -

    Feb 12 2008 08:12 (local time)

    -

    - - Fixed: llLog and llLog10
    -

    - -

    Feb 04 2008 16:30 (local time)

    -

    - - Added: Shortcut key for lslint, F7 ;-)
    - - Fixed: llMessageLinked using LINK_THIS works also when NOT using solution explorer
    - - Fixed: default value of key type is wrong
    - - Added: All animation / expression names are added to the autocompletion function (as strings)
    - - Added: Autocompletion of animation names can be switched on/off by menu Tools - Options - Text Editor - Code completion
    - - Fixed: crash of lsleditor on llHTTPRequest when errors occur
    - - Changed: Information on llSensorRepeat()
    - - Added: llResetLandPassList()
    -

    - -

    Release 2.32

    - -

    Jan 27 2008 14:00 (local time)

    -

    - - Added: open multiple files from menu 'File - Open - File...' or Ctrl-O
    - - Fixed: global functions do not parse when using multiple brackets on 1 line
    - - Fixed: renaming files and directories in solution explorer sometimes crashes lsleditor
    - - Changed: 'Recent Projects' in 'Recent Solutions'
    - - Changed: 'Add new Project' changed into 'Add new Solution'
    -

    - -

    Release 2.31

    - -

    Jan 14 2008 16:28 (local time)

    -

    - - Changed: llUnescapeURL and llEscapeURL using UTF8 encoding
    - - Changed: llBase64ToString and llStringToBase64 using UTF8 encoding
    - - Changed: improved label parsing
    -

    - - -

    Jan 12 2008 10:43 (local time)

    -

    - - Fixed: llDialog does not show OK button, using no buttons
    -

    - -

    Jan 09 2008 17:18 (local time)

    -

    - - Added: Online Help browser, New tab for every search can be unchecked in menu Tools - Options - Environment - Help
    - - Fixed: No scrolling when using Autoformat (Ctrl-D)
    -

    - -

    Jan 06 2008 13:31 (local time)

    -

    - - Fixed: llGetListEntryType does not work on negative index
    - - Added: missing operators on integer
    - - Fixed: wrong parsing and casting of large hex numbers
    -

    - -

    Jan 05 2008 12:44 (local time)

    -

    - - Added: show status of capslock
    -

    - -

    Release 2.30

    - -

    Dec 29 2007 12:27 (local time)

    -

    - - Fixed: llParseString2List loops when using empty strings on spacers
    -

    - -

    Dec 27 2007 22:57 (local time)

    -

    - - Added: Disable tooltip user-setting, menu Tools - Options - Help
    - - Added: Link to the LSLEditor forum, menu Help - Forum
    - - Added: Auto save on menu Tools - Options - Debugging - General - Auto save
    - - Fixed: sending/retrieving bugreports crashes lsleditor when internet connection is not available
    - - Fixed: turning off autoindent errors on braces
    - - Fixed: line number issue on scrolling
    - - Fixed: cast error using llList2Vector for strings
    -

    - -

    Release 2.29

    - -

    Dec 18 2007 16:38 (local time)

    -

    - - Added: when nothing is selected, Shift-Delete, copies entire line to clipboard and deletes it
    - - Fixed: Ctrl-X is not undo-able
    - - Fixed: jump labels containing '_' give error
    - - Added: ATTACH_HUD_* constants
    -

    - -

    Dec 14 2007 17:51 (local time)

    -

    - - Fixed: Unchecking Check-For-Updates, does check for updates, thats wrong
    -

    - -

    Release 2.28

    - -

    Dec 14 2007 00:40 (local time)

    -

    - - Added: INS (insert) / OVR (override) on status bar, changes when hitting Insert key
    - - Changed: Tab on notecards shows 'Text', where scripts shows 'Script'
    -

    - - -

    Dec 13 2007 23:52 (local time)

    -

    - - Added: When changing to a non existing state, show warning
    - - Changed: llGetWallclock and llGetGMTclock
    -

    - -

    Dec 09 2007 02:30 (local time)

    -

    - - Fixed: certain conditions the tab-stops at 4 chars goes to 6 chars wide
    -

    - -

    Dec 08 2007 15:55 (local time)

    -

    - - Changed: Some Internals to pass more tests from http://wiki.secondlife.com/wiki/LSL_Language_Test
    - Some tests fail due to known issues. http://www.lsleditor.org/help/knownissues.htm
    - - Fixed: shift-home and shift-end selects from 'start' cq. 'end' of selection (only forward selection supported)
    -

    - -

    Dec 07 2007 02:44 (local time)

    -

    - - Fixed: lsleditor crashes when using lslint plugin
    - - Added: Total char count
    - - Added: Last modified on SolutionExplorer items properties
    - - Changed: new implementation of llHTTPRequest, returns http status
    - - Changed: float shows 6 digits behind the decimal point (like SL)
    -

    - -

    Dec 06 2007 14:38 (local time)

    -

    - - Fixed: Version 2.24 an above were broken on simple Verbose messages!!
    -

    - -

    Release 2.27

    - -

    Dec 05 2007 17:35 (local time)

    -

    - - Fixed: llModPow gives wrong answer using large numbers
    - - Fixed: Crash when clicked on errors, when script edit windows are closed
    - - Fixed: Oops Renaming files and objects in Solutionexplorer using same name but upper/lower case chars
    - - Fixed: Oops from llGetObjectDetails (only OBJECT_NAME and OBJECT_DESC implemented)
    - - Fixed: comments having unballanced string quotes do not compile
    -

    - -

    Release 2.26

    - -

    Nov 28 2007 19:31 (local time)

    -

    - - Changed: llBase64ToInteger , needs testings
    - - Changed: paint line numbers only when they are changed
    - - Changed: doubleclick selects whole words (including '_')
    -

    - -

    Nov 26 2007 13:33 (local time)

    -

    - - Added: random return when failing to parse string in llBase64ToInteger
    - - Fixed: list constructor and large signed/unsigned integer problem
    -

    - -

    Nov 24 2007 19:16 (local time)

    -

    - - Fixed: llListenRemove does not work
    - - Fixed: llMessageLinked adds 1 extra event when compiling
    -

    - -

    Release 2.25

    - -

    Nov 22 2007 23:59 (local time)

    -

    - - Added: true/false operators on vector and rotation
    - - Fixed: llRequestAgentData(uuid, DATA_BORN) has wrong date notation
    - - Fixed: listen event always gets the wrong sender id
    -

    - -

    Nov 20 2007 09:20 (local time)

    -

    - - Fixed: typo on llRemoveSensor
    -

    - -

    Nov 19 2007 10:09 (local time)

    -

    - - Fixed: llGetWallclock gives also fraction of seconds
    - - Added: X-SecondLife-Shard header in http request can be configured via menu - Tools - Options - Debugging - Internal (default = Production)
    - - Fixed: X-SecondLife-Region header in http request uses int coords.
    - - Fixed: notecards don't care about 'autocorrect indent'
    -

    - -

    Nov 15 2007 00:19 (local time)

    -

    - - Fixed: Find and Find Replace window pushes editor to background when goes invisible
    - - Fixed: Find and Find Replace window does not focus text search box
    -

    - -

    Nov 14 2007 17:10 (local time)

    -

    - - Added: X-SecondLife-* headers in http request
    -

    - - -

    Release 2.24

    - -

    Nov 13 2007 01:33 (local time)

    -

    - - Added: llResetLandBanList
    -

    - -

    Nov 10 2007 03:12 (local time)

    -

    - - Fixed: Editing notecards is broken
    -

    - -

    Nov 09 2007 01:21 (local time)

    -

    - - Fixed: CONTROL_ML_LBUTTON was missssspelleddd
    -

    - -

    Nov 07 2007 14:19 (local time)

    -

    - - Fixed: info on llDetachFromAvatar() shows argument
    -

    - -

    Release 2.23

    - -

    Nov 02 2007 15:53 (local time)

    -

    - - Added: PRIM_SCULPT_TYPE_* constants
    -

    - -

    Oct 30 2007 11:53 (local time)

    -

    - - Added: Findwindow uses F3 for next find
    -

    - -

    Oct 26 2007 10:57 (local time)

    -

    - - Fixed: Some menu items use online wiki (if available), others use offline wiki
    -

    - -

    Oct 24 2007 14:53 (local time)

    -

    - - Fixed: clicking Errors located on last line looses control on edit window
    - - Added: Shortcut keys to solution explorer
    - - Fixed: New script in solution explorer does not use indent user setting
    -

    - -

    Oct 23 2007 20:13 (local time)

    -

    - - Changed: Shift-End, does not select the newline char
    - - Changed: LSLEditor remembers workingdirectory
    - - Changed: 'View Solutionexplorer' made persistent
    -

    - -

    Release 2.22

    - -

    Oct 23 2007 20:13 (local time)

    -

    - - Changed: When importing script, make form active.
    - - Changed: combox box for listening channels set to first channel by default
    - - Fixed: llScaleTexture has wrong arguments (and description)
    - - Changed: Menu item, "File - New - File" changed to File - New - Script"
    - - Fixed: llResetScript has to go directly to state_entry (and resetting vars)
    -

    - -

    Oct 22 2007 04:00 (local time)

    -

    - - Changed: vars don't have to be initialised before usage
    -

    - -

    Oct 21 2007 20:18 (local time)

    -

    - - Changed: Solution explorer, files are opened only once at a time
    - - Changed: Solution explorer, changed Prim entity to Object
    - - Changed: Solution explorer, Objects can be added to Objects
    - - Added: llMessageLinked can use linknum in solution explorer(needs testing)
    -

      -
    • LINK_ROOT
    • -
    • LINK_SET
    • -
    • LINK_ALL_OTHERS
    • -
    • LINK_ALL_CHILDREN
    • -
    • LINK_THIS
    • -
    - Relationship is defined by place in solution explorer tree (no need to use llCreateLink)

    - - Fixed: the dialog is missing several buttons when using long text
    - - Changed: llDialog and llRequestPermissions removed topmost property
    -

    - -

    Oct 20 2007 12:09 (local time)

    -

    - - Added: Contextmenu on error list, Copy or Copy Description only
    - - Fixed: plugin, lslint, possible crash on multiple line error output
    -

    - -

    Oct 18 2007 11:46 (local time)

    -

    - - Fixed: possible crash on not initialized string
    - - Fixed: reading notecards outside solution explorer was broken
    - - Added: llGetObjectDetails (supported OBJECT_NAME, OBJECT_DESC)
    - - Added: llSensor / llSensorRepeat / llSensorRemove() / sensor (event)
    - (only simple event trigger, num_detected is always 1)
    - - Fixed: llRequestPermissions is broken
    -

    - -

    Oct 16 2007 23:29 (local time)

    -

    - - Fixed: Old bug on multiple changed scripts saving using Ctrl-S shortcut only saves first script
    - - Fixed: Rename objects do not set object-name correctly
    -

    - -

    Release 2.21

    - -

    Oct 16 2007 13:46 (local time)

    -

    - - Changed: Find/Replace window hides when pressing Escape
    - - Changed: Find/Replace window keeps focus
    -

    - -

    Oct 15 2007 23:10 (local time)

    -

    - - Changed: Tools menu, starts at top node
    - - Added: LSLEditor goes unicode
    - menu - tools - options - text editor - general - output format -

      -
    • ANSI (default)
    • -
    • Unicode
    • -
    • Unicode big endian
    • -
    • UTF-8
    • -
    - - Fixed: Save on new.lsl file crashes LSLEditor
    - - Changed: bugreport, Highlight entry in left pane (also when lost focus)
    - - Fixed: bugreport, 'check all / uncheck all' button has wrong initial state
    - - Changed: autocompletion on ll-functions having zero arguments (or single void argument) completes with ')' char
    - - Added: double-clicking on an error message after compile, line in edit window is highlighted
    -

    - -

    Oct 10 2007 10:59 (local time)

    -

    - - Changed: In respect to solution explorer -

      -
    • llGetObjectDesc
    • -
    • llSetObjectDesc
    • -
    • llGetObjectName
    • -
    • llSetObjectName
    • -
    -

    - -

    Release 2.20

    - -

    Oct 09 2007 16:12 (local time)

    -

    - - Added: Plugin support
    - - Fixed: llList2Key crash
    -

    - -

    Oct 08 2007 23:55 (local time)

    -

    - - Changed: Opened files in solution explorer are asked to save when closed
    - - Changed: bugreport, files to be included are unchecked by default
    -

    - -

    Oct 03 2007 19:22 (local time)

    -

    - - Added: bool operators on list
    - - Fixed: Multiple 'if' indent (only on autoformat document)
    - - Added: integer operator + and - (overrides internal operators)
    - - Fixed: llParseStringKeepNulls last empty element is not added
    - - Fixed: llListSort on non string items
    - - Fixed: Sometimes scrolling is disabled when moving the cursor
    - - Fixed: Multiline comments on highlighted chars gives colored results
    - - Fixed: llList2XXX functions for negative index
    - - Added: explicit string operator on bool
    -

    -

    Oct 02 2007 18:25 (local time)

    -

    - - Added: Menu - Tools - Options - Text editor - warning on different indent scheme (on by default)
    - - Added: Menu - Tools - Options - Text editor - autocorrect indent on file loading (off by default)
    - - Fixed: changing guid on items in solutionexplorer reflects on opened script windows
    - - Changed: Wildcard autocompletion on argument, changed to show only pulldown menu (example llGetInventoryName)
    - - Added: llRot2Fwd / llRot2Up / llRot2Left
    -

    - -

    Release 2.19

    - -

    Oct 01 2007 16:30 (local time)

    -

    - - Changed: Make text bold on active tab
    - - Fixed: llUnescapeURL returns UTF8 strings, for example: llOwnerSay(llUnescapeURL("pr%c3%aate"));
    - - Fixed: Syntax errors are on column - 1
    - - Added: Command line option /run starts debugging after loading scripts (if any)
    - - Fixed: Syntax errors on scripts having same name are clickable
    - - Fixed: Copy / Paste gives wrong colors in editor
    -

    - -

    Sep 29 2007 21:35 (local time)

    -

    - - Added: Changing Guid of any item in solution explorer
    - - Changed: manual listen event trigger, channel is combobox
    - (listen filter does only work on normal chat messages, not on manual event trigger)
    - - Added: Ctrl-C copies selected errors to clipboard
    - - Added: Ctrl-A selects all text errors list
    - - Added: Ctrl-A selects all text in debug and simulator console
    - - Added: Line, Column and Char position of cursor (added Column)
    - - Fixed: "There are 0 instances, replace them all?"
    - - Fixed: var names containing 'jump' are wrongly parsed
    - - Fixed: llAttachToAvatar wrong description
    -

    - -

    Sep 22 2007 19:29 (local time)

    -

    - - Fixed: Selection from last line does not work
    -

    - -

    Release 2.18

    - -

    Sep 21 2007 19:09 (local time)

    -

    - - Fixed: SaveAs was broken
    - - Fixed: autocompletion on 'default', only when there is no default state
    - - Fixed: state change to same state, acts like a return
    - - Changed: Ctrl-D (format document) keeps cursor on line
    - - Changed: Ctrl-E (format selection) keeps text selected
    - - Added: Tools - Options - Debugging - General - Quoted strings in list output (default = none)
    - - Changed: Major change to the list object (needs testing)
    - - Fixed: Some minor indent bug on outermost braces when typing
    - - Changed: Verbose output gives more readable lists
    - - Fixed: llParseString2List and llParseStringKeepNulls (needs testing)
    -

    - -

    Sep 19 2007 16:47 (local time)

    -

    - - Added: http 'ContentLength' on llHTTPRequest POST requests
    -

    - -

    Release 2.17

    - -

    Sep 19 2007 12:47 (local time)

    -

    - - Fixed: Closing LSLEditor saves (all) changed files using its own name, example files (new.lsl) shows dialog
    -

    - -

    Sep 18 2007 12:47 (local time)

    -

    - - Fixed: Labels can have whitespace between @ and label name
    -

    - -

    Sep 17 2007 14:41 (local time)

    -

    - - Added: Tools - Options - Debugging - General - Single Quote char allowed outside strings
    -

    - -

    Sep 16 2007 14:41 (local time)

    -

    - - Fixed: Typing many '}' on same lines, gives weird autoformatting
    - - Fixed: Bracket highlighting when typing braces (curly brackets)
    - - Fixed: Rotation '/' operator
    -

    - -

    Sep 15 2007 17:45 (local time)

    -

    - - Added: Update application supports 'gzip','zip' and 'bzip2'
    - - Changed: Richlabel has some extra right margin
    - - Fixed: 4-Spaces indent was broken on tools menu
    - - Fixed: Annoying scroll when bracket highligthing and code formatting
    - - Fixed: 'If you see this, something is wrong' on state change and llResetScript
    - - Fixed: Die button kills runaway processes like 'while(TRUE);'
    - - Added: Icons for errors and warnings
    - - Added: Compiler generates warnings (can be switched off in menu Tools - Options - Debugging - General)
    -

    - -

    Sep 14 2007 10:52 (local time)

    -

    - - Fixed: llOwnerSay talks only to the owner, preventing possible loops
    -

    - -

    Sep 13 2007 16:39 (local time)

    -

    - - Added: Date/time on printed output
    - - Changed: Case insensitive on ECC
    -

    - -

    Release 2.16

    - -

    Sep 13 2007 12:10 (local time)

    -

    - - Added: Experimental Code Completion (ECC) on user defined variable names, menu - tools - options - Text Editor - Code Completion
    - - Changed: Escape toggles on/off autocompletion and tooltips
    -

    - -

    Sep 12 2007 16:28 (local time)

    -

    - - Added: Pagesetup margins on printed documents
    - - Added: header and footer on printed documents
    - - Added: Print selection
    - - Fixed: llList2ListStrided crashed for nonsense (<=0) strides
    -

    - -

    Sep 11 2007 17:07 (local time)

    -

    - - Added: Ctrl-Del removes whitespace/word
    - - Fixed: llToUpper / llToLower gives wrong hint
    -

    - -

    Sep 06 2007 13:35 (local time)

    -

    - - Fixed: First users see only a small window
    -

    - -

    Release 2.15

    - -

    Sep 03 2007 17:00 (local time)

    -

    - - Fixed: Renaming of non scripts and non notecards
    - - Added: Solution Explorer, changing filetype of items
    - - Changed: Solution Explorer, project and inventory paths are saved as a relative path to solution file (if possible)
    - - Changed: Solution Explorer, "Add New File -> Script" , have it use the default.lsl file, same as "new.lsl" when opening.
    - - Fixed: 0xFFFFFFFF parsed as integer
    - - Fixed: capitalization of 'string' and 'float'
    - - Added: PRIM_TYPE_SCULPT constant
    -

    - -

    Aug 31 2007 12:07 (local time)

    -

    - - Fixed: Recent projects menu blocks when dirty script has to be saved
    - - Added: Menu - Tools - Options - Environment - General - delete old files after update
    -

    - -

    Release 2.14

    - -

    Aug 27 2007 12:07 (local time)

    -

    - - Fixed: Crash in Renaming files containing illegal chars in Solutionexplorer
    - - Fixed: Find / Replace broken
    - - Fixed: Labels are broken
    -

    - -

    Aug 24 2007 15:30 (local time)

    -

    - - Added: Menu - Project - Add New File , add new file to active Prim in SolutionExplorer (if Any)
    - - Added: Check if solution file already exist when Create new solution
    - - Added: F3 shortcut for 'Find Next'
    - - Fixed: Pressing Ctrl-H twice crashes program
    - - Added: Multiline strings
    - - Fixed: String (capital S) can be used as a var
    - - Added: Explicit string operator on internal integer
    - - Added: File Association for .lsl and .sol files (Menu-Tools)
    -

    - -

    Aug 23 2007 23:02 (local time)

    -

    - - Fixed: Linenumbers incorrect after scrolling
    - - Fixed: default state has not to be on column 0
    - - Fixed: When user clicks 'No' on llRequestPermissions, do trigger run_time_permissions
    - - Fixed: Brackets highlighting now skips comments
    - - Changed: Online Wiki Address can be changed
    - - Changed: Bugreport shows unique number and date/time
    - - Changed: Bugreport uploadservice can handle normal filenames, spaces included ;-)
    - - Added: llGetInventoryType (when using solution explorer)
    - - Changed: Blockcommenting Ctrl-K and Ctrl-L (also on non selected line)
    -

    - -

    Release 2.13

    - -

    Aug 22 2007 17:57 (local time)

    -

    - - Fixed: Crash on making default state
    - - Fixed: Linenumbers only appear when scrolling
    - - Fixed: Crash on some debug code, writing to D drive
    - - Fixed: float parsing on lists does Oops...
    - - Added: Experimental wildcard argument completion (for example llListStatistics)
    - - Fixed: Tooltip on codecompletion can not get outside client area
    - - Fixed: Coloring when typing strings
    - - Fixed: indenting fails on strings containing // chars
    -

    - -

    Aug 21 2007 19:28 (local time)

    -

    - - Changed: Reading scripts using default codepage
    - - Added: llListStatistics (needs more testing)
    - - fixed: llCSV2List escapes angle brackets
    -

    - -

    Aug 20 2007 23:48 (local time)

    -

    - - Fixed: Find / Find and Replace window mixes up settings
    - - Fixed: Sending bugreport crashes editor when offline
    -

    - -

    Aug 18 2007 21:19 (local time)

    -

    - - Changed: new Tools Options menu
    - - Fixed: Single quotation char in comment breaks parsing
    -

    - -

    Aug 17 2007 19:22 (local time)

    -

    - - Fixed: Quad and Vector parsing breaks at certain conditions
    - - Fixed: some changes to text do not set dirty flag
    -

    - -

    Aug 16 2007 23:57 (local time)

    -

    - - Fixed: changing state into same state goes into loop
    - - Fixed: llCSV2List is not really inverse to llList2CSV (llCSV2List does not parse rotations and vectors, yet)
    - - Fixed: labels without ';' does not give syntax error
    - - Fixed: jump @label; does not give syntax error
    - - Fixed: floats getting truncated on non-English systems
    - - Changed: Position and Size of editor window are only restored when in workingarea of Primary screen
    - - Fixed: Script error on download HTML Help file
    -

    - -

    Aug 15 2007 17:51 (local time)

    -

    - - Fixed: Don't compile nor syntax check notecards using solution explorer
    - - Added: llInsertString
    - - Fixed: llGiveInventoryList has wrong ref argument (syntax check breaks)
    - - Fixed: Tab and Shift Tab on selected text
    - - Added: Toggle button check / uncheck attached scripts on the bugreport form
    - - Fixed: Argument of event changed(integer change)
    - - Changed: Sending bugreports can be canceled
    - - Changed: implicit float to integer operator to explicit
    -

    - -

    Release 2.12

    - -

    Aug 10 2007 13:13 (local time)

    -

    - - Added: LSLEditorHelp offline wiki (Tools - Editor properties)
    - - Changed: Find window keeps search entries
    -

    - -

    Aug 05 2007 00:30 (local time)

    -

    - - Fixed: Cursor position on backspace
    -

    - -

    Aug 03 2007 16:50 (local time)

    -

    - - Added: Ctrl-F (find) uses keyword on cursor position
    - - Added: Ctrl-Up / Ctrl-Down history scrolling on chat box
    - - Fixed: llSetLinkTexture() do not take texture uuids
    - - Fixed: llParseString2List refuse to take keys as strings
    - - Added: Solution Explorer, F2 for rename
    - - Added: default.lsl in LSL-Editor directory will be used as 'new.lsl' template
    - - Fixed: llSetColor tooltip is wrong
    -

    - -

    Aug 02 2007 23:42 (local time)

    -

    - - Added: Smtp Authentication for llEmail (Tools, Runtime Properties, External, Email)
    -

    - -

    Release 2.11

    - -

    Jul 30 2007 16:19 (local time)

    -

    - - Added: Home key works also on white-space lines
    - - Fixed: After sending two bugreports, button is disabled
    - - Added: POST method to llHttpRequest (untested)
    -

    - -

    Jul 28 2007 12:05 (local time)

    -

    - - Fixed: Richtext label inserts spaces after color change
    - - Added: Sound support (simple) use llPlaySound and .wav file in solution explorer
    -

    - -

    Jul 26 2007 13:29 (local time)

    -

    - - Added: PageUp and PageDown on intellisense dropdown menu
    - - Fixed: Editor crash when closing project having browser window open
    - - Added: llGetLocalPos()
    -

    - -

    Release 2.10

    - -

    Jul 25 2007 14:30 (local time)

    -

    - - Added: Solution Explorer (first look)
    -

      -
    • llGetObjectName
    • -
    • llGetScriptName
    • -
    • llGetKey
    • -
    • llGetInventoryName
    • -
    • llGetInventoryKey
    • -
    • llGetInventoryNumber
    • -
    • llGetNumberOfNotecardLines
    • -
    • llGetNotecardLine
    • -
    - - Added: Reset option on Editor properties
    - - Added: mod operator (%) on integer
    -

    - -

    Jul 24 2007 11:55 (local time)

    -

    - - Changed: Recent file list is clipped (showing ...)
    - - Fixed: Syntax error on negative line numbers (?!) breaks editor
    -

    - -

    Jul 20 2007 10:55 (local time)

    -

    - - Added: Checkbox on Edit tab to Disable compile / syntaxcheck
    - - Added: Allow scripts to open by Drag and Drop on LSL-Editor
    - - Fixed: Indent on return when in middle of a line
    - - Added: llGetDate
    - - Fixed: llDie in script does not work, throws an error
    - - Changed: id in llMessageLinked / message_link accepts strings
    -

    - -

    Jul 19 2007 15:27 (local time)

    -

    - - Added: Bugtracker to Menu Help , Bugreport
    - - Changed: Home button toggles between start of line, and first non whitespace
    -

    - -

    Release 2.9

    - -

    Jul 16 2007 11:25 (local time)

    -

    - - Changed: Autocompletion images scale on changing fonts
    - - Changed: Tab alignement on changing fonts
    -

    - -

    Jul 15 2007 23:51 (local time)

    -

    - - Added: Editor Properties, Font selector for editor and tooltips
    - - Fixed: Ctrl-X does not have paste
    -

    - -

    Jul 13 2007 15:20 (local time)

    -

    - - Changed: Bugreport name and email adres made sticky
    - - Fixed: Bugreport window looses focus when tooltip shows
    - - Added: Shift-Delete
    - - Fixed: Ctrl-X can not undo
    - - Fixed: Ctrl-Home does not go to line 1, column 1
    - - Fixed: Shift-Home does not appear to select text
    -

    - -

    Jul 12 2007 12:59 (local time)

    -

    - - Fixed: Tooltip shows bold on some High-Resolution machines (David IOU1)
    -

    - -

    Release 2.8

    - -

    Jul 10 2007 08:41 (local time)

    -

    - - Fixed: Runtime properties, incorrect key from cache (xor)
    -

    - -

    Jul 9 2007 14:51 (local time)

    -

    - - Added: Editor properties: Auto update frequency
    - - Added: Editor properties: Indent settings
    -

    - -

    Jul 8 2007 23:59 (local time)

    -

    - - Changed: Tooltip font is SystemFonts.MessageBoxFont
    - - Fixed: llRot2Up returns void....
    -

    - -

    Jul 6 2007 13:13 (local time)

    -

    - - Fixed: MD5 checksum on update function breaks
    - - Added: Boundary checks on list functions
    - - Fixed: jump statement gives error (_goto)
    -

    - -

    Release 2.7

    - -

    Jul 4 2007 12:12 (local time)

    -

    - - Added: Bitwise Xor operator on integer (^)
    -

    - - -

    Jul 3 2007 20:56 (local time)

    -

    - - Fixed: XML-RPC server not closed when closing LSL-Editor
    -

    - -

    Jul 2 2007 14:41 (local time)

    -

    - - Fixed: Size of Simulator resets to default
    - - Changed: Vector and Rotation parser
    - - Changed: Vector and Rotation fields changed from double to float
    - - Added: Preprocessor processes all internal reserved words
    - - Changed: llDialog / llRequestPermissions / link_message / llMessageLinked uses new TaskQueue
    -

    - -

    Jul 1 2007 23:55 (local time)

    -

    - - Added: Smart indenting on closing parenthesis (experimental)
    - - Revised: (Needs testing!!) -

      -
    • llGetSubString
    • -
    • llDeleteSubString
    • -
    • llList2List
    • -
    • llDeleteSubList
    • -
    - - Added: -
      -
    • llIntegerToBase64
    • -
    • llBase64ToInteger
    • -
    • llStringToBase64
    • -
    • llBase64ToString
    • -
    • llXorBase64StringsCorrect
    • -
    -

    - -

    Jun 30 2007 11:41 (local time)

    -

    - - Fixed: Can't close tabs when in Windows Classic mode
    - - Changed: Internal, state / event has its own TaskQueue (needs testing)
    -

    - -

    Jun 29 2007 16:38 (local time)

    -

    - - Fixed: Integer '~' operator works only on TRUE/FALSE
    - - Added: Syntax checker button F6 (no compile / execute)
    - - Changed: Internal, Simulator / Compiler as usercontrols
    -

    - -

    Jun 28 2007 12:18 (local time)

    -

    - - Added: Ctr-Shft-S to Save as...
    - - Added: AutoUpdate check (daily) / Manual update on Help menu
    - - Added: Double click on compiler error goes to error line / column
    - - Changed: Compiler errors shows on listview
    - - Changed: Tab / Shift Tab , toggles indent block of text
    - - Changed: Home button sets cursor to beginning of line, after whitespace
    -

    - -

    Release 2.6

    - -

    Jun 27 2007 18:20 (local time)

    -

    - - Fixed: Editor crashes on error in dataserver script
    - - Changed: synchronized llGetNumberOfNotecardLines / llGetNotecardLine dataserver requests
    -

    - -

    Jun 26 2007 11:49 (local time)

    -

    - - Fixed: llDialog does not talk anymore
    -

    - -

    Jun 25 2007 21:08 (local time)

    -

    - - Fixed: Indent adds tab on lines ending in comment or whitespace
    - - Added: XML-RPC listening base port 50888
    -

      -
    • remote_data (event)
    • -
    • llOpenRemoteDataChannel
    • -
    • llCloseRemoteDataChannel
    • -
    • llRemoteDataReply
    • -
    • llSendRemoteData (untested)
    • -
    - - Fixed: Tooltips shows 'lt;' and 'gt;'
    - - Added: Bugreport to Menu Help
    - - Added: llLoadURL
    - - Added: listen callbacks are removed on state change
    - - Added: llListenControl
    -

    -

    Jun 24 2007 13:11 (local time)

    -

    - - Added: Print preview
    - - Fixed: Editor only prints 1 page
    - - Added: ReplaceAll
    - - Fixed: Find and Replace issues
    -

    -

    Jun 22 2007 18:59 (local time)

    -

    - - Added: The ~ (complement) operator to integer
    - - Fixed: global functions containing whitespace gives compile error
    - - Added: Keep user settings between LSLEditor updates
    - - Added: llGetNumberOfNotecardLines / llGetNotecardLine
    - - Added: Recent files list in the File menu
    -

    - -

    Jun 21 2007 13:41 (local time)

    -

    - - Fixed: Compiles empty documents and/or absent default state
    -

    - -

    Release 2.5

    - -

    Jun 20 2007 22:41 (local time)

    -

    - - Fixed: Menu Tools does not work
    - - Added: llStringTrim
    -

    - -

    Jun 18 2007 14:50 (local time)

    -

    - - Fixed: Backspace / Delete issues when brackets highlighted
    -

    - -

    Jun 14 2007 23:59 (local time)

    -

    - - Fixed: Backspace unreliable when brackets highlighted
    - - Changed: Tab-characters have same width as 4 spaces
    - - Changed: auto indent on typing if/else
    - - Changed: format document indent if/else
    - - Fixed: timer stops after state change
    - - Fixed: llList2Integer broken
    - - Added: llMessageLinked / link_message
    - - Fixed: llListReplaceList gives wrong answer
    -

    - -

    Jun 13 2007 20:21 (local time)

    -

    - - Fixed: key problem (breaks listen and more)
    -

    - -

    Release 2.4

    - -

    Jun 13 2007 12:12 (local time)

    -

    - - Release 2.4
    -

    - -

    Jun 12 2007 16:43 (local time)

    -

    - - Fixed: llSetTimerEvent broken
    - - Added: Redo
    - - Changed: Linenumbers stops at and-of-document
    - - Fixed: Cursorposition shows on closed tab
    - - Changed: Close button on tab shows on mouse hover
    - - Fixed: Argument typing shows wrong color
    - - Fixed: Slow brackets matching
    - - Fixed: Slow editing large documents / long lines
    -

    - -

    Jun 11 2007 11:36 (local time)

    -

    - - Fixed: Line numbers incorrect after delete all
    - - Fixed: Cursor position does not show on non primary script
    - - Fixed: Undo eats memory
    - - Fixed: Undo slow on large documents
    -

    -

    Jun 09 2007 11:44 (local time)

    -

    - - Added: brackets matching
    -

      -
    • parentheses or round brackets: ( )
    • -
    • box brackets or square brackets: [ ]
    • -
    • curly brackets or braces: { }
    • -
    • angle brackets or chevrons: < >
    • -
    -

    -

    Jun 08 2007 19:35 (local time)

    -

    - - Fixed: Undo after find / replace
    - - Fixed: Undo does nothing
    - - Added: Color scheme for tooltips
    - - Fixed: Missing spaces in tooltips
    - - Fixed: Keyboard hint vertical position changes
    - - Fixed: Mouse Tooltip shows on EOL
    -

    - -

    Jun 07 2007 13:41 (local time)

    -

    - - Added: Find and Replace
    -

    - -

    Release 2.3

    - -

    Jun 06 2007 17:01 (local time)

    -

    - - Fixed: Editor does not show on taskbar
    - - Added: bool operators on key
    - - - Added: Operator vector / rotation
    - - Fixed: Save Ctrl-S in debug session
    -

    -

    Jun 05 2007 23:33 (local time)

    -

    - - Fixed: A lot of operators
    - - Fixed: llDeleteSubString
    - - Added: Block commenting Ctrl-K Ctrl-L
    - - Fixed: Compiler errors hide internal types
    - - Improved: parsing strings, including escape chars
    - - Changed: No codecompletion nor hints typing within strings
    - - Changed: No codecompletion nor hints typing within comments
    - - Fixed: blind tabs showing again on XP without VisualStyles
    - - Added: Shortcutkeys for formatting
    -

    -

    Jun 04 2007 21:52 (local time)

    -

    - - Changed: replaced double by float
    - - Fixed: Parsing long files takes to much time
    - - Fixed: Line-numbers frozen
    - - Fixed: compile error on 'state' between quotes
    - - Fixed: AutoWordSelection problem appears to be an insolvable Microsoft bug, ... i solved it
    - - Added: Showing Line / Character position of cursor on statusbar
    -

    -

    Jun 03 2007 20:54 (local time)

    -

    - - Fixed: AutoWordSelection off, and stay off
    - - Fixed: indent whitespace can be a mix of tab and spaces
    - - Added: default / state to autocompletion ;-)
    - - Added: operators + and - for rotation / rotation
    - - Added: operators multiplication of vector / rotation
    - - Added: operators multiplication and division of rotation / rotation
    -

    -

    Jun 02 2007 18:58 (local time)

    -

    - - Added: llAxisAngle2Rot
    - - Added: some vector operators
    - - Fixed: codecompletion tooltip disappears when hitting arrow keys
    - - Fixed: blind tabs showing again on XP without VisualStyles
    -

    -

    Jun 01 2007 23:34 (local time)

    -

    - - Added: at_target, http_response and remote_data events
    - - Added: Goto form acts on return key
    - - Added: First implementation of llDialog
    - - Fixed: VisualStyleRenderer crash on startup
    - - Fixed: Indent was broken
    - - Added: implicit string operator on key
    - - Added: implicit bool operators to string class
    -

    - -

    May 31 2007 23:55 (local time)

    -

    - - Added: llSleep
    - - Added: Editor Goto Line (Ctrl-G)
    - - Added: Ctrl-F4 closes active window/tab
    - - Added: Editor option Wiki-pages in Seperate browser
    - - Fixed: Linenumber drawing double-buffered in editor
    - - Added: Close button to Tab pages
    - - Fixed: 'Tab' key inserts a tab character or 4-space characters, depending on the Editor-settings
    - - Fixed: timer problem when changing states
    -

    - -

    May 29 2007 16:41 (local time)

    -

    - - Improved: parenthesis indenting old 'C' style accepted
    - - Added Editor options: Auto Word Selection (off by default)
    - - Fixed: Linenumber drawing double-buffered in editor
    - - Added a 'Die' button to the compiler
    - - Added Editor options: SL (ugly) color-scheme / SL 4-spaces indent
    - - Fixed: crash on editing end-of-document
    - - Fixed: void argument on events
    -

    - -

    May 28 2007 23:34 (local time)

    -

    - - Autocompletion including arguments on 'events'
    - - Fixed: incorrect color on pasting text
    - - Fixed: autoformatting on selected text
    - - Fixed: incorrect old argument list on non-functions
    -

    - -

    May 27 2007 13:15 (local time)

    -

    - - llListFindList bug fixed
    - - added comparison operators for list,key,float,integer,vector and rotation
    - - when opening an existing document, the untouched 'new.lsl' example is destroyed
    -

    - -

    Release 2.2

    - -

    May 26 2007 18:00 (local time)

    -

    - - Tooltipping / Codecompletion hitting the boundaries of parent window
    -

    - -

    May 25 2007 11:28 (local time)

    -

    - - Explicit cast 'list' implemented for string,integer,key,float,vector and rotation
    -

    - -

    May 24 2007 19:34 (local time)

    -

    - - Compiler error shows correct line numbers
    - - Debug tab only visible when there are no compile errors
    - - Removed C# tab
    - - Small bug fixed, on empty information, when using codecompletion
    - - Codecompletion shows ALL keywords
    - - Shows '*' after filename when document is changed
    -

    - -

    May 23 2007 21:03 (local time)

    -

    - - Compiler starts at Output tab, on error shows C# tab
    - - Tabbed documents!!
    - Thanks to Darek and Marco for their bug reports:
    - - Fixed: Operator '+' is ambiguous on operands of type 'LSLEditor.SecondLife.integer' and 'LSLEditor.SecondLife.integer'
    - - Fixed: Operator '+=' cannot be applied to operands of type 'LSLEditor.SecondLife.list' and 'double'
    - - Fixed: Operator '+=' cannot be applied to operands of type 'LSLEditor.SecondLife.list' and 'LSLEditor.SecondLife.key'
    - - Copy from the debug window enabled
    -

    - -

    May 22 2007 23:46 (local time)

    -

    - - Bug fix on empty key in Sim properties
    - - Show function arguments while typing
    -

    - - -

    May 16 2007 13:07 (local time)

    -

    - - Simulator docks at bottom
    -

    - -

    Release 2.1

    - -

    May 14 2007 22:47 (local time)

    -

    - - Release 2.1 (Multiple document interface)
    - - Running multiple LSL scripts concurrent
    - - Chat/listen implementation between LSL scripts
    - - First implementation of a 'find' (Ctrl-F) option
    -

    -

    May 08 2007 16:37 (local time)

    -

    - - llListRandomize
    - - llListSort
    - - llListReplaceList (to be tested)
    - - llParseString2List (todo spacers)
    - - llParseStringKeepNulls (todo spacers)
    -

    - -

    May 07 2007 19:53 (local time)

    -

    - - llMD5String implemented - - Implemented a lot of list functions (see examples)
    - - Fixed state bug
    - - llResetScript()
    - - Tooltip improved
    -

    - -

    May 06 2007 13:03 (local time)

    -

    - - Parser improved a lot!!
    -

    - -

    May 04 2007 17:15 (local time)

    -

    - - LSL keywords updated 19 Dec 2006 for LSL 1.13
    -

    -

    May 03 2007 18:49 (local time)

    -

    - - Execution is more stable, and useful error reports :-)
    - - Implemented listen filter (llListen / llListenRemove)
    - - some minor bugfixes
    -

    -

    May 02 2007 19:41 (local time)

    -

    - - llListFindList implemented
    - - KEY_NULL implemented
    - - key compare
    - - llGetOwnerKey returns key in compiler properties
    - - llToLower / llToUpper
    - - llEuler2Rot / llRot2Euler
    - - Code completion shows function arguments when typing
    - - Cleaned the resource files
    - - Updated a lot more, can't remember ;-)
    -

    - -

    May 01 2007 13:47 (local time)

    -

    - - Manual Chat works, on different channels (listen) -

    -

    Apr 30 2007 23:57 (local time)

    -

    - - Format document (Edit -> Advanced -> Format Document)
    - - llFrand seeding
    - - casting bug fixed (parser)
    - - run_time_permissions event bug fixed
    - - llDialog shows messagebox (no buttons)
    - - Did some testing on "Shippou Oud - Fruit machine"
    - - Import Examples
    - - Timer bug fixed
    - - Al lot of internal base class changes
    -

    - -

    Apr 29 2007 15:29 (local time)

    -

    First implementation of linenumbers

    - -

    Release 2.0

    - -

    Apr 28 2007 14:01 (local time)

    -

    Changed project to .NET 2.0

    - -

    Mar 30 2007 12:54 (local time)

    -

    - changed wiki adres

    - -

    Jan 2007 - Mar 2007

    -

    - Sabbatical :-), doing nothing....

    - -

    Dec 26 2006 12:54 (local time)

    -

    - first implementation of printing

    -

    Nov 21 2006 23:22 (local time)

    -

    - delete key bug fixed

    -

    Nov 08 2006 00:40 (local time)

    -

    - got Strife _double back in place
    - - some C# coloring

    -

    Nov 05 2006 14:54 (local time)

    -

    - Just some minor updates, lack of time at the moment

    -

    Oct 29 2006 01:00 (local time)

    -

    - State change fires state_exit and state_entry
    - - compiler on tabcontrole

    -

    Oct 28 2006 02:00 (local time)

    -

    - Float2Hex example compiles (thanx to Strife Onizuka)

    -

    Oct 27 2006 21:59 (local time)

    -

    - Global class compiles correctly on vars (static) and user defined - functions (void and non void)

    -

    Oct 26 2006 01:07 (local time)

    -

    - code completion, tab/return and contains icons for different types
    - - other type of tooltipping.... not nice.
    - - override & , to make it bool answer...

    -

    Oct 25 2006 01:46 (local time)

    -

    - http can use proxy
    - - smtp
    - - properties windows for compiler
    - - integer made out of struct, to override (string) explicit operator

    -

    Oct 22 2006 21:43 (local time)

    -

    - first implementation of llHTTPRequest / http_response
    - - made a lot of lists functions
    - - more lists on one line (not lists within lists)

    -

    Oct 20 2006 21:00 (local time)

    -

    - State change, shows correct events

    -

    Oct 20 2006 0:03 (local time)

    -

    - Implemented (almost) all Math functions
    - - Timer works

    -

    Oct 19 2006 03:00 (local time)

    -

    - some edit improvements
    - - states work!!

    -

    Oct 16 2006 23:50 (local time)

    -

    - Improvement parsing script, vector,rotation, simple list (one line)
    - - Global vars, wrapped in global class
    - - Checkupdate function in the program
    - - First attempt multiple state (only default state executes, have patients - my friends...)

    -

    Oct 14 2006 18:36 (local time)

    -

    - User argument input for events like touch_start (see picture above)

    -

    Oct 8, 2006 18:36 (local time)

    -

    - Code highlighting
    - - Code completion
    - - Code info, took the old LSLguide, and used Appendix, i can do better i - know
    - - F1 , on a keyword, does show up the LSLWiki page on the keyword
    - - Compile, the hello world example should work on state_entry event
    - - Open/Save and edit lsl script files

    -

    Oct 2, 2006 (local time)

    - -

    Release 1.0

    - -

    First idea and prototype

    - -

    Oct 1, 2006 (local time)

    - -
    + + + Release Notes + + +
    +
    +

    2012 - Release 2.x.x

    + * Added +
      +
    • "Release Notes..." to help menu.
    • +
    + + Bugs Fixed: +
      +
    • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
    • +
    • 3461546 - ReleaseNotes.htm in source, but never used
    • +
    +
    + +
    +

    2011-12-12 - Release 2.43.1

    + * Added: constants +
      +
    • CONTENT_TYPE_HTML
    • +
    • DENSITY
    • +
    • ESTATE_ACCESS_ALLOWED_AGENT_ADD
    • +
    • ESTATE_ACCESS_ALLOWED_AGENT_REMOVE
    • +
    • ESTATE_ACCESS_ALLOWED_GROUP_ADD
    • +
    • ESTATE_ACCESS_ALLOWED_GROUP_REMOVE
    • +
    • ESTATE_ACCESS_BANNED_AGENT_ADD
    • +
    • ESTATE_ACCESS_BANNED_AGENT_REMOVE
    • +
    • FRICTION
    • +
    • GRAVITY_MULTIPLIER
    • +
    • HTTP_VERBOSE_THROTTLE
    • +
    • KFM_CMD_PAUSE
    • +
    • KFM_CMD_PLAY
    • +
    • KFM_CMD_STOP
    • +
    • KFM_COMMAND
    • +
    • KFM_DATA
    • +
    • KFM_FORWARD
    • +
    • KFM_LOOP
    • +
    • KFM_MODE
    • +
    • KFM_PING_PONG
    • +
    • KFM_REVERSE
    • +
    • KFM_ROTATION
    • +
    • KFM_TRANSLATION
    • +
    • OBJECT_PHYSICS_COST
    • +
    • OBJECT_PRIM_EQUIVALENCE
    • +
    • OBJECT_SERVER_COST
    • +
    • OBJECT_STREAMING_COST
    • +
    • PARCEL_DETAILS_SEE_AVATARS
    • +
    • PRIM_MATERIAL
    • +
    • PRIM_MEDIA_ALT_IMAGE_ENABLE
    • +
    • PRIM_MEDIA_AUTO_LOOP
    • +
    • PRIM_MEDIA_AUTO_PLAY
    • +
    • PRIM_MEDIA_AUTO_SCALE
    • +
    • PRIM_MEDIA_AUTO_ZOOM
    • +
    • PRIM_MEDIA_CONTROLS
    • +
    • PRIM_MEDIA_CONTROLS_MINI
    • +
    • PRIM_MEDIA_CONTROLS_STANDARD
    • +
    • PRIM_MEDIA_CURRENT_URL
    • +
    • PRIM_MEDIA_FIRST_CLICK_INTERACT
    • +
    • PRIM_MEDIA_HEIGHT_PIXELS
    • +
    • PRIM_MEDIA_HOME_URL
    • +
    • PRIM_MEDIA_PERMS_CONTROL
    • +
    • PRIM_MEDIA_PERMS_INTERACT
    • +
    • PRIM_MEDIA_PERM_ANYONE
    • +
    • PRIM_MEDIA_PERM_GROUP
    • +
    • PRIM_MEDIA_PERM_NONE
    • +
    • PRIM_MEDIA_PERM_OWNER
    • +
    • PRIM_MEDIA_WHITELIST
    • +
    • PRIM_MEDIA_WHITELIST_ENABLE
    • +
    • PRIM_MEDIA_WIDTH_PIXELS
    • +
    • PRIM_OMEGA
    • +
    • PRIM_PHYSICS_MATERIAL
    • +
    • PRIM_PHYSICS_SHAPE_CONVEX
    • +
    • PRIM_PHYSICS_SHAPE_NONE
    • +
    • PRIM_PHYSICS_SHAPE_PRIM
    • +
    • PRIM_PHYSICS_SHAPE_TYPE
    • +
    • PRIM_POS_LOCAL
    • +
    • PRIM_ROT_LOCAL
    • +
    • PRIM_SCULPT_FLAG_INVERT
    • +
    • PRIM_SCULPT_FLAG_MIRROR
    • +
    • PROFILE_NONE
    • +
    • PROFILE_SCRIPT_MEMORY
    • +
    • RESTITUTION
    • +
    • STATUS_BLOCK_GRAB_OBJECT
    • +
    • STATUS_BOUNDS_ERROR
    • +
    • STATUS_INTERNAL_ERROR
    • +
    • STATUS_MALFORMED_PARAMS
    • +
    • STATUS_NOT_FOUND
    • +
    • STATUS_NOT_SUPPORTED
    • +
    • STATUS_OK
    • +
    • STATUS_TYPE_MISMATCH
    • +
    • STATUS_WHITELIST_FAILED
    • +
    • TEXTURE_BLANK
    • +
    • TEXTURE_DEFAULT
    • +
    • TEXTURE_MEDIA
    • +
    • TEXTURE_PLYWOOD
    • +
    • TEXTURE_TRANSPARENT
    • +
    • TOUCH_INVALID_TEXCOORD
    • +
    + * other changes: Cleaned up parts of the highlighting XML file generally, and reordered some entries. +
    + +
    +

    2011-12-06 - Release 2.43

    + * Added: event +
      +
    • transaction_result
    • +
    + * Added: stub functions for: +
      +
    • llCastRay
    • +
    • llClearLinkMedia
    • +
    • llGetDisplayName
    • +
    • llGetLinkMedia
    • +
    • llGetMassMKS
    • +
    • llGetMemoryLimit
    • +
    • llGetPhysicsMaterial
    • +
    • llLinkSitTarget
    • +
    • llManageEstateAccess
    • +
    • llScriptProfiler
    • +
    • llSetAngularVelocity
    • +
    • llSetKeyframedMotion
    • +
    • llSetLinkMedia
    • +
    • llSetMemoryLimit
    • +
    • llSetPhysicsMaterial
    • +
    • llSetVelocity
    • +
    • llTransferLindenDollars
    • +
    + * Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps. +
    +
    + + +
    +

    2011 - Release 2.42

    +
    + + +
    +

    2010 - Release 2.41

    +
    + + +

    Release 2.40

    + +

    April 17 2010 14:51 (local time)
    + - Added: stub functions for: +

      +
    • llGetFreeURLs
    • +
    • llRequestURL
    • +
    • llRequestSecureURL
    • +
    • llReleaseURL
    • +
    • llHTTPResponse
    • +
    • llGetHTTPHeader
    • +
    +
    +

    + +

    Release 2.39

    + +

    October 28 2008 11:28 (local time)
    + - Added: stub functions for: +

      +
    • llTextBox
    • +
    • llGetAgentLanguage
    • +
    • llDetectedTouchUV
    • +
    • llDetectedTouchFace
    • +
    • llDetectedTouchPos
    • +
    • llDetectedTouchNormal
    • +
    • llDetectedTouchBinormal
    • +
    • llDetectedTouchST
    • +
    • llSHA1String
    • +
    +
    +

    + +

    Release 2.38

    + +

    July 28 2008 14:10 (local time)

    + - Changed: Key cache file changed, so did lsleditor (??? who made the xml file, it uses siblings, not parent-child relations????)
    +

    + +

    Summer break ;-)

    + +

    May 18 2008 18:37 (local time)

    + - Changed: Ctrl-Shft-A uses 4-spaces intdent when (auto)pasting in SL
    +

    + +

    May 13 2008 13:21 (local time)

    + - Changed: Adding duplicate items in solution explorer starts numbering at 1
    + - Fixed: focus when switching tabs
    + - Fixed: Save All (Ctrl Shft S), does not save Solution
    +

    + +

    Release 2.37

    + +

    May 2 2008 19:00 (local time)

    + - Added: PRIM_GLOW
    + - Added: llSetClickAction (and constants)
    + - Fixed: & in dialogue box
    + - Fixed: Permission dialogue box text messed up when the script name is too long
    +

    + +

    Release 2.36

    + +

    Apr 3 2008 12:47 (local time)

    + - Fixed: llAbs throws error on large numbers
    +

    + +

    Mar 28 2008 12:47 (local time)

    + - Fixed: llListen should also listen when using "" keys
    + - Added: Basic authentication to llHTTPRequest, eg. http: //userid:password@domain.name/path
    + - Added: llEmail shows error responses from smtp server when in error
    +

    + +

    Mar 27 2008 13:33 (local time)

    + - Added (experimental): 'Ctrl Shift A' pastes active LSLEditor script to SecondLife (has to open script editor in SL first)
    +

    + +

    Mar 21 2008 12:12 (local time)

    + - Fixed: Shift Home crashes editor when nothing is selected
    +

    + +

    Release 2.35

    + +

    Mar 16 2008 15:22 (local time)

    + - Added: llGetParcelDetails (see also menu - tools - options - debugging internal)
    + - Added: Alt-Backspace alternative for Ctrl-Z
    + - Fixed: Some focus issue on the find window
    + - Added: PARCEL_MEDIA_COMMAND_TYPE, PARCEL_MEDIA_COMMAND_SIZE, PARCEL_MEDIA_COMMAND_DESC, PARCEL_MEDIA_COMMAND_LOOP_SET
    + - Added: Contact item on menu Help
    + - Removed: some compression code
    +

    + +

    Feb 29 2008 12:40 (local time)

    + - Fixed: NULL_KEY was no key
    +

    + +

    Release 2.34

    + +

    Feb 23 2008 19:45 (local time)

    +

    + - Added: First generic plugin support
    + - Added: integer multiply operator for float operand
    + - Added: minus operator to rotation
    + - Fixed: Internals to pass more language tests, e.g. bool on ZERO_ROTATION and NULL_KEY, adding items to list
    +

    + +

    Feb 22 2008 23:38 (local time)

    +

    + - Fixed: Browser status hides bottom scrollbar
    + - Fixed: Switching between Tabbed document and Windowed document, browser disappears
    + - Fixed: (key)"" == False
    + - Added: state changes allowed in global functions (when set in Debugging - General menu)
    + - Fixed: info on llInsertString was missing a few spaces
    + - Added: Debug windows have context menu, Copy, Select All and Clear
    + - Added: File - New - New notecard
    + - Changed: llGetScriptName returns scriptname without extension (when set in Debugging - General menu)
    + - Fixed: Don't send empty bugreports
    + - Fixed: tabs are presented in SL as 4 spaces, for example llStringLength("\t") == 4
    + - Fixed: remove old files after Autoupdate
    + - Fixed: autoupdate menu was readonly
    +

    + +

    Release 2.33

    + +

    Feb 12 2008 08:12 (local time)

    +

    + - Fixed: llLog and llLog10
    +

    + +

    Feb 04 2008 16:30 (local time)

    +

    + - Added: Shortcut key for lslint, F7 ;-)
    + - Fixed: llMessageLinked using LINK_THIS works also when NOT using solution explorer
    + - Fixed: default value of key type is wrong
    + - Added: All animation / expression names are added to the autocompletion function (as strings)
    + - Added: Autocompletion of animation names can be switched on/off by menu Tools - Options - Text Editor - Code completion
    + - Fixed: crash of lsleditor on llHTTPRequest when errors occur
    + - Changed: Information on llSensorRepeat()
    + - Added: llResetLandPassList()
    +

    + +

    Release 2.32

    + +

    Jan 27 2008 14:00 (local time)

    +

    + - Added: open multiple files from menu 'File - Open - File...' or Ctrl-O
    + - Fixed: global functions do not parse when using multiple brackets on 1 line
    + - Fixed: renaming files and directories in solution explorer sometimes crashes lsleditor
    + - Changed: 'Recent Projects' in 'Recent Solutions'
    + - Changed: 'Add new Project' changed into 'Add new Solution'
    +

    + +

    Release 2.31

    + +

    Jan 14 2008 16:28 (local time)

    +

    + - Changed: llUnescapeURL and llEscapeURL using UTF8 encoding
    + - Changed: llBase64ToString and llStringToBase64 using UTF8 encoding
    + - Changed: improved label parsing
    +

    + + +

    Jan 12 2008 10:43 (local time)

    +

    + - Fixed: llDialog does not show OK button, using no buttons
    +

    + +

    Jan 09 2008 17:18 (local time)

    +

    + - Added: Online Help browser, New tab for every search can be unchecked in menu Tools - Options - Environment - Help
    + - Fixed: No scrolling when using Autoformat (Ctrl-D)
    +

    + +

    Jan 06 2008 13:31 (local time)

    +

    + - Fixed: llGetListEntryType does not work on negative index
    + - Added: missing operators on integer
    + - Fixed: wrong parsing and casting of large hex numbers
    +

    + +

    Jan 05 2008 12:44 (local time)

    +

    + - Added: show status of capslock
    +

    + +

    Release 2.30

    + +

    Dec 29 2007 12:27 (local time)

    +

    + - Fixed: llParseString2List loops when using empty strings on spacers
    +

    + +

    Dec 27 2007 22:57 (local time)

    +

    + - Added: Disable tooltip user-setting, menu Tools - Options - Help
    + - Added: Link to the LSLEditor forum, menu Help - Forum
    + - Added: Auto save on menu Tools - Options - Debugging - General - Auto save
    + - Fixed: sending/retrieving bugreports crashes lsleditor when internet connection is not available
    + - Fixed: turning off autoindent errors on braces
    + - Fixed: line number issue on scrolling
    + - Fixed: cast error using llList2Vector for strings
    +

    + +

    Release 2.29

    + +

    Dec 18 2007 16:38 (local time)

    +

    + - Added: when nothing is selected, Shift-Delete, copies entire line to clipboard and deletes it
    + - Fixed: Ctrl-X is not undo-able
    + - Fixed: jump labels containing '_' give error
    + - Added: ATTACH_HUD_* constants
    +

    + +

    Dec 14 2007 17:51 (local time)

    +

    + - Fixed: Unchecking Check-For-Updates, does check for updates, thats wrong
    +

    + +

    Release 2.28

    + +

    Dec 14 2007 00:40 (local time)

    +

    + - Added: INS (insert) / OVR (override) on status bar, changes when hitting Insert key
    + - Changed: Tab on notecards shows 'Text', where scripts shows 'Script'
    +

    + + +

    Dec 13 2007 23:52 (local time)

    +

    + - Added: When changing to a non existing state, show warning
    + - Changed: llGetWallclock and llGetGMTclock
    +

    + +

    Dec 09 2007 02:30 (local time)

    +

    + - Fixed: certain conditions the tab-stops at 4 chars goes to 6 chars wide
    +

    + +

    Dec 08 2007 15:55 (local time)

    +

    + - Changed: Some Internals to pass more tests from http://wiki.secondlife.com/wiki/LSL_Language_Test
    + Some tests fail due to known issues. http://www.lsleditor.org/help/knownissues.htm
    + - Fixed: shift-home and shift-end selects from 'start' cq. 'end' of selection (only forward selection supported)
    +

    + +

    Dec 07 2007 02:44 (local time)

    +

    + - Fixed: lsleditor crashes when using lslint plugin
    + - Added: Total char count
    + - Added: Last modified on SolutionExplorer items properties
    + - Changed: new implementation of llHTTPRequest, returns http status
    + - Changed: float shows 6 digits behind the decimal point (like SL)
    +

    + +

    Dec 06 2007 14:38 (local time)

    +

    + - Fixed: Version 2.24 an above were broken on simple Verbose messages!!
    +

    + +

    Release 2.27

    + +

    Dec 05 2007 17:35 (local time)

    +

    + - Fixed: llModPow gives wrong answer using large numbers
    + - Fixed: Crash when clicked on errors, when script edit windows are closed
    + - Fixed: Oops Renaming files and objects in Solutionexplorer using same name but upper/lower case chars
    + - Fixed: Oops from llGetObjectDetails (only OBJECT_NAME and OBJECT_DESC implemented)
    + - Fixed: comments having unballanced string quotes do not compile
    +

    + +

    Release 2.26

    + +

    Nov 28 2007 19:31 (local time)

    +

    + - Changed: llBase64ToInteger , needs testings
    + - Changed: paint line numbers only when they are changed
    + - Changed: doubleclick selects whole words (including '_')
    +

    + +

    Nov 26 2007 13:33 (local time)

    +

    + - Added: random return when failing to parse string in llBase64ToInteger
    + - Fixed: list constructor and large signed/unsigned integer problem
    +

    + +

    Nov 24 2007 19:16 (local time)

    +

    + - Fixed: llListenRemove does not work
    + - Fixed: llMessageLinked adds 1 extra event when compiling
    +

    + +

    Release 2.25

    + +

    Nov 22 2007 23:59 (local time)

    +

    + - Added: true/false operators on vector and rotation
    + - Fixed: llRequestAgentData(uuid, DATA_BORN) has wrong date notation
    + - Fixed: listen event always gets the wrong sender id
    +

    + +

    Nov 20 2007 09:20 (local time)

    +

    + - Fixed: typo on llRemoveSensor
    +

    + +

    Nov 19 2007 10:09 (local time)

    +

    + - Fixed: llGetWallclock gives also fraction of seconds
    + - Added: X-SecondLife-Shard header in http request can be configured via menu - Tools - Options - Debugging - Internal (default = Production)
    + - Fixed: X-SecondLife-Region header in http request uses int coords.
    + - Fixed: notecards don't care about 'autocorrect indent'
    +

    + +

    Nov 15 2007 00:19 (local time)

    +

    + - Fixed: Find and Find Replace window pushes editor to background when goes invisible
    + - Fixed: Find and Find Replace window does not focus text search box
    +

    + +

    Nov 14 2007 17:10 (local time)

    +

    + - Added: X-SecondLife-* headers in http request
    +

    + + +

    Release 2.24

    + +

    Nov 13 2007 01:33 (local time)

    +

    + - Added: llResetLandBanList
    +

    + +

    Nov 10 2007 03:12 (local time)

    +

    + - Fixed: Editing notecards is broken
    +

    + +

    Nov 09 2007 01:21 (local time)

    +

    + - Fixed: CONTROL_ML_LBUTTON was missssspelleddd
    +

    + +

    Nov 07 2007 14:19 (local time)

    +

    + - Fixed: info on llDetachFromAvatar() shows argument
    +

    + +

    Release 2.23

    + +

    Nov 02 2007 15:53 (local time)

    +

    + - Added: PRIM_SCULPT_TYPE_* constants
    +

    + +

    Oct 30 2007 11:53 (local time)

    +

    + - Added: Findwindow uses F3 for next find
    +

    + +

    Oct 26 2007 10:57 (local time)

    +

    + - Fixed: Some menu items use online wiki (if available), others use offline wiki
    +

    + +

    Oct 24 2007 14:53 (local time)

    +

    + - Fixed: clicking Errors located on last line looses control on edit window
    + - Added: Shortcut keys to solution explorer
    + - Fixed: New script in solution explorer does not use indent user setting
    +

    + +

    Oct 23 2007 20:13 (local time)

    +

    + - Changed: Shift-End, does not select the newline char
    + - Changed: LSLEditor remembers workingdirectory
    + - Changed: 'View Solutionexplorer' made persistent
    +

    + +

    Release 2.22

    + +

    Oct 23 2007 20:13 (local time)

    +

    + - Changed: When importing script, make form active.
    + - Changed: combox box for listening channels set to first channel by default
    + - Fixed: llScaleTexture has wrong arguments (and description)
    + - Changed: Menu item, "File - New - File" changed to File - New - Script"
    + - Fixed: llResetScript has to go directly to state_entry (and resetting vars)
    +

    + +

    Oct 22 2007 04:00 (local time)

    +

    + - Changed: vars don't have to be initialised before usage
    +

    + +

    Oct 21 2007 20:18 (local time)

    +

    + - Changed: Solution explorer, files are opened only once at a time
    + - Changed: Solution explorer, changed Prim entity to Object
    + - Changed: Solution explorer, Objects can be added to Objects
    + - Added: llMessageLinked can use linknum in solution explorer(needs testing)
    +

      +
    • LINK_ROOT
    • +
    • LINK_SET
    • +
    • LINK_ALL_OTHERS
    • +
    • LINK_ALL_CHILDREN
    • +
    • LINK_THIS
    • +
    + Relationship is defined by place in solution explorer tree (no need to use llCreateLink)

    + - Fixed: the dialog is missing several buttons when using long text
    + - Changed: llDialog and llRequestPermissions removed topmost property
    +

    + +

    Oct 20 2007 12:09 (local time)

    +

    + - Added: Contextmenu on error list, Copy or Copy Description only
    + - Fixed: plugin, lslint, possible crash on multiple line error output
    +

    + +

    Oct 18 2007 11:46 (local time)

    +

    + - Fixed: possible crash on not initialized string
    + - Fixed: reading notecards outside solution explorer was broken
    + - Added: llGetObjectDetails (supported OBJECT_NAME, OBJECT_DESC)
    + - Added: llSensor / llSensorRepeat / llSensorRemove() / sensor (event)
    + (only simple event trigger, num_detected is always 1)
    + - Fixed: llRequestPermissions is broken
    +

    + +

    Oct 16 2007 23:29 (local time)

    +

    + - Fixed: Old bug on multiple changed scripts saving using Ctrl-S shortcut only saves first script
    + - Fixed: Rename objects do not set object-name correctly
    +

    + +

    Release 2.21

    + +

    Oct 16 2007 13:46 (local time)

    +

    + - Changed: Find/Replace window hides when pressing Escape
    + - Changed: Find/Replace window keeps focus
    +

    + +

    Oct 15 2007 23:10 (local time)

    +

    + - Changed: Tools menu, starts at top node
    + - Added: LSLEditor goes unicode
    + menu - tools - options - text editor - general - output format +

      +
    • ANSI (default)
    • +
    • Unicode
    • +
    • Unicode big endian
    • +
    • UTF-8
    • +
    + - Fixed: Save on new.lsl file crashes LSLEditor
    + - Changed: bugreport, Highlight entry in left pane (also when lost focus)
    + - Fixed: bugreport, 'check all / uncheck all' button has wrong initial state
    + - Changed: autocompletion on ll-functions having zero arguments (or single void argument) completes with ')' char
    + - Added: double-clicking on an error message after compile, line in edit window is highlighted
    +

    + +

    Oct 10 2007 10:59 (local time)

    +

    + - Changed: In respect to solution explorer +

      +
    • llGetObjectDesc
    • +
    • llSetObjectDesc
    • +
    • llGetObjectName
    • +
    • llSetObjectName
    • +
    +

    + +

    Release 2.20

    + +

    Oct 09 2007 16:12 (local time)

    +

    + - Added: Plugin support
    + - Fixed: llList2Key crash
    +

    + +

    Oct 08 2007 23:55 (local time)

    +

    + - Changed: Opened files in solution explorer are asked to save when closed
    + - Changed: bugreport, files to be included are unchecked by default
    +

    + +

    Oct 03 2007 19:22 (local time)

    +

    + - Added: bool operators on list
    + - Fixed: Multiple 'if' indent (only on autoformat document)
    + - Added: integer operator + and - (overrides internal operators)
    + - Fixed: llParseStringKeepNulls last empty element is not added
    + - Fixed: llListSort on non string items
    + - Fixed: Sometimes scrolling is disabled when moving the cursor
    + - Fixed: Multiline comments on highlighted chars gives colored results
    + - Fixed: llList2XXX functions for negative index
    + - Added: explicit string operator on bool
    +

    +

    Oct 02 2007 18:25 (local time)

    +

    + - Added: Menu - Tools - Options - Text editor - warning on different indent scheme (on by default)
    + - Added: Menu - Tools - Options - Text editor - autocorrect indent on file loading (off by default)
    + - Fixed: changing guid on items in solutionexplorer reflects on opened script windows
    + - Changed: Wildcard autocompletion on argument, changed to show only pulldown menu (example llGetInventoryName)
    + - Added: llRot2Fwd / llRot2Up / llRot2Left
    +

    + +

    Release 2.19

    + +

    Oct 01 2007 16:30 (local time)

    +

    + - Changed: Make text bold on active tab
    + - Fixed: llUnescapeURL returns UTF8 strings, for example: llOwnerSay(llUnescapeURL("pr%c3%aate"));
    + - Fixed: Syntax errors are on column - 1
    + - Added: Command line option /run starts debugging after loading scripts (if any)
    + - Fixed: Syntax errors on scripts having same name are clickable
    + - Fixed: Copy / Paste gives wrong colors in editor
    +

    + +

    Sep 29 2007 21:35 (local time)

    +

    + - Added: Changing Guid of any item in solution explorer
    + - Changed: manual listen event trigger, channel is combobox
    + (listen filter does only work on normal chat messages, not on manual event trigger)
    + - Added: Ctrl-C copies selected errors to clipboard
    + - Added: Ctrl-A selects all text errors list
    + - Added: Ctrl-A selects all text in debug and simulator console
    + - Added: Line, Column and Char position of cursor (added Column)
    + - Fixed: "There are 0 instances, replace them all?"
    + - Fixed: var names containing 'jump' are wrongly parsed
    + - Fixed: llAttachToAvatar wrong description
    +

    + +

    Sep 22 2007 19:29 (local time)

    +

    + - Fixed: Selection from last line does not work
    +

    + +

    Release 2.18

    + +

    Sep 21 2007 19:09 (local time)

    +

    + - Fixed: SaveAs was broken
    + - Fixed: autocompletion on 'default', only when there is no default state
    + - Fixed: state change to same state, acts like a return
    + - Changed: Ctrl-D (format document) keeps cursor on line
    + - Changed: Ctrl-E (format selection) keeps text selected
    + - Added: Tools - Options - Debugging - General - Quoted strings in list output (default = none)
    + - Changed: Major change to the list object (needs testing)
    + - Fixed: Some minor indent bug on outermost braces when typing
    + - Changed: Verbose output gives more readable lists
    + - Fixed: llParseString2List and llParseStringKeepNulls (needs testing)
    +

    + +

    Sep 19 2007 16:47 (local time)

    +

    + - Added: http 'ContentLength' on llHTTPRequest POST requests
    +

    + +

    Release 2.17

    + +

    Sep 19 2007 12:47 (local time)

    +

    + - Fixed: Closing LSLEditor saves (all) changed files using its own name, example files (new.lsl) shows dialog
    +

    + +

    Sep 18 2007 12:47 (local time)

    +

    + - Fixed: Labels can have whitespace between @ and label name
    +

    + +

    Sep 17 2007 14:41 (local time)

    +

    + - Added: Tools - Options - Debugging - General - Single Quote char allowed outside strings
    +

    + +

    Sep 16 2007 14:41 (local time)

    +

    + - Fixed: Typing many '}' on same lines, gives weird autoformatting
    + - Fixed: Bracket highlighting when typing braces (curly brackets)
    + - Fixed: Rotation '/' operator
    +

    + +

    Sep 15 2007 17:45 (local time)

    +

    + - Added: Update application supports 'gzip','zip' and 'bzip2'
    + - Changed: Richlabel has some extra right margin
    + - Fixed: 4-Spaces indent was broken on tools menu
    + - Fixed: Annoying scroll when bracket highligthing and code formatting
    + - Fixed: 'If you see this, something is wrong' on state change and llResetScript
    + - Fixed: Die button kills runaway processes like 'while(TRUE);'
    + - Added: Icons for errors and warnings
    + - Added: Compiler generates warnings (can be switched off in menu Tools - Options - Debugging - General)
    +

    + +

    Sep 14 2007 10:52 (local time)

    +

    + - Fixed: llOwnerSay talks only to the owner, preventing possible loops
    +

    + +

    Sep 13 2007 16:39 (local time)

    +

    + - Added: Date/time on printed output
    + - Changed: Case insensitive on ECC
    +

    + +

    Release 2.16

    + +

    Sep 13 2007 12:10 (local time)

    +

    + - Added: Experimental Code Completion (ECC) on user defined variable names, menu - tools - options - Text Editor - Code Completion
    + - Changed: Escape toggles on/off autocompletion and tooltips
    +

    + +

    Sep 12 2007 16:28 (local time)

    +

    + - Added: Pagesetup margins on printed documents
    + - Added: header and footer on printed documents
    + - Added: Print selection
    + - Fixed: llList2ListStrided crashed for nonsense (<=0) strides
    +

    + +

    Sep 11 2007 17:07 (local time)

    +

    + - Added: Ctrl-Del removes whitespace/word
    + - Fixed: llToUpper / llToLower gives wrong hint
    +

    + +

    Sep 06 2007 13:35 (local time)

    +

    + - Fixed: First users see only a small window
    +

    + +

    Release 2.15

    + +

    Sep 03 2007 17:00 (local time)

    +

    + - Fixed: Renaming of non scripts and non notecards
    + - Added: Solution Explorer, changing filetype of items
    + - Changed: Solution Explorer, project and inventory paths are saved as a relative path to solution file (if possible)
    + - Changed: Solution Explorer, "Add New File -> Script" , have it use the default.lsl file, same as "new.lsl" when opening.
    + - Fixed: 0xFFFFFFFF parsed as integer
    + - Fixed: capitalization of 'string' and 'float'
    + - Added: PRIM_TYPE_SCULPT constant
    +

    + +

    Aug 31 2007 12:07 (local time)

    +

    + - Fixed: Recent projects menu blocks when dirty script has to be saved
    + - Added: Menu - Tools - Options - Environment - General - delete old files after update
    +

    + +

    Release 2.14

    + +

    Aug 27 2007 12:07 (local time)

    +

    + - Fixed: Crash in Renaming files containing illegal chars in Solutionexplorer
    + - Fixed: Find / Replace broken
    + - Fixed: Labels are broken
    +

    + +

    Aug 24 2007 15:30 (local time)

    +

    + - Added: Menu - Project - Add New File , add new file to active Prim in SolutionExplorer (if Any)
    + - Added: Check if solution file already exist when Create new solution
    + - Added: F3 shortcut for 'Find Next'
    + - Fixed: Pressing Ctrl-H twice crashes program
    + - Added: Multiline strings
    + - Fixed: String (capital S) can be used as a var
    + - Added: Explicit string operator on internal integer
    + - Added: File Association for .lsl and .sol files (Menu-Tools)
    +

    + +

    Aug 23 2007 23:02 (local time)

    +

    + - Fixed: Linenumbers incorrect after scrolling
    + - Fixed: default state has not to be on column 0
    + - Fixed: When user clicks 'No' on llRequestPermissions, do trigger run_time_permissions
    + - Fixed: Brackets highlighting now skips comments
    + - Changed: Online Wiki Address can be changed
    + - Changed: Bugreport shows unique number and date/time
    + - Changed: Bugreport uploadservice can handle normal filenames, spaces included ;-)
    + - Added: llGetInventoryType (when using solution explorer)
    + - Changed: Blockcommenting Ctrl-K and Ctrl-L (also on non selected line)
    +

    + +

    Release 2.13

    + +

    Aug 22 2007 17:57 (local time)

    +

    + - Fixed: Crash on making default state
    + - Fixed: Linenumbers only appear when scrolling
    + - Fixed: Crash on some debug code, writing to D drive
    + - Fixed: float parsing on lists does Oops...
    + - Added: Experimental wildcard argument completion (for example llListStatistics)
    + - Fixed: Tooltip on codecompletion can not get outside client area
    + - Fixed: Coloring when typing strings
    + - Fixed: indenting fails on strings containing // chars
    +

    + +

    Aug 21 2007 19:28 (local time)

    +

    + - Changed: Reading scripts using default codepage
    + - Added: llListStatistics (needs more testing)
    + - fixed: llCSV2List escapes angle brackets
    +

    + +

    Aug 20 2007 23:48 (local time)

    +

    + - Fixed: Find / Find and Replace window mixes up settings
    + - Fixed: Sending bugreport crashes editor when offline
    +

    + +

    Aug 18 2007 21:19 (local time)

    +

    + - Changed: new Tools Options menu
    + - Fixed: Single quotation char in comment breaks parsing
    +

    + +

    Aug 17 2007 19:22 (local time)

    +

    + - Fixed: Quad and Vector parsing breaks at certain conditions
    + - Fixed: some changes to text do not set dirty flag
    +

    + +

    Aug 16 2007 23:57 (local time)

    +

    + - Fixed: changing state into same state goes into loop
    + - Fixed: llCSV2List is not really inverse to llList2CSV (llCSV2List does not parse rotations and vectors, yet)
    + - Fixed: labels without ';' does not give syntax error
    + - Fixed: jump @label; does not give syntax error
    + - Fixed: floats getting truncated on non-English systems
    + - Changed: Position and Size of editor window are only restored when in workingarea of Primary screen
    + - Fixed: Script error on download HTML Help file
    +

    + +

    Aug 15 2007 17:51 (local time)

    +

    + - Fixed: Don't compile nor syntax check notecards using solution explorer
    + - Added: llInsertString
    + - Fixed: llGiveInventoryList has wrong ref argument (syntax check breaks)
    + - Fixed: Tab and Shift Tab on selected text
    + - Added: Toggle button check / uncheck attached scripts on the bugreport form
    + - Fixed: Argument of event changed(integer change)
    + - Changed: Sending bugreports can be canceled
    + - Changed: implicit float to integer operator to explicit
    +

    + +

    Release 2.12

    + +

    Aug 10 2007 13:13 (local time)

    +

    + - Added: LSLEditorHelp offline wiki (Tools - Editor properties)
    + - Changed: Find window keeps search entries
    +

    + +

    Aug 05 2007 00:30 (local time)

    +

    + - Fixed: Cursor position on backspace
    +

    + +

    Aug 03 2007 16:50 (local time)

    +

    + - Added: Ctrl-F (find) uses keyword on cursor position
    + - Added: Ctrl-Up / Ctrl-Down history scrolling on chat box
    + - Fixed: llSetLinkTexture() do not take texture uuids
    + - Fixed: llParseString2List refuse to take keys as strings
    + - Added: Solution Explorer, F2 for rename
    + - Added: default.lsl in LSL-Editor directory will be used as 'new.lsl' template
    + - Fixed: llSetColor tooltip is wrong
    +

    + +

    Aug 02 2007 23:42 (local time)

    +

    + - Added: Smtp Authentication for llEmail (Tools, Runtime Properties, External, Email)
    +

    + +

    Release 2.11

    + +

    Jul 30 2007 16:19 (local time)

    +

    + - Added: Home key works also on white-space lines
    + - Fixed: After sending two bugreports, button is disabled
    + - Added: POST method to llHttpRequest (untested)
    +

    + +

    Jul 28 2007 12:05 (local time)

    +

    + - Fixed: Richtext label inserts spaces after color change
    + - Added: Sound support (simple) use llPlaySound and .wav file in solution explorer
    +

    + +

    Jul 26 2007 13:29 (local time)

    +

    + - Added: PageUp and PageDown on intellisense dropdown menu
    + - Fixed: Editor crash when closing project having browser window open
    + - Added: llGetLocalPos()
    +

    + +

    Release 2.10

    + +

    Jul 25 2007 14:30 (local time)

    +

    + - Added: Solution Explorer (first look)
    +

      +
    • llGetObjectName
    • +
    • llGetScriptName
    • +
    • llGetKey
    • +
    • llGetInventoryName
    • +
    • llGetInventoryKey
    • +
    • llGetInventoryNumber
    • +
    • llGetNumberOfNotecardLines
    • +
    • llGetNotecardLine
    • +
    + - Added: Reset option on Editor properties
    + - Added: mod operator (%) on integer
    +

    + +

    Jul 24 2007 11:55 (local time)

    +

    + - Changed: Recent file list is clipped (showing ...)
    + - Fixed: Syntax error on negative line numbers (?!) breaks editor
    +

    + +

    Jul 20 2007 10:55 (local time)

    +

    + - Added: Checkbox on Edit tab to Disable compile / syntaxcheck
    + - Added: Allow scripts to open by Drag and Drop on LSL-Editor
    + - Fixed: Indent on return when in middle of a line
    + - Added: llGetDate
    + - Fixed: llDie in script does not work, throws an error
    + - Changed: id in llMessageLinked / message_link accepts strings
    +

    + +

    Jul 19 2007 15:27 (local time)

    +

    + - Added: Bugtracker to Menu Help , Bugreport
    + - Changed: Home button toggles between start of line, and first non whitespace
    +

    + +

    Release 2.9

    + +

    Jul 16 2007 11:25 (local time)

    +

    + - Changed: Autocompletion images scale on changing fonts
    + - Changed: Tab alignement on changing fonts
    +

    + +

    Jul 15 2007 23:51 (local time)

    +

    + - Added: Editor Properties, Font selector for editor and tooltips
    + - Fixed: Ctrl-X does not have paste
    +

    + +

    Jul 13 2007 15:20 (local time)

    +

    + - Changed: Bugreport name and email adres made sticky
    + - Fixed: Bugreport window looses focus when tooltip shows
    + - Added: Shift-Delete
    + - Fixed: Ctrl-X can not undo
    + - Fixed: Ctrl-Home does not go to line 1, column 1
    + - Fixed: Shift-Home does not appear to select text
    +

    + +

    Jul 12 2007 12:59 (local time)

    +

    + - Fixed: Tooltip shows bold on some High-Resolution machines (David IOU1)
    +

    + +

    Release 2.8

    + +

    Jul 10 2007 08:41 (local time)

    +

    + - Fixed: Runtime properties, incorrect key from cache (xor)
    +

    + +

    Jul 9 2007 14:51 (local time)

    +

    + - Added: Editor properties: Auto update frequency
    + - Added: Editor properties: Indent settings
    +

    + +

    Jul 8 2007 23:59 (local time)

    +

    + - Changed: Tooltip font is SystemFonts.MessageBoxFont
    + - Fixed: llRot2Up returns void....
    +

    + +

    Jul 6 2007 13:13 (local time)

    +

    + - Fixed: MD5 checksum on update function breaks
    + - Added: Boundary checks on list functions
    + - Fixed: jump statement gives error (_goto)
    +

    + +

    Release 2.7

    + +

    Jul 4 2007 12:12 (local time)

    +

    + - Added: Bitwise Xor operator on integer (^)
    +

    + + +

    Jul 3 2007 20:56 (local time)

    +

    + - Fixed: XML-RPC server not closed when closing LSL-Editor
    +

    + +

    Jul 2 2007 14:41 (local time)

    +

    + - Fixed: Size of Simulator resets to default
    + - Changed: Vector and Rotation parser
    + - Changed: Vector and Rotation fields changed from double to float
    + - Added: Preprocessor processes all internal reserved words
    + - Changed: llDialog / llRequestPermissions / link_message / llMessageLinked uses new TaskQueue
    +

    + +

    Jul 1 2007 23:55 (local time)

    +

    + - Added: Smart indenting on closing parenthesis (experimental)
    + - Revised: (Needs testing!!) +

      +
    • llGetSubString
    • +
    • llDeleteSubString
    • +
    • llList2List
    • +
    • llDeleteSubList
    • +
    + - Added: +
      +
    • llIntegerToBase64
    • +
    • llBase64ToInteger
    • +
    • llStringToBase64
    • +
    • llBase64ToString
    • +
    • llXorBase64StringsCorrect
    • +
    +

    + +

    Jun 30 2007 11:41 (local time)

    +

    + - Fixed: Can't close tabs when in Windows Classic mode
    + - Changed: Internal, state / event has its own TaskQueue (needs testing)
    +

    + +

    Jun 29 2007 16:38 (local time)

    +

    + - Fixed: Integer '~' operator works only on TRUE/FALSE
    + - Added: Syntax checker button F6 (no compile / execute)
    + - Changed: Internal, Simulator / Compiler as usercontrols
    +

    + +

    Jun 28 2007 12:18 (local time)

    +

    + - Added: Ctr-Shft-S to Save as...
    + - Added: AutoUpdate check (daily) / Manual update on Help menu
    + - Added: Double click on compiler error goes to error line / column
    + - Changed: Compiler errors shows on listview
    + - Changed: Tab / Shift Tab , toggles indent block of text
    + - Changed: Home button sets cursor to beginning of line, after whitespace
    +

    + +

    Release 2.6

    + +

    Jun 27 2007 18:20 (local time)

    +

    + - Fixed: Editor crashes on error in dataserver script
    + - Changed: synchronized llGetNumberOfNotecardLines / llGetNotecardLine dataserver requests
    +

    + +

    Jun 26 2007 11:49 (local time)

    +

    + - Fixed: llDialog does not talk anymore
    +

    + +

    Jun 25 2007 21:08 (local time)

    +

    + - Fixed: Indent adds tab on lines ending in comment or whitespace
    + - Added: XML-RPC listening base port 50888
    +

      +
    • remote_data (event)
    • +
    • llOpenRemoteDataChannel
    • +
    • llCloseRemoteDataChannel
    • +
    • llRemoteDataReply
    • +
    • llSendRemoteData (untested)
    • +
    + - Fixed: Tooltips shows 'lt;' and 'gt;'
    + - Added: Bugreport to Menu Help
    + - Added: llLoadURL
    + - Added: listen callbacks are removed on state change
    + - Added: llListenControl
    +

    +

    Jun 24 2007 13:11 (local time)

    +

    + - Added: Print preview
    + - Fixed: Editor only prints 1 page
    + - Added: ReplaceAll
    + - Fixed: Find and Replace issues
    +

    +

    Jun 22 2007 18:59 (local time)

    +

    + - Added: The ~ (complement) operator to integer
    + - Fixed: global functions containing whitespace gives compile error
    + - Added: Keep user settings between LSLEditor updates
    + - Added: llGetNumberOfNotecardLines / llGetNotecardLine
    + - Added: Recent files list in the File menu
    +

    + +

    Jun 21 2007 13:41 (local time)

    +

    + - Fixed: Compiles empty documents and/or absent default state
    +

    + +

    Release 2.5

    + +

    Jun 20 2007 22:41 (local time)

    +

    + - Fixed: Menu Tools does not work
    + - Added: llStringTrim
    +

    + +

    Jun 18 2007 14:50 (local time)

    +

    + - Fixed: Backspace / Delete issues when brackets highlighted
    +

    + +

    Jun 14 2007 23:59 (local time)

    +

    + - Fixed: Backspace unreliable when brackets highlighted
    + - Changed: Tab-characters have same width as 4 spaces
    + - Changed: auto indent on typing if/else
    + - Changed: format document indent if/else
    + - Fixed: timer stops after state change
    + - Fixed: llList2Integer broken
    + - Added: llMessageLinked / link_message
    + - Fixed: llListReplaceList gives wrong answer
    +

    + +

    Jun 13 2007 20:21 (local time)

    +

    + - Fixed: key problem (breaks listen and more)
    +

    + +

    Release 2.4

    + +

    Jun 13 2007 12:12 (local time)

    +

    + - Release 2.4
    +

    + +

    Jun 12 2007 16:43 (local time)

    +

    + - Fixed: llSetTimerEvent broken
    + - Added: Redo
    + - Changed: Linenumbers stops at and-of-document
    + - Fixed: Cursorposition shows on closed tab
    + - Changed: Close button on tab shows on mouse hover
    + - Fixed: Argument typing shows wrong color
    + - Fixed: Slow brackets matching
    + - Fixed: Slow editing large documents / long lines
    +

    + +

    Jun 11 2007 11:36 (local time)

    +

    + - Fixed: Line numbers incorrect after delete all
    + - Fixed: Cursor position does not show on non primary script
    + - Fixed: Undo eats memory
    + - Fixed: Undo slow on large documents
    +

    +

    Jun 09 2007 11:44 (local time)

    +

    + - Added: brackets matching
    +

      +
    • parentheses or round brackets: ( )
    • +
    • box brackets or square brackets: [ ]
    • +
    • curly brackets or braces: { }
    • +
    • angle brackets or chevrons: < >
    • +
    +

    +

    Jun 08 2007 19:35 (local time)

    +

    + - Fixed: Undo after find / replace
    + - Fixed: Undo does nothing
    + - Added: Color scheme for tooltips
    + - Fixed: Missing spaces in tooltips
    + - Fixed: Keyboard hint vertical position changes
    + - Fixed: Mouse Tooltip shows on EOL
    +

    + +

    Jun 07 2007 13:41 (local time)

    +

    + - Added: Find and Replace
    +

    + +

    Release 2.3

    + +

    Jun 06 2007 17:01 (local time)

    +

    + - Fixed: Editor does not show on taskbar
    + - Added: bool operators on key
    + + - Added: Operator vector / rotation
    + - Fixed: Save Ctrl-S in debug session
    +

    +

    Jun 05 2007 23:33 (local time)

    +

    + - Fixed: A lot of operators
    + - Fixed: llDeleteSubString
    + - Added: Block commenting Ctrl-K Ctrl-L
    + - Fixed: Compiler errors hide internal types
    + - Improved: parsing strings, including escape chars
    + - Changed: No codecompletion nor hints typing within strings
    + - Changed: No codecompletion nor hints typing within comments
    + - Fixed: blind tabs showing again on XP without VisualStyles
    + - Added: Shortcutkeys for formatting
    +

    +

    Jun 04 2007 21:52 (local time)

    +

    + - Changed: replaced double by float
    + - Fixed: Parsing long files takes to much time
    + - Fixed: Line-numbers frozen
    + - Fixed: compile error on 'state' between quotes
    + - Fixed: AutoWordSelection problem appears to be an insolvable Microsoft bug, ... i solved it
    + - Added: Showing Line / Character position of cursor on statusbar
    +

    +

    Jun 03 2007 20:54 (local time)

    +

    + - Fixed: AutoWordSelection off, and stay off
    + - Fixed: indent whitespace can be a mix of tab and spaces
    + - Added: default / state to autocompletion ;-)
    + - Added: operators + and - for rotation / rotation
    + - Added: operators multiplication of vector / rotation
    + - Added: operators multiplication and division of rotation / rotation
    +

    +

    Jun 02 2007 18:58 (local time)

    +

    + - Added: llAxisAngle2Rot
    + - Added: some vector operators
    + - Fixed: codecompletion tooltip disappears when hitting arrow keys
    + - Fixed: blind tabs showing again on XP without VisualStyles
    +

    +

    Jun 01 2007 23:34 (local time)

    +

    + - Added: at_target, http_response and remote_data events
    + - Added: Goto form acts on return key
    + - Added: First implementation of llDialog
    + - Fixed: VisualStyleRenderer crash on startup
    + - Fixed: Indent was broken
    + - Added: implicit string operator on key
    + - Added: implicit bool operators to string class
    +

    + +

    May 31 2007 23:55 (local time)

    +

    + - Added: llSleep
    + - Added: Editor Goto Line (Ctrl-G)
    + - Added: Ctrl-F4 closes active window/tab
    + - Added: Editor option Wiki-pages in Seperate browser
    + - Fixed: Linenumber drawing double-buffered in editor
    + - Added: Close button to Tab pages
    + - Fixed: 'Tab' key inserts a tab character or 4-space characters, depending on the Editor-settings
    + - Fixed: timer problem when changing states
    +

    + +

    May 29 2007 16:41 (local time)

    +

    + - Improved: parenthesis indenting old 'C' style accepted
    + - Added Editor options: Auto Word Selection (off by default)
    + - Fixed: Linenumber drawing double-buffered in editor
    + - Added a 'Die' button to the compiler
    + - Added Editor options: SL (ugly) color-scheme / SL 4-spaces indent
    + - Fixed: crash on editing end-of-document
    + - Fixed: void argument on events
    +

    + +

    May 28 2007 23:34 (local time)

    +

    + - Autocompletion including arguments on 'events'
    + - Fixed: incorrect color on pasting text
    + - Fixed: autoformatting on selected text
    + - Fixed: incorrect old argument list on non-functions
    +

    + +

    May 27 2007 13:15 (local time)

    +

    + - llListFindList bug fixed
    + - added comparison operators for list,key,float,integer,vector and rotation
    + - when opening an existing document, the untouched 'new.lsl' example is destroyed
    +

    + +

    Release 2.2

    + +

    May 26 2007 18:00 (local time)

    +

    + - Tooltipping / Codecompletion hitting the boundaries of parent window
    +

    + +

    May 25 2007 11:28 (local time)

    +

    + - Explicit cast 'list' implemented for string,integer,key,float,vector and rotation
    +

    + +

    May 24 2007 19:34 (local time)

    +

    + - Compiler error shows correct line numbers
    + - Debug tab only visible when there are no compile errors
    + - Removed C# tab
    + - Small bug fixed, on empty information, when using codecompletion
    + - Codecompletion shows ALL keywords
    + - Shows '*' after filename when document is changed
    +

    + +

    May 23 2007 21:03 (local time)

    +

    + - Compiler starts at Output tab, on error shows C# tab
    + - Tabbed documents!!
    + Thanks to Darek and Marco for their bug reports:
    + - Fixed: Operator '+' is ambiguous on operands of type 'LSLEditor.SecondLife.integer' and 'LSLEditor.SecondLife.integer'
    + - Fixed: Operator '+=' cannot be applied to operands of type 'LSLEditor.SecondLife.list' and 'double'
    + - Fixed: Operator '+=' cannot be applied to operands of type 'LSLEditor.SecondLife.list' and 'LSLEditor.SecondLife.key'
    + - Copy from the debug window enabled
    +

    + +

    May 22 2007 23:46 (local time)

    +

    + - Bug fix on empty key in Sim properties
    + - Show function arguments while typing
    +

    + + +

    May 16 2007 13:07 (local time)

    +

    + - Simulator docks at bottom
    +

    + +

    Release 2.1

    + +

    May 14 2007 22:47 (local time)

    +

    + - Release 2.1 (Multiple document interface)
    + - Running multiple LSL scripts concurrent
    + - Chat/listen implementation between LSL scripts
    + - First implementation of a 'find' (Ctrl-F) option
    +

    +

    May 08 2007 16:37 (local time)

    +

    + - llListRandomize
    + - llListSort
    + - llListReplaceList (to be tested)
    + - llParseString2List (todo spacers)
    + - llParseStringKeepNulls (todo spacers)
    +

    + +

    May 07 2007 19:53 (local time)

    +

    + - llMD5String implemented + - Implemented a lot of list functions (see examples)
    + - Fixed state bug
    + - llResetScript()
    + - Tooltip improved
    +

    + +

    May 06 2007 13:03 (local time)

    +

    + - Parser improved a lot!!
    +

    + +

    May 04 2007 17:15 (local time)

    +

    + - LSL keywords updated 19 Dec 2006 for LSL 1.13
    +

    +

    May 03 2007 18:49 (local time)

    +

    + - Execution is more stable, and useful error reports :-)
    + - Implemented listen filter (llListen / llListenRemove)
    + - some minor bugfixes
    +

    +

    May 02 2007 19:41 (local time)

    +

    + - llListFindList implemented
    + - KEY_NULL implemented
    + - key compare
    + - llGetOwnerKey returns key in compiler properties
    + - llToLower / llToUpper
    + - llEuler2Rot / llRot2Euler
    + - Code completion shows function arguments when typing
    + - Cleaned the resource files
    + - Updated a lot more, can't remember ;-)
    +

    + +

    May 01 2007 13:47 (local time)

    +

    + - Manual Chat works, on different channels (listen) +

    +

    Apr 30 2007 23:57 (local time)

    +

    + - Format document (Edit -> Advanced -> Format Document)
    + - llFrand seeding
    + - casting bug fixed (parser)
    + - run_time_permissions event bug fixed
    + - llDialog shows messagebox (no buttons)
    + - Did some testing on "Shippou Oud - Fruit machine"
    + - Import Examples
    + - Timer bug fixed
    + - Al lot of internal base class changes
    +

    + +

    Apr 29 2007 15:29 (local time)

    +

    First implementation of linenumbers

    + +

    Release 2.0

    + +

    Apr 28 2007 14:01 (local time)

    +

    Changed project to .NET 2.0

    + +

    Mar 30 2007 12:54 (local time)

    +

    - changed wiki adres

    + +

    Jan 2007 - Mar 2007

    +

    - Sabbatical :-), doing nothing....

    + +

    Dec 26 2006 12:54 (local time)

    +

    - first implementation of printing

    +

    Nov 21 2006 23:22 (local time)

    +

    - delete key bug fixed

    +

    Nov 08 2006 00:40 (local time)

    +

    - got Strife _double back in place
    + - some C# coloring

    +

    Nov 05 2006 14:54 (local time)

    +

    - Just some minor updates, lack of time at the moment

    +

    Oct 29 2006 01:00 (local time)

    +

    - State change fires state_exit and state_entry
    + - compiler on tabcontrole

    +

    Oct 28 2006 02:00 (local time)

    +

    - Float2Hex example compiles (thanx to Strife Onizuka)

    +

    Oct 27 2006 21:59 (local time)

    +

    - Global class compiles correctly on vars (static) and user defined + functions (void and non void)

    +

    Oct 26 2006 01:07 (local time)

    +

    - code completion, tab/return and contains icons for different types
    + - other type of tooltipping.... not nice.
    + - override & , to make it bool answer...

    +

    Oct 25 2006 01:46 (local time)

    +

    - http can use proxy
    + - smtp
    + - properties windows for compiler
    + - integer made out of struct, to override (string) explicit operator

    +

    Oct 22 2006 21:43 (local time)

    +

    - first implementation of llHTTPRequest / http_response
    + - made a lot of lists functions
    + - more lists on one line (not lists within lists)

    +

    Oct 20 2006 21:00 (local time)

    +

    - State change, shows correct events

    +

    Oct 20 2006 0:03 (local time)

    +

    - Implemented (almost) all Math functions
    + - Timer works

    +

    Oct 19 2006 03:00 (local time)

    +

    - some edit improvements
    + - states work!!

    +

    Oct 16 2006 23:50 (local time)

    +

    - Improvement parsing script, vector,rotation, simple list (one line)
    + - Global vars, wrapped in global class
    + - Checkupdate function in the program
    + - First attempt multiple state (only default state executes, have patients + my friends...)

    +

    Oct 14 2006 18:36 (local time)

    +

    - User argument input for events like touch_start (see picture above)

    +

    Oct 8, 2006 18:36 (local time)

    +

    - Code highlighting
    + - Code completion
    + - Code info, took the old LSLguide, and used Appendix, i can do better i + know
    + - F1 , on a keyword, does show up the LSLWiki page on the keyword
    + - Compile, the hello world example should work on state_entry event
    + - Open/Save and edit lsl script files

    +

    Oct 2, 2006 (local time)

    + +

    Release 1.0

    + +

    First idea and prototype

    + +

    Oct 1, 2006 (local time)

    + +
    + + From 5e52feb6f2160c9232755c0f4b13366df4f10370 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 22:44:51 +0000 Subject: [PATCH 14/26] Updated About.htm to include Moundsa and myself (Dimentox is already in it). --- trunk/Resource/About.htm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/trunk/Resource/About.htm b/trunk/Resource/About.htm index dd081e5..530fd96 100644 --- a/trunk/Resource/About.htm +++ b/trunk/Resource/About.htm @@ -8,9 +8,8 @@ Special thanks to:

    - +
      -
    • Vlad Bjornson
    • Mazok Nishi
    • Sonja Manatiso
    • @@ -205,9 +204,9 @@
    • Toran Cult
    • Strife Onizuka
    • Sandra Tsure
    • +
    • Moundsa Mayo
    • +
    • Ima Mechanique
    - - \ No newline at end of file From ef214e2ca7e9ad7e75332794363a9e202e3ccfb7 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sat, 17 Dec 2011 22:48:34 +0000 Subject: [PATCH 15/26] Updating ReleaseNotes.htm --- trunk/Resource/ReleaseNotes.htm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index b9742b8..3534778 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -11,7 +11,12 @@
  • "Release Notes..." to help menu.
  • - Bugs Fixed: + * Updated +
      +
    • About.htm
    • +
    + + * Fixed:
    • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
    • 3461546 - ReleaseNotes.htm in source, but never used
    • From 9adfbd427d25e3458371e3845e9fdce398671455 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Sun, 18 Dec 2011 00:51:32 +0000 Subject: [PATCH 16/26] Updating release notes. Hunted through revision history to find additions for v2.42. I probably missed some, as according to SVN the entire ConfLSL.xml file was replaced, making it hard to find individual changes. --- trunk/Resource/ReleaseNotes.htm | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 3534778..c539eea 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -117,14 +117,14 @@
    * Added: stub functions for:
      -
    • llCastRay
    • -
    • llClearLinkMedia
    • +
    • llCastRay - syntax-checker only, highlighting added previously.
    • +
    • llClearLinkMedia - syntax-checker only, highlighting added previously.
    • llGetDisplayName
    • llGetLinkMedia
    • llGetMassMKS
    • llGetMemoryLimit
    • llGetPhysicsMaterial
    • -
    • llLinkSitTarget
    • +
    • llLinkSitTarget - syntax-checker only, highlighting added previously.
    • llManageEstateAccess
    • llScriptProfiler
    • llSetAngularVelocity
    • @@ -141,7 +141,23 @@
      -

      2011 - Release 2.42

      +

      2011-04-21 - Release 2.42

      + * Added: constants +
        +
      • CHANGED_REGION_START
      • +
      • PRIM_DESC
      • +
      • PRIM_NAME
      • +
      + * Added: functions (highlighting only): +
        +
      • llCastRay
      • +
      • llGetLinkNumberOfSides
      • +
      • llGetSPMaxMemory
      • +
      • llGetUsedMemory
      • +
      • llGetUsername
      • +
      • llRequestDisplayName
      • +
      • llRequestUsername
      • +
      From 5d46b27a26f56ed4977359e2004dd64f8d21811f Mon Sep 17 00:00:00 2001 From: niel-archer Date: Mon, 26 Dec 2011 01:14:20 +0000 Subject: [PATCH 17/26] Fix lslint showing error list. --- trunk/LSLEditorForm.cs | 6 +----- trunk/Resource/ReleaseNotes.htm | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/trunk/LSLEditorForm.cs b/trunk/LSLEditorForm.cs index c833657..ad93475 100644 --- a/trunk/LSLEditorForm.cs +++ b/trunk/LSLEditorForm.cs @@ -1699,11 +1699,7 @@ namespace LSLEditor { if (lslint.HasErrors) { - //TODO: Show errors somewhere else - //this.panel1.Controls.Clear(); - //this.panel1.Controls.Add(this.SyntaxErrors); - //this.panel1.Visible = true; - //this.splitter1.SplitPosition = Properties.Settings.Default.SimulatorSize.Height; + this.SyntaxErrors.Show(dockPanel); } else { diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index c539eea..69ab027 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -20,6 +20,7 @@
      • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
      • 3461546 - ReleaseNotes.htm in source, but never used
      • +
      • 3465488 - lslint does not show errors.
      @@ -115,7 +116,7 @@
      • transaction_result
      - * Added: stub functions for: + * Added: functions:
      • llCastRay - syntax-checker only, highlighting added previously.
      • llClearLinkMedia - syntax-checker only, highlighting added previously.
      • From 235a93bc9365576891dfe46e05bdc9be27fe8ba6 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 00:54:48 +0000 Subject: [PATCH 18/26] Updates to ReleaseNotes.htm --- trunk/Resource/ReleaseNotes.htm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 69ab027..25a5785 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -5,18 +5,18 @@
        -

        2012 - Release 2.x.x

        - * Added +

        2012-01 - Release 2.x.x

        + - Added
        • "Release Notes..." to help menu.
        - * Updated + - Updated
        • About.htm
        - * Fixed: + - Fixed:
        • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
        • 3461546 - ReleaseNotes.htm in source, but never used
        • @@ -26,7 +26,7 @@

          2011-12-12 - Release 2.43.1

          - * Added: constants + - Added: constants
          • CONTENT_TYPE_HTML
          • DENSITY
          • @@ -107,16 +107,16 @@
          • TEXTURE_TRANSPARENT
          • TOUCH_INVALID_TEXCOORD
          - * other changes: Cleaned up parts of the highlighting XML file generally, and reordered some entries. + - other changes: Cleaned up parts of the highlighting XML file generally, and reordered some entries.

          2011-12-06 - Release 2.43

          - * Added: event + - Added: event
          • transaction_result
          - * Added: functions: + - Added: functions:
          • llCastRay - syntax-checker only, highlighting added previously.
          • llClearLinkMedia - syntax-checker only, highlighting added previously.
          • @@ -136,20 +136,20 @@
          • llSetVelocity
          • llTransferLindenDollars
          - * Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps. + - Fixed UTF-8 file format from prefixing with a BOM. While not invalid, it confuses some apps.

          2011-04-21 - Release 2.42

          - * Added: constants + - Added: constants
          • CHANGED_REGION_START
          • PRIM_DESC
          • PRIM_NAME
          - * Added: functions (highlighting only): + - Added: functions (highlighting only):
          • llCastRay
          • llGetLinkNumberOfSides
          • From ae0cc457cffde119eea402739957cacb22564773 Mon Sep 17 00:00:00 2001 From: ImaMechanique Date: Thu, 8 Dec 2011 15:27:39 +0000 Subject: [PATCH 19/26] Fix for state change without state name passing syntax-check. --- trunk/Helpers/LSL2CSharp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trunk/Helpers/LSL2CSharp.cs b/trunk/Helpers/LSL2CSharp.cs index 83ab770..cf8f33c 100644 --- a/trunk/Helpers/LSL2CSharp.cs +++ b/trunk/Helpers/LSL2CSharp.cs @@ -175,7 +175,7 @@ namespace LSLEditor // State change, excluding global functions regex = new Regex( - @"(\s+)state\s+(\w*)(\s*;)", + @"(\s+)state\s+(\w+)(\s*;)", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled ); From 564df001f8db24876eb92f03fb697792bb84d24f Mon Sep 17 00:00:00 2001 From: ImaMechanique Date: Tue, 22 Nov 2011 05:37:13 +0000 Subject: [PATCH 20/26] Changed the labels for 'Unicode' output formats. Unicode is not the output format for files, UTF is. --- trunk/Resource/ReleaseNotes.htm | 8 +++++++- trunk/Tools/TextEditorGeneral.Designer.cs | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index b9742b8..47bc8a2 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -6,11 +6,17 @@

            2012 - Release 2.x.x

            - * Added + Added
            • "Release Notes..." to help menu.
            + Changed +
              +
            • Tools => Options => Text Editor => General - Changed labels to properly reflect the output file format.
            • +
            • UTF-8 output no longer prefixes the B.O.M. character.
            • +
            + Bugs Fixed:
            • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
            • diff --git a/trunk/Tools/TextEditorGeneral.Designer.cs b/trunk/Tools/TextEditorGeneral.Designer.cs index 7506554..adbb39d 100644 --- a/trunk/Tools/TextEditorGeneral.Designer.cs +++ b/trunk/Tools/TextEditorGeneral.Designer.cs @@ -224,7 +224,7 @@ namespace LSLEditor.Tools this.radioButton6.Size = new System.Drawing.Size(65, 17); this.radioButton6.TabIndex = 1; this.radioButton6.TabStop = true; - this.radioButton6.Text = "Unicode"; + this.radioButton6.Text = "UTF-16 LE"; this.radioButton6.UseVisualStyleBackColor = true; // // radioButton7 @@ -235,7 +235,7 @@ namespace LSLEditor.Tools this.radioButton7.Size = new System.Drawing.Size(117, 17); this.radioButton7.TabIndex = 2; this.radioButton7.TabStop = true; - this.radioButton7.Text = "Unicode big endian"; + this.radioButton7.Text = "UTF-16 BE"; this.radioButton7.UseVisualStyleBackColor = true; // // radioButton8 From 25e73825bd4fd0b0e18437836e742eb083531a09 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 01:39:26 +0000 Subject: [PATCH 21/26] updated ReleaseNotes.htm to fill in some history gaps (info extracted from SVN history) --- trunk/Resource/ReleaseNotes.htm | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 47bc8a2..2985a19 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -6,21 +6,22 @@

              2012 - Release 2.x.x

              - Added + * Added
              • "Release Notes..." to help menu.
              - Changed + * Changed
              • Tools => Options => Text Editor => General - Changed labels to properly reflect the output file format.
              • UTF-8 output no longer prefixes the B.O.M. character.
              - Bugs Fixed: + * Bugs Fixed:
              • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
              • 3461546 - ReleaseNotes.htm in source, but never used
              • +
              • no id - Fix for state change without state name passing syntax-check.
              @@ -142,7 +143,23 @@
              -

              2011 - Release 2.42

              +

              2011-04-21 - Release 2.42

              + * Added: constants +
                +
              • CHANGED_REGION_START
              • +
              • PRIM_DESC
              • +
              • PRIM_NAME
              • +
              + * Added: functions (highlighting only): +
                +
              • llCastRay
              • +
              • llGetLinkNumberOfSides
              • +
              • llGetSPMaxMemory
              • +
              • llGetUsedMemory
              • +
              • llGetUsername
              • +
              • llRequestDisplayName
              • +
              • llRequestUsername
              • +
              From 92ccf0b434868f2a80d203a40c26152ea79d4722 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 01:59:54 +0000 Subject: [PATCH 22/26] Changing default file format to UTF-8. This is in preparation to remove ANSI, which is now deprecated. --- trunk/app.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trunk/app.config b/trunk/app.config index 57fa0ea..9c52a69 100644 --- a/trunk/app.config +++ b/trunk/app.config @@ -186,7 +186,7 @@ - ANSI + UTF-8 False From 40c9a3459c5639bd3c6ccf1cded57a368c928e2f Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 02:26:09 +0000 Subject: [PATCH 23/26] BUG 2999054: Adding code to prefer Unicode format from clipboard before accepting ANSI text. --- trunk/Editor/SyntaxRichTextBox.cs | 16 +++++++++++----- trunk/Resource/ReleaseNotes.htm | 13 +++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/trunk/Editor/SyntaxRichTextBox.cs b/trunk/Editor/SyntaxRichTextBox.cs index 61e622f..2a1866a 100644 --- a/trunk/Editor/SyntaxRichTextBox.cs +++ b/trunk/Editor/SyntaxRichTextBox.cs @@ -899,9 +899,15 @@ namespace LSLEditor public new void Paste() { - ResetHighlichting(); + ResetHighlighting(); - if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text, true)) + // First try with Unicode + if (Clipboard.GetDataObject().GetDataPresent(DataFormats.UnicodeText, true)) + { + string strTextToPaste = Clipboard.GetDataObject().GetData(DataFormats.UnicodeText, true).ToString().Replace("\r", ""); + this.ColoredText = strTextToPaste; + } // failing that try ANSI text. + else if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text, true)) { string strTextToPaste = Clipboard.GetDataObject().GetData(DataFormats.Text, true).ToString().Replace("\r", ""); this.ColoredText = strTextToPaste; @@ -1147,7 +1153,7 @@ namespace LSLEditor protected override void OnKeyPress(KeyPressEventArgs e) { - ResetHighlichting(); + ResetHighlighting(); char keyChar = e.KeyChar; @@ -1743,7 +1749,7 @@ namespace LSLEditor { BeginUpdate(); - ResetHighlichting(); + ResetHighlighting(); string strW = GetNewWhiteSpace(-1); int intTabs = (int)(strW.Length / AutoFormatter.GetTab().Length); @@ -1892,7 +1898,7 @@ namespace LSLEditor } } - private void ResetHighlichting() + private void ResetHighlighting() { if (HighLightList.Count == 0) return; diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index 2feab3e..f987402 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -11,7 +11,7 @@
            • "Release Notes..." to help menu.
            - * Changed + - Changed
            • Updated About.htm
            • Tools => Options => Text Editor => General - Changed labels to properly reflect the output file format.
            • @@ -19,12 +19,13 @@
            • UTF-8 is now the default file output format. ANSI is deprecated and will be removed at a later date.
            - * Fixed: + - Fixed:
              -
            • 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
            • -
            • 3461546 - ReleaseNotes.htm in source, but never used
            • -
            • no id - Fix for state change without state name passing syntax-check.
            • -
            • 3465488 - lslint does not show errors.
            • +
            • SF ID: 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
            • +
            • SF ID: 3461546 - ReleaseNotes.htm in source, but never used
            • +
            • SF ID: none - Fix for state change without state name passing syntax-check.
            • +
            • SF ID: 3465488 - lslint does not show errors.
            • +
            • SF ID: 2999054 - Unicode characters do not paste correctly
            From 4ddc74e8f583e684e989af57766c4733d591bf7a Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 02:36:49 +0000 Subject: [PATCH 24/26] Fixed typo in Font/Colour options dialogue. --- trunk/Resource/ReleaseNotes.htm | 5 +++-- trunk/Tools/TextEditorFontColors.Designer.cs | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index f987402..ab280af 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -21,11 +21,12 @@ - Fixed:
              -
            • SF ID: 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term
            • +
            • SF ID: 2995296 - Search | Comment Line (Ctl+K) Breaks Line After Search Term.
            • SF ID: 3461546 - ReleaseNotes.htm in source, but never used
            • SF ID: none - Fix for state change without state name passing syntax-check.
            • SF ID: 3465488 - lslint does not show errors.
            • -
            • SF ID: 2999054 - Unicode characters do not paste correctly
            • +
            • SF ID: 2999054 - Unicode characters do not paste correctly.
            • +
            • SF ID: none - Fixed typo in Font/Colour options dialogue.
            diff --git a/trunk/Tools/TextEditorFontColors.Designer.cs b/trunk/Tools/TextEditorFontColors.Designer.cs index 55e261d..6b13855 100644 --- a/trunk/Tools/TextEditorFontColors.Designer.cs +++ b/trunk/Tools/TextEditorFontColors.Designer.cs @@ -128,18 +128,18 @@ namespace LSLEditor.Tools this.checkBox1.AutoSize = true; this.checkBox1.Location = new System.Drawing.Point(16, 24); this.checkBox1.Name = "checkBox1"; - this.checkBox1.Size = new System.Drawing.Size(142, 17); + this.checkBox1.Size = new System.Drawing.Size(145, 17); this.checkBox1.TabIndex = 0; - this.checkBox1.Text = "use original colorscheme"; + this.checkBox1.Text = "use original color scheme"; this.checkBox1.UseVisualStyleBackColor = true; // - // EnvironmentFontColors + // TextEditorFontColors // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.groupBox5); this.Controls.Add(this.groupBox1); - this.Name = "EnvironmentFontColors"; + this.Name = "TextEditorFontColors"; this.Size = new System.Drawing.Size(392, 272); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); From 97f7bd42e9ec4bde3c3323a1d2a298c00b1d8124 Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 02:47:50 +0000 Subject: [PATCH 25/26] Some over looked updates needed for changes to defaults. --- trunk/Properties/Settings.Designer.cs | 24 ++++++++++++------------ trunk/Properties/Settings.settings | 6 +++--- trunk/app.config | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/trunk/Properties/Settings.Designer.cs b/trunk/Properties/Settings.Designer.cs index 7a45e8e..ccd502c 100644 --- a/trunk/Properties/Settings.Designer.cs +++ b/trunk/Properties/Settings.Designer.cs @@ -866,18 +866,6 @@ namespace LSLEditor.Properties { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("ANSI")] - public string OutputFormat { - get { - return ((string)(this["OutputFormat"])); - } - set { - this["OutputFormat"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -1228,5 +1216,17 @@ namespace LSLEditor.Properties { return ((string)(this["Version"])); } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UTF-8")] + public string OutputFormat { + get { + return ((string)(this["OutputFormat"])); + } + set { + this["OutputFormat"] = value; + } + } } } diff --git a/trunk/Properties/Settings.settings b/trunk/Properties/Settings.settings index 7b586d2..a404764 100644 --- a/trunk/Properties/Settings.settings +++ b/trunk/Properties/Settings.settings @@ -221,9 +221,6 @@ - - ANSI - False @@ -332,5 +329,8 @@ 2.43 + + UTF-8 + \ No newline at end of file diff --git a/trunk/app.config b/trunk/app.config index 9c52a69..96a36e4 100644 --- a/trunk/app.config +++ b/trunk/app.config @@ -185,9 +185,6 @@ - - UTF-8 - False @@ -239,6 +236,9 @@ True + + UTF-8 + From 1d32312687c23e51d30155e1db6d54d782e93d5e Mon Sep 17 00:00:00 2001 From: niel-archer Date: Fri, 30 Dec 2011 03:21:16 +0000 Subject: [PATCH 26/26] Bumping build number to 2.44.0. --- trunk/LSLEditor.RES | Bin 69608 -> 76852 bytes trunk/Properties/Settings.Designer.cs | 2 +- trunk/Properties/Settings.settings | 2 +- trunk/Resource/AssemblyInfo.cs | 2 +- trunk/Resource/ReleaseNotes.htm | 2 +- trunk/app.config | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/trunk/LSLEditor.RES b/trunk/LSLEditor.RES index 26017d1c8ef85a8d1745eb7667818a722edd9c50..9367eafffd875a11e66da96b91d6c19ea1bf126b 100644 GIT binary patch delta 14249 zcmbtbd3;k<_Wytk3M!%l*3#{D-$>fD>7FjHNt&k3Mv`u9A#GmU&@?GofU+2nMbrY) zqlh3o$}ao9i69^&o9u$Z_|cisnepe$=*-Wbzn}i@dr8`RU)l_x&-{^>mv_Hsx#ymH z?l~vPpVkiAe`nC{uLcd+zVGWnxdR|_aQVK*!GnK0dWghkEm1o>c8kkQsm+}ZNd|iG z^w1$gxDjPLddf7ln(fvp9+(&&122U?H}Ke(uspmJM*b$eQqR~Jvx}iL4mabHWVo$v z8^e-IGFln4g}ZBXSUM?}yVJ%L$2FRp+FG2fI6;%c=5Q8L(^{==rig-v;j}l76D+Y< zr}{PMxf>#B%`TC6O0qIVS%OTFB*Rle38;YZETLE|%tRuyeRM+v6m79E7H%3tBp#dp zF*l{S02QaQP$-O}+zzUhv2}Qg_m?k&nZe=JWtHa}_nyog5YIZo=&2C(MPHv5{LXaN-+8vb5f#%>u z?3iZjbOy0TY|4dNp<3vr&_X-SO>V~74;QP8vOA`6Bo?OG?6LVp2h{LsK+zh5l0sMu zgQPTZW-;3>)HJKjMl~{M0_~2e$W&%GWkwT3;waX3LN8`Ap5-f$s+Ph&*V9lzDP@IJ zRzX2dRzWT@oq;hsn_8(^l+@9V7Sv6ttagSJJ|I}`7XQ&Rd%Vo8FSR-%Ue)TkeMS!)HQZ%lf%NPP)qAeYw^kHyJDSTBA`FWT5H_wMnX$nRIlGq5nY@9kg}g#BIpCl@6-%`|Gt*lSIbxMuGq|<5?eF@UbkzM+pFESI|m%&-Rjd~QM zRphYOf9Pw=tK?FnNmtomP)ZFZsn%fROAbKvO0`KorbbyytK=GKkoJCgBXo%}%s0aXMNrm8(oLxsg_?3?_pd?X+5CdA)(Jn2yy*jkcm*NeAs+-=JKkq|pvF znv`m^KTUECUG8%xFP2DN#7p)6yUZ z!kAXdm5NH_Zc1;xJmi!rwQBjl5v`N!)vU*I<_R%tAC9LS>;JyA7t@YKnrKafR@2X_ zan|NgTrB=KLQR_f8F^X9TG{Hd-Q>v~~X_Tv!!TYi=4CdkeICz~>W~?;nyvlwT z09jrU6z4c$fhZAj&jmn+N*W!jXnAVo^}&YnqOD6J`!yB`V-*Qz7sQP{)BA>L4QPK$ zz5PTC6i3&mQeH22(kjM>Wa<=yH=UHskj2vbA6UsIAe+3?_MBiuxhk z?$OYykRUa!LPwz*B@!rx)9Rpz<>#eACa&F@Z$OH>9%Il3adO0#7tqBqo7?jB?Xq3h9Wdw$i9h5=aC@`q= zsv7FF+MwA5#GYsHL9(1G{qKmPR8N1Fiu48 za-eDj)mu(0;}ZH3_D9R!Gjn~}dv2h(qEJDf-B01ByQ zkG+X2w}XmDielZ%W|N|dMsMy!RS#ZaAp<$=>>LRrnAxrZTRKm*Iy^3{{27Z3+rtpq z(}`-%HZ_B)oBxb2Vhf`pq6V=G2SpJPvFuGikb-fmQE{lQ#&;D=3&2-I#IkDjz*&_H zR=3gYY+>C0xmuq`#3thG4NXpKhg;`#u+0c3=AjTD8S9%sW#FbgGQ#(yE7Cu=osqF| z1UJTA%h()ER(B`P>ifuq;HBo81C+1NfptQtW~Zaw-{)XGn60f*!=YTO7E*PsY{!Hx zjIH*mW}DSAnzFjt+OQc_?k=Azn>#xEemq3d=%g}yho{8bU*f;ErOM+#tn_#Wfwc0S&Fj4?b+4^ytvD zPpA~a&kW_5Mg%$*uPh*ZFjK|*@C_yN5} z>Fqi6zrd*3=qZt*O%!M*qKJjH8%P#tzoJFQkbzbu%O7-6IdD2U4&4SCm9RZ3I>MKT z_RI>;xZz<`JPe4Agox;9$cv6HX8R<8CMWKy869YHzDW=YWEc3|kW-*5I*+fwH_;I= zFeVrqN&frENQ z;8PgWy`#k7L7hA&)yVels3JkCq-PYUSP^Jr)z9##U<-PFJGLGKaYAT_D^Fon>(3l{ zxEd$pGT|?A(eOlk4iv?wK~sEvI*&Qme(GJ%Y;=BcyP7lS@8dJ!nFMi=LfQloyqHir zhy#6)&`YupJ}gQS!Q>=q5WAyE5d((64K(^#@>n0!Ny!E9R&qXE zN`48{DMIK>Nhf*jOcBBTlw|VZlc_AD#MDf*t0k<3kWY?H6~Qa15+BTKh2w(Ekc$#X z062w)32|9cVInz)Da3HGHVjS(qu`EkJalLWL0(3-Pqp@pHn^2B7uKC01YbQ4pEKoW>A&|nzKq^LzW`sYy!c7o6S?%I8!>i5?;>M z!OiT^!+QOJ13oFnfo0+fa@tFX;WOenK*pQEoX2o0*HlcIT#t zoD31aej!N97DvOFyeyJ?S02v&be;yD&XdSqaNZp{*q8oohD7x@9uBA(NBf zI5`fhlN({HTth&*D{w?kg$OJa@{r2s;6e8jf_#9Y3`!L`Sga@`guqP&E@fyX&q<0a z@nL6WIqa=`8~2TCBV_Hfup!7XEKJT`8uRN|#xPtpe?Y9_<18ZCTW!%HdRYH_XVYSplz zmIwKnfMnJcLt9-n?5|V7FLegc)))IC)6#lgP`_A@v;MWd9VRzOLt39W1FtsVZ}%o+CrEFTw7`K-p(ghUw< z$dlpvxFUFJ{21TlCXKI$gX3p|Xo8g#zhMF{{`Q1ST;9_YDM+6f1G?@QHh1E>2?iK5 z@p%!RkN1~#W)Y|8&WX67FDJ&sW2OXBmrN55VNA71{}BRY>8#q3Nu-I1~9H{v|snUMgW zH&%h~eHhd=6+?HE8UEHZ6DC`7LivD*IKNL@aJK)nWJ5Az2dX(7b}$j}5ie1%{bZD%~D8eQ9xUZ2`;phLQ!ixq_mDi@6|BBRRxz@OW{eY6jWB8pZ;`N>jvqD=->=+)KM20yk{K!L3a=Gsb; ziKF4ZEt^z7tQ}{mYFCiMtJ+z)2MEx&?bAunWIN7dt)0i?J7T!2EgNbbyzRTpfpa+L z(7(fMgmr1DC0qp+|eJF{F)%1R{1OPF_2+0d~$zgPSvX)zf3Ma9IAVcGx&e z5C52z39+*ap<#9s%$_ZQL$hi4=WL$c6ffeWvtBHO{Vz)3yBC{4>n(;?y#;XETMh%} zm|)_Z3fM5mK+f;~=CDQ!n~O71&CP;YbBo}>TpE6un-6I(O@IY2Y2eyRqV9RTvZZPs zPU)Rj3`ge`!r$ld4w20HIEIPyv!eD_KN z$X_jixvv($;a6oLm!C**VqU}98egl1)vxhl;5`B|yo;C0Rd(SVW_OjtiLMG5u$V@X zt%7jv4U5Cz(Bg40dk~)=Uw<8kJh7|-RLjP|s%7yZl_3u3-!ID?j!r~hgM>W;e4BbCWOaw(NrASTg7)qh ze_F@2Jgb@BRwu0Oj)xDrV_{wQ$YETwv?o33hIB{;>Phz8^>_0?2e~jGcqTm#_-y_L zW$2g;gNiqJUO(>*9CrAPs_r+Hpm?(++OIwOK^?{ECqutL!}5c*Z%X0en^mL*vzFt` zT9)U->g5e2J>tg*Sr-tm($)bxUwP*{T0~!`ms~eY*sXy-j8Y-79gboRz$qVcAMn!EFTS!Af3FMYt*hYlN*{6%BJ%#lY%S zygA$>V9&fmgXSGx@Sgt;>+wMew(Gav^bbPI4f#V#^R-1xS?SGgsprcCF6k_agp_ z0K~81)g+EJIQ_;o`EYlQ2)$wD}0fBZq7ffOu0C%-Vzsr%n0r>n1sJ>TnqM zE-%2Wd6)H@L+|3me|eXN^!FIjYgfF7L(0Ta@a=meNyy`yafoEI8eZOff1w7k8@qRr(YDd;z$q8(5Wwyo6lt(K1Z3IHkr20&m&%UciE~-DQwpE%q~Y23#UOn@2d2KC z4V&LjL*;jN_pW@BdD$+U(z7c+l;%Wgb$M5&0J&`ManSp9fH=skT)QEDH!iDwcRI}7 z9S$pY7s0jNc`$fSDM_G2#_GiFv4oIN% z054v94&Wr)4kUy!B+*Rzo}f%TD2BR&qhapB40!(_F|V%<;v&KiB}2)fBxpR84R9zQ zK0Z_ms>69ueE3=Pu7rvc3bbeM9?oEAA27|ZBRC7`kqqcKQV3g)q`>7P5_saM6&y!Z zIKk@b?&AsY>G3r9pW_-0> zIQ7|cdGOOYIY`b&LhX4CY&f3*SI+a&^pO{ElBx^k@ahE$wp@_Fmlx)P<>M*nH3_mW z#)I)9FZb%Yh?AbaD29Jr6!DK`;qP!z)9;c(?FJ&{-A+(G{9Oq|ev$*)PbBDDchq+1 zz7+=VeiDm2(I=navIbm=g2+oRK-MK8OuUrw7@~p)ws6>d>3Py>=Pu!7KVOQ07cQ4Y zaYER?TKNBf(CBID4Q4Rqaujr3jv^WDxr{UV!)0F6>bWcUu;NM~uKUZx;PERm_~nWe zO0QBlh`EY$Sa~%CKDZhO53h#9zpj=*_BFIf*OH<0S~(oKmI4p1@wzReKE=tkpXTGd z7ZZaYeyW5a*P|fedJ0rs&w?4(#jxXgDSUGs83vi(XhmN_!<@4tAm#?|2x_>IIhZ>R zxFy64*gwj&St+x{$^L{Q@SQbG zy_ty6D{l&X$=1c2EQ_CR3eYw27JF~J6^pKJ?tbGf_W6}t?DqN-_ay9g8M?2%%_0}v zE=1Rpw^{rb+>@v8(CA)$haH`DN8uB3?hY&QTkc`_T`jtAxhq1~x9*D3_2OMlfx9uo zS=+eU-5tnPd|w|Ye3ps;s?Ss`_%jZ6GaA17ECGFf{9ZD;3hou4D|3$>d*faPx_-!A zzrQC&m6PAp)HH{)&2Iv9Ealy2(arbc!#RQM|7KhqBsR7u!mr^lm+tEjGV*gFx+*_s zE#djRI)ckW+dI+Ef~*YsyBqrFS85O4ozGd`kAK0^)qcU=FZd#cZ8Mi;ju`CwV@j^o5VRo&AH_KF7n(jQZo;# z1I4|?QTM336|Jj?ih`pBYy1D-gxtJme}xZ^_c-T#&pG$pbM8I&y`8t(KUvwn>QVc4 zrPYtyOWVP&V^Hz2tPqg@T2)y%#Jz&(tlaDvZAO-cC4lV%99)drsAQPd@UL=B18mzHrO?IGq4h!F z$#XSQDAEW^%rYct3Np0@wuw!iyjH{|3T>p6UVJl4&gZns4CR~EPok`qe7jcGA-*fm zWR3|26H0}^80*f~SSGZ`exWxSh1`w`Q`BH5a)exDhZGUlrZrOL`ASZRHam(1A}8z+ z**lO4qG4@S&NbzPS@}y52c5)Hw(?vt2eZXIyb<@XPEH{cYzjV_#JxL(YSOhVf~!#m z9+GaRd%UEF>0Tu1ENOKrFSz9$wreq|KiFq2?uv2B6RcqveO4XuJ?Ap zDQ_W~y`w&4B>0H%xlameeLV4*G{B`bWTu?|AcZ9ZEh&sbsnE`nqwxt5F{8qw;|9~P zV=tNeU1$xn(Mer51hcp^>Fp9I-By+j8V zDMUD{=*yV;Q^7$WrJ#etD1msT2s4y&lcHlv0bVH!JAdE=4E{p1>=u8iNv_U+G$K?k z$W^7|swxmR0m;Y>@Wir!Jakce!C#$<6>4u>Q+qLHy99DDAds3(5A4hGu_BO~xDe=# zkAsGp%xHonru*WcY;*`NH9db79BR7%6fA{xi0eOGRfcddEQH!94~aL)MxL<8N1?u^ zXH{qh)`lwZFf^p?WDzlOjt`@r%?b<0)v#E&gnN*6w6%Ch{Dy~9fr{`@X0*Rq$W9Su zSQVjUSWhD;!X+{cx<~<*M+PwL`bf%ljv8S0(O9n^=Cjc3qH%`DM^QxC3`d-g60;&} z9Zh*b(Xl|Z8aJX-;1#38vKTpT#qdp0v5NI~repetC9y9P41FwBwjnkfz2ZEej+3Dz z&YkgoTO1X65|_;KBO;!IG4XU}R>W)2ZcrRMj;VtvaM7S}+#lr4=;S3(*06*mmd^ba z`s;*kSd;i|M=L9?vE2NVN?2kilPLV}Bo$Q2F33m@L1l6b-X%vdRtBX|v9D7S+KdKk z9ce$90+fS;F=KENZV%2!^pI3+9unE60@kwOIFu^55@v(kq0T5D8i*T1gILb@9Y$qR zhb3X>uxJ*q({RcQ87?AKV~YjDJxF4hEB~Jp$*dk$r1Z)59jl+f6^n6fr;EA1?MDP4 zbwn(-j__yV(maA%5smaEDkG#G{dmFeNn>7gE&>)NT|NS#`W8PLJw|l2N`` zeY`t)_G84lj;3PaqvhEu(4DJRa@FU~DuL6R#04@? zlIFp%=B9B_nMQ3qOcOFJr*w)MlFmxU#TN3F^x>?4$TFySe#T&23hae@8CO@79)J}aIBpi ziKfYZtU<`8P}TWUg0Oo^2>zNf5+kN6adj#W2dDNT_Xs$aMq*s45*tg^cwWk?EYC6u z*OsxWx3Y|b(`9Ba%BQ(?;B!N>ig34}H-e_gFlCw=N2dj%{q#UseIY{ebQ!9r2cuf%I84ujPrjSuz z4`Qi0XraITT8MtL2QZM-*&LM2rsJueJr_aWgs`9$-%ynozVU}LEc=-+c=q3~ z;-Ua@^}?n_;drws81lt~+S>F*%mEtJi>dPGi^bqB@x|~ZDlA(f#kD2FAzB)Z(xn1a zEoF6t@0U`D&v!}~zLR0=cM{eR8@{7_w`C#7S*Bv~_AaBmre%C^m$TQ@oaL0aZg~Wn zmMd5|-xZWsup$tpmznZm1)LB@X^BnlC>BS`dh&2?oa7`d? zuL*|JS`{gOdrV&IPV&$mHEV6~%i5ukuH!Q>{W=QUux@nQ?y(L9!u1r9wO)x0>x0m+ z-j`7*-ay&e8$z&S1G`DE-AH)}8$+>lV;r7sHCuMN*8=w*&PEbJCl1446W>nah2|xU|(cw5P5&8637 zYAJJb05)!pWQO*C7M5&FBxY_2!-Xvhe74md{kN*2+ZxV@9^Fc{v}~0@vTZQ0jS~jz zfU$iW#XQ{>3}KZw%d5O9%G+2KgXStv#*}b7Wer+ngR<=&*t|UmP1~K&eTN(5I}|9| z!RoS(?4aV!JCfS+iZll1cU~y0rt+JsLs=gET}{_H=}skNJMFPxXCKC^T{|heVW%3x zT?1Iq%w3eXa+e?O?D9tU-K>3g&~7{A?DjIZ;)+e674_Q=p< zuTz&iO+lfyz|tyo+Zzkb-Vkiq%j#t~`zR`LUnExU=-IvU>x7#k$g zGwF2Er2P;Z|Cl-_<8iCsex5z;cdY1}6%)k#vP!q#73KT6*ty>c*U9z!ez*T^ki-XQ zl(P>6V%q`sPS@!m<%Jv!#4K`cJJ1Uc4to6K{LeW=<&qBZG2>7;E*y%1{b4DR4hNAO zv_aKjzqV$abu#OIgzAYpqQ=}K=}egavaqB_#SGbSlp?kqjluh)J~WPg$NC|ITyu`O zW6v=jem>@5DZQ>W5(L-uhrY%hb81w$SVO{ZI=-Q$hUya^cSg!_PYw+%H$j`HBX8l< zI-O-|R~;Wffj5p*VAm6Vh&~a6?@p+2=Y$$gCt1trsFPG|@kv(EK0j%PPfyX52sp)u z{*)s#$|a{L>Zenz4YTi$l$`ow5LW-F!lNI>=yO_vnA0MZopvW@4qF^Q-3PU&rHnSG zGZZ%DjEo^KJ7b5vXQ&U2XILfG^DITgoE^}M6_E_RB^C?L`r+bPA9OgUMDRIpOgh&e zYtOOD|M@wpr0;nJ($9yY^1KT!pZB66{PY49P+xGP^O%3Z8|yDfaOZ+2tS^eY(1bV7 zSNuhanRU?%`!2fT-bGJzzQl*(k{m^sSgTdlB`R8f$+fMPfp!eWKFs?v1>{`z#_G!+ zxOAD1zb{)HmR_L(`YZjg_=+nIUlF0{iWL2SQljc7A1wc=8@Y$!?#)oBukz_gi>^}O z_NxLsxGIDFH8%ublcVffChD(6QbFZ)a?;83H+nPmngej1gR1L6czaz2!3_nr-EhXd z8;;~2OA(*kv>*a*x?;>tcg(*TO&kcJ68u}#_?TP4*nCTX+FKHIzdaC9w_TBcTa2~0 zS-a}f+d?PPD@!ZO8pGA;5_MW_o@MS;KYKy{vjl5?R^iMY72JODMA9!h)cnFq{g3WY zyMA|qG3`#MNz}SlNS^y3sn!RxYb7{Z+n-6vx3v`Fbyor1T`|5V*R{L;tR>y?9+eq< z&kd#bl5ykSFcx3&s~v{?O4EA&uk7`$;a7@vyPwLKoqwN_&)gq~j~)c|;gjmm(NEB3 zaD!a922Gk}n|Qr-={WUb0%L zM;3rXoj*p_Nl;!V$Hh87nk7A+P>s<~9D4G}lpFV+M128s2A=lB3)`QNu|E;A;%#3~ zfywnwm{9L;YdSWP@fR921}!&je5PgeSLz+mSkGZ1XY-VT zqwr%=O1NCt2csK%_W5vjSUuh%`{7xm0QOA|9~7sSFZ!${YC)oo7R{9+uroW4f6jdZ(}j|tq`-`N^tnC059J9(+ra7%H;Dd_A^Q&jmi^&{^W=K}hXkVL zo(O9u&Ne%fX)>irA$Ov_Ae$6Q>$Y6oEX3pHI7nOg(6)F2Es>@!>3&OZw6qA|@h%P} z?*!QVj=YF}XN$Ub;a!d0Q+BR?BJs`mi4^KTBk;|ik+}7zCpx}&xBq8-h`d-c5c9t8 gXJiEAZEak-flEG(y>}uxPCnccP5-Gr@V;2^|C=t2S^xk5 diff --git a/trunk/Properties/Settings.Designer.cs b/trunk/Properties/Settings.Designer.cs index ccd502c..34fd218 100644 --- a/trunk/Properties/Settings.Designer.cs +++ b/trunk/Properties/Settings.Designer.cs @@ -1210,7 +1210,7 @@ namespace LSLEditor.Properties { [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2.43")] + [global::System.Configuration.DefaultSettingValueAttribute("2.44.0")] public string Version { get { return ((string)(this["Version"])); diff --git a/trunk/Properties/Settings.settings b/trunk/Properties/Settings.settings index a404764..7e44884 100644 --- a/trunk/Properties/Settings.settings +++ b/trunk/Properties/Settings.settings @@ -327,7 +327,7 @@ True - 2.43 + 2.44.0 UTF-8 diff --git a/trunk/Resource/AssemblyInfo.cs b/trunk/Resource/AssemblyInfo.cs index 8b54935..5cacf72 100644 --- a/trunk/Resource/AssemblyInfo.cs +++ b/trunk/Resource/AssemblyInfo.cs @@ -69,7 +69,7 @@ using System.Runtime.CompilerServices; // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("2.43.*")] +[assembly: AssemblyVersion("2.44.*")] // // In order to sign your assembly you must specify a key to use. Refer to the diff --git a/trunk/Resource/ReleaseNotes.htm b/trunk/Resource/ReleaseNotes.htm index ab280af..e4d084c 100644 --- a/trunk/Resource/ReleaseNotes.htm +++ b/trunk/Resource/ReleaseNotes.htm @@ -5,7 +5,7 @@
            -

            2012-01 - Release 2.x.x

            +

            2012-01 - Release 2.44.0

            - Added
            • "Release Notes..." to help menu.
            • diff --git a/trunk/app.config b/trunk/app.config index 96a36e4..7ae0452 100644 --- a/trunk/app.config +++ b/trunk/app.config @@ -325,7 +325,7 @@ - 2.43 + 2.44.0