Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
127
Scripts/SubSystem/VitaNex/Core/Commands/Say.cs
Normal file
127
Scripts/SubSystem/VitaNex/Core/Commands/Say.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
#region Header
|
||||
// _,-'/-'/
|
||||
// . __,-; ,'( '/
|
||||
// \. `-.__`-._`:_,-._ _ , . ``
|
||||
// `:-._,------' ` _,`--` -: `_ , ` ,' :
|
||||
// `---..__,,--' (C) 2023 ` -'. -'
|
||||
// # Vita-Nex [http://core.vita-nex.com] #
|
||||
// {o)xxx|===============- # -===============|xxx(o}
|
||||
// # #
|
||||
#endregion
|
||||
|
||||
#region References
|
||||
using System;
|
||||
|
||||
using Server;
|
||||
using Server.Commands;
|
||||
using Server.Commands.Generic;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
|
||||
using VitaNex.Targets;
|
||||
#endregion
|
||||
|
||||
namespace VitaNex.Commands
|
||||
{
|
||||
public class SayCommand : BaseCommand
|
||||
{
|
||||
public static void Initialize()
|
||||
{
|
||||
TargetCommands.Register(new SayCommand());
|
||||
}
|
||||
|
||||
public SayCommand()
|
||||
{
|
||||
AccessLevel = AccessLevel.GameMaster;
|
||||
Supports = CommandSupport.All;
|
||||
Commands = new[] { "Say" };
|
||||
ObjectTypes = ObjectTypes.All;
|
||||
Usage = "Say <speech>";
|
||||
Description = "Causes an object to say the given speech.";
|
||||
}
|
||||
|
||||
public override void Execute(CommandEventArgs e, object o)
|
||||
{
|
||||
HandleTarget(e.Mobile as PlayerMobile, o as IPoint3D, e.ArgString);
|
||||
}
|
||||
|
||||
public static void BeginTarget(PlayerMobile m, string speech)
|
||||
{
|
||||
if (m != null && !String.IsNullOrWhiteSpace(speech))
|
||||
{
|
||||
GenericSelectTarget<IPoint3D>.Begin(m, (user, target) => HandleTarget(m, target, speech), null);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool HandleTarget(PlayerMobile m, IPoint3D target, string speech)
|
||||
{
|
||||
if (m == null || target == null || String.IsNullOrWhiteSpace(speech))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (target is Item)
|
||||
{
|
||||
var item = (Item)target;
|
||||
|
||||
item.PublicOverheadMessage(MessageType.Regular, m.SpeechHue, false, speech);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (target is Mobile)
|
||||
{
|
||||
var mobile = (Mobile)target;
|
||||
|
||||
mobile.Say(speech);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (target is StaticTarget)
|
||||
{
|
||||
var t = (StaticTarget)target;
|
||||
|
||||
Send(m.Map, t.Location, t.ItemID, m.SpeechHue, t.Name, speech);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (target is LandTarget)
|
||||
{
|
||||
var t = (LandTarget)target;
|
||||
|
||||
Send(m.Map, t.Location, 0, m.SpeechHue, t.Name, speech);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void Send(Map map, Point3D loc, int itemID, int hue, string name, string speech)
|
||||
{
|
||||
var fx = EffectItem.Create(loc, map, EffectItem.DefaultDuration);
|
||||
|
||||
Packet p = null;
|
||||
|
||||
var eable = map.GetClientsInRange(loc, Core.GlobalMaxUpdateRange);
|
||||
|
||||
foreach (var state in eable)
|
||||
{
|
||||
if (p == null)
|
||||
{
|
||||
p = Packet.Acquire(new UnicodeMessage(fx.Serial, itemID, MessageType.Label, hue, 1, "ENU", name, speech));
|
||||
}
|
||||
|
||||
state.Send(p);
|
||||
}
|
||||
|
||||
Packet.Release(p);
|
||||
|
||||
eable.Free();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user