#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
5df497787a
7510 changed files with 416048 additions and 0 deletions
155
Scripts/Commands/VisibilityList.cs
Normal file
155
Scripts/Commands/VisibilityList.cs
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Targeting;
|
||||
using Server.Network;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Commands
|
||||
{
|
||||
public class VisibilityList
|
||||
{
|
||||
public static void Initialize()
|
||||
{
|
||||
EventSink.Login += new LoginEventHandler( OnLogin );
|
||||
|
||||
CommandSystem.Register( "Vis", AccessLevel.Counselor, new CommandEventHandler( Vis_OnCommand ) );
|
||||
CommandSystem.Register( "VisList", AccessLevel.Counselor, new CommandEventHandler( VisList_OnCommand ) );
|
||||
CommandSystem.Register( "VisClear", AccessLevel.Counselor, new CommandEventHandler( VisClear_OnCommand ) );
|
||||
}
|
||||
|
||||
public static void OnLogin( LoginEventArgs e )
|
||||
{
|
||||
if ( e.Mobile is PlayerMobile )
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)e.Mobile;
|
||||
|
||||
pm.VisibilityList.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
[Usage( "Vis" )]
|
||||
[Description( "Adds or removes a targeted player from your visibility list. Anyone on your visibility list will be able to see you at all times, even when you're hidden." )]
|
||||
public static void Vis_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
if ( e.Mobile is PlayerMobile )
|
||||
{
|
||||
e.Mobile.Target = new VisTarget();
|
||||
e.Mobile.SendMessage( "Select person to add or remove from your visibility list." );
|
||||
}
|
||||
}
|
||||
|
||||
[Usage( "VisList" )]
|
||||
[Description( "Shows the names of everyone in your visibility list." )]
|
||||
public static void VisList_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
if ( e.Mobile is PlayerMobile )
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)e.Mobile;
|
||||
List<Mobile> list = pm.VisibilityList;
|
||||
|
||||
if ( list.Count > 0 )
|
||||
{
|
||||
pm.SendMessage( "You are visible to {0} mobile{1}:", list.Count, list.Count == 1 ? "" : "s" );
|
||||
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
pm.SendMessage( "#{0}: {1}", i+1, list[i].Name );
|
||||
}
|
||||
else
|
||||
{
|
||||
pm.SendMessage( "Your visibility list is empty." );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Usage( "VisClear" )]
|
||||
[Description( "Removes everyone from your visibility list." )]
|
||||
public static void VisClear_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
if ( e.Mobile is PlayerMobile )
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)e.Mobile;
|
||||
List<Mobile> list = new List<Mobile>( pm.VisibilityList );
|
||||
|
||||
pm.VisibilityList.Clear();
|
||||
pm.SendMessage( "Your visibility list has been cleared." );
|
||||
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
{
|
||||
Mobile m = list[i];
|
||||
|
||||
if ( !m.CanSee( pm ) && Utility.InUpdateRange( m, pm ) )
|
||||
m.Send( pm.RemovePacket );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class VisTarget : Target
|
||||
{
|
||||
public VisTarget() : base( -1, false, TargetFlags.None )
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( from is PlayerMobile && targeted is Mobile )
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)from;
|
||||
Mobile targ = (Mobile)targeted;
|
||||
|
||||
if ( targ.AccessLevel <= from.AccessLevel )
|
||||
{
|
||||
List<Mobile> list = pm.VisibilityList;
|
||||
|
||||
if ( list.Contains( targ ) )
|
||||
{
|
||||
list.Remove( targ );
|
||||
from.SendMessage( "{0} has been removed from your visibility list.", targ.Name );
|
||||
}
|
||||
else
|
||||
{
|
||||
list.Add( targ );
|
||||
from.SendMessage( "{0} has been added to your visibility list.", targ.Name );
|
||||
}
|
||||
|
||||
if ( Utility.InUpdateRange( targ, from ) )
|
||||
{
|
||||
NetState ns = targ.NetState;
|
||||
|
||||
if ( ns != null ) {
|
||||
if ( targ.CanSee( from ) )
|
||||
{
|
||||
if ( ns.StygianAbyss )
|
||||
ns.Send( new MobileIncoming( targ, from ) );
|
||||
else
|
||||
ns.Send( new MobileIncomingOld( targ, from ) );
|
||||
|
||||
if ( ObjectPropertyList.Enabled )
|
||||
{
|
||||
ns.Send( from.OPLPacket );
|
||||
|
||||
foreach ( Item item in from.Items )
|
||||
ns.Send( item.OPLPacket );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ns.Send( from.RemovePacket );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage( "They can already see you!" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage( "Add only mobiles to your visibility list." );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue