lscript_library.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:29k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lscript_library.cpp
  3.  * @brief external library interface
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. //  ##      ##    ###    ########  ##    ## #### ##    ##  ######   #### ####
  33. //  ##  ##  ##   ## ##   ##     ## ###   ##  ##  ###   ## ##    ##  #### ####
  34. //  ##  ##  ##  ##   ##  ##     ## ####  ##  ##  ####  ## ##        #### ####
  35. //  ##  ##  ## ##     ## ########  ## ## ##  ##  ## ## ## ##   ####  ##   ##
  36. //  ##  ##  ## ######### ##   ##   ##  ####  ##  ##  #### ##    ##
  37. //  ##  ##  ## ##     ## ##    ##  ##   ###  ##  ##   ### ##    ##  #### ####
  38. //   ###  ###  ##     ## ##     ## ##    ## #### ##    ##  ######   #### #### 
  39. //
  40. // When adding functions, they <b>MUST</b> be appended to the end of
  41. // the init() method. The init() associates the name with a number,
  42. // which is then serialized into the bytecode. Inserting a new
  43. // function in the middle will lead to many sim crashes. Phoenix 2006-04-10.
  44. #include "linden_common.h"
  45. #include "lscript_library.h"
  46. LLScriptLibrary::LLScriptLibrary()
  47. {
  48. init();
  49. }
  50. LLScriptLibrary::~LLScriptLibrary()
  51. {
  52. }
  53. void dummy_func(LLScriptLibData *retval, LLScriptLibData *args, const LLUUID &id)
  54. {
  55. }
  56. void LLScriptLibrary::init()
  57. {
  58. // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST.
  59. // Otherwise the bytecode numbers for each call will be wrong, and all
  60. // existing scripts will crash.
  61. // energy, sleep, dummy_func, name, return type, parameters, gods-only
  62. addFunction(10.f, 0.f, dummy_func, "llSin", "f", "f");
  63. addFunction(10.f, 0.f, dummy_func, "llCos", "f", "f");
  64. addFunction(10.f, 0.f, dummy_func, "llTan", "f", "f");
  65. addFunction(10.f, 0.f, dummy_func, "llAtan2", "f", "ff");
  66. addFunction(10.f, 0.f, dummy_func, "llSqrt", "f", "f");
  67. addFunction(10.f, 0.f, dummy_func, "llPow", "f", "ff");
  68. addFunction(10.f, 0.f, dummy_func, "llAbs", "i", "i");
  69. addFunction(10.f, 0.f, dummy_func, "llFabs", "f", "f");
  70. addFunction(10.f, 0.f, dummy_func, "llFrand", "f", "f");
  71. addFunction(10.f, 0.f, dummy_func, "llFloor", "i", "f");
  72. addFunction(10.f, 0.f, dummy_func, "llCeil", "i", "f");
  73. addFunction(10.f, 0.f, dummy_func, "llRound", "i", "f");
  74. addFunction(10.f, 0.f, dummy_func, "llVecMag", "f", "v");
  75. addFunction(10.f, 0.f, dummy_func, "llVecNorm", "v", "v");
  76. addFunction(10.f, 0.f, dummy_func, "llVecDist", "f", "vv");
  77. addFunction(10.f, 0.f, dummy_func, "llRot2Euler", "v", "q");
  78. addFunction(10.f, 0.f, dummy_func, "llEuler2Rot", "q", "v");
  79. addFunction(10.f, 0.f, dummy_func, "llAxes2Rot", "q", "vvv");
  80. addFunction(10.f, 0.f, dummy_func, "llRot2Fwd", "v", "q");
  81. addFunction(10.f, 0.f, dummy_func, "llRot2Left", "v", "q");
  82. addFunction(10.f, 0.f, dummy_func, "llRot2Up", "v", "q");
  83. addFunction(10.f, 0.f, dummy_func, "llRotBetween", "q", "vv");
  84. addFunction(10.f, 0.f, dummy_func, "llWhisper", NULL, "is");
  85. addFunction(10.f, 0.f, dummy_func, "llSay", NULL, "is");
  86. addFunction(10.f, 0.f, dummy_func, "llShout", NULL, "is");
  87. addFunction(10.f, 0.f, dummy_func, "llListen", "i", "isks");
  88. addFunction(10.f, 0.f, dummy_func, "llListenControl", NULL, "ii");
  89. addFunction(10.f, 0.f, dummy_func, "llListenRemove", NULL, "i");
  90. addFunction(10.f, 0.f, dummy_func, "llSensor", NULL, "skiff");
  91. addFunction(10.f, 0.f, dummy_func, "llSensorRepeat", NULL, "skifff");
  92. addFunction(10.f, 0.f, dummy_func, "llSensorRemove", NULL, NULL);
  93. addFunction(10.f, 0.f, dummy_func, "llDetectedName", "s", "i");
  94. addFunction(10.f, 0.f, dummy_func, "llDetectedKey", "k", "i");
  95. addFunction(10.f, 0.f, dummy_func, "llDetectedOwner", "k", "i");
  96. addFunction(10.f, 0.f, dummy_func, "llDetectedType", "i", "i");
  97. addFunction(10.f, 0.f, dummy_func, "llDetectedPos", "v", "i");
  98. addFunction(10.f, 0.f, dummy_func, "llDetectedVel", "v", "i");
  99. addFunction(10.f, 0.f, dummy_func, "llDetectedGrab", "v", "i");
  100. addFunction(10.f, 0.f, dummy_func, "llDetectedRot", "q", "i");
  101. addFunction(10.f, 0.f, dummy_func, "llDetectedGroup", "i", "i");
  102. addFunction(10.f, 0.f, dummy_func, "llDetectedLinkNumber", "i", "i");
  103. addFunction(0.f, 0.f, dummy_func, "llDie", NULL, NULL);
  104. addFunction(10.f, 0.f, dummy_func, "llGround", "f", "v");
  105. addFunction(10.f, 0.f, dummy_func, "llCloud", "f", "v");
  106. addFunction(10.f, 0.f, dummy_func, "llWind", "v", "v");
  107. addFunction(10.f, 0.f, dummy_func, "llSetStatus", NULL, "ii");
  108. addFunction(10.f, 0.f, dummy_func, "llGetStatus", "i", "i");
  109. addFunction(10.f, 0.f, dummy_func, "llSetScale", NULL, "v");
  110. addFunction(10.f, 0.f, dummy_func, "llGetScale", "v", NULL);
  111. addFunction(10.f, 0.f, dummy_func, "llSetColor", NULL, "vi");
  112. addFunction(10.f, 0.f, dummy_func, "llGetAlpha", "f", "i");
  113. addFunction(10.f, 0.f, dummy_func, "llSetAlpha", NULL, "fi");
  114. addFunction(10.f, 0.f, dummy_func, "llGetColor", "v", "i");
  115. addFunction(10.f, 0.2f, dummy_func, "llSetTexture", NULL, "si");
  116. addFunction(10.f, 0.2f, dummy_func, "llScaleTexture", NULL, "ffi");
  117. addFunction(10.f, 0.2f, dummy_func, "llOffsetTexture", NULL, "ffi");
  118. addFunction(10.f, 0.2f, dummy_func, "llRotateTexture", NULL, "fi");
  119. addFunction(10.f, 0.f, dummy_func, "llGetTexture", "s", "i");
  120. addFunction(10.f, 0.2f, dummy_func, "llSetPos", NULL, "v");
  121. addFunction(10.f, 0.f, dummy_func, "llGetPos", "v", NULL);
  122. addFunction(10.f, 0.f, dummy_func, "llGetLocalPos", "v", NULL);
  123. addFunction(10.f, 0.2f, dummy_func, "llSetRot", NULL, "q");
  124. addFunction(10.f, 0.f, dummy_func, "llGetRot", "q", NULL);
  125. addFunction(10.f, 0.f, dummy_func, "llGetLocalRot", "q", NULL);
  126. addFunction(10.f, 0.f, dummy_func, "llSetForce", NULL, "vi");
  127. addFunction(10.f, 0.f, dummy_func, "llGetForce", "v", NULL);
  128. addFunction(10.f, 0.f, dummy_func, "llTarget", "i", "vf");
  129. addFunction(10.f, 0.f, dummy_func, "llTargetRemove", NULL, "i");
  130. addFunction(10.f, 0.f, dummy_func, "llRotTarget", "i", "qf");
  131. addFunction(10.f, 0.f, dummy_func, "llRotTargetRemove", NULL, "i");
  132. addFunction(10.f, 0.f, dummy_func, "llMoveToTarget", NULL, "vf");
  133. addFunction(10.f, 0.f, dummy_func, "llStopMoveToTarget", NULL, NULL);
  134. addFunction(10.f, 0.f, dummy_func, "llApplyImpulse", NULL, "vi");
  135. addFunction(10.f, 0.f, dummy_func, "llApplyRotationalImpulse", NULL, "vi");
  136. addFunction(10.f, 0.f, dummy_func, "llSetTorque", NULL, "vi");
  137. addFunction(10.f, 0.f, dummy_func, "llGetTorque", "v", NULL);
  138. addFunction(10.f, 0.f, dummy_func, "llSetForceAndTorque", NULL, "vvi");
  139. addFunction(10.f, 0.f, dummy_func, "llGetVel", "v", NULL);
  140. addFunction(10.f, 0.f, dummy_func, "llGetAccel", "v", NULL);
  141. addFunction(10.f, 0.f, dummy_func, "llGetOmega", "v", NULL);
  142. addFunction(10.f, 0.f, dummy_func, "llGetTimeOfDay", "f", "");
  143. addFunction(10.f, 0.f, dummy_func, "llGetWallclock", "f", "");
  144. addFunction(10.f, 0.f, dummy_func, "llGetTime", "f", NULL);
  145. addFunction(10.f, 0.f, dummy_func, "llResetTime", NULL, NULL);
  146. addFunction(10.f, 0.f, dummy_func, "llGetAndResetTime", "f", NULL);
  147. addFunction(10.f, 0.f, dummy_func, "llSound", NULL, "sfii");
  148. addFunction(10.f, 0.f, dummy_func, "llPlaySound", NULL, "sf");
  149. addFunction(10.f, 0.f, dummy_func, "llLoopSound", NULL, "sf");
  150. addFunction(10.f, 0.f, dummy_func, "llLoopSoundMaster", NULL, "sf");
  151. addFunction(10.f, 0.f, dummy_func, "llLoopSoundSlave", NULL, "sf");
  152. addFunction(10.f, 0.f, dummy_func, "llPlaySoundSlave", NULL, "sf");
  153. addFunction(10.f, 0.f, dummy_func, "llTriggerSound", NULL, "sf");
  154. addFunction(10.f, 0.f, dummy_func, "llStopSound", NULL, "");
  155. addFunction(10.f, 1.f, dummy_func, "llPreloadSound", NULL, "s");
  156. addFunction(10.f, 0.f, dummy_func, "llGetSubString", "s", "sii");
  157. addFunction(10.f, 0.f, dummy_func, "llDeleteSubString", "s", "sii");
  158. addFunction(10.f, 0.f, dummy_func, "llInsertString", "s", "sis");
  159. addFunction(10.f, 0.f, dummy_func, "llToUpper", "s", "s");
  160. addFunction(10.f, 0.f, dummy_func, "llToLower", "s", "s");
  161. addFunction(10.f, 0.f, dummy_func, "llGiveMoney", "i", "ki");
  162. addFunction(10.f, 0.1f, dummy_func, "llMakeExplosion", NULL, "iffffsv");
  163. addFunction(10.f, 0.1f, dummy_func, "llMakeFountain", NULL, "iffffisvf");
  164. addFunction(10.f, 0.1f, dummy_func, "llMakeSmoke", NULL, "iffffsv");
  165. addFunction(10.f, 0.1f, dummy_func, "llMakeFire", NULL, "iffffsv");
  166. addFunction(200.f, 0.1f, dummy_func, "llRezObject", NULL, "svvqi");
  167. addFunction(10.f, 0.f, dummy_func, "llLookAt", NULL, "vff");
  168. addFunction(10.f, 0.f, dummy_func, "llStopLookAt", NULL, NULL);
  169. addFunction(10.f, 0.f, dummy_func, "llSetTimerEvent", NULL, "f");
  170. addFunction(0.f, 0.f, dummy_func, "llSleep", NULL, "f");
  171. addFunction(10.f, 0.f, dummy_func, "llGetMass", "f", NULL);
  172. addFunction(10.f, 0.f, dummy_func, "llCollisionFilter", NULL, "ski");
  173. addFunction(10.f, 0.f, dummy_func, "llTakeControls", NULL, "iii");
  174. addFunction(10.f, 0.f, dummy_func, "llReleaseControls", NULL, NULL);
  175. addFunction(10.f, 0.f, dummy_func, "llAttachToAvatar", NULL, "i");
  176. addFunction(10.f, 0.f, dummy_func, "llDetachFromAvatar", NULL, NULL);
  177. addFunction(10.f, 0.f, dummy_func, "llTakeCamera", NULL, "k");
  178. addFunction(10.f, 0.f, dummy_func, "llReleaseCamera", NULL, "k");
  179. addFunction(10.f, 0.f, dummy_func, "llGetOwner", "k", NULL);
  180. addFunction(10.f, 2.f, dummy_func, "llInstantMessage", NULL, "ks");
  181. addFunction(10.f, 20.f, dummy_func, "llEmail", NULL, "sss");
  182. addFunction(10.f, 0.f, dummy_func, "llGetNextEmail", NULL, "ss");
  183. addFunction(10.f, 0.f, dummy_func, "llGetKey", "k", NULL);
  184. addFunction(10.f, 0.f, dummy_func, "llSetBuoyancy", NULL, "f");
  185. addFunction(10.f, 0.f, dummy_func, "llSetHoverHeight", NULL, "fif");
  186. addFunction(10.f, 0.f, dummy_func, "llStopHover", NULL, NULL);
  187. addFunction(10.f, 0.f, dummy_func, "llMinEventDelay", NULL, "f");
  188. addFunction(10.f, 0.f, dummy_func, "llSoundPreload", NULL, "s");
  189. addFunction(10.f, 0.f, dummy_func, "llRotLookAt", NULL, "qff");
  190. addFunction(10.f, 0.f, dummy_func, "llStringLength", "i", "s");
  191. addFunction(10.f, 0.f, dummy_func, "llStartAnimation", NULL, "s");
  192. addFunction(10.f, 0.f, dummy_func, "llStopAnimation", NULL, "s");
  193. addFunction(10.f, 0.f, dummy_func, "llPointAt", NULL, "v");
  194. addFunction(10.f, 0.f, dummy_func, "llStopPointAt", NULL, NULL);
  195. addFunction(10.f, 0.f, dummy_func, "llTargetOmega", NULL, "vff");
  196. addFunction(10.f, 0.f, dummy_func, "llGetStartParameter", "i", NULL);
  197. addFunction(10.f, 0.f, dummy_func, "llGodLikeRezObject", NULL, "kv", TRUE);
  198. addFunction(10.f, 0.f, dummy_func, "llRequestPermissions", NULL, "ki");
  199. addFunction(10.f, 0.f, dummy_func, "llGetPermissionsKey", "k", NULL);
  200. addFunction(10.f, 0.f, dummy_func, "llGetPermissions", "i", NULL);
  201. addFunction(10.f, 0.f, dummy_func, "llGetLinkNumber", "i", NULL);
  202. addFunction(10.f, 0.f, dummy_func, "llSetLinkColor", NULL, "ivi");
  203. addFunction(10.f, 1.f, dummy_func, "llCreateLink", NULL, "ki");
  204. addFunction(10.f, 0.f, dummy_func, "llBreakLink", NULL, "i");
  205. addFunction(10.f, 0.f, dummy_func, "llBreakAllLinks", NULL, NULL);
  206. addFunction(10.f, 0.f, dummy_func, "llGetLinkKey", "k", "i");
  207. addFunction(10.f, 0.f, dummy_func, "llGetLinkName", "s", "i");
  208. addFunction(10.f, 0.f, dummy_func, "llGetInventoryNumber", "i", "i");
  209. addFunction(10.f, 0.f, dummy_func, "llGetInventoryName", "s", "ii");
  210. addFunction(10.f, 0.f, dummy_func, "llSetScriptState", NULL, "si");
  211. addFunction(10.f, 0.f, dummy_func, "llGetEnergy", "f", NULL);
  212. addFunction(10.f, 0.f, dummy_func, "llGiveInventory", NULL, "ks");
  213. addFunction(10.f, 0.f, dummy_func, "llRemoveInventory", NULL, "s");
  214. addFunction(10.f, 0.f, dummy_func, "llSetText", NULL, "svf");
  215. addFunction(10.f, 0.f, dummy_func, "llWater", "f", "v");
  216. addFunction(10.f, 0.f, dummy_func, "llPassTouches", NULL, "i");
  217. addFunction(10.f, 0.1f, dummy_func, "llRequestAgentData", "k", "ki");
  218. addFunction(10.f, 1.f, dummy_func, "llRequestInventoryData", "k", "s");
  219. addFunction(10.f, 0.f, dummy_func, "llSetDamage", NULL, "f");
  220. addFunction(100.f, 5.f, dummy_func, "llTeleportAgentHome", NULL, "k");
  221. addFunction(10.f, 0.f, dummy_func, "llModifyLand", NULL, "ii");
  222. addFunction(10.f, 0.f, dummy_func, "llCollisionSound", NULL, "sf");
  223. addFunction(10.f, 0.f, dummy_func, "llCollisionSprite", NULL, "s");
  224. addFunction(10.f, 0.f, dummy_func, "llGetAnimation", "s", "k");
  225. addFunction(10.f, 0.f, dummy_func, "llResetScript", NULL, NULL);
  226. addFunction(10.f, 0.f, dummy_func, "llMessageLinked", NULL, "iisk");
  227. addFunction(10.f, 0.f, dummy_func, "llPushObject", NULL, "kvvi");
  228. addFunction(10.f, 0.f, dummy_func, "llPassCollisions", NULL, "i");
  229. addFunction(10.f, 0.f, dummy_func, "llGetScriptName", "s", NULL);
  230. addFunction(10.f, 0.f, dummy_func, "llGetNumberOfSides", "i", NULL);
  231. addFunction(10.f, 0.f, dummy_func, "llAxisAngle2Rot", "q", "vf");
  232. addFunction(10.f, 0.f, dummy_func, "llRot2Axis", "v", "q");
  233. addFunction(10.f, 0.f, dummy_func, "llRot2Angle", "f", "q");
  234. addFunction(10.f, 0.f, dummy_func, "llAcos", "f", "f");
  235. addFunction(10.f, 0.f, dummy_func, "llAsin", "f", "f");
  236. addFunction(10.f, 0.f, dummy_func, "llAngleBetween", "f", "qq");
  237. addFunction(10.f, 0.f, dummy_func, "llGetInventoryKey", "k", "s");
  238. addFunction(10.f, 0.f, dummy_func, "llAllowInventoryDrop", NULL, "i");
  239. addFunction(10.f, 0.f, dummy_func, "llGetSunDirection", "v", NULL);
  240. addFunction(10.f, 0.f, dummy_func, "llGetTextureOffset", "v", "i");
  241. addFunction(10.f, 0.f, dummy_func, "llGetTextureScale", "v", "i");
  242. addFunction(10.f, 0.f, dummy_func, "llGetTextureRot", "f", "i");
  243. addFunction(10.f, 0.f, dummy_func, "llSubStringIndex", "i", "ss");
  244. addFunction(10.f, 0.f, dummy_func, "llGetOwnerKey", "k", "k");
  245. addFunction(10.f, 0.f, dummy_func, "llGetCenterOfMass", "v", NULL);
  246. addFunction(10.f, 0.f, dummy_func, "llListSort", "l", "lii");
  247. addFunction(10.f, 0.f, dummy_func, "llGetListLength", "i", "l");
  248. addFunction(10.f, 0.f, dummy_func, "llList2Integer", "i", "li");
  249. addFunction(10.f, 0.f, dummy_func, "llList2Float", "f", "li");
  250. addFunction(10.f, 0.f, dummy_func, "llList2String", "s", "li");
  251. addFunction(10.f, 0.f, dummy_func, "llList2Key", "k", "li");
  252. addFunction(10.f, 0.f, dummy_func, "llList2Vector", "v", "li");
  253. addFunction(10.f, 0.f, dummy_func, "llList2Rot", "q", "li");
  254. addFunction(10.f, 0.f, dummy_func, "llList2List", "l", "lii");
  255. addFunction(10.f, 0.f, dummy_func, "llDeleteSubList", "l", "lii");
  256. addFunction(10.f, 0.f, dummy_func, "llGetListEntryType", "i", "li");
  257. addFunction(10.f, 0.f, dummy_func, "llList2CSV", "s", "l");
  258. addFunction(10.f, 0.f, dummy_func, "llCSV2List", "l", "s");
  259. addFunction(10.f, 0.f, dummy_func, "llListRandomize", "l", "li");
  260. addFunction(10.f, 0.f, dummy_func, "llList2ListStrided", "l", "liii");
  261. addFunction(10.f, 0.f, dummy_func, "llGetRegionCorner", "v", NULL);
  262. addFunction(10.f, 0.f, dummy_func, "llListInsertList", "l", "lli");
  263. addFunction(10.f, 0.f, dummy_func, "llListFindList", "i", "ll");
  264. addFunction(10.f, 0.f, dummy_func, "llGetObjectName", "s", NULL);
  265. addFunction(10.f, 0.f, dummy_func, "llSetObjectName", NULL, "s");
  266. addFunction(10.f, 0.f, dummy_func, "llGetDate", "s", NULL);
  267. addFunction(10.f, 0.f, dummy_func, "llEdgeOfWorld", "i", "vv");
  268. addFunction(10.f, 0.f, dummy_func, "llGetAgentInfo", "i", "k");
  269. addFunction(10.f, 0.1f, dummy_func, "llAdjustSoundVolume", NULL, "f");
  270. addFunction(10.f, 0.f, dummy_func, "llSetSoundQueueing", NULL, "i");
  271. addFunction(10.f, 0.f, dummy_func, "llSetSoundRadius", NULL, "f");
  272. addFunction(10.f, 0.f, dummy_func, "llKey2Name", "s", "k");
  273. addFunction(10.f, 0.f, dummy_func, "llSetTextureAnim", NULL, "iiiifff");
  274. addFunction(10.f, 0.f, dummy_func, "llTriggerSoundLimited", NULL, "sfvv");
  275. addFunction(10.f, 0.f, dummy_func, "llEjectFromLand", NULL, "k");
  276. addFunction(10.f, 0.f, dummy_func, "llParseString2List", "l", "sll");
  277. addFunction(10.f, 0.f, dummy_func, "llOverMyLand", "i", "k");
  278. addFunction(10.f, 0.f, dummy_func, "llGetLandOwnerAt", "k", "v");
  279. addFunction(10.f, 0.1f, dummy_func, "llGetNotecardLine", "k", "si");
  280. addFunction(10.f, 0.f, dummy_func, "llGetAgentSize", "v", "k");
  281. addFunction(10.f, 0.f, dummy_func, "llSameGroup", "i", "k");
  282. addFunction(10.f, 0.f, dummy_func, "llUnSit", NULL, "k");
  283. addFunction(10.f, 0.f, dummy_func, "llGroundSlope", "v", "v");
  284. addFunction(10.f, 0.f, dummy_func, "llGroundNormal", "v", "v");
  285. addFunction(10.f, 0.f, dummy_func, "llGroundContour", "v", "v");
  286. addFunction(10.f, 0.f, dummy_func, "llGetAttached", "i", NULL);
  287. addFunction(10.f, 0.f, dummy_func, "llGetFreeMemory", "i", NULL);
  288. addFunction(10.f, 0.f, dummy_func, "llGetRegionName", "s", NULL);
  289. addFunction(10.f, 0.f, dummy_func, "llGetRegionTimeDilation", "f", NULL);
  290. addFunction(10.f, 0.f, dummy_func, "llGetRegionFPS", "f", NULL);
  291. addFunction(10.f, 0.f, dummy_func, "llParticleSystem", NULL, "l");
  292. addFunction(10.f, 0.f, dummy_func, "llGroundRepel", NULL, "fif");
  293. addFunction(10.f, 3.f, dummy_func, "llGiveInventoryList", NULL, "ksl");
  294. // script calls for vehicle action
  295. addFunction(10.f, 0.f, dummy_func, "llSetVehicleType", NULL, "i");
  296. addFunction(10.f, 0.f, dummy_func, "llSetVehicleFloatParam", NULL, "if");
  297. addFunction(10.f, 0.f, dummy_func, "llSetVehicleVectorParam", NULL, "iv");
  298. addFunction(10.f, 0.f, dummy_func, "llSetVehicleRotationParam", NULL, "iq");
  299. addFunction(10.f, 0.f, dummy_func, "llSetVehicleFlags", NULL, "i");
  300. addFunction(10.f, 0.f, dummy_func, "llRemoveVehicleFlags", NULL, "i");
  301. addFunction(10.f, 0.f, dummy_func, "llSitTarget", NULL, "vq");
  302. addFunction(10.f, 0.f, dummy_func, "llAvatarOnSitTarget", "k", NULL);
  303. addFunction(10.f, 0.1f, dummy_func, "llAddToLandPassList", NULL, "kf");
  304. addFunction(10.f, 0.f, dummy_func, "llSetTouchText", NULL, "s");
  305. addFunction(10.f, 0.f, dummy_func, "llSetSitText", NULL, "s");
  306. addFunction(10.f, 0.f, dummy_func, "llSetCameraEyeOffset", NULL, "v");
  307. addFunction(10.f, 0.f, dummy_func, "llSetCameraAtOffset", NULL, "v");
  308. addFunction(10.f, 0.f, dummy_func, "llDumpList2String", "s", "ls");
  309. addFunction(10.f, 0.f, dummy_func, "llScriptDanger", "i", "v");
  310. addFunction(10.f, 1.f, dummy_func, "llDialog", NULL, "ksli");
  311. addFunction(10.f, 0.f, dummy_func, "llVolumeDetect", NULL, "i");
  312. addFunction(10.f, 0.f, dummy_func, "llResetOtherScript", NULL, "s");
  313. addFunction(10.f, 0.f, dummy_func, "llGetScriptState", "i", "s");
  314. addFunction(10.f, 3.f, dummy_func, "llRemoteLoadScript", NULL, "ksii");
  315. addFunction(10.f, 0.2f, dummy_func, "llSetRemoteScriptAccessPin", NULL, "i");
  316. addFunction(10.f, 3.f, dummy_func, "llRemoteLoadScriptPin", NULL, "ksiii");
  317. addFunction(10.f, 1.f, dummy_func, "llOpenRemoteDataChannel", NULL, NULL);
  318. addFunction(10.f, 3.f, dummy_func, "llSendRemoteData", "k", "ksis");
  319. addFunction(10.f, 3.f, dummy_func, "llRemoteDataReply", NULL, "kksi");
  320. addFunction(10.f, 1.f, dummy_func, "llCloseRemoteDataChannel", NULL, "k");
  321. addFunction(10.f, 0.f, dummy_func, "llMD5String", "s", "si");
  322. addFunction(10.f, 0.2f, dummy_func, "llSetPrimitiveParams", NULL, "l");
  323. addFunction(10.f, 0.f, dummy_func, "llStringToBase64", "s", "s");
  324. addFunction(10.f, 0.f, dummy_func, "llBase64ToString", "s", "s");
  325. addFunction(10.f, 0.3f, dummy_func, "llXorBase64Strings", "s", "ss");
  326. addFunction(10.f, 0.f, dummy_func, "llRemoteDataSetRegion", NULL, NULL);
  327. addFunction(10.f, 0.f, dummy_func, "llLog10", "f", "f");
  328. addFunction(10.f, 0.f, dummy_func, "llLog", "f", "f");
  329. addFunction(10.f, 0.f, dummy_func, "llGetAnimationList", "l", "k");
  330. addFunction(10.f, 2.f, dummy_func, "llSetParcelMusicURL", NULL, "s");
  331. addFunction(10.f, 0.f, dummy_func, "llGetRootPosition", "v", NULL);
  332. addFunction(10.f, 0.f, dummy_func, "llGetRootRotation", "q", NULL);
  333. addFunction(10.f, 0.f, dummy_func, "llGetObjectDesc", "s", NULL);
  334. addFunction(10.f, 0.f, dummy_func, "llSetObjectDesc", NULL, "s");
  335. addFunction(10.f, 0.f, dummy_func, "llGetCreator", "k", NULL);
  336. addFunction(10.f, 0.f, dummy_func, "llGetTimestamp", "s", NULL);
  337. addFunction(10.f, 0.f, dummy_func, "llSetLinkAlpha", NULL, "ifi");
  338. addFunction(10.f, 0.f, dummy_func, "llGetNumberOfPrims", "i", NULL);
  339. addFunction(10.f, 0.1f, dummy_func, "llGetNumberOfNotecardLines", "k", "s");
  340. addFunction(10.f, 0.f, dummy_func, "llGetBoundingBox", "l", "k");
  341. addFunction(10.f, 0.f, dummy_func, "llGetGeometricCenter", "v", NULL);
  342. addFunction(10.f, 0.2f, dummy_func, "llGetPrimitiveParams", "l", "l");
  343. addFunction(10.f, 0.0f, dummy_func, "llIntegerToBase64", "s", "i");
  344. addFunction(10.f, 0.0f, dummy_func, "llBase64ToInteger", "i", "s");
  345. addFunction(10.f, 0.f, dummy_func, "llGetGMTclock", "f", "");
  346. addFunction(10.f, 10.f, dummy_func, "llGetSimulatorHostname", "s", "");
  347. addFunction(10.f, 0.2f, dummy_func, "llSetLocalRot", NULL, "q");
  348. addFunction(10.f, 0.f, dummy_func, "llParseStringKeepNulls", "l", "sll");
  349. addFunction(200.f, 0.1f, dummy_func, "llRezAtRoot", NULL, "svvqi");
  350. addFunction(10.f, 0.f, dummy_func, "llGetObjectPermMask", "i", "i", FALSE);
  351. addFunction(10.f, 0.f, dummy_func, "llSetObjectPermMask", NULL, "ii", TRUE);
  352. addFunction(10.f, 0.f, dummy_func, "llGetInventoryPermMask", "i", "si", FALSE);
  353. addFunction(10.f, 0.f, dummy_func, "llSetInventoryPermMask", NULL, "sii", TRUE);
  354. addFunction(10.f, 0.f, dummy_func, "llGetInventoryCreator", "k", "s", FALSE);
  355. addFunction(10.f, 0.f, dummy_func, "llOwnerSay", NULL, "s");
  356. addFunction(10.f, 1.f, dummy_func, "llRequestSimulatorData", "k", "si");
  357. addFunction(10.f, 0.f, dummy_func, "llForceMouselook", NULL, "i");
  358. addFunction(10.f, 0.f, dummy_func, "llGetObjectMass", "f", "k");
  359. addFunction(10.f, 0.f, dummy_func, "llListReplaceList", "l", "llii");
  360. addFunction(10.f, 10.f, dummy_func, "llLoadURL", NULL, "kss");
  361. addFunction(10.f, 2.f, dummy_func, "llParcelMediaCommandList", NULL, "l");
  362. addFunction(10.f, 2.f, dummy_func, "llParcelMediaQuery", "l", "l");
  363. addFunction(10.f, 1.f, dummy_func, "llModPow", "i", "iii");
  364. addFunction(10.f, 0.f, dummy_func, "llGetInventoryType", "i", "s");
  365. addFunction(10.f, 0.f, dummy_func, "llSetPayPrice", NULL, "il");
  366. addFunction(10.f, 0.f, dummy_func, "llGetCameraPos", "v", "");
  367. addFunction(10.f, 0.f, dummy_func, "llGetCameraRot", "q", "");
  368. addFunction(10.f, 20.f, dummy_func, "llSetPrimURL", NULL, "s");
  369. addFunction(10.f, 20.f, dummy_func, "llRefreshPrimURL", NULL, "");
  370. addFunction(10.f, 0.f, dummy_func, "llEscapeURL", "s", "s");
  371. addFunction(10.f, 0.f, dummy_func, "llUnescapeURL", "s", "s");
  372. addFunction(10.f, 1.f, dummy_func, "llMapDestination", NULL, "svv");
  373. addFunction(10.f, 0.1f, dummy_func, "llAddToLandBanList", NULL, "kf");
  374. addFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandPassList", NULL, "k");
  375. addFunction(10.f, 0.1f, dummy_func, "llRemoveFromLandBanList", NULL, "k");
  376. addFunction(10.f, 0.f, dummy_func, "llSetCameraParams", NULL, "l");
  377. addFunction(10.f, 0.f, dummy_func, "llClearCameraParams", NULL, NULL);
  378. addFunction(10.f, 0.f, dummy_func, "llListStatistics", "f", "il");
  379. addFunction(10.f, 0.f, dummy_func, "llGetUnixTime", "i", NULL);
  380. addFunction(10.f, 0.f, dummy_func, "llGetParcelFlags", "i", "v");
  381. addFunction(10.f, 0.f, dummy_func, "llGetRegionFlags", "i", NULL);
  382. addFunction(10.f, 0.f, dummy_func, "llXorBase64StringsCorrect", "s", "ss");
  383. addFunction(10.f, 0.f, dummy_func, "llHTTPRequest", "k", "sls");
  384. addFunction(10.f, 0.1f, dummy_func, "llResetLandBanList", NULL, NULL);
  385. addFunction(10.f, 0.1f, dummy_func, "llResetLandPassList", NULL, NULL);
  386. addFunction(10.f, 0.f, dummy_func, "llGetObjectPrimCount", "i", "k");
  387. addFunction(10.f, 2.0f, dummy_func, "llGetParcelPrimOwners", "l", "v");
  388. addFunction(10.f, 0.f, dummy_func, "llGetParcelPrimCount", "i", "vii");
  389. addFunction(10.f, 0.f, dummy_func, "llGetParcelMaxPrims", "i", "vi");
  390. addFunction(10.f, 0.f, dummy_func, "llGetParcelDetails", "l", "vl");
  391. addFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il");
  392. addFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi");
  393. addFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si");
  394. addFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is");
  395. addFunction(10.f, 0.f, dummy_func, "llGetObjectDetails", "l", "kl");
  396. addFunction(10.f, 0.f, dummy_func, "llSetClickAction", NULL, "i");
  397. addFunction(10.f, 0.f, dummy_func, "llGetRegionAgentCount", "i", NULL);
  398. addFunction(10.f, 1.f, dummy_func, "llTextBox", NULL, "ksi");
  399. addFunction(10.f, 0.f, dummy_func, "llGetAgentLanguage", "s", "k");
  400. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchUV", "v", "i");
  401. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchFace", "i", "i");
  402. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchPos", "v", "i");
  403. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchNormal", "v", "i");
  404. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchBinormal", "v", "i");
  405. addFunction(10.f, 0.f, dummy_func, "llDetectedTouchST", "v", "i");
  406. addFunction(10.f, 0.f, dummy_func, "llSHA1String", "s", "s");
  407. addFunction(10.f, 0.f, dummy_func, "llGetFreeURLs", "i", NULL);
  408. addFunction(10.f, 0.f, dummy_func, "llRequestURL", "k", NULL);
  409. addFunction(10.f, 0.f, dummy_func, "llRequestSecureURL", "k", NULL);
  410. addFunction(10.f, 0.f, dummy_func, "llReleaseURL", NULL, "s");
  411. addFunction(10.f, 0.f, dummy_func, "llHTTPResponse", NULL, "kis");
  412. addFunction(10.f, 0.f, dummy_func, "llGetHTTPHeader", "s", "ks");
  413. // Prim media (see lscript_prim_media.h)
  414. addFunction(10.f, 1.0f, dummy_func, "llSetPrimMediaParams", "i", "il");
  415. addFunction(10.f, 1.0f, dummy_func, "llGetPrimMediaParams", "l", "il");
  416. addFunction(10.f, 1.0f, dummy_func, "llClearPrimMedia", "i", "i");
  417. // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only
  418. // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST.
  419. // Otherwise the bytecode numbers for each call will be wrong, and all
  420. // existing scripts will crash.
  421. }
  422. LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only)
  423. : mEnergyUse(eu), mSleepTime(st), mExecFunc(exec_func), mName(name), mReturnType(ret_type), mArgs(args), mGodOnly(god_only)
  424. {
  425. }
  426. LLScriptLibraryFunction::~LLScriptLibraryFunction()
  427. {
  428. }
  429. void LLScriptLibrary::addFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only)
  430. {
  431. LLScriptLibraryFunction func(eu, st, exec_func, name, ret_type, args, god_only);
  432. mFunctions.push_back(func);
  433. }
  434. void LLScriptLibrary::assignExec(const char *name, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &))
  435. {
  436. for (std::vector<LLScriptLibraryFunction>::iterator i = mFunctions.begin(); 
  437.  i != mFunctions.end(); ++i)
  438. {
  439. if (!strcmp(name, i->mName))
  440. {
  441. i->mExecFunc = exec_func;
  442. return;
  443. }
  444. }
  445. llerrs << "Unknown LSL function in assignExec: " << name << llendl;
  446. }
  447. void LLScriptLibData::print(std::ostream &s, BOOL b_prepend_comma)
  448. {
  449. char tmp[1024]; /*Flawfinder: ignore*/
  450. if (b_prepend_comma)
  451. {
  452.         s << ", ";
  453. }
  454. switch (mType)
  455.     {
  456. case LST_INTEGER:
  457.      s << mInteger;
  458.      break;
  459. case LST_FLOATINGPOINT:
  460.      snprintf(tmp, 1024, "%f", mFP); /* Flawfinder: ignore */
  461.      s << tmp;
  462.      break;
  463. case LST_KEY:
  464.      s << mKey;
  465.      break;
  466. case LST_STRING:
  467.      s << mString;
  468.      break;
  469. case LST_VECTOR:
  470.      snprintf(tmp, 1024, "<%f, %f, %f>", mVec.mV[VX], /* Flawfinder: ignore */
  471.       mVec.mV[VY], mVec.mV[VZ]);
  472.      s << tmp;
  473.      break;
  474. case LST_QUATERNION:
  475.      snprintf(tmp, 1024, "<%f, %f, %f, %f>", mQuat.mQ[VX], mQuat.mQ[VY], /* Flawfinder: ignore */
  476.       mQuat.mQ[VZ], mQuat.mQ[VS]);
  477.      s << tmp;
  478.      break;
  479. default:
  480.      break;
  481. }
  482. }
  483. void LLScriptLibData::print_separator(std::ostream& ostr, BOOL b_prepend_sep, char* sep)
  484. {
  485. if (b_prepend_sep)
  486. {
  487. ostr << sep;
  488. }
  489. //print(ostr, FALSE);
  490. {
  491. char tmp[1024]; /* Flawfinder: ignore */
  492. switch (mType)
  493. {
  494. case LST_INTEGER:
  495.      ostr << mInteger;
  496.      break;
  497. case LST_FLOATINGPOINT:
  498.      snprintf(tmp, 1024, "%f", mFP); /* Flawfinder: ignore */
  499.      ostr << tmp;
  500.      break;
  501. case LST_KEY:
  502.      ostr << mKey;
  503.      break;
  504. case LST_STRING:
  505.      ostr << mString;
  506.      break;
  507. case LST_VECTOR:
  508.      snprintf(tmp, 1024, "<%f, %f, %f>", mVec.mV[VX], /* Flawfinder: ignore */
  509.       mVec.mV[VY], mVec.mV[VZ]);
  510.      ostr << tmp;
  511.      break;
  512. case LST_QUATERNION:
  513.      snprintf(tmp, 1024, "<%f, %f, %f, %f>", mQuat.mQ[VX], mQuat.mQ[VY], /* Flawfinder: ignore */
  514.       mQuat.mQ[VZ], mQuat.mQ[VS]);
  515.      ostr << tmp;
  516.      break;
  517. default:
  518.      break;
  519. }
  520. }
  521. }
  522. LLScriptLibrary gScriptLibrary;