fix: Fixes missing methods. Adds more admin gump world building (#1675)
### Summary - Fixe commands missing in helpinfo. - Adds more admin gump world building options. ### Screenshots <img src="https://github.com/modernuo/ModernUO/assets/3953314/3001aa65-4f46-4ba4-89ed-745fefdd27c3" width="50%">
This commit is contained in:
parent
cf989151f1
commit
4479555156
22 changed files with 212 additions and 201 deletions
|
|
@ -21,7 +21,7 @@ public static class DumpNetStates
|
||||||
{
|
{
|
||||||
public static void Configure()
|
public static void Configure()
|
||||||
{
|
{
|
||||||
CommandSystem.Register("DumpNetStates", AccessLevel.Administrator, DumpNetStatesCommand);
|
CommandSystem.Register("DumpNetStates", AccessLevel.Developer, DumpNetStatesCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DumpNetStatesCommand(CommandEventArgs args)
|
public static void DumpNetStatesCommand(CommandEventArgs args)
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,30 @@ namespace Server.Commands
|
||||||
{
|
{
|
||||||
public static class ExportCommand
|
public static class ExportCommand
|
||||||
{
|
{
|
||||||
private const string ExportFile = @"C:\Uo\WorldForge\items.wsc";
|
|
||||||
|
|
||||||
public static void Configure()
|
public static void Configure()
|
||||||
{
|
{
|
||||||
CommandSystem.Register("ExportWSC", AccessLevel.Administrator, Export_OnCommand);
|
CommandSystem.Register("ExportWSC", AccessLevel.Developer, Export_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("ExportWSC <file-path>")]
|
||||||
|
[Description("Exports all static items to a WSC file. This will delete all static items in the world. Please make a backup.")]
|
||||||
public static void Export_OnCommand(CommandEventArgs e)
|
public static void Export_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var w = new StreamWriter(ExportFile);
|
if (e.Arguments.Length < 1)
|
||||||
|
{
|
||||||
|
e.Mobile.SendMessage("Usage: [ExportWSC <file-path>]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var exportFilePath = e.GetString(0);
|
||||||
|
var fi = new FileInfo(exportFilePath);
|
||||||
|
fi.Directory.EnsureDirectory();
|
||||||
|
|
||||||
|
var w = new StreamWriter(exportFilePath);
|
||||||
var remove = new List<Item>();
|
var remove = new List<Item>();
|
||||||
var count = 0;
|
var count = 0;
|
||||||
|
|
||||||
e.Mobile.SendMessage($"Exporting all static items to \"{ExportFile}\"...");
|
e.Mobile.SendMessage($"Exporting all static items to \"{exportFilePath}\"...");
|
||||||
e.Mobile.SendMessage("This will delete all static items in the world. Please make a backup.");
|
e.Mobile.SendMessage("This will delete all static items in the world. Please make a backup.");
|
||||||
|
|
||||||
foreach (var item in World.Items.Values)
|
foreach (var item in World.Items.Values)
|
||||||
|
|
@ -60,7 +70,7 @@ namespace Server.Commands
|
||||||
item.Delete();
|
item.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
e.Mobile.SendMessage($"Export complete. Exported {count} statics.");
|
e.Mobile.SendMessage($"Export complete. Exported {count} statics.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ public static class GenCommands
|
||||||
CommandSystem.Register("GenCommands", AccessLevel.Developer, GenCommandsWebpage_OnCommand);
|
CommandSystem.Register("GenCommands", AccessLevel.Developer, GenCommandsWebpage_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Usage("GenCommands [<command>]")]
|
[Usage("GenCommands")]
|
||||||
[Aliases("GenCmdWeb")]
|
[Aliases("GenCmdWeb")]
|
||||||
[Description("Generates a webpage to the web folder with a list of all commands.")]
|
[Description("Generates a webpage to the web folder with a list of all commands.")]
|
||||||
private static void GenCommandsWebpage_OnCommand(CommandEventArgs e)
|
private static void GenCommandsWebpage_OnCommand(CommandEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
using Server.Commands.Generic;
|
using Server.Commands.Generic;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
@ -87,36 +88,23 @@ public static class HelpInfo
|
||||||
|
|
||||||
var mi = e.Handler.Method;
|
var mi = e.Handler.Method;
|
||||||
|
|
||||||
var attrs = mi.GetCustomAttributes(typeof(UsageAttribute), false);
|
var usageAttr = mi.GetCustomAttribute(typeof(UsageAttribute), false) as UsageAttribute;
|
||||||
|
var usage = usageAttr?.Usage;
|
||||||
|
|
||||||
if (attrs.Length == 0)
|
var descAttr = mi.GetCustomAttribute(typeof(DescriptionAttribute), false) as DescriptionAttribute;
|
||||||
{
|
var desc = descAttr?.Description
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var usage = attrs[0] as UsageAttribute;
|
|
||||||
|
|
||||||
attrs = mi.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
|
||||||
|
|
||||||
if (attrs.Length == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usage == null || attrs[0] is not DescriptionAttribute desc)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
attrs = mi.GetCustomAttributes(typeof(AliasesAttribute), false);
|
|
||||||
|
|
||||||
var aliases = attrs.Length == 0 ? null : attrs[0] as AliasesAttribute;
|
|
||||||
|
|
||||||
var descString = desc.Description
|
|
||||||
.ReplaceOrdinal("<", "(")
|
.ReplaceOrdinal("<", "(")
|
||||||
.ReplaceOrdinal(">", ")");
|
.ReplaceOrdinal(">", ")");
|
||||||
|
|
||||||
list.Add(new CommandInfo(e.AccessLevel, e.Command, aliases?.Aliases, usage.Usage, null, descString));
|
if (e.Handler.Target == null && usage == null && desc == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var aliasesAttr = mi.GetCustomAttribute(typeof(AliasesAttribute), false) as AliasesAttribute;
|
||||||
|
var aliases = aliasesAttr?.Aliases;
|
||||||
|
|
||||||
|
list.Add(new CommandInfo(e.AccessLevel, e.Command, aliases, usage, null, desc));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < TargetCommands.AllCommands.Count; ++i)
|
for (var i = 0; i < TargetCommands.AllCommands.Count; ++i)
|
||||||
|
|
@ -165,16 +153,11 @@ public static class HelpInfo
|
||||||
{
|
{
|
||||||
var command = commandImpls[i];
|
var command = commandImpls[i];
|
||||||
|
|
||||||
var usage = command.Usage;
|
|
||||||
var desc = command.Description;
|
|
||||||
|
|
||||||
if (usage == null || desc == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var cmds = command.Accessors;
|
var cmds = command.Accessors;
|
||||||
var cmd = cmds[0];
|
var cmd = cmds[0];
|
||||||
|
|
||||||
|
var desc = command.Description ?? "No description available.";
|
||||||
|
var usage = command.Usage ?? cmd;
|
||||||
var aliases = new string[cmds.Length - 1];
|
var aliases = new string[cmds.Length - 1];
|
||||||
|
|
||||||
for (var j = 0; j < aliases.Length; ++j)
|
for (var j = 0; j < aliases.Length; ++j)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ namespace Server.Commands
|
||||||
}
|
}
|
||||||
|
|
||||||
[Usage("DecorateMag")]
|
[Usage("DecorateMag")]
|
||||||
[Description("Generates world decoration.")]
|
[Description("Generates world decoration for Magincia after it was ruined.")]
|
||||||
private static void DecorateMag_OnCommand(CommandEventArgs e)
|
private static void DecorateMag_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
m_Mobile = e.Mobile;
|
m_Mobile = e.Mobile;
|
||||||
|
|
|
||||||
|
|
@ -1239,6 +1239,9 @@ namespace Server.Engines.ConPVP
|
||||||
CommandSystem.Register("vli", AccessLevel.GameMaster, vli_oc);
|
CommandSystem.Register("vli", AccessLevel.GameMaster, vli_oc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("vli")]
|
||||||
|
[Aliases("ViewLadderInfo")]
|
||||||
|
[Description("View ladder information.")]
|
||||||
private static void vli_oc(CommandEventArgs e)
|
private static void vli_oc(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
e.Mobile.BeginTarget(-1, false, TargetFlags.None, vli_ot);
|
e.Mobile.BeginTarget(-1, false, TargetFlags.None, vli_ot);
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ namespace Server.Engines.Doom
|
||||||
CommandSystem.Register("RemGauntlet", AccessLevel.Developer, RemoveGauntlet);
|
CommandSystem.Register("RemGauntlet", AccessLevel.Developer, RemoveGauntlet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("RemGauntlet")]
|
||||||
|
[Description("Removes the Gauntlet from Dungeon Doom.")]
|
||||||
public static void RemoveGauntlet(CommandEventArgs e)
|
public static void RemoveGauntlet(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
RemoveMobile<PricedHealer>(387, 400);
|
RemoveMobile<PricedHealer>(387, 400);
|
||||||
|
|
@ -45,6 +47,8 @@ namespace Server.Engines.Doom
|
||||||
RemoveItem<ConfirmationMoongate>(433, 326, 4);
|
RemoveItem<ConfirmationMoongate>(433, 326, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("GenGauntlet")]
|
||||||
|
[Description("Generates the Gauntlet in Dungeon Doom.")]
|
||||||
public static void GenGauntlet_OnCommand(CommandEventArgs e)
|
public static void GenGauntlet_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
RemoveGauntlet(e);
|
RemoveGauntlet(e);
|
||||||
|
|
|
||||||
|
|
@ -192,10 +192,11 @@ public partial class LeverPuzzleController : Item
|
||||||
|
|
||||||
public static void Configure()
|
public static void Configure()
|
||||||
{
|
{
|
||||||
CommandSystem.Register("GenLeverPuzzle", AccessLevel.Administrator, GenLampPuzzle_OnCommand);
|
CommandSystem.Register("GenLeverPuzzle", AccessLevel.Developer, GenLampPuzzle_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Usage("GenLeverPuzzle"), Description("Generates lamp room and lever puzzle in doom.")]
|
[Usage("GenLeverPuzzle")]
|
||||||
|
[Description("Generates lamp room and lever puzzle in doom.")]
|
||||||
public static void GenLampPuzzle_OnCommand(CommandEventArgs e)
|
public static void GenLampPuzzle_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
foreach (var item in Map.Malas.GetItemsAt(lp_Center))
|
foreach (var item in Map.Malas.GetItemsAt(lp_Center))
|
||||||
|
|
|
||||||
|
|
@ -657,6 +657,8 @@ namespace Server.Factions
|
||||||
Timer.DelayCall(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), ProcessTick);
|
Timer.DelayCall(TimeSpan.FromSeconds(30.0), TimeSpan.FromSeconds(30.0), ProcessTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("FactionTownReset")]
|
||||||
|
[Description("Resets all faction town data in the world.")]
|
||||||
public static void FactionTownReset_OnCommand(CommandEventArgs e)
|
public static void FactionTownReset_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var monoliths = BaseMonolith.Monoliths;
|
var monoliths = BaseMonolith.Monoliths;
|
||||||
|
|
@ -715,6 +717,8 @@ namespace Server.Factions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("FactionReset")]
|
||||||
|
[Description("Resets all faction data in the world.")]
|
||||||
public static void FactionReset_OnCommand(CommandEventArgs e)
|
public static void FactionReset_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var monoliths = BaseMonolith.Monoliths;
|
var monoliths = BaseMonolith.Monoliths;
|
||||||
|
|
@ -787,6 +791,8 @@ namespace Server.Factions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("FactionItemReset")]
|
||||||
|
[Description("Resets all faction items in the world.")]
|
||||||
public static void FactionItemReset_OnCommand(CommandEventArgs e)
|
public static void FactionItemReset_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var items = new List<Item>();
|
var items = new List<Item>();
|
||||||
|
|
@ -869,6 +875,8 @@ namespace Server.Factions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("FactionElection")]
|
||||||
|
[Description("Opens the election properties for the targeted faction stone.")]
|
||||||
public static void FactionElection_OnCommand(CommandEventArgs e)
|
public static void FactionElection_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
e.Mobile.SendMessage("Target a faction stone to open its election properties.");
|
e.Mobile.SendMessage("Target a faction stone to open its election properties.");
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ namespace Server.Factions
|
||||||
CommandSystem.Register("GenerateFactions", AccessLevel.Developer, GenerateFactions_OnCommand);
|
CommandSystem.Register("GenerateFactions", AccessLevel.Developer, GenerateFactions_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("GenerateFactions")]
|
||||||
|
[Aliases("FactionGen", "GenFactions")]
|
||||||
|
[Description("Enables and generates factions.")]
|
||||||
public static void GenerateFactions_OnCommand(CommandEventArgs e)
|
public static void GenerateFactions_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var from = e.Mobile;
|
var from = e.Mobile;
|
||||||
|
|
|
||||||
|
|
@ -544,6 +544,8 @@ namespace Server.Factions
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("GrantTownSilver <amount>")]
|
||||||
|
[Description("Grants silver to the town of the current region.")]
|
||||||
public static void GrantTownSilver_OnCommand(CommandEventArgs e)
|
public static void GrantTownSilver_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var town = FromRegion(e.Mobile.Region);
|
var town = FromRegion(e.Mobile.Region);
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,8 @@ namespace Server.Commands
|
||||||
m_Count++;
|
m_Count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("GenKhaldun")]
|
||||||
|
[Description("Generates Khaldun Puzzles")]
|
||||||
public static void GenKhaldun_OnCommand(CommandEventArgs e)
|
public static void GenKhaldun_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
m_Count = 0;
|
m_Count = 0;
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,8 @@ namespace Server.Engines.PartySystem
|
||||||
CommandSystem.Register("ListenToParty", AccessLevel.GameMaster, ListenToParty_OnCommand);
|
CommandSystem.Register("ListenToParty", AccessLevel.GameMaster, ListenToParty_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("ListenToParty")]
|
||||||
|
[Description("Listen to the targeted player's party chat.")]
|
||||||
public static void ListenToParty_OnCommand(CommandEventArgs e)
|
public static void ListenToParty_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
e.Mobile.BeginTarget(-1, false, TargetFlags.None, ListenToParty_OnTarget);
|
e.Mobile.BeginTarget(-1, false, TargetFlags.None, ListenToParty_OnTarget);
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,8 @@ namespace Server
|
||||||
CommandSystem.Register("Path", AccessLevel.GameMaster, Path_OnCommand);
|
CommandSystem.Register("Path", AccessLevel.GameMaster, Path_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("Path")]
|
||||||
|
[Description("Draws a path from your current location to a targeted location.")]
|
||||||
public static void Path_OnCommand(CommandEventArgs e)
|
public static void Path_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
e.Mobile.BeginTarget(-1, true, TargetFlags.None, Path_OnTarget);
|
e.Mobile.BeginTarget(-1, true, TargetFlags.None, Path_OnTarget);
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@ namespace Server.Engines.Spawners
|
||||||
CommandSystem.Register("ConvertPremiumSpawners", AccessLevel.Developer, ConvertPremiumSpawners_OnCommand);
|
CommandSystem.Register("ConvertPremiumSpawners", AccessLevel.Developer, ConvertPremiumSpawners_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("ConvertPremiumSpawners <relative search pattern to distribution> <output directory relative to distribution>")]
|
||||||
|
[Description("Converts Nerun's Premium Spawners to JSON.")]
|
||||||
private static void ConvertPremiumSpawners_OnCommand(CommandEventArgs args)
|
private static void ConvertPremiumSpawners_OnCommand(CommandEventArgs args)
|
||||||
{
|
{
|
||||||
var from = args.Mobile;
|
var from = args.Mobile;
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,3 @@
|
||||||
/*************************************************************************
|
|
||||||
* ModernUO *
|
|
||||||
* Copyright 2019-2023 - ModernUO Development Team *
|
|
||||||
* Email: hi@modernuo.com *
|
|
||||||
* File: GenerateSpawnersCommand.cs *
|
|
||||||
* *
|
|
||||||
* This program is free software: you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
||||||
*************************************************************************/
|
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
@ -37,6 +22,9 @@ namespace Server.Engines.Spawners
|
||||||
CommandSystem.Register("GenerateSpawners", AccessLevel.Developer, GenerateSpawners_OnCommand);
|
CommandSystem.Register("GenerateSpawners", AccessLevel.Developer, GenerateSpawners_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("GenerateSpawners <relative search pattern to distribution>")]
|
||||||
|
[Aliases("ImportSpawners", "GenSpawners", "GenSpawns")]
|
||||||
|
[Description("Generates spawners from JSON files. Supports basic globbing.")]
|
||||||
private static void GenerateSpawners_OnCommand(CommandEventArgs e)
|
private static void GenerateSpawners_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
var from = e.Mobile;
|
var from = e.Mobile;
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,12 @@ public class SpawnerControllerGump : GumpGrid
|
||||||
|
|
||||||
public static void Configure()
|
public static void Configure()
|
||||||
{
|
{
|
||||||
CommandSystem.Register("Spawn", AccessLevel.GameMaster, OpenSpawnGump_OnCommand);
|
CommandSystem.Register("SpawnAdmin", AccessLevel.GameMaster, OpenSpawnGump_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("Spawn")]
|
||||||
|
[Aliases("Spawn")]
|
||||||
|
[Description("Opens the spawn administration gump.")]
|
||||||
public static void OpenSpawnGump_OnCommand(CommandEventArgs e)
|
public static void OpenSpawnGump_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
e.Mobile.SendGump(new SpawnerControllerGump(e.Mobile));
|
e.Mobile.SendGump(new SpawnerControllerGump(e.Mobile));
|
||||||
|
|
|
||||||
|
|
@ -264,12 +264,23 @@ namespace Server.Gumps
|
||||||
AddButtonLabeled(20, 175, GetButtonID(3, 101), "Teleporters");
|
AddButtonLabeled(20, 175, GetButtonID(3, 101), "Teleporters");
|
||||||
AddButtonLabeled(220, 175, GetButtonID(3, 102), "Moongates");
|
AddButtonLabeled(220, 175, GetButtonID(3, 102), "Moongates");
|
||||||
|
|
||||||
AddButtonLabeled(20, 200, GetButtonID(3, 103), "Generate Spawns");
|
AddButtonLabeled(20, 200, GetButtonID(3, 103), "Spawners");
|
||||||
AddButtonLabeled(220, 200, GetButtonID(3, 106), "Decoration");
|
AddButtonLabeled(220, 200, GetButtonID(3, 106), "Decorations");
|
||||||
|
|
||||||
AddButtonLabeled(20, 225, GetButtonID(3, 104), "Doors");
|
AddButtonLabeled(20, 225, GetButtonID(3, 104), "Doors");
|
||||||
AddButtonLabeled(220, 225, GetButtonID(3, 105), "Signs");
|
AddButtonLabeled(220, 225, GetButtonID(3, 105), "Signs");
|
||||||
|
|
||||||
|
AddButtonLabeled(20, 250, GetButtonID(3, 107), "Champions");
|
||||||
|
AddButtonLabeled(220, 250, GetButtonID(3, 108), "Magincia (AOS+)");
|
||||||
|
|
||||||
|
AddButtonLabeled(20, 275, GetButtonID(3, 109), "Stealable Artifacts");
|
||||||
|
AddButtonLabeled(220, 275, GetButtonID(3, 110), "SH Teleporters");
|
||||||
|
|
||||||
|
AddButtonLabeled(20, 300, GetButtonID(3, 111), "Secret Locations");
|
||||||
|
AddButtonLabeled(220, 300, GetButtonID(3, 112), "Doom");
|
||||||
|
|
||||||
|
AddButtonLabeled(20, 325, GetButtonID(3, 113), "Khaldun Puzzles");
|
||||||
|
|
||||||
goto case AdminGumpPage.Administer;
|
goto case AdminGumpPage.Administer;
|
||||||
}
|
}
|
||||||
case AdminGumpPage.Administer_Server:
|
case AdminGumpPage.Administer_Server:
|
||||||
|
|
@ -400,9 +411,6 @@ namespace Server.Gumps
|
||||||
AddButtonLabeled(20, 250, GetButtonID(3, 408), "Squelch");
|
AddButtonLabeled(20, 250, GetButtonID(3, 408), "Squelch");
|
||||||
AddButtonLabeled(220, 250, GetButtonID(3, 409), "Unsquelch");
|
AddButtonLabeled(220, 250, GetButtonID(3, 409), "Unsquelch");
|
||||||
|
|
||||||
AddButtonLabeled(20, 270, GetButtonID(3, 410), "Freeze");
|
|
||||||
AddButtonLabeled(220, 270, GetButtonID(3, 411), "Unfreeze");
|
|
||||||
|
|
||||||
AddButtonLabeled(20, 290, GetButtonID(3, 412), "Hide");
|
AddButtonLabeled(20, 290, GetButtonID(3, 412), "Hide");
|
||||||
AddButtonLabeled(220, 290, GetButtonID(3, 413), "Unhide");
|
AddButtonLabeled(220, 290, GetButtonID(3, 413), "Unhide");
|
||||||
|
|
||||||
|
|
@ -2135,20 +2143,50 @@ namespace Server.Gumps
|
||||||
case 106:
|
case 106:
|
||||||
{
|
{
|
||||||
InvokeCommand("Decorate");
|
InvokeCommand("Decorate");
|
||||||
notice = "Decoration has been generated.";
|
notice = "Decorations have been generated.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 107:
|
||||||
|
{
|
||||||
|
InvokeCommand("GenChamps");
|
||||||
|
notice = "Champions have been generated.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 108:
|
||||||
|
{
|
||||||
|
InvokeCommand("DecorateMag");
|
||||||
|
notice = "Magincia Ruins decorations have been generated.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 109:
|
||||||
|
{
|
||||||
|
InvokeCommand("GenStealArties");
|
||||||
|
notice = "Stealable Artifacts have been generated.";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 110:
|
case 110:
|
||||||
{
|
{
|
||||||
InvokeCommand("Freeze");
|
InvokeCommand("SHTelGen");
|
||||||
notice = "Target bounding points.";
|
notice = "Solen Hive teleporters have been generated.";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 120:
|
case 111:
|
||||||
{
|
{
|
||||||
InvokeCommand("Unfreeze");
|
InvokeCommand("SecretLocGen");
|
||||||
notice = "Target bounding points.";
|
notice = "Secret Locations have been generated.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 112:
|
||||||
|
{
|
||||||
|
InvokeCommand("GenLeverPuzzle");
|
||||||
|
InvokeCommand("GenGauntlet");
|
||||||
|
notice = "Doom has been generated.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 113:
|
||||||
|
{
|
||||||
|
InvokeCommand("GenKhaldun");
|
||||||
|
notice = "Khaldun puzzles have been generated.";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2489,26 +2527,6 @@ namespace Server.Gumps
|
||||||
InvokeCommand("Add");
|
InvokeCommand("Add");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 111:
|
|
||||||
{
|
|
||||||
InvokeCommand("FreezeWorld");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 112:
|
|
||||||
{
|
|
||||||
InvokeCommand("FreezeMap");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 121:
|
|
||||||
{
|
|
||||||
InvokeCommand("UnfreezeWorld");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 122:
|
|
||||||
{
|
|
||||||
InvokeCommand("UnfreezeMap");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -171,19 +171,8 @@ namespace Server.Items
|
||||||
[Usage("SHTelGen"), Description("Generates solen hives teleporters.")]
|
[Usage("SHTelGen"), Description("Generates solen hives teleporters.")]
|
||||||
public static void SHTelGen_OnCommand(CommandEventArgs e)
|
public static void SHTelGen_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
World.Broadcast(0x35, true, "Solen hives teleporters are being generated, please wait.");
|
CreateSHTeleporters();
|
||||||
|
e.Mobile.SendMessage("Solen Hive teleporters have been created.");
|
||||||
var startTime = Core.Now;
|
|
||||||
|
|
||||||
var count = new SHTeleporterCreator().CreateSHTeleporters();
|
|
||||||
|
|
||||||
var endTime = Core.Now;
|
|
||||||
|
|
||||||
World.Broadcast(
|
|
||||||
0x35,
|
|
||||||
true,
|
|
||||||
$"{count} solen hives teleporters have been created. The entire process took {(endTime - startTime).TotalSeconds:0.#} seconds."
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeActive(bool active)
|
public void ChangeActive(bool active)
|
||||||
|
|
@ -259,128 +248,115 @@ namespace Server.Items
|
||||||
m_Changing = false;
|
m_Changing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SHTeleporterCreator
|
public static SHTeleporter FindSHTeleporter(Map map, Point3D p)
|
||||||
{
|
{
|
||||||
private int m_Count;
|
foreach (var teleporter in map.GetItemsAt<SHTeleporter>(p))
|
||||||
|
|
||||||
public SHTeleporterCreator() => m_Count = 0;
|
|
||||||
|
|
||||||
public static SHTeleporter FindSHTeleporter(Map map, Point3D p)
|
|
||||||
{
|
{
|
||||||
foreach (var teleporter in map.GetItemsAt<SHTeleporter>(p))
|
if (teleporter.Z == p.Z)
|
||||||
{
|
{
|
||||||
if (teleporter.Z == p.Z)
|
return teleporter;
|
||||||
{
|
|
||||||
return teleporter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SHTeleporter AddSHT(Map map, bool ext, int x, int y, int z)
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SHTeleporter AddSHT(Map map, bool ext, int x, int y, int z)
|
||||||
|
{
|
||||||
|
var p = new Point3D(x, y, z);
|
||||||
|
var tele = FindSHTeleporter(map, p);
|
||||||
|
|
||||||
|
if (tele == null)
|
||||||
{
|
{
|
||||||
var p = new Point3D(x, y, z);
|
tele = new SHTeleporter(ext);
|
||||||
var tele = FindSHTeleporter(map, p);
|
tele.MoveToWorld(p, map);
|
||||||
|
|
||||||
if (tele == null)
|
|
||||||
{
|
|
||||||
tele = new SHTeleporter(ext);
|
|
||||||
tele.MoveToWorld(p, map);
|
|
||||||
|
|
||||||
m_Count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return tele;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Link(SHTeleporter tele1, SHTeleporter tele2)
|
return tele;
|
||||||
{
|
}
|
||||||
tele1.ChangeDest(tele2);
|
|
||||||
tele2.ChangeDest(tele1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddSHTCouple(Map map, bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2)
|
public static void Link(SHTeleporter tele1, SHTeleporter tele2)
|
||||||
{
|
{
|
||||||
var tele1 = AddSHT(map, ext1, x1, y1, z1);
|
tele1.ChangeDest(tele2);
|
||||||
var tele2 = AddSHT(map, ext2, x2, y2, z2);
|
tele2.ChangeDest(tele1);
|
||||||
|
}
|
||||||
|
|
||||||
Link(tele1, tele2);
|
public static void AddSHTCouple(Map map, bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2)
|
||||||
}
|
{
|
||||||
|
var tele1 = AddSHT(map, ext1, x1, y1, z1);
|
||||||
|
var tele2 = AddSHT(map, ext2, x2, y2, z2);
|
||||||
|
|
||||||
public void AddSHTCouple(bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2)
|
Link(tele1, tele2);
|
||||||
{
|
}
|
||||||
AddSHTCouple(Map.Trammel, ext1, x1, y1, z1, ext2, x2, y2, z2);
|
|
||||||
AddSHTCouple(Map.Felucca, ext1, x1, y1, z1, ext2, x2, y2, z2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int CreateSHTeleporters()
|
public static void AddSHTCouple(bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2)
|
||||||
{
|
{
|
||||||
SHTeleporter tele1, tele2;
|
AddSHTCouple(Map.Trammel, ext1, x1, y1, z1, ext2, x2, y2, z2);
|
||||||
|
AddSHTCouple(Map.Felucca, ext1, x1, y1, z1, ext2, x2, y2, z2);
|
||||||
|
}
|
||||||
|
|
||||||
AddSHTCouple(true, 2608, 763, 0, false, 5918, 1794, 0);
|
public static void CreateSHTeleporters()
|
||||||
AddSHTCouple(false, 5897, 1877, 0, false, 5871, 1867, 0);
|
{
|
||||||
AddSHTCouple(false, 5852, 1848, 0, false, 5771, 1867, 0);
|
AddSHTCouple(true, 2608, 763, 0, false, 5918, 1794, 0);
|
||||||
|
AddSHTCouple(false, 5897, 1877, 0, false, 5871, 1867, 0);
|
||||||
|
AddSHTCouple(false, 5852, 1848, 0, false, 5771, 1867, 0);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Trammel, false, 5747, 1895, 0);
|
var tele1 = AddSHT(Map.Trammel, false, 5747, 1895, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Trammel, false, 5658, 1898, 0);
|
var tele2 = AddSHT(Map.Trammel, false, 5658, 1898, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Felucca, false, 5747, 1895, 0);
|
tele1 = AddSHT(Map.Felucca, false, 5747, 1895, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Felucca, false, 5658, 1898, 0);
|
tele2 = AddSHT(Map.Felucca, false, 5658, 1898, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
AddSHTCouple(false, 5727, 1894, 0, false, 5756, 1794, 0);
|
AddSHTCouple(false, 5727, 1894, 0, false, 5756, 1794, 0);
|
||||||
AddSHTCouple(false, 5784, 1929, 0, false, 5700, 1929, 0);
|
AddSHTCouple(false, 5784, 1929, 0, false, 5700, 1929, 0);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Trammel, false, 5711, 1952, 0);
|
tele1 = AddSHT(Map.Trammel, false, 5711, 1952, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Trammel, false, 5657, 1954, 0);
|
tele2 = AddSHT(Map.Trammel, false, 5657, 1954, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Felucca, false, 5711, 1952, 0);
|
tele1 = AddSHT(Map.Felucca, false, 5711, 1952, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Felucca, false, 5657, 1954, 0);
|
tele2 = AddSHT(Map.Felucca, false, 5657, 1954, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Trammel, false, 5655, 2018, 0);
|
tele1 = AddSHT(Map.Trammel, false, 5655, 2018, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Trammel, true, 1690, 2789, 0);
|
tele2 = AddSHT(Map.Trammel, true, 1690, 2789, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Felucca, false, 5655, 2018, 0);
|
tele1 = AddSHT(Map.Felucca, false, 5655, 2018, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Felucca, true, 1690, 2789, 0);
|
tele2 = AddSHT(Map.Felucca, true, 1690, 2789, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
AddSHTCouple(false, 5809, 1905, 0, false, 5876, 1891, 0);
|
AddSHTCouple(false, 5809, 1905, 0, false, 5876, 1891, 0);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Trammel, false, 5814, 2015, 0);
|
tele1 = AddSHT(Map.Trammel, false, 5814, 2015, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Trammel, false, 5913, 1893, 0);
|
tele2 = AddSHT(Map.Trammel, false, 5913, 1893, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Felucca, false, 5814, 2015, 0);
|
tele1 = AddSHT(Map.Felucca, false, 5814, 2015, 0);
|
||||||
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
tele1.LeftTele.TeleOffset = new Point3D(-1, 3, 0);
|
||||||
tele2 = AddSHT(Map.Felucca, false, 5913, 1893, 0);
|
tele2 = AddSHT(Map.Felucca, false, 5913, 1893, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
|
|
||||||
AddSHTCouple(false, 5919, 2021, 0, true, 1724, 814, 0);
|
AddSHTCouple(false, 5919, 2021, 0, true, 1724, 814, 0);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Trammel, false, 5654, 1791, 0);
|
tele1 = AddSHT(Map.Trammel, false, 5654, 1791, 0);
|
||||||
tele2 = AddSHT(Map.Trammel, true, 730, 1451, 0);
|
tele2 = AddSHT(Map.Trammel, true, 730, 1451, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
AddSHT(Map.Trammel, false, 5734, 1859, 0).ChangeDest(tele2);
|
AddSHT(Map.Trammel, false, 5734, 1859, 0).ChangeDest(tele2);
|
||||||
|
|
||||||
tele1 = AddSHT(Map.Felucca, false, 5654, 1791, 0);
|
tele1 = AddSHT(Map.Felucca, false, 5654, 1791, 0);
|
||||||
tele2 = AddSHT(Map.Felucca, true, 730, 1451, 0);
|
tele2 = AddSHT(Map.Felucca, true, 730, 1451, 0);
|
||||||
Link(tele1, tele2);
|
Link(tele1, tele2);
|
||||||
AddSHT(Map.Felucca, false, 5734, 1859, 0).ChangeDest(tele2);
|
AddSHT(Map.Felucca, false, 5734, 1859, 0).ChangeDest(tele2);
|
||||||
|
|
||||||
return m_Count;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ public partial class WayPoint : Item
|
||||||
CommandSystem.Register("WayPointSeq", AccessLevel.GameMaster, WayPointSeq_OnCommand);
|
CommandSystem.Register("WayPointSeq", AccessLevel.GameMaster, WayPointSeq_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("WayPointSeq")]
|
||||||
|
[Description("Creates a sequence of way points.")]
|
||||||
public static void WayPointSeq_OnCommand(CommandEventArgs arg)
|
public static void WayPointSeq_OnCommand(CommandEventArgs arg)
|
||||||
{
|
{
|
||||||
arg.Mobile.SendMessage("Target the position of the first way point.");
|
arg.Mobile.SendMessage("Target the position of the first way point.");
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ namespace Server.Misc
|
||||||
CommandSystem.Register("Restart", AccessLevel.Administrator, Restart_OnCommand);
|
CommandSystem.Register("Restart", AccessLevel.Administrator, Restart_OnCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Usage("Restart")]
|
||||||
|
[Description("Initiates a server restart. The world is not saved before the restart.")]
|
||||||
public static void Restart_OnCommand(CommandEventArgs e)
|
public static void Restart_OnCommand(CommandEventArgs e)
|
||||||
{
|
{
|
||||||
if (Restarting)
|
if (Restarting)
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue