[04] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자 2편 [출처] [04] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자 2편|작성자 enoch_rvn
짜잔! 에녹입니다.
글쓰는 실력이 날이 갈수록 ㅈ같아지고있어요.
아마 어제 12만원(평균 거래가격15, 잠재가격상승치 최고급아이템) 입금대기 사기당하고
현금 5만원급 아이템 강화하다 폭발하고(병신에녹)
뭐.. 여튼 그런 말도안돼는 날이었습니다..
자 이제 강의를 시작할게요!
canCreateTempler() 메서드를 만들었으니.
이제 어디다 사용하느냐가 문제인데요!

바로 이부분! handler.login -> CharLoginHandler.java -> CreateChar 입니다!
int JobType = rh.readInt(); 부분 아래에다가,
if (JobType == 16 && c.canCreateTempler(2) == 0) {
c.getSession().write(MainPacketCreator.serverNotice(1, "고대족 '은월' 은 특별한 퀘스트를 진행하여야 생성할 수 있습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
} else if (JobType == 12 && c.canCreateTempler(4) == 0) {
c.getSession().write(MainPacketCreator.serverNotice(1, "고대족 '엔젤릭 버스터' 는 특별한 퀘스트를 진행하여야 생성할 수 있습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
} else if (JobType == 11 && c.canCreateTempler(3) == 0) {
c.getSession().write(MainPacketCreator.serverNotice(1, "고대족 '카이저' 는 특별한 퀘스트를 진행하여야 생성할 수 있습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
} else if (JobType == 3 && c.canCreateTempler(0) == 0) {
c.getSession().write(MainPacketCreator.serverNotice(1, "고대족 '아란' 은 특별한 퀘스트를 진행하여야 생성할 수 있습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
} else if (JobType == 4 && c.canCreateTempler(1) == 0) {
c.getSession().write(MainPacketCreator.serverNotice(1, "고대족 '에반' 은 특별한 퀘스트를 진행하여야 생성할 수 있습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
} else if (JobType == 15) {
c.getSession().write(MainPacketCreator.serverNotice(1, "현재 제로는 생성할 수 없습니다."));
c.send(LoginPacket.getLoginFailed(30));
return;
}
이런식으로~ 설정해주시면되요.
자 canCreateTempler(인자값) 보시면, 전에 만들어두었던 메서드를 이해하셨다면,
저것이 어떻게 돌아가는것이고, 무엇인지 어느정도는 이해하시겠지만, JobType 의 코드번호를 이해하지 못하고 계실겁니다.
rh.getInt() 부분 아래에 써주는 이유가 JobType 를 얻기 위함입니다.
캐릭터를 생성할때 클라이언트에서 주었던 패킷을 가지고있다가, 읽어내어 어떤 직업인지 코드로 분별해주는 역할을 담당했습니다.
// 0 : 레지스탕스, 1 : 모험가, 2 : 시그너스, 3 : 아란, 4 : 에반, 5 : 메르세데스, 6 : 데몬슬레이어, 7 : 팬텀, 8 : 듀블, 9 : 미하일
// 10 : 루미너스, 11 : 카이저, 12 : 엔젤릭버스터, 13 : 캐논슈터, 14 : 제논, 15 : 제로, 16 : 은월
[출처] 캐릭터 생성 제한하기 (@USFM - 메이플스토리 공식 카페) |작성자 코마
코드와 출처는 밝힙니다!
저 코드를 참고하시고, canCreatetempler 와 비교하시고
생성시켜줄지, 생성을 저지할지 선택해주시면 되는것이에요!
뭐 일단 제대로 작동하는지 봐야겠습니다.
c.send(LoginPacket.getLoginFailed(30));
return;
부분은 로그인에 실패(캐릭터생성에 실패) 했다는 패킷을 반환해주며
함수에서 빠져나옵니다.
그대로 함수에서 빠져나와도 좋지만, 그렇게되면 흔히 말하는 렉 상태가 되며, 아무 행동도 취할 수 없는 상태가 됩니당.

고대족을 설정한 은월을 들어가보면!

생성까지는 뭐 자연스럽게 흘러가욧!

여기서 키설정을하게되면

퀘스트 깨고오거나 뭐 여튼 그러래요.

퀘스틀 깨거나 이벤트 당첨됬다고 가정하고 templeWolf 부분을 1로바꿔보아요.

캐릭터 생성이 잘 되네욧!
자 이제 4강은 스크립트에서 데이터베이스 사용방법, 소스에서 데이터베이스 사용시 주의할점
등등을 알려드릴거에욧!!
출처 : http://blog.naver.com/enoch_rvn/220634411309

원나소년 님의 최근 댓글
초보 개발자도 가능합니까? 아직 개발의 ㄱ자도 모르긴하는데.. 2016 06.07 구축하기 쉬운가용? 2016 06.02 흑 ㅜㅜ 팩을 구하고싶은데 ㅠㅠ 구글링하면 나오려나요?... 2016 06.02 라피스 해보고싶네요 정말 어떻게못하나요... 2016 05.31 하핳... 그런게임들은 프리서버 못하는건가요? 2016 05.31