From 0bf18539b590d159f15a725a796dc4d75e2da7a8 Mon Sep 17 00:00:00 2001 From: Sue Cripter Date: Thu, 4 Jul 2024 00:10:29 +0200 Subject: [PATCH] Add llGetNotecardLineSync --- .../Shared/Api/Implementation/LSL_Api.cs | 26 +++++++++++++++++++ .../Shared/Api/Interface/ILSL_Api.cs | 1 + .../Shared/Api/Runtime/LSL_Constants.cs | 1 + .../Shared/Api/Runtime/LSL_Stub.cs | 6 +++++ 4 files changed, 34 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index c70588e2e6..da03211857 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -14985,6 +14985,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return tid.ToString(); } + public LSL_String llGetNotecardLineSync(string name, int line) + { + if (!UUID.TryParse(name, out UUID assetID)) + { + TaskInventoryItem item = m_host.Inventory.GetInventoryItem(name); + + if (item != null && item.Type == 7) + assetID = item.AssetID; + else + { + Error("llGetNotecardLineSync", "Can't find notecard '" + name + "'"); + + return ScriptBaseClass.NAK; + } + } + + if (NotecardCache.IsCached(assetID)) + { + return NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax); + } + else + { + return ScriptBaseClass.NAK; + } + } + public LSL_Key llGetNotecardLine(string name, int line) { if (!UUID.TryParse(name, out UUID assetID)) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 3290620c59..9061624d06 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs @@ -176,6 +176,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void llGetNextEmail(string address, string subject); LSL_Key llGetNotecardLine(string name, int line); LSL_Key llGetNumberOfNotecardLines(string name); + LSL_String llGetNotecardLineSync(string name, int line); LSL_Integer llGetNumberOfPrims(); LSL_Integer llGetNumberOfSides(); LSL_String llGetObjectDesc(); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 1ccaf85fa8..74f19eab1c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs @@ -609,6 +609,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public const string NULL_KEY = "00000000-0000-0000-0000-000000000000"; public const string EOF = "\n\n\n"; + public const string NAK = "\n\u0015\n"; public const double PI = 3.14159274f; public const double TWO_PI = 6.28318548f; public const double PI_BY_TWO = 1.57079637f; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index b34cce4f70..e84e664cf5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -758,6 +758,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_LSL_Functions.llGetNumberOfNotecardLines(name); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public LSL_String llGetNotecardLineSync(string name, int line) + { + return m_LSL_Functions.llGetNotecardLineSync(name, line); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer llGetNumberOfPrims() {