aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-01-24 00:03:44 +0000
committerJustin Clark-Casey (justincc)2013-01-24 00:03:44 +0000
commit55c6753b13d4c8cd69cc986db5f6e321b8e65bb7 (patch)
tree70ae7a976ba9be4e7e8d1cb98d3a6e61e4dfb7d4 /OpenSim/Region/ScriptEngine/Shared
parentAdd information on ScriptStopStrategy to [XEngine] in OpenSimDefaults.ini and... (diff)
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-55c6753b13d4c8cd69cc986db5f6e321b8e65bb7.zip
opensim-SC_OLD-55c6753b13d4c8cd69cc986db5f6e321b8e65bb7.tar.gz
opensim-SC_OLD-55c6753b13d4c8cd69cc986db5f6e321b8e65bb7.tar.bz2
opensim-SC_OLD-55c6753b13d4c8cd69cc986db5f6e321b8e65bb7.tar.xz
Merge branch 'master' into cooptermination
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs308
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs17
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs9
5 files changed, 288 insertions, 51 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 89ea4e9..63f4800 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2748,42 +2748,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2748 return src.ToLower(); 2748 return src.ToLower();
2749 } 2749 }
2750 2750
2751 public LSL_Integer llGiveMoney(string destination, int amount) 2751 public void llGiveMoney(string destination, int amount)
2752 { 2752 {
2753 m_host.AddScriptLPS(1); 2753 Util.FireAndForget(x =>
2754
2755 if (m_item.PermsGranter == UUID.Zero)
2756 return 0;
2757
2758 if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
2759 { 2754 {
2760 LSLError("No permissions to give money"); 2755 m_host.AddScriptLPS(1);
2761 return 0;
2762 }
2763 2756
2764 UUID toID = new UUID(); 2757 if (m_item.PermsGranter == UUID.Zero)
2758 return;
2765 2759
2766 if (!UUID.TryParse(destination, out toID)) 2760 if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
2767 { 2761 {
2768 LSLError("Bad key in llGiveMoney"); 2762 LSLError("No permissions to give money");
2769 return 0; 2763 return;
2770 } 2764 }
2771 2765
2772 IMoneyModule money = World.RequestModuleInterface<IMoneyModule>(); 2766 UUID toID = new UUID();
2773 2767
2774 if (money == null) 2768 if (!UUID.TryParse(destination, out toID))
2775 { 2769 {
2776 NotImplemented("llGiveMoney"); 2770 LSLError("Bad key in llGiveMoney");
2777 return 0; 2771 return;
2778 } 2772 }
2779 2773
2780 bool result = money.ObjectGiveMoney( 2774 IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
2781 m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
2782 2775
2783 if (result) 2776 if (money == null)
2784 return 1; 2777 {
2778 NotImplemented("llGiveMoney");
2779 return;
2780 }
2785 2781
2786 return 0; 2782 money.ObjectGiveMoney(
2783 m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
2784 });
2787 } 2785 }
2788 2786
2789 public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset) 2787 public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
@@ -3374,7 +3372,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3374 if (animID == UUID.Zero) 3372 if (animID == UUID.Zero)
3375 presence.Animator.RemoveAnimation(anim); 3373 presence.Animator.RemoveAnimation(anim);
3376 else 3374 else
3377 presence.Animator.RemoveAnimation(animID); 3375 presence.Animator.RemoveAnimation(animID, true);
3378 } 3376 }
3379 } 3377 }
3380 } 3378 }
@@ -4933,7 +4931,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4933 public LSL_Vector llGetCenterOfMass() 4931 public LSL_Vector llGetCenterOfMass()
4934 { 4932 {
4935 m_host.AddScriptLPS(1); 4933 m_host.AddScriptLPS(1);
4936 Vector3 center = m_host.GetGeometricCenter(); 4934 Vector3 center = m_host.GetCenterOfMass();
4937 return new LSL_Vector(center.X,center.Y,center.Z); 4935 return new LSL_Vector(center.X,center.Y,center.Z);
4938 } 4936 }
4939 4937
@@ -5803,13 +5801,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
5803 if (parcelOwned && land.LandData.OwnerID == id || 5801 if (parcelOwned && land.LandData.OwnerID == id ||
5804 parcel && land.LandData.GlobalID == id) 5802 parcel && land.LandData.GlobalID == id)
5805 { 5803 {
5806 result.Add(ssp.UUID.ToString()); 5804 result.Add(new LSL_Key(ssp.UUID.ToString()));
5807 } 5805 }
5808 } 5806 }
5809 } 5807 }
5810 else 5808 else
5811 { 5809 {
5812 result.Add(ssp.UUID.ToString()); 5810 result.Add(new LSL_Key(ssp.UUID.ToString()));
5813 } 5811 }
5814 } 5812 }
5815 // Maximum of 100 results 5813 // Maximum of 100 results
@@ -6849,7 +6847,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6849 { 6847 {
6850 m_host.AddScriptLPS(1); 6848 m_host.AddScriptLPS(1);
6851 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); 6849 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
6852 if (xmlrpcMod.IsEnabled()) 6850 if (xmlrpcMod != null && xmlrpcMod.IsEnabled())
6853 { 6851 {
6854 UUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_host.LocalId, m_item.ItemID, UUID.Zero); 6852 UUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_host.LocalId, m_item.ItemID, UUID.Zero);
6855 IXmlRpcRouter xmlRpcRouter = m_ScriptEngine.World.RequestModuleInterface<IXmlRpcRouter>(); 6853 IXmlRpcRouter xmlRpcRouter = m_ScriptEngine.World.RequestModuleInterface<IXmlRpcRouter>();
@@ -6881,6 +6879,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6881 m_host.AddScriptLPS(1); 6879 m_host.AddScriptLPS(1);
6882 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); 6880 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
6883 ScriptSleep(3000); 6881 ScriptSleep(3000);
6882 if (xmlrpcMod == null)
6883 return "";
6884 return (xmlrpcMod.SendRemoteData(m_host.LocalId, m_item.ItemID, channel, dest, idata, sdata)).ToString(); 6884 return (xmlrpcMod.SendRemoteData(m_host.LocalId, m_item.ItemID, channel, dest, idata, sdata)).ToString();
6885 } 6885 }
6886 6886
@@ -6888,7 +6888,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6888 { 6888 {
6889 m_host.AddScriptLPS(1); 6889 m_host.AddScriptLPS(1);
6890 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); 6890 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
6891 xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata); 6891 if (xmlrpcMod != null)
6892 xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata);
6892 ScriptSleep(3000); 6893 ScriptSleep(3000);
6893 } 6894 }
6894 6895
@@ -6903,7 +6904,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6903 } 6904 }
6904 6905
6905 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); 6906 IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
6906 xmlrpcMod.CloseXMLRPCChannel((UUID)channel); 6907 if (xmlrpcMod != null)
6908 xmlrpcMod.CloseXMLRPCChannel((UUID)channel);
6907 ScriptSleep(1000); 6909 ScriptSleep(1000);
6908 } 6910 }
6909 6911
@@ -10600,6 +10602,35 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10600 case ScriptBaseClass.OBJECT_PHYSICS_COST: 10602 case ScriptBaseClass.OBJECT_PHYSICS_COST:
10601 ret.Add(new LSL_Float(0)); 10603 ret.Add(new LSL_Float(0));
10602 break; 10604 break;
10605 case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
10606 ret.Add(new LSL_Float(0));
10607 break;
10608 case ScriptBaseClass.OBJECT_ROOT:
10609 SceneObjectPart p = av.ParentPart;
10610 if (p != null)
10611 {
10612 ret.Add(new LSL_String(p.ParentGroup.RootPart.UUID.ToString()));
10613 }
10614 else
10615 {
10616 ret.Add(new LSL_String(id));
10617 }
10618 break;
10619 case ScriptBaseClass.OBJECT_ATTACHED_POINT:
10620 ret.Add(new LSL_Integer(0));
10621 break;
10622 case ScriptBaseClass.OBJECT_PATHFINDING_TYPE: // Pathfinding
10623 ret.Add(new LSL_Integer(ScriptBaseClass.OPT_AVATAR));
10624 break;
10625 case ScriptBaseClass.OBJECT_PHYSICS:
10626 ret.Add(new LSL_Integer(0));
10627 break;
10628 case ScriptBaseClass.OBJECT_PHANTOM:
10629 ret.Add(new LSL_Integer(0));
10630 break;
10631 case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
10632 ret.Add(new LSL_Integer(0));
10633 break;
10603 default: 10634 default:
10604 // Invalid or unhandled constant. 10635 // Invalid or unhandled constant.
10605 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL)); 10636 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
@@ -10695,6 +10726,52 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10695 // The value returned in SL for normal prims looks like the prim count 10726 // The value returned in SL for normal prims looks like the prim count
10696 ret.Add(new LSL_Float(0)); 10727 ret.Add(new LSL_Float(0));
10697 break; 10728 break;
10729 case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
10730 ret.Add(new LSL_Float(0));
10731 break;
10732 case ScriptBaseClass.OBJECT_ROOT:
10733 ret.Add(new LSL_String(obj.ParentGroup.RootPart.UUID.ToString()));
10734 break;
10735 case ScriptBaseClass.OBJECT_ATTACHED_POINT:
10736 ret.Add(new LSL_Integer(obj.ParentGroup.AttachmentPoint));
10737 break;
10738 case ScriptBaseClass.OBJECT_PATHFINDING_TYPE:
10739 byte pcode = obj.Shape.PCode;
10740 if (obj.ParentGroup.AttachmentPoint != 0
10741 || pcode == (byte)PCode.Grass
10742 || pcode == (byte)PCode.Tree
10743 || pcode == (byte)PCode.NewTree)
10744 {
10745 ret.Add(new LSL_Integer(ScriptBaseClass.OPT_OTHER));
10746 }
10747 else
10748 {
10749 ret.Add(new LSL_Integer(ScriptBaseClass.OPT_LEGACY_LINKSET));
10750 }
10751 break;
10752 case ScriptBaseClass.OBJECT_PHYSICS:
10753 if (obj.ParentGroup.AttachmentPoint != 0)
10754 {
10755 ret.Add(new LSL_Integer(0)); // Always false if attached
10756 }
10757 else
10758 {
10759 ret.Add(new LSL_Integer(obj.ParentGroup.UsesPhysics ? 1 : 0));
10760 }
10761 break;
10762 case ScriptBaseClass.OBJECT_PHANTOM:
10763 if (obj.ParentGroup.AttachmentPoint != 0)
10764 {
10765 ret.Add(new LSL_Integer(0)); // Always false if attached
10766 }
10767 else
10768 {
10769 ret.Add(new LSL_Integer(obj.ParentGroup.IsPhantom ? 1 : 0));
10770 }
10771 break;
10772 case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
10773 ret.Add(new LSL_Integer(obj.ParentGroup.IsTemporary ? 1 : 0));
10774 break;
10698 default: 10775 default:
10699 // Invalid or unhandled constant. 10776 // Invalid or unhandled constant.
10700 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL)); 10777 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
@@ -11273,25 +11350,89 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
11273 bool checkPhysical = !((rejectTypes & ScriptBaseClass.RC_REJECT_PHYSICAL) == ScriptBaseClass.RC_REJECT_PHYSICAL); 11350 bool checkPhysical = !((rejectTypes & ScriptBaseClass.RC_REJECT_PHYSICAL) == ScriptBaseClass.RC_REJECT_PHYSICAL);
11274 11351
11275 11352
11276 if (checkTerrain) 11353 if (World.SupportsRayCastFiltered())
11277 { 11354 {
11278 ContactResult? groundContact = GroundIntersection(rayStart, rayEnd); 11355 if (dist == 0)
11279 if (groundContact != null) 11356 return list;
11280 results.Add((ContactResult)groundContact); 11357
11281 } 11358 RayFilterFlags rayfilter = RayFilterFlags.ClosestAndBackCull;
11359 if (checkTerrain)
11360 rayfilter |= RayFilterFlags.land;
11361// if (checkAgents)
11362// rayfilter |= RayFilterFlags.agent;
11363 if (checkPhysical)
11364 rayfilter |= RayFilterFlags.physical;
11365 if (checkNonPhysical)
11366 rayfilter |= RayFilterFlags.nonphysical;
11367 if (detectPhantom)
11368 rayfilter |= RayFilterFlags.LSLPhanton;
11282 11369
11283 if (checkAgents) 11370 Vector3 direction = dir * ( 1/dist);
11371
11372 if(rayfilter == 0)
11373 {
11374 list.Add(new LSL_Integer(0));
11375 return list;
11376 }
11377
11378 // get some more contacts to sort ???
11379 int physcount = 4 * count;
11380 if (physcount > 20)
11381 physcount = 20;
11382
11383 object physresults;
11384 physresults = World.RayCastFiltered(rayStart, direction, dist, physcount, rayfilter);
11385
11386 if (physresults == null)
11387 {
11388 list.Add(new LSL_Integer(-3)); // timeout error
11389 return list;
11390 }
11391
11392 results = (List<ContactResult>)physresults;
11393
11394 // for now physics doesn't detect sitted avatars so do it outside physics
11395 if (checkAgents)
11396 {
11397 ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd);
11398 foreach (ContactResult r in agentHits)
11399 results.Add(r);
11400 }
11401
11402 // TODO: Replace this with a better solution. ObjectIntersection can only
11403 // detect nonphysical phantoms. They are detected by virtue of being
11404 // nonphysical (e.g. no PhysActor) so will not conflict with detecting
11405 // physicsl phantoms as done by the physics scene
11406 // We don't want anything else but phantoms here.
11407 if (detectPhantom)
11408 {
11409 ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, false, false, true);
11410 foreach (ContactResult r in objectHits)
11411 results.Add(r);
11412 }
11413 }
11414 else
11284 { 11415 {
11285 ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd); 11416 if (checkAgents)
11286 foreach (ContactResult r in agentHits) 11417 {
11287 results.Add(r); 11418 ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd);
11419 foreach (ContactResult r in agentHits)
11420 results.Add(r);
11421 }
11422
11423 if (checkPhysical || checkNonPhysical || detectPhantom)
11424 {
11425 ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, checkPhysical, checkNonPhysical, detectPhantom);
11426 foreach (ContactResult r in objectHits)
11427 results.Add(r);
11428 }
11288 } 11429 }
11289 11430
11290 if (checkPhysical || checkNonPhysical || detectPhantom) 11431 if (checkTerrain)
11291 { 11432 {
11292 ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, checkPhysical, checkNonPhysical, detectPhantom); 11433 ContactResult? groundContact = GroundIntersection(rayStart, rayEnd);
11293 foreach (ContactResult r in objectHits) 11434 if (groundContact != null)
11294 results.Add(r); 11435 results.Add((ContactResult)groundContact);
11295 } 11436 }
11296 11437
11297 results.Sort(delegate(ContactResult a, ContactResult b) 11438 results.Sort(delegate(ContactResult a, ContactResult b)
@@ -11489,6 +11630,79 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
11489 NotImplemented("llGodLikeRezObject"); 11630 NotImplemented("llGodLikeRezObject");
11490 } 11631 }
11491 11632
11633 public LSL_String llTransferLindenDollars(string destination, int amount)
11634 {
11635 UUID txn = UUID.Random();
11636
11637 Util.FireAndForget(delegate(object x)
11638 {
11639 int replycode = 0;
11640 string replydata = destination + "," + amount.ToString();
11641
11642 try
11643 {
11644 TaskInventoryItem item = m_item;
11645 if (item == null)
11646 {
11647 replydata = "SERVICE_ERROR";
11648 return;
11649 }
11650
11651 m_host.AddScriptLPS(1);
11652
11653 if (item.PermsGranter == UUID.Zero)
11654 {
11655 replydata = "MISSING_PERMISSION_DEBIT";
11656 return;
11657 }
11658
11659 if ((item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
11660 {
11661 replydata = "MISSING_PERMISSION_DEBIT";
11662 return;
11663 }
11664
11665 UUID toID = new UUID();
11666
11667 if (!UUID.TryParse(destination, out toID))
11668 {
11669 replydata = "INVALID_AGENT";
11670 return;
11671 }
11672
11673 IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
11674
11675 if (money == null)
11676 {
11677 replydata = "TRANSFERS_DISABLED";
11678 return;
11679 }
11680
11681 bool result = money.ObjectGiveMoney(
11682 m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
11683
11684 if (result)
11685 {
11686 replycode = 1;
11687 return;
11688 }
11689
11690 replydata = "LINDENDOLLAR_INSUFFICIENTFUNDS";
11691 }
11692 finally
11693 {
11694 m_ScriptEngine.PostScriptEvent(m_item.ItemID, new EventParams(
11695 "transaction_result", new Object[] {
11696 new LSL_String(txn.ToString()),
11697 new LSL_Integer(replycode),
11698 new LSL_String(replydata) },
11699 new DetectParams[0]));
11700 }
11701 });
11702
11703 return txn.ToString();
11704 }
11705
11492 #endregion 11706 #endregion
11493 } 11707 }
11494 11708
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index f2f8fd6..1426070 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -986,7 +986,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
986 if (animID == UUID.Zero) 986 if (animID == UUID.Zero)
987 target.Animator.RemoveAnimation(animation); 987 target.Animator.RemoveAnimation(animation);
988 else 988 else
989 target.Animator.RemoveAnimation(animID); 989 target.Animator.RemoveAnimation(animID, true);
990 } 990 }
991 } 991 }
992 } 992 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
index 98f8be7..4ac179a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
@@ -207,7 +207,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
207 LSL_Float llGetWallclock(); 207 LSL_Float llGetWallclock();
208 void llGiveInventory(string destination, string inventory); 208 void llGiveInventory(string destination, string inventory);
209 void llGiveInventoryList(string destination, string category, LSL_List inventory); 209 void llGiveInventoryList(string destination, string category, LSL_List inventory);
210 LSL_Integer llGiveMoney(string destination, int amount); 210 void llGiveMoney(string destination, int amount);
211 LSL_String llTransferLindenDollars(string destination, int amount);
211 void llGodLikeRezObject(string inventory, LSL_Vector pos); 212 void llGodLikeRezObject(string inventory, LSL_Vector pos);
212 LSL_Float llGround(LSL_Vector offset); 213 LSL_Float llGround(LSL_Vector offset);
213 LSL_Vector llGroundContour(LSL_Vector offset); 214 LSL_Vector llGroundContour(LSL_Vector offset);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 880841b..9bf1a64 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -556,6 +556,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
556 public const int OBJECT_SERVER_COST = 14; 556 public const int OBJECT_SERVER_COST = 14;
557 public const int OBJECT_STREAMING_COST = 15; 557 public const int OBJECT_STREAMING_COST = 15;
558 public const int OBJECT_PHYSICS_COST = 16; 558 public const int OBJECT_PHYSICS_COST = 16;
559 public const int OBJECT_CHARACTER_TIME = 17;
560 public const int OBJECT_ROOT = 18;
561 public const int OBJECT_ATTACHED_POINT = 19;
562 public const int OBJECT_PATHFINDING_TYPE = 20;
563 public const int OBJECT_PHYSICS = 21;
564 public const int OBJECT_PHANTOM = 22;
565 public const int OBJECT_TEMP_ON_REZ = 23;
566
567 // Pathfinding types
568 public const int OPT_OTHER = -1;
569 public const int OPT_LEGACY_LINKSET = 0;
570 public const int OPT_AVATAR = 1;
571 public const int OPT_CHARACTER = 2;
572 public const int OPT_WALKABLE = 3;
573 public const int OPT_STATIC_OBSTACLE = 4;
574 public const int OPT_MATERIAL_VOLUME = 5;
575 public const int OPT_EXCLUSION_VOLUME = 6;
559 576
560 // for llGetAgentList 577 // for llGetAgentList
561 public const int AGENT_LIST_PARCEL = 1; 578 public const int AGENT_LIST_PARCEL = 1;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
index 36803a4..c7a7cf6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
@@ -869,9 +869,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
869 m_LSL_Functions.llGiveInventoryList(destination, category, inventory); 869 m_LSL_Functions.llGiveInventoryList(destination, category, inventory);
870 } 870 }
871 871
872 public LSL_Integer llGiveMoney(string destination, int amount) 872 public void llGiveMoney(string destination, int amount)
873 { 873 {
874 return m_LSL_Functions.llGiveMoney(destination, amount); 874 m_LSL_Functions.llGiveMoney(destination, amount);
875 }
876
877 public LSL_String llTransferLindenDollars(string destination, int amount)
878 {
879 return m_LSL_Functions.llTransferLindenDollars(destination, amount);
875 } 880 }
876 881
877 public void llGodLikeRezObject(string inventory, LSL_Vector pos) 882 public void llGodLikeRezObject(string inventory, LSL_Vector pos)