불량 채팅 검출
불량채팅 검출하여 채금걸어주는 소스입니다.
DB연동하기때문에 실시간 등록이 가능하도록 변경했습니다.
채금이 아닌 다른것을 주실수도 있습니다^^
우선 l1j.server.server.datatables 안에 BugChat.java 파일을 생성해줍니다.
-----------------------------------------------------------------------
package l1j.server.server.datatables;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.L1DatabaseFactory;
import l1j.server.server.utils.SQLUtil;
public class BugChat {
private static Logger _log = Logger.getLogger(BugChat.class.getName());
private static BugChat _instance;
private static ArrayList<String> _chating = new ArrayList<String>();
public static BugChat getInstance() {
if (_instance == null) {
_instance = new BugChat();
}
return _instance;
}
private BugChat() {
_chating = allChatList();
}
private ArrayList<String> allChatList() {
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
ArrayList<String> chating = new ArrayList<String>();
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("select * from bug_chat");
rs = pstm.executeQuery();
while (rs.next()) {
chating.add(rs.getString("chat"));
}
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
return chating;
}
public boolean isBugChat(String chating) {
for (String id : _chating) {
if (chating.equalsIgnoreCase(id)) {
return true;
}
}
return false;
}
}
-----------------------------------------------------------------------------------
그다음 C_Chat.java안에 추가를 해줍니다.
/** 불량채팅시 주고싶은거 골라서 주기 **/
int chatNg = 0; // 채금시간 0일경우 채금안함
boolean chatDie = false; // false일경우 죽이지 않음
/** 불량채팅시 주고싶은거 골라서 주기 **/
if(BugChat.getInstance().isBugChat(chatText)) {
if(!pc.isGm()){//운영작 아닐경우
if(chatNg != 0) { // 채금을 주고싶을때 0이 아닌경우
pc.setSkillEffect(L1SkillId.STATUS_CHAT_PROHIBITED, chatNg * 60 * 1000);
pc.sendPackets(new S_SkillIconGFX(36, chatNg * 60));
pc.sendPackets(new S_ServerMessage(286, String.valueOf(chatNg)));
} else if(chatDie != true) { //죽인다
pc.setCurrentHp(0);
pc.death(null);
}
}
}
--------------------------------------------------------------------------------
데이터베이스 생성을 해줍니다.
테이블명 bug_chat
필드 chat
타입 varchar
길이 20
십진법 0
제로허용안함
주된키 chat 필드
chat 필드안에 필터하실 욕설을 써주시면 됩니다.^^
벌칙은 응용하시면 더 많이 하실수도 있구요 외부화가 충분히 가능합니다

김닉넴 님의 최근 댓글
클라는 있나요? 2023 04.29 클라 있나요? 2023 03.23 감사합니다 2016 06.06 ㄳ합니다 2016 06.05 ㄳ합니다 2016 06.05