diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared')
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) |