diff options
author | Mandarinka Tasty | 2016-05-30 01:25:06 +0200 |
---|---|---|
committer | Melanie Thielker | 2016-05-30 15:58:39 +0200 |
commit | 77af32cdbf939422d7f76ba6bb1de8f67c7b16e1 (patch) | |
tree | d20e97e96c225627b9cd97745b633bb5522ed84a | |
parent | Fix a line deletion that should not have been deleted (diff) | |
download | opensim-SC-77af32cdbf939422d7f76ba6bb1de8f67c7b16e1.zip opensim-SC-77af32cdbf939422d7f76ba6bb1de8f67c7b16e1.tar.gz opensim-SC-77af32cdbf939422d7f76ba6bb1de8f67c7b16e1.tar.bz2 opensim-SC-77af32cdbf939422d7f76ba6bb1de8f67c7b16e1.tar.xz |
Enhancement of osRegionRestart
Signed-off-by: Mandarinka Tasty <mandarinka.tasty@gmail.com>
Signed-off-by: Melanie Thielker <melanie@t-data.com>
3 files changed, 53 insertions, 11 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 7e88365..b215ae1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -523,23 +523,34 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
523 | { | 523 | { |
524 | if (seconds < 15) | 524 | if (seconds < 15) |
525 | { | 525 | { |
526 | restartModule.AbortRestart("Restart aborted"); | 526 | restartModule.AbortRestart("Region restart has been aborted\n"); |
527 | return 1; | 527 | return 1; |
528 | } | 528 | } |
529 | 529 | ||
530 | List<int> times = new List<int>(); | 530 | RegionRestart(seconds, String.Empty); |
531 | while (seconds > 0) | 531 | return 1; |
532 | } | ||
533 | else | ||
534 | { | ||
535 | return 0; | ||
536 | } | ||
537 | } | ||
538 | |||
539 | public int osRegionRestart(double seconds, string msg) | ||
540 | { | ||
541 | CheckThreatLevel(ThreatLevel.High, "osRegionRestart"); | ||
542 | |||
543 | IRestartModule restartModule = World.RequestModuleInterface<IRestartModule>(); | ||
544 | m_host.AddScriptLPS(1); | ||
545 | if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false) && (restartModule != null)) | ||
546 | { | ||
547 | if (seconds < 15) | ||
532 | { | 548 | { |
533 | times.Add((int)seconds); | 549 | restartModule.AbortRestart("Region restart has been aborted\n"); |
534 | if (seconds > 300) | 550 | return 1; |
535 | seconds -= 120; | ||
536 | else if (seconds > 30) | ||
537 | seconds -= 30; | ||
538 | else | ||
539 | seconds -= 15; | ||
540 | } | 551 | } |
541 | 552 | ||
542 | restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), true); | 553 | RegionRestart(seconds, msg); |
543 | return 1; | 554 | return 1; |
544 | } | 555 | } |
545 | else | 556 | else |
@@ -548,6 +559,31 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
548 | } | 559 | } |
549 | } | 560 | } |
550 | 561 | ||
562 | private void RegionRestart(double seconds, string msg) | ||
563 | { | ||
564 | IRestartModule restartModule = World.RequestModuleInterface<IRestartModule>(); | ||
565 | |||
566 | List<int> times = new List<int>(); | ||
567 | while (seconds > 0) | ||
568 | { | ||
569 | times.Add((int)seconds); | ||
570 | if (seconds > 300) | ||
571 | seconds -= 120; | ||
572 | else if (seconds > 120) | ||
573 | seconds -= 60; | ||
574 | else if (seconds > 60) | ||
575 | seconds -= 30; | ||
576 | else | ||
577 | seconds -= 15; | ||
578 | } | ||
579 | |||
580 | if (msg == String.Empty) | ||
581 | restartModule.ScheduleRestart(UUID.Zero, "Region: " + World.RegionInfo.RegionName + " is about to restart.\n\nIf You stay here You will be logged out.\n\n\nTime remained: {0}.\n", times.ToArray(), true); | ||
582 | |||
583 | else | ||
584 | restartModule.ScheduleRestart(UUID.Zero, msg + "\n\nTime remained: {0}.\n", times.ToArray(), true); | ||
585 | } | ||
586 | |||
551 | public void osRegionNotice(string msg) | 587 | public void osRegionNotice(string msg) |
552 | { | 588 | { |
553 | // This implementation provides absolutely no security | 589 | // This implementation provides absolutely no security |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 6fc5db4..e1bb139 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -135,6 +135,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
135 | void osTerrainFlush(); | 135 | void osTerrainFlush(); |
136 | 136 | ||
137 | int osRegionRestart(double seconds); | 137 | int osRegionRestart(double seconds); |
138 | int osRegionRestart(double seconds, string msg); | ||
138 | void osRegionNotice(string msg); | 139 | void osRegionNotice(string msg); |
139 | bool osConsoleCommand(string Command); | 140 | bool osConsoleCommand(string Command); |
140 | void osSetParcelMediaURL(string url); | 141 | void osSetParcelMediaURL(string url); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index ee07eee..0022020 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -209,6 +209,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
209 | return m_OSSL_Functions.osRegionRestart(seconds); | 209 | return m_OSSL_Functions.osRegionRestart(seconds); |
210 | } | 210 | } |
211 | 211 | ||
212 | public int osRegionRestart(double seconds, string msg) | ||
213 | { | ||
214 | return m_OSSL_Functions.osRegionRestart(seconds, msg); | ||
215 | } | ||
216 | |||
212 | public void osRegionNotice(string msg) | 217 | public void osRegionNotice(string msg) |
213 | { | 218 | { |
214 | m_OSSL_Functions.osRegionNotice(msg); | 219 | m_OSSL_Functions.osRegionNotice(msg); |