The first issue is that the chat command you made is broadcasting for current player's Knownlist, max 95 declared in VisibleObject.
Try this code instead.
Code:
private void broadcastFromCommander(final Player _actor) {
if (_actor.getRace() == Race.ELYOS) {
World.getInstance().doOnAllPlayers(new Visitor<Player>() {
@Override
public void visit(final Player _actore) {
if (_actore.getRace() == Race.ELYOS || _actore.isGM()) {
if (_actore.getWorldId() == _actor.getWorldId() && _actore.getRace() == _actor.getRace()) {
Player _sendere = (Player) _actor;
PacketSendUtility.broadcastPacket(_actore, new SM_MESSAGE(_sendere, message, type), true);
}
}
}
});
}
if (_actor.getRace() == Race.ASMODIANS) {
World.getInstance().doOnAllPlayers(new Visitor<Player>() {
@Override
public void visit(final Player _actora) {
if (_actora.getRace() == Race.ASMODIANS || _actora.isGM()) {
if (_actora.getWorldId() == _actor.getWorldId() && _actora.getRace() == _actor.getRace()) {
Player _sendera = (Player) _actor;
PacketSendUtility.broadcastPacket(_actora, new SM_MESSAGE(_sendera, message, type), true);
}
}
}
});
}
}
For the second problem, check SiegeService.