public boolean isFastMovable() {
return (hasSkillEffect(L1SkillId.HOLY_WALK)
|| hasSkillEffect(L1SkillId.MOVING_ACCELERATION)
|| hasSkillEffect(L1SkillId.WIND_WALK));
}
public boolean isBrave() {
return hasSkillEffect(L1SkillId.STATUS_BEGIN);
}
private int invisDelayCounter = 0;
public boolean isInvisDelay() {
return (invisDelayCounter > 0);
}
private Object _invisTimerMonitor = new Object();
public void addInvisDelayCounter(int counter) {
synchronized (_invisTimerMonitor) {
invisDelayCounter += counter;
}
}
private static final long DELAY_INVIS = 3000L;
public void beginInvisTimer() {
addInvisDelayCounter(1);
GeneralThreadPool.getInstance().pcSchedule(new L1PcInvisDelay(getId()),
DELAY_INVIS);
}
private long _oldMoveTimeInMillis = 0L;
private int _moveInjustice = 0;
public void checkMoveInterval() {
long nowMoveTimeInMillis = System.currentTimeMillis();
long moveInterval = nowMoveTimeInMillis - _oldMoveTimeInMillis;
int speedStage = 0;
if (hasSkillEffect(L1SkillId.STATUS_HASTE)
|| hasSkillEffect(L1SkillId.HASTE) // GP、ヘイスト
|| hasSkillEffect(L1SkillId.GREATER_HASTE)
|| getMoveSpeed() == 1) { // グレーターヘイスト、ヘイスト状態
speedStage++;
}
if (hasSkillEffect(L1SkillId.STATUS_BEGIN)
|| hasSkillEffect(L1SkillId.HOLY_WALK)
|| hasSkillEffect(L1SkillId.MOVING_ACCELERATION)
|| hasSkillEffect(L1SkillId.WIND_WALK)) {
speedStage++;
}
if (getTempCharGfx() == 3863 // ドワーフ
|| getTempCharGfx() == 1037 // ジャイアントアント
|| getTempCharGfx() == 95 // ジャイアントスパイダー
|| getTempCharGfx() == 146 // ドレッドスパイダー
|| getTempCharGfx() == 3631 // グリフォン
|| getTempCharGfx() == 3632 // コカトリス
|| getTempCharGfx() == 3888 // バフォメット
|| getTempCharGfx() == 3905 // ベレス
|| getTempCharGfx() == 4003 // ブラックナイト
|| getTempCharGfx() == 4133 // ハイラクーン
|| getTempCharGfx() == 2501) { // ジャックオーランタン
speedStage++;
}
int minMoveInterval = 0;
if (speedStage == 0) { // 加速なし
minMoveInterval = Config.MINIMUM_MOVE_INTERVAL0;
} else if (speedStage == 1) { // 1段階加速
minMoveInterval = Config.MINIMUM_MOVE_INTERVAL1;
} else if (speedStage == 2) { // 2段階加速
minMoveInterval = Config.MINIMUM_MOVE_INTERVAL2;
} else if (speedStage == 3) { // 3段階加速
minMoveInterval = Config.MINIMUM_MOVE_INTERVAL3;
}
if (minMoveInterval >= moveInterval) { // 移動要求の間隔が短すぎる
_moveInjustice++;
if (_moveInjustice >= Config.MOVE_INJUSTICE_COUNT) { // 連続で不正な移動要求間隔
_log.info("系統檢測出不正常移動速度," + getName() + "系統強制斷線。");
sendPackets(new S_Disconnect());
_moveInjustice = 0;
}
} else { // 移動要求間隔が正常
_moveInjustice = 0;
}
_oldMoveTimeInMillis = nowMoveTimeInMillis;
}
private long _oldAttackTimeInMillis = 0L;
private int _attackInjustice = 0;
public int getAttackInjustice() {
return _attackInjustice;
}
public void checkAttackInterval() {
long nowAttackTimeInMillis = System.currentTimeMillis();
long attckInterval = nowAttackTimeInMillis - _oldAttackTimeInMillis;
if (Config.MINIMUM_ATTACK_INTERVAL >= attckInterval) { // 攻撃要求の間隔が短すぎる
_attackInjustice++;
if (_attackInjustice >= Config.ATTACK_INJUSTICE_COUNT) { // 連続で不正な攻撃要求間隔
_log.info("系統檢測出不正常攻擊速度," + getName() + "系統強制斷線。");
sendPackets(new S_Disconnect());
_attackInjustice = 0;
}
} else { // 攻撃要求間隔が正常
_attackInjustice = 0;
}
_oldAttackTimeInMillis = nowAttackTimeInMillis;
}
原帖由 颓废三道 于 2008-8-12 07:45 发表
楼上.
我从来没在群里和谁吵过什么.
也不知道你所指何事.
基本上我是不看群消息的.因为群实在太多了.实在看不过来,所以都设置了来消息不提示.然后关QQ时顺便关了.
不知道你指的是什么?
欢迎光临 无限天堂 (http://down.t4coming.net/) | Powered by Discuz! X2.5 |