[05] - 데이터베이스 연동 개발 심화 마지막 [출처] [05] - 데이터베이스 연동 개발 심화 마지막|작성자 enoch_rvn
안녕하세요~ 에녹입니다!
오늘은 좀 많이 늦었네요.. 경찰서 다녀오느라..
경찰서에서 '아이템' 은 재산으로 취급되지 않는다고 거절하는경우가있는데,
http://cyberbureau.police.go.kr/board/boardList.do?board_id=faq7&mid=010507

페이지에 게임 아이템을 현금 거래하다가 사기를 당했습니다. 신고나 피해보상이 가능할까요? 를 클릭하시면 정확하게 명시되어있습니다.
게임 아이템 거래 사기를 당하셨으면 한번 훑어보시는것도 나쁘지않아요!
http://blog.naver.com/manager_ods/220183157123
[메이플스토리] 기획팀의 55번째 이야기 - 게임머니, 아이템 현금거래 사기 신고의 모든...
기획팀의 55번째 이야기 - 게임머니, 아이템 현금거래 사기 신고의 모든 것 2014.11.16 작성 http://blog.n...

이제 데이터베이스 연동! 다시 강좌 들어가겠습니다!

NPCScript 어쩌구저쩌구에 메서드를 하나 추가해줍시다.
public void templerActivate(int Type) {
String temple = "";
try {
switch (Type) {
case 0:
temple = "templerWarrior";
break;
case 1:
temple = "templerDragon";
break;
case 2:
temple = "templerWolf";
break;
case 3:
temple = "templerKaizer";
break;
case 4:
temple = "templerAngel";
break;
default:
System.out.println("[디버깅] 인자값이 잘못됨 templerActivate()");
break;
}
Connection con = (Connection) MYSQL.getConnection();
PreparedStatement ps = (PreparedStatement) con.prepareStatement("UPDATE accounts SET " + temple + " = 1 WHERE id = ?");
ps.setInt(1, getPlayer().getAccountID());
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
System.err.println("Error SET Templer" + ex);
}
}
다들 배웠으니 뭐 아실거라고 가정하고
쿼리문을 살펴봅시다!
UPDATE accounts SET temple변수 = 1 WHERE id = ?
업데이트문은, 기존에 있는 테이블 데이터를 수정하는겁니다.
accounts 는 테이블 이름.
set 은 어떤 컬럼을 변경할건지
temple변수 = temple변수에 담겨져있는 컬럼 이름.
= 1 이건 뭐 아시겠지만 1이란 값으로 변경한다는뜻
WHERE = 조건문 (if와 비슷하다고보시면됩니다)
id = ?
설정된 id 값을 비교해서 그 값에만 적용.
빠르게 예제 하나를 더 보고 이해합시다.
UPDATE characters SET meso = 150000 WHERE meso = 0;
캐릭터 테이블에 메소라는 컬럼을 15만으로 수정하되, 메소가 없는 사람들만 수정하는겁니다.

그리고 아이템 스크립트를 봐줍니다.
importPackage(Packages.client);
importPackage(java.sql);
importPackage(java.lang);
importPackage(Packages.database);
importPackage(Packages.constants);
importPackage(java.util);
var status = -1;
function start() {
status = -1;
action (1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
return;
}
if (mode == 0) {
status --;
}
if (mode == 1) {
status++;
}
if (status == 0) {
var text = "고대족 '카이저' 의 봉인을 해방하시겠습니까?\r\n\r\n카이저는 반인반용, 용과 인간사이에서 태어난 비정상적인 존재였지만, ";
text += "신의 뜻에 따라 세상에 존재할 수 있었습니다.\r\n카이저는 용의 권능과 힘, 인간의 지혜와 학습 능력으로 뛰어난 전략적 전투와 파괴력을 갖고 있습니다.";
cm.sendYesNo(text);
} else if (status == 1) {
cm.templerActivate(3);
cm.sendOk("고대족 '카이저' 의 해방이 완료되었습니다.\r\n새 캐릭터 생성시, 카이저의 봉인이 해제됩니다.");
cm.dispose();
return;
}
}
간단하죠? 어떻게 진행되는건지는 스크린샷만 봐도 알수있을거에요.
중요한건 cm.templeActivate(인자값) 인데. 개발자가 지정한 인자값을 기억해두고 적용시켜야겠죠? 인자값이 3이니 3은 카이저란 뜻일겁니다.

스크립트가 작동될 소비아이템입니다.

작동했을경우 YES NO 가 나와욧!

물론 만들어지는 상태는 아닙니다.

예를 누르게되면 완료되었다고 출력됩니다.

정상적으로 생성되는 모습.

아이템을 사용시 templeWarrior 이란 부분이 1로 바뀌며, 캐릭터를 생성할 수 있게 처리되었습니다!
잘 작동하는군요. 호호
궁금한점, 질문 댓글로 남겨주시길바랍니당!
다음 강좌는 데이터베이스 명령문으로 어떤 값들을 출력할수있는지 알아보도록하겠습니다.
즉 데이터베이스의 기술들을 알아보는겁니당 헤헤.
그럼 사요나라!
[출처] [05] - 데이터베이스 연동 개발 심화 마지막|작성자 enoch_rvn



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