스핵방어소스
C_KeepALIVE
전체 복사
PacketHandler.java
case C_OPCODE_DELETECHAR 검색 아래추가
case C_OPCODE_KEEPALIVE2:
System.out.print("스핵사용자: " + object.getName() + "검출!");
for (L1PcInstance pc2 : L1World.getInstance().getAllPlayers()) {
if(pc2.isGm()){
pc2.sendPackets(new S_SystemMessage("\\aG 스핵사용자: " + object.getName() + "3단계 스핵 검출됨!")); // 바로팅김
}
}
object.sendPackets(new S_Disconnect());
break;
Opcodes.java
public static final int C_OPCODE_KEEPALIVE 검색 위에추가
public static final int C_OPCODE_KEEPALIVE2 = 0;
config.java
public static int SPEEDUP_SPEEDMENT; 검색 위에 추가
public static int ALIVECOUNT; //추가
PEEDUP_SPEEDMENT = Integer.parseInt(serverSettings.getProperty("Speedment", "0")) // 검색 아래
ALIVECOUNT = Integer.parseInt(serverSettings.getProperty("alivecount", "2")); // 추가
L1PcInstance.java
private int _age; 검색아래추가
public long hacktime = 0;
private int hackcount = 0;
public int gethackcount(){
return hackcount;
}
public void sethackcount(int i){
hackcount = i;
}
C_ReturnStaus.java
int type = readC(); 검색 <<여기부터 >> 여기까지 안에복사 참고로 검색<<저기까지포함 if (type == 1) {
if (client == null){
return;
}
int type = readC();
L1PcInstance pc = client.getActiveChar();
if(!pc.StatReturnCK){
if(pc.gethackcount() >= 1 && type == 4){
System.out.print("스핵사용자: " + pc.getName() + "검출! C_ReturnStaus");
for (L1PcInstance pc2 : L1World.getInstance().getAllPlayers()) {
if(pc2.isGm()){
pc2.sendPackets(new S_SystemMessage("\\aG 신종스핵사용 에서 발견"));
pc2.sendPackets(new S_SystemMessage("\\aG 신종스핵으로 스핵사용!")); // 바로팅김
}
}
pc.sendPackets(new S_Disconnect());
}
}
LineageClient.java
private int _checkct = 1; 검색 아래추가
private int _outcount = 0; // 추가
_checkct = 0 검색
_outcount = 0; //추가
여기 바로아래 return; 있을거임 저부분에서부터 아래추가
return;
}else{
// 서버 상황을 대비해서 최소 카운트를 2로 준다.
//(keepalive 옵코드가 2번 안날라올경우 스핵으로 간주 잘라낸다.
_outcount++;
if(_outcount >= 2){
kick();
System.out.println("LinegeClient 스핵사용자 = " + activeCharInstance.getName()
+ "을 검출하였습니다.");
for (L1PcInstance pc2 : L1World.getInstance().getAllPlayers()) {
if(pc2.isGm()){
pc2.sendPackets(new S_SystemMessage("\\aG스핵사용자: [" + activeCharInstance.getName()
+ "]\\aG LinegeClient에서 검출"));
}
}
cancel();
}
}
/* if (activeCharInstance == null // 캐릭터 선택전
|| activeCharInstance != null && !activeCharInstance.isPrivateShop()) { // 개인 상점중
kick();
_log.warning("일정시간 응답을 얻을 수 없었기 때문에(" + hostname + ")과(와)의 접속을 강제 절단 했습니다.");
cancel();
return;
}*/
케릭터의 패킷 처리 //검색
캐릭터의행동처리까지 주석
콘피그폴더 안에 server이니파일
클라이언트로부터 패킷이 보내져 오지 않았던 경우의 자동 절단 //검색
AutomaticKick = 0 >>1로 변경
가속기 아래에 아래꺼추가
#스핵카운트 1=1분종료
alivecount = 1

뜨아 님의 최근 댓글
ㄳㄳㄳㄳ 2024 02.08 포인트얼마여야 다운가능함? 2023 12.27 감사합니다 2023 12.26 로컬 저도안되네요 ''; 2020 04.14 올려주신 타이탄락 부분은 chance <= Config.TitanRock_probability 콘피그 폴더에 외부화로 확률 빼논거같네요 락 블릿 엘원어택자바 아마 콘피그폴더 외부화로 빼논듯 매직은 엘원매직에 확률 그것도 콘피그로 빼놨을수도있어요 그리고 팩마다 다를수도있죠 ㅋ 님팩이뭔질알구 ㅎㅎ 2020 02.11