49 lines
1000 B
C#
49 lines
1000 B
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Knives.Utils;
|
|
|
|
namespace Knives.Chat3
|
|
{
|
|
public class TrackSpam
|
|
{
|
|
private static Hashtable s_Log = new Hashtable();
|
|
|
|
public static bool LogSpam( Mobile m, string type, TimeSpan limit )
|
|
{
|
|
if ( s_Log.Contains( m ) )
|
|
{
|
|
Hashtable table = (Hashtable)s_Log[m];
|
|
|
|
if ( table.Contains( type ) )
|
|
{
|
|
if ( (DateTime)table[type] > DateTime.Now-limit )
|
|
return false;
|
|
|
|
table[type] = DateTime.Now;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Hashtable table = new Hashtable();
|
|
table[type] = DateTime.Now;
|
|
s_Log[m] = table;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static TimeSpan NextAllowedIn( Mobile m, string type, TimeSpan limit )
|
|
{
|
|
if ( s_Log[m] == null )
|
|
return TimeSpan.FromSeconds( 1 );
|
|
|
|
Hashtable table = (Hashtable)s_Log[m];
|
|
|
|
if ( table[type] == null || (DateTime)table[type]+limit < DateTime.Now )
|
|
return TimeSpan.FromSeconds( 1 );
|
|
|
|
return (DateTime)table[type]+limit-DateTime.Now;
|
|
}
|
|
}
|
|
} |