사이트 로그인
2016.06.29 11:10
서버 정보 및 서버만의 안내를 적는곳으로 만들기엔 괜찮을거 같아서 올립니다.
src/server/server/clientpackets/C_BoardWrite.java
if (tg != null) { //검색
L1PcInstance pc = client.getActiveChar();
L1BoardInstance board = (L1BoardInstance) tg;
if (board.getNpcId() == 86000) { //서버게시판 번호
if (pc.isGm()) { //운영자만 글쓰기가능하게
pc.getInventory().consumeItem(L1ItemId.ADENA, 300);
BoardTable.getInstance().writeTopic2(pc, date, title, content);
} else {
pc.sendPackets(new S_SystemMessage("게시판은 운영자만 사용가능합니다."));
return;
}
} else { //그외의 게시판은 유저게시판으로..
pc.getInventory().consumeItem(L1ItemId.ADENA, 300);
BoardTable.getInstance().writeTopic(pc, date, title, content);
}
src/server/server/clientpackets/C_BoardDelelte.java
if (board != null) {
if (pc.isGm()) { //모든게시판은 운영자만 삭제가능하도록..
if (board.getNpcId() == 86000) {
BoardTable.getInstance().deleteTopic2(topicId);
} else {
BoardTable.getInstance().deleteTopic(topicId);
}
src/server/server/model/datatable/BoardTable.java
public void writeTopic2(L1PcInstance pc, String date, String title,
String content) { //메소드 부분이니 적당한위치에 껴넣으세요.
int count = 0;
Connection con = null;
PreparedStatement pstm1 = null;
ResultSet rs = null;
PreparedStatement pstm2 = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm1 = con
.prepareStatement("SELECT * FROM board_server ORDER BY id DESC");
rs = pstm1.executeQuery();
if (rs.next()) {
count = rs.getInt("id");
}
pstm2 = con
.prepareStatement("INSERT INTO board_server SET id=?, name=?, date=?, title=?, content=?");
pstm2.setInt(1, (count + 1));
pstm2.setString(2, pc.getName());
pstm2.setString(3, date);
pstm2.setString(4, title);
pstm2.setString(5, content);
pstm2.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm1);
SQLUtil.close(pstm2);
SQLUtil.close(con);
}
}
public void deleteTopic2(int number) {
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("DELETE FROM board_server WHERE id=?");
pstm.setInt(1, number);
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
src/server/server/serverpackets/S_Board.java
public S_Board(L1NpcInstance board) {//검색
if (board.getNpcId() == 86000) {//이렇게 변경
buildPacket2(board, 0);
} else {
buildPacket(board, 0);
}
}
public S_Board(L1NpcInstance board, int number) {//검색
if (board.getNpcId() == 86000) {//이렇게 변경
buildPacket2(board, number);
} else {
buildPacket(board, number);
}
}
private void buildPacket2(L1NpcInstance board, int number) { //메소드부분 적당한곳에 껴넣으세요.
int count = 0;
String[][] db = null;
int[] id = null;
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
db = new String[8][3];
id = new int[8];
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("SELECT * FROM board_server order by id desc");
rs = pstm.executeQuery();
while (rs.next() && count < 8) {
if (rs.getInt("id") <= number || number == 0) {
id[count] = rs.getInt(1);
db[count][0] = rs.getString(2);
db[count][1] = rs.getString(3);
db[count][2] = rs.getString(4);
count++;
}
}
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
writeC(Opcodes.S_OPCODE_BOARD);
writeD(board.getId());
writeC(0xFF); // ?
writeC(0xFF); // ?
writeC(0xFF); // ?
writeC(0x7F); // ?
writeH(count);
writeH(300);
for (int i = 0; i < count; ++i) {
writeD(id[i]);
writeS(db[i][0]);
writeS(db[i][1]);
writeS(db[i][2]);
}
}
src/server/server/serverpackets/S_BoardRead.java
public S_BoardRead(L1NpcInstance board, int number) {//검색
if (board.getNpcId() == 86000) {//이렇게 변경
buildPacket2(board, number);
} else {
buildPacket(board, number);
}
}
private void buildPacket2(L1NpcInstance board, int number) { //메소드 적당한곳에 껴넣으세요
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT * FROM board_server WHERE id=?");
pstm.setInt(1, number);
rs = pstm.executeQuery();
while (rs.next()) {
writeC(Opcodes.S_OPCODE_BOARDREAD);
writeD(number);
writeS(rs.getString(2));
writeS(rs.getString(4));
writeS(rs.getString(3));
writeS(rs.getString(5));
}
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
소스 부분은 다됬구요...
나비켓에 테이블을 하나 만드셔야 됩니다
테이블명은 board_server 입니다.
데이블 만들고 설계하기 모르시는 분들은 쉽게하시려면...
나비켓 board테이블을 sql내버리기 하셔서
이름바꾸기 board_server 바꾸시고 배치시키시면 됩니다.
테이블 안에 필터들은 board와 동일합니다.
[출처] 서버 게시판 // 유저 게시판 나눠봅시다~! (비공개 카페)