1. 好的,首先進入 src/net/sf/odinms/server/AutobanManager.java (所有服務器都有這個)
這是一個基本的 AutobanManager.java 的樣子:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
2. 尋找
3. 保存並關閉。
4. 編譯,並擁有一個無 Autoban 的服務器!
轉自ragezone 論壇
這是一個基本的 AutobanManager.java 的樣子:
Java:
package net.sf.odinms.server;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.tools.MaplePacketCreator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AutobanManager implements Runnable {
private static class ExpirationEntry implements Comparable<ExpirationEntry> {
public long time;
public int acc, points;
public ExpirationEntry(long time, int acc, int points) {
this.time = time;
this.acc = acc;
this.points = points;
}
public int compareTo(AutobanManager.ExpirationEntry o) {
return (int) (time - o.time);
}
}
private Map<Integer, Integer> points = new HashMap<Integer, Integer>();
private Map<Integer, List<String>> reasons = new HashMap<Integer, List<String>>();
private Set<ExpirationEntry> expirations = new TreeSet<ExpirationEntry>();
private static final int AUTOBAN_POINTS = 300000;
private static AutobanManager instance = null;
private static Logger log = LoggerFactory.getLogger(AutobanManager.class);
public static AutobanManager getInstance() {
if (instance == null) {
instance = new AutobanManager();
}
return instance;
}
public void autoban(MapleClient c, String reason) {
if (c.getPlayer().gmLevel() >= 1) {
}
addPoints(c, AUTOBAN_POINTS, 0, reason);
}
public synchronized void addPoints(MapleClient c, int points, long expiration, String reason) {
// if (c.getPlayer().isGM()) return;
int acc = c.getPlayer().getAccountID();
List<String> reasonList;
if (this.points.containsKey(acc)) {
if (this.points.get(acc) >= AUTOBAN_POINTS) {
return;
}
this.points.put(acc, this.points.get(acc) + points);
reasonList = this.reasons.get(acc);
reasonList.add(reason);
} else {
this.points.put(acc, points);
reasonList = new LinkedList<String>();
reasonList.add(reason);
this.reasons.put(acc, reasonList);
}
if (this.points.get(acc) >= AUTOBAN_POINTS) {
String name = c.getPlayer().getName();
StringBuilder banReason = new StringBuilder("Autoban for char ");
banReason.append(name);
banReason.append(" (IP ");
banReason.append(c.getSession().getRemoteAddress().toString());
banReason.append("): ");
for (String s : reasons.get(acc)) {
banReason.append(s);
banReason.append(", ");
}
if (c.getPlayer().gmLevel() >= 1) {
} else {
c.getPlayer().ban(banReason.toString());
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null,
MaplePacketCreator.serverNotice(0, "[Autoban] " + name + " banned by the system (Last reason: " + reason + ")").getBytes());
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
log.warn("[h4x] Autobanned player {} (accountid {})", name, acc);
}
return;
}
if (expiration > 0) {
expirations.add(new ExpirationEntry(System.currentTimeMillis() + expiration, acc, points));
}
}
public void run() {
long now = System.currentTimeMillis();
for (ExpirationEntry e : expirations) {
if (e.time <= now) {
this.points.put(e.acc, this.points.get(e.acc) - e.points);
} else {
return;
}
}
}
}
2. 尋找
Java:
[/B]
try {
c.getChannelServer().getWorldInterface().broadcastMessage(null,
MaplePacketCreator.serverNotice(0, "[Autoban] " + name + " 被系統禁止 (Last reason: " + reason + ")").getBytes( ));
} catch (RemoteException e) {
c.getChannelServer().reconnectWorld();
}
log.warn("[h4x] Autobanned player {} (accountid {})", name, acc);
用這個替換它:
// try {
// c.getChannelServer().getWorldInterface().broadcastMessage(null,
// MaplePacketCreator.serverNotice(0, "[Autoban] " + name + " 被系統禁止 (Last reason: " + reason + " )").getBytes());
// } catch (RemoteException e) {
// c.getChannelServer().reconnectWorld();
// }
// log.warn("[h4x] Autobanned player {} (accountid {})", name, acc);
3. 保存並關閉。
4. 編譯,並擁有一個無 Autoban 的服務器!
轉自ragezone 論壇
由版主最後編輯: