actually have an exploit with uosteam, the player can use to cause lag on server or crash players.

They toogle the option to share enemy on guildchat or party, and make a spam of gettarget macro, it make the system spam a phrase 100 times a second, making players crash or lag.

The same can be make with some msg spams, but with this trick is very easily noticeable

i think a way to fix i put a delay between msg, like 0.4s or something like that, or maybe you guys can have a better idea to fix it.
 
@Dexter_Lexia

Isn't the best option when a lot of players do that, and you aren't online all time since players can create accounts with proxy, and just log to lag players in busy places (luna for example)

after some research i did a fix to this to my server, isn't perfect but work nice against spammers.

This will make the spammer lag, but don't affect players nearby.

swap

Code:
    public override void DoSpeech(string text, int[] keywords, MessageType type, int hue)
     {
       if (Guilds.Guild.NewGuildSystem && (type == MessageType.Guild || type == MessageType.Alliance))
       {
         Guild g = Guild as Guild;
         if (g == null)
         {
           SendLocalizedMessage(1063142); // You are not in a guild!
         }
         else if (type == MessageType.Alliance)
         {
           if (g.Alliance != null && g.Alliance.IsMember(g))
           {
             //g.Alliance.AllianceTextMessage( hue, "[Alliance][{0}]: {1}", this.Name, text );
             g.Alliance.AllianceChat(this, text);
             SendToStaffMessage(this, "[Alliance]: {0}", text);

             m_AllianceMessageHue = hue;
           }
           else
           {
             SendLocalizedMessage(1071020); // You are not in an alliance!
           }
         }
         else //Type == MessageType.Guild
         {
           m_GuildMessageHue = hue;

           g.GuildChat(this, text);
           SendToStaffMessage(this, "[Guild]: {0}", text);
         }
       }
       else
       {
         base.DoSpeech(text, keywords, type, hue);
       }
     }

for

Code:
  private DateTime m_LastSpeech = DateTime.UtcNow;

  public override void DoSpeech(string text, int[] keywords, MessageType type, int hue)
     {
  if (DateTime.UtcNow - m_LastSpeech >= TimeSpan.FromSeconds(0.4))
  {
  if (Guilds.Guild.NewGuildSystem && (type == MessageType.Guild || type == MessageType.Alliance))
  {
  Guild g = Guild as Guild;
  if (g == null)
  {
  SendLocalizedMessage(1063142); // You are not in a guild!
  m_LastSpeech = DateTime.UtcNow;
  }
  else if (type == MessageType.Alliance)
  {
  if (g.Alliance != null && g.Alliance.IsMember(g))
  {
  //g.Alliance.AllianceTextMessage( hue, "[Alliance][{0}]: {1}", this.Name, text );
  g.Alliance.AllianceChat(this, text);
  SendToStaffMessage(this, "[Alliance]: {0}", text);

  m_AllianceMessageHue = hue;
  m_LastSpeech = DateTime.UtcNow;
  }
  else
  {
  SendLocalizedMessage(1071020); // You are not in an alliance!
  m_LastSpeech = DateTime.UtcNow;
  }
  }
  else //Type == MessageType.Guild
  {
  m_GuildMessageHue = hue;

  g.GuildChat(this, text);
  SendToStaffMessage(this, "[Guild]: {0}", text);
  m_LastSpeech = DateTime.UtcNow;
  }
  }
  else
  {
  base.DoSpeech(text, keywords, type, hue);
  m_LastSpeech = DateTime.UtcNow;
  }
  }
  else
  {
  SendLocalizedMessage(500119); // You must wait to perform another action.
  }
  }
 
I agree if this bug is real something should probably be added in the code, if possible.

If you can not force crash players on real UO using uosteam you should not be able to on here either.

I am not sure if this is the best way to go about it but simply banning or squelching is not enough. Again unless this can also be done on real UO, at that point I would say nothing could probably be done, outside of what you proposed.
 
I agree if this bug is real something should probably be added in the code, if possible.

If you can not force crash players on real UO using uosteam you should not be able to on here either.

I am not sure if this is the best way to go about it but simply banning or squelching is not enough. Again unless this can also be done on real UO, at that point I would say nothing could probably be done, outside of what you proposed.

this bug is very real and very easy to reproduce, just make a msg spam using any trick (share guild or party target, spam ascii chars in msg, and such)
on real uo you can't spam that fast, because the way osi work with packets.

my fix, just "block" players to send 10 lines in 0.1s i think 1msg every 0.4s is ok, but maybe can lower a little.
 
Back