private static void Player_Moved( object sender, Events.PlayerMovedEventArgs e )
{
try {
if ( ( e.OldPosition.X != e.NewPosition.X ) || ( e.OldPosition.Y != e.NewPosition.Y ) || ( e.OldPosition.Z != ( e.NewPosition.Z ) ) ) {
lock ( e.Player.MessageBlockLock ) {
if ( e.Player.WorldMap == null )
return;
if ( e.Player.WorldMap.MessageBlocks != null ) {
lock ( e.Player.WorldMap.MessageBlocks ) {
foreach ( MessageBlock mb in e.Player.WorldMap.MessageBlocks ) {
if ( e.Player.WorldMap == null )
return;
if ( mb.IsInRange( e.Player ) ) {
string M = mb.GetMessage();
if ( M == "" )
return;
if ( e.Player.LastUsedMessageBlock == null ) {
e.Player.LastUsedMessageBlock = DateTime.UtcNow;
e.Player.Message( M );
return;
}
if ( ( DateTime.UtcNow - e.Player.LastUsedMessageBlock ).TotalSeconds > 4 ) {
e.Player.Message( M );
e.Player.LastUsedMessageBlock = DateTime.UtcNow;
}
}
}
}
}
}
}
} catch ( Exception ex ) { Logger.Log( LogType.Error, "MessageBlock_Moving: " + ex ); }
}